JrkCmd vs /dev/ttyACM*

Hi All,
I’m having fun with the Jrk motor controller and am puzzling over the JrkCmd source.
I have the example code in Linux/C which talks to /dev/ttyACM* just fine,
but I’ve got 20 motor controller and have run out of usb serial ports
(yes, I know I should have used UART to connect them, too late now, next time).
However, I’ve compiled your JrkCmd sample code (Linux/Mono/C#) and it works fine
(i.e. it can address all 20 motor controller).
My question is how does it address all 20 controller, when only 16 show up as /dev/ttyACM devices?
Many thanks in advance,
-Duncan.

Hello, Duncan.

That’s a lot of motor controllers! I would enjoy seeing some pictures and details about what you are doing.

I was not aware that there was a limit to how many ttyACM devices a Linux system can have. Thanks for letting us know.

JrkCmd uses UsbWrapper_Linux, which uses libusb 1.0, which uses the jrks’ native USB interfaces instead of the virtual COM ports. I think libusb uses the usbfs to talk to the kernel’s USB drivers. It does not use the /dev/ttyACM* files.

–David

Hi David,
thanks for that.
For interest, here’s a video showing the project…


runs from a RPi with 20 controllers (next time I’ll chain!)
…BTW - project was awarded a gold medal at London’s Chelsea Flower Show :O)
Best wishes,
-Duncan.

That is very cool. Congratulations on winning the gold medal, and thanks for sharing that video with us! --David