Forum Rule: Always post complete source code & details to reproduce any issue!
Page 5 of 6 FirstFirst ... 3 4 5 6 LastLast
Results 101 to 125 of 130

Thread: Teensy 3.6 USB Host support

  1. #101
    Member
    Join Date
    Feb 2015
    Location
    Rians in Provence, France
    Posts
    81
    Thanks !
    I hope the I/O will be contiguous in the 4.1 !
    What kind of touchscreens did you tried ?

  2. #102
    Senior Member+ KurtE's Avatar
    Join Date
    Jan 2014
    Posts
    7,681
    I am still wondering the first part is still something simple, like the USB connectors are not making good contact. I have had that in the past with some of the USB (5 pin PC USB expansion connectors). Where it works well on some USB devices but on others I would have issues. Sometimes it helped when I swapped USB cables. Often times it worked better with boards I have where I have USB connections directly on the board. Again sometimes helps when I put a Hub between them...

    Again in all cases like this it might help if you showed a picture of your USB setup, in case something obvious can be spotted. Are you using something like:
    Click image for larger version. 

Name:	cable_usb_host_t36_2.jpg 
Views:	12 
Size:	30.6 KB 
ID:	19786

    So when I get nothing from plugging in a USB device. I usually start to do some simple debugging, like rework my USB connection. Things like touch up the soldering of the USB connector on the T3.6. Also check for any solder bridges. Make sure the connections are tight to the pins if you are using one of those

    Might check if there are wear spots and/or tarnish on some of the connector pads and sometimes helps to do something to clean them. Likewise I have had some luck at times trying different cable to plug into them.

    @Paul - With these 5 pin connectors, are there any devices that somehow do something different between the GND pin and the Shield? Like does anyone do something like have an IO pin connected to shield, maybe weak PU resistor to detect when it is connected up to USB? Again wondering different ways these touchscreens are detected versus other devices.

    Again I don't have any of these touch screens, so as mentioned earlier can not give any additional suggestions.

  3. #103
    Member
    Join Date
    Feb 2015
    Location
    Rians in Provence, France
    Posts
    81
    I have only 4 wires on the USB cable, the mass is connected to the 4th pin of the 3.6
    As Pins 4 and 5 are connected on th TEENSY 3.6.
    Here is my connector :

    Click image for larger version. 

Name:	USB_HOST.jpg 
Views:	14 
Size:	58.5 KB 
ID:	19787

  4. #104
    Senior Member+ KurtE's Avatar
    Join Date
    Jan 2014
    Posts
    7,681
    Sorry, maybe Paul has better idea of how that Wire/connector works. That is how does this connect up to the device? Does the Host side of an extension cable some how plug into the crate looking end? If so I assume that it is not making any connection up to the shield of it? Does it make a difference if you somehow connect up a ground wire up to the shield of that connector?

    Again don't know how that one works.

  5. #105
    Member
    Join Date
    Feb 2015
    Location
    Rians in Provence, France
    Posts
    81
    I can't use USB mouse, as I need USB midi simultaneously. (option not available) What can I do ?

  6. #106
    Senior Member+ KurtE's Avatar
    Join Date
    Jan 2014
    Posts
    7,681
    Are you talking USB Host or are you talking the USB Type that the PC sees the Teensy as?

    If the later probably wrong thread....
    But to do the USB type ... I am not sure if T3.6 still? If the USB type of "All of the above" contains both of them.
    Typically in cases like this, you would need to Make a version of the core, that added in the type combination you need and setup your own USB descriptors and the like. Personally I have not done it, but there are several threads up of people who have done that.

    If USB host... Then you can simply add all of the needed objects. Like look at a MIDI example and a Mouse example and add parts of one to the other. But again warning, I have not done anything with MIDI

    ...

  7. #107
    Member
    Join Date
    Feb 2015
    Location
    Rians in Provence, France
    Posts
    81
    Yes thanks. I'm always trying to get X Y coordinates from a USB MultiTouchscreen.
    I'm using ARDUINO 1.8.5 and TEENSYDUINO 1.52.
    Could a more recent release solve the USB Host Multi Touchscreen problem ?
    Problem which is not solved at present.
    Thanks for your help !

  8. #108
    Senior Member+ KurtE's Avatar
    Join Date
    Jan 2014
    Posts
    7,681
    Not sure... I don't know of any work that has been done on any of that stuff in a long while... But probably does not hurt to try!

  9. #109
    Member
    Join Date
    Feb 2015
    Location
    Rians in Provence, France
    Posts
    81
    No difference with TEENSYDUINO 1.53

  10. #110
    Member
    Join Date
    Feb 2015
    Location
    Rians in Provence, France
    Posts
    81
    Even with the"All of the above" option.

  11. #111
    Senior Member PaulStoffregen's Avatar
    Join Date
    Nov 2012
    Posts
    22,757
    The Tools > USB Type menu configures the USB device mode used on the main USB port. It has absolutely no effect on the USB Host port.

  12. #112
    Member
    Join Date
    Feb 2015
    Location
    Rians in Provence, France
    Posts
    81
    Thanks, but the Host Port is not responding from a USB Touchscreen. Even with TEENSYdUINO 1.53

  13. #113
    Senior Member+ KurtE's Avatar
    Join Date
    Jan 2014
    Posts
    7,681
    Sorry, as I tried to imply a few messages ago, I really don't know what you are doing or what your setup is...
    Where does MIDI and Mouse come in here?

    From sounds of it, you are plugging in an USB MultiTouchscreen into the USB Host connector of the T3.6?

    Which one? ASUS VT207? My guess is we have no support for it.

    It might help if you did some leg work and get some information about this, and then maybe we could try adding support.

    Things like go into USBHost_t36 and turn on debug output:

    Look at about line 58 for a line like: #define USBHOST_PRINT_DEBUG

    And uncomment it and run one of our test programs, like the mouse one and see what prints out.

    Maybe plug into Linux Host and print out debug information about it. Things like lsusb, lsusb -v on the device...
    Maybe print out debug information (dmesg) about when it was installed.

    Maybe use the HID tools to print out information about it (assuming it is HID) This has been shown in a few threads including: https://forum.pjrc.com/threads/45740...l=1#post155869

    I probably won't order one of these (I think they are no longer sold) and don't need one...

  14. #114
    Senior Member PaulStoffregen's Avatar
    Join Date
    Nov 2012
    Posts
    22,757
    Quote Originally Posted by LERAY View Post
    but the Host Port is not responding from a USB Touchscreen. Even with TEENSYdUINO 1.53
    USBHost_t36 does not yet support most touchscreens. Only ordinary USB mice, keyboards, joysticks / gamepads, and certain digitizers are supported. Generic HID parsing is in the library, so the hard work of supporting more HID devices is done, but so far there simply hasn't been much work to support touchscreens.

  15. #115
    Member
    Join Date
    Feb 2015
    Location
    Rians in Provence, France
    Posts
    81
    I'm using this program for testing. Running fine with a Buydisplay 10,1", but never running on an ASUS VT207 or a LG FLATRON 17MB. (But these screens which have a classic USB outputs are running on any PC under XP,7, 8 or 10).
    Very strange that TEENSY USB HOST don't run with so classic USB Screens outputs.
    If USBHost was working, I could replace PC by TEENSY in all my industrial R&D developments.
    Many other TEENSY users could greatly benefit of such USB Host functionnality, and replace PC by TEENSY on many industrial applications !
    Thanks a lot for your help !

    Here is the test program : (TEENSY 3.6 option USB Type : SERIAL)

    Code:
    //Simple test of USB Host Mouse/Keyboard
    //HARDWARE : TEENSY 3.6
    //RUNS WITH 10' BUYDISPLAY 
    //DON'T RUN WITH FLATRON T1710
    //NOR ON THE LG FLATRON 17MB
    //
    #include "USBHost_t36.h"
    
    USBHost myusb;
    USBHub hub1(myusb);
    USBHub hub2(myusb);
    KeyboardController keyboard1(myusb);
    KeyboardController keyboard2(myusb);
    USBHIDParser hid1(myusb);
    USBHIDParser hid2(myusb);
    USBHIDParser hid3(myusb);
    USBHIDParser hid4(myusb);
    USBHIDParser hid5(myusb);
    MouseController mouse1(myusb);
    JoystickController joystick1(myusb);
    int user_axis[64];
    uint32_t buttons_prev = 0;
    RawHIDController rawhid1(myusb);
    RawHIDController rawhid2(myusb, 0xffc90004);
    
    USBDriver *drivers[] = {&hub1, &hub2,&keyboard1, &keyboard2, &joystick1, &hid1, &hid2, &hid3, &hid4, &hid5};
    #define CNT_DEVICES (sizeof(drivers)/sizeof(drivers[0]))
    const char * driver_names[CNT_DEVICES] = {"Hub1","Hub2", "KB1", "KB2", "JOY1D", "HID1", "HID2", "HID3", "HID4", "HID5"};
    bool driver_active[CNT_DEVICES] = {false, false, false, false};
    
    // Lets also look at HID Input devices
    USBHIDInput *hiddrivers[] = {&mouse1, &joystick1, &rawhid1, &rawhid2};
    #define CNT_HIDDEVICES (sizeof(hiddrivers)/sizeof(hiddrivers[0]))
    const char * hid_driver_names[CNT_DEVICES] = {"Mouse1","Joystick1", "RawHid1", "RawHid2"};
    bool hid_driver_active[CNT_DEVICES] = {false, false};
    bool show_changed_only = false; 
    
    uint8_t joystick_left_trigger_value = 0;
    uint8_t joystick_right_trigger_value = 0;
    uint64_t joystick_full_notify_mask = (uint64_t)-1;
    const int ledPin = 13;
    void setup()
    {
    //  while (!Serial) ; // wait for Arduino Serial Monitor
      Serial.println("\n\nUSB Host Testing");
      Serial.println(sizeof(USBHub), DEC);
      myusb.begin();
      
      pinMode(ledPin,OUTPUT); //SUR C
      digitalWrite(ledPin, HIGH);
      delay(500);
      digitalWrite(ledPin,LOW);
    }
    
    void loop()
    {
      myusb.Task();
    
      if(mouse1.available()) 
      {
        digitalWrite(ledPin,HIGH);
        delay(10);
        digitalWrite(ledPin,LOW);
        Serial.print("Mouse: buttons = ");
        Serial.print(mouse1.getButtons());
        Serial.print(",  mouseX = ");
        Serial.print(mouse1.getMouseX());
        Serial.print(",  mouseY = ");
        Serial.print(mouse1.getMouseY());
        Serial.print(",  wheel = ");
        Serial.print(mouse1.getWheel());
        Serial.print(",  wheelH = ");
        Serial.print(mouse1.getWheelH());
        Serial.println();
        mouse1.mouseDataClear();
      }
    }
    Last edited by KurtE; 09-15-2020 at 12:16 PM. Reason: code tag

  16. #116
    Senior Member+ mjs513's Avatar
    Join Date
    Jul 2014
    Location
    New York
    Posts
    5,630
    Out of curiosity what Buydisplay model are you using?

  17. #117
    Member
    Join Date
    Feb 2015
    Location
    Rians in Provence, France
    Posts
    81
    10,1" with HDMI VGA and USB ports.
    REF MarsBoard RK3066&PX2 A20

  18. #118

  19. #119
    Senior Member+ KurtE's Avatar
    Join Date
    Jan 2014
    Posts
    7,681
    Quote Originally Posted by LERAY View Post
    I'm using this program for testing. Running fine with a Buydisplay 10,1", but never running on an ASUS VT207 or a LG FLATRON 17MB. (But these screens which have a classic USB outputs are running on any PC under XP,7, 8 or 10).
    Very strange that TEENSY USB HOST don't run with so classic USB Screens outputs.
    If USBHost was working, I could replace PC by TEENSY in all my industrial R&D developments.
    Many other TEENSY users could greatly benefit of such USB Host functionnality, and replace PC by TEENSY on many industrial applications !
    Thanks a lot for your help !
    There are lots of devices out there that we do not have support yet for. All of the ones that we have gotten to work is due to either a few us spending our own time
    and and ... In most cases to acquire a device and in other cases were able to collect enough information to take guesses and work with someone who has the device to see if we can get it to work.

    So again without such device the only way to have a chance to get these to work is to try to gather enough information to do some trial and errors to see if can get it to at least limp along. Like the data I mentioned needing in message #113

  20. #120
    Senior Member xxxajk's Avatar
    Join Date
    Nov 2013
    Location
    Buffalo, NY USA
    Posts
    545
    Ahhh... and this is why I made HID device in UHS3 agnostic as to what exactly is attached.
    Note that recent Teensyduino broke UHS3... not sure why exactly yet, but I have been working on finding out why.
    *should* still be OK on EHCI though.

    Whole device drivers are a bad idea, best to do interface classes that handle the entire class, then you extend them as needed.

  21. #121
    Member
    Join Date
    Feb 2015
    Location
    Rians in Provence, France
    Posts
    81
    Fortunetely, of course, I'm using this excellent screen for other uses, with PC's ! I'm waiting for the time when I could replace the PC by TEENSY with GUI interfaces, provided that the USBHost port will run correctly one day... Hoping that one day TEENSY's Father includes an HDMI shield ! (or a chip for example Techtoys or Broadcom for the PI including Graphics 2D and 3D capabilities). After all, it's possible with roughly the same PCB format as TEENSY...

  22. #122
    Senior Member xxxajk's Avatar
    Join Date
    Nov 2013
    Location
    Buffalo, NY USA
    Posts
    545
    If you are brave enough, you could see what UHS3.0 does when it sees it connect. --- just don't use a hub, that's broken right now.
    You may find that it contains several interfaces, one of which could possibly be a mouse interface.
    Even if it doesn't, if it claims to be HID class, there's a callback.
    You simply extend the class to do what you are expecting.
    See the Keyboard and mouse examples in the repository.
    All HID on UHS3 is treated as HID RAW, and you extend the HID class to mouse/keyboard/whatever in the sketch.
    It is very flexible this way.
    https://github.com/felis/UHS30 if you want to give it a whirl.

  23. #123
    Senior Member+ KurtE's Avatar
    Join Date
    Jan 2014
    Posts
    7,681
    @xxxajk and @LERAY - We do have an interface class for HID which our other classes that have HID data are sub-classes of...

    And yes you can create your own class to handle... Some of these class may bypass the HID processing in some cases. Specifically if the device is a standard BOOT format device like most keyboards, then there are standard formats... So keyboards not so much, like the Kinesis I am typing on now... Which supports more keys being pressed at same time.... Some of these devices can be made to easily work, by sending a request to be go to boot mode...

    But in all cases like this, it is hard to get something like this to work with only the information that it does not work

    But maybe we should create another example sketch with it's own debug HID debug, which simply prints out which HID reports there are and claims each one and then prints out all of the data that it sees...

    ...

  24. #124
    Senior Member+ KurtE's Avatar
    Join Date
    Jan 2014
    Posts
    7,681
    To try to get some additional information, I hacked up a real simple HID client subclass that dumps out data as it runs.

    It simply prints out the data that the HID parser class is sending to it, sort of in a structured way. Might help to run it on something like your touch screen. Note with many devices you may not see much data unless you are interacting with it...

    You can entering "R" or r in the terminal monitor to toggle on/off RAW data output. Any other characters toggles on/ff the structured data output

    You might try it on touch screen to see what data we receive...

    Edit sample output from Wacom tablet run on my MAC without my debug version of library:
    Code:
    USB Host Testing
    960
    
    *** You can user Serial to change what is output ***
    R - Turns on or off showing the raw data
    Anything else toggles showing the Hid formatted breakdown of the data
    *** Device HID1 56a:d8 - connected ***
      manufacturer: Wacom Co.,Ltd.
      product: CTH-661
    *** Device HID2 56a:d8 - connected ***
      manufacturer: Wacom Co.,Ltd.
      product: CTH-661
    HIDDumpController Claim: 56a:d8 usage: 10002
    HIDDumpController Claim: 56a:d8 usage: d0001
    HIDDumpController Claim: 56a:d8 usage: d0001
    *** HID Device hdc1 56a:d8 - connected ***
      manufacturer: Wacom Co.,Ltd.
      product: CTH-661
    *** HID Device hdc2 56a:d8 - connected ***
      manufacturer: Wacom Co.,Ltd.
      product: CTH-661
    HIDDumpController Claim: 56a:d8 usage: ff000001
    HIDDumpController Claim: 56a:d8 usage: ff000001
    HIDDumpController Claim: 56a:d8 usage: ff000001
    *** HID Device hdc3 56a:d8 - connected ***
      manufacturer: Wacom Co.,Ltd.
      product: CTH-661
    *** HID Device hdc1 - disconnected ***
    *** HID Device hdc2 - disconnected ***
    *** HID Device hdc3 - disconnected ***
    *** Device HID1 - disconnected ***
    *** Device HID2 - disconnected ***
    *** Device HID1 56a:d8 - connected ***
      manufacturer: Wacom Co.,Ltd.
      product: CTH-661
    *** Device HID2 56a:d8 - connected ***
      manufacturer: Wacom Co.,Ltd.
      product: CTH-661
    HIDDumpController Claim: 56a:d8 usage: 10002
    HIDDumpController Claim: 56a:d8 usage: d0001
    HIDDumpController Claim: 56a:d8 usage: d0001
    *** HID Device hdc1 56a:d8 - connected ***
      manufacturer: Wacom Co.,Ltd.
      product: CTH-661
    *** HID Device hdc2 56a:d8 - connected ***
      manufacturer: Wacom Co.,Ltd.
      product: CTH-661
    HIDDumpController Claim: 56a:d8 usage: ff000001
    HIDDumpController Claim: 56a:d8 usage: ff000001
    HIDDumpController Claim: 56a:d8 usage: ff000001
    *** HID Device hdc3 56a:d8 - connected ***
      manufacturer: Wacom Co.,Ltd.
      product: CTH-661
    HID(10002): 01 00 00 00 00 00 00 00 00 
    Begin topusage:10000 type:2 min:0 max:1
      usage=90001, value=0
      usage=90002, value=0
      usage=90003, value=0
      usage=90004, value=0
      usage=90005, value=0
      Begin topusage:10000 type:6 min:-127 max:127
        usage=10030, value=0
        usage=10031, value=0
      END:
    END:
    HID(10002): 01 00 00 00 00 00 00 00 00 
    Begin topusage:10000 type:2 min:0 max:1
      usage=90001, value=0
      usage=90002, value=0
      usage=90003, value=0
      usage=90004, value=0
      usage=90005, value=0
      Begin topusage:10000 type:6 min:-127 max:127
        usage=10030, value=0
        usage=10031, value=0
      END:
    END:
    HID(10002): 01 00 00 00 00 00 00 00 00 
    Begin topusage:10000 type:2 min:0 max:1
      usage=90001, value=0
      usage=90002, value=0
      usage=90003, value=0
      usage=90004, value=0
      usage=90005, value=0
      Begin topusage:10000 type:6 min:-127 max:127
        usage=10030, value=0
        usage=10031, value=0
      END:
    END:
    HID(10002): 01 00 00 00 00 00 00 00 00 
    Begin topusage:10000 type:2 min:0 max:1
      usage=90001, value=0
      usage=90002, value=0
      usage=90003, value=0
      usage=90004, value=0
      usage=90005, value=0
      Begin topusage:10000 type:6 min:-127 max:127
        usage=10030, value=0
        usage=10031, value=0
      END:
    END:
    Simple output when turning off the structured data:
    Code:
    *** Turn off formatted output formated HID data is on ***
    
    HID(10002): 01 00 00 00 00 00 00 00 00 
    HID(10002): 01 00 00 FC 00 00 00 00 00 
    HID(10002): 01 00 00 FA 00 00 00 00 00 
    HID(10002): 01 00 00 00 00 00 00 00 00 
    HID(10002): 01 00 04 00 00 00 00 00 00 
    HID(10002): 01 00 03 FC 00 00 00 00 00 
    HID(10002): 01 00 04 00 00 00 00 00 00 
    HID(10002): 01 00 05 FD 00 00 00 00 00 
    HID(10002): 01 00 06 00 00 00 00 00 00 
    HID(10002): 01 00 05 FA 00 00 00 00 00 
    HID(10002): 01 00 06 FB 00 00 00 00 00 
    HID(10002): 01 00 08 FC 00 00 00 00 00 
    HID(10002): 01 00 05 00 00 00 00 00 00 
    HID(10002): 01 00 00 00 00 00 00 00 00 
    HID(10002): 01 00 00 00 00 00 00 00 00 
    HID(10002): 01 00 03 FD 00 00 00 00 00
    Attached Files Attached Files

  25. #125
    Senior Member+ mjs513's Avatar
    Join Date
    Jul 2014
    Location
    New York
    Posts
    5,630
    Gave it a try with my 3d Connection Mouse attached.

    On startup it shows all the basic connection info:
    Code:
    USB Host Testing
    
    960
    
    USB2 PLL running
    
     reset waited 6
    
    USBHS_ASYNCLISTADDR = 0
    
    USBHS_PERIODICLISTBASE = 20007000
    
    periodictable = 20007000
    
    
    *** You can user Serial to change what is output ***
    
    R - Turns on or off showing the raw data
    
    Anything else toggles showing the Hid formatted breakdown of the data
    
    port change: 14001403
    
        connect
    
      begin reset
    
    port change: 14001405
    
      port enabled
    
      end recovery
    
    new_Device: 1.5 Mbit/sec
    
    new_Pipe
    
    enumeration:
    
    enumeration:
    
    enumeration:
    
    Device Descriptor:
    
      12 01 00 02 00 00 00 08 6D 04 28 C6 35 04 01 02 00 01 
    
        VendorID = 046D, ProductID = C628, Version = 0435
    
        Class/Subclass/Protocol = 0 / 0 / 0
    
        Number of Configurations = 1
    
    enumeration:
    
    enumeration:
    
    Manufacturer: 3Dconnexion
    
    enumeration:
    
    Product: SpaceNavigator for Notebooks
    
    enumeration:
    
    Config data length = 41
    
    enumeration:
    
    Configuration Descriptor:
    
      09 02 29 00 01 01 00 80 32 
    
        NumInterfaces = 1
    
        ConfigurationValue = 1
    
      09 04 00 00 02 03 00 00 00 
    
        Interface = 0
    
        Number of endpoints = 2
    
        Class/Subclass/Protocol = 3(HID) / 0 / 0
    
      09 21 11 01 00 01 22 D9 00 
    
        HID, 1 report descriptor
    
      07 05 81 03 08 00 0A 
    
        Endpoint = 1 IN
    
        Type = Interrupt
    
        Max Size = 8
    
        Polling Interval = 10
    
      07 05 02 03 08 00 0A 
    
        Endpoint = 2 OUT
    
        Type = Interrupt
    
        Max Size = 8
    
        Polling Interval = 10
    
    enumeration:
    
    USBHub memory usage = 960
    
    USBHub claim_device this=200025E0
    
    USBHub memory usage = 960
    
    USBHub claim_device this=200029A0
    
    HIDParser claim this=20005080
    
    HIDParser claim this=200056A0
    
    HIDParser claim this=20005CC0
    
    HIDParser claim this=200031C0
    
    HIDParser claim this=200037E0
    
    HIDParser claim this=20003E00
    
    HIDParser claim this=20004420
    
    HIDParser claim this=20004A40
    
    Descriptor 4 = INTERFACE
    
    HIDParser claim this=20005080
    
     bInterfaceClass =    3
    
     bInterfaceSubClass = 0
    
     bInterfaceProtocol = 0
    
    HID Parser Claim: 09 04 00 00 02 03 00 00 00 09 21 11 01 00 01 22 D9 00 07 05 81 03 08 00 0A 07 05 02 03 08 00 0A 
    
    report descriptor size = 217
    
    Two endpoint HID:
    
      endpoint = 81
    
       size = 8
    
       interval = 10
    
      endpoint = 2
    
       size = 8
    
       interval = 10
    
    new_Pipe
    
    allocate_interrupt_pipe_bandwidth
    
     best_bandwidth = 3, at offset = 0, shift= 0
    
    new_Pipe
    
    allocate_interrupt_pipe_bandwidth
    
     best_bandwidth = 4, at offset = 1, shift= 0
    
    Descriptor 33 = HID
    
    Descriptor 5 = ENDPOINT
    
    Descriptor 5 = ENDPOINT
    
    *** Device HID1 46d:c628 - connected ***
      manufacturer: 3Dconnexion
      product: SpaceNavigator for Notebooks
    control callback (hid)
    
    05 01 09 08 A1 01 A1 00 85 01 16 A2 FE 26 5E 01 36 88 FA 46 78 05 55 0C 65 11 09 30 09 31 09 32 75 10 95 03 81 06 C0 A1 00 85 02 09 33 09 34 09 35 75 10 95 03 81 06 C0 A1 02 85 03 05 01 05 09 19 01 29 02 15 00 25 01 35 00 45 01 75 01 95 02 81 02 95 0E 81 03 C0 A1 02 85 04 05 08 09 4B 15 00 25 01 95 01 75 01 91 02 95 01 75 07 91 03 C0 06 00 FF 09 01 A1 02 15 80 25 7F 75 08 09 3A A1 02 85 05 09 20 95 01 B1 02 C0 A1 02 85 06 09 21 95 01 B1 02 C0 A1 02 85 07 09 22 95 01 B1 02 C0 A1 02 85 08 09 23 95 07 B1 02 C0 A1 02 85 09 09 24 95 07 B1 02 C0 A1 02 85 0A 09 25 95 07 B1 02 C0 A1 02 85 0B 09 26 95 01 B1 02 C0 A1 02 85 13 09 2E 95 01 B1 02 C0 C0 C0 
    
      mesg = 22000681
    
      got report descriptor
    
    Found top level collection 10008
    
    find_driver
    
      driver 20002E00
    
    HIDDumpController Claim: 46d:c628 usage: 10008
    *** HID Device hdc1 46d:c628 - connected ***
      manufacturer: 3Dconnexion
      product: SpaceNavigator for Notebooks
    those extra returns are still driving me nuts with Serial.println's

    When you move the mouse:
    Code:
    HID: 1 - 01 00 00 00 00 00 00 00 
    
    HID(10008): 01 00 00 00 00 00 00 00 
    
    begin, usage=10000
    
           type= 6
    
           min=  -350
    
           max=  350
    
           reportcount=3
    
           usage count=3
    
    Begin topusage:10000 type:6 min:-350 max:350
    Input, total bits=48
    
      usage = 10030  sdata = 0
    
      usage=10030, value=0
    
      usage = 10031  sdata = 0
    
      usage=10031, value=0
    
      usage = 10032  sdata = 0
    
      usage=10032, value=0
    
    END:
    
    HID: 1 - 02 00 00 02 00 00 00 00 
    
    HID(10008): 02 00 00 02 00 00 00 00 
    
    begin, usage=10000
    
           type= 6
    
           min=  -350
    
           max=  350
    
           reportcount=3
    
           usage count=3
    
    Begin topusage:10000 type:6 min:-350 max:350
    Input, total bits=48
    
      usage = 10033  sdata = 0
    
      usage=10033, value=0
    
      usage = 10034  sdata = 2
    
      usage=10034, value=2
    
      usage = 10035  sdata = 0
    
      usage=10035, value=0
    
    END:
    and shows all the basic raw data that you can use to develop your driver.

    Interesting thing is if you connect a wired keyboard you only see the basic info for the device:
    Code:
    port change: 14001403
    
        connect
    
      begin reset
    
    port change: 14001005
    
      port enabled
    
      end recovery
    
    new_Device: 1.5 Mbit/sec
    
    new_Pipe
    
    enumeration:
    
    enumeration:
    
    enumeration:
    
    Device Descriptor:
    
      12 01 10 01 00 00 00 08 8A 25 01 00 08 11 01 02 00 01 
    
        VendorID = 258A, ProductID = 0001, Version = 1108
    
        Class/Subclass/Protocol = 0 / 0 / 0
    
        Number of Configurations = 1
    
    enumeration:
    
    enumeration:
    
    Manufacturer: SINO WEALTH
    
    enumeration:
    
    Product: USB KEYBOARD
    
    enumeration:
    
    Config data length = 59
    
    enumeration:
    
    Configuration Descriptor:
    
      09 02 3B 00 02 01 00 A0 32 
    
        NumInterfaces = 2
    
        ConfigurationValue = 1
    
      09 04 00 00 01 03 01 01 00 
    
        Interface = 0
    
        Number of endpoints = 1
    
        Class/Subclass/Protocol = 3(HID) / 1(Boot) / 1(Keyboard)
    
      09 21 10 01 00 01 22 41 00 
    
        HID, 1 report descriptor
    
      07 05 81 03 08 00 0A 
    
        Endpoint = 1 IN
    
        Type = Interrupt
    
        Max Size = 8
    
        Polling Interval = 10
    
      09 04 01 00 01 03 00 00 00 
    
        Interface = 1
    
        Number of endpoints = 1
    
        Class/Subclass/Protocol = 3(HID) / 0 / 0
    
      09 21 10 01 00 01 22 9E 00 
    
        HID, 1 report descriptor
    
      07 05 82 03 08 00 0A 
    
        Endpoint = 2 IN
    
        Type = Interrupt
    
        Max Size = 8
    
        Polling Interval = 10
    
    enumeration:
    
    HIDParser claim this=20005080
    
    USBHub memory usage = 960
    
    USBHub claim_device this=200025E0
    
    USBHub memory usage = 960
    
    USBHub claim_device this=200029A0
    
    HIDParser claim this=200056A0
    
    HIDParser claim this=20005CC0
    
    HIDParser claim this=200031C0
    
    HIDParser claim this=200037E0
    
    HIDParser claim this=20003E00
    
    HIDParser claim this=20004420
    
    HIDParser claim this=20004A40
    
    Descriptor 4 = INTERFACE
    
    HIDParser claim this=20005080
    
     bInterfaceClass =    3
    
     bInterfaceSubClass = 1
    
     bInterfaceProtocol = 1
    
    HIDParser claim this=200056A0
    
     bInterfaceClass =    3
    
     bInterfaceSubClass = 1
    
     bInterfaceProtocol = 1
    
    HIDParser claim this=20005CC0
    
     bInterfaceClass =    3
    
     bInterfaceSubClass = 1
    
     bInterfaceProtocol = 1
    
    HIDParser claim this=200031C0
    
     bInterfaceClass =    3
    
     bInterfaceSubClass = 1
    
     bInterfaceProtocol = 1
    
    HIDParser claim this=200037E0
    
     bInterfaceClass =    3
    
     bInterfaceSubClass = 1
    
     bInterfaceProtocol = 1
    
    HIDParser claim this=20003E00
    
     bInterfaceClass =    3
    
     bInterfaceSubClass = 1
    
     bInterfaceProtocol = 1
    
    HIDParser claim this=20004420
    
     bInterfaceClass =    3
    
     bInterfaceSubClass = 1
    
     bInterfaceProtocol = 1
    
    HIDParser claim this=20004A40
    
     bInterfaceClass =    3
    
     bInterfaceSubClass = 1
    
     bInterfaceProtocol = 1
    
    Descriptor 33 = HID
    
    Descriptor 5 = ENDPOINT
    
    Descriptor 4 = INTERFACE
    
    HIDParser claim this=20005080
    
     bInterfaceClass =    3
    
     bInterfaceSubClass = 0
    
     bInterfaceProtocol = 0
    
    HID Parser Claim: 09 04 01 00 01 03 00 00 00 09 21 10 01 00 01 22 9E 00 07 05 82 03 08 00 0A 
    
    report descriptor size = 158
    
    Single endpoint HID:
    
      endpoint = 82
    
       size = 8
    
       interval = 10
    
    new_Pipe
    
    allocate_interrupt_pipe_bandwidth
    
     best_bandwidth = 3, at offset = 0, shift= 0
    
    Descriptor 33 = HID
    
    Descriptor 5 = ENDPOINT
    
    *** Device HID1 258a:1 - connected ***
      manufacturer: SINO WEALTH
      product: USB KEYBOARD
    control callback (hid)
    
    06 01 00 09 80 A1 01 85 02 25 01 15 00 75 01 0A 81 00 0A 82 00 0A 83 00 95 03 81 06 95 05 81 01 C0 06 0C 00 09 01 A1 01 85 03 25 01 15 00 75 01 0A B5 00 0A B6 00 0A B7 00 0A CD 00 0A E2 00 0A A2 00 0A E9 00 0A EA 00 95 08 81 02 0A 83 01 0A 94 01 0A 86 01 0A 88 01 0A 8A 01 0A 92 01 0A A8 02 0A 84 01 95 08 81 02 0A 21 02 0A 23 02 0A 24 02 0A 25 02 0A 26 02 0A 27 02 0A 2A 02 0A B1 02 95 08 81 02 C0 06 00 FF 09 01 A1 01 85 05 15 00 26 FF 00 19 01 29 02 75 08 95 05 B1 02 C0 
    
      mesg = 22000681
    
      got report descriptor
    
    Found top level collection 10080
    
    find_driver
    
      driver 20002E00
    
    HIDDumpController Claim: 258a:1 usage: 10080
    Found top level collection C0001
    
    find_driver
    
      driver 20002E00
    
    HIDDumpController Claim: 258a:1 usage: c0001
      driver 20002EA0
    
    HIDDumpController Claim: 258a:1 usage: c0001
    Found top level collection FF000001
    
    find_driver
    
      driver 20002E00
    
    HIDDumpController Claim: 258a:1 usage: ff000001
      driver 20002EA0
    
    HIDDumpController Claim: 258a:1 usage: ff000001
      driver 20002F40
    
    HIDDumpController Claim: 258a:1 usage: ff000001
    *** HID Device hdc1 258a:1 - connected ***
      manufacturer: SINO WEALTH
      product: USB KEYBOARD
    *** HID Device hdc2 258a:1 - connected ***
      manufacturer: SINO WEALTH
      product: USB KEYBOARD
    *** HID Device hdc3 258a:1 - connected ***
      manufacturer: SINO WEALTH
      product: USB KEYBOARD
    Bottom makes a great HID sniffer for debugging without having to edit the library. Love it.

Posting Permissions

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