DIY monome compatible grid w/ Adafruit NeoTrellis

DIY Grid not recognized and how to debug


I just DIYed my own grid 128 following the instructions on the GitHub, using Adafruit Itsybitsy M4 Express as the MCU.

The hardware passed the multitrellis_test firmware test as expected, but I am having trouble getting it recognized on both Norns and MacOX with Max.

I have tied both the pre-compiled UF2 file and compiling the firmware myself, but neither works.

The pre-compiled firmware shows nothing on the REPL, while the self-complied firmware shows
tty appears to be grid-st when I plug the grid,
and shows

error: couldn't open monome device at /dev/ttyACM0
dev_list_add: error allocating device data
rm_dev_tty: /dev/ttyACM0
tty appears to be ACM grid

when I unplug it.

I am not sure how to proceed with debugging and would appreciate any help.

Pre compiled UF2 won’t work. I think that’s for a different board.

Make sure your addresses are correct in the code - copy from the multi-trellis if that one worked right.

The multi-trellist code works correctly, showing the rainbow light in the correct order.

I’m replacing my fried Teensy 3.2 with a new itsy bity M4 board, but somehow I can’t infer which pins are used in the built firmware for SDA and SCL from the docs and the code?

I had no problem finding it was 18 and 19 for the teensy version, but now I have no idea how I did that :thinking:

EDIT : could it be that it’s the pins on the M4 that say SDA/SCL? :grimacing: :face_with_hand_over_mouth:


And just like that, my grid was back up now running on a brand new itsy bitsy M4! Amazeballs! I’m overdue a debriefing on my process, there are thing I wished I knew when I started this 2 years ago :slight_smile:

For those struggling with the m4 not being recognized, I had to copy the addresses from the multitrellis example as well.

Basically use the following

//create a matrix of trellis panels
Adafruit_NeoTrellis trellis_array[NUM_ROWS / 4][NUM_COLS / 4] = {
  { Adafruit_NeoTrellis(0x32), Adafruit_NeoTrellis(0x30), Adafruit_NeoTrellis(0x2F), Adafruit_NeoTrellis(0x2E)}, // top row
  { Adafruit_NeoTrellis(0x33), Adafruit_NeoTrellis(0x31), Adafruit_NeoTrellis(0x3E), Adafruit_NeoTrellis(0x36) } // bottom row

1 Like

Yes, as @ReallyRad mentioned, for those who want to use SAMD M0/M4 MCU, compile code under this folder: neotrellis_monome_m0, please note that the I2C addresses are different than which in the teensy and the test code.

1 Like

Now I’m missing my paletted grid :frowning: Has anyone managed to adapt this

for the M4?

I’m still trying to diagnose an issue I keep having where my neotrellis grid feels like is slows down in response time significantly (half a second between button press and grid update) or exhibits unpredictable behaviour such as buttons appearing to “hold” when not held…

I am considering lowering the brightness of my grid, but as I didn’t build it, it fills me with some dread that I end up bricking it.

I thought it might be useful to see what power is being drawn by grid, so I connected it to this little usb whatsit and played for a bit …it seems that I am often getting above 0.69A which I am assuming is quite a bit of draw to put on the USB (I am seeing the !!! Next to the CPU load too even though CPU doesn’t pass 60%) … do you think it is worth trying to decrease brightness to get some power headroom back? I am using an official pi PSU (5.1v at 3amps)

So… this happened today :nerd_face:


Hell yeah!! Much cheaper and more plentiful alternative

1 Like

time to update my soon-to-be-ordered mouser cart for this cheaper option.
When do you think your github will be updated?

thanks a lot for your hard work making all this monome toys available to us!


Awesome! A nice alternative to the Pico would be the Waveshare RP2040-Zero. Much smaller pcb.

This opens the possibility of Bluetooth with the Pico W. The latest SDK added it. I don’t think Norns has Bluetooth support yet tho.

I’ll push changes in the next day or so.

This would need some pin assignment changes but should work (similar to an RP2040 QTPy from adafruit) - mounting is a little more tricky with no mounting holes, and because the mcu is on the bottom - so it’s a thicker unit altogether to fit in a case

I thought i had fallen into “the knowledge gap” trying to update a neotrellis grid that i hadn’t personally built…but I also fought my way out of it, so I thought I would leave this here so it is searchable for others as inexperienced as me… this is my own step by step guide to update a neotrellis grid to install the Paletted grid as of 2023 using these exact steps…

  1. got the full zip from here…
    GitHub - oldmanfury/neotrellis-grid-paletted: teensy code from okyeron modified with gradient color palettes
    and extracted it to my desktop (win10 laptop)

2.went to

and followed the step by step for installing tytools

3.went to
Releases · Koromix/tytools · GitHub and got

  1. again unzipped it to my laptop, opened it with my grid connected, and saw it change from the ! to an icon to show the grid was connected reading “monome”

5.clicked upload and selected neotrellis_monome_teensy_paletted.ino.TEENSY32.hex selected it

  1. this completed and the grid seemed now shows this new version ,

  2. I then connected to norns… something to be aware of at this point…
    as soon as i pressed within a row to select that palette, … the new palette displays for about half a second across all the rows THEN IT SEEMS TO JUST CUT OUT and go blank. and loading in a script just kept a blank grid…queue much regret…until i worked out, what i had to do was…

  3. go into SYSTEM>DEVICES>GRID and update the grid as, for whatever reason, the serial number had now changed.

but with this bit done, I can now very happily load up my grid in this lovely colour !!!

Huge thanks to the wonderful people who make these awesome tools for us to use.


Could you let me know what the connections/pinouts are on the Pi Pico?

It’s defined in the code on github, but maybe not obvious

// I2C pin defs for RP2040
const byte I2C_SDA = 26;
const byte I2C_SCL = 27;

So that’s GPIO 26 and 27 - which are pin numbers 32 and 32 (Along with 5v and GND)

You can choose to use different GPIOS for I2C1 if you like and then change the code appropriately. See for general pico pinout info

Ah! I should have thought of that! Thank you!

and don’t forget to use the same GND for the pico and the treillis, I spent way too much trying to understand why I got no communication…