[{"element_type":"text","content":"\n        \u003cp\u003e\u003cstrong\u003eNOTE: THIS IS AN EXPERIMENT THAT DIDN'T WORK OUT\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eMy goal here was a no-solder-required gamepad option for future projects. The trick is that most gamepads currently use Bluetooth classic, while the ESP32-S3 radio needs Bluetooth 5.0 BLE. Some Switch Pro compatible controllers use BLE 5.0 for something (I can see the advertisements). But, as far as I can tell, those controllers still use Bluetooth classic for their gamepad functionality.\u0026nbsp;I'm leaving this draft here as a reference. It's possible the BLE scanning code example might be useful.\u003c/p\u003e\n      ","metadata":{}},{"element_type":"user_image","content":"https://cdn-learn.adafruit.com/user_assets/assets/000/001/014/original/qtpyS3Ultimate.jpeg?1721693515","metadata":{"caption":""}},{"element_type":"markdown","content":"\u003ch2\u003eBluetooth Version Compatibility Problems\u003c/h2\u003e\n\n\u003cp\u003e\u003ca href=\"https://docs.espressif.com/projects/esp-idf/en/stable/esp32s3/api-guides/bluetooth.html\"\u003eEspressif's docs\u003c/a\u003e\nfor the ESP32-S3 say that it supports bluetooth 5.0, but not Bluetooth classic.\u003c/p\u003e\n\n\u003cp\u003eWhen I tried my old 8BitDo Zero 2 and 8BitDo SN 30 Pro gamepads, neither of them\nshowed up with \u003ccode class=\"inline\"\u003eadafruit_ble.BLERadio.start_scan()\u003c/code\u003e. But, when I tried an 8BitDo Ultimate Controller (Bluetooth 5.0 charging stand version), it did show up.\u003c/p\u003e\n\n\u003cp\u003eBased on playing with a few Bluetooth scanner apps and reading \u003cem\u003ea lot\u003c/em\u003e of gamepad product pages, my best guess is that, most Bluetooth gamepads currently on the market (July 2024) probably use Bluetooth Classic. The main exception is some newer Nintendo Switch compatible gamepads that mention Bluetooth 5.0 in their specifications.\u003c/p\u003e\n\n\u003cp\u003eIf you want to use a gamepad with an ESP32-S3, be sure to check the manufacturer specs carefully. Gamepads that don't specifically mention \"Bluetooth 5.0\" are unlikely to work with the S3's radio. Also, keep in mind that if you get a Bluetooth 5.0 gamepad designed to act like a Switch Pro controller, there's a good chance it may be incompatible with games designed for use with Xinput controllers.\u003c/p\u003e\n","metadata":{"markdown":"## Bluetooth Version Compatibility Problems\n\n[Espressif's docs](https://docs.espressif.com/projects/esp-idf/en/stable/esp32s3/api-guides/bluetooth.html)\nfor the ESP32-S3 say that it supports bluetooth 5.0, but not Bluetooth classic.\n\nWhen I tried my old 8BitDo Zero 2 and 8BitDo SN 30 Pro gamepads, neither of them\nshowed up with `adafruit_ble.BLERadio.start_scan()`. But, when I tried an 8BitDo Ultimate Controller (Bluetooth 5.0 charging stand version), it did show up.\n\nBased on playing with a few Bluetooth scanner apps and reading *a lot* of gamepad product pages, my best guess is that, most Bluetooth gamepads currently on the market (July 2024) probably use Bluetooth Classic. The main exception is some newer Nintendo Switch compatible gamepads that mention Bluetooth 5.0 in their specifications.\n\nIf you want to use a gamepad with an ESP32-S3, be sure to check the manufacturer specs carefully. Gamepads that don't specifically mention \"Bluetooth 5.0\" are unlikely to work with the S3's radio. Also, keep in mind that if you get a Bluetooth 5.0 gamepad designed to act like a Switch Pro controller, there's a good chance it may be incompatible with games designed for use with Xinput controllers."}},{"element_type":"text","content":"\n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n        \u003ch2\u003eHardware\u003c/h2\u003e\n      \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","metadata":{}},{"element_type":"parts","content":"\n  \u003cdiv class=\"parts-details\"\u003e\n    \u003cdiv\u003e\n      \u003cspan class=\"parts-quantity\"\u003e1\u003c/span\u003e\u003cspan\u003e x \u003c/span\u003e\n        \u003ca href=\"https://www.8bitdo.com/ultimate-bluetooth-controller/\" class=\"parts-name\" target=\"_blank\"\u003e8BitDo Ultimate Controller with Charging Dock\u003c/a\u003e\n      \u003cdiv class=\"parts-description\"\u003eGamepad with Hall Effect joysticks and Bluetooth 5.0\u003c/div\u003e\n    \u003c/div\u003e\n  \u003c/div\u003e\n  \u003cdiv class=\"parts-action\"\u003e\n  \u003cdiv\u003e\n      \u003ca href=\"https://www.8bitdo.com/ultimate-bluetooth-controller/\" class=\"parts-url btn-secondary\" target=\"_blank\"\u003eBuy Now\u003c/a\u003e\n\n  \u003c/div\u003e\n\u003c/div\u003e\n\n  \u003cdiv class=\"clearfix\"\u003e\u003c/div\u003e\n","metadata":{"name":"8BitDo Ultimate Controller with Charging Dock","url":"https://www.8bitdo.com/ultimate-bluetooth-controller/","description":"Gamepad with Hall Effect joysticks and Bluetooth 5.0","quantity":"1"}},{"element_type":"product","content":"https://www.adafruit.com/product/5426","metadata":{}},{"element_type":"product","content":"https://www.adafruit.com/product/5880","metadata":{}},{"element_type":"product","content":"https://www.adafruit.com/product/5537","metadata":{}},{"element_type":"product","content":"https://www.adafruit.com/product/4210","metadata":{}},{"element_type":"parts","content":"\n  \u003cdiv class=\"parts-details\"\u003e\n    \u003cdiv\u003e\n      \u003cspan class=\"parts-quantity\"\u003e1\u003c/span\u003e\u003cspan\u003e x \u003c/span\u003e\n        \u003cspan class=\"parts-name\"\u003eTamiya Universal Plate Set #70157\u003c/span\u003e\n      \u003cdiv class=\"parts-description\"\u003e3mm thick, 160x60mm ABS plates with 3mm holes on 5mm grid\u003c/div\u003e\n    \u003c/div\u003e\n  \u003c/div\u003e\n  \u003cdiv class=\"parts-action\"\u003e\n  \u003cdiv\u003e\n\n  \u003c/div\u003e\n\u003c/div\u003e\n\n  \u003cdiv class=\"clearfix\"\u003e\u003c/div\u003e\n","metadata":{"name":"Tamiya Universal Plate Set #70157","url":null,"description":"3mm thick, 160x60mm ABS plates with 3mm holes on 5mm grid","quantity":"1"}},{"element_type":"parts","content":"\n  \u003cdiv class=\"parts-details\"\u003e\n    \u003cdiv\u003e\n      \u003cspan class=\"parts-quantity\"\u003e1\u003c/span\u003e\u003cspan\u003e x \u003c/span\u003e\n        \u003cspan class=\"parts-name\"\u003eM2.5 Nylon Standoff Set\u003c/span\u003e\n      \u003cdiv class=\"parts-description\"\u003eMisc. M2.5 machine screws, standoffs, and nuts\u003c/div\u003e\n    \u003c/div\u003e\n  \u003c/div\u003e\n  \u003cdiv class=\"parts-action\"\u003e\n  \u003cdiv\u003e\n\n  \u003c/div\u003e\n\u003c/div\u003e\n\n  \u003cdiv class=\"clearfix\"\u003e\u003c/div\u003e\n","metadata":{"name":"M2.5 Nylon Standoff Set","url":null,"description":"Misc. M2.5 machine screws, standoffs, and nuts","quantity":"1"}},{"element_type":"parts","content":"\n  \u003cdiv class=\"parts-details\"\u003e\n    \u003cdiv\u003e\n      \u003cspan class=\"parts-quantity\"\u003e1\u003c/span\u003e\u003cspan\u003e x \u003c/span\u003e\n        \u003cspan class=\"parts-name\"\u003eM3 Nylon Standoff Set\u003c/span\u003e\n      \u003cdiv class=\"parts-description\"\u003eMisc. M3 machine screws, nuts, and washers\u003c/div\u003e\n    \u003c/div\u003e\n  \u003c/div\u003e\n  \u003cdiv class=\"parts-action\"\u003e\n  \u003cdiv\u003e\n\n  \u003c/div\u003e\n\u003c/div\u003e\n\n  \u003cdiv class=\"clearfix\"\u003e\u003c/div\u003e\n","metadata":{"name":"M3 Nylon Standoff Set","url":null,"description":"Misc. M3 machine screws, nuts, and washers","quantity":"1"}},{"element_type":"text","content":"\n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n        \u003ch2\u003eCircuitPython Code\u003c/h2\u003e\n      \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","metadata":{}},{"element_type":"embed","content":"https://github.com/samblenny/ble-gamepad/blob/main/code.py"}]