Hi all,
I am an employee here at JPL and my current task is to get some IR  
camera's which claim to be UVC compliant to talk to linux. This is  
the camera: http://www.thermoteknix.com/content/english/products/ 
miricle/110k/index.html

First let me say that I am so thankful for the work you have already  
done in this area, you have given me a head start on this task.

The problem I am having is this. I downloaded and installed the  
latest drivers from the svn server. The driver does not detect the  
cameras. Upon further investigation I found out that lsusb -d 17dc: 
0100 -v | grep "14 Video" returns nothing, so it appears that this is  
not a UVC camera, except I am 99.9% sure it is. I was reading one of  
the threads in this list and found out that I might be able to add  
the Vendor id and Device id. So I added this to the file

/* Thermoteknix MIRICLE */
{
        .match_flags = USB_DEVICE_ID_MATCH_DEVICE |  
USB_DEVICE_ID_MATCH_INT_INFO,
        .idVendor = 0x17dc,
        .idProduct = 0x0100,
        .bInterfaceClass = USB_CLASS_VENDOR_SPEC, // Also tried USB_CLASS_VIDEO
        .bInterfaceSubClass = 1
        .bInterfaceProtocol = 0,
        // tried .driver_info as well
}

When I run lsusb -d 17dc:0100 -v I get the following:

<SNIP>
Bus 005 Device 012: ID 17dc:0100
Device Descriptor:
   bLength                18
   bDescriptorType         1
   bcdUSB               2.00
   bDeviceClass          255 Vendor Specific Class
   bDeviceSubClass       255 Vendor Specific Subclass
   bDeviceProtocol       255 Vendor Specific Protocol
   bMaxPacketSize0        64
   idVendor           0x17dc
   idProduct          0x0100
   bcdDevice            0.00
   iManufacturer           0
   iProduct                0
   iSerial                 0
   bNumConfigurations      1
   Configuration Descriptor:
     bLength                 9
     bDescriptorType         2
     wTotalLength          171
     bNumInterfaces          1
     bConfigurationValue     1
     iConfiguration          0
     bmAttributes         0x80
     MaxPower              100mA
     Interface Descriptor:
       bLength                 9
       bDescriptorType         4
       bInterfaceNumber        0
       bAlternateSetting       0
       bNumEndpoints           0
       bInterfaceClass       255 Vendor Specific Class
       bInterfaceSubClass    255 Vendor Specific Subclass
       bInterfaceProtocol    255 Vendor Specific Protocol
       iInterface              0
     Interface Descriptor:
       bLength                 9
       bDescriptorType         4
       bInterfaceNumber        0
       bAlternateSetting       1
       bNumEndpoints           6
       bInterfaceClass       255 Vendor Specific Class
       bInterfaceSubClass    255 Vendor Specific Subclass
       bInterfaceProtocol    255 Vendor Specific Protocol
       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
       Endpoint Descriptor:
         bLength                 7
         bDescriptorType         5
         bEndpointAddress     0x02  EP 2 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     0x04  EP 4 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     0x86  EP 6 IN
         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     0x88  EP 8 IN
         bmAttributes            2
           Transfer Type            Bulk
           Synch Type               None
           Usage Type               Data
         wMaxPacketSize     0x0200  1x 512 bytes
         bInterval               0
     Interface Descriptor:
       bLength                 9
       bDescriptorType         4
       bInterfaceNumber        0
       bAlternateSetting       2
       bNumEndpoints           6
       bInterfaceClass       255 Vendor Specific Class
       bInterfaceSubClass    255 Vendor Specific Subclass
       bInterfaceProtocol    255 Vendor Specific Protocol
       iInterface              0
       Endpoint Descriptor:
         bLength                 7
         bDescriptorType         5
         bEndpointAddress     0x01  EP 1 OUT
         bmAttributes            3
           Transfer Type            Interrupt
           Synch Type               None
           Usage Type               Data
         wMaxPacketSize     0x0040  1x 64 bytes
         bInterval               1
       Endpoint Descriptor:
         bLength                 7
         bDescriptorType         5
         bEndpointAddress     0x81  EP 1 IN
         bmAttributes            3
           Transfer Type            Interrupt
           Synch Type               None
           Usage Type               Data
         wMaxPacketSize     0x0040  1x 64 bytes
         bInterval               1
       Endpoint Descriptor:
         bLength                 7
         bDescriptorType         5
         bEndpointAddress     0x02  EP 2 OUT
         bmAttributes            3
           Transfer Type            Interrupt
           Synch Type               None
           Usage Type               Data
         wMaxPacketSize     0x0200  1x 512 bytes
         bInterval               1
       Endpoint Descriptor:
         bLength                 7
         bDescriptorType         5
         bEndpointAddress     0x04  EP 4 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     0x86  EP 6 IN
         bmAttributes            3
           Transfer Type            Interrupt
           Synch Type               None
           Usage Type               Data
         wMaxPacketSize     0x0200  1x 512 bytes
         bInterval               1
       Endpoint Descriptor:
         bLength                 7
         bDescriptorType         5
         bEndpointAddress     0x88  EP 8 IN
         bmAttributes            2
           Transfer Type            Bulk
           Synch Type               None
           Usage Type               Data
         wMaxPacketSize     0x0200  1x 512 bytes
         bInterval               0
     Interface Descriptor:
       bLength                 9
       bDescriptorType         4
       bInterfaceNumber        0
       bAlternateSetting       3
       bNumEndpoints           6
       bInterfaceClass       255 Vendor Specific Class
       bInterfaceSubClass    255 Vendor Specific Subclass
       bInterfaceProtocol    255 Vendor Specific Protocol
       iInterface              0
       Endpoint Descriptor:
         bLength                 7
         bDescriptorType         5
         bEndpointAddress     0x01  EP 1 OUT
         bmAttributes            3
           Transfer Type            Interrupt
           Synch Type               None
           Usage Type               Data
         wMaxPacketSize     0x0040  1x 64 bytes
         bInterval               1
       Endpoint Descriptor:
         bLength                 7
         bDescriptorType         5
         bEndpointAddress     0x81  EP 1 IN
         bmAttributes            3
           Transfer Type            Interrupt
           Synch Type               None
           Usage Type               Data
         wMaxPacketSize     0x0040  1x 64 bytes
         bInterval               1
       Endpoint Descriptor:
         bLength                 7
         bDescriptorType         5
         bEndpointAddress     0x02  EP 2 OUT
         bmAttributes            1
           Transfer Type            Isochronous
           Synch Type               None
           Usage Type               Data
         wMaxPacketSize     0x0200  1x 512 bytes
         bInterval               1
       Endpoint Descriptor:
         bLength                 7
         bDescriptorType         5
         bEndpointAddress     0x04  EP 4 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     0x86  EP 6 IN
         bmAttributes            1
           Transfer Type            Isochronous
           Synch Type               None
           Usage Type               Data
         wMaxPacketSize     0x0200  1x 512 bytes
         bInterval               1
       Endpoint Descriptor:
         bLength                 7
         bDescriptorType         5
         bEndpointAddress     0x88  EP 8 IN
         bmAttributes            2
           Transfer Type            Bulk
           Synch Type               None
           Usage Type               Data
         wMaxPacketSize     0x0200  1x 512 bytes
         bInterval               0
Device Qualifier (for other device speed):
   bLength                10
   bDescriptorType         6
   bcdUSB               2.00
   bDeviceClass          255 Vendor Specific Class
   bDeviceSubClass       255 Vendor Specific Subclass
   bDeviceProtocol       255 Vendor Specific Protocol
   bMaxPacketSize0        64
   bNumConfigurations      1
</SNIP>



When I run the USB Device Viewer in Windows I get the following info  
on the camera:

<SNIP>
           ---===>Device Information<===---
English product name: "MIRICLE"

ConnectionStatus:
Current Config Value:              0x01  -> Device Bus Speed: High
Device Address:                    0x04
Open Pipes:                           1

           ===>Endpoint Descriptor<===
bLength:                           0x07
bDescriptorType:                   0x05
bEndpointAddress:                  0x82  -> Direction: IN -  
EndpointID: 2
bmAttributes:                      0x02  -> Bulk Transfer Type
wMaxPacketSize:                  0x0200 = 0x200 max bytes
bInterval:                         0x00

           ===>Device Descriptor<===
bLength:                           0x12
bDescriptorType:                   0x01
bcdUSB:                          0x0200
bDeviceClass:                      0xEF  -> This is a Multi-interface  
Function Code Device
bDeviceSubClass:                   0x02  -> This is the Common Class  
Sub Class
bDeviceProtocol:                   0x01  -> This is the Interface  
Association Descriptor protocol
bMaxPacketSize0:                   0x40 = (64) Bytes
idVendor:                         
0x17DCidProduct:                       0x0201
bcdDevice:                       0x0001
iManufacturer:                     0x01
      English (United States)  "Thermoteknix Systems Ltd"
iProduct:                          0x02
      English (United States)  "MIRICLE"
iSerialNumber:                     0x03
      English (United States)  "00000"
bNumConfigurations:                0x01

           ===>Configuration Descriptor<===
bLength:                           0x09
bDescriptorType:                   0x02
wTotalLength:                    0x00A5  -> Validated
bNumInterfaces:                    0x02
bConfigurationValue:               0x01
iConfiguration:                    0x02
      English (United States)  "MIRICLE"
bmAttributes:                      0x40  -> Self Powered
MaxPower:                          0x32 = 100 mA

           ===>IAD Descriptor<===
bLength:                           0x08
bDescriptorType:                   0x0B
bFirstInterface:                   0x00
bInterfaceCount:                   0x02
bFunctionClass:                    0x0E  -> Video Interface Class
bFunctionSubClass:                 0x03  -> Video Interface Collection
bFunctionProtocol:                 0x00  -> PC_PROTOCOL_UNDEFINED  
protocol
iFunction:                         0x02
      English (United States)  "MIRICLE"

           ===>Interface Descriptor<===
bLength:                           0x09
bDescriptorType:                   0x04
bInterfaceNumber:                  0x00
bAlternateSetting:                 0x00
bNumEndpoints:                     0x00
bInterfaceClass:                   0x0E  -> Video Interface Class
bInterfaceSubClass:                0x01  -> Video Control Interface  
SubClass
bInterfaceProtocol:                0x00
iInterface:                        0x02
      English (United States)  "MIRICLE"

           ===>Class-Specific Video Control Interface Header  
Descriptor<===
bLength:                           0x0D
bDescriptorType:                   0x24
bDescriptorSubtype:                0x01
bcdVDC:                          0x0110
wTotalLength:                    0x002E  -> Validated
dwClockFrequency:            0x003D0900 = (4000000) Hz
bInCollection:                     0x01
baInterfaceNr[1]:                  0x01

           ===>Video Control Input Terminal Descriptor<===
bLength:                           0x11
bDescriptorType:                   0x24
bDescriptorSubtype:                0x02
bTerminalID:                       0x01
wTerminalType:                   0x0201 = (ITT_CAMERA)
bAssocTerminal:                    0x00
iTerminal:                         0x05
      English (United States)  "Miricle Video"
===>Camera Input Terminal Data
wObjectiveFocalLengthMin:        0x0000
wObjectiveFocalLengthMax:        0x0000
wOcularFocalLength:              0x0000
bControlSize:                      0x02
bmControls : 0x20 0x00
      D00 = 0   no -  Scanning Mode
      D01 = 0   no -  Auto-Exposure Mode
      D02 = 0   no -  Auto-Exposure Priority
      D03 = 0   no -  Exposure Time (Absolute)
      D04 = 0   no -  Exposure Time (Relative)
      D05 = 1  yes -  Focus (Absolute)
      D06 = 0   no -  Focus (Relative)
      D07 = 0   no -  Iris (Absolute)
      D08 = 0   no -  Iris (Relative)
      D09 = 0   no -  Zoom (Absolute)
      D10 = 0   no -  Zoom (Relative)
      D11 = 0   no -  Pan (Absolute)
      D12 = 0   no -  Pan (Relative)
      D13 = 0   no -  Roll (Absolute)
      D14 = 0   no -  Roll (Relative)
      D15 = 0   no -  Tilt (Absolute)

           ===>Video Control Output Terminal Descriptor<===
bLength:                           0x09
bDescriptorType:                   0x24
bDescriptorSubtype:                0x03
bTerminalID:                       0x02
wTerminalType:                   0x0101 = (TT_STREAMING)
bAssocTerminal:                    0x00
bSourceID:                         0x03
iTerminal:                         0x06
      English (United States)  "Miricle USB"

           ===>Video Control Selector Unit Descriptor<===
bLength:                           0x07
bDescriptorType:                   0x24
bDescriptorSubtype:                0x04
bUnitID:                           0x03
bNrInPins:                         0x01
===>List of Connected Unit and Terminal ID's
baSourceID[1]:                     0x01
iSelector:                         0x02
      English (United States)  "MIRICLE"

           ===>Interface Descriptor<===
bLength:                           0x09
bDescriptorType:                   0x04
bInterfaceNumber:                  0x01
bAlternateSetting:                 0x00
bNumEndpoints:                     0x01
bInterfaceClass:                   0x0E  -> Video Interface Class
bInterfaceSubClass:                0x02  -> Video Streaming Interface  
SubClass
bInterfaceProtocol:                0x00
iInterface:                        0x06
      English (United States)  "Miricle USB"

           ===>Video Class-Specific VS Video Input Header Descriptor<===
bLength:                           0x0E
bDescriptorType:                   0x24
bDescriptorSubtype:                0x01
bNumFormats:                       0x01
wTotalLength:                    0x004D  -> Validated
bEndpointAddress:                  0x82  -> Direction: IN -  
EndpointID: 2
bmInfo:                            0x00  -> Dynamic Format Change not  
Supported
bTerminalLink:                     0x02
bStillCaptureMethod:               0x00  -> Still Capture Method 0
bTriggerSupport:                   0x00  -> No Hardware Triggering  
Support
bTriggerUsage:                     0x00
bControlSize:                      0x01
Video Payload Format 1             0x00
      D00 = 0   no -  Key Frame Rate
      D01 = 0   no -  P Frame Rate
      D02 = 0   no -  Compression Quality
      D03 = 0   no -  Compression Window Size
      D04 = 0   no -  Generate Key Frame
      D05 = 0   no -  Update Frame Segment
      D06 = 0   no -  Reserved
      D07 = 0   no -  Reserved

           ===>Video Streaming Uncompressed Format Type Descriptor<===
bLength:                           0x1B
bDescriptorType:                   0x24
bDescriptorSubtype:                0x04
bFormatIndex:                      0x01
bNumFrameDescriptors:              0x01
guidFormat:                         
{32595559-0000-0010-8000-00AA00389B71} = YUY2 Format
bBitsPerPixel:                     0x10
bDefaultFrameIndex:                0x01
bAspectRatioX:                     0x04
bAspectRatioY:                     0x03
bmInterlaceFlags:                  0x00
      D0    = 0x00 Interlaced stream or variable: No
      D1    = 0x00 Fields per frame: 2 fields
      D2    = 0x00 Field 1 first: No
      D3    = 0x00 Reserved
      D4..5 = 0x00 Field patterns  -> Field 1 only
      D6..7 = 0x00 Display Mode  -> Bob only
bCopyProtect:                      0x00  -> Duplication Unrestricted

           ===>Video Streaming Uncompressed Frame Type Descriptor<===
bLength:                           0x1E
bDescriptorType:                   0x24
bDescriptorSubtype:                0x05
bFrameIndex:                       0x01
bmCapabilities:                    0x02
wWidth:                          0x0180
wHeight:                         0x0120
dwMinBitRate:                0x05460000
dwMaxBitRate:                0x05460000
dwMaxVideoFrameBufferSize:   0x00036000
dwDefaultFrameInterval:      0x00030D40
bFrameIntervalType:                0x01
===>Additional Discrete Frame Type Data
dwFrameInterval[1]:          0x00030D40

           ===>Color Matching Descriptor<===
bLength:                           0x06
bDescriptorType:                   0x24
bDescriptorSubtype:                0x0D
bColorPrimaries:                   0x00
bTransferCharacteristics:          0x00
bMatrixCoefficients:               0x00

           ===>Endpoint Descriptor<===
bLength:                           0x07
bDescriptorType:                   0x05
bEndpointAddress:                  0x82  -> Direction: IN -  
EndpointID: 2
bmAttributes:                      0x02  -> Bulk Transfer Type
wMaxPacketSize:                  0x0200 = 0x200 max bytes
bInterval:                         0x00
</SNIP>


Funny thing is, I am getting a bInterfaceClass as 0x0E which is the  
flag for UVC right? But I am not getting this same info when I lsusb,  
this is weird. So my question is is my entry listed above correct?  
Are there certain parameters I need to supply that I haven't? And if  
I am certain this is a UVC device how do I go about coercing the  
uvcvideo driver to agree with me? Also is there an irc chat room  
setup for uvc_driver devs?
Thanks in advance for the help,
--
David Trotz
Technical Staff, Computer Vision Group
Jet Propulsion Laboratory
Mail Stop 198-235
4800 Oak Grove Drive
Pasadena, CA 91109
Office 818-354-1897, Fax 818-393-5007
_______________________________________________
Linux-uvc-devel mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/linux-uvc-devel

Reply via email to