Forum Rule: Always post complete source code & details to reproduce any issue!
Results 1 to 1 of 1

Thread: Problem with Teensy 3.2 Class Compliant MIDI +RawHID Device

  1. #1
    Senior Member
    Join Date
    Jun 2013

    Problem with Teensy 3.2 Class Compliant MIDI +RawHID Device


    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.


    Here's an exerpt from my usb_desc.h file:
    #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 by yeahtuna; 03-07-2017 at 02:04 PM.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts