Can I change the LED modes via Chrysalis? If not, how do I do it?

I’ve finally got around to setting up my M100 which has been sitting in its case on a shelf since way back when it was released.

At some point @algernon merged my Digital Rain LED plugin to Kaleidoscope, which is flattering and exciting.

But it’s not set up by default, I find!

This is also my first time using Chrysalis – I can’t find a way to get it to use the Digital Rain LED mode, specifically to add it to the list of modes it’ll cycle through (which I’d also like to edit). Am I missing something or is this not possible?

If it’s not possible, how else can I enable it? Would doing so mean I can no longer use Chrysalis to tweak my keymap?


Hi @bjn!

Afaik, there is no means of activating any LED effect directly in Chrysalis. What you can do is cycle through the LED effects baked into the default firmware by pressing the LED button. I guess you still have the default key caps and therefore have the LED key in place. However, see Model 100 product page to locate the LED key in the default layout, if in doubt.

As you said the Kaleidoscope-LEDEffect-DigitalRain plug-in is not part of the default firmware. Hence, you have to build your own, see the Kaleidoscope Quick Start guide on how to get started.

After setting up the Arduino IDE and having built your first (default) firmware you can add the LED Digital Rain effect as described in the Kaleidoscope-LEDEffect-DigitalRain documentation. Transfer your enhanced firmware to the keyboard and cycle through the LED effects until you find the Kaleidoscope-LEDEffect-DigitalRain.

Even with your own firmware you can still use Chrysalis to tweak your own keymap.

In Chrysalis, you can set the default LED mode when it turns on. It’s cryptic though. Basically count the number of times you press the LED button to get to the mode you want. Then you can set that as the default.

This all sounded great but it led to a lot of problems.

If anyone else is embarking on this journey, this is the crucial part which was missing: Using EEPROM — Kaleidoscope documentation

As far as I now understand it, if you have already used Chrysalis, which edits configuration stored in the EEPROM, flashing a new firmware (even the default one, it seems), garbles it. (Or rather, the storage space has now moved.)

I hadn’t saved out a backup, so I now have to configure from scratch again.

I do not currently understand how Chrysalis and the EEPROM are supposed to exist in the same workflow as custom firmwares. If I’m doing anything at all in Chrysalis, it appears that I need to rigorously keep my settings backed up, and every time I flash a new firmware (which is a lot while I’m iterating on it or some plugin I might be writing) I need to then close the IDE, open Chrysalis, unplug and replug the keyboard, connect, restore my backup, and save it.

I understand now that the keymaps saved via Chrysalis are totally separate from the keymaps set up by the firmware, and that a firmware plugin will automatically switch to a Chrysalis layout if one exists. If you reset the EEPROM via Chrysalis, it seems it does set a layout in EEPROM, so the layout you set in firmware is still ignored.

I tried resetting the EEPROM to default again after flashing my custom firmware, and then after unplugging/replugging and connecting via Chrysalis again, I now finally saw my firmware-configured Dvorak layout. It’s not clear to me whether this was copied to Chrysalis/EEPROM or what. But I decided at that point to ditch Chrysalis and go back to doing everything in firmware.

I had to disable various plugins so it won’t try to load a layout from EEPROM.

I now have the LED effect I wanted, so I suppose I’ve achieved my goal, but it was anything but simple.

I haven’t used them, but I believe there are two shell scripts in Kaleidoscope’s bin directory meant to help with this: and

I saw that in the docs. But I figured that if I need to do my own firmware sketch to switch out which LED plugins I want, I may as well do everything there and skip the extra steps.