For internal usage at my work, they built a USB to 1-wire translator
on top of a PIC. They assigned it the USB HID class and give it the
a report descriptor for Vendor Usage 1 so that they wouldn't have to
install any drivers on Windows. See below for the report descriptor in
PIC ASM format, it's just byte codes.
The thing worked great, including not needing to install drivers on
user's desktops, and now I'd like to use it on my Linux box. However,
when I plug it in, this is what I get (on FC3, kernel 2.6.12-1.1372):
Aug 30 14:10:56 redwall kernel: usb 2-1: new low speed USB device using
uhci_hcd and address 3
Aug 30 14:11:01 redwall kernel: usb 2-1: unable to read config index 1
descriptor/start
Aug 30 14:11:01 redwall kernel: usb 2-1: can't read configurations, error -110
Aug 30 14:11:01 redwall kernel: usb 2-1: new low speed USB device using
uhci_hcd and address 4
Aug 30 14:11:06 redwall kernel: usb 2-1: unable to read config index 1
descriptor/start
Aug 30 14:11:06 redwall kernel: usb 2-1: can't read configurations, error -110
Aug 30 14:11:06 redwall kernel: usb 2-1: new low speed USB device using
uhci_hcd and address 5
Aug 30 14:11:11 redwall kernel: usb 2-1: unable to read config index 1
descriptor/start
Aug 30 14:11:11 redwall kernel: usb 2-1: can't read configurations, error -110
Aug 30 14:11:11 redwall kernel: usb 2-1: new low speed USB device using
uhci_hcd and address 6
Aug 30 14:11:16 redwall kernel: usb 2-1: unable to read config index 1
descriptor/start
Aug 30 14:11:16 redwall kernel: usb 2-1: can't read configurations, error -110
Aug 30 14:18:33 redwall kernel: usb 2-1: new low speed USB device using
uhci_hcd and address 7
Since this is my first post to the list, could someone please let me
know the rules of list etiquette?
What information is needed to debug this problem?
What things can I try myself?
Do I need to write my own driver in Linux to support the device?
Thank you,
Colin Kuskie
; ******************************************************************
; This table is polled by the host immediately after USB Reset has been
released.
; This table defines the maximum packet size EP0 can take.
; See section 9.6.1 of the Rev 1.0 USB specification.
; These fields are application DEPENDENT. Modify these to meet
; your specifications.
; the offset is passed in P0 and P1 (P0 is low order byte).
; ******************************************************************
Descriptions
banksel EP0_start
movf EP0_start+1,w
movwf PCLATH
movf EP0_start,w
movwf PCL
DeviceDescriptor
StartDevDescr
retlw 0x12 ; bLengthLength of this descriptor
retlw 0x01 ; bDescType This is a DEVICE descriptor
retlw 0x10 ; bcdUSBUSB revision 1.10 (low byte)
retlw 0x01 ; high byte
retlw 0x00 ; bDeviceClasszero means each interface
operates independently
retlw 0x00 ; bDeviceSubClass
retlw 0x00 ; bDeviceProtocol
retlw 0x08 ; bMaxPacketSize0 - inited in UsbInit()
retlw 0xFA ; idVendor - 0x04FA is Dallas Semiconductor
Vendor ID
retlw 0x04 ; vendor high order byte
retlw 0x23 ; idProduct = 0x9123
retlw 0x91 ; product high order byte
retlw 0x01 ; bcdDevice - Use this as the rev indicator.
retlw 0x00
retlw 0x01 ; iManufacturer - String Descriptor Index for
Manufacturer
retlw 0x02 ; iProduct - String Descriptor Index for Product
retlw 0x00 ; iSerialNumber - 3
retlw NUM_CONFIGURATIONS ; bNumConfigurations
; ******************************************************************
; This table is retrieved by the host after the address has been set.
; This table defines the configurations available for the device.
; See section 9.6.2 of the Rev 1.0 USB specification (page 184).
; These fields are application DEPENDENT.
; Modify these to meet your specifications.
; ******************************************************************
Config1
retlw 0x09 ; bLength Length of this descriptor
retlw 0x02 ; bDescType 2=CONFIGURATION
retlw EndConfig1 - Config1 ;wTotalLength
retlw 0x00
retlw 0x01 ; bNumInterfaces Number of interfaces
retlw 0x01 ; bConfigValue Configuration Value
retlw 0x03 ; iConfig String Index for this config =
#03
retlw 0x80 ; bmAttributes attributes - bus powered,
remote wakeup disabled
retlw 0x32 ; MaxPower 100mA
Interface1
retlw 0x09 ; length of descriptor
retlw INTERFACE;
retlw 0x00 ; number of interface, 0 based array
retlw 0x00 ; alternate setting (default = 0)
retlw 0x02 ; number of endpoints used in this interface
(excluding endpoint 0)
retlw 0x03 ; interface class (0x03 = HID)
retlw 0x00 ; interface subclass (0x00 = not a boot device)
retlw 0x00 ; interface protocol (0x00 = none)
retlw 0x00 ; index to string descriptor that describes
this interface
HID_Descriptor
retlw (Endpoint1 - HID_Descriptor) ; descriptor size
retlw 0x21 ; descriptor type (HID)
retlw 0x00 ; Low byte of HID class release number (1.00)
retlw 0x01 ; High byte of HID class release number (1.00)
retlw 0x00 ; Localized country code (none)
retlw 0x01 ; # of HID class descriptor to follow (1)
retlw 0x22 ; Report descriptor type (HID)
retlw low (end_ReportDescriptor - ReportDescriptor)
retlw high (end_ReportDescriptor - ReportDescriptor)
Endpoint1
retlw 0x07 ; length of descriptor
retlw ENDPOINT ; Descriptor type
retlw 0x81 ; Encoded Address: EP1, In
retlw 0x03 ; Endpoint Attribute: Interrupt transfer
retlw 0x08 ; max packet size (8 bytes) low order byte
retlw 0x00 ; max packet size (8 bytes) high order byte
retlw 0x0A ; polling interval (10ms)
Endpoint2
retlw 0x07 ; length of descriptor
retlw ENDPOINT ; Descriptor type
retlw 0x01 ; Encoded Address: EP1, OUT
retlw 0x03 ; Endpoint Attribute: Interrupt transfer
retlw 0x08 ; max packet size (8 bytes) low order byte
retlw 0x00 ; max packet size (8 bytes) high order byte
retlw 0x0A ; polling interval (10ms)
EndConfig1
ReportDescriptorLen
retlw low (end_ReportDescriptor-ReportDescriptor)
ReportDescriptor
dt 0x06, 0xA0, 0xff ; USAGE_PAGE (Vendor Defined Page 1)
dt 0x09, 0x01 ; USAGE (Vendor Usage 1)
dt 0xa1, 0x01 ; COLLECTION (Application)
; INPUT REPORT
dt 0x09, 0x01 ; USAGE (Vendor Usage 1)
dt 0x15, 0x00 ; LOGICAL_MINIMUM (0)
dt 0x26, 0xff, 0x00 ; LOGICAL_MAXIMUM (255)
dt 0x75, 0x08 ; REPORT_SIZE (8 bits)
dt 0x95, 0x08 ; REPORT_COUNT (8)
dt 0x81, 0x02 ; INPUT (Data,Var,Abs)
; OUTPUT REPORT
dt 0x09, 0x02 ; USAGE (Vendor Usage 2)
dt 0x15, 0x00 ; LOGICAL_MINIMUM (0)
dt 0x26, 0xff, 0x00 ; LOGICAL_MAXIMUM (255)
dt 0x75, 0x08 ; REPORT_SIZE (8 bits)
dt 0x95, 0x08 ; REPORT_COUNT (8)
dt 0x91, 0x02 ; OUTPUT (Data,Var,Abs)
dt 0xc0 ; END_COLLECTION
end_ReportDescriptor
-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-users