Skip to content

Recovering from a bad firmware upload

Michael Richters edited this page Mar 7, 2018 · 1 revision

Don't Panic

There are many types of malfunctioning firmware that can be flashed on a Model01, but don't worry; you almost certainly can't brick the keyboard by doing so. There is a fairly simple procedure that you can follow to upload a good version of the firmware even if your keyboard is non-functional.


Types of bad firmware

There are a few different types of bad firmware that can be uploaded.

  • The prog key sends input that disrupts the flashing process
  • The keyboard continuously sends input even without pressing any keys
  • The keyboard is non-functional, and can't send any input
  • The keyboard's serial port becomes non-functional

In some cases, it's possible to run make flash and successfully upload a good firmware if you get lucky with the timing, but in other cases, it can be impossible with the bad firmware running. Especially in the last case, where the serial interface becomes disabled, the keyboard will be unreachable once it has finished booting.

The solution

In order to use this procedure, you'll need an additional (working) keyboard.

  1. Unplug the Model01.

  2. From your other keyboard, run make flash, and wait for the Press ENTER when ready... prompt.

  3. Hold down the prog key on the Model01 while plugging it in. Do not release the prog key.

  4. Press enter on the other keyboard (Still holding the prog key).

The Model01 will stay in bootloader mode for five seconds while the prog key is held, so you've got about that much time to press enter on the other keyboard. This is usually not difficult, but if you wait too long, the bad firmware on the Model01 will start, and the good firmware upload will probably fail. If that happens, just try again. It doesn't matter what kind of bad firmware has been flashed to the Model01, because if you use this procedure, that firmware will never start running.

The only way to brick a Model01 is by flashing a bad bootloader, which can't be done without using an external programmer and opening the case, so don't worry about doing that accidentally.

Clone this wiki locally