Building Model 100 firmware?

Are there/can we get instructions on how to build the Model 100 firmware, such that we produce the same bits that are distributed officially? That seems like a key baseline from which to start playing with firmware mods :slight_smile:

1 Like

If you’re on macOS or Linux, the simplest way to compile the official firmware is:

$ git clone https://github.com/keyboardio/Chrysalis-Firmware-Bundle.git
$ cd Chrysalis-Firmware-Bundle
$ make setup
$ make

It may not produce the exact same bits, because this will pull the latest Arduino cores, which might be different than what the official firmware were built with, but it gets you pretty close. The sketch and the Kaleidoscope version will be the same as used for the official builds, however.

You can also run make update to update the dependencies.

Thanks, looks good! Generally speaking is it sufficient to sync to the corresponding version tag in Chrysalis-Firmware-Bundle in order to specifically build it, or are other steps needed?

Run a git submodule update after too, to pull in the Kaleidoscope it is tagged with. You can also make update to update the rest of the dependencies (the arduino core, in particular).

Okay, then how do I actually install the built firmware on the keyboard? I’m on Linux.

You can either use make flash, or Chrysalis. I’d suggest using Chrysalis, because that does a few extra steps to try and make sure things are proper.

Just now got around to trying this. I used Chrysalis as you recommended, but at first it didn’t work – the update appeared to complete successfully, but the keymaps weren’t updated to the ones in the code. After puzzling over this a bit, I realized I had to turn on the Factory Reset switch to keep Chrysalis from saving and restoring the keymaps, thus preventing my code changes from taking effect. Maybe I should have just used make flash :slight_smile:

Might not be a bad idea to add a note about that on the firmware update screen in Chrysalis – something like “If you’re installing custom firmware, and you want to use the layout in the firmware rather than the one currently in the keyboard, turn this on.”

Yeah, I think it would be better if Chrysalis didn’t silently reconfigure the keyboard to use EEPROM keymaps when connecting for the first time; it might avoid a lot of confusion if it prompted the user for consent first.

1 Like