Keybow 2040 Library/Instalation Problems

I have a keybow 2040 which has been in use for some time and I just decided to refresh it and it’s code. The problem I have is that the refresh has resulted in it only running the rainbow.py and the reactive-press.py, this clearly indicates a library problem as inferred from the installation instructions. So I nuked the the keybow and started again with the same result.

So I have followed the instructions on GitHub - pimoroni/pmk-circuitpython twice and failed, so I thought I’ll read the instructions on CircuitPython and Keybow 2040 and I note that partway through it directs you to get the Adafruit IS31FL3731 library from a differing source i.e. circuitpython dot org /libraries (Sorry silly restriction) which has two versions linked so as I cannot see anything that says which version of the library I need, which version do I use?

Further, after I downloaded the latest bundle for version 8 I realised the structure and contents are very different from the version I already have. It seems the two sets of instructions differ in significant ways, i.e. not just the extended textual instructions but the resulting installations.

So are they both correct, or is one incorrect, or have I missed something?

I will carry on trying to get to the end of this but if someone knows where I have gone wrong or what is broken please tell!

Thanks in advance.

Ah! my Keybow 2040 has now gone all “read only file system” and I don’t seem to be able to get it out.

Before I got into this particular predicament it seemed that the problem was something to do with the USB as all the scripts that ran locally and did not send back data seemed to be working. The few garbled messages I saw through /dev/ttyAMC0 port were complaining about error on line 1 (Probably not the right words but I can’t check now).

did an update on mine a few months back…
First updated the UTF file from here (same as PMK tutorial)
then I grabbed the machine (mpy) version of the adafruit libraries from here (NOT the same link as the PMK instructions, those link to the human readable .py files) from which I copied over the following 3 folders
lib\adafruit_is31fl3731
lib\adafruit_hid **
lib\adafruit_midi **
and of course the PMK library

the read only problem seems to be an uncommon side effect of not “ejecting” the Keybow2040 after having used REPL, Wipe and reload is the recommended action to fix, and always use eject after having used REPL. I managed to get it to work without a reload once by putting it in boot loader mode then reconnecting it, but only once, next time I had to reload.

** For some reason the tutorial jumps straight into the rainbow and reactive examples and doesn’t reference these libraries until much further down for the other examples

Ah! Thanks Nox, it’s clear I probably had a fully working keybow if I had just loaded the other libraries. Just goes to show you should always suspect your own stupidity first.

However, I still have problems with the keybow mounting read only, it’s clear from reading syslog that my keybow has some error is it’s file system so I may need to get into fsck and I think that might be better dealt with in another post I’ll post a link to it here later.

I have posted the solution to my read only mount problem on this post good luck

Don’t feel too bad, I made a similar mistake first time around with mine expecting all the info for libraries to be at the top like you would in the code (only caught it because wanted to tweak the examples before it ran and saw imports for libraries not mentioned yet).

thanks for posting back the with the linux side solution for the locking/unmount/eject problem. I’ve been mostly working with it from a windows environment, since that’s where I use it. the process I used there was the same as for clean install, tap boot select twice while connected (shows as RPI-RP2), copy nuke.utf to it, let it reboot (still shows as RPI-RP2), copy the circuitpy utf, let it reboot (comes back as CIRCUITPY), then copy all the libraries to it (either as drive or via REPL environment).

FWIW it seems to be a problem with circuitpy in general and I think I’ve narrowed it to when it’s connected as both mass storage and in REPL. haven’t had it happen since my code solidified and I stopped needing the REPL connection.