Original Xbox Bluetooth Dongle - Play Wirelessly With Modern Controllers!
by DynaMight in Circuits > Electronics
1717 Views, 5 Favorites, 0 Comments
Original Xbox Bluetooth Dongle - Play Wirelessly With Modern Controllers!
This project was designed to help make a Bluetooth or USB adaptor using an original Xbox DVD Dongle for a stealth look. It allows various modern controllers to work with the original Xbox... and obviously via Bluetooth too! Once completed you will have a very stealth Bluetooth adaptor. It doesnt require a modded Xbox, as far as the Xbox knows its communicating with an original wired controller!
The software used in this project is called OGX-Mini: https://github.com/wiredopposite/OGX-Mini - All the hard work was completed by this amazing software. I just connected a few dots to create a PCB.
Initially I had grand plans of making a single PCB that worked with Bluetooth and USB devices, however it didnt quite work out for a few reasons such as limited space for the USB socket when fully populated, technically it did all fit but the USB socket was at the bottom of the DVD dongle but this gave extremely limited space to plug in a USB cable. So I created two different PCB's, one that supports Bluetooth, which is very stealth and another which supports USB controllers but will plug in at the top of the dongle, not great but realistically the only place big enough are the top and bottom and as mentioned, the bottom doesnt work well.
I would imagine most people would be most interested in the Bluetooth option but decided to make it an option anyway.
Supplies
Xbox DVD Dongle - eBay is probably your best bet. You can usually get just the dongle pretty cheap, you dont need the actual remote.
You will need to order the PCB's, you can use whatever company you wish. JLCPCB and PCBWay are popular. Just make sure you order the PCB at 1.0mm thickness else it will not fit properly. All other settings can be left stock. You can download the gerber files here: https://github.com/DynaMight1124/OGX-Mini/releases
BT Dongle
RP2040 Core A: https://www.aliexpress.com/item/1005007863935254.html
ESP32 WROOM-32 Module: https://www.aliexpress.com/item/1005008551031462.html
SMD Tach Buttons (3X4X2mm 2Pin): https://www.aliexpress.com/item/1005005279088080.html or https://www.aliexpress.com/item/4001317902663.html or https://www.aliexpress.com/item/1005007004194449.html
0805 2.2k Resistors: https://www.aliexpress.com/item/1005005600798857.html
0805 10k Resistors: https://www.aliexpress.com/item/1005005600798857.html
0805 10uF Capacitors: https://www.aliexpress.com/item/32964553793.html
0805 100nF Capacitors: https://www.aliexpress.com/item/32964553793.html
MicroUSB Port (Micro-23): https://www.aliexpress.com/item/1005007360060905.html
USB UART Programmer for ESP32: https://www.aliexpress.com/item/1005006445462581.html
Optional for future updates:
Xbox to USB adaptor cable: https://www.aliexpress.com/item/1005006849387794.html
USB Dongle
RP2040 Core A: https://www.aliexpress.com/item/1005007863935254.html
USB A Ports (USB-67): https://www.aliexpress.com/item/1005005880282305.html
MicroUSB Port (Micro-23): https://www.aliexpress.com/item/1005007360060905.html
Optional for future updates:
Xbox to USB adaptor cable: https://www.aliexpress.com/item/1005006849387794.html
Opening the DVD Dongle
We need to open the DVD dongle, this could be the hardest part of the project but ultimately depends on how nice you want the finished product to be as opening it with minimal damage isnt an easy task! At least I dont know a good way so please comment if you do know :) its essentially glued and clipped together so no easy way to either unscrew or easily unclip however with enough care and prying in the right places you can open it.
This part hopefully goes without saying but be careful, its very easy to slip and cut yourself (ask me how I know!), try to make small controlled movements.
I would suggest starting at the bottom since any damage to this section would be hidden when its plugged in. I have been using a small blade to get between the two shells and running it at about a 45 degree angle until I can run the blade through it fairly easily, I have then used a metal pry tool to lever it slightly more, theres 2 clips at the bottom, ideally you want these detached before you attempt to continue, plus it allows a larger gap.
Once you have a bigger gap, its time to bring out the big guns and start cracking the case open, I found a plastic spudger great for this as the plastic is less likely to damage the plastic over metal. I run it around the bottom corner and you should hopefully start to split the two halves, once you get half way up one side, go back to the bottom and do the other side.
Once you get both sides split about halfway you can probably use your fingers to split the rest.
Hopefully you now have both cases split, some light damage at the bottom but very little on the sides and top!
Desoldering the Dongle Mainboard
We need to remove the original mainboard from the connector. Theres a few ways of doing this depending on what equipment you have to hand.
The easiest way would probably be a desoldering gun/station. I wouldnt say these are very common for many hobbyists but if you do have one then this is probably the best way to remove the 7 pins.
Another two options are:
Flooding Filling - Flood fill all pins with a large amount of solder, heat up all the solder by quickly swiping left to right and back again while pulling up the board. This can be a quick method, even better if you have low melt solder. However while we do not care for the mainboard, we do need to be careful of the connector, its mostly metal but has plenty of plastic surrounding it so too much heat will melt the plastic and could render the whole connector unusable, making this project unusable! If you do go for this method, use a large tip and high temperature as unlike in the bedroom, you want to quickly get in, finish and get out!. If the port gets too hot, stop and wait for everything to cool down and either try again or move onto the next method. I found it useful to get a small screw driver or so something similar underneath the board so you can lever it, then switch sides. You will likely still need some solder wick afterwards to clean the pins.
Solder Wick - This method is likely the most time consuming but probably safest. Use solder wick to remove the solder, keep going until all solder is removed. You still need to be careful of getting the port too hot, so take breaks and let the port cool down. Cutting the wick in smaller strips help with heat transfer as does the use of flux, sometimes adding some more solder can work too.
Having done both, I'd probably recommend solder wick. Takes some more time, but leaves the pins clean and also straighter as I found flood filling then levering did bend a few pins slightly.
Populate the PCB
So by now you have the PCB's and all the components required to build. I dont think it really matters which side you start with, just be mindful of components and try to solder in an order than gives you access to tighter spaces.
As for the Pico and ESP32, you want to make sure these are lined up fairly accurately and flush to the board, especially the Pico as there isnt a lot of space on the underside and also the placement of the Pico needs to be good so the boot button lines up. I would recommend checking for bridges/shorts with a multimeter, especially on the ESP32 since the pins are quite close together, I usually do a single row, check for shorts, then do another row and check again, incase you do need to desolder. The Pico isnt too bad but still need to be a little careful too much solder can flow underneath and bridge.
There is a MicroUSB port, I kept this in place as it makes it easier to flash and test prior to soldering the PCB to the connector because if theres an issue, it would mean desoldering the PCB from the connector as you did the previous step. If you want to go full YOLO you dont need to fit the MicroUSB port and can flash directly from the optional USB>Xbox cable.
Flash Firmwares and Test
Firmware download: https://github.com/DynaMight1124/OGX-Mini/releases
It's now time to flash the firmwares to the Pico and ESP32 and then test that everything works. If you fitted a MicroUSB port then its much easier to use it at this stage to flash the firmwares, connect it to a PC and test the controller etc. The rest of this section will assume you are using the MicroUSB port.
Flashing the Pico is easy, hold the Boot button while connecting the USB port to a PC/Laptop. It'll load up as a flash drive, drag and drop the correct .uf2 file, when its copied it'll disconnect. That means its flashed, unplug the USB.
Flashing the ESP32 isnt quite as simple. The OGX-Mini firmware has a function to place itself into UART bridge mode, which in theory then allows you to flash the ESP32 via the Pico itself, which is an awesome feature however I could not get this working, I spent quite a bit of time with a breadboard setup and a working PCB but could not get it to flash, hence I had to include the ESP-BOOT button and ESP-PROG header to allow flashing the ESP32 via an external programmer.
To flash the ESP32, you will need to use the external programmer, set it to 3v via the jumper, connect GND to GND, TXD to TX and RXD to RX (dont worry technically they are crossed as they should be, just labelled to match!) between the programmer and the Dongle. Connect the programmer to your PC (ensuring all drivers are installed and its reporting a COM port), now hold the ESP-BOOT button then connect the MicroUSB to a power source/PC (only needs to provide power) then let go of the ESP-BOOT button, the ESP32 is now ready to be flashed. You can use the official method of Flash_Download_Tool, or my personal favourite: ESP Flasher (HERE) which can be used to flash the combined .bin file (not the individual files)
Once both the ESP32 and Pico are flashed, it's probably good to test everything before you continue to solder to the rest of the dongle!
I havent personally tested loads of controllers so check the OGX-Mini page for supported controllers. I found the Xbox Series controllers worked well as did a Google Stadia controller, I will be using a Xbox Series controller going forward. Theres no pairing or sync buttons on the dongle, just plug it in to your PC, it will recognise it, but wont be able to find a driver as its setup as an Xbox controller, however you can still pair a Bluetooth controller. Press the Sync button on the controller and it should sync.
At this stage, you can continue to the next step but the below allows you to test on your PC first.
You can also now test this on your computer by holding 'Start + Dpad Up' for 3 seconds, this will reboot the Pico in XInput. Re-sync the controller. I found this page good at testing the controller: https://hardwaretester.com/gamepad
Just remember to change back to Xbox mode by holding 'Start + Dpad Right' and waiting for the reboot of the Pico as it will remember the last selected mode.
Its now safe to continue to the next step!
Prep the Dongle and Solder the PCB
I tried to design it so the Dongle doesnt need to be opened again, so the Pico Boot button is on the bottom which means it needs some holes to allow access, just note that you NEED to actually do this as the board will be flush against it so will actually press the boot button permanently I have made a 3D Printable jig to help. Just place it over the back and drill, it should get you close enough, just use a small 1.5-2mm drill bit to start, the hole can be made bigger after the initial hole is drilled. I would recommend 2.5mm for the top hole since the actual button does need to sit in the hole, but the bottom can be left at 1.5-2mm.
You want to make sure both holes are in the correct place, so line up the PCB and double check, when you're happy both holes are in the correct position and the correct size then you can solder the PCB onto the connector.
Ensure the PCB is flush to the connector and as level as you can get it, I'd recommend tacking in one pin first and check everything looks good, you can always heat the pin and adjust if needed, once happy, solder the remaining pins.
As for closing the case, it will require some glue as it wont hold together using just the clips and pressure, I wouldnt recommend going too heavy with the glue incase you do need to update it. Some light dabs of superglue in the 4 corners shouldnt be more than enough.
Downloads
But Wait, Theres More!
As I mentioned above, I had originally intended to have a single PCB that supported both USB and Bluetooth but that didnt quite work out.
So since I had the PCB and pretty much everything laid out, I also created a separate PCB for USB only. The USB socket is at the top, not the most elegant design but as I spent a little bit of time designing it so might as well share it for those people that dont want Bluetooth. Its also a very cheap device to build!
It will require some additional cutting at the top to give space for the USB port. Just check the pictures for a rough guide. Also you only need the top hole from the previous section as theres no ESP32.
You can flash the stock 'PI_PICO' firmware as it uses the exact same pinout. https://github.com/wiredopposite/OGX-Mini/releases
Future Firmware Updates
This does use different pins to any currently supported OGX-Mini device so I have compiled the firmware myself, I do intend to submit a pull request to see if it can be 'officially' supported in future updates, however the next Alpha build does have some big changes intended to make adding different devices easier so I need to wait for that to be released, build and test before I can submit a pull request.
I cant promise there will be future updates, but I will try since I'm a sucker for updates!
P.S. The USB version uses the stock Pi Pico layout so the officially supported firmware is used.
However as for flashing the firmware in the future, you can use Xbox to USB adaptor cable to plug it into your PC while the boot button is held (the top hole on the back of the dongle) and drag the updates .uf2 file.
As it currently stands flashing the ESP32 isnt so easy as the modesel button doesnt seem to be working, so this might require the case to be re-opened and flashed via the external USB UART programmer. Its very possible that the modesel is a software issue within OGX-Mini and a Pico firmware update might resolve that, in which case you can flash both Pico and ESP32 via the same Xbox to USB cable, which was my original intention.
Obviously if its working and theres no issues with the controllers you use, then you dont ever need to upgrade the firmware from whats included in this guide. The current firmware is pretty stable!