If you're using a Raspberry Pi Zero W, Raspberry Pi 3, or newer, skip this step.
If you're using an older Pi that doesn't have Bluetooth, you'll need to add this, or a similar, USB Bluetooth adapter.
Power down your Pi. Then, connect your USB Bluetooth adapter to any available USB port. If you followed my NES PiCart guide, there's a free USB port on the rear of the USB hub (lucky you!)
You'll need to use a wired device -- like a USB controller or keyboard -- to navigate the RetroPie UI and update the Raspberry Pi's configuration to accept your new bluetooth controller.
Connect a wired gamepad or keyboard. Then, connect your Pi to your display and boot it up.
It's important that your controller firmware is up to date.
If using an 8Bitdo controller, select "Firmware" and then click "Download" next to your specific controller.
The process is super simple; follow the instructions on that page to update your controller's firmware.
Bluetooth controllers (and 8Bitdo support) work best when using RetroPie v4.0 or above -- if you installed RetroPie between August 2016 and now, you're already running v4.0+. If you aren't, I recommend updating to the latest version of RetroPie or you may encounter issues. If you don't want to update, you can still use bluetooth controllers, but the process is much more involved.
Inside the RetroPie interface, navigate to the right and select the RetroPie icon/system. Then, select RetroPie Setup.
Once inside the RetroPie Setup menu, navigate to Configuration/Tools and select bluetooth - Configure Bluetooth Devices.
Next, turn the 8Bitdo hack option off by selecting the 8Bitdo mapping hack (ON - old firmware) option so that it now says 8Bitdo mapping hack (OFF - new firmware).
Power on your Bluetooth controller and make sure it is searching for a connection -- this is normally done by holding a combination of buttons for a few seconds. The exact button sequence varies based on which Bluetooth gamepad you have, but the method will be listed in the manual that came with your controller. For my controller (the SNES30), this is done by holding down the Start button for 3 seconds until the blue light starts flashing.
Once your wireless controller is in searching mode, use your wired controller to select Register and Connect to Bluetooth Device. You'll see a "Searching..." box and then a list of Bluetooth devices by MAC address. If you don't see the name of your device here, select Cancel and then search again. It seems that the Bluetooth device name doesn't always appear after searching for the first time.
After selecting your device, choose the DisplayYesNo security option. If the SNES30 is paired properly, the blue light will now be solid.
Finally, you need to tell Emulation Station to search for and recognize your new Bluetooth gamepad on system boot. From the same Bluetooth Setup menu, select Set up udev rule for Joypad (required for Joypads from 8Bitdo etc). Select your controller from this list.
Select Cancel to exit Bluetooth Setup and RetroPie Configuration. Finally, reboot your Pi.
While it's rebooting, go ahead and unplug your wired controller. After your Pi boots to the Configure Device menu, hold down any button on your Bluetooth controller and you will be prompted to map it. You're good to go!
Now you can sit back on your couch and play retro games the modern way.
Post below and I'll do my best to help you out! The RetroPie Wiki also has some great resources for troubleshooting 8Bitdo and other Bluetooth controllers.
The Raspberry Pi works with many controllers—Xbox controllers are no exception.