5 March 2024
Turns out, you can make a USB-USB converter much cheaper and simpler than using a 3.3v 32u4 with a MAX3421E or CH559 host shield. Here's how.
This version of USB-USB is Vial compatible and only strictly requires an RP2040 board that exposes GP4 and GP5 as well as two 22Ω resistors. The USB host port is implemented in PIO, so no pesky host shields!
The firmware is same as the Keyboard Quantizer Mini by sekigon-gonnoc, whom you may recall as one of the pioneers of custom EC (viz. Corne ECWL). Here's the link for the version running on my Pi Pico; hold down BOOT and plug the RP2040 board in to expose a USB flash drive that you can then drag the firmware onto.
Now all you need is to solder a host USB port with a 22Ω resistor between GP4 and D+, and GP5 and D- respectively; I chose to put mine on a perfboard carrier board, but if you're putting it into a USB keyboard directly like I did for my Realforce, you can solder it straight to the resistors and board.
Booth link for the Keyboard Quantizer Mini - if you want a neater, more compact version (and/or want to support sekigon!)
Github for Pico-PIO-USB - a library also written by sekigon that implements USB host and device capabilities using PIO - a great feat and a very useful tool for any RP2040 dev work