Verbose lsusb of device
This commit is contained in:
parent
bdf0e8bd50
commit
fc09fe39f8
176
README.md
176
README.md
|
@ -8,6 +8,106 @@
|
|||
* WiFi: `Atheros AR6103G-BM2D, P0BV68.2BE5, P0BV68.2B, 1441`
|
||||
* Flash: `ATO, 1440N, MST5F08G16G, NH-2106, 5FGHG46V17W`
|
||||
|
||||
**USB Details**
|
||||
```
|
||||
Bus 005 Device 017: ID 4255:1000 GoPro 9FF2 [Digital Photo Display]
|
||||
|
||||
Device Descriptor:
|
||||
bLength 18
|
||||
bDescriptorType 1
|
||||
bcdUSB 2.00
|
||||
bDeviceClass 0
|
||||
bDeviceSubClass 0
|
||||
bDeviceProtocol 0
|
||||
bMaxPacketSize0 64
|
||||
idVendor 0x4255 GoPro
|
||||
idProduct 0x1000 9FF2 [Digital Photo Display]
|
||||
bcdDevice 0.00
|
||||
iManufacturer 1 AMON
|
||||
iProduct 2 MST-X7
|
||||
iSerial 3 123456789ABC
|
||||
bNumConfigurations 2
|
||||
Configuration Descriptor:
|
||||
bLength 9
|
||||
bDescriptorType 2
|
||||
wTotalLength 0x0020
|
||||
bNumInterfaces 1
|
||||
bConfigurationValue 1
|
||||
iConfiguration 0
|
||||
bmAttributes 0x80
|
||||
(Bus Powered)
|
||||
MaxPower 500mA
|
||||
Interface Descriptor:
|
||||
bLength 9
|
||||
bDescriptorType 4
|
||||
bInterfaceNumber 0
|
||||
bAlternateSetting 0
|
||||
bNumEndpoints 2
|
||||
bInterfaceClass 8 Mass Storage
|
||||
bInterfaceSubClass 6 SCSI
|
||||
bInterfaceProtocol 80 Bulk-Only
|
||||
iInterface 0
|
||||
Endpoint Descriptor:
|
||||
bLength 7
|
||||
bDescriptorType 5
|
||||
bEndpointAddress 0x01 EP 1 OUT
|
||||
bmAttributes 2
|
||||
Transfer Type Bulk
|
||||
Synch Type None
|
||||
Usage Type Data
|
||||
wMaxPacketSize 0x0200 1x 512 bytes
|
||||
bInterval 0
|
||||
Endpoint Descriptor:
|
||||
bLength 7
|
||||
bDescriptorType 5
|
||||
bEndpointAddress 0x81 EP 1 IN
|
||||
bmAttributes 2
|
||||
Transfer Type Bulk
|
||||
Synch Type None
|
||||
Usage Type Data
|
||||
wMaxPacketSize 0x0200 1x 512 bytes
|
||||
bInterval 0
|
||||
Configuration Descriptor:
|
||||
bLength 9
|
||||
bDescriptorType 2
|
||||
wTotalLength 0x0020
|
||||
bNumInterfaces 1
|
||||
bConfigurationValue 2
|
||||
iConfiguration 0
|
||||
bmAttributes 0xc0
|
||||
Self Powered
|
||||
MaxPower 2mA
|
||||
Interface Descriptor:
|
||||
bLength 9
|
||||
bDescriptorType 4
|
||||
bInterfaceNumber 0
|
||||
bAlternateSetting 0
|
||||
bNumEndpoints 2
|
||||
bInterfaceClass 8 Mass Storage
|
||||
bInterfaceSubClass 6 SCSI
|
||||
bInterfaceProtocol 80 Bulk-Only
|
||||
iInterface 0
|
||||
Endpoint Descriptor:
|
||||
bLength 7
|
||||
bDescriptorType 5
|
||||
bEndpointAddress 0x01 EP 1 OUT
|
||||
bmAttributes 2
|
||||
Transfer Type Bulk
|
||||
Synch Type None
|
||||
Usage Type Data
|
||||
wMaxPacketSize 0x0200 1x 512 bytes
|
||||
bInterval 0
|
||||
Endpoint Descriptor:
|
||||
bLength 7
|
||||
bDescriptorType 5
|
||||
bEndpointAddress 0x81 EP 1 IN
|
||||
bmAttributes 2
|
||||
Transfer Type Bulk
|
||||
Synch Type None
|
||||
Usage Type Data
|
||||
wMaxPacketSize 0x0200 1x 512 bytes
|
||||
bInterval 0
|
||||
```
|
||||
|
||||
### Research: File/Drive Access by Action Manager 1.3
|
||||
|
||||
|
@ -164,81 +264,7 @@ wlan0 AR6000 802.11ng ESSID:"X7APP" Nickname:""
|
|||
|
||||
Trying to reproduce `IOCTL_SCSI_PASS_THROUGH` with Linux.
|
||||
|
||||
Code example #1:
|
||||
```
|
||||
#define DEF_TIMEOUT 5000 // 5 seconds
|
||||
char cDiskName[] = "/dev/sg3";
|
||||
int fd = open(cDiskName, O_RDWR);
|
||||
if (fd < 0)
|
||||
{
|
||||
printf("Open error: %s, errno=%d (%s)\n", cDiskName, errno, strerror(errno));
|
||||
return 1;
|
||||
}
|
||||
|
||||
unsigned char turCmbBlk[] = {0x00, 0, 0, 0, 0, 0};
|
||||
struct sg_io_hdr io_hdr;
|
||||
|
||||
unsigned char cIOBuffer[100];
|
||||
|
||||
// buffer initialization code omitted
|
||||
|
||||
memset(&io_hdr, 0, sizeof(struct sg_io_hdr));
|
||||
io_hdr.interface_id = 'S';
|
||||
io_hdr.cmd_len = sizeof(turCmbBlk);
|
||||
io_hdr.mx_sb_len = sizeof(cIOBuffer);
|
||||
io_hdr.dxfer_direction = SG_DXFER_NONE;
|
||||
io_hdr.cmdp = turCmbBlk;
|
||||
io_hdr.sbp = cIOBuffer;
|
||||
io_hdr.timeout = DEF_TIMEOUT;
|
||||
if (ioctl(fd, SG_IO, &io_hdr) < 0)
|
||||
{
|
||||
printf("ioctl error: errno=%d (%s)\n", errno, strerror(errno));
|
||||
}
|
||||
|
||||
// Code returned here without any errors but cIOBuffer remains unchanged.
|
||||
```
|
||||
|
||||
```
|
||||
#define BUFF_SIZE 100 // - Buffersize
|
||||
|
||||
#define DEF_TIMEOUT 5000 // 5 seconds
|
||||
char cDiskName[] = "/dev/sg3";
|
||||
int fd = open(cDiskName, O_RDWR);
|
||||
if (fd < 0)
|
||||
{
|
||||
printf("Open error: %s, errno=%d (%s)\n", cDiskName, errno, strerror(errno));
|
||||
return 1;
|
||||
}
|
||||
|
||||
unsigned char turCmbBlk[] = {0x00, 0, 0, 0, 0, 0};
|
||||
struct sg_io_hdr *p = (struct sg_io_hdr *) malloc(sizeof(struct sg_io_hdr)); // - dynamic memory allocation - free() required somewhere
|
||||
|
||||
unsigned char cIOBuffer[BUFF_SIZE];
|
||||
unsigned char replyBuffer[BUFF_SIZE]; // - dxfer buffer
|
||||
|
||||
// buffer initialization code omitted
|
||||
|
||||
memset(p, 0, sizeof(struct sg_io_hdr));
|
||||
p->interface_id = 'S';
|
||||
p->cmd_len = sizeof(turCmbBlk);
|
||||
p->mx_sb_len = BUFF_SIZE;
|
||||
p->dxfer_direction = SG_DXFER_NONE;
|
||||
p->cmdp = turCmbBlk;
|
||||
p->sbp = cIOBuffer;
|
||||
p->timeout = DEF_TIMEOUT;
|
||||
p->flags = SG_FLAG_DIRECT_IO; // - Does this help?
|
||||
p->dxferp = replyBuffer; // - Set dxferp buffer - (A)
|
||||
p->dxfer_len = BUFF_SIZE; // - buffersize
|
||||
|
||||
if (ioctl(fd, SG_IO, p) < 0)
|
||||
{
|
||||
printf("ioctl error: errno=%d (%s)\n", errno, strerror(errno));
|
||||
}
|
||||
|
||||
// Code returned here without any errors but cIOBuffer remains unchanged.
|
||||
```
|
||||
|
||||
Use for `scsi/sg.h` and `ioctl`.
|
||||
Cancled, way to complicated, the USB massstorage interface is an easier target.
|
||||
|
||||
|
||||
### Research: USB data transfer
|
||||
|
|
Loading…
Reference in New Issue