You are not logged in.

#1 2020-05-02 10:12:08

twoion
ほやほや
Registered: 2015-08-10
Posts: 2,896

Cherry MX 1.0 keyboard firmware update using virtualized Windows

Cherry publishes a firmware upgrade tool for their "MX Board 1.0" series of keyboards on their website, for Windows only, as an .exe. Getting it to work with Wine went fruitless, so here's how to upgrade your keyboard's firmware using a Windows VM with libvirt instead.

If you haven't got a laptop with a built-in keyboard, you'll need a second keyboard BEFORE YOU START.

a. Install virt-manager and set up a Windows VM. Download the Cherry firmware upgrade tool inside the VM.

b. Shut down the VM, connect the keyboard if you haven't already. You now need to fully pass through the USB keyboard to the Windows VM. Open the VM properties in virt-manager, click Add hardware > USB Host device and select the keyboard. Click "Finish"; and boot the VM. Windows will now have ownership of the device and you are unable to use the device on Linux. Use the second keyboard from now on.

c. In Windows, execute the upgrade tool and click Start upgrade. The tool will error out with "erroneous device response: error code -31" or similar. Shut down the Windows VM, but leave the Cherry keyboard connected. This is because when the keyboard goes into firmware download mode, it changes its device ID, breaking the USB passthrough configuration. We need to pass through the firmware downloader device to the VM, too.

d. The keyboard is now visible to Linux as "Bus 002 Device 008: ID 046a:00b2 Cherry GmbH CHERRY FIRMWARE Downloader" (you can use lsusb to confirm) when connected. The keyboard is now in firmware download mode. Repeat step b, but this time, add "Firmware downloader" USB device.

e. Start up Windows, and re-execute the firmware upgrade tool. It'll now show a progress bar and the keyboard will download the new firmware. Wait till it successfully finishes.

f. Immediately after finishing, the keyboard will return to being a keyboard USB device again and be usable as one. Upgrade completed. Remove the device passthrougs in virt-manager you'll be done.

Simplify

You can also try passing through a complete USB host controller (probably found under "PCI devices" in the Add hardware dialog) to Windows, which would simplify the procedure because Windows would continue seeing the keyboard even when it changes device IDs. I couldn't use this mode however because on my laptop, the internal USB controllers all host laptop built-in devices (or a mouse that I'm using right now) so I didn't go down this route. Before trying, check that no essential devices Windows could mess with (extra fan control, etc pp) reside on the USB controller that you decide to pass through to Windows.


Per aspera ad astra.

Online

Board footer

Powered by FluxBB