Monome firmware compatibility


#1

Hello!

I'd like to connect my Monome 128 to the USB host port of my brand new Axoloti... I think there's a great potential connecting grid controllers (monomer, arduinome,..) to this wonderful little board Axoloti is.

The first technical difficulty I see is that monome uses an FTDI serial-to-usb chip and, as far as understand from axoloti firmware, this is so far unsupported. I'm not an expert in usb host functionality of the stm32 but was just wondering if it is technically possible to add a USB class for FTDI chip in the Axoloti firmware? I was thinking of porting the low level driver monome has written for the AVR32 since it's open source, but i'm unsure about usb-host limitations of the stm32...

Any idea?


#2

I'm very interested in that too. maybe the folks over at http://llllllll.co have some ideas about that.


#3

FTDI serial-to-usb chips unfortunatly don't use generic ACM/CDC class but use a vendor specific class.
It is possible to add custom usb classes in the usb host framework in the firmware. I think it is better done from scratch than porting an avr32 driver, but I have not looked at the avr32 code.
To accelerate such development, I'd recommend a stlink/openocd setup for in-circuit debugging, and a Beagle USB analyzer to sniff the usb traffic...


#4

I agree that, looking at the avr32 driver code there, it seems better to start from scratch. There's also a version of the low-level (for ftdi) plus high-level (for monome) driver for the arduino due here but even if the due is an ARM like stm32 i guess the usb library are not compatible...

@johannes, do you have a link to an example of a usb host custom class for the stm32 usb host library?


#5

ARM is only the processor architecture, different vendors use different peripherals.
STM32 usb host library documentation:
http://www.st.com/st-web-ui/static/active/en/resource/technical/document/user_manual/DM00105256.pdf
in the sourcecode:
firmware/STM32_USB_Host_Library/Class
firmware/usbh_midi_core.h
firmware/usbh_midi_core.c
The STM32CubeF4 also contains a Mass Storage Class host driver.


#6

I got in touch with nw2s to see if some of his code could be re-used. @thetechnobear was also in the thread:

http://madronalabs.com/topics/3927-serial-protocol?page=2

Maybe I misunderstood but it seems like we could leverage upon that code to make the axoloti talk to the monome. Finally got the axoloti w/ the Music Thing Modular breakout and I'd love to pair it to a monome. Alternatively, I also have a Hella unztrument that I've programmed in the past w/ a teensy. I could never make it appear like a bona fide monome (I still think it's possible) but maybe it would be easier to make them talk?


#7

Sorry, no its completely unrelated... we were discussing the usb protocol the Madrona Labs Soundplane uses, as Scott would like to potentially bring support of the Soundplane to the nw2s platform in the future, and Ive been getting the soundplane working on a beaglebone black.

i think the current nw2s is arduino based, so will be similar to the monome github code base.

I think the monome and axoloti would make a great partnership, and in fact perhaps could smooth the monome integration with other platforms...
but unfortunately don't have one at the moment, and frankly ive got enough controllers , so hard to convince myself to get one ... but perhaps one day :wink:


#8

Scott got back to me via email. He did implement the monome support! His Atmel usb code is at:

https://github.com/nw2s/b/tree/b-1.1.0-unstable/gcc/app/src/drivers/usbhost

and the Grid implementation at:

Not sure how close the STMicro USB APIs are to the Atmel stuff. And I'm also not sure what would be the best way to debug implementing this stuff. @johannes, do you mean this debugger?

http://www.digikey.com/product-search/en?WT.z_cid=sp_497_0928_buynow&Enterprise=44&lang=en&Vendor=497&mpart=ST-LINK%2FV2-ISOL


#9

There is a significantly cheaper non-isolated st-link v2 available too.

Unztrument: it seems that it is a usb midi class-comlpliant device, should work out-of-the-box.


#10

That's an interesting thought. I can definitely have the teensy driving the grid act like a MIDI device. I would just need to design a midi protocol/sequence to turn individual cells in the grid ON/OFF...


#11

I'd suggest to use the same midi commands as a Novation Launchpad.


#12

Obligatory "sorry for the bump", I didn't want to open up a new thread about it to keep search results concise.

I'm super interested in this happening and/or making this happen myself.

I'm too new to the Axoloti to know exactly what we're saying is involved here, so could someone clarify: is this developing core-level functionality for the Axoloti to recognize USB serial devices, or is this developing that functionality at a patch level? I've got a grid and an arc, and would love to introduce both of them to the Axoloti, as I think they'd be great friends :slight_smile:


#13

it would involve firmware development, in particular an extension to the usb (device) handling.
this could be done by an interested developer with a monome ( as the axoloti firmware is open source)

a starting point, would be to look at the current usb handling for midi devices


#14

Thank you so much, I'll try to start reading up. Hope to be able to take a stab at this and get some kind of grid hello world going on.


#15

I'd like to see this happen too.. Especially now i'm planing to have my axolotl in my modular, where i already have a white whale sequencer. So it would nicely fit the "usb patching" paradigm followed by monome modules.

It can require a significant amount of work since there's (or there seem to be be) no low-level driver for the FTDI chip for the STM32.. When one has the low level driver working there several implementations of high-level monome communication:

the AVR32 one for Aleph and monomer modules:

the one for arduino:
http://monome.org/docs/grid-studies/arduino/

the multiplatform libmonome:

it is probably possible to port any of these three to the STM32 platform but it requires to interface with the usb lib for the stm32.. This seems doable but i unfortunately have no time to do it..


#16

Bump. Good thread and over 4 years old now. Knowing the issues, did anyone make any steps in making this a reality? I have a Monome Grid and paired with the axo would be very cool.


#17

Not a Monome owner myself, but you might have some luck on the lines board.