Problem with Teensy 3.2 Class Compliant MIDI +RawHID Device

Status
Not open for further replies.

yeahtuna

Well-known member
Hi,

I've run into an issue that I was hoping someone could help me with. I make and sell "Class Compliant" USB MIDI devices based on Teensy chips. I have different generations of my MIDI devices. Some are built on Teensy 2.0 chips, some on Teensy 3.2 and some on Teensy LC.

The issue I'm having is that my Teensy 3.2 and Teensy LC variants of my devices are not being recognised in the USB Host port of an iConnect MIDI4+. My Teensy 2.0 devices on the other hand, which use the same set of interfaces and endpoints, work perfectly fine.

All the different generations of my devices have one MIDI Interface, one RawHID interface, and of course a Serial Debug interface. All the devices share the same interface order and endpoints, and are built from the same sketch, but for some reason the Teensy 3 and Teensy LC variants are causing issues with the iConnect.

I was able to get the iConnect to recognise the Teensy 3 and LC devices by removing either the RawHID or the Serial Debug interface. It seems that if both are present on the Teensy 3 chips, there are issues.

So I'm curious if someone has any idea why there might be an issue with having both a rawhid and debug interface present. For the record, there are no issues with the Teensy 3 version of my devices on Windows, Android, iOS.

Thanks in advance for any insight you can provide.

Regards,
Rob

Here's an exerpt from my usb_desc.h file:
Code:
#define NUM_INTERFACE		3
#define NUM_ENDPOINTS		7

#define NUM_USB_BUFFERS		24
#define EP0_SIZE			64

#define MIDI_INTERFACE		0
#define MIDI_TX_ENDPOINT	1
#define MIDI_TX_SIZE		64
#define MIDI_RX_ENDPOINT	2
#define MIDI_RX_SIZE		64

#define RAWHID_INTERFACE	1
#define RAWHID_TX_ENDPOINT	3
#define RAWHID_TX_SIZE		64
#define RAWHID_TX_INTERVAL	1
#define RAWHID_RX_ENDPOINT	4
#define RAWHID_RX_SIZE		64
#define RAWHID_RX_INTERVAL	1

#define SEREMU_INTERFACE      2	// Serial emulation
#define SEREMU_TX_ENDPOINT    5
#define SEREMU_TX_SIZE        64
#define SEREMU_TX_INTERVAL    1
#define SEREMU_RX_ENDPOINT    6
#define SEREMU_RX_SIZE        32
#define SEREMU_RX_INTERVAL    2
 
Last edited:
Status
Not open for further replies.
Back
Top