Atreus Firmware Puzzle

I bought an Atreus and customized it using Chrysalis and used it awhile. That worked OK, but I realized that there were just some things that Chrysalis wouldn’t let me customize, so I tried using the Arduino IDE to design my own custom sketch and uploading new firmware, similar to how I have done with my Model 01. It seemed as though everything was working just fine and and I didn’t get any error messages. However, after the upload, the keyboard continued to use the keymap stored in EEPROM by Chrysalis and ignored my keymap and my macros. How can one edit or ideally REPLACE the Chrysalis-installed firmware?

Yep, Chrysalis store the keymap in eeprom and kaléidoscope compile it in the binary file, so you have to either :

  • tell your sketch to mot use the eeprom layouts (you can search here or in the github issues)
  • reset the eeprom (there is a make command to do it, or use the «reset to factory» option from the Chrysalis firmware upgrade menu - don’t forget to export your layers as a backup, just in case…)

Happy hacking :slight_smile:

1 Like

For others coming across this same problem, here’s what I think is meant by:

tell your sketch to mot use the eeprom layouts (you can search here or in the github issues)

The default firmware (.ino) file uses the Kaleidoscope-EEPROM-Keymap plugin to read and use the keymaps stored in EEPROM by Chrysalis.

These EEProm keymaps take priority over the keymaps built in to the firmware itself, which can be pretty confusing when changing the keymap in your .ino file does nothing! To use only keymaps from the firmware you can remove that plugin and your hardcoded keymap will be used instead. Obviously this STOPS CHRYSALIS WORKING, so don’t do it if you don’t want that!

In my case that meant removing (or commenting out):

  • The #include "Kaleidoscope-EEPROM-Keymap.h" at the start
  • The EEPROMKeymap entry in the KALEIDOSCOPE_INIT_PLUGINS() list
  • The EEPROMKeymap.setup(10); call in the setup() function.

This seemed to work for me, but please do correct me if I’m wrong!