From fc09fe39f8b018b63070ce6e5a960f7944074f98 Mon Sep 17 00:00:00 2001 From: JayPiKay Date: Tue, 10 Aug 2021 16:01:41 +0200 Subject: [PATCH] Verbose lsusb of device --- README.md | 176 +++++++++++++++++++++++++++++++----------------------- 1 file changed, 101 insertions(+), 75 deletions(-) diff --git a/README.md b/README.md index 76dc695..9e7a877 100644 --- a/README.md +++ b/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