BACKEND ICMEDIA1 info version 0.5 24-06-2004 1. lsusb -v info 2. sniff-usb info 3. init sequence -------------------------- 1--------------------------------------- Bus 002 Device 003: ID 0923:010f IC Media Corp. SIIG MobileCam Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 1.10 bDeviceClass 255 Vendor Specific Class bDeviceSubClass 255 Vendor Specific Subclass bDeviceProtocol 255 Vendor Specific Protocol bMaxPacketSize0 8 idVendor 0x0923 IC Media Corp. idProduct 0x010f SIIG MobileCam bcdDevice 0.01 iManufacturer 0 iProduct 0 iSerial 0 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 137 bNumInterfaces 1 bConfigurationValue 1 iConfiguration 0 bmAttributes 0x80 MaxPower 100mA ---------------------------------------------------------------------------- 0 1 2 3 4 5 6 7 ---------------------------------------------------------------------------- Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 1 2 3 4 5 6 7 bNumEndpoints 1 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 255 Vendor Specific Subclass bInterfaceProtocol 255 Vendor Specific Protocol iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 1 Transfer Type Isochronous Synch Type none wMaxPacketSize 0 256 384 512 640 768 896 1023 bInterval 1 Language IDs: (length=4) 0409 English(US) Bus 001 Device 005: ID 046d:0921 Logitech Inc. Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 1.10 bDeviceClass 255 Vendor Specific Class bDeviceSubClass 255 Vendor Specific Subclass bDeviceProtocol 255 Vendor Specific Protocol bMaxPacketSize0 8 idVendor 0x046d Logitech Inc. idProduct 0x0921 bcdDevice 0.01 iManufacturer 0 iProduct 0 iSerial 0 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 137 bNumInterfaces 1 bConfigurationValue 1 iConfiguration 0 bmAttributes 0x80 MaxPower 100mA ---------------------------------------------------------------------------- 0 1 2 3 4 5 6 7 ---------------------------------------------------------------------------- Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 1 2 3 4 5 6 7 bNumEndpoints 1 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 255 Vendor Specific Subclass bInterfaceProtocol 255 Vendor Specific Protocol iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 1 Transfer Type Isochronous Synch Type none wMaxPacketSize 0 256 384 512 640 768 896 1023 bInterval 1 ----------------------------------------------------------------------------- Language IDs: (length=4) 0409 English(US) -------------------------------------------- 2 --------------------------------- 8 8 16 16 16 request request value index length type low byte high byte low byte high byte low byte high byte xxxx xxxx|xxxx xxxx|xxxx xxxx xxxx xxxx|xxxx xxxx xxxx xxxx|xxxx xxxx xxxx xxxx |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ||||- mostly 0100 |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| some 0200 |||| |||| |||| |||| |||| ||||-0=device, 1=interface, 2=endpoint, 3=other |||| ||---reserved normal 0 |||-------type 2 = vendor vb 40 |---------direction 0 = host to device, 1 = device to host vb 80 40 yy yyyy yyyy yyyy host to device c0 yy yyyy yyyy yyyy device to host standard vendor type request write command, if length field is 0, two bytes of value field are writing in two reg. starting at the Index field value if length is not 0, data stage transfers the requested number of bytes starting from the Index field vale examples command data description 40 02 00 00 00 00 01 00 write to device, 40 02 00 00 01 00 01 00 30 40 02 00 00 03 00 01 00 00 40 02 00 00 04 00 01 00 01 40 02 00 00 05 00 01 00 00 40 02 00 00 06 00 01 00 01 40 02 00 00 07 00 01 00 0d 40 02 00 00 08 00 01 00 00 40 02 00 00 0e 00 01 00 40 02 00 00 0f 00 01 00 40 02 00 00 10 00 01 00 40 02 00 00 11 00 01 00 40 02 00 00 14 00 01 00 40 02 00 00 38 00 01 00 40 02 00 00 39 00 01 00 b0 40 02 00 00 3a 00 01 00 40 02 00 00 3b 00 01 00 40 02 00 00 91 00 01 00 40 02 00 00 94 00 01 00 40 02 00 00 1c 00 02 00 Urb 1 (C) ep= <<<< 00000000: 12 01 10 01 ff ff ff 08 23 09 0f 01 01 00 00 00 00000010: 00 01 00000000: 80 06 00 01 00 00 12 00 host to device, get descriptor, device, 12h bytes Urb 2 (C) ep= <<<< 00000000: 09 02 89 00 01 01 00 80 32 09 04 00 00 01 ff ff 00000010: ff 00 07 05 81 01 00 00 01 09 04 00 01 01 ff ff 00000020: ff 00 07 05 81 01 00 01 01 09 04 00 02 01 ff ff 00000030: ff 00 07 05 81 01 80 01 01 09 04 00 03 01 ff ff 00000000: 80 06 00 02 00 00 40 00 host to device, get descriptor, configuration, 40h bytes Urb 3 (C) ep= <<<< 00000000: 09 02 89 00 01 01 00 80 32 09 04 00 00 01 ff ff 00000010: ff 00 07 05 81 01 00 00 01 09 04 00 01 01 ff ff 00000020: ff 00 07 05 81 01 00 01 01 09 04 00 02 01 ff ff 00000030: ff 00 07 05 81 01 80 01 01 09 04 00 03 01 ff ff 00000040: ff 00 07 05 81 01 00 02 01 09 04 00 04 01 ff ff 00000050: ff 00 07 05 81 01 80 02 01 09 04 00 05 01 ff ff 00000060: ff 00 07 05 81 01 00 03 01 09 04 00 06 01 ff ff 00000070: ff 00 07 05 81 01 80 03 01 09 04 00 07 01 ff ff 00000080: ff 00 07 05 81 01 ff 03 01 00000000: 80 06 00 02 00 00 89 00 host to device, get descriptor, configuration, 89h bytes command data description c0 03 00 00 0c 00 01 00 f4 read from device c0 03 00 00 0d 00 01 00 01 co 03 00 00 28 00 01 00 63 co 03 00 00 29 00 01 00 07 c0 03 00 00 2a 00 01 00 73 c0 03 00 00 2b 00 01 00 73 co 03 00 00 2c 00 01 00 4b co 03 00 00 2d 00 01 00 01 co 03 00 00 2e 00 01 00 06 co 03 00 00 2f 00 01 00 96 co 03 00 00 30 00 01 00 04 co 03 00 00 34 00 01 00 23 co 03 00 00 35 00 01 00 09 c0 03 00 00 38 00 01 00 00 c0 03 00 00 3a 00 01 00 ff co 03 00 00 83 00 01 00 d3 ---------------------------------- 3 --------------------------------- init sequence ---------------------------------------------------------------------- Urb 1 (C) 80 06 00 01 00 00 12 00 read descriptor, device, 12h bytes Urb 2 (C) 80 06 00 02 00 00 40 00 read descriptor, configuration, 40h bytes Urb 3 (C) 80 06 00 02 00 00 89 00 read descriptor, configuration, 89h bytes Urb 4 (C) 80 06 00 02 00 00 89 00 ?????? Urb 5 (C) 40 02 00 00 39 00 01 00 b0 write Urb 6 (C) c0 03 00 00 0c 00 01 00 f4 read AD_WIDTHL Frame width Urb 7 (C) c0 03 00 00 0d 00 01 00 01 read AD_WIDTHH Frame width Urb 8 (C) c0 03 00 00 28 00 01 00 63 read Urb 9 (C) c0 03 00 00 29 00 01 00 07 read Urb 10 (C) c0 03 00 00 2c 00 01 00 4b read Urb 11 (C) c0 03 00 00 2d 00 01 00 01 read Urb 12 (C) c0 03 00 00 2e 00 01 00 06 read Urb 13 (C) c0 03 00 00 2f 00 01 00 96 read Urb 14 (C) c0 03 00 00 30 00 01 00 04 read Urb 15 (C) c0 03 00 00 2a 00 01 00 73 read Urb 16 (C) c0 03 00 00 2b 00 01 00 73 read Urb 17 (C) c0 03 00 00 35 00 01 00 09 read Urb 18 (C) c0 03 00 00 34 00 01 00 23 read Urb 19 (C) c0 03 00 00 83 00 01 00 d3 read Urb 20 (C) 40 02 00 00 01 00 01 00 30 write timing control, auto dark, default timing --------------------------------------------------------------------- Urb 21 (C) 40 02 00 00 03 00 01 00 00 loop 0 write each loop different data values Urb 22 (C) 40 02 00 00 04 00 01 00 01 Urb 23 (C) 40 02 00 00 05 00 01 00 00 Urb 24 (C) 40 02 00 00 06 00 01 00 01 Urb 25 (C) 40 02 00 00 08 00 01 00 00 Urb 26 (C) 40 02 00 00 03 00 01 00 01 loop 1 Urb 27 (C) 40 02 00 00 04 00 01 00 11 Urb 28 (C) 40 02 00 00 05 00 01 00 80 Urb 29 (C) 40 02 00 00 06 00 01 00 01 Urb 30 (C) 40 02 00 00 08 00 01 00 00 Urb 81 (C) 40 02 00 00 03 00 01 00 0c last loop Urb 82 (C) 40 02 00 00 04 00 01 00 f1 Urb 83 (C) 40 02 00 00 05 00 01 00 09 Urb 84 (C) 40 02 00 00 06 00 01 00 05 Urb 85 (C) 40 02 00 00 08 00 01 00 00 Urb 86 (C) 40 02 00 00 07 00 01 00 0d Urb 87 (C) 40 02 00 00 01 00 01 00 29 different Urb 88 (C) 40 02 00 00 91 00 01 00 32 different Urb 89 (C) 40 02 00 00 94 00 01 00 00 different Urb 90 (C) 40 02 00 00 3a 00 01 00 00 loop 0 Urb 91 (C) 40 02 00 00 38 00 01 00 00 Urb 92 (C) c0 03 00 00 38 00 01 00 00 Urb 93 (C) 40 02 00 00 38 00 01 00 00 Urb 94 (C) c0 03 00 00 3a 00 01 00 ff Urb 95 (C) 40 02 00 00 3a 00 01 00 00 loop 1 Urb 96 (C) 40 02 00 00 38 00 01 00 00 Urb 97 (C) c0 03 00 00 38 00 01 00 00 Urb 98 (C) 40 02 00 00 38 00 01 00 00 Urb 99 (C) c0 03 00 00 3a 00 01 00 ff Urb 100 (C) 40 02 00 00 3a 00 01 00 00 loop2 Urb 101 (C) 40 02 00 00 38 00 01 00 00 Urb 102 (C) c0 03 00 00 38 00 01 00 00 Urb 103 (C) 40 02 00 00 38 00 01 00 00 Urb 104 (C) c0 03 00 00 3a 00 01 00 ff Urb 135 (C) 40 02 00 00 3a 00 01 00 00 last loop Urb 136 (C) 40 02 00 00 38 00 01 00 00 Urb 137 (C) c0 03 00 00 38 00 01 00 00 Urb 138 (C) 40 02 00 00 38 00 01 00 00 Urb 139 (C) c0 03 00 00 3a 00 01 00 ff ---------next adjustment Urb 945 (C) 40 02 00 00 3a 00 01 00 00 Urb 946 (C) 40 02 00 00 38 00 01 00 00 Urb 947 (C) c0 03 00 00 38 00 01 00 00 Urb 948 (C) 40 02 00 00 38 00 01 00 00 Urb 949 (C) c0 03 00 00 3a 00 01 00 ff Urb 950 (C) 40 02 00 00 3a 00 01 00 00 Urb 951 (C) ep= >>>> Urb 952 (C) ep= <<<< 00000000: 40 02 00 00 38 00 01 00 Urb 953 (C) ep= <<<< 00000000: 00 00000000: c0 03 00 00 38 00 01 00 Urb 954 (C) ep= <<<< 00000000: 40 02 00 00 38 00 01 00 Urb 955 (C) ep= <<<< 00000000: f4 00000000: c0 03 00 00 0c 00 01 00 Urb 956 (C) ep= <<<< 00000000: 01 00000000: c0 03 00 00 0d 00 01 00 Urb 957 (C) ep= <<<< 00000000: ff 00000000: c0 03 00 00 3a 00 01 00 Urb 958 (C) ep= <<<< 00000000: 63 00000000: c0 03 00 00 28 00 01 00 Urb 959 (C) ep= <<<< 00000000: 07 00000000: c0 03 00 00 29 00 01 00 Urb 960 (C) ep= <<<< 00000000: 48 00000000: c0 03 00 00 2c 00 01 00 Urb 961 (C) ep= <<<< 00000000: 01 00000000: c0 03 00 00 2d 00 01 00 Urb 962 (C) ep= <<<< 00000000: 06 00000000: c0 03 00 00 2e 00 01 00 Urb 963 (C) ep= <<<< 00000000: 96 00000000: c0 03 00 00 2f 00 01 00 Urb 964 (C) ep= <<<< 00000000: 04 00000000: c0 03 00 00 30 00 01 00 Urb 965 (C) ep= <<<< 00000000: 73 00000000: c0 03 00 00 2a 00 01 00 Urb 966 (C) ep= <<<< 00000000: 73 00000000: c0 03 00 00 2b 00 01 00 Urb 967 (C) ep= <<<< 00000000: 09 00000000: c0 03 00 00 35 00 01 00 Urb 968 (C) ep= <<<< 00000000: 23 00000000: c0 03 00 00 34 00 01 00 Urb 969 (C) ep= <<<< 00000000: d3 00000000: c0 03 00 00 83 00 01 00 Urb 970 (C) ep= <<<< 00000000: 40 02 00 00 0e 00 02 00 Urb 971 (C) ep= <<<< 00000000: 40 02 00 00 1c 00 02 00 Urb 972 (C) ep= <<<< 00000000: 40 02 00 00 91 00 01 00 Urb 973 (C) ep= <<<< 00000000: 40 02 00 00 3a 00 01 00 Urb 974 (C) ep= <<<< 00000000: 40 02 00 00 0c 00 01 00 Urb 975 (C) ep= <<<< 00000000: 40 02 00 00 0d 00 01 00 Urb 976 (C) ep= <<<< 00000000: 40 02 00 00 28 00 01 00 Urb 977 (C) ep= <<<< 00000000: 40 02 00 00 29 00 01 00 Urb 978 (C) ep= <<<< 00000000: 40 02 00 00 38 00 01 00 Urb 979 (C) ep= <<<< 00000000: 40 02 00 00 2c 00 01 00 Urb 980 (C) ep= <<<< 00000000: 40 02 00 00 2d 00 01 00 Urb 981 (C) ep= <<<< 00000000: 40 02 00 00 2e 00 01 00 Urb 982 (C) ep= <<<< 00000000: 40 02 00 00 2f 00 01 00 Urb 983 (C) ep= <<<< 00000000: 00 00000000: c0 03 00 00 38 00 01 00 Urb 984 (C) ep= <<<< 00000000: 40 02 00 00 30 00 01 00 Urb 985 (C) ep= <<<< 00000000: 40 02 00 00 00 00 01 00 Urb 986 (C) ep= <<<< 00000000: 40 02 00 00 31 00 01 00 Urb 987 (C) ep= <<<< 00000000: 40 02 00 00 38 00 01 00 Urb 988 (C) ep= <<<< 00000000: 04 00000000: c0 03 00 00 30 00 01 00 Urb 989 (C) ep= <<<< 00000000: 04 00000000: c0 03 00 00 30 00 01 00 Urb 990 (C) ep= <<<< 00000000: 04 00000000: c0 03 00 00 30 00 01 00 Urb 991 (C) ep= <<<< 00000000: 04 00000000: c0 03 00 00 30 00 01 00 Urb 992 (C) ep= <<<< 00000000: ff 00000000: c0 03 00 00 3a 00 01 00 Urb 993 (C) ep= <<<< 00000000: 01 00000000: c0 03 00 00 30 00 01 00 Urb 994 (C) ep= <<<< 00000000: 40 02 00 00 31 00 01 00 Urb 995 (C) ep= <<<< 00000000: 40 02 00 00 10 00 01 00 Urb 996 (C) ep= <<<< 00000000: 40 02 00 00 11 00 01 00 Urb 997 (C) ep= <<<< 00000000: 40 02 00 00 00 00 01 00 Urb 998 (C) ep= <<<< 00000000: 40 02 00 00 3b 00 01 00 Urb 999 (C) ep= <<<< 00000000: ff 00000000: c0 03 00 00 3a 00 01 00 Urb 1000 (C) ep= <<<< 00000000: 40 02 00 00 3a 00 01 00 Urb 1001 (C) ep= <<<< 00000000: 00 00000000: c0 03 00 00 38 00 01 00 Urb 1002 (C) ep= <<<< 00000000: 40 02 00 00 38 00 01 00 Urb 1003 (C) ep= <<<< 00000000: 40 02 00 00 3b 00 01 00 Urb 1004 (C) ep= <<<< 00000000: 40 02 00 00 0e 00 01 00 Urb 1005 (C) ep= <<<< 00000000: 40 02 00 00 0f 00 01 00 Urb 1006 (C) ep= <<<< 00000000: 40 02 00 00 1c 00 02 00 Urb 1007 (C) ep= <<<< 00000000: 40 02 00 00 10 00 01 00 Urb 1008 (C) ep= <<<< 00000000: 40 02 00 00 11 00 01 00 Urb 1009 (C) ep= <<<< 00000000: 40 02 00 00 14 00 01 00 Urb 1010 (C) ep= <<<< 00000000: 40 02 00 00 91 00 01 00 Urb 1011 (C) ep= <<<< 00000000: 40 02 00 00 94 00 01 00 Urb 1012 (C) ep= <<<< 00000000: 40 02 00 00 01 00 01 00 Urb 1013 (C) ep= <<<< 00000000: 40 02 00 00 3a 00 01 00 Urb 1014 (C) ep= <<<< 00000000: 40 02 00 00 91 00 01 00 Urb 1015 (C) ep= <<<< 00000000: 40 02 00 00 00 00 01 00 Urb 1016 (C) ep= <<<< 00000000: 40 02 00 00 38 00 01 00 Urb 1017 (C) ep= <<<< 00000000: 00 00000000: c0 03 00 00 38 00 01 00 Urb 1018 (C) ep=0x00000081 >>>> Urb 1019 (C) ep= >>>> Urb 1020 (C) ep=0x00000081 >>>> endpoint 81 ? lengte 0 ISO packet transport, not checked by spike3 program. Urb 1021 (C) ep=0x00000081 >>>> Urb 1022 (C) ep=0x00000081 <<<< 00000000: 40 02 00 00 38 00 01 00 Urb 1023 (C) ep=0x00000081 >>>> Urb 1024 (C) ep= <<<< 00000000: fe 00000000: c0 03 00 00 3a 00 01 00 Urb 1025 (C) ep= <<<< 00000000: 40 02 00 00 3a 00 01 00 Urb 1026 (C) ep= <<<< 00000000: 40 02 00 00 38 00 01 00 Urb 1027 (C) ep= <<<< 00000000: 00 00000000: c0 03 00 00 38 00 01 00 Urb 1028 (C) ep= <<<< 00000000: 40 02 00 00 38 00 01 00 Urb 1029 (C) ep= <<<< 00000000: fe 00000000: c0 03 00 00 3a 00 01 00 Urb 1030 (C) ep= <<<< 00000000: 40 02 00 00 3a 00 01 00 Urb 1031 (C) ep=0x00000081 >>>> Urb 1032 (C) ep= <<<< 00000000: 40 02 00 00 3b 00 01 00 Urb 1033 (C) ep= <<<< 00000000: 40 02 00 00 38 00 01 00 Urb 1034 (C) ep= <<<< 00000000: ff 00000000: c0 03 00 00 3a 00 01 00 Urb 1035 (C) ep= <<<< 00000000: 40 02 00 00 3a 00 01 00 Urb 1036 (C) ep= <<<< 00000000: 00 00000000: c0 03 00 00 38 00 01 00 Urb 1037 (C) ep= <<<< 00000000: 40 02 00 00 38 00 01 00 Urb 1038 (C) ep= <<<< 00000000: 01 00000000: c0 03 00 00 38 00 01 00 Urb 1039 (C) ep= <<<< 00000000: 40 02 00 00 3b 00 01 00 Urb 1040 (C) ep= <<<< 00000000: ff 00000000: c0 03 00 00 3a 00 01 00 Urb 1041 (C) ep= <<<< 00000000: 40 02 00 00 3a 00 01 00 Urb 1042 (C) ep= <<<< 00000000: 01 00000000: c0 03 00 00 38 00 01 00 Urb 1043 (C) ep= <<<< 00000000: 40 02 00 00 38 00 01 00 Urb 1044 (C) ep= <<<< 00000000: 40 02 00 00 38 00 01 00 Urb 1045 (C) ep= <<<< 00000000: 40 02 00 00 3b 00 01 00 Urb 1046 (C) ep= <<<< 00000000: 40 02 00 00 0e 00 01 00 Urb 1047 (C) ep= <<<< 00000000: 40 02 00 00 0f 00 01 00 Urb 1048 (C) ep= <<<< 00000000: fe 00000000: c0 03 00 00 3a 00 01 00 Urb 1049 (C) ep= <<<< 00000000: 40 02 00 00 1c 00 02 00 Urb 1050 (C) ep= <<<< 00000000: 40 02 00 00 10 00 01 00 Urb 1051 (C) ep= <<<< 00000000: 40 02 00 00 11 00 01 00 Urb 1052 (C) ep= <<<< 00000000: 40 02 00 00 14 00 01 00 Urb 1053 (C) ep= <<<< 00000000: 40 02 00 00 91 00 01 00 Urb 1054 (C) ep= <<<< 00000000: 40 02 00 00 94 00 01 00 Urb 1055 (C) ep= <<<< 00000000: 40 02 00 00 3a 00 01 00 Urb 1056 (C) ep= <<<< 00000000: 40 02 00 00 01 00 01 00 Urb 1057 (C) ep= <<<< 00000000: 40 02 00 00 91 00 01 00 Urb 1058 (C) ep= <<<< 00000000: 40 02 00 00 00 00 01 00 Urb 1059 (C) ep= >>>> Urb 1060 (C) ep=0x00000081 <<<< endpoint length 0 first blok of data is transported, about 40000 bytes in blocks of 34a bytes and 2c7 bytes total 8 blocks possible 1023 bytes according log 20 packects