Skip to content

Latest commit

 

History

History
630 lines (541 loc) · 53.8 KB

enumeration.md

File metadata and controls

630 lines (541 loc) · 53.8 KB

PicoUSB enumeration

Using a Pico W as Host and a Pico Debug Probe as Device

pico-usb

Example console output (March 3, 2024)

==[ USB host example]==

USB host reset

┌───────┬──────┬─────────────────────────────────────┬────────────┐
│INT    │      │ 00000000 00001111 11111111 11111011 │ 0x000ffffb │
└───────┮──────┮─────────────────────────────────────┮────────────┘

=> 1) New ISR, device

┌───────┬──────┬─────────────────────────────────────┬────────────┐
│Frame  │   17 │ Interrupt Handler                   │ 0  EP0 OUT │
├───────┌──────┌─────────────────────────────────────┌─────────────
│INTR   │      │ 00000000 00000000 00000000 00000101 │ 0x00000005 │
│INTS   │      │ 00000000 00000000 00000000 00000001 │ 0x00000001 │
│DAR    │      │ 00000000 00000000 00000000 00000000 │ 0x00000000 │
│SSR    │      │ 00000000 00000000 00000010 00000101 │ 0x00000205 │
│SCR    │      │ 00000000 00000000 10001110 00000000 │ 0x00008e00 │
│ECR    │      │ 11010000 00000000 00000001 10000000 │ 0xd0000180 │
│BCR    │      │ 00000000 00000000 00000000 00000000 │ 0x00000000 │
├───────┌──────┌─────────────────────────────────────┌─────────────
│CONNECT│      │ New device connected                │ Task #2    │
└───────┮──────┮─────────────────────────────────────┮────────────┘

=> 2) New task, TASK_CONNECT

Device connected (full speed)
Enumeration started
Starting GET_MAXSIZE
Get device descriptor

┌───────┬──────┬─────────────────────────────────────┬────────────┐
│Frame  │  159 │ Transfer started                    │ 0  EP0  IN │
├───────┌──────┌─────────────────────────────────────┌─────────────
│DAR    │      │ 00000000 00000000 00000000 00000000 │ 0x00000000 │
│SSR    │      │ 00000000 00000000 00000010 00000101 │ 0x00000205 │
│SCR    │      │ 00000000 00000000 10001110 00000000 │ 0x00008e00 │
│ECR    │      │ 11010000 00000000 00000001 10000000 │ 0xd0000180 │
│BCR    │      │ 00000000 00000000 00000000 00000000 │ 0x00000000 │
├───────┌──────┌─────────────────────────────────────┎─────────────
│SETUP  │ 0000 │ 80 06 00 01 00 00 08 00                          │ ........
└───────┮──────┮──────────────────────────────────────────────────┘

=> 3) New ISR, buffer, last

┌───────┬──────┬─────────────────────────────────────┬────────────┐
│Frame  │  279 │ Interrupt Handler                   │ 0  EP0  IN │
├───────┌──────┌─────────────────────────────────────┌─────────────
│INTR   │      │ 00000000 00000000 00000000 00011100 │ 0x0000001c │
│INTS   │      │ 00000000 00000000 00000000 00011000 │ 0x00000018 │
│DAR    │      │ 00000000 00000000 00000000 00000000 │ 0x00000000 │
│SSR    │      │ 01010000 00000100 00000010 00000101 │ 0x50040205 │
│SCR    │      │ 00000000 00000000 10001110 00001010 │ 0x00008e0a │
│ECR    │      │ 10010000 00000000 00000001 10000000 │ 0x90000180 │
│BCR    │      │ 00000000 00000000 11100000 00001000 │ 0x0000e008 │
├───────┌──────┌─────────────────────────────────────┌─────────────
│BUF/1  │      │ 00000000 00000000 00000000 00000001 │ 0x00000001 │
│IN/1   │ 0000 │ 12 01 00 02 00 00 00 08                          │ ........
├───────┌──────┌─────────────────────────────────────┎─────────────
│XFER   │    8 │ Device 0                              Task #4    │
│Data   │ 0000 │ 12 01 00 02 00 00 00 08                          │ ........
└───────┮──────┮──────────────────────────────────────────────────┘

=> 4) New task, TASK_TRANSFER

Calling transfer_zlp

┌───────┬──────┬─────────────────────────────────────┬────────────┐
│Frame  │  454 │ Transfer started                    │ 0  EP0 OUT │
├───────┌──────┌─────────────────────────────────────┌─────────────
│DAR    │      │ 00000000 00000000 00000000 00000000 │ 0x00000000 │
│SSR    │      │ 01010000 00000000 00000010 00000101 │ 0x50000205 │
│SCR    │      │ 00000000 00000000 10001110 00001010 │ 0x00008e0a │
│ECR    │      │ 10010000 00000000 00000001 10000000 │ 0x90000180 │
│BCR    │      │ 00000000 00000000 11100000 00001000 │ 0x0000e008 │
└───────┮──────┮─────────────────────────────────────┮────────────┘

=> 5) New ISR, buffer, last

┌───────┬──────┬─────────────────────────────────────┬────────────┐
│Frame  │  549 │ Interrupt Handler                   │ 0  EP0 OUT │
├───────┌──────┌─────────────────────────────────────┌─────────────
│INTR   │      │ 00000000 00000000 00000000 00011100 │ 0x0000001c │
│INTS   │      │ 00000000 00000000 00000000 00011000 │ 0x00000018 │
│DAR    │      │ 00000000 00000000 00000000 00000000 │ 0x00000000 │
│SSR    │      │ 01010000 00000100 00000010 00000101 │ 0x50040205 │
│SCR    │      │ 00000000 00000000 10001110 00000100 │ 0x00008e04 │
│ECR    │      │ 10010000 00000000 00000001 10000000 │ 0x90000180 │
│BCR    │      │ 00000000 00000000 01100000 00000000 │ 0x00006000 │
├───────┌──────┌─────────────────────────────────────┌─────────────
│BUF/1  │      │ 00000000 00000000 00000000 00000001 │ 0x00000001 │
├───────┌──────┌─────────────────────────────────────┌─────────────
│ZLP    │ OUT  │ Device 0                            │ Task #6    │
└───────┮──────┮─────────────────────────────────────┮────────────┘

=> 6) New task, TASK_TRANSFER

Calling enumerate
Starting SET_ADDRESS
Set device address to 1

┌───────┬──────┬─────────────────────────────────────┬────────────┐
│Frame  │  713 │ Transfer started                    │ 0  EP0  IN │
├───────┌──────┌─────────────────────────────────────┌─────────────
│DAR    │      │ 00000000 00000000 00000000 00000000 │ 0x00000000 │
│SSR    │      │ 01010000 00000000 00000010 00000101 │ 0x50000205 │
│SCR    │      │ 00000000 00000000 10001110 00000100 │ 0x00008e04 │
│ECR    │      │ 11010000 00000000 00000001 10000000 │ 0xd0000180 │
│BCR    │      │ 00000000 00000000 01100000 00000000 │ 0x00006000 │
├───────┌──────┌─────────────────────────────────────┎─────────────
│SETUP  │ 0000 │ 00 05 01 00 00 00 00 00                          │ ........
└───────┮──────┮──────────────────────────────────────────────────┘

=> 7) New ISR, buffer, last

┌───────┬──────┬─────────────────────────────────────┬────────────┐
│Frame  │  833 │ Interrupt Handler                   │ 0  EP0  IN │
├───────┌──────┌─────────────────────────────────────┌─────────────
│INTR   │      │ 00000000 00000000 00000000 00011100 │ 0x0000001c │
│INTS   │      │ 00000000 00000000 00000000 00011000 │ 0x00000018 │
│DAR    │      │ 00000000 00000000 00000000 00000000 │ 0x00000000 │
│SSR    │      │ 01010000 00000100 00000010 00000101 │ 0x50040205 │
│SCR    │      │ 00000000 00000000 10001110 00001010 │ 0x00008e0a │
│ECR    │      │ 10010000 00000000 00000001 10000000 │ 0x90000180 │
│BCR    │      │ 00000000 00000000 11100000 00000000 │ 0x0000e000 │
├───────┌──────┌─────────────────────────────────────┌─────────────
│BUF/1  │      │ 00000000 00000000 00000000 00000001 │ 0x00000001 │
├───────┌──────┌─────────────────────────────────────┌─────────────
│ZLP    │ IN   │ Device 0                            │ Task #8    │
└───────┮──────┮─────────────────────────────────────┮────────────┘

=> 8) New task, TASK_TRANSFER

Calling enumerate
Starting GET_DEVICE
Get device descriptor

┌───────┬──────┬─────────────────────────────────────┬────────────┐
│Frame  │  997 │ Transfer started                    │ 1  EP0  IN │
├───────┌──────┌─────────────────────────────────────┌─────────────
│DAR    │      │ 00000000 00000000 00000000 00000000 │ 0x00000000 │
│SSR    │      │ 01010000 00000000 00000010 00000101 │ 0x50000205 │
│SCR    │      │ 00000000 00000000 10001110 00001010 │ 0x00008e0a │
│ECR    │      │ 10010000 00000000 00000001 10000000 │ 0x90000180 │
│BCR    │      │ 00000000 00000000 11100000 00000000 │ 0x0000e000 │
├───────┌──────┌─────────────────────────────────────┎─────────────
│SETUP  │ 0000 │ 80 06 00 01 00 00 12 00                          │ ........
└───────┮──────┮──────────────────────────────────────────────────┘

=> 9) New ISR, buffer

┌───────┬──────┬─────────────────────────────────────┬────────────┐
│Frame  │ 1117 │ Interrupt Handler                   │ 1  EP0  IN │
├───────┌──────┌─────────────────────────────────────┌─────────────
│INTR   │      │ 00000000 00000000 00000000 00010100 │ 0x00000014 │
│INTS   │      │ 00000000 00000000 00000000 00010000 │ 0x00000010 │
│DAR    │      │ 00000000 00000000 00000000 00000001 │ 0x00000001 │
│SSR    │      │ 01010000 00000000 00000010 00000101 │ 0x50000205 │
│SCR    │      │ 00000000 00000000 10001110 00001010 │ 0x00008e0a │
│ECR    │      │ 11010000 00000000 00000001 10000000 │ 0xd0000180 │
│BCR    │      │ 10000000 00001000 10100000 00001000 │ 0x8008a008 │
├───────┌──────┌─────────────────────────────────────┌─────────────
│BUF/2  │      │ 00000000 00000000 00000000 00000001 │ 0x00000001 │
│IN/1   │ 0000 │ 12 01 00 02 00 00 00 08                          │ ........
│IN/2   │ 0000 │ 03 04 18 cd 00 04 01 02                          │ ........
└───────┮──────┮─────────────────────────────────────┮────────────┘

=> 10) New ISR, buffer, last

┌───────┬──────┬─────────────────────────────────────┬────────────┐
│Frame  │ 1265 │ Interrupt Handler                   │ 1  EP0  IN │
├───────┌──────┌─────────────────────────────────────┌─────────────
│INTR   │      │ 00000000 00000000 00000000 00011100 │ 0x0000001c │
│INTS   │      │ 00000000 00000000 00000000 00011000 │ 0x00000018 │
│DAR    │      │ 00000000 00000000 00000000 00000001 │ 0x00000001 │
│SSR    │      │ 01010000 00000100 00000010 00000101 │ 0x50040205 │
│SCR    │      │ 00000000 00000000 10001110 00001010 │ 0x00008e0a │
│ECR    │      │ 10010000 00000000 00000001 10000000 │ 0x90000180 │
│BCR    │      │ 00000000 00000000 11100000 00000010 │ 0x0000e002 │
├───────┌──────┌─────────────────────────────────────┌─────────────
│BUF/1  │      │ 00000000 00000000 00000000 00000001 │ 0x00000001 │
│IN/1   │ 0000 │ 03 01                                            │ ..
├───────┌──────┌─────────────────────────────────────┎─────────────
│XFER   │   18 │ Device 1                              Task #11   │
│Data   │ 0000 │ 12 01 00 02 00 00 00 08 03 04 18 cd 00 04 01 02  │ ................
│Data   │ 0010 │ 03 01                                            │ ..
└───────┮──────┮──────────────────────────────────────────────────┘

=> 11) New task, TASK_TRANSFER

Calling transfer_zlp

┌───────┬──────┬─────────────────────────────────────┬────────────┐
│Frame  │ 1446 │ Transfer started                    │ 1  EP0 OUT │
├───────┌──────┌─────────────────────────────────────┌─────────────
│DAR    │      │ 00000000 00000000 00000000 00000001 │ 0x00000001 │
│SSR    │      │ 01010000 00000000 00000010 00000101 │ 0x50000205 │
│SCR    │      │ 00000000 00000000 10001110 00001010 │ 0x00008e0a │
│ECR    │      │ 10010000 00000000 00000001 10000000 │ 0x90000180 │
│BCR    │      │ 00000000 00000000 11100000 00000010 │ 0x0000e002 │
└───────┮──────┮─────────────────────────────────────┮────────────┘

=> 12) New ISR, buffer, last

┌───────┬──────┬─────────────────────────────────────┬────────────┐
│Frame  │ 1542 │ Interrupt Handler                   │ 1  EP0 OUT │
├───────┌──────┌─────────────────────────────────────┌─────────────
│INTR   │      │ 00000000 00000000 00000000 00011100 │ 0x0000001c │
│INTS   │      │ 00000000 00000000 00000000 00011000 │ 0x00000018 │
│DAR    │      │ 00000000 00000000 00000000 00000001 │ 0x00000001 │
│SSR    │      │ 01010000 00000100 00000010 00000101 │ 0x50040205 │
│SCR    │      │ 00000000 00000000 10001110 00000100 │ 0x00008e04 │
│ECR    │      │ 10010000 00000000 00000001 10000000 │ 0x90000180 │
│BCR    │      │ 00000000 00000000 01100000 00000000 │ 0x00006000 │
├───────┌──────┌─────────────────────────────────────┌─────────────
│BUF/1  │      │ 00000000 00000000 00000000 00000001 │ 0x00000001 │
├───────┌──────┌─────────────────────────────────────┌─────────────
│ZLP    │ OUT  │ Device 1                            │ Task #13   │
└───────┮──────┮─────────────────────────────────────┮────────────┘

=> 13) New task, TASK_TRANSFER

Calling enumerate
Connected Device:
  Total Length: 18
  USB Version:  2.0
  Device Class: 0
    Subclass:   0
    Protocol:   0
  Packet Size:  8
  Vendor Id:    0x0403
  Product Id:   0xcd18
  Version:      4.0
  Manufacturer: [#1]
  Product:      [#2]
  Serial:       [#3]

Starting GET_CONFIG
Get configuration descriptor

┌───────┬──────┬─────────────────────────────────────┬────────────┐
│Frame  │ 1729 │ Transfer started                    │ 1  EP0  IN │
├───────┌──────┌─────────────────────────────────────┌─────────────
│DAR    │      │ 00000000 00000000 00000000 00000001 │ 0x00000001 │
│SSR    │      │ 01010000 00000000 00000010 00000101 │ 0x50000205 │
│SCR    │      │ 00000000 00000000 10001110 00000100 │ 0x00008e04 │
│ECR    │      │ 10010000 00000000 00000001 10000000 │ 0x90000180 │
│BCR    │      │ 00000000 00000000 01100000 00000000 │ 0x00006000 │
├───────┌──────┌─────────────────────────────────────┎─────────────
│SETUP  │ 0000 │ 80 06 00 02 00 00 09 00                          │ ........
└───────┮──────┮──────────────────────────────────────────────────┘

=> 14) New ISR, buffer, last

┌───────┬──────┬─────────────────────────────────────┬────────────┐
│Frame  │ 1850 │ Interrupt Handler                   │ 1  EP0  IN │
├───────┌──────┌─────────────────────────────────────┌─────────────
│INTR   │      │ 00000000 00000000 00000000 00011100 │ 0x0000001c │
│INTS   │      │ 00000000 00000000 00000000 00011000 │ 0x00000018 │
│DAR    │      │ 00000000 00000000 00000000 00000001 │ 0x00000001 │
│SSR    │      │ 01010000 00000100 00000010 00000101 │ 0x50040205 │
│SCR    │      │ 00000000 00000000 10001110 00001010 │ 0x00008e0a │
│ECR    │      │ 11010000 00000000 00000001 10000000 │ 0xd0000180 │
│BCR    │      │ 11000000 00000001 10100000 00001000 │ 0xc001a008 │
├───────┌──────┌─────────────────────────────────────┌─────────────
│BUF/2  │      │ 00000000 00000000 00000000 00000001 │ 0x00000001 │
│IN/1   │ 0000 │ 09 02 20 00 01 01 00 c0                          │ .. .....
│IN/2   │ 0000 │ 00                                               │ .
├───────┌──────┌─────────────────────────────────────┎─────────────
│XFER   │    9 │ Device 1                              Task #15   │
│Data   │ 0000 │ 09 02 20 00 01 01 00 c0 00                       │ .. ......
└───────┮──────┮──────────────────────────────────────────────────┘

=> 15) New task, TASK_TRANSFER

Calling transfer_zlp

┌───────┬──────┬─────────────────────────────────────┬────────────┐
│Frame  │ 2031 │ Transfer started                    │ 1  EP0 OUT │
├───────┌──────┌─────────────────────────────────────┌─────────────
│DAR    │      │ 00000000 00000000 00000000 00000001 │ 0x00000001 │
│SSR    │      │ 01010000 00000000 00000010 00000101 │ 0x50000205 │
│SCR    │      │ 00000000 00000000 10001110 00001010 │ 0x00008e0a │
│ECR    │      │ 11010000 00000000 00000001 10000000 │ 0xd0000180 │
│BCR    │      │ 11000000 00000001 10100000 00001000 │ 0xc001a008 │
└───────┮──────┮─────────────────────────────────────┮────────────┘

=> 16) New ISR, buffer, last

┌───────┬──────┬─────────────────────────────────────┬────────────┐
│Frame  │   79 │ Interrupt Handler                   │ 1  EP0 OUT │
├───────┌──────┌─────────────────────────────────────┌─────────────
│INTR   │      │ 00000000 00000000 00000000 00011100 │ 0x0000001c │
│INTS   │      │ 00000000 00000000 00000000 00011000 │ 0x00000018 │
│DAR    │      │ 00000000 00000000 00000000 00000001 │ 0x00000001 │
│SSR    │      │ 01010000 00000100 00000010 00000101 │ 0x50040205 │
│SCR    │      │ 00000000 00000000 10001110 00000100 │ 0x00008e04 │
│ECR    │      │ 10010000 00000000 00000001 10000000 │ 0x90000180 │
│BCR    │      │ 00000000 00000000 01100000 00000000 │ 0x00006000 │
├───────┌──────┌─────────────────────────────────────┌─────────────
│BUF/1  │      │ 00000000 00000000 00000000 00000001 │ 0x00000001 │
├───────┌──────┌─────────────────────────────────────┌─────────────
│ZLP    │ OUT  │ Device 1                            │ Task #17   │
└───────┮──────┮─────────────────────────────────────┮────────────┘

=> 17) New task, TASK_TRANSFER

Calling enumerate
Configuration Descriptor:
  Total Length: 32
  Interfaces:   1
  Config Value: 1
  Config Name:  [#0]
  Attributes:   Self-powered
  Max power:    0mA

Starting SET_CONFIG
Set configuration to 1

┌───────┬──────┬─────────────────────────────────────┬────────────┐
│Frame  │  256 │ Transfer started                    │ 1  EP0  IN │
├───────┌──────┌─────────────────────────────────────┌─────────────
│DAR    │      │ 00000000 00000000 00000000 00000001 │ 0x00000001 │
│SSR    │      │ 01010000 00000000 00000010 00000101 │ 0x50000205 │
│SCR    │      │ 00000000 00000000 10001110 00000100 │ 0x00008e04 │
│ECR    │      │ 10010000 00000000 00000001 10000000 │ 0x90000180 │
│BCR    │      │ 00000000 00000000 01100000 00000000 │ 0x00006000 │
├───────┌──────┌─────────────────────────────────────┎─────────────
│SETUP  │ 0000 │ 00 09 01 00 00 00 00 00                          │ ........
└───────┮──────┮──────────────────────────────────────────────────┘

=> 18) New ISR, buffer, last

┌───────┬──────┬─────────────────────────────────────┬────────────┐
│Frame  │  377 │ Interrupt Handler                   │ 1  EP0  IN │
├───────┌──────┌─────────────────────────────────────┌─────────────
│INTR   │      │ 00000000 00000000 00000000 00011100 │ 0x0000001c │
│INTS   │      │ 00000000 00000000 00000000 00011000 │ 0x00000018 │
│DAR    │      │ 00000000 00000000 00000000 00000001 │ 0x00000001 │
│SSR    │      │ 01010000 00000100 00000010 00000101 │ 0x50040205 │
│SCR    │      │ 00000000 00000000 10001110 00001010 │ 0x00008e0a │
│ECR    │      │ 10010000 00000000 00000001 10000000 │ 0x90000180 │
│BCR    │      │ 00000000 00000000 11100000 00000000 │ 0x0000e000 │
├───────┌──────┌─────────────────────────────────────┌─────────────
│BUF/1  │      │ 00000000 00000000 00000000 00000001 │ 0x00000001 │
├───────┌──────┌─────────────────────────────────────┌─────────────
│ZLP    │ IN   │ Device 1                            │ Task #19   │
└───────┮──────┮─────────────────────────────────────┮────────────┘

=> 19) New task, TASK_TRANSFER

Calling enumerate
Enumeration completed

┌───────┬──────┬─────────────────────────────────────┬────────────┐
│Frame  │  539 │ Transfer started                    │ 1  EP0  IN │
├───────┌──────┌─────────────────────────────────────┌─────────────
│DAR    │      │ 00000000 00000000 00000000 00000001 │ 0x00000001 │
│SSR    │      │ 01010000 00000000 00000010 00000101 │ 0x50000205 │
│SCR    │      │ 00000000 00000000 10001110 00001010 │ 0x00008e0a │
│ECR    │      │ 10010000 00000000 00000001 10000000 │ 0x90000180 │
│BCR    │      │ 00000000 00000000 11100000 00000000 │ 0x0000e000 │
├───────┌──────┌─────────────────────────────────────┎─────────────
│SETUP  │ 0000 │ 80 06 01 03 00 00 ff 00                          │ ........
└───────┮──────┮──────────────────────────────────────────────────┘

=> 20) New ISR, buffer

┌───────┬──────┬─────────────────────────────────────┬────────────┐
│Frame  │  659 │ Interrupt Handler                   │ 1  EP0  IN │
├───────┌──────┌─────────────────────────────────────┌─────────────
│INTR   │      │ 00000000 00000000 00000000 00010100 │ 0x00000014 │
│INTS   │      │ 00000000 00000000 00000000 00010000 │ 0x00000010 │
│DAR    │      │ 00000000 00000000 00000000 00000001 │ 0x00000001 │
│SSR    │      │ 01010000 00000000 00000010 00000101 │ 0x50000205 │
│SCR    │      │ 00000000 00000000 10001110 00001010 │ 0x00008e0a │
│ECR    │      │ 11010000 00000000 00000001 10000000 │ 0xd0000180 │
│BCR    │      │ 10000000 00001000 10100000 00001000 │ 0x8008a008 │
├───────┌──────┌─────────────────────────────────────┌─────────────
│BUF/2  │      │ 00000000 00000000 00000000 00000001 │ 0x00000001 │
│IN/1   │ 0000 │ 18 03 41 00 62 00 61 00                          │ ..A.b.a.
│IN/2   │ 0000 │ 78 00 69 00 73 00 20 00                          │ x.i.s. .
└───────┮──────┮─────────────────────────────────────┮────────────┘

=> 21) New ISR, buffer, last

┌───────┬──────┬─────────────────────────────────────┬────────────┐
│Frame  │  807 │ Interrupt Handler                   │ 1  EP0  IN │
├───────┌──────┌─────────────────────────────────────┌─────────────
│INTR   │      │ 00000000 00000000 00000000 00011100 │ 0x0000001c │
│INTS   │      │ 00000000 00000000 00000000 00011000 │ 0x00000018 │
│DAR    │      │ 00000000 00000000 00000000 00000001 │ 0x00000001 │
│SSR    │      │ 01010000 00000100 00000010 00000101 │ 0x50040205 │
│SCR    │      │ 00000000 00000000 10001110 00001010 │ 0x00008e0a │
│ECR    │      │ 11010000 00000000 00000001 10000000 │ 0xd0000180 │
│BCR    │      │ 10000000 00000000 10100000 00001000 │ 0x8000a008 │
├───────┌──────┌─────────────────────────────────────┌─────────────
│BUF/2  │      │ 00000000 00000000 00000000 00000001 │ 0x00000001 │
│IN/1   │ 0000 │ 49 00 6e 00 63 00 2e 00                          │ I.n.c...
├───────┌──────┌─────────────────────────────────────┎─────────────
│XFER   │   24 │ Device 1                              Task #22   │
│Data   │ 0000 │ 18 03 41 00 62 00 61 00 78 00 69 00 73 00 20 00  │ ..A.b.a.x.i.s. .
│Data   │ 0010 │ 49 00 6e 00 63 00 2e 00                          │ I.n.c...
└───────┮──────┮──────────────────────────────────────────────────┘

=> 22) New task, TASK_TRANSFER

Calling transfer_zlp

┌───────┬──────┬─────────────────────────────────────┬────────────┐
│Frame  │  989 │ Transfer started                    │ 1  EP0 OUT │
├───────┌──────┌─────────────────────────────────────┌─────────────
│DAR    │      │ 00000000 00000000 00000000 00000001 │ 0x00000001 │
│SSR    │      │ 01010000 00000000 00000010 00000101 │ 0x50000205 │
│SCR    │      │ 00000000 00000000 10001110 00001010 │ 0x00008e0a │
│ECR    │      │ 11010000 00000000 00000001 10000000 │ 0xd0000180 │
│BCR    │      │ 10000000 00000000 10100000 00001000 │ 0x8000a008 │
└───────┮──────┮─────────────────────────────────────┮────────────┘

=> 23) New ISR, buffer, last

┌───────┬──────┬─────────────────────────────────────┬────────────┐
│Frame  │ 1085 │ Interrupt Handler                   │ 1  EP0 OUT │
├───────┌──────┌─────────────────────────────────────┌─────────────
│INTR   │      │ 00000000 00000000 00000000 00011100 │ 0x0000001c │
│INTS   │      │ 00000000 00000000 00000000 00011000 │ 0x00000018 │
│DAR    │      │ 00000000 00000000 00000000 00000001 │ 0x00000001 │
│SSR    │      │ 01010000 00000100 00000010 00000101 │ 0x50040205 │
│SCR    │      │ 00000000 00000000 10001110 00000100 │ 0x00008e04 │
│ECR    │      │ 10010000 00000000 00000001 10000000 │ 0x90000180 │
│BCR    │      │ 00000000 00000000 01100000 00000000 │ 0x00006000 │
├───────┌──────┌─────────────────────────────────────┌─────────────
│BUF/1  │      │ 00000000 00000000 00000000 00000001 │ 0x00000001 │
├───────┌──────┌─────────────────────────────────────┌─────────────
│ZLP    │ OUT  │ Device 1                            │ Task #24   │
└───────┮──────┮─────────────────────────────────────┮────────────┘
[String #1]: "Abaxis Inc."

┌───────┬──────┬─────────────────────────────────────┬────────────┐
│Frame  │ 1242 │ Transfer started                    │ 1  EP0  IN │
├───────┌──────┌─────────────────────────────────────┌─────────────
│DAR    │      │ 00000000 00000000 00000000 00000001 │ 0x00000001 │
│SSR    │      │ 01010000 00000000 00000010 00000101 │ 0x50000205 │
│SCR    │      │ 00000000 00000000 10001110 00000100 │ 0x00008e04 │
│ECR    │      │ 10010000 00000000 00000001 10000000 │ 0x90000180 │
│BCR    │      │ 00000000 00000000 01100000 00000000 │ 0x00006000 │
├───────┌──────┌─────────────────────────────────────┎─────────────
│SETUP  │ 0000 │ 80 06 02 03 00 00 ff 00                          │ ........
└───────┮──────┮──────────────────────────────────────────────────┘

=> 24) Ne
=> 25) New ISR, buffer

┌───────┬──────┬─────────────────────────────────────┬────────────┐
│Frame  │ 1363 │ Interrupt Handler                   │ 1  EP0  IN │
├───────┌──────┌─────────────────────────────────────┌─────────────
│INTR   │      │ 00000000 00000000 00000000 00010100 │ 0x00000014 │
│INTS   │      │ 00000000 00000000 00000000 00010000 │ 0x00000010 │
│DAR    │      │ 00000000 00000000 00000000 00000001 │ 0x00000001 │
│SSR    │      │ 01010000 00000000 00000010 00000101 │ 0x50000205 │
│SCR    │      │ 00000000 00000000 10001110 00001010 │ 0x00008e0a │
│ECR    │      │ 11010000 00000000 00000001 10000000 │ 0xd0000180 │
│BCR    │      │ 10000000 00001000 10100000 00001000 │ 0x8008a008 │
├───────┌──────┌─────────────────────────────────────┌─────────────
│BUF/2  │      │ 00000000 00000000 00000000 00000001 │ 0x00000001 │
│IN/1   │ 0000 │ 1e 03 70 00 69 00 63 00                          │ ..p.i.c.
│IN/2   │ 0000 │ 63 00 6f 00 6c 00 6f 00                          │ c.o.l.o.
└───────┮──────┮─────────────────────────────────────┮────────────┘

=> 26) New ISR, buffer, last

┌───────┬──────┬─────────────────────────────────────┬────────────┐
│Frame  │ 1511 │ Interrupt Handler                   │ 1  EP0  IN │
├───────┌──────┌─────────────────────────────────────┌─────────────
│INTR   │      │ 00000000 00000000 00000000 00011100 │ 0x0000001c │
│INTS   │      │ 00000000 00000000 00000000 00011000 │ 0x00000018 │
│DAR    │      │ 00000000 00000000 00000000 00000001 │ 0x00000001 │
│SSR    │      │ 01010000 00000100 00000010 00000101 │ 0x50040205 │
│SCR    │      │ 00000000 00000000 10001110 00001010 │ 0x00008e0a │
│ECR    │      │ 11010000 00000000 00000001 10000000 │ 0xd0000180 │
│BCR    │      │ 10000000 00000110 10100000 00001000 │ 0x8006a008 │
├───────┌──────┌─────────────────────────────────────┌─────────────
│BUF/2  │      │ 00000000 00000000 00000000 00000001 │ 0x00000001 │
│IN/1   │ 0000 │ 20 00 78 00 70 00 72 00                          │  .x.p.r.
│IN/2   │ 0000 │ 65 00 73 00 73 00                                │ e.s.s.
├───────┌──────┌─────────────────────────────────────┎─────────────
│XFER   │   30 │ Device 1                              Task #27   │
│Data   │ 0000 │ 1e 03 70 00 69 00 63 00 63 00 6f 00 6c 00 6f 00  │ ..p.i.c.c.o.l.o.
│Data   │ 0010 │ 20 00 78 00 70 00 72 00 65 00 73 00 73 00        │  .x.p.r.e.s.s.
└───────┮──────┮──────────────────────────────────────────────────┘
w task, TASK_TRANSFER

Transfer completed

=> 27) New task, TASK_TRANSFER

Calling transfer_zlp

┌───────┬──────┬─────────────────────────────────────┬────────────┐
│Frame  │ 1705 │ Transfer started                    │ 1  EP0 OUT │
├───────┌──────┌─────────────────────────────────────┌─────────────
│DAR    │      │ 00000000 00000000 00000000 00000001 │ 0x00000001 │
│SSR    │      │ 01010000 00000000 00000010 00000101 │ 0x50000205 │
│SCR    │      │ 00000000 00000000 10001110 00001010 │ 0x00008e0a │
│ECR    │      │ 11010000 00000000 00000001 10000000 │ 0xd0000180 │
│BCR    │      │ 10000000 00000110 10100000 00001000 │ 0x8006a008 │
└───────┮──────┮─────────────────────────────────────┮────────────┘

=> 28) New ISR, buffer, last

┌───────┬──────┬─────────────────────────────────────┬────────────┐
│Frame  │ 1801 │ Interrupt Handler                   │ 1  EP0 OUT │
├───────┌──────┌─────────────────────────────────────┌─────────────
│INTR   │      │ 00000000 00000000 00000000 00011100 │ 0x0000001c │
│INTS   │      │ 00000000 00000000 00000000 00011000 │ 0x00000018 │
│DAR    │      │ 00000000 00000000 00000000 00000001 │ 0x00000001 │
│SSR    │      │ 01010000 00000100 00000010 00000101 │ 0x50040205 │
│SCR    │      │ 00000000 00000000 10001110 00000100 │ 0x00008e04 │
│ECR    │      │ 10010000 00000000 00000001 10000000 │ 0x90000180 │
│BCR    │      │ 00000000 00000000 01100000 00000000 │ 0x00006000 │
├───────┌──────┌─────────────────────────────────────┌─────────────
│BUF/1  │      │ 00000000 00000000 00000000 00000001 │ 0x00000001 │
├───────┌──────┌─────────────────────────────────────┌─────────────
│ZLP    │ OUT  │ Device 1                            │ Task #29   │
└───────┮──────┮─────────────────────────────────────┮────────────┘

=> 29) New task, TASK_TRANSFER

Transfer completed
[String #2]: "piccolo xpress"

┌───────┬──────┬─────────────────────────────────────┬────────────┐
│Frame  │ 1963 │ Transfer started                    │ 1  EP0  IN │
├───────┌──────┌─────────────────────────────────────┌─────────────
│DAR    │      │ 00000000 00000000 00000000 00000001 │ 0x00000001 │
│SSR    │      │ 01010000 00000000 00000010 00000101 │ 0x50000205 │
│SCR    │      │ 00000000 00000000 10001110 00000100 │ 0x00008e04 │
│ECR    │      │ 10010000 00000000 00000001 10000000 │ 0x90000180 │
│BCR    │      │ 00000000 00000000 01100000 00000000 │ 0x00006000 │
├───────┌──────┌─────────────────────────────────────┎─────────────
│SETUP  │ 0000 │ 80 06 03 03 00 00 ff 00                          │ ........
└───────┮──────┮──────────────────────────────────────────────────┘

=> 30) New ISR, buffer

┌───────┬──────┬─────────────────────────────────────┬────────────┐
│Frame  │   35 │ Interrupt Handler                   │ 1  EP0  IN │
├───────┌──────┌─────────────────────────────────────┌─────────────
│INTR   │      │ 00000000 00000000 00000000 00010100 │ 0x00000014 │
│INTS   │      │ 00000000 00000000 00000000 00010000 │ 0x00000010 │
│DAR    │      │ 00000000 00000000 00000000 00000001 │ 0x00000001 │
│SSR    │      │ 01010000 00000000 00000010 00000101 │ 0x50000205 │
│SCR    │      │ 00000000 00000000 10001110 00001010 │ 0x00008e0a │
│ECR    │      │ 11010000 00000000 00000001 10000000 │ 0xd0000180 │
│BCR    │      │ 10000000 00001000 10100000 00001000 │ 0x8008a008 │
├───────┌──────┌─────────────────────────────────────┌─────────────
│BUF/2  │      │ 00000000 00000000 00000000 00000001 │ 0x00000001 │
│IN/1   │ 0000 │ 12 03 41 00 56 00 50 00                          │ ..A.V.P.
│IN/2   │ 0000 │ 30 00 39 00 38 00 38 00                          │ 0.9.8.8.
└───────┮──────┮─────────────────────────────────────┮────────────┘

=> 31) New ISR, buffer, last

┌───────┬──────┬─────────────────────────────────────┬────────────┐
│Frame  │  183 │ Interrupt Handler                   │ 1  EP0  IN │
├───────┌──────┌─────────────────────────────────────┌─────────────
│INTR   │      │ 00000000 00000000 00000000 00011100 │ 0x0000001c │
│INTS   │      │ 00000000 00000000 00000000 00011000 │ 0x00000018 │
│DAR    │      │ 00000000 00000000 00000000 00000001 │ 0x00000001 │
│SSR    │      │ 01010000 00000100 00000010 00000101 │ 0x50040205 │
│SCR    │      │ 00000000 00000000 10001110 00001010 │ 0x00008e0a │
│ECR    │      │ 11010000 00000000 00000001 10000000 │ 0xd0000180 │
│BCR    │      │ 00000100 00001000 10100000 00000010 │ 0x0408a002 │
├───────┌──────┌─────────────────────────────────────┌─────────────
│BUF/2  │      │ 00000000 00000000 00000000 00000001 │ 0x00000001 │
│IN/1   │ 0000 │ 30 00                                            │ 0.
├───────┌──────┌─────────────────────────────────────┎─────────────
│XFER   │   18 │ Device 1                              Task #32   │
│Data   │ 0000 │ 12 03 41 00 56 00 50 00 30 00 39 00 38 00 38 00  │ ..A.V.P.0.9.8.8.
│Data   │ 0010 │ 30 00                                            │ 0.
└───────┮──────┮──────────────────────────────────────────────────┘

=> 32) New task, TASK_TRANSFER

Calling transfer_zlp

┌───────┬──────┬─────────────────────────────────────┬────────────┐
│Frame  │  365 │ Transfer started                    │ 1  EP0 OUT │
├───────┌──────┌─────────────────────────────────────┌─────────────
│DAR    │      │ 00000000 00000000 00000000 00000001 │ 0x00000001 │
│SSR    │      │ 01010000 00000000 00000010 00000101 │ 0x50000205 │
│SCR    │      │ 00000000 00000000 10001110 00001010 │ 0x00008e0a │
│ECR    │      │ 11010000 00000000 00000001 10000000 │ 0xd0000180 │
│BCR    │      │ 00000100 00001000 10100000 00000010 │ 0x0408a002 │
└───────┮──────┮─────────────────────────────────────┮────────────┘

=> 33) New ISR, buffer, last

┌───────┬──────┬─────────────────────────────────────┬────────────┐
│Frame  │  460 │ Interrupt Handler                   │ 1  EP0 OUT │
├───────┌──────┌─────────────────────────────────────┌─────────────
│INTR   │      │ 00000000 00000000 00000000 00011100 │ 0x0000001c │
│INTS   │      │ 00000000 00000000 00000000 00011000 │ 0x00000018 │
│DAR    │      │ 00000000 00000000 00000000 00000001 │ 0x00000001 │
│SSR    │      │ 01010000 00000100 00000010 00000101 │ 0x50040205 │
│SCR    │      │ 00000000 00000000 10001110 00000100 │ 0x00008e04 │
│ECR    │      │ 10010000 00000000 00000001 10000000 │ 0x90000180 │
│BCR    │      │ 00000000 00000000 01100000 00000000 │ 0x00006000 │
├───────┌──────┌─────────────────────────────────────┌─────────────
│BUF/1  │      │ 00000000 00000000 00000000 00000001 │ 0x00000001 │
├───────┌──────┌─────────────────────────────────────┌─────────────
│ZLP    │ OUT  │ Device 1                            │ Task #34   │
└───────┮──────┮─────────────────────────────────────┮────────────┘
[String #3]: "AVP09880x"

=> 34) New task, TASK_TRANSFER

Transfer completed