Hello, I am trying to get an Agilent U2741A Digital Multimeter working with multiple versions of the usbtmc driver without much luck. One thing in paticular that I am noticing is the output of lsusb -v. A large number of values that I would expect to be found that would allow the driver to find the device are 'Defined at Interface Level', such a bDeviceClass, bDeviceSubClass, bInterfaceClass, bInterfaceSubClass, and many others (see full output at the end of this email). The 'old' usbtmc driver from the Agilent website has a usb_device_id structure that only specifies .bInterfaceClass and .bInterfaceSubclass; I did hack this portion of the driver to use .idVendor and .idProduct and managed to get it to a very basic level of 'working' where it would recognize the device. There is also a 'new' usbtmc driver that is included in the kernel sources. It matches the device using USB_INTERFACE_INFO(USB_CLASS_APP_SPEC, 3, 0) and USB_INTERFACE_INFO(USB_CLASS_APP_SPEC, 3, 1). I also modified this driver by setting vendor and productId to even match my device, but still without any luck getting the device to work; after a couple of reads from the device I would get timeout errors, or after writing all reads would return a timeout error (which was the exact same behaviour from the 'old' driver). But my main question is, what does it mean when lsusb -v outputs that a field is 'Defined at Interface Level'? Because it seems that if these values are not able to be seen by the driver, the first step of matching the driver to the device does not work without hacking up a match for the exact device and vendor id. As promised, here is the full output of lsusb -v for this device: ------------------------------------------------------------------------------ Bus 001 Device 056: ID 0957:4818 Agilent Technologies, Inc. Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 0 (Defined at Interface level) bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 64 idVendor 0x0957 Agilent Technologies, Inc. idProduct 0x4818 bcdDevice 11.11 iManufacturer 1 Agilent- APIC iProduct 2 iSerial 238 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 97 bNumInterfaces 1 bConfigurationValue 1 iConfiguration 0 bmAttributes 0xc0 Self Powered MaxPower 100mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 4 bInterfaceClass 0 (Defined at Interface level) bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 0 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 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 0x82 EP 2 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 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 1 bNumEndpoints 6 bInterfaceClass 0 (Defined at Interface level) bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 0 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 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 0x82 EP 2 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 0x83 EP 3 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 1 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x03 EP 3 OUT bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 1 Device Qualifier (for other device speed): bLength 10 bDescriptorType 6 bcdUSB 2.00 bDeviceClass 0 (Defined at Interface level) bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 64 bNumConfigurations 1 Device Status: 0x0001 Self Powered ------------------------------------------------------------------------------ And, as another request for help, any advice on using the usbtmc driver or getting Agilent products to work under Linux would be greatly appreciated. Thank You. -- Burton Samograd -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html