Dear Dave and Greg,
Thank you for your mails, Dave, and the quality of your code, which has
made it possible for me to follow it and modify it.
I can recommend and sign-off on your EHCI_HCD buggy devices maxPacketSize
patch, because it made the devices work under usbnet at the EHCI_HCD end.
I am now able to ping in both directions over the F5U258 cables (and over a
pair of F5U258 cables concurrently) from a USB 2.0 EHCI_HCD on 2.6.23.14
kernel with your EHCI_HCD patch for buggy devices to a machine running
2.6.17.14 with USB1.1 on a UHCI_HCD controller laptop.
- No changes were required on the machine where the UHCI_HCD device
is, so I only needed to do a compliation of the kernel for the EHCI_HCD
patch.
So it is working and does not drop any datagrams at all.
There is a message showing in dmesg about ifconfig having problems with
endpoint 0. Endpoint 0 shows up under some USB test software as the
configuration descriptor and the test software shows 4 endpoints, but lsusb
-v only shows 3.
I will try and brew a patch file as mentioned earlier, Greg.
But all I have really done is modify the plusb.c file to have the VID and
PID values of the device in it and then test it in conjunction with your
very helpful help. Since Belkin are a popular manufacturer, then I guess it
would be good to have these values in the software?
- I will try and supply a diff for the usb devices list as well.
More details below. Please let me know what you think.
Kind Regards,
Tony
---------- Detailed logs---------------------
lsusb -v on the 2.6.17.14 kernel reported:
Bus 003 Device 001: ID 0000:0000
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 9 Hub
bDeviceSubClass 0 Unused
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x0000
idProduct 0x0000
bcdDevice 2.06
iManufacturer 3
iProduct 2
iSerial 1
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 25
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xe0
Self Powered
Remote Wakeup
MaxPower 0mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 9 Hub
bInterfaceSubClass 0 Unused
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 0x0002 1x 2 bytes
bInterval 255
Bus 001 Device 005: ID 050d:258a Belkin Components
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 255 Vendor Specific Class
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x050d Belkin Components
idProduct 0x258a
bcdDevice 1.00
iManufacturer 1
iProduct 2
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 39
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 100mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 3
bInterfaceClass 255 Vendor Specific Class
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 0x0008 1x 8 bytes
bInterval 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x83 EP 3 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Bus 001 Device 001: ID 0000:0000
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 9 Hub
bDeviceSubClass 0 Unused
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x0000
idProduct 0x0000
bcdDevice 2.06
iManufacturer 3
iProduct 2
iSerial 1
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 25
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xe0
Self Powered
Remote Wakeup
MaxPower 0mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 9 Hub
bInterfaceSubClass 0 Unused
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 0x0002 1x 2 bytes
bInterval 255
Bus 002 Device 001: ID 0000:0000
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 9 Hub
bDeviceSubClass 0 Unused
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x0000
idProduct 0x0000
bcdDevice 2.06
iManufacturer 3
iProduct 2
iSerial 1
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 25
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xe0
Self Powered
Remote Wakeup
MaxPower 0mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 9 Hub
bInterfaceSubClass 0 Unused
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 0x0002 1x 2 bytes
bInterval 255
lsusb -v on the 2.6.23.14 kernel reported:
Bus 001 Device 002: ID 050d:258a Belkin Components
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 255 Vendor Specific Class
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x050d Belkin Components
idProduct 0x258a
bcdDevice 1.00
iManufacturer 1
iProduct 2
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 39
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
MaxPower 100mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 3
bInterfaceClass 255 Vendor Specific Class
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 0x0008 1x 8 bytes
bInterval 1
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 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Bus 001 Device 001: ID 0000:0000
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 9 Hub
bDeviceSubClass 0 Unused
bDeviceProtocol 1 Single TT
bMaxPacketSize0 64
idVendor 0x0000
idProduct 0x0000
bcdDevice 2.06
iManufacturer 3
iProduct 2
iSerial 1
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 25
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xe0
Self Powered
Remote Wakeup
MaxPower 0mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 9 Hub
bInterfaceSubClass 0 Unused
bInterfaceProtocol 0 Full speed (or root) hub
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 0x0004 1x 4 bytes
bInterval 12
Bus 005 Device 001: ID 0000:0000
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 9 Hub
bDeviceSubClass 0 Unused
bDeviceProtocol 0 Full speed (or root) hub
bMaxPacketSize0 64
idVendor 0x0000
idProduct 0x0000
bcdDevice 2.06
iManufacturer 3
iProduct 2
iSerial 1
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 25
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xe0
Self Powered
Remote Wakeup
MaxPower 0mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 9 Hub
bInterfaceSubClass 0 Unused
bInterfaceProtocol 0 Full speed (or root) hub
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 0x0002 1x 2 bytes
bInterval 255
Bus 002 Device 001: ID 0000:0000
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 9 Hub
bDeviceSubClass 0 Unused
bDeviceProtocol 0 Full speed (or root) hub
bMaxPacketSize0 64
idVendor 0x0000
idProduct 0x0000
bcdDevice 2.06
iManufacturer 3
iProduct 2
iSerial 1
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 25
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xe0
Self Powered
Remote Wakeup
MaxPower 0mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 9 Hub
bInterfaceSubClass 0 Unused
bInterfaceProtocol 0 Full speed (or root) hub
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 0x0002 1x 2 bytes
bInterval 255
Bus 004 Device 001: ID 0000:0000
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 9 Hub
bDeviceSubClass 0 Unused
bDeviceProtocol 0 Full speed (or root) hub
bMaxPacketSize0 64
idVendor 0x0000
idProduct 0x0000
bcdDevice 2.06
iManufacturer 3
iProduct 2
iSerial 1
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 25
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xe0
Self Powered
Remote Wakeup
MaxPower 0mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 9 Hub
bInterfaceSubClass 0 Unused
bInterfaceProtocol 0 Full speed (or root) hub
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 0x0002 1x 2 bytes
bInterval 255
Bus 003 Device 001: ID 0000:0000
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 9 Hub
bDeviceSubClass 0 Unused
bDeviceProtocol 0 Full speed (or root) hub
bMaxPacketSize0 64
idVendor 0x0000
idProduct 0x0000
bcdDevice 2.06
iManufacturer 3
iProduct 2
iSerial 1
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 25
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xe0
Self Powered
Remote Wakeup
MaxPower 0mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 9 Hub
bInterfaceSubClass 0 Unused
bInterfaceProtocol 0 Full speed (or root) hub
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 0x0002 1x 2 bytes
bInterval 255
lspci -v extract of the USB relevant peices under 2.6.23.14 said:
00:1d.0 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6
Family) USB UHCI #1 (rev 03) (prog-if 00 [UHCI])
Subsystem: Dell Unknown device 01a4
Flags: bus master, medium devsel, latency 0, IRQ 16
I/O ports at bf80 [size=32]
Kernel driver in use: uhci_hcd
Kernel modules: uhci-hcd
00:1d.1 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6
Family) USB UHCI #2 (rev 03) (prog-if 00 [UHCI])
Subsystem: Dell Unknown device 01a4
Flags: bus master, medium devsel, latency 0, IRQ 17
I/O ports at bf60 [size=32]
Kernel driver in use: uhci_hcd
Kernel modules: uhci-hcd
00:1d.2 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6
Family) USB UHCI #3 (rev 03) (prog-if 00 [UHCI])
Subsystem: Dell Unknown device 01a4
Flags: bus master, medium devsel, latency 0, IRQ 18
I/O ports at bf40 [size=32]
Kernel driver in use: uhci_hcd
Kernel modules: uhci-hcd
00:1d.3 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6
Family) USB UHCI #4 (rev 03) (prog-if 00 [UHCI])
Subsystem: Dell Unknown device 01a4
Flags: bus master, medium devsel, latency 0, IRQ 19
I/O ports at bf20 [size=32]
Kernel driver in use: uhci_hcd
Kernel modules: uhci-hcd
00:1d.7 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6
Family) USB2 EHCI Controller (rev 03) (prog-if 20 [EHCI])
Subsystem: Dell Unknown device 01a4
Flags: bus master, medium devsel, latency 0, IRQ 16
Memory at ffa80800 (32-bit, non-prefetchable) [size=1K]
Capabilities: [50] Power Management version 2
Capabilities: [58] Debug port: BAR=1 offset=00a0
Kernel driver in use: ehci_hcd
Kernel modules: ehci-hcd
A dmesg extract on the 2.6.23.14 kernel is as follows: (No Tx Timeout this
time, but a message from ifconfig on endpoint 0):
[ 2770.705921] hub 1-0:1.0: debounce: port 3: total 100ms stable 100ms
status 0x100
[ 2771.520484] hub 1-0:1.0: state 7 ports 8 chg 0000 evt 0008
[ 2771.520791] ehci_hcd 0000:00:1d.7: GetStatus port 3 status 001803 POWER
sig=j CSC CONNECT
[ 2771.520932] hub 1-0:1.0: port 3, status 0501, change 0001, 480 Mb/s
[ 2771.527306] hub 1-0:1.0: debounce: port 3: total 100ms stable 100ms
status 0x501
[ 2771.530865] ehci_hcd 0000:00:1d.7: port 3 high speed
[ 2771.530880] ehci_hcd 0000:00:1d.7: GetStatus port 3 status 001005 POWER
sig=se0 PE CONNECT
[ 2771.544130] usb 1-3: new high speed USB device using ehci_hcd and
address 6
[ 2771.559342] ehci_hcd 0000:00:1d.7: port 3 high speed
[ 2771.559357] ehci_hcd 0000:00:1d.7: GetStatus port 3 status 001005 POWER
sig=se0 PE CONNECT
[ 2771.576450] usb 1-3: config 1 interface 0 altsetting 0 bulk endpoint 0x2
has invalid maxpacket 64
[ 2771.576464] usb 1-3: config 1 interface 0 altsetting 0 bulk endpoint
0x83 has invalid maxpacket 64
[ 2771.578320] usb 1-3: default language 0x0409
[ 2771.611678] usb 1-3: new device strings: Mfr=1, Product=2,
SerialNumber=0
[ 2771.611689] usb 1-3: Product: Belkin USB Easy Transfer Cable
[ 2771.611696] usb 1-3: Manufacturer: Belkin Corporation
[ 2771.612116] usb 1-3: uevent
[ 2771.613004] usb 1-3: usb_probe_device
[ 2771.613604] usb 1-3: configuration #1 chosen from 1 choice
[ 2771.613916] usb 1-3: adding 1-3:1.0 (config #1, interface 0)
[ 2771.614119] usb 1-3:1.0: uevent
[ 2771.614133] usb 1-3:1.0: uevent
[ 2771.614630] usbtest 1-3:1.0: usb_probe_interface
[ 2771.614640] usbtest 1-3:1.0: usb_probe_interface - got id
[ 2771.614840] plusb 1-3:1.0: usb_probe_interface
[ 2771.614850] plusb 1-3:1.0: usb_probe_interface - got id
[ 2771.615904] usb0: register 'plusb' at usb-0000:00:1d.7-3, Prolific
PL-2301/PL-2302_PL-25A1hack, 7a:b7:2d:c1:91:70
[ 2771.616358] drivers/usb/core/inode.c: creating file '006'
[ 2779.304586] usb 1-3: ifconfig timed out on ep0in len=0/0
[ 2779.304651] usb0: rxqlen 0 --> 10
[ 2779.304692] usb0: rxqlen 10 --> 20
[ 2779.304732] usb0: rxqlen 20 --> 30
[ 2779.304770] usb0: rxqlen 30 --> 40
[ 2779.304810] usb0: rxqlen 40 --> 50
[ 2779.304847] usb0: rxqlen 50 --> 60
[ 2790.159213] usb0: no IPv6 routers present
ifconfig usb0 is as follows, on both kernel versions:
usb0 Link encap:Ethernet HWaddr 7A:B7:2D:C1:91:70
inet addr:192.168.3.6 Bcast:192.168.3.255 Mask:255.255.255.0
inet6 addr: fe80::78b7:2dff:fec1:9170/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:185 errors:0 dropped:0 overruns:0 frame:0
TX packets:190 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:14692 (14.3 KiB) TX bytes:19719 (19.2 KiB)
ping-ing from the EHCI_HCD machine running 2.6.23.14 kernel is as follows:
PING 192.168.3.5 (192.168.3.5) 56(84) bytes of data.
64 bytes from 192.168.3.5: icmp_seq=1 ttl=64 time=0.981 ms
64 bytes from 192.168.3.5: icmp_seq=2 ttl=64 time=0.594 ms
--- 192.168.3.5 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.594/0.787/0.981/0.195 ms
ping-ing from the UHCI_HCD machine running 2.6.17.14 kernel is as follows:
PING 192.168.3.6 (192.168.3.6) 56(84) bytes of data.
64 bytes from 192.168.3.6: icmp_seq=1 ttl=64 time=1.41 ms
64 bytes from 192.168.3.6: icmp_seq=2 ttl=64 time=0.677 ms
64 bytes from 192.168.3.6: icmp_seq=3 ttl=64 time=1.43 ms
--- 192.168.3.6 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 0.677/1.175/1.435/0.353 ms
Message text written by David Brownell
>
On Sunday 10 February 2008, tony_gibbs wrote:
> However, if a device is using a maxPacketSize that is too big when it is
> being a Full speed device, then would a fix similar to the EHCI patch be
> need for the UHCI_HCD driver as well?
I'm not sure such a patch is possible. There are hardware limitations
to cope with ... and I can't possibly see all the full speed host
controllers supporting such a workaround.
Your particular device looks deeply broken ... as if maybe an internal
EEPROM with descriptor data spped high and full speed sections.
-
To unsubscribe from this lis
t: send the line "unsubscribe linux-usb" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html
<
-
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html