With this converter you can change keymap and use functions TMK firmware offers on your USB keyboard.
You can support this project by getting TMK USB-USB converter from me.TroubleshootYou have trouble or question? Post infos like below when you can ask in this thread.
Debug outputUse
hid_listen command to see its debug outputs. Post its outputs.
Try
debug firmware for detailed debug log, instead of default firmware.
Keyboard model nameURL of the product page would be helpful to check its specifications and manuals
OS nameWindows/Mac/Linux
USB DescriptorIf your problem is specific to your keyboard,
use
TMK USB Descriptor Dumper to get keyboard's USB Descriptor data.
Flash
Dumper firmware onto your converter and then plug keyboard. Use
hid_listen to get Descritpor data. Post all of outputs on hid_listen.
Also try these.
Cable and HubUse short and good-quality USB cable, or plug the converter into computer directly or externally powered USB Hub.
With longer cable USB power voltage drops more at the converter and keyboard, this can cause problem especially when plug-in the devices or computer is powered up.
https://geekhack.org/index.php?topic=69169.msg3100547#msg3100547HardwareYou need USB host controller chip MAX3421e and AVR chip ATMega32U4.
1. TMK USB to USB converterThis small board is almost equivalent to USB Host Shield plus Leonardo. This is an assmebled converter and no soldering job is needed.
You can order here to support my project.
More
2. USB Host Shield 2.0 + Arduino LeonardoJust plug USB Host Shield onto Arduino Leonardo, they are not small as TMK converter but work well with default firmware.
More
3. Mini USB Host Shield 2.0 + Pro MicroNot supported by me but this should work too. Firmware may require small fix. See these references.
More
FirmwareThis converter is part of TMK keyboard firmware project. Source code for the converter firmware is available here.
https://github.com/tmk/tmk_keyboard/tree/master/converter/usb_usbThe firmware depneds heavily on
USB Host Shield 2.0 library.
BuildYou can compile firmware from source code. See TMK documentation for the detail.
https://github.com/tmk/tmk_keyboard/wiki#build-firmwareMore
$ git clone git://github.com/tmk/tmk_keyboard.git
$ cd tmk_keyboard
$ git submodule init
$ git submodule update
$ cd converter/usb_usb
$ make clean
$ make
To reduce firmware size you can disable functions you don't use by commenting out following lines. Note that 'make clean' is needed after Makefile is editted.
NKRO is meaningless practically on this converter and it should be disabled always.
# Build Options
# comment out to disable the options.
#
MOUSEKEY_ENABLE ?= yes # Mouse keys
EXTRAKEY_ENABLE ?= yes # Media control and System control
CONSOLE_ENABLE ?= yes # Console for debug
#COMMAND_ENABLE ?= yes # Commands for debug and configuration
#NKRO_ENABLE ?= yes # USB Nkey Rollover
https://github.com/tmk/tmk_keyboard/blob/master/converter/usb_usb/Makefile#L93-L97No idea? No problem, you can use easy TMK keymap editor instead, see below.
ProgramFor TMK converterFirst, press tiny button on TMK converter to turn it into program mode.
To program converter with your own firmware you can use 'dfu-programmer' tool.
More
dfu-programmer atmega32u4 erase --force
dfu-programmer atmega32u4 flash <your_firmware.hex>
dfu-programmer atmega32u4 reset
If you have installed build tools you can just 'make' like this.
make dfu
Or you can use 'Atmel FLIP' as well. Refer to this wiki page for other program tools.
https://github.com/tmk/tmk_keyboard/wiki#flash-firmwareFor USB Host Shield 2.0 + Arduino LeonardoMore
Push reset button on Leonardo before run this command. Serial port name(COM17) depends your system. On Linux I got /dev/ttyACM0.
$ DEV=COM17 make program
or
$ avrdude -patmega32u4 -cavr109 -b57600 -Uflash:w:usb_usb.hex -PCOM17
TMK Keymap EditorUSB to USB converter supports TMK keymap editor now!You can edit keymapping and get your custom firmware easily with this.

Start here: Default
plain layoutOr
SpaceFn layout example on
Keymap Editor.
Limitation- Only supports 'HID Boot protocol'(6KRO) mode. Many of NKRO keyboards still can work in 6KRO mode. (Confirmed NKRO keyboards: see 'Compatible Keyboards' list.)
- Media/System control keys on keyboard are not recognized by the converter. Note that you can still send them with TMK firmware by remapping keys.
- 'Fn' key on keyboard is not recognized. In most case keyboards don't spit out scancode for 'Fn' key. You cannot remap the 'Fn' key itself.
- Firmware size. USB to USB converter uses alot of flash space to support USB keyboard. Some combination of TMK features can not fit into MCU flash size(28KB). To reduce firmware size you have to disable some of features you don't use, see 'Firmware' section above.
- No mouse or other pointing devices support. To support all pointing devices is difficult but it is possible to support one specific device if you are willing to write code for that. https://geekhack.org/index.php?topic=69169.msg2193024#msg2193024
Incompatible KeyboardsThe converter doesn't work with:
Some of incompatible keyboards listed here may work with the latest firmware probably, please try and report if you have any.
As of 2020-12 the converter firmware received a few bug fixes on its USB stack which improved its keyboard compatibility greatly.
Use this firmware to get detailed debug outputs on hid_listen if your keyboard doesn't work. And post its outputs here.Compatible KeyboardsIf your keyobard works well with BIOS/EFI you can expect the converter handle it reasonably. But it is still not 100% assured, the covnerter can fail to handle the keyobard with some reasons unfortunately while the converter firmiware has been gradually updated to improve compatiblility.
Report from you would be really appreciated. Please post your result in this thread.IssuesConnectPro KVM switchThe converter doesn't work on its DDM port of ConnectPro KVM switch. Workaround is disabling debug console. (2021-10-05)
https://geekhack.org/index.php?topic=69169.msg3085929#msg3085929https://github.com/tmk/tmk_keyboard/issues/707Fixed(2021-10-24)
UGREEN's usb 2.0 KVM switchThe covnerter doesn't work on Macbook pro after long sleep when connected through the KVM.
No workaround as of 2021-09.
https://github.com/tmk/tmk_keyboard/issues/703Update2023-02 Ducky One 2 Mini support
2023-01 Apple Magic keyboard(A1644/A1843) support
2022-10 Update description for Ducky One 2 Mini
2022-10
Fix for HHKB Hybrid2022/05
Fix for Anne Pro22021/10
Update firmware - Fix for ConnectPro UD-12+ KVM
#707 - UHS2:
500ms delay for bus reset for Matrix Vita
- UHS2: Improve plugin detection in busprobe()
2020/12 Fix
STALL error2020/11 Fix
TAP_KEY2020/11 Add
Mechanical Locking Key support2020/11 Fix
TOGGLE error and
HUBPRE bit.
2019/05
Fix startup stuck problem2019/05
Fix Rollover error handling2018/11 Update firmware(Use fixed LUFA stack and update USB_Host_Shield_2.0)
2018/11 Add Filco Majestouch2 87 and ikbc KD87 to compatibility list
2018/07 Update firmware to
fix startup issue. see
this commit.
2018/10 Add design file for enclosure
2018/02 Update "Reported keyboards" section
2017/05 Fix startup code for FC660C
2016/09 New keymap editor(unimap) is available
2016/01 Add Keymap editor
2015/12 Add Firmware size to limitations, and recommendation for genuine host shield
2015/11 Add keymap for JIS and ISO
2015/07 Bug fix for keyboard sending ErrorRollOver report
2015/07 Add Locking key indicator support
2015/06 Updated Limitation and TODO
2015/02 TMK USB to USB converter Rev.A
2014/12 Added Hub support(confirmed with HHKB pro2)