Management pipe

1 Mgmt interrogation sequence

1.1 Sending sequence

1.1.1 Announcement frame (tx1) on mgmt pipe

Structure

byte range possible meaning of the field
[0x00,0x03] magic number : 6c 06 02 00
[0x04,0x05] next mgmt frame length (tx2), little endian
[0x06,end] unknown

Table 1.

Instance

[endpoint 0x00000002]
  TransferFlags        = 00000000 (USBD_TRANSFER_DIRECTION_OUT, ~USBD_SHORT_TRANSFER_OK)
  TransferBufferLength = 00000010
00000000: 6c 06 02 00 0c 04 02 00 00 00 00 00 00 00 00 00

Code

Must use a tx1-type header.

1.1.2 Data coming (interrupt?) frame on data pipe

Structure

It seems to be always of the same type, meaning that some data is about to be sent on 0x2.

See also data annoucement.

Instance

[endpoint 0x0000000e]
TransferFlags        = 00000000 (USBD_TRANSFER_DIRECTION_OUT, ~USBD_SHORT_TRANSFER_OK)
00000000: 0f 08 00 00 00 40 80 00 00 00

Code

 p54u_dev_writel(netdev, ISL38XX_DEV_INT_REG, 0x80);

1.1.3 Data frame (tx2)

Structure

byte range possible meaning of the field
[0x00,0x01] magic number : 00 80
[0x02,0x03] data length δ1 from 0x0C, little endian
[0x04,0x07] unknown 1
[0x08,0x0B] unknown 2, fixed
[0x0C,0x0D] start address, little endian
[0x0E,0x0F] length δ2, little endian
[0x10,0x0C+δ1] ?? δ2 of zeroes

Table 2.

The unknown 1 field alternates between two values :

90 82 28 81 / 30 80 32 81 (usbsnoop ver 1)

70 90 22 80 / 70 14 3a 81 (usbsnoop ver 2)

10 65 30 81 / 30 11 2f 81 (usbsnoop ver 3 ; what i use now)

50 eb 44 81 / 30 0e 33 81 (usb snoop ver 4)

someone sees a pattern here ?

Instance

[endpoint 0x00000002]
  TransferFlags        = 00000000 (USBD_TRANSFER_DIRECTION_OUT, ~USBD_SHORT_TRANSFER_OK)
  TransferBufferLength = 0000040c
    00000000: 00 80 00 04 10 65 30 81 0c 00 00 00 00 00 fc 03
    00000010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    000000a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    000000b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    000000c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    000000d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    000000e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    000000f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000100: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000110: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000120: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000130: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000140: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000150: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000160: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000170: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000180: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000190: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    000001a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    000001b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    000001c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    000001d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    000001e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    000001f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000200: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000210: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000220: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000230: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000240: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000250: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000260: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000270: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000280: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000290: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    000002a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    000002b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    000002c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    000002d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    000002e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    000002f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000300: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000310: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000320: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000330: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000340: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000350: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000360: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000370: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000380: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000390: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    000003a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    000003b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    000003c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    000003d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    000003e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    000003f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000400: 00 00 00 00 00 00 00 00 00 00 00 00

1.2 Received response

Structure

byte range possible meaning of the field
[0x00,0xF] data length δ1 from 0x10, little endian
[0x10,0x1F] repeat previous frame header
[0x20,0x53] unknown
[0x54,0x59] in first frame : MAC address
[0x5a,0x8b] unknow
[0x8c,0xfb] list1 of frequency parameters, each element is 8 bytes wide.
[0x104,0x26f] list2 of frequency parameters, each element is 26 bytes wide.
[0x274,0x2ff] list3 of frequency parameters, each element is 10 bytes wide.
[0x324,0x325] checksum ? (crc5?)

Table 3.

Data from list1, 2 and 3 is found again in the frequency change packets.

Instance of the first response block

In red the only field I understand ; the mac address of the device.

The linux driver gets the very same response.

    00000000: 0c 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000010: 00 80 00 04 70 90 22 80 0c 00 00 00 00 00 fc 03
    00000020: 47 4d 55 aa 00 00 00 00 ff ff ff ff 09 00 01 00
    00000030: 58 58 58 58 58 58 00 00 00 00 00 00 00 00 00 00
    00000040: 07 00 03 00 30 00 00 00 00 00 00 00 00 00 00 00
    00000050: 04 00 01 01 00 0c 41 de 30 96 0b 00 01 10 00 00
    00000060: 0f 00 8b 00 01 00 ff 00 00 00 09 00 03 00 01 00
    00000070: 1f 00 03 00 02 10 03 86 01 55 05 00 05 19 ff 7f
    00000080: ff 7f 80 00 6b fe 3a 00 03 19 00 0e 6c 09 3f 38
    00000090: 2f 2c 80 49|71 09 3e 39 2f 2c 80 49|76 09 3e 39
    000000a0: 2f 2c 80 49|7b 09 3e 3a 2f 2c 80 49|80 09 3e 3a
    000000b0: 2e 2c 80 49 85 09 3e 3b 2e 2b 80 49 8a 09 3d 3b
    000000c0: 2e 2b 80 4a 8f 09 3d 3b 2e 2b 80 49 94 09 3d 3a
    000000d0: 2e 2b 80 49 99 09 3c 3a 2e 2b 80 48 9e 09 3c 3a
    000000e0: 2e 2b 80 48 a3 09 3c 3a 2e 2b 80 48 a8 09 3b 39
    000000f0: 2e 2b 80 47 b4 09 3b 39 2e 2b 80 47 b9 00 04 19
    00000100: 00 0e 08 80 6c 09 4f 73 af 47 38 8f 3f 0c 75 33
    00000110: de 55 27 c1 39 1b ae 1f 0f a2 06 00 98 00|71 09
    00000120: 4f 73 ad 47 38 8e 3f 0c 74 33 de 54 27 c1 38 1b
    00000130: ae 1e 0f a2 05 00 98 00|76 09 4f 72 ac 47 37 8d
    00000140: 3f 0c 73 33 de 53 27 c1 37 1b ae 1d 0f a1 04 00
    00000150: 98 00|7b 09 4f 72 aa 47 37 8b 3f 0b 72 33 de 52
    00000160: 27 c0 36 1b ae 1c 0f a1 03 00 98 00 80 09 50 7a
    00000170: ad 48 3d 8e 40 10 74 34 e1 53 28 c2 37 1c af 1d
    00000180: 10 a2 04 00 98 00 85 09 50 7a ab 48 3d 8c 40 10
    00000190: 73 34 e1 52 28 c2 36 1c af 1c 10 a2 03 00 98 00
    000001a0: 8a 09 50 7a aa 48 3d 8b 40 10 72 34 e1 51 28 c2
    000001b0: 35 1c af 1b 10 a2 02 00 98 00 8f 09 4f 74 a6 47
    000001c0: 38 88 3f 0c 6f 33 de 4f 27 c0 33 1b ae 19 0f a1
    000001d0: 00 00 98 00 94 09 4f 76 a6 47 3a 88 3f 0d 6f 33
    000001e0: de 4e 27 c1 32 1b ae 19 0f a2 00 00 99 00 99 09
    000001f0: 4f 79 a6 47 3b 88 3f 0d 6f 33 df 4e 27 c1 32 1b
    00000200: ae 19 0f a2 00 00 99 00 9e 09 4e 72 a3 46 35 85
    00000210: 3e 09 6c 32 dc 4c 26 bf 30 1a ad 16 0e a2 00 00
    00000220: 9a 00 a3 09 4e 73 a3 46 36 85 3e 0a 6c 32 dc 4c
    00000230: 26 bf 30 1a ad 16 0e a2 00 00 9a 00 a8 09 4e 75
    00000240: a3 46 37 85 3e 0a 6c 32 dc 4c 26 bf 30 1a ad 16
    00000250: 0e a2 00 00 9a 00 b4 09 4e 75 a3 46 37 85 3e 0a
    00000260: 6c 32 dc 4c 26 bf 30 1a ad 16 0e a2 00 00 9a 00
    00000270: 47 00 06 19 6c 09 02 00 02 00 f8 03 01 01|71 09
    00000280: 02 00 02 00 f8 03 01 01|76 09 02 00 02 00 f8 03
    00000290: 00 01 7b 09 02 00 02 00 f8 03 01 01 80 09 01 00
    000002a0: 02 00 f9 03 01 01 85 09 01 00 02 00 f9 03 02 01
    000002b0: 8a 09 02 00 02 00 f9 03 00 01 8f 09 01 00 02 00
    000002c0: fa 03 01 01 94 09 02 00 02 00 f9 03 ff 00 99 09
    000002d0: 01 00 02 00 fa 03 02 01 9e 09 01 00 02 00 fa 03
    000002e0: 01 01 a3 09 01 00 02 00 fa 03 02 01 a8 09 01 00
    000002f0: 02 00 fa 03 01 01 b4 09 01 00 02 00 fa 03 01 01
    00000300: 07 00 07 10 10 00 00 00 30 00 00 00 40 00 00 00
    00000310: 03 00 08 10 30 00 00 00 03 00 00 11 08 08 08 08
    00000320: 02 00 00 00 5d 90 ff ff ff ff ff ff ff ff ff ff
    00000330: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
   ...

Another instance of the response block : other device

This block comes from a dump of the old driver. Very same structure.

    00000000: 0c 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000010: 00 80 00 04 50 6a c5 85 0c 00 00 00 00 00 fc 03
    00000020: 47 4d 55 aa 00 00 00 00 ff ff ff ff 09 00 01 00
    00000030: 58 58 58 58 58 58 00 00 00 00 00 00 00 00 00 00
    00000040: 07 00 03 00 30 00 00 00 00 00 00 00 00 00 00 00
    00000050: 04 00 01 01 00|0f 66 17 46 6b 0b|00 01 10 00 00
    00000060: 0f 00 8b 03 01 00 ff 03 00 00 09 00 03 00 01 00
    00000070: 1f 00 03 00 02 10 03 86 01 55 05 00 05 19 ff 7f
    00000080: ff 7f 7e 00 73 fe 3a 00 03 19 00 0e|6c 09 38 32
    00000090: 2b 28 80 41 71 09 38 33 2b 28 80 42 76 09 38 34
    000000a0: 2c 28 80 42 7b 09 38 34 2c 27 80 42 80 09 38 35
    000000b0: 2c 27 80 43 85 09 38 36 2d 27 80 43 8a 09 38 36
    000000c0: 2d 27 80 44 8f 09 38 36 2d 28 80 43 94 09 38 36
    000000d0: 2d 2a 80 43 99 09 38 36 2c 2c 80 43 9e 09 37 36
    000000e0: 2c 2e 80 43 a3 09 37 35 2c 30 80 43 a8 09 37 35
    000000f0: 2c 32 80 43 b4 09 37 35 2c 32 80 43|b9 00 04 19
    00000100: 00 0e 08 80|6c 09 4c 77 b0 44 39 8f 3c 0b 75 30
    00000110: dd 54 24 bf 38 18 ad 1f 0c a1 07 00 9a 00 71 09
    00000120: 4c 76 ad 44 38 8d 3c 0b 73 30 dd 53 24 bf 37 18
    00000130: ad 1e 0c a2 06 00 9a 00 76 09 4c 76 ab 44 38 8b
    00000140: 3c 0b 72 30 dc 52 24 bf 36 18 ad 1d 0c a2 05 00
    00000150: 9b 00 7b 09 4c 75 a9 44 38 8a 3c 0a 70 30 dc 50
    00000160: 24 bf 35 18 ad 1c 0c a2 04 00 9b 00 80 09 4c 75
    00000170: a6 44 37 88 3c 0a 6f 30 dc 4f 24 bf 34 18 ad 1b
    00000180: 0c a2 03 00 9b 00 85 09 4c 74 a4 44 37 86 3c 0a
    00000190: 6d 30 dc 4e 24 bf 33 18 ad 1a 0c a2 02 00 9b 00
    000001a0: 8a 09 4c 73 a2 44 36 84 3c 09 6b 30 dc 4c 24 bf
    000001b0: 31 18 ae 19 0c a2 01 00 9b 00 8f 09 4c 75 a2 44
    000001c0: 38 84 3c 0a 6b 30 dc 4c 24 c0 31 18 ae 18 0c a3
    000001d0: 01 00 9c 00 94 09 4c 77 a2 44 39 84 3c 0b 6b 30
    000001e0: dd 4c 24 c0 31 18 ae 18 0c a3 00 00 9c 00 99 09
    000001f0: 4c 79 a2 44 3a 84 3c 0c 6b 30 dd 4c 24 c0 31 18
    00000200: ae 18 0c a3 00 00 9c 00 9e 09 4b 72 9e 43 35 80
    00000210: 3b 08 68 2f db 49 23 bf 2e 17 ad 16 0b a3 00 00
    00000220: 9c 00 a3 09 4b 74 9d 43 36 80 3b 09 68 2f db 49
    00000230: 23 bf 2e 17 ae 16 0b a3 00 00 9d 00 a8 09 4b 76
    00000240: 9d 43 37 80 3b 0a 67 2f dc 49 23 c0 2e 17 ae 15
    00000250: 0b a3 00 00 9d 00 b4 09 4b 76 9d 43 37 80 3b 0a
    00000260: 67 2f dc 49 23 c0 2e 17 ae 15 0b a3 00 00 9d 00
    00000270:|47 00 06 19|6c 09 03 00 fe 03 f8 03 fc 00 71 09
    00000280: 03 00 fe 03 f8 03 fc 00 76 09 03 00 fe 03 f8 03
    00000290: fd 00 7b 09 03 00 fe 03 f8 03 fd 00 80 09 03 00
    000002a0: fe 03 f8 03 fd 00 85 09 03 00 fe 03 f8 03 fc 00
    000002b0: 8a 09 03 00 fe 03 f8 03 fc 00 8f 09 03 00 fe 03
    000002c0: f8 03 fc 00 94 09 03 00 fe 03 f8 03 fc 00 99 09
    000002d0: 02 00 fe 03 f9 03 ff 00 9e 09 02 00 fe 03 f9 03
    000002e0: ff 00 a3 09 02 00 fe 03 fa 03 fd 00 a8 09 02 00
    000002f0: fe 03 f9 03 fe 00 b4 09 02 00 fe 03 fa 03 fd 00
    00000300:|07 00 07 10 10 00 00 00 30 00 00 00 40 00 00 00
    00000310: 03 00 08 10 10 00 00 00 03 00 00 11 08 08 08 08
    00000320: 02 00 00 00|e4 d8|ff ff ff ff ff ff ff ff ff ff
    00000330: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff

Instance of the other response blocks

Same as above, but the readback data is all ones.