I finally finished my build of the diy grid, I’ve had so much fun with this, thanks a lot @okyeron, it’s a masterpiece design!
I now want to use the grid as a controller/sequencer for Pd and Orac and make some patches but I’ve had some issues with talking to it directly via serialosc on my Fates. Some people made it happen on this forum thread with an Organelle but they seemed to have used some original monome grids.
In my case (because of the teensy I think) it doesn’t want to automatically start an osc server for the device when I plug it in. It works when I start it manually using the command serialosc-device /dev/ttyACM0 which is already not bad but I would like to go to the bottom of this so that we can share patches afterwards without too many problems.
In the source code of serialosc-detector I found a detection condition that seems to rule out arduino based devices because their udev parents subsystem attribute seems to be “usb” and not “usb-serial” (see the the list of all the attributes of my device below).
(Arduino based grid udev attributes)
$ udevadm info -a -n /dev/ttyACM0
Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.
looking at device '/devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.1/1-1.1:1.0/tty/ttyACM0':
KERNEL=="ttyACM0"
SUBSYSTEM=="tty"
DRIVER==""
looking at parent device '/devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.1/1-1.1:1.0':
KERNELS=="1-1.1:1.0"
SUBSYSTEMS=="usb"
DRIVERS=="cdc_acm"
ATTRS{authorized}=="1"
ATTRS{bAlternateSetting}==" 0"
ATTRS{bInterfaceNumber}=="00"
ATTRS{bInterfaceSubClass}=="02"
ATTRS{bmCapabilities}=="6"
ATTRS{bInterfaceClass}=="02"
ATTRS{bNumEndpoints}=="01"
ATTRS{bInterfaceProtocol}=="01"
ATTRS{supports_autosuspend}=="1"
I don’t understand half of this and would be very thankfull for some help. I am trying to find out if the parent’s subsystem device attributes can be modified or if there is a better way to make serialosc detect the diy grids automatically. I know that there has been some discussions over this but regarding norns device detection, does someone know how these things relate ?
I have also been looking into the norns device monitor hack of @okyeron that makes the diy grids detectable by norns. It seems to handle the same kind of issues but it directly uses libudev. I don’t understand why norns doesn’t seem to use serialosc to communicate with grids and others
Too many questions
Ps: @Gerald_Stevens thanks for the nice colored version of the arduino firmware! I tried it out and the palette selection works but I’m getting no lights and interaction with norns afterwards… Do you have any tip on how I could try and find the bug? Maybe with the arduino serial monitor?
Pps: maybe some have seen it on the picture, I have soldered the teensy directly to the board and kept it out of the box for now. When trying to solder the flexi-pcb to the board I applied too much heat (I think) and one of the pads of the flexi-pcb fell off. I tried to glue it back but the current isn’t going through, does someone have any advice? Maybe I should scratch a bit of the hidden conductor cable and solder to this?