Push 2 usb midi and Teensy 4.1

Hi all,
I’m working on a project using a Teensy 4.1 to host an Ableton Push 2 controller over USB.

The Push seems to register itself as a USB device in a quirky way: interface descriptor 09:02 rather than the expected 09:04 and interface class 04:02 which it declares as "unknown (might be Yamaha).

I’m just wondering if anyone might have any pointers on how to ensure the Push is recognised in a way that allows communication with the Teensy?

Thanks in advance,

1 Like

Have you tried contacting Ableton tech support?

sorry, not tried with a teensy, (ive had it working on various rPI like setups) ,
i can remember off the top of my head what the descriptors look like, but the easiest way to check is to using a linux box (unfortunately, I don’t have time to do that now) … this will allow you to see if teensy is parsing the interface descriptions correctly or not.

basically, push 2 has a number of interfaces, as described in the push2 dev guide

it will show up as 2 usb midi interfaces (user and live port) as it is ‘usb midi class compliant’,
additionally there is an interface that you have to code specifically for to drive the display.
(its this later that is likely the ‘unknown’ interface class)

note: unlike the Push1 the display cannot be controlled via MIDI… Push 2 has its own usb display protocol, as detailed in above guide.

if its not showing up as 2 midi devices on the teensy, unfortunately, Id say thats likely an issue on the teensy usb code… so the ‘fix’ would be to fix that code :frowning:

unfortunately, this is not that uncommon, when I helped on axoloti’s usb midi code, we found quite a few quirks due to different devices, even in the chibios code esp. when usb devices presented multiple interfaces (like the push2)


Thanks so much for the comprehensive reply Technobear! Much appreciated. We’ll have another look and see what we can come up with.

Might also reach out to Ableton as you suggest eblomquist. Good suggestion.

1 Like

so, it turns out push 2 just uses a larger maximum packet size (512) than the default (64)

this is at the USB descriptor level and not described anywhere I can find in Ableton’s documentation :wink:

1 Like