Back in November of 2019, Bitluni showed us how to build an SNES clone designed around an ESP32 module, for use as a FeatherWing for Adafruit’s HUZZAH32 microcontroller. For that project, Bitluni used the original SNES controllers with the bulky end connectors, which took up much of the space inside the 3D-printed case, leaving little room for upgrades. He has since revised the design that replaces those connectors with USB ports, leveraging a host controller he used for another project.
Bitluni designed his USB Host Controller around the cheap CH559 MCU, which packs an enhanced E8051 core with and a pair of dual built-in USB hosts that enables users to connect keyboards, mice, and other peripherals to any number of projects. Using the CH559 MCU required a new PCB design to host the chip and to include the USB, along with a micro SD card slot, and the mono sound and color (PAL) video jacks required to connect to a TV.
As with Bitluni’s previous ESP32 Mini Console, the USB Host Microcontroller board is outfitted with the same GPIO layout for use as a Feather and connects to the same ESP32 module as the earlier project. Getting the CH559 MCU to communicate with the ESP32 module was a bit of a problem, considering there is not much documentation for the CH559. To overcome that hurdle, Bitluni enlisted the help Aaron Christophel, who has knowledge garnered from hacking similar chips and adapted that insight for the USB Host Microcontroller.
Another problem Bitluni encountered stems from the controllers themselves, which only output in raw data no matter the type of gamepad used, and thus can’t be translated into commands. He did manage to coax some input by pouring over the human interface device reports to produce a proof-of-concept driver that works with his test game, so full support should become available sometime soon. Those looking to replicate Bitluni’s USB Host Microcontroller can follow the links in the YouTube video posted below.