Yes. The firmware is a combination of the sketch (the .ino
file), and all of its dependencies: Kaleidoscope, the Arduino core used, KeyboardioHID, and any other library or third-party plugin you may pull in.
That depends whether you want those changes or not. It’s perfectly fine to not have anything in common with the default firmware. (Mine for example, has no relation; there are common plugins, but that’s about it.)
0.91.0 is the version of Chrysalis-Firmware-Bundle. The version is unrelated to Kaleidoscope. We version them independently so that they can be released and managed separately: we usually release the firmware bundle more often than Kaleidoscope. The firmware bundle also depends on the Arduino core (ArduinoCore-GD32-Keyboardio in case of the Model100).
So, as I wrote above, the relation is that Chrysalis-Firmware-Bundle
is at the top, that’s what we build the firmware from. It depends on Kaleidoscope (the main firmware library, think of it as a framework of sorts), which in turn depends on KeyboardioHID (the HID implementation we use), and the appropriate Arduino Core (the aforementioned ArduinoCore-GD32-Keyboard
for the Model100, and Kaleidoscope-Bundle-Keyboardio for previous, AVR-based keyboards).
The tooling for the official builds - as of 0.91.0 - pulls in a specific git commit for Kaleidoscope, and the latest git head for the Arduino Core, along with whatever version of KeyboardioHID the core itself pulls in.
Yes, it’s a bit complicated.
The version is set via the FirmwareVersion plugin. If you define KALEIDOSCOPE_FIRMWARE_VERSION
to a string before including the plugin’s header in your sketch, then you can set a custom version.
If you derive your sketch from the official firmware, and intend to follow it, then I guess it makes sense to set that version to something like 0.91.0-hupfdule.1
, and bump it whenever you feel like it. If you’re using CLI tools to build the firmware, you may be able to set things up so that the version becomes a git sha or something.
If you want to see a standalone sketch, here you can find mine. I build it using command line tools. make setup
will set things up, and make
compiles it. There are many ways to set things up, however.
On Linux - and likely macOS -, the easiest is probably to start with the Chrysalis-Firmware-Bundle
repository. make setup
will do the necessary steps to install stuff, make update
will update dependencies, and make
will compile all firmware. make Keyboardio/Model100
will only compile firmware for the Model100. It does require arduino-cli
to be available, but does everything else apart from that.
No, the firmware bundle is still versioned independently. We just rearranged things so that rather than having two copies of the firmware (one in the bundle, one in Kaleidoscope to serve as an example in the Arduino IDE), we only have one: the one in Kaleidoscope. This rearrangement does not affect how things are versioned, it’s merely to eliminate the problem of the two copies growing out of sync.