Feedback requested: simplified software installation

Yup! Installing a plugin is definitely one of the things I want to cover. When I first worked through getting the firmware loading I used Heatmap as my first firmware change:

I can use wavepool as an example of loading something from outside the main repo-- it looks nifty. :slight_smile:


What linux were you using? We just gave up on an Ubuntu test, because we kept getting port busy errors.

I was using Debian. If you are on Ubuntu, check if you have ModemManager installed, it has a tendency of jumping on each and every serial port, which can easily result in them getting busy. The Kaleidoscope repo has some udev rules you can install, which will prevent ModemManager stealing the keyboard’s serial port.

Stick that file in /etc/udev/rules.d, and then sudo udevadm control -R should reload the rules. Plugging the keyboard in afterwards should then work.


The issue you’re seeing on Ubuntu is modem-manager misbehaving. The two
solutions are either to install our udev rules or to apt-get purge
modem-manager. I’m 100% sure this got documented somewhere, but I’m
replying from a mail client and can’t dig out the source right now :confused:

no worries. We’ll take another whack at it.

ETA: and for future folks searching, here’s the issue thread on github:

Confirmed that it was a modem manager issue.

I’m going to keep the IDE install instructions split by platform, because they are sufficiently dissimilar that I think that makes the most sense. So there will be a shared overview, platform specific Arduino install instructions, and then shared explanations for remapping, LED effects, and plugins.


Huh. I thought there was really just a little extra “if you’re on Linux” item.

there are differences in menu layouts and behavior, enough that it doesn’t make sense to run them inline together. I could create a single page with multiple sections, if you prefer. I still haven’t seen the PC version. The PC in the house is misbehaving. It was a gaming machine that my son abandoned a couple years ago, and so far is resisting resurrection efforts strongly.

Heh. I’ve got plenty of Windows machines handy and if I get a moment to breathe, can step through the windows process screenshotting as I go.

I feel like that’s potentially going to lead to less version skew over time, but I’m not the one doing the work. If it turns out to be a problem, we can always unify the three if there turns out to be enough commonality.

Couldn’t find a Board on the selected port. Check that you have the correct port selected. If it is correct, try pressing the board’s reset button after initiating the upload.
Sketch uses 18152 bytes (63%) of program storage space. Maximum is 28672 bytes.
Global variables use 1659 bytes (64%) of dynamic memory, leaving 901 bytes for local variables. Maximum is 2560 bytes.

Device code: 0x0d
Device code: 0x0d
Device code: 0x0d

(Port was set to /dev/ttyACM1 on Fedora 26 Linux and all I saw to change it was a checkbox next to the name. I’d much rather have commands to type on the command line to do this.)

sudo systemctl stop ModemManager.service
did not help.


If you’re a commandline kinda guy, may be more your speed.

(As a heads up, that file may change to point at the new instructions soon. is the exact rev I’m pointing to. )

Do you have more than one device matching /dev/ttyACM* ? If so, autodetection may be going wonky.

I tested out building (no hardware yet) the firmware with this procedure in early October, and it worked fine. I attempted to remove everything Arduino from my machine and tried it again this morning, and it failed on macOS Sierra (10.12.6).

I see the following message in the console:

Invalid library found in /Users/merlin/Documents/Arduino/hardware/keyboardio/avr/libraries/Kaleidoscope-Plugin: /Users/merlin/Documents/Arduino/hardware/keyboardio/avr/libraries/Kaleidoscope-Plugin

…and Model01-Firmware was missing from the File->Examples menu. This was the result of failing to purge my ~/Documents/Arduino folder of old remnants. Once that was done, everything was fine.

So, my question is: do we have a list of everything that needs to be done to well and truly purge everything from each OS in order to start clean with Arduino/Kaleidoscope?


I was able to get this working after adding the rules to /etc/udev/rules.d on Fedora 26. Props to @algernon for this.


Not really intending to necro this too hard, but figured this was the most appropriate thread to bring this up. I was planning to reflash my keyboard to include some of the latest commits to the libraries, but I’m finding that the “newbie-friendly” version of downloading the firmware does not seem to grab updates. I’m not sure if it’s user error or if the method is simply not intended to work as I’m thinking it should.

I was using the Additional Boards Manager URL method to download the libraries and make it work (, so I was expecting that it would somehow know that new versions were available and allow me to resync with the latest changes. That didn’t actually happen - Arduino was content to tell me (in the Boards Manager window) that keyboardio was installed, and no updates were required.

At this point, I think I’m comfortable enough to use the command line and do things the “normal” way, but just wanted to bring up my experience in case this was not the intended result. As a reminder, I’m running on Windows 10.

1 Like

It’s intentional. I’m treating that update channel as somewhere we need to explicitly update to, rather than auto pulling with a goal of being less likely to hurt our users when we break something in master. I suppose I could automate a ‘dev build’ channel that’s not supposed to be as stable.

1 Like

That would be fine if you wanted to, but no need just for me. I have to take off the training wheels some time. Thanks for the quick response - just wanted to know the intention there.

1 Like

Understood. We’re still figuring out the intention. Automating a ‘dev’ build would be good for me, but, um, yeah, is very low on the priority list :slight_smile:

1 Like

Don’t sweat it. You have enough on your plate.