Flashing from Arduino IDE (which worked before) now giving bad keymap

I have been successful using Arduino IDE to flash custom firmware onto my Model 100 from Win11 sometime last week: I defined some keys using the CharShift plugin which I then assigned in Chrysalis.

Today, I tried flashing custom firmware, but the key mapping was very messed up. To make sure it wasn’t my code, I then used Arduino IDE to reinstall the default firmware, and got the same mapping.

Here’s what Layer 0 of that mapping looked like in Chrysalis:

Fortunately I was able to re-flash in Chrysalis to get back to a usable keyboard, but I can’t get my CharShift keys back unless I can build my own firmware again.

I tried restoring factory settings in Chrysalis, thinking that might help based on something I read on your Discord server, but I still got the same result.

What’s going on? Can anyone help?

1 Like

Hi there! Same issue, when trying to add some macros. Was using official .ino
image

1 Like

Just flashed to 0.90.6-snapshot.57 and all the maps on my Model 100 are gibberish.
None of my backups are being saved to the keyboard either, about to try a hard reset…

Update: Just flashed to 0.90.6-snapshot.58 and was able to restore from a backup again!
(dynamic macros are all wiped unfortunately)

Sorry about that, .57 ended up having an unfortunate bug in it.

Out of curiosity, what operating system are you on? Is it macOS, by any chance?

Yessir, my work machine is macOS 11.6.1

1 Like

Ok, I’ve managed to flash Keyboardio 100 correctly with my custom .ino by adding after Layer.move(EEPROMSettings.default_layer());:
EEPROMSettings.ignoreHardcodedLayers(false);

Layout & Colormap now not available in Chrystalis, but firmare still there, so its enough for me.

I am also having trouble to use make flash with the Model 100 on a Mac which resulted in a totally random key alignment. I ended up with using the .bin-file from make compile and used it as “Custom firmware” in Chrysalis. The trick was, to enable “Factory reset” as well, so that everything on the EEPROM gets deleted and will not be restored.

The random key alignment is due to the EEPROM layout changing between firmware versions (which can happen for all kinds of reasons). The firmware can’t automatically migrate from one layout to another, so if the eeprom layout changes, you need to do the migration manually. Taking a structured dump of the eeprom before flashing, and restoring it after is pretty much all it takes.

Chrysalis does this when it flashes new firmware, but the same thing can be accomplished by using the bin/eeprom-backup.sh and bin/eeprom-restore.sh scripts in Kaleidoscope’s source tree.