Forum Rule: Always post complete source code & details to reproduce any issue!
Page 1 of 2 1 2 LastLast
Results 1 to 25 of 35

Thread: 3.6 USBHost_t36 USB Hub examples?

  1. #1
    Junior Member
    Join Date
    Sep 2016
    Posts
    13

    3.6 USBHost_t36 USB Hub examples?

    I am successfully using the USBHost_t36 on a 3.6 to have keyboard input.

    I want to add a hub, but I cannot seem to find any examples or documentation of the hub functionality of USBHost_t36.

    I tried simply

    Code:
    USBHost myusb;
    USBHub hub1(myusb);
    KeyboardController keyboard1(myusb);
    As show in the test.ino of the github, but the keyboard does not receive any events (it does when connected directly.) Any way to debug to dig further?

  2. #2
    Senior Member+ KurtE's Avatar
    Join Date
    Jan 2014
    Posts
    3,690
    The Hub more or less takes care of itself...

    About the only thing I have done in test apps with it is to see if it is in use or not...

    That is in your case you can do something like: if (hub1) {// A hub is in use... }

    You can try to ask it for any of the standard USB Driver values like the id of the vendor and product and the like string values (product, vendor, serial), but my guess is most of them do not support this...

    If you wish to see more debug information, you can update the main header file(USBHost_t36.h) for the library and UN-comment out the line: //#define USBHOST_PRINT_DEBUG
    And then rebuild. This shows a lot of debug information. Also in hub.cpp, not sure how many debug lines that have been commented out. I will sometimes un-comment some of these if I am trying to debug something in here. Likewise in enumeration.cpp and maybe a few others depending on what I am debugging.

    Edit: Forgot to mention, that I have one keyboard with built in HUB, which is (or at least was) working with the main test programs...
    Last edited by KurtE; 04-15-2018 at 03:50 PM.

  3. #3
    Senior Member PaulStoffregen's Avatar
    Join Date
    Nov 2012
    Posts
    18,655
    USBHost_t36 comes with 7 examples. All of them show using the hub object.

    There currently isn't any written documentation for this library, beyond the examples and comments in USBHost_t36.h.

    Your code doesn't actually need to do anything with the hub objects. You just put them in the program and they automatically manage your hubs... pretty much the same as hubs work with Mac, Windows and Linux. Well, except those systems dynamically load more instance of their driver. With USBHost_t36 you create all the possible driver instances and the devices get assigned to them. There's no dynamic memory allocation within USBHost_t36.

    If your hub has more than 4 ports, it's very likely a 2-tier network of 4 port hub chips. Some 7 port chips do exist but they're not very common. Almost all hubs use the 4 port chips. You'd need to have more than 1 hub object instance in your code to support that sort of hub. If you have a 10 port hub and only a single instance, 2 of the 10 ports should work. The other 8 which are actually 2 more 4-port hubs would not work until you add 2 more hub instances in your code.

    A bug in the library is also quite possible. It's been tested with about half a dozen hubs I have here, at least 2 different Multi-TT ones and several Single-TT types. Other people have used the library successfully with hubs too, but there still might be something really special that the code doesn't handle.

  4. #4
    Junior Member
    Join Date
    Sep 2016
    Posts
    13
    Thanks for the responses!
    I am just using the Test example (with the MIDI stuff commented out) with a keyboard plugged into a hub.

    Here's the output of the debug when I run it. (With the keyboard plugged in directly I see the key events, but not when it's through a hub.)

    The hub is just this: https://www.amazon.com/gp/product/B00FJG5T4W
    Code:
    USB Host Testing
    sizeof Device = 36
    sizeof Pipe = 96
    sizeof Transfer = 64
    power up USBHS PHY
    port change: 10001803
        connect
      begin reset
    port change: 18001205
      port enabled
      end recovery
    new_Device: 480 Mbit/sec
    new_Pipe
    enumeration:
    enumeration:
    enumeration:
    enumeration:
    Config data length = 41
    enumeration:
    bNumInterfaces = 1
    bConfigurationValue = 1
    enumeration:
    USBHub memory usage = 960
    USBHub claim_device this=1FFF22A0
      polling interval = 12
    7
    5
    81
    1
    bDeviceClass = 9
    bDeviceSubClass = 0
    bDeviceProtocol = 2
    USBHub control callback
    09 29 02 09 00 32 01 00 FF 00 00 00 00 00 00 00 
    Hub ports = 2
    USBHub control callback
    USBHub control callback
    power turned on to all ports
    device addr = 1
    new_Pipe
    allocate_interrupt_pipe_bandwidth
      ep interval = 12
      interval = 256
     best_bandwidth = 2, at offset = 0
    pipe cap1 = F0012101
    HUB Callback (member)
    status = 2
    getstatus, port = 1
    USBHub control callback
    01 01 01 00 
    New Port Status
      status=10101  port=1
      state=0
      Device is present: 
      Has Power
    USBHub control callback
    Port Status Cleared, port=1
    timer event (19999 us): Debounce Timer, this = 1FFF22A0, timer = 1FFF25B8
    ports in use bitmask = 2
    getstatus, port = 1
    USBHub control callback
    01 01 00 00 
    New Port Status
      status=101  port=1
      state=2
      Device is present: 
      Has Power
    timer event (19999 us): Debounce Timer, this = 1FFF22A0, timer = 1FFF25B8
    ports in use bitmask = 2
    getstatus, port = 1
    USBHub control callback
    01 01 00 00 
    New Port Status
      status=101  port=1
      state=3
      Device is present: 
      Has Power
    timer event (19999 us): Debounce Timer, this = 1FFF22A0, timer = 1FFF25B8
    ports in use bitmask = 2
    getstatus, port = 1
    USBHub control callback
    01 01 00 00 
    New Port Status
      status=101  port=1
      state=4
      Device is present: 
      Has Power
    timer event (19999 us): Debounce Timer, this = 1FFF22A0, timer = 1FFF25B8
    ports in use bitmask = 2
    getstatus, port = 1
    USBHub control callback
    01 01 00 00 
    New Port Status
      status=101  port=1
      state=5
      Device is present: 
      Has Power
    timer event (20000 us): Debounce Timer, this = 1FFF22A0, timer = 1FFF25B8
    ports in use bitmask = 2
    getstatus, port = 1
    USBHub control callback
    01 01 00 00 
    New Port Status
      status=101  port=1
      state=6
      Device is present: 
      Has Power
    sending reset
    send_setreset
    USBHub control callback
    unhandled setup, message = 40323
    timer event (20000 us): Debounce Timer, this = 1FFF22A0, timer = 1FFF25B8
    ports in use bitmask = 0
    HUB Callback (member)
    status = 2
    getstatus, port = 1
    USBHub control callback
    03 01 10 00 
    New Port Status
      status=100103  port=1
      state=7
      Device is present: 
      Enabled, speed = 12 Mbit/sec
      Has Power
    USBHub control callback
    unhandled setup, message = 140123
    timer event (25000 us): Hello, I'm resettimer, this = 1FFF22A0, timer = 1FFF25D4
    port_doing_reset = 1
    PORT_RECOVERY
    new_Device: 12 Mbit/sec
    new_Pipe
    enumeration:

  5. #5
    Senior Member+ KurtE's Avatar
    Join Date
    Jan 2014
    Posts
    3,690
    The 2 port hub looks sort of cute... So ordered a blue one that should arrive Tuesday, will try to see if I notice anything obvious when I can run it, versus some of the other hubs I have played with. Note: Paul has done almost all of the HUB stuff, I maybe located and fixed an issue or two, so will see. But I may end up using this with another board (UP) ..

    Also which keyboard are you using? does it have it's own USB hub on it? For the fun of it, you might add second hub object to see if it makes any difference. Probably not, unless you see USB ports on the edges of the keyboard (I have one like that, which we fixed)

  6. #6
    Senior Member PaulStoffregen's Avatar
    Join Date
    Nov 2012
    Posts
    18,655
    I also ordered one.

  7. #7
    Senior Member+ KurtE's Avatar
    Join Date
    Jan 2014
    Posts
    3,690
    Mine arrived yesterday, I started playing some.

    Looks like the enumeration code is not starting up the Keyboard from the hub:

    That is USBHost::enumeration is only called once when the keyboard is plugged in (dev->enum_state == 0)
    I have turned on debug, added a few more prints statements:
    Code:
    	while (1) {
    		println("  enum state:", dev->enum_state);
    		// Within this large switch/case, "break" means we've done
    		// some work, but more remains to be done in a different
    		// state.  Generally break is used after parsing received
    		// data, but what happens next could be different states.
    		// When completed, return is used.  Generally, return happens
    		// only after a new control transfer is queued, or when
    		// enumeration is complete and no more communication is needed.
    		switch (dev->enum_state) {
    		case 0: // read 8 bytes of device desc, set max packet, and send set address
    			pipe_set_maxlen(dev->control_pipe, enumbuf[7]);
    			mk_setup(enumsetup, 0, 5, assign_address(), 0, 0); // 5=SET_ADDRESS
    			print("  mk_setup ", enumsetup.word1, HEX);
    			println(" ", enumsetup.word2, HEX);
    			queue_Control_Transfer(dev, &enumsetup, NULL, NULL);
    			println("  enum after assign_address");
    			dev->enum_state = 1;
    			return;
    ...
    Code:
    status = 4
    getstatus, port = 2
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    03 03 10 00 
    New Port Status
      status=100303  port=2
      state=7
      Device is present: 
      Enabled, speed = 1.5 Mbit/sec
      Has Power
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    unhandled setup, message = 140123
    timer event (24999 us): Hello, I'm resettimer, this = 1FFF4220, timer = 1FFF4554
    port_doing_reset = 2
    PORT_RECOVERY
    new_Device: 1.5 Mbit/sec
    new_Pipe
    new_Control_Transfer
    setup address 1FFF53B0
    enumeration:
    12 01 10 01 00 00 00 08 
    Transfer @ 1FFF5540
       next:  1FFF46C0
       anext: 1
       token: 8000
       bufs:  0,1000,2000,3000,4000
      enum state:0
      mk_setup 20500 0
    new_Control_Transfer
    setup address 1FFF53B0
      enum after assign_address
    I have verified that most of the messages up to this point are the same as when I plug the keyboard into a 4 port hub, that works...
    I have plugged this new HUB into linux machine and it does appear to enumerate properly:
    Code:
    kurt@kurt-UP-CHT01:~$ lsusb
    Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
    Bus 001 Device 006: ID 0424:2530 Standard Microsystems Corp.
    Bus 001 Device 005: ID 0424:4603 Standard Microsystems Corp.
    Bus 001 Device 003: ID 0bda:8178 Realtek Semiconductor Corp. RTL8192CU 802.11n WLAN Adapter
    Bus 001 Device 004: ID 04ca:0027 Lite-On Technology Corp.
    Bus 001 Device 002: ID 0424:2512 Standard Microsystems Corp. USB 2.0 Hub
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    kurt@kurt-UP-CHT01:~$ lsusb -v -d  0424:2512
    
    Bus 001 Device 002: ID 0424:2512 Standard Microsystems Corp. USB 2.0 Hub
    Couldn't open device, some information will be missing
    Device Descriptor:
      bLength                18
      bDescriptorType         1
      bcdUSB               2.00
      bDeviceClass            9 Hub
      bDeviceSubClass         0 Unused
      bDeviceProtocol         2 TT per port
      bMaxPacketSize0        64
      idVendor           0x0424 Standard Microsystems Corp.
      idProduct          0x2512 USB 2.0 Hub
      bcdDevice            b.b3
      iManufacturer           0
      iProduct                0
      iSerial                 0
      bNumConfigurations      1
      Configuration Descriptor:
        bLength                 9
        bDescriptorType         2
        wTotalLength           41
        bNumInterfaces          1
        bConfigurationValue     1
        iConfiguration          0
        bmAttributes         0xe0
          Self Powered
          Remote Wakeup
        MaxPower                2mA
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        0
          bAlternateSetting       0
          bNumEndpoints           1
          bInterfaceClass         9 Hub
          bInterfaceSubClass      0 Unused
          bInterfaceProtocol      1 Single TT
          iInterface              0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x81  EP 1 IN
            bmAttributes            3
              Transfer Type            Interrupt
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0001  1x 1 bytes
            bInterval              12
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        0
          bAlternateSetting       1
          bNumEndpoints           1
          bInterfaceClass         9 Hub
          bInterfaceSubClass      0 Unused
          bInterfaceProtocol      2 TT per port
          iInterface              0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x81  EP 1 IN
            bmAttributes            3
              Transfer Type            Interrupt
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0001  1x 1 bytes
            bInterval              12
    kurt@kurt-UP-CHT01:~$
    Note: I did notice that the configuration data is bigger than on the other hubs...
    Config Data length = 41 on this new one on the 4 port one that works it is 25.
    The Linux data for the one that works:
    Code:
    kurt@kurt-UP-CHT01:~$ lsusb
    Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
    Bus 001 Device 006: ID 0424:2530 Standard Microsystems Corp.
    Bus 001 Device 005: ID 0424:4603 Standard Microsystems Corp.
    Bus 001 Device 003: ID 0bda:8178 Realtek Semiconductor Corp. RTL8192CU 802.11n WLAN Adapter
    Bus 001 Device 008: ID 04ca:0027 Lite-On Technology Corp.
    Bus 001 Device 007: ID 0409:0059 NEC Corp. HighSpeed Hub
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    kurt@kurt-UP-CHT01:~$ lsusb ^C
    kurt@kurt-UP-CHT01:~$ lsusb -v -d  0409:0059
    
    Bus 001 Device 007: ID 0409:0059 NEC Corp. HighSpeed Hub
    Couldn't open device, some information will be missing
    Device Descriptor:
      bLength                18
      bDescriptorType         1
      bcdUSB               2.00
      bDeviceClass            9 Hub
      bDeviceSubClass         0 Unused
      bDeviceProtocol         1 Single TT
      bMaxPacketSize0        64
      idVendor           0x0409 NEC Corp.
      idProduct          0x0059 HighSpeed Hub
      bcdDevice            1.00
      iManufacturer           0
      iProduct                0
      iSerial                 0
      bNumConfigurations      1
      Configuration Descriptor:
        bLength                 9
        bDescriptorType         2
        wTotalLength           25
        bNumInterfaces          1
        bConfigurationValue     1
        iConfiguration          0
        bmAttributes         0xe0
          Self Powered
          Remote Wakeup
        MaxPower              100mA
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        0
          bAlternateSetting       0
          bNumEndpoints           1
          bInterfaceClass         9 Hub
          bInterfaceSubClass      0 Unused
          bInterfaceProtocol      0 Full speed (or root) hub
          iInterface              0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x81  EP 1 IN
            bmAttributes            3
              Transfer Type            Interrupt
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0001  1x 1 bytes
            bInterval              12
    kurt@kurt-UP-CHT01:~$
    It is interesting the one that works only has One Interface Descriptor and the one that does not has two... Will compare

  8. #8
    Senior Member+ KurtE's Avatar
    Join Date
    Jan 2014
    Posts
    3,690
    Follow on: The "Cute" hub can be a multi TT (multiple transaction translator) That is what the two Inteface Descriptors show
    Single TT vs TT per Port...

    Wonder if we need to tell system to use Alternate setting 0...

  9. #9
    Senior Member+ KurtE's Avatar
    Join Date
    Jan 2014
    Posts
    3,690
    @Paul - One thing (of many) that somewhat confuses me with setting USB configuration SET_CONFIGURATION)
    case 13 in USBHost:enumeration (enumeration.cpp)

    Is if we look at the configuration of this new hub, it has two configurations:
    Code:
    Bus 001 Device 002: ID 0424:2512 Standard Microsystems Corp. USB 2.0 Hub
    Couldn't open device, some information will be missing
    Device Descriptor:
      bLength                18
      bDescriptorType         1
      bcdUSB               2.00
      bDeviceClass            9 Hub
      bDeviceSubClass         0 Unused
      bDeviceProtocol         2 TT per port
      bMaxPacketSize0        64
      idVendor           0x0424 Standard Microsystems Corp.
      idProduct          0x2512 USB 2.0 Hub
      bcdDevice            b.b3
      iManufacturer           0
      iProduct                0
      iSerial                 0
      bNumConfigurations      1
      Configuration Descriptor:
        bLength                 9
        bDescriptorType         2
        wTotalLength           41
        bNumInterfaces          1
        bConfigurationValue     1
        iConfiguration          0
        bmAttributes         0xe0
          Self Powered
          Remote Wakeup
        MaxPower                2mA
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        0
          bAlternateSetting       0
          bNumEndpoints           1
          bInterfaceClass         9 Hub
          bInterfaceSubClass      0 Unused
          bInterfaceProtocol      1 Single TT
          iInterface              0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x81  EP 1 IN
            bmAttributes            3
              Transfer Type            Interrupt
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0001  1x 1 bytes
            bInterval              12
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        0
          bAlternateSetting       1
          bNumEndpoints           1
          bInterfaceClass         9 Hub
          bInterfaceSubClass      0 Unused
          bInterfaceProtocol      2 TT per port
          iInterface              0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x81  EP 1 IN
            bmAttributes            3
              Transfer Type            Interrupt
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0001  1x 1 bytes
    In that step we set to configuration #1...
    Code:
    mk_setup(enumsetup, 0, 9, enumbuf[5], 0, 0);
    The Enum buff:
    Code:
    09 02 29 00 01 01 00 E0 01 09 04 00 00 01 09 00 01 00 07 05 81 03 01 00 0C 09 04 00 01 01 09 00 02 00 07 05 81 03 01 00 0C
    What confuses me here is the wValue for the configuration... From the USB document:
    Code:
    The lower byte of the wValue field specifies the desired configuration. This configuration value must be
    zero or match a configuration value from a configuration descriptor. If the configuration value is zero, the
    device is placed in its Address state. The upper byte of the wValue field is reserved.
    If wIndex, wLength, or the upper byte of wValue is non-zero, then the behavior of this request is notThe lower byte of the wValue field specifies the desired configuration. This configuration value must be
    zero or match a configuration value from a configuration descriptor. If the configuration value is zero, the
    device is placed in its Address state. The upper byte of the wValue field is reserved.
    So we pass in #1 - Does that imply it is choosing the option for TT per port? If so, how do you choose the option of single TT? as passing in 0 would imply something else?

    Again this may be barking up wrong tree, but...

  10. #10
    Senior Member PaulStoffregen's Avatar
    Join Date
    Nov 2012
    Posts
    18,655
    Oh, this might be the first device we've seen needed alt settings. Mine just arrived. Dunno if I'll get to it this week, since Robin is out of town at this moment so I'm here doing both our normal jobs.

  11. #11
    Senior Member+ KurtE's Avatar
    Join Date
    Jan 2014
    Posts
    3,690
    Will try to understand more what is going on... But not sure if it now has to do with at setting or not...

    I tried with another HUB yesterday that is I believe a USB3 with multi-tt support and it sort of worked (at least some of the times)...

    USB info from Linux:
    Code:
    kurt@kurt-UP-CHT01:~$ lsusb
    Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
    Bus 001 Device 004: ID 0424:2530 Standard Microsystems Corp.
    Bus 001 Device 003: ID 0424:4603 Standard Microsystems Corp.
    Bus 001 Device 002: ID 0bda:8178 Realtek Semiconductor Corp. RTL8192CU 802.11n WLAN Adapter
    Bus 001 Device 007: ID 04ca:0027 Lite-On Technology Corp.
    Bus 001 Device 005: ID 05e3:0610 Genesys Logic, Inc. 4-port hub
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    kurt@kurt-UP-CHT01:~$ lsusb -v -d 05e3:0610
    
    Bus 001 Device 005: ID 05e3:0610 Genesys Logic, Inc. 4-port hub
    Couldn't open device, some information will be missing
    Device Descriptor:
      bLength                18
      bDescriptorType         1
      bcdUSB               2.00
      bDeviceClass            9 Hub
      bDeviceSubClass         0 Unused
      bDeviceProtocol         2 TT per port
      bMaxPacketSize0        64
      idVendor           0x05e3 Genesys Logic, Inc.
      idProduct          0x0610 4-port hub
      bcdDevice           92.24
      iManufacturer           1
      iProduct                2
      iSerial                 0
      bNumConfigurations      1
      Configuration Descriptor:
        bLength                 9
        bDescriptorType         2
        wTotalLength           41
        bNumInterfaces          1
        bConfigurationValue     1
        iConfiguration          0
        bmAttributes         0xe0
          Self Powered
          Remote Wakeup
        MaxPower              100mA
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        0
          bAlternateSetting       0
          bNumEndpoints           1
          bInterfaceClass         9 Hub
          bInterfaceSubClass      0 Unused
          bInterfaceProtocol      1 Single TT
          iInterface              0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x81  EP 1 IN
            bmAttributes            3
              Transfer Type            Interrupt
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0001  1x 1 bytes
            bInterval              12
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        0
          bAlternateSetting       1
          bNumEndpoints           1
          bInterfaceClass         9 Hub
          bInterfaceSubClass      0 Unused
          bInterfaceProtocol      2 TT per port
          iInterface              0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x81  EP 1 IN
            bmAttributes            3
              Transfer Type            Interrupt
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0001  1x 1 bytes
            bInterval              12
    kurt@kurt-UP-CHT01:~$
    Note: at least when it is plugged into USB2 port on UB board shows up as a TT per port...

    When I try it on Teensy 3.6 with lots of debug stuff turned on:
    Code:
    USB Host Testing
    960
    sizeof Device = 36
    sizeof Pipe = 96
    sizeof Transfer = 64
    power up USBHS PHY
    port change: 10001803
        connect
      begin reset
    port change: 18001205
      port enabled
      end recovery
    new_Device: 480 Mbit/sec
    new_Pipe
    new_Control_Transfer
    setup address 1FFF53B0
    enumeration:
    12 01 00 02 09 00 02 40 
    Transfer @ 1FFF54C0
       next:  1FFF5500
       anext: 1
       token: 8000
       bufs:  0,1000,2000,3000,4000
      enum state:0
      mk_setup 10500 0
    new_Control_Transfer
    setup address 1FFF53B0
      enum after assign_address
    enumeration:
    Transfer @ 1FFF5540
       next:  1FFF5480
       anext: 1
       token: 8100
       bufs:  0,1000,2000,3000,4000
      enum state:1
    new_Control_Transfer
    setup address 1FFF53B0
    enumeration:
    12 01 00 02 09 00 02 40 E3 05 10 06 24 92 01 02 00 01 
    Transfer @ 1FFF54C0
       next:  1FFF5500
       anext: 1
       token: 8000
       bufs:  0,1000,2000,3000,4000
      enum state:2
      enum state:3
    new_Control_Transfer
    setup address 1FFF53B0
    enumeration:
    04 03 09 04 E3 05 10 06 24 92 01 02 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    Transfer @ 1FFF5480
       next:  1FFF4700
       anext: 1
       token: 8000
       bufs:  0,1000,2000,3000,4000
      enum state:4
      enum state:5
    new_Control_Transfer
    setup address 1FFF53B0
    enumeration:
    1A 03 47 00 65 00 6E 00 65 00 73 00 79 00 73 00 4C 00 6F 00 67 00 69 00 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    Transfer @ 1FFF5500
       next:  1FFF5540
       anext: 1
    
       token: 8000
       bufs:  0,1000,2000,3000,4000
      enum state:6
      enum state:7
    new_Control_Transfer
    setup address 1FFF53B0
    enumeration:
    16 03 55 00 53 00 42 00 32 00 2E 00 30 00 20 00 48 00 75 00 62 00 69 00 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    Transfer @ 1FFF4700
       next:  1FFF54C0
       anext: 1
       token: 8000
       bufs:  0,1000,2000,3000,4000
      enum state:8
      enum state:11
    new_Control_Transfer
    setup address 1FFF53B0
    enumeration:
    09 02 29 00 01 01 00 E0 32 
    Transfer @ 1FFF5540
       next:  1FFF5480
       anext: 1
       token: 8000
       bufs:  0,1000,2000,3000,4000
      enum state:12
    Config data length = 41
    new_Control_Transfer
    setup address 1FFF53B0
    enumeration:
    09 02 29 00 01 01 00 E0 32 09 04 00 00 01 09 00 01 00 07 05 81 03 01 00 0C 09 04 00 01 01 09 00 02 00 07 05 81 03 01 00 0C 
    Transfer @ 1FFF54C0
       next:  1FFF5500
       anext: 1
       token: 8000
       bufs:  0,1000,2000,3000,4000
      enum state:13
    bNumInterfaces = 1
    bConfigurationValue = 1
    new_Control_Transfer
    setup address 1FFF53B0
    enumeration:
    Transfer @ 1FFF5480
       next:  1FFF4700
       anext: 1
       token: 8100
       bufs:  0,1000,2000,3000,4000
      enum state:14
    USBHub memory usage = 960
    USBHub claim_device this=1FFF4220
      polling interval = 12
    7
    5
    81
    1
    bDeviceClass = 9
    bDeviceSubClass = 0
    bDeviceProtocol = 2
    new_Control_Transfer
    setup address 1FFF4570
    *** Device Hub1 5e3:610 - connected ***
      manufacturer: GenesysLogic
      product: USB2.0 Hub
    USBHub control callback
    09 29 04 E0 00 32 64 00 FF 00 00 00 00 00 00 00 
    Hub ports = 4
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    power turned on to all ports
    device addr = 1
    new_Pipe
    allocate_interrupt_pipe_bandwidth
      ep interval = 12
      interval = 256
     best_bandwidth = 2, at offset = 0
    pipe cap1 = F0012101
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 1E
    getstatus, port = 1
    new_Control_Transfer
    setup address 1FFF4570
    deferred getstatus, port = 2
    deferred getstatus, port = 3
    deferred getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=1
      state=0
      Has Power
    getstatus, port = 2
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    01 03 01 00 
    New Port Status
      status=10301  port=2
      state=0
      Device is present: 
      Has Power
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    Port Status Cleared, port=2
    getstatus, port = 3
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=3
      state=0
      Has Power
    getstatus, port = 4
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=4
      state=0
      Has Power
    timer event (20001 us): Debounce Timer, this = 1FFF4220, timer = 1FFF4538
    ports in use bitmask = 4
    getstatus, port = 2
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    01 03 00 00 
    New Port Status
      status=301  port=2
      state=2
      Device is present: 
      Has Power
    HUB Callback (member)
    status = 1A
    getstatus, port = 1
    new_Control_Transfer
    setup address 1FFF4570
    deferred getstatus, port = 3
    deferred getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=1
      state=0
      Has Power
    getstatus, port = 3
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=3
      state=0
      Has Power
    getstatus, port = 4
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=4
      state=0
      Has Power
    timer event (20000 us): Debounce Timer, this = 1FFF4220, timer = 1FFF4538
    ports in use bitmask = 4
    getstatus, port = 2
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    01 03 00 00 
    New Port Status
      status=301  port=2
      state=3
      Device is present: 
      Has Power
    timer event (20000 us): Debounce Timer, this = 1FFF4220, timer = 1FFF4538
    ports in use bitmask = 4
    getstatus, port = 2
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    01 03 00 00 
    New Port Status
      status=301  port=2
      state=4
      Device is present: 
      Has Power
    HUB Callback (member)
    status = 1A
    getstatus, port = 1
    new_Control_Transfer
    setup address 1FFF4570
    deferred getstatus, port = 3
    deferred getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=1
      state=0
      Has Power
    getstatus, port = 3
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=3
      state=0
      Has Power
    getstatus, port = 4
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=4
      state=0
      Has Power
    timer event (20000 us): Debounce Timer, this = 1FFF4220, timer = 1FFF4538
    ports in use bitmask = 4
    getstatus, port = 2
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    01 03 00 00 
    New Port Status
      status=301  port=2
      state=5
      Device is present: 
      Has Power
    HUB Callback (member)
    status = 1E
    getstatus, port = 1
    new_Control_Transfer
    setup address 1FFF4570
    deferred getstatus, port = 2
    deferred getstatus, port = 3
    deferred getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=1
      state=0
      Has Power
    getstatus, port = 2
    new_Control_Transfer
    setup address 1FFF4570
    port change: 1C00100A
        disconnect
    disconnect_Device:
    USBDriver (available_drivers) list: 1FFF2520 -> 1FFF2020 -> 1FFF22A0 -> 1FFF2900 -> 1FFF2E00 -> 1FFF3300 -> 1FFF3800 -> 1FFF3D00 -> 1FFF4760
    USBDriver (dev->drivers) list: 1FFF4220
    disconnect driver 1FFF4220
    USBDriver (available_drivers) list: 1FFF4220 -> 1FFF2520 -> 1FFF2020 -> 1FFF22A0 -> 1FFF2900 -> 1FFF2E00 -> 1FFF3300 -> 1FFF3800 -> 1FFF3D00 -> 1FFF4760
    delete_Pipe 1FFF4980
      Free transfers
        * 536823552 * remove * defer free until QH
      Free transfers attached to QH
        * 536823552
        * 536823488
    * Delete Pipe completed
    delete_Pipe 1FFF5400
      shut down async schedule
      Free transfers
        * 536827008 * remove * free
      Free transfers attached to QH
        * 536823392
    * Delete Pipe completed
    removed Device_t from devlist
      disable
    *** Device Hub1 - disconnected ***
    timer event (20000 us): Debounce Timer, this = 1FFF4220, timer = 1FFF4538
    ports in use bitmask = 0
    port change: 10001803
        connect
      begin reset
    port change: 18001205
      port enabled
      end recovery
    new_Device: 480 Mbit/sec
    new_Pipe
    new_Control_Transfer
    setup address 1FFF53B0
    enumeration:
    12 01 00 02 09 00 02 40 
    Transfer @ 1FFF46C0
       next:  1FFF5480
       anext: 1
       token: 8000
       bufs:  0,1000,2000,3000,4000
      enum state:0
      mk_setup 20500 0
    new_Control_Transfer
    setup address 1FFF53B0
      enum after assign_address
    enumeration:
    Transfer @ 1FFF4660
       next:  1FFF4700
       anext: 1
       token: 8100
       bufs:  0,1000,2000,3000,4000
      enum state:1
    new_Control_Transfer
    setup address 1FFF53B0
    enumeration:
    12 01 00 02 09 00 02 40 E3 05 10 06 24 92 01 02 00 01 
    Transfer @ 1FFF46C0
       next:  1FFF5480
       anext: 1
       token: 8000
       bufs:  0,1000,2000,3000,4000
      enum state:2
      enum state:3
    new_Control_Transfer
    setup address 1FFF53B0
    enumeration:
    04 03 09 04 E3 05 10 06 24 92 01 02 00 01 07 05 81 03 01 00 0C 09 04 00 01 01 09 00 02 00 07 05 81 03 01 00 0C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    Transfer @ 1FFF4700
       next:  1FFF5500
       anext: 1
       token: 8000
       bufs:  0,1000,2000,3000,4000
      enum state:4
      enum state:5
    new_Control_Transfer
    setup address 1FFF53B0
    enumeration:
    1A 03 47 00 65 00 6E 00 65 00 73 00 79 00 73 00 4C 00 6F 00 67 00 69 00 63 00 09 00 02 00 07 05 81 03 01 00 0C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    Transfer @ 1FFF5480
       next:  1FFF4660
       anext: 1
    
       token: 8000
       bufs:  0,1000,2000,3000,4000
      enum state:6
      enum state:7
    new_Control_Transfer
    setup address 1FFF53B0
    enumeration:
    16 03 55 00 53 00 42 00 32 00 2E 00 30 00 20 00 48 00 75 00 62 00 69 00 63 00 09 00 02 00 07 05 81 03 01 00 0C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    Transfer @ 1FFF5500
       next:  1FFF46C0
       anext: 1
       token: 8000
       bufs:  0,1000,2000,3000,4000
      enum state:8
      enum state:11
    new_Control_Transfer
    setup address 1FFF53B0
    enumeration:
    09 02 29 00 01 01 00 E0 32 
    Transfer @ 1FFF4660
       next:  1FFF4700
       anext: 1
       token: 8000
       bufs:  0,1000,2000,3000,4000
      enum state:12
    Config data length = 41
    new_Control_Transfer
    setup address 1FFF53B0
    enumeration:
    09 02 29 00 01 01 00 E0 32 09 04 00 00 01 09 00 01 00 07 05 81 03 01 00 0C 09 04 00 01 01 09 00 02 00 07 05 81 03 01 00 0C 
    Transfer @ 1FFF46C0
       next:  1FFF5480
       anext: 1
       token: 8000
       bufs:  0,1000,2000,3000,4000
      enum state:13
    bNumInterfaces = 1
    bConfigurationValue = 1
    new_Control_Transfer
    setup address 1FFF53B0
    enumeration:
    Transfer @ 1FFF4700
       next:  1FFF5500
       anext: 1
       token: 8100
       bufs:  0,1000,2000,3000,4000
      enum state:14
    USBHub memory usage = 960
    USBHub claim_device this=1FFF4220
      polling interval = 12
    7
    5
    81
    1
    bDeviceClass = 9
    bDeviceSubClass = 0
    bDeviceProtocol = 2
    new_Control_Transfer
    setup address 1FFF4570
    *** Device Hub1 5e3:610 - connected ***
      manufacturer: GenesysLogic
      product: USB2.0 Hub
    USBHub control callback
    09 29 04 E0 00 32 64 00 FF 00 00 00 00 00 00 00 
    Hub ports = 4
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    power turned on to all ports
    device addr = 2
    new_Pipe
    allocate_interrupt_pipe_bandwidth
      ep interval = 12
      interval = 256
     best_bandwidth = 2, at offset = 0
    pipe cap1 = F0012102
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 1E
    getstatus, port = 1
    new_Control_Transfer
    setup address 1FFF4570
    deferred getstatus, port = 2
    deferred getstatus, port = 3
    deferred getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=1
      state=0
      Has Power
    getstatus, port = 2
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    01 03 01 00 
    New Port Status
      status=10301  port=2
      state=0
      Device is present: 
      Has Power
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    Port Status Cleared, port=2
    getstatus, port = 3
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=3
      state=0
      Has Power
    getstatus, port = 4
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=4
      state=0
      Has Power
    timer event (20000 us): Debounce Timer, this = 1FFF4220, timer = 1FFF4538
    ports in use bitmask = 4
    getstatus, port = 2
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    01 03 00 00 
    New Port Status
      status=301  port=2
      state=2
      Device is present: 
      Has Power
    HUB Callback (member)
    status = 1A
    getstatus, port = 1
    new_Control_Transfer
    setup address 1FFF4570
    deferred getstatus, port = 3
    deferred getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=1
      state=0
      Has Power
    getstatus, port = 3
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=3
      state=0
      Has Power
    getstatus, port = 4
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=4
      state=0
      Has Power
    timer event (20000 us): Debounce Timer, this = 1FFF4220, timer = 1FFF4538
    ports in use bitmask = 4
    getstatus, port = 2
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    01 03 00 00 
    New Port Status
      status=301  port=2
      state=3
      Device is present: 
      Has Power
    timer event (20000 us): Debounce Timer, this = 1FFF4220, timer = 1FFF4538
    ports in use bitmask = 4
    getstatus, port = 2
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    01 03 00 00 
    New Port Status
      status=301  port=2
      state=4
      Device is present: 
      Has Power
    HUB Callback (member)
    status = 1A
    getstatus, port = 1
    new_Control_Transfer
    setup address 1FFF4570
    deferred getstatus, port = 3
    deferred getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=1
      state=0
      Has Power
    getstatus, port = 3
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=3
      state=0
      Has Power
    getstatus, port = 4
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=4
      state=0
      Has Power
    timer event (20000 us): Debounce Timer, this = 1FFF4220, timer = 1FFF4538
    ports in use bitmask = 4
    getstatus, port = 2
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    01 03 00 00 
    New Port Status
      status=301  port=2
      state=5
      Device is present: 
      Has Power
    HUB Callback (member)
    status = 1A
    getstatus, port = 1
    new_Control_Transfer
    setup address 1FFF4570
    deferred getstatus, port = 3
    deferred getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=1
      state=0
      Has Power
    getstatus, port = 3
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=3
      state=0
      Has Power
    getstatus, port = 4
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=4
      state=0
      Has Power
    timer event (20000 us): Debounce Timer, this = 1FFF4220, timer = 1FFF4538
    ports in use bitmask = 4
    getstatus, port = 2
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    01 03 00 00 
    New Port Status
      status=301  port=2
      state=6
      Device is present: 
      Has Power
    sending reset
    send_setreset
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    unhandled setup, message = 40323
    timer event (20000 us): Debounce Timer, this = 1FFF4220, timer = 1FFF4538
    ports in use bitmask = 0
    HUB Callback (member)
    status = 1E
    getstatus, port = 1
    new_Control_Transfer
    setup address 1FFF4570
    deferred getstatus, port = 2
    deferred getstatus, port = 3
    deferred getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=1
      state=0
      Has Power
    getstatus, port = 2
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    03 03 10 00 
    New Port Status
      status=100303  port=2
      state=7
      Device is present: 
      Enabled, speed = 1.5 Mbit/sec
      Has Power
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    unhandled setup, message = 140123
    getstatus, port = 3
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=3
      state=0
      Has Power
    getstatus, port = 4
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=4
      state=0
      Has Power
    timer event (25000 us): Hello, I'm resettimer, this = 1FFF4220, timer = 1FFF4554
    port_doing_reset = 2
    PORT_RECOVERY
    new_Device: 1.5 Mbit/sec
    new_Pipe
    new_Control_Transfer
    setup address 1FFF53B0
    enumeration:
    12 01 10 01 00 00 00 08 
    Transfer @ 1FFF4660
       next:  1FFF5480
       anext: 1
       token: 8000
       bufs:  0,1000,2000,3000,4000
      enum state:0
      mk_setup 30500 0
    new_Control_Transfer
    setup address 1FFF53B0
      enum after assign_address
    enumeration:
    Transfer @ 1FFF5500
       next:  1FFF5540
       anext: 1
       token: 8100
       bufs:  0,1000,2000,3000,4000
      enum state:1
    new_Control_Transfer
    setup address 1FFF53B0
    enumeration:
    12 01 10 01 00 00 00 08 CA 04 27 00 18 01 01 02 00 01 
    Transfer @ 1FFF4660
       next:  1FFF5480
       anext: 1
       token: 8000
       bufs:  0,1000,2000,3000,4000
      enum state:2
      enum state:3
    new_Control_Transfer
    setup address 1FFF53B0
    enumeration:
    04 03 09 04 CA 04 27 00 18 01 01 02 00 01 07 05 81 03 01 00 0C 09 04 00 01 01 09 00 02 00 07 05 81 03 01 00 0C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    Transfer @ 1FFF5540
       next:  1FFF4620
       anext: 1
       token: 8000
       bufs:  0,1000,2000,3000,4000
      enum state:4
      enum state:5
    new_Control_Transfer
    setup address 1FFF53B0
    HUB Callback (member)
    status = 1A
    getstatus, port = 1
    new_Control_Transfer
    setup address 1FFF4570
    deferred getstatus, port = 3
    deferred getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=1
      state=0
      Has Power
    getstatus, port = 3
    new_Control_Transfer
    setup address 1FFF4570
    enumeration:
    32 03 4C 00 69 00 74 00 65 00 2D 00 4F 00 6E 00 20 00 54 00 65 00 63 00 68 00 6E 00 6F 00 6C 00 6F 00 67 00 79 00 20 00 43 00 6F 00 72 00 70 00 2E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    Transfer @ 1FFF5480
       next:  1FFF5500
       anext: 1
       token: 8000
       bufs:  0,1000,2000,3000,4000
      enum state:6
      enum state:7
    new_Control_Transfer
    setup address 1FFF53B0
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=3
      state=0
      Has Power
    getstatus, port = 4
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=4
      state=0
      Has Power
    enumeration:
    30 03 55 00 53 00 42 00 20 00 4D 00 75 00 6C 00 74 00 69 00 6D 00 65 00 64 00 69 00 61 00 20 00 4B 00 65 00 79 00 62 00 6F 00 61 00 72 00 64 00 2E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    Transfer @ 1FFF4B60
       next:  1FFF4660
       anext: 1
       token: 8000
       bufs:  0,1000,2000,3000,4000
      enum state:8
      enum state:11
    new_Control_Transfer
    setup address 1FFF53B0
    enumeration:
    09 02 3B 00 02 01 00 A0 32 
    Transfer @ 1FFF5540
       next:  1FFF54C0
       anext: 1
       token: 8000
       bufs:  0,1000,2000,3000,4000
      enum state:12
    Config data length = 59
    new_Control_Transfer
    setup address 1FFF53B0
    enumeration:
    09 02 3B 00 02 01 00 A0 32 09 04 00 00 01 03 01 01 00 09 21 10 01 00 01 22 41 00 07 05 81 03 08 00 18 09 04 01 00 01 03 00 00 00 09 21 10 01 00 01 22 9F 00 07 05 82 03 08 00 0A 
    Transfer @ 1FFF4660
       next:  1FFF5480
       anext: 1
       token: 8000
       bufs:  0,1000,2000,3000,4000
      enum state:13
    bNumInterfaces = 2
    bConfigurationValue = 1
    new_Control_Transfer
    setup address 1FFF53B0
    enumeration:
    Transfer @ 1FFF54C0
       next:  1FFF4B60
       anext: 1
       token: 8100
       bufs:  0,1000,2000,3000,4000
      enum state:14
    USBHub memory usage = 960
    USBHub claim_device this=1FFF2520
    KeyboardController claim this=1FFF2020
    KeyboardController claim this=1FFF22A0
    HIDParser claim this=1FFF2900
    HIDParser claim this=1FFF2E00
    HIDParser claim this=1FFF3300
    HIDParser claim this=1FFF3800
    HIDParser claim this=1FFF3D00
    JoystickController claim this=1FFF4760
    Descriptor 4 = INTERFACE
    KeyboardController claim this=1FFF2020
    ep = 81
    packet size = 8
    polling interval = 24
    new_Pipe
    allocate_interrupt_pipe_bandwidth
     best_bandwidth = 3, at offset = 0, shift= 1
    new_Control_Transfer
    setup address 1FFF2044
    Descriptor 33 = HID
    Descriptor 5 = ENDPOINT
    Descriptor 4 = INTERFACE
    KeyboardController claim this=1FFF22A0
    HIDParser claim this=1FFF2900
     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 9F 00 07 05 82 03 08 00 0A 
    report descriptor size = 159
    Single endpoint HID:
      endpoint = 82
       size = 8
       interval = 10
    new_Pipe
    allocate_interrupt_pipe_bandwidth
     best_bandwidth = 3, at offset = 8, shift= 0
    new_Control_Transfer
    setup address 1FFF2928
    Descriptor 33 = HID
    Descriptor 5 = ENDPOINT
    *** Device KB1 4ca:27 - connected ***
      manufacturer: Lite-On Technology Corp.
      product: USB Multimedia Keyboard
    *** Device HID1 4ca:27 - connected ***
      manufacturer: Lite-On Technology Corp.
      product: USB Multimedia Keyboard
    control callback (hid)
    05 01 09 80 A1 01 85 01 05 01 19 81 29 88 15 00 25 01 95 08 75 01 81 02 C0 05 0C 09 01 A1 01 85 02 15 00 25 01 0A 83 01 0A CD 00 0A B7 00 0A E9 00 0A EA 00 0A E2 00 0A B6 00 0A B5 00 0A 8A 01 0A 92 01 0A 94 01 0A 21 02 0A 23 02 0A 24 02 0A 25 02 0A 26 02 0A 27 02 0A 2A 02 95 12 75 01 81 02 95 01 75 06 81 01 C0 05 09 09 01 A1 01 85 03 15 00 25 01 0A 2C 00 0A 18 00 0A 20 00 0A 1F 00 0A 1C 00 0A 3D 00 0A 41 00 0A 42 00 0A 43 00 0A 46 00 95 0A 75 01 81 02 95 01 75 06 81 01 C0 
      mesg = 22000681
      got report descriptor
    Found top level collection 10080
    find_driver
      driver 1FFF202C
    Found top level collection C0001
    find_driver
      driver 1FFF202C
    Found top level collection 90001
    find_driver
      driver 1FFF202C
      driver 1FFF22AC
      driver 1FFF4200
      driver 1FFF476C
      driver 1FFF4600
    Rawhid Claim: 4ca:27 usage: 90001
      driver 1FFF46A0
    Rawhid Claim: 4ca:27 usage: 90001
    HUB Callback (member)
    status = 1A
    getstatus, port = 1
    new_Control_Transfer
    setup address 1FFF4570
    deferred getstatus, port = 3
    deferred getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=1
      state=0
      Has Power
    getstatus, port = 3
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=3
      state=0
      Has Power
    getstatus, port = 4
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=4
      state=0
      Has Power
    HUB Callback (member)
    status = 1A
    getstatus, port = 1
    new_Control_Transfer
    setup address 1FFF4570
    deferred getstatus, port = 3
    deferred getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=1
      state=0
      Has Power
    getstatus, port = 3
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=3
      state=0
      Has Power
    getstatus, port = 4
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=4
      state=0
      Has Power
    HUB Callback (member)
    status = 1A
    getstatus, port = 1
    new_Control_Transfer
    setup address 1FFF4570
    deferred getstatus, port = 3
    deferred getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=1
      state=0
      Has Power
    getstatus, port = 3
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=3
      state=0
      Has Power
    getstatus, port = 4
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=4
      state=0
      Has Power
    HUB Callback (member)
    status = 1A
    getstatus, port = 1
    new_Control_Transfer
    setup address 1FFF4570
    deferred getstatus, port = 3
    deferred getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=1
      state=0
      Has Power
    getstatus, port = 3
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=3
      state=0
      Has Power
    getstatus, port = 4
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=4
      state=0
      Has Power
    HUB Callback (member)
    status = 1A
    getstatus, port = 1
    new_Control_Transfer
    setup address 1FFF4570
    deferred getstatus, port = 3
    deferred getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=1
      state=0
      Has Power
    getstatus, port = 3
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=3
      state=0
      Has Power
    getstatus, port = 4
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=4
      state=0
      Has Power
    HUB Callback (member)
    status = 1A
    getstatus, port = 1
    new_Control_Transfer
    setup address 1FFF4570
    deferred getstatus, port = 3
    deferred getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=1
      state=0
      Has Power
    getstatus, port = 3
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=3
      state=0
      Has Power
    getstatus, port = 4
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=4
      state=0
      Has Power
    HUB Callback (member)
    status = 1A
    getstatus, port = 1
    new_Control_Transfer
    setup address 1FFF4570
    deferred getstatus, port = 3
    deferred getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=1
      state=0
      Has Power
    getstatus, port = 3
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=3
      state=0
      Has Power
    getstatus, port = 4
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=4
      state=0
      Has Power
    HUB Callback (member)
    status = 1A
    getstatus, port = 1
    new_Control_Transfer
    setup address 1FFF4570
    deferred getstatus, port = 3
    deferred getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=1
      state=0
      Has Power
    getstatus, port = 3
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=3
      state=0
      Has Power
    getstatus, port = 4
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=4
      state=0
      Has Power
    HUB Callback (member)
    status = 1A
    getstatus, port = 1
    new_Control_Transfer
    setup address 1FFF4570
    deferred getstatus, port = 3
    deferred getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=1
      state=0
      Has Power
    getstatus, port = 3
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=3
      state=0
      Has Power
    getstatus, port = 4
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=4
      state=0
      Has Power
    HUB Callback (member)
    status = 1A
    getstatus, port = 1
    new_Control_Transfer
    setup address 1FFF4570
    deferred getstatus, port = 3
    deferred getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=1
      state=0
      Has Power
    getstatus, port = 3
    new_Control_Transfer
    setup address 1FFF4570
    USBHub control callback
    ...
    Note: it keeps outputting lots of stuff, like maybe it gets unhappy and then happy again and...
    Will look more but got to run

    Kurt

  12. #12
    Senior Member+ KurtE's Avatar
    Join Date
    Jan 2014
    Posts
    3,690
    In case you are interested, the USB Hub mentioned above: https://smile.amazon.com/gp/product/B00Q2ONMI0/

  13. #13
    Senior Member PaulStoffregen's Avatar
    Join Date
    Nov 2012
    Posts
    18,655
    I'm working on troubleshooting this hub. So far, I've mostly just added better printing of the descriptors. Better descriptor info is something I wanted to get into the code before 1.42, so we'll have an easier time when people find devices that don't work.

    This hub definitely has only 1 configuration, with 2 interfaces. The 2 other Multi-TT hubs I own gives almost identical device, config, interface and endpoint descriptors.

    That info from the USB spec seems to say writing 0 unconfigures the device. I've never known a case where any host actually does that. We certainly don't. I'd be amazed if it actually worked on most USB devices. Regardless of what the spec says, as far as I know that's not in any of the conformance tests and I've never seen any example code to actually handle it. For all practical purposes, hosts only write whatever number is in the config descriptor.

    There's definitely something different about this hub. The place where they seem to differ is the hub capability descriptors. That format is documented on pages 417-418 of the USB 2.0 spec.

    Here's the data I have from these 3 hubs:

    Code:
    2 port (not working)
        VendorID = 0424, ProductID = 2512, Version = 0BB3
        Class/Subclass/Protocol = 9(Hub) / 0 / 2(Multi-TT)
    capability
    09 29 02 09 00 32 01 00 FF 00 00 00 00 00 00 00
    
    
    4 port, ioGear, GUH274 (works)
        VendorID = 04B4, ProductID = 6560, Version = 0008
        Class/Subclass/Protocol = 9(Hub) / 0 / 2(Multi-TT)
    09 29 04 89 00 32 64 00 FF 00 00 00 00 00 00 00
    
    
    4 port, no-name blue color, UH-BSC4-US (works)
        VendorID = 05E3, ProductID = 0610, Version = 3298
        Class/Subclass/Protocol = 9(Hub) / 0 / 2(Multi-TT)
    09 29 04 E0 00 32 64 00 FF 00 00 00 00 00 00 00

  14. #14
    Senior Member PaulStoffregen's Avatar
    Join Date
    Nov 2012
    Posts
    18,655
    A little more testing shows I can get 480 MBit/sec devices to work (at least fully enumerate), but not 12 or 1.5 MBit/sec ones. Very strange.

    Running out of time for the moment... will look at this later today or over the weekend.

  15. #15
    Senior Member+ KurtE's Avatar
    Join Date
    Jan 2014
    Posts
    3,690
    Yes - I took a look earlier as well, at it was acting strange. Was not sure what to look at next on it. Need to try again to see if some of the other hubs I have also act strange.
    At one point I had a USB 3 hub appear not to want to work either...

    Side question: I keep meaning to get or make some easy USB adapter to easily be able to tap into the signals. Any decent ones out there? I have hacked up a cable to get to it, but it tends to get unwieldy, also with some USB connections, I can setup test probes to back of USB port... But maybe there is an easier way, of having some type of Type A? Male to female connector with test points...

  16. #16
    Senior Member PaulStoffregen's Avatar
    Join Date
    Nov 2012
    Posts
    18,655
    I'm continuing to work on it today. Looks like Teensy 3.6 is sending a flood of setup start-split requests. It causes Total Phase's software to completely lock up, which is making troubleshooting much harder.

    Click image for larger version. 

Name:	sc.png 
Views:	32 
Size:	339.4 KB 
ID:	13897

  17. #17
    Senior Member PaulStoffregen's Avatar
    Join Date
    Nov 2012
    Posts
    18,655
    Best guess so far is we're not sending a set interface control transfer. I grabbed several packet logs without any device plugged into the hub. That's the one thing Linux seems to be significantly different. Well, also remote wakeup, which we're a *long* way from ever properly supporting.

    I added code to walk through all the possible interfaces, rather than only looking at the first one.

    https://github.com/PaulStoffregen/US...45ee9519906ec9

    Later today I'll try adding the set interface command when we see more than 1 choice. I still don't know if that's really going to solve this problem, but at this moment it's the only plausible guess I have, and it's definitely something we should be doing (even though the language in the USB spec seems to say the first interface is supposed to be the default if nothing is set).

  18. #18
    Senior Member PaulStoffregen's Avatar
    Join Date
    Nov 2012
    Posts
    18,655
    Well, looks like the set interface control transfer wasn't the answer.

    I put in the code to send, and as far as I can tell in the packet log it's correct. But the problem remains.

  19. #19
    Senior Member PaulStoffregen's Avatar
    Join Date
    Nov 2012
    Posts
    18,655
    Been working on this all day. Really stuck.

    At least I did manage to put a little code right before the enumeration is started to have an IntervalTimer forcibly shut off the USB port's power after 1 ms. It's pretty amazing how many packets the host controller can spew in just 1 millisecond when running at 480 Mbit. At least this lets me get a packet capture without crashing the analyzer's software.

    Click image for larger version. 

Name:	sc.png 
Views:	28 
Size:	361.4 KB 
ID:	13899

    Trouble is, I just don't see what we're doing wrong. In this screenshot, you can see at the highlighted line this 2-port hub does complete the first control transfer to read 8 bytes of the device descriptor, using split transactions. Then ~1 millisecond later when we set the set address setup packet (split start), the hub's transaction translator seems to have vanished. No ACK response. Then the host controller keeps trying in an infinite loop.

    It's easy to see we're sending split-start setups and the hub isn't answering, but why? I'm really stumped on this one...

  20. #20
    Senior Member PaulStoffregen's Avatar
    Join Date
    Nov 2012
    Posts
    18,655
    For comparison, here's what Linux does as it initializes this hub and then successfully enumerates the low speed keyboard on port 2.

    This first capture is the enumeration of the hub.

    Click image for larger version. 

Name:	sc1.png 
Views:	23 
Size:	375.9 KB 
ID:	13900

    The highlighted line at the bottom is the first setup packet sent to the keyboard using split transactions.

    Here's the enumeration of the keyboard, with that same line highlighted. I expanded the first descriptor read and the set address setup which is failing when we try on Teensy 3.6.

    Click image for larger version. 

Name:	sc2.png 
Views:	25 
Size:	367.5 KB 
ID:	13901

    The only differences I'm seeing is Linux resets the USB port twice, once only to read the first descriptor, then again before setting the address. Apparently this is done for some very old devices that don't work properly. But we know this keyboard works with a single reset when directly connected and when used with all the other hubs I own.

    Maybe there's something obvious I'm just not seeing?

  21. #21
    Senior Member PaulStoffregen's Avatar
    Join Date
    Nov 2012
    Posts
    18,655
    *Still* working on this. Somehow it's taken all day to realize this byte is (very likely) the problem.

    Click image for larger version. 

Name:	sc3.png 
Views:	29 
Size:	403.7 KB 
ID:	13902

    That's all day of re-reading chapters 8 (protocol layer) and 11 (hubs) of the USB 2.0 spec. The key info is section 8.4.2.2 "Start-Split Transaction Token" on pages 202-204.

    Code:
    Good: 78 01 82 10
    
    split PID = 78
    hub addr = 1 
    SC = 0 (start)
    port = 2
    S = 1 (low speed)
    E = 0 (???)
    ET = 00 (control)
    
    
    Bad: 78 01 82 B4
    
    E = 0 (???)
    ET = 10 (bulk)
    Somehow bit 2 in the last byte is getting set. Bits 3-7 are a 5 bit CRC check, so they all change too, but that's expected when any of the bits in the middle 2 bytes or any of the 3 low bits in that last byte change.


    But how is this happening? And why with only this particular 2 port hub, but not at any of the 6 other hubs I own (admittedly one is a USB 1.1 hub without a transaction translator, so it doesn't count), nor with any of Kurt's hubs or anyone else's?

    Here's the embarrassing part... turns out I've had this wrong the whole time, but somehow almost all USB 2.0 hubs manage to roll with it. And until now, only after 2 solid days of head scratching, have I for the (apparently) first time really looked at the Teensy 3.6 to USB communication when enumerating a low speed device. It's not pretty!

    Click image for larger version. 

Name:	sc4.png 
Views:	24 
Size:	330.9 KB 
ID:	13903

    Lots of mistaken B4s (bit 2 set), yet the hub manages to do send the packet to the 1.5 Mbit keyboard and reply back with a correct split-complete packet. Of course, Total Phase's software recognizes the packets aren't correct and shows them in angry red. There's no way I could have missed this, other than it all just seemed to work when I wrote the code, so I didn't bother to set up the analyzer to really inspect the packets.

    Now that I (hopefully) really understand what's wrong and I'm past "but it works on all other hubs" I hope to finally have this solved soon. It's certainly a mistake I made somewhere deep in ehci.cpp. Now to just find it...

  22. #22
    Senior Member PaulStoffregen's Avatar
    Join Date
    Nov 2012
    Posts
    18,655
    Finally, fixed it!

    https://github.com/PaulStoffregen/US...ab5915725c236b

    Turned out we were losing 4 bits of the pipe configuration in the QH capabilities structure.

    The fact that it has worked on so many hubs, literally every hub I own until buying this 2-port hub, is nothing short of amazing and for too long threw me off the path that ultimately led to find this problem.

  23. #23
    Senior Member PaulStoffregen's Avatar
    Join Date
    Nov 2012
    Posts
    18,655
    Quote Originally Posted by KurtE View Post
    Side question: I keep meaning to get or make some easy USB adapter to easily be able to tap into the signals. Any decent ones out there?
    Yes, but they're expensive. Very expensive. The one I use is the Beagle 480 from Total Phase. It's $1200.

    They make a cheaper one that only goes up to 12 Mbit speed. So to other companies. But 12 Mbit would be useless for troubleshooting USB 2.0 split transactions, which are only done at 480 Mbit.

    I might write a blog article about how this works and the lengthy winding-road process of actually using it to track down this problem....

  24. #24
    Senior Member+ KurtE's Avatar
    Join Date
    Jan 2014
    Posts
    3,690
    - Glad you found it! As I mentioned earlier, I had taken a look, but nothing made sense to me. Things like it looked like Linux was doing lots of stuff...

    I will sync up and retry with what hubs I have. There was another one I had that worked some of the time, but at times I thought it didn't work...

    Yes the Beagle 480 looks great if I were to do this on a full time basis. I can do pretty well with the Saleae Logic Analyzer again only up 12MBS... Works pretty well for the lower speed stuff.

    For now just trying to make it easier to tap into the signals. I had an USB extension cable that I took apart to the get the signals... But the wires finally broke inside the connector... Could probably fix. But may try to make a simpler connection, I am guessing with the Beagle, you simply plug the USB into your computer and plug the USB you wish to analyze directly into it, which would be nice and simple!

  25. #25
    Senior Member+ KurtE's Avatar
    Join Date
    Jan 2014
    Posts
    3,690
    I did some quick testing, and that one appears to be working


    I also tested with another one that was problematic that I mentioned above:

    It appears to work if it is the first hub I plug in....
    Code:
    USB Host Testing
    960
    sizeof Device = 36
    sizeof Pipe = 96
    sizeof Transfer = 64
    power up USBHS PHY
    port change: 10001803
        connect
      begin reset
    port change: 18001205
      port enabled
      end recovery
    new_Device: 480 Mbit/sec
    new_Pipe
    enumeration:
    enumeration:
    enumeration:
    Device Descriptor:
      12 01 00 02 09 00 02 40 E3 05 10 06 24 92 01 02 00 01 
        VendorID = 05E3, ProductID = 0610, Version = 9224
        Class/Subclass/Protocol = 9(Hub) / 0 / 2(Multi-TT)
        Number of Configurations = 1
    enumeration:
    enumeration:
    Manufacturer: GenesysLogic
    enumeration:
    Product: USB2.0 Hub
    enumeration:
    Config data length = 41
    enumeration:
    Configuration Descriptor:
      09 02 29 00 01 01 00 E0 32 
        NumInterfaces = 1
        ConfigurationValue = 1
      09 04 00 00 01 09 00 01 00 
        Interface = 0
        Number of endpoints = 1
        Class/Subclass/Protocol = 9(Hub) / 0 / 1(Single-TT)
      07 05 81 03 01 00 0C 
        Endpoint = 1 IN
        Type = Interrupt
        Max Size = 1
        Polling Interval = 12
      09 04 00 01 01 09 00 02 00 
        Interface = 0
        Number of endpoints = 1
        Class/Subclass/Protocol = 9(Hub) / 0 / 2(Multi-TT)
      07 05 81 03 01 00 0C 
        Endpoint = 1 IN
        Type = Interrupt
        Max Size = 1
        Polling Interval = 12
    enumeration:
    USBHub memory usage = 960
    USBHub claim_device this=1FFF4220
    found possible interface, altsetting=0
    found possible interface, altsetting=1
    number of interfaces found = 2
    best interface is 0 using altsetting 1
    *** Device Hub1 5e3:610 - connected ***
      manufacturer: GenesysLogic
      product: USB2.0 Hub
    USBHub control callback
    09 29 04 E0 00 32 64 00 FF 00 00 00 00 00 00 00 
    Hub ports = 4
    USBHub control callback
    unhandled setup, message = 10B01
    USBHub control callback
    USBHub control callback
    USBHub control callback
    USBHub control callback
    power turned on to all ports
    device addr = 1
    new_Pipe
    allocate_interrupt_pipe_bandwidth
      ep interval = 12
      interval = 256
     best_bandwidth = 2, at offset = 0
    pipe cap1 = F0012101
    HUB Callback (member)
    status = 2
    getstatus, port = 1
    USBHub control callback
    01 03 01 00 
    New Port Status
      status=10301  port=1
      state=0
      Device is present: 
      Has Power
    USBHub control callback
    Port Status Cleared, port=1
    timer event (20000 us): Debounce Timer, this = 1FFF4220, timer = 1FFF4538
    ports in use bitmask = 2
    getstatus, port = 1
    USBHub control callback
    01 03 00 00 
    New Port Status
      status=301  port=1
      state=2
      Device is present: 
      Has Power
    timer event (20000 us): Debounce Timer, this = 1FFF4220, timer = 1FFF4538
    ports in use bitmask = 2
    getstatus, port = 1
    USBHub control callback
    01 03 00 00 
    New Port Status
      status=301  port=1
      state=3
      Device is present: 
      Has Power
    timer event (20000 us): Debounce Timer, this = 1FFF4220, timer = 1FFF4538
    ports in use bitmask = 2
    getstatus, port = 1
    USBHub control callback
    01 03 00 00 
    New Port Status
      status=301  port=1
      state=4
      Device is present: 
      Has Power
    timer event (20000 us): Debounce Timer, this = 1FFF4220, timer = 1FFF4538
    ports in use bitmask = 2
    getstatus, port = 1
    USBHub control callback
    01 03 00 00 
    New Port Status
      status=301  port=1
      state=5
      Device is present: 
      Has Power
    timer event (20000 us): Debounce Timer, this = 1FFF4220, timer = 1FFF4538
    ports in use bitmask = 2
    getstatus, port = 1
    USBHub control callback
    01 03 00 00 
    New Port Status
      status=301  port=1
      state=6
      Device is present: 
      Has Power
    sending reset
    send_setreset
    USBHub control callback
    unhandled setup, message = 40323
    timer event (20000 us): Debounce Timer, this = 1FFF4220, timer = 1FFF4538
    ports in use bitmask = 0
    HUB Callback (member)
    status = 2
    getstatus, port = 1
    USBHub control callback
    03 03 10 00 
    New Port Status
      status=100303  port=1
      state=7
      Device is present: 
      Enabled, speed = 1.5 Mbit/sec
      Has Power
    USBHub control callback
    unhandled setup, message = 140123
    timer event (25000 us): Hello, I'm resettimer, this = 1FFF4220, timer = 1FFF4554
    port_doing_reset = 1
    PORT_RECOVERY
    new_Device: 1.5 Mbit/sec
    new_Pipe
    enumeration:
    enumeration:
    enumeration:
    Device Descriptor:
      12 01 10 01 00 00 00 08 CA 04 27 00 18 01 01 02 00 01 
        VendorID = 04CA, ProductID = 0027, Version = 0118
        Class/Subclass/Protocol = 0 / 0 / 0
        Number of Configurations = 1
    enumeration:
    enumeration:
    Manufacturer: Lite-On Technology Corp.
    enumeration:
    Product: USB Multimedia 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 18 
        Endpoint = 1 IN
        Type = Interrupt
        Max Size = 8
        Polling Interval = 24
      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 9F 00 
        HID, 1 report descriptor
      07 05 82 03 08 00 0A 
        Endpoint = 2 IN
        Type = Interrupt
        Max Size = 8
        Polling Interval = 10
    enumeration:
    USBHub memory usage = 960
    USBHub claim_device this=1FFF2520
    KeyboardController claim this=1FFF2020
    KeyboardController claim this=1FFF22A0
    HIDParser claim this=1FFF2900
    HIDParser claim this=1FFF2E00
    HIDParser claim this=1FFF3300
    HIDParser claim this=1FFF3800
    HIDParser claim this=1FFF3D00
    JoystickController claim this=1FFF4760
    Descriptor 4 = INTERFACE
    KeyboardController claim this=1FFF2020
    ep = 81
    packet size = 8
    polling interval = 24
    new_Pipe
    allocate_interrupt_pipe_bandwidth
     best_bandwidth = 3, at offset = 0, shift= 1
    Descriptor 33 = HID
    Descriptor 5 = ENDPOINT
    Descriptor 4 = INTERFACE
    KeyboardController claim this=1FFF22A0
    HIDParser claim this=1FFF2900
     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 9F 00 07 05 82 03 08 00 0A 
    report descriptor size = 159
    Single endpoint HID:
      endpoint = 82
       size = 8
       interval = 10
    new_Pipe
    allocate_interrupt_pipe_bandwidth
     best_bandwidth = 3, at offset = 8, shift= 0
    Descriptor 33 = HID
    Descriptor 5 = ENDPOINT
    *** Device KB1 4ca:27 - connected ***
      manufacturer: Lite-On Technology Corp.
      product: USB Multimedia Keyboard
    *** Device HID1 4ca:27 - connected ***
      manufacturer: Lite-On Technology Corp.
      product: USB Multimedia Keyboard
    control callback (hid)
    05 01 09 80 A1 01 85 01 05 01 19 81 29 88 15 00 25 01 95 08 75 01 81 02 C0 05 0C 09 01 A1 01 85 02 15 00 25 01 0A 83 01 0A CD 00 0A B7 00 0A E9 00 0A EA 00 0A E2 00 0A B6 00 0A B5 00 0A 8A 01 0A 92 01 0A 94 01 0A 21 02 0A 23 02 0A 24 02 0A 25 02 0A 26 02 0A 27 02 0A 2A 02 95 12 75 01 81 02 95 01 75 06 81 01 C0 05 09 09 01 A1 01 85 03 15 00 25 01 0A 2C 00 0A 18 00 0A 20 00 0A 1F 00 0A 1C 00 0A 3D 00 0A 41 00 0A 42 00 0A 43 00 0A 46 00 95 0A 75 01 81 02 95 01 75 06 81 01 C0 
      mesg = 22000681
      got report descriptor
    Found top level collection 10080
    find_driver
      driver 1FFF202C
    Found top level collection C0001
    find_driver
      driver 1FFF202C
    Found top level collection 90001
    find_driver
      driver 1FFF202C
      driver 1FFF22AC
      driver 1FFF4200
      driver 1FFF476C
      driver 1FFF4600
    Rawhid Claim: 4ca:27 usage: 90001
      driver 1FFF46A0
    Rawhid Claim: 4ca:27 usage: 90001
    KeyboardController Callback (member)
      KB Data: 00 00 04 00 00 00 00 00 
      press, key=4
      unicode = 97
    key 'a'  97 MOD: 0 OEM: 4 LEDS: 0
    KeyboardController Callback (member)
      KB Data: 00 00 00 00 00 00 00 00 
      release, key=4
    KeyboardController Callback (member)
      KB Data: 00 00 05 00 00 00 00 00 
      press, key=5
      unicode = 98
    key 'b'  98 MOD: 0 OEM: 5 LEDS: 0
    KeyboardController Callback (member)
      KB Data: 00 00 00 00 00 00 00 00 
      release, key=5
    KeyboardController Callback (member)
      KB Data: 00 00 06 00 00 00 00 00 
      press, key=6
      unicode = 99
    key 'c'  99 MOD: 0 OEM: 6 LEDS: 0
    KeyboardController Callback (member)
      KB Data: 00 00 00 00 00 00 00 00 
      release, key=6
    KeyboardController Callback (member)
      KB Data: 00 00 07 00 00 00 00 00 
      press, key=7
      unicode = 100
    key 'd'  100 MOD: 0 OEM: 7 LEDS: 0
    KeyboardController Callback (member)
      KB Data: 00 00 00 00 00 00 00 00 
      release, key=7
    But if I unplug it and plug it back in, the debug data goes nuts:
    Code:
    port change: 1C00100A
        disconnect
    disconnect_Device:
    USBDriver (available_drivers) list: 1FFF2520 -> 1FFF22A0 -> 1FFF2E00 -> 1FFF3300 -> 1FFF3800 -> 1FFF3D00 -> 1FFF4760
    USBDriver (dev->drivers) list: 1FFF4220
    disconnect driver 1FFF4220
    disconnect_Device:
    USBDriver (available_drivers) list: 1FFF2520 -> 1FFF22A0 -> 1FFF2E00 -> 1FFF3300 -> 1FFF3800 -> 1FFF3D00 -> 1FFF4760
    USBDriver (dev->drivers) list: 1FFF2900 -> 1FFF2020
    disconnect driver 1FFF2900
    disconnect driver 1FFF2020
    USBDriver (available_drivers) list: 1FFF2020 -> 1FFF2900 -> 1FFF2520 -> 1FFF22A0 -> 1FFF2E00 -> 1FFF3300 -> 1FFF3800 -> 1FFF3D00 -> 1FFF4760
    delete_Pipe 1FFF48C0
      Free transfers
        * 536823392
        * 536824608
        * 536824480 * remove * free
      Free transfers attached to QH
        * 536823488
    * Delete Pipe completed
    delete_Pipe 1FFF4040
      Free transfers
        * 536823392
        * 536824608 * remove * free
      Free transfers attached to QH
        * 536824416
    * Delete Pipe completed
    delete_Pipe 1FFF4920
      remove QH from async schedule
      Free transfers
      Free transfers attached to QH
        * 536824544
    * Delete Pipe completed
    removed Device_t from devlist
    USBDriver (available_drivers) list: 1FFF4220 -> 1FFF2020 -> 1FFF2900 -> 1FFF2520 -> 1FFF22A0 -> 1FFF2E00 -> 1FFF3300 -> 1FFF3800 -> 1FFF3D00 -> 1FFF4760
    delete_Pipe 1FFF4980
      Free transfers
        * 536823392 * remove * free
      Free transfers attached to QH
        * 536827136
    * Delete Pipe completed
    delete_Pipe 1FFF5400
      shut down async schedule
      Free transfers
      Free transfers attached to QH
        * 536823552
    * Delete Pipe completed
    removed Device_t from devlist
      disable
    *** Device Hub1 - disconnected ***
    *** Device KB1 - disconnected ***
    *** Device HID1 - disconnected ***
    port change: 10001803
        connect
      begin reset
    port change: 18001205
      port enabled
      end recovery
    new_Device: 480 Mbit/sec
    new_Pipe
    enumeration:
    enumeration:
    enumeration:
    Device Descriptor:
      12 01 00 02 09 00 02 40 E3 05 10 06 24 92 01 02 00 01 
        VendorID = 05E3, ProductID = 0610, Version = 9224
        Class/Subclass/Protocol = 9(Hub) / 0 / 2(Multi-TT)
        Number of Configurations = 1
    enumeration:
    enumeration:
    Manufacturer: GenesysLogic
    enumeration:
    Product: USB2.0 Hub
    enumeration:
    Config data length = 41
    enumeration:
    Configuration Descriptor:
      09 02 29 00 01 01 00 E0 32 
        NumInterfaces = 1
        ConfigurationValue = 1
      09 04 00 00 01 09 00 01 00 
        Interface = 0
        Number of endpoints = 1
        Class/Subclass/Protocol = 9(Hub) / 0 / 1(Single-TT)
      07 05 81 03 01 00 0C 
        Endpoint = 1 IN
        Type = Interrupt
        Max Size = 1
        Polling Interval = 12
      09 04 00 01 01 09 00 02 00 
        Interface = 0
        Number of endpoints = 1
        Class/Subclass/Protocol = 9(Hub) / 0 / 2(Multi-TT)
      07 05 81 03 01 00 0C 
        Endpoint = 1 IN
        Type = Interrupt
        Max Size = 1
        Polling Interval = 12
    enumeration:
    USBHub memory usage = 960
    USBHub claim_device this=1FFF4220
    found possible interface, altsetting=0
    found possible interface, altsetting=1
    number of interfaces found = 2
    best interface is 0 using altsetting 1
    *** Device Hub1 5e3:610 - connected ***
      manufacturer: GenesysLogic
      product: USB2.0 Hub
    USBHub control callback
    09 29 04 E0 00 32 64 00 FF 00 00 00 00 00 00 00 
    Hub ports = 4
    USBHub control callback
    unhandled setup, message = 10B01
    USBHub control callback
    USBHub control callback
    USBHub control callback
    USBHub control callback
    power turned on to all ports
    device addr = 3
    new_Pipe
    allocate_interrupt_pipe_bandwidth
      ep interval = 12
      interval = 256
     best_bandwidth = 2, at offset = 0
    pipe cap1 = F0012103
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 0
    HUB Callback (member)
    status = 1E
    getstatus, port = 1
    deferred getstatus, port = 2
    deferred getstatus, port = 3
    deferred getstatus, port = 4
    USBHub control callback
    01 03 01 00 
    New Port Status
      status=10301  port=1
      state=0
      Device is present: 
      Has Power
    USBHub control callback
    Port Status Cleared, port=1
    getstatus, port = 2
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=2
      state=0
      Has Power
    getstatus, port = 3
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=3
      state=0
      Has Power
    getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=4
      state=0
      Has Power
    timer event (20000 us): Debounce Timer, this = 1FFF4220, timer = 1FFF4538
    ports in use bitmask = 2
    getstatus, port = 1
    USBHub control callback
    01 03 00 00 
    New Port Status
      status=301  port=1
      state=2
      Device is present: 
      Has Power
    HUB Callback (member)
    status = 1C
    getstatus, port = 2
    deferred getstatus, port = 3
    deferred getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=2
      state=0
      Has Power
    getstatus, port = 3
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=3
      state=0
      Has Power
    getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=4
      state=0
      Has Power
    timer event (19999 us): Debounce Timer, this = 1FFF4220, timer = 1FFF4538
    ports in use bitmask = 2
    getstatus, port = 1
    USBHub control callback
    01 03 00 00 
    New Port Status
      status=301  port=1
      state=3
      Device is present: 
      Has Power
    timer event (20000 us): Debounce Timer, this = 1FFF4220, timer = 1FFF4538
    ports in use bitmask = 2
    getstatus, port = 1
    USBHub control callback
    01 03 00 00 
    New Port Status
      status=301  port=1
      state=4
      Device is present: 
      Has Power
    HUB Callback (member)
    status = 1C
    getstatus, port = 2
    deferred getstatus, port = 3
    deferred getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=2
      state=0
      Has Power
    getstatus, port = 3
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=3
      state=0
      Has Power
    getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=4
      state=0
      Has Power
    timer event (20000 us): Debounce Timer, this = 1FFF4220, timer = 1FFF4538
    ports in use bitmask = 2
    getstatus, port = 1
    USBHub control callback
    01 03 00 00 
    New Port Status
      status=301  port=1
      state=5
      Device is present: 
      Has Power
    HUB Callback (member)
    status = 1C
    getstatus, port = 2
    deferred getstatus, port = 3
    deferred getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=2
      state=0
      Has Power
    getstatus, port = 3
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=3
      state=0
      Has Power
    getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=4
      state=0
      Has Power
    timer event (20000 us): Debounce Timer, this = 1FFF4220, timer = 1FFF4538
    ports in use bitmask = 2
    getstatus, port = 1
    USBHub control callback
    01 03 00 00 
    New Port Status
      status=301  port=1
      state=6
      Device is present: 
      Has Power
    sending reset
    send_setreset
    USBHub control callback
    unhandled setup, message = 40323
    timer event (20000 us): Debounce Timer, this = 1FFF4220, timer = 1FFF4538
    ports in use bitmask = 0
    HUB Callback (member)
    status = 1E
    getstatus, port = 1
    deferred getstatus, port = 2
    deferred getstatus, port = 3
    deferred getstatus, port = 4
    USBHub control callback
    03 03 10 00 
    New Port Status
      status=100303  port=1
      state=7
      Device is present: 
      Enabled, speed = 1.5 Mbit/sec
      Has Power
    USBHub control callback
    unhandled setup, message = 140123
    getstatus, port = 2
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=2
      state=0
      Has Power
    getstatus, port = 3
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=3
      state=0
      Has Power
    getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=4
      state=0
      Has Power
    timer event (25000 us): Hello, I'm resettimer, this = 1FFF4220, timer = 1FFF4554
    port_doing_reset = 1
    PORT_RECOVERY
    new_Device: 1.5 Mbit/sec
    new_Pipe
    enumeration:
    enumeration:
    enumeration:
    Device Descriptor:
      12 01 10 01 00 00 00 08 CA 04 27 00 18 01 01 02 00 01 
        VendorID = 04CA, ProductID = 0027, Version = 0118
        Class/Subclass/Protocol = 0 / 0 / 0
        Number of Configurations = 1
    enumeration:
    HUB Callback (member)
    status = 1C
    getstatus, port = 2
    deferred getstatus, port = 3
    deferred getstatus, port = 4
    enumeration:
    Manufacturer: Lite-On Technology Corp.
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=2
      state=0
      Has Power
    getstatus, port = 3
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=3
      state=0
      Has Power
    getstatus, port = 4
    enumeration:
    Product: USB Multimedia Keyboard
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=4
      state=0
      Has Power
    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 18 
        Endpoint = 1 IN
        Type = Interrupt
        Max Size = 8
        Polling Interval = 24
      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 9F 00 
        HID, 1 report descriptor
      07 05 82 03 08 00 0A 
        Endpoint = 2 IN
        Type = Interrupt
        Max Size = 8
        Polling Interval = 10
    enumeration:
    KeyboardController claim this=1FFF2020
    HIDParser claim this=1FFF2900
    USBHub memory usage = 960
    USBHub claim_device this=1FFF2520
    KeyboardController claim this=1FFF22A0
    HIDParser claim this=1FFF2E00
    HIDParser claim this=1FFF3300
    HIDParser claim this=1FFF3800
    HIDParser claim this=1FFF3D00
    JoystickController claim this=1FFF4760
    Descriptor 4 = INTERFACE
    KeyboardController claim this=1FFF2020
    ep = 81
    packet size = 8
    polling interval = 24
    new_Pipe
    allocate_interrupt_pipe_bandwidth
     best_bandwidth = 3, at offset = 0, shift= 1
    Descriptor 33 = HID
    Descriptor 5 = ENDPOINT
    Descriptor 4 = INTERFACE
    HIDParser claim this=1FFF2900
     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 9F 00 07 05 82 03 08 00 0A 
    report descriptor size = 159
    Single endpoint HID:
      endpoint = 82
       size = 8
       interval = 10
    new_Pipe
    allocate_interrupt_pipe_bandwidth
     best_bandwidth = 3, at offset = 8, shift= 0
    Descriptor 33 = HID
    Descriptor 5 = ENDPOINT
    *** Device KB1 4ca:27 - connected ***
      manufacturer: Lite-On Technology Corp.
      product: USB Multimedia Keyboard
    *** Device HID1 4ca:27 - connected ***
      manufacturer: Lite-On Technology Corp.
      product: USB Multimedia Keyboard
    control callback (hid)
    05 01 09 80 A1 01 85 01 05 01 19 81 29 88 15 00 25 01 95 08 75 01 81 02 C0 05 0C 09 01 A1 01 85 02 15 00 25 01 0A 83 01 0A CD 00 0A B7 00 0A E9 00 0A EA 00 0A E2 00 0A B6 00 0A B5 00 0A 8A 01 0A 92 01 0A 94 01 0A 21 02 0A 23 02 0A 24 02 0A 25 02 0A 26 02 0A 27 02 0A 2A 02 95 12 75 01 81 02 95 01 75 06 81 01 C0 05 09 09 01 A1 01 85 03 15 00 25 01 0A 2C 00 0A 18 00 0A 20 00 0A 1F 00 0A 1C 00 0A 3D 00 0A 41 00 0A 42 00 0A 43 00 0A 46 00 95 0A 75 01 81 02 95 01 75 06 81 01 C0 
      mesg = 22000681
      got report descriptor
    Found top level collection 10080
    find_driver
      driver 1FFF202C
    Found top level collection C0001
    find_driver
      driver 1FFF202C
    Found top level collection 90001
    find_driver
      driver 1FFF202C
      driver 1FFF22AC
      driver 1FFF4200
      driver 1FFF476C
      driver 1FFF4600
    Rawhid Claim: 4ca:27 usage: 90001
      driver 1FFF46A0
    Rawhid Claim: 4ca:27 usage: 90001
    HUB Callback (member)
    status = 1C
    getstatus, port = 2
    deferred getstatus, port = 3
    deferred getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=2
      state=0
      Has Power
    getstatus, port = 3
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=3
      state=0
      Has Power
    getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=4
      state=0
      Has Power
    HUB Callback (member)
    status = 1C
    getstatus, port = 2
    deferred getstatus, port = 3
    deferred getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=2
      state=0
      Has Power
    getstatus, port = 3
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=3
      state=0
      Has Power
    getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=4
      state=0
      Has Power
    HUB Callback (member)
    status = 1C
    getstatus, port = 2
    deferred getstatus, port = 3
    deferred getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=2
      state=0
      Has Power
    getstatus, port = 3
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=3
      state=0
      Has Power
    getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=4
      state=0
      Has Power
    HUB Callback (member)
    status = 1C
    getstatus, port = 2
    deferred getstatus, port = 3
    deferred getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=2
      state=0
      Has Power
    getstatus, port = 3
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=3
      state=0
      Has Power
    getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=4
      state=0
      Has Power
    HUB Callback (member)
    status = 1C
    getstatus, port = 2
    deferred getstatus, port = 3
    deferred getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=2
      state=0
      Has Power
    getstatus, port = 3
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=3
      state=0
      Has Power
    getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=4
      state=0
      Has Power
    HUB Callback (member)
    status = 1C
    getstatus, port = 2
    deferred getstatus, port = 3
    deferred getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=2
      state=0
      Has Power
    getstatus, port = 3
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=3
      state=0
      Has Power
    getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=4
      state=0
      Has Power
    HUB Callback (member)
    status = 1C
    getstatus, port = 2
    deferred getstatus, port = 3
    deferred getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=2
      state=0
      Has Power
    getstatus, port = 3
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=3
      state=0
      Has Power
    getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=4
      state=0
      Has Power
    HUB Callback (member)
    status = 1C
    getstatus, port = 2
    deferred getstatus, port = 3
    deferred getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=2
      state=0
      Has Power
    getstatus, port = 3
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=3
      state=0
      Has Power
    getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=4
      state=0
      Has Power
    HUB Callback (member)
    status = 1C
    getstatus, port = 2
    deferred getstatus, port = 3
    deferred getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=2
      state=0
      Has Power
    getstatus, port = 3
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=3
      state=0
      Has Power
    getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=4
      state=0
      Has Power
    HUB Callback (member)
    status = 1C
    getstatus, port = 2
    deferred getstatus, port = 3
    deferred getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=2
      state=0
      Has Power
    getstatus, port = 3
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=3
      state=0
      Has Power
    getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=4
      state=0
      Has Power
    HUB Callback (member)
    status = 1C
    getstatus, port = 2
    deferred getstatus, port = 3
    deferred getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=2
      state=0
      Has Power
    getstatus, port = 3
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=3
      state=0
      Has Power
    getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=4
      state=0
      Has Power
    HUB Callback (member)
    status = 1C
    getstatus, port = 2
    deferred getstatus, port = 3
    deferred getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=2
      state=0
      Has Power
    getstatus, port = 3
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=3
      state=0
      Has Power
    getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=4
      state=0
      Has Power
    HUB Callback (member)
    status = 1C
    getstatus, port = 2
    deferred getstatus, port = 3
    deferred getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=2
      state=0
      Has Power
    getstatus, port = 3
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=3
      state=0
      Has Power
    getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=4
      state=0
      Has Power
    HUB Callback (member)
    status = 1C
    getstatus, port = 2
    deferred getstatus, port = 3
    deferred getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=2
      state=0
      Has Power
    getstatus, port = 3
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=3
      state=0
      Has Power
    getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=4
      state=0
      Has Power
    HUB Callback (member)
    status = 1C
    getstatus, port = 2
    deferred getstatus, port = 3
    deferred getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=2
      state=0
      Has Power
    getstatus, port = 3
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=3
      state=0
      Has Power
    getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=4
      state=0
      Has Power
    HUB Callback (member)
    status = 1C
    getstatus, port = 2
    deferred getstatus, port = 3
    deferred getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=2
      state=0
      Has Power
    getstatus, port = 3
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=3
      state=0
      Has Power
    getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=4
      state=0
      Has Power
    HUB Callback (member)
    status = 1C
    getstatus, port = 2
    deferred getstatus, port = 3
    deferred getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=2
      state=0
      Has Power
    getstatus, port = 3
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=3
      state=0
      Has Power
    getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=4
      state=0
      Has Power
    HUB Callback (member)
    status = 1C
    getstatus, port = 2
    deferred getstatus, port = 3
    deferred getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=2
      state=0
      Has Power
    getstatus, port = 3
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=3
      state=0
      Has Power
    getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=4
      state=0
      Has Power
    HUB Callback (member)
    status = 1C
    getstatus, port = 2
    deferred getstatus, port = 3
    deferred getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=2
      state=0
      Has Power
    getstatus, port = 3
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=3
      state=0
      Has Power
    getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=4
      state=0
      Has Power
    HUB Callback (member)
    status = 1C
    getstatus, port = 2
    deferred getstatus, port = 3
    deferred getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=2
      state=0
      Has Power
    getstatus, port = 3
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=3
      state=0
      Has Power
    getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=4
      state=0
      Has Power
    HUB Callback (member)
    status = 1C
    getstatus, port = 2
    deferred getstatus, port = 3
    deferred getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=2
      state=0
      Has Power
    getstatus, port = 3
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=3
      state=0
      Has Power
    getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=4
      state=0
      Has Power
    HUB Callback (member)
    status = 1C
    getstatus, port = 2
    deferred getstatus, port = 3
    deferred getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=2
      state=0
      Has Power
    getstatus, port = 3
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=3
      state=0
      Has Power
    getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=4
      state=0
      Has Power
    HUB Callback (member)
    status = 1C
    getstatus, port = 2
    deferred getstatus, port = 3
    deferred getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=2
      state=0
      Has Power
    getstatus, port = 3
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=3
      state=0
      Has Power
    getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=4
      state=0
      Has Power
    HUB Callback (member)
    status = 1C
    getstatus, port = 2
    deferred getstatus, port = 3
    deferred getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=2
      state=0
      Has Power
    getstatus, port = 3
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=3
      state=0
      Has Power
    getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=4
      state=0
      Has Power
    HUB Callback (member)
    status = 1C
    getstatus, port = 2
    deferred getstatus, port = 3
    deferred getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=2
      state=0
      Has Power
    getstatus, port = 3
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=3
      state=0
      Has Power
    getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=4
      state=0
      Has Power
    HUB Callback (member)
    status = 1C
    getstatus, port = 2
    deferred getstatus, port = 3
    deferred getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=2
      state=0
      Has Power
    getstatus, port = 3
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=3
      state=0
      Has Power
    getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=4
      state=0
      Has Power
    HUB Callback (member)
    status = 1C
    getstatus, port = 2
    deferred getstatus, port = 3
    deferred getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=2
      state=0
      Has Power
    getstatus, port = 3
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=3
      state=0
      Has Power
    getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=4
      state=0
      Has Power
    HUB Callback (member)
    status = 1C
    getstatus, port = 2
    deferred getstatus, port = 3
    deferred getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=2
      state=0
      Has Power
    getstatus, port = 3
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=3
      state=0
      Has Power
    getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=4
      state=0
      Has Power
    HUB Callback (member)
    status = 1C
    getstatus, port = 2
    deferred getstatus, port = 3
    deferred getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=2
      state=0
      Has Power
    getstatus, port = 3
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=3
      state=0
      Has Power
    getstatus, port = 4
    USBHub control callback
    00 01 01 00 
    New Port Status
      status=10100  port=4
      state=0
      Has Power
    port change: 1C00100A
        disconnect
    disconnect_Device:
    USBDriver (available_drivers) list: 1FFF2520 -> 1FFF22A0 -> 1FFF2E00 -> 1FFF3300 -> 1FFF3800 -> 1FFF3D00 -> 1FFF4760
    USBDriver (dev->drivers) list: 1FFF4220
    disconnect driver 1FFF4220
    disconnect_Device:
    USBDriver (available_drivers) list: 1FFF2520 -> 1FFF22A0 -> 1FFF2E00 -> 1FFF3300 -> 1FFF3800 -> 1FFF3D00 -> 1FFF4760
    USBDriver (dev->drivers) list: 1FFF2900 -> 1FFF2020
    disconnect driver 1FFF2900
    disconnect driver 1FFF2020
    USBDriver (available_drivers) list: 1FFF2020 -> 1FFF2900 -> 1FFF2520 -> 1FFF22A0 -> 1FFF2E00 -> 1FFF3300 -> 1FFF3800 -> 1FFF3D00 -> 1FFF4760
    delete_Pipe 1FFF4040
      Free transfers
        * 536827200 * remove * free
        * 536827008
        * 536824672
      Free transfers attached to QH
        * 536823392
    * Delete Pipe completed
    delete_Pipe 1FFF48C0
      Free transfers
        * 536827008 * remove * free
        * 536824672
      Free transfers attached to QH
        * 536827072
    * Delete Pipe completed
    delete_Pipe 1FFF4920
      remove QH from async schedule
      Free transfers
      Free transfers attached to QH
        * 536824480
    * Delete Pipe completed
    removed Device_t from devlist
    USBDriver (available_drivers) list: 1FFF4220 -> 1FFF2020 -> 1FFF2900 -> 1FFF2520 -> 1FFF22A0 -> 1FFF2E00 -> 1FFF3300 -> 1FFF3800 -> 1FFF3D00 -> 1FFF4760
    delete_Pipe 1FFF4980
      Free transfers
        * 536824672 * remove * defer free until QH
      Free transfers attached to QH
        * 536824672
        * 536824544
    * Delete Pipe completed
    delete_Pipe 1FFF5400
      shut down async schedule
      Free transfers
      Free transfers attached to QH
        * 536823552
    * Delete Pipe completed
    removed Device_t from devlist
      disable
    *** Device Hub1 - disconnected ***
    *** Device KB1 - disconnected ***
    *** Device HID1 - disconnected ***
    I disconnected it quickly as it would continue to spewing...

    I purchased this one from Amazon: https://smile.amazon.com/gp/product/...?ie=UTF8&psc=1

Posting Permissions

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