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`
|
* WiFi: `Atheros AR6103G-BM2D, P0BV68.2BE5, P0BV68.2B, 1441`
|
||||||
* Flash: `ATO, 1440N, MST5F08G16G, NH-2106, 5FGHG46V17W`
|
* 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
|
### 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.
|
Trying to reproduce `IOCTL_SCSI_PASS_THROUGH` with Linux.
|
||||||
|
|
||||||
Code example #1:
|
Cancled, way to complicated, the USB massstorage interface is an easier target.
|
||||||
```
|
|
||||||
#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`.
|
|
||||||
|
|
||||||
|
|
||||||
### Research: USB data transfer
|
### Research: USB data transfer
|
||||||
|
|
Loading…
Reference in New Issue