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

Thread: USING SEVERAL MDI/USB audio peripherals : TEENSY 3.1 takes all the bandwidth

  1. #1
    Member
    Join Date
    Feb 2015
    Location
    Rians in Provence, France
    Posts
    53

    USING SEVERAL MDI/USB audio peripherals : TEENSY 3.1 takes all the bandwidth

    Hi all !

    I'm using 2 MIDI/USB peripherals connected to 2 USB ports directly on the motherboard :
    TEENSY 3.1 (used as as an expression pedal), and a separate MIDI->USB interface.
    When I connect first the MIDI->USB interface, then after the TEENSY, all is OK.
    But when I re-boot the system, (OpenSuse 13.1), TEENSY only is recognized by the system.
    Similar problem occurs under WINDOWS XP SP3.
    Hardware : Mini-Itx board, 4GO Ram, Intel D525MW.
    It seems that TEENSY takes all the USB bandwidth, and the other USB peripheral is forgotten ?

    Thanks for your help !

    Pascal Leray

  2. #2
    Senior Member PaulStoffregen's Avatar
    Join Date
    Nov 2012
    Posts
    19,707
    USB always reserves some bandwidth for control transfers, which are used to detect and enumerate new devices. It's impossible for any USB device to consume all the bandwidth in any way that could prevent the host controller from detecting new devices.

    That doesn't necessarily mean some other type of problem is happening, but you can rest assured it isn't excessive bandwidth. USB is fundamentally designed for the host controller chip to manage all bandwidth, so no device can ever prevent the USB system from working by trying to communicate too much.

  3. #3
    Member
    Join Date
    Feb 2015
    Location
    Rians in Provence, France
    Posts
    53

    TEENSY large bandwidth is OK but other MIDI peripherals are not recognized.

    Quote Originally Posted by PaulStoffregen View Post
    USB always reserves some bandwidth for control transfers, which are used to detect and enumerate new devices. It's impossible for any USB device to consume all the bandwidth in any way that could prevent the host controller from detecting new devices.

    That doesn't necessarily mean some other type of problem is happening, but you can rest assured it isn't excessive bandwidth. USB is fundamentally designed for the host controller chip to manage all bandwidth, so no device can ever prevent the USB system from working by trying to communicate too much.
    The probleme is not the TEENSY bandwidth, (I highly appreciate the TEENSY speed with USB) but only the fact that the other MIDI Peripheral is ignored by the system.
    Thanks a lot for your reply. i'm planning to purchase lots of TEENSY 3.1 !
    By the way, maybe could you be interested by my R&D :
    http://pascal.leray.free.fr/web_org/org_en.html
    Kind regards,

    Pascal

  4. #4
    Member
    Join Date
    Feb 2015
    Location
    Rians in Provence, France
    Posts
    53

    TEENSY DEVICE NAME detection under WIN XP ? GetRawInoutDevceList missing under VISUAL

    Hi all,

    Teensy Device name detection is running fine under WINDOWS 10 but not under XP and VISUAL C++6
    it always replies : Périphérique Audio USB
    in the device name provided by :
    lpmidiincaps[midi_canalin].szPname

    I tried to use the
    GetRawInoutDevceList() function, but this function is missing in the include MSVC .h files.
    I am sure it's possible to read the device name under XP. Because some software such as
    USBDeview can do it under XP. What function does it uses ?
    It's very important when one use several Teensy simultaneously.

    Thanks for your help !

    Pascal Leray

  5. #5
    Senior Member+ Theremingenieur's Avatar
    Join Date
    Feb 2014
    Location
    Colmar, France
    Posts
    2,321
    Get rid of XP! Microsoft stopped supporting it many years ago and people using it still nowadays put themselves and others to risk because of the many not patched security problems.

  6. #6
    Senior Member oddson's Avatar
    Join Date
    Feb 2013
    Location
    Isle in the Salish Sea
    Posts
    1,060
    It is possible you are 'flooding' your usb channel with garbage midi from your foot controller. Many naive coltrollers have no smoothing (filtering, hysteresis, ...) and so pump nearly identical CC messages as fast as Teensy can run... which is very fast.

  7. #7
    Senior Member oddson's Avatar
    Join Date
    Feb 2013
    Location
    Isle in the Salish Sea
    Posts
    1,060
    Quote Originally Posted by oddson View Post
    It is possible you are 'flooding' your usb channel with garbage midi from your foot controller. Many naive coltrollers have no smoothing (filtering, hysteresis, ...) and so pump nearly identical CC messages as fast as Teensy can run... which is very fast.
    Nevermind this nonsense. ..

    Sounds like usb ID issue.

  8. #8
    Senior Member PaulStoffregen's Avatar
    Join Date
    Nov 2012
    Posts
    19,707
    Quote Originally Posted by LERAY View Post
    I tried to use the
    GetRawInoutDevceList() function, but this function is missing in the include MSVC .h files.
    I am sure it's possible to read the device name under XP. Because some software such as
    USBDeview can do it under XP. What function does it uses ?
    Maybe SetupDiEnumDeviceInterfaces & SetupDiGetInterfaceDeviceDetail & SetupDiGetDeviceRegistryProperty?

    Just a blind guess, since I don't have the USBDeview source code, nor have I ever even used that program. In fact, I pretty much never use Windows at all, other than to test code I wrote for it... by cross compiling from Linux! I don't actually use Windows to program for Windows.

  9. #9
    Senior Member PaulStoffregen's Avatar
    Join Date
    Nov 2012
    Posts
    19,707
    But I can tell you those SetupDiBlahBlahBlah functions work on all versions of Windows, at least as far back as Windows 2000.

    They're also very difficult to use and the finer details can vary quite a bit between modern versions of Windows and old stuff like XP, so the result is pretty much always messy code. But if you *really* want to write code that works all the way back to XP (as teensy_ports & teensy_serialmon hopefully do), you're probably stuck with having to figure out those horrible Setup API functions. Vista and Windows 8 brought a lot of new & much nicer stuff (like finally a high res time function in version 8 - something Mac & Linux had ages ago), but of course if you use it you're not compatible with older Windows. I'm pretty sure Microsoft is happy with that.

Posting Permissions

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