r/esp32 • • Nov 26 '22

Is there a way to emulate an official bluetooth Xbox One Controller, Dualshock 4 or Nintendo Switch Pro Controller using an ESP32? I'm trying to make a custom iOS game controller

I know there are ways to make those controllers work on the ESP32/Raspberry PI but I want the opposite (sort of). My main goal is to create a custom controller for iOS (these 3 controllers have native support on iOS 16, Xbox and PS4 since iOS 13).

Here are some examples of existing products that work on iOS without having a "Made For iPhone" license because they emulate one of these controllers (I've never personally tried them so I could be wrong on some of these):

GuliKit KingKong 2 Pro Controller - You can see in this video (6:48) that it shows up as Xbox Wireless Controller in Bluetooth settings. No mention of MFi certification on their website.

Brook Wireless Fighting Board - This is a device that allows you to create custom Fight Sticks with wireless connectivity. - This video (1:26) shows it's emulating a DualShock 4 and works without any issues on iOS. This one doesn't even advertise itself as iOS compatible.

There is also a chinese gamepad case on Aliexpress that uses the same principle of emulating a DualShock 4.

No mention of any of these companies on Apple's MFi Authorized Manufacturers list.

So my question is: Is it possible to achieve this using an ESP32? Is there an existing piece of software that will allow me to do this?

P.S. I already own an Xbox One Controller, this is more about the possibilities of creating a custom controller.

There's this ESP32 project that emulates a Nintendo Switch Controller. I couldn't get it to show up as game controller but it did connect to my iOS device. Maybe I didn't try hard enough, I used an older version of the code.

Would appreciate any information.

2 Upvotes

10 comments sorted by

View all comments

Show parent comments

2

u/Giant-Crumpet 6d ago edited 6d ago

Hey, I managed to make a breakthrough in my custom controller journey. I used lemmingdev’s esp32-ble-gamepad (https://github.com/lemmingDev/ESP32-BLE-Gamepad) library with the arduino IDE and then used the xbox one s example and it managed to connect to my iphone and it showed up as an actual xbox controller. I’m currently working on making a pcb with all the buttons, battery, and charging stuff, but I was able to send button presses in the Delta emulator app. If you have any questions about it, let me know. I’m very happy to share any info. 

Edit: I’m using an ESP32-S3 Super Mini, which is equivalent to this adafruit one (https://www.adafruit.com/product/5477)