# uhci-hcd and Microsoft wireless optical desktop

## dwcrowe

Hi,

I'm trying to get the Microsoft wireless optical desktop (comfort edition) working on my T40 via the usb port.  I'm using 2.6.12-gentoo-r10, udev, and uhci-hcd.  When I plug in the base, the system slows, and dmesg repeats the following output indefinitely.

```

usb 2-2: hotplug

hub 2-0:1.0: debounce: port 2: total 100ms stable 100ms status 0x301

usb 2-2: new low speed USB device using uhci_hcd and address 87

usb 2-2: skipped 1 descriptor after interface

usb 2-2: skipped 1 descriptor after interface

usb 2-2: default language 0x0409

usb 2-2: new device strings: Mfr=1, Product=2, SerialNumber=0

usb 2-2: Product: Microsoft Wireless Optical Desktop® 2.10

usb 2-2: Manufacturer: Microsft

usb 2-2: hotplug

usb 2-2: adding 2-2:1.0 (config #1, interface 0)

usb 2-2:1.0: hotplug

usbhid 2-2:1.0: usb_probe_interface

usbhid 2-2:1.0: usb_probe_interface - got id

uhci_hcd 0000:00:1d.1: uhci_result_control: failed with status 440000

[e59c1240] link (259c11b2) element (159bc040)

 Element != First TD

  0: [d59bc000] link (159bc040) e3 LS Length=7 MaxLen=7 DT0 EndPt=0 Dev=57, PID=2d(SETUP) (buf=18075020)

  1: [d59bc040] link (159bc300) e0 SPD LS Stalled CRC/Timeo Length=7ff MaxLen=7 DT1 EndPt=0 Dev=57, PID=69(IN) (buf=3709b100)

  2: [d59bc300] link (00000001) e3 LS IOC Active Length=0 MaxLen=7ff DT1 EndPt=0 Dev=57, PID=e1(OUT) (buf=00000000)

uhci_hcd 0000:00:1d.1: uhci_result_control: failed with status 440000

[e59c1270] link (259c11b2) element (159bc080)

  0: [d59bc080] link (159bc0c0) e0 LS Stalled CRC/Timeo Length=7 MaxLen=7 DT0 EndPt=0 Dev=57, PID=2d(SETUP) (buf=3623f960)

  1: [d59bc0c0] link (00000001) e3 LS IOC Active Length=0 MaxLen=7ff DT1 EndPt=0 Dev=57, PID=69(IN) (buf=00000000)

input: USB HID v1.11 Keyboard [Microsft Microsoft Wireless Optical Desktop® 2.10] on usb-0000:00:1d.1-2

usb 2-2: adding 2-2:1.1 (config #1, interface 1)

usb 2-2:1.1: hotplug

usbhid 2-2:1.1: usb_probe_interface

usbhid 2-2:1.1: usb_probe_interface - got id

uhci_hcd 0000:00:1d.1: uhci_result_control: failed with status 440000

[e59c1270] link (259c11b2) element (159bc040)

  0: [d59bc040] link (159bc080) e0 LS Stalled CRC/Timeo Length=7 MaxLen=7 DT0 EndPt=0 Dev=57, PID=2d(SETUP) (buf=21fe9360)

  1: [d59bc080] link (159bc0c0) e3 SPD LS Active Length=0 MaxLen=7 DT1 EndPt=0 Dev=57, PID=69(IN) (buf=1abf2400)

  2: [d59bc0c0] link (159bc100) e3 SPD LS Active Length=0 MaxLen=7 DT0 EndPt=0 Dev=57, PID=69(IN) (buf=1abf2408)

  3: [d59bc100] link (159bc140) e3 SPD LS Active Length=0 MaxLen=7 DT1 EndPt=0 Dev=57, PID=69(IN) (buf=1abf2410)

  4: [d59bc140] link (159bc180) e3 SPD LS Active Length=0 MaxLen=7 DT0 EndPt=0 Dev=57, PID=69(IN) (buf=1abf2418)

  5: [d59bc180] link (159bc1c0) e3 SPD LS Active Length=0 MaxLen=7 DT1 EndPt=0 Dev=57, PID=69(IN) (buf=1abf2420)

  6: [d59bc1c0] link (159bc200) e3 SPD LS Active Length=0 MaxLen=7 DT0 EndPt=0 Dev=57, PID=69(IN) (buf=1abf2428)

  7: [d59bc200] link (159bc240) e3 SPD LS Active Length=0 MaxLen=7 DT1 EndPt=0 Dev=57, PID=69(IN) (buf=1abf2430)

  8: [d59bc240] link (159bc280) e3 SPD LS Active Length=0 MaxLen=7 DT0 EndPt=0 Dev=57, PID=69(IN) (buf=1abf2438)

  9: [d59bc280] link (159bc2c0) e3 SPD LS Active Length=0 MaxLen=7 DT1 EndPt=0 Dev=57, PID=69(IN) (buf=1abf2440)

  10: [d59bc2c0] link (159bc300) e3 SPD LS Active Length=0 MaxLen=7 DT0 EndPt=0 Dev=57, PID=69(IN) (buf=1abf2448)

[skipped 60 active TD's]

  71: [f63fd200] link (00000001) e3 LS IOC Active Length=0 MaxLen=7ff DT1 EndPt=0 Dev=57, PID=e1(OUT) (buf=00000000)

uhci_hcd 0000:00:1d.1: uhci_result_control: failed with status 440000

[e59c12a0] link (259c11b2) element (363fd240)

  0: [f63fd240] link (363fd280) e0 LS Stalled CRC/Timeo Length=7 MaxLen=7 DT0 EndPt=0 Dev=57, PID=2d(SETUP) (buf=21fe9360)

  1: [f63fd280] link (363fd2c0) e3 SPD LS Active Length=0 MaxLen=7 DT1 EndPt=0 Dev=57, PID=69(IN) (buf=1abf2400)

  2: [f63fd2c0] link (363fd300) e3 SPD LS Active Length=0 MaxLen=7 DT0 EndPt=0 Dev=57, PID=69(IN) (buf=1abf2408)

  3: [f63fd300] link (363fd340) e3 SPD LS Active Length=0 MaxLen=7 DT1 EndPt=0 Dev=57, PID=69(IN) (buf=1abf2410)

  4: [f63fd340] link (363fd380) e3 SPD LS Active Length=0 MaxLen=7 DT0 EndPt=0 Dev=57, PID=69(IN) (buf=1abf2418)

  5: [f63fd380] link (363fd3c0) e3 SPD LS Active Length=0 MaxLen=7 DT1 EndPt=0 Dev=57, PID=69(IN) (buf=1abf2420)

  6: [f63fd3c0] link (363fd400) e3 SPD LS Active Length=0 MaxLen=7 DT0 EndPt=0 Dev=57, PID=69(IN) (buf=1abf2428)

  7: [f63fd400] link (363fd440) e3 SPD LS Active Length=0 MaxLen=7 DT1 EndPt=0 Dev=57, PID=69(IN) (buf=1abf2430)

  8: [f63fd440] link (363fd480) e3 SPD LS Active Length=0 MaxLen=7 DT0 EndPt=0 Dev=57, PID=69(IN) (buf=1abf2438)

  9: [f63fd480] link (363fd4c0) e3 SPD LS Active Length=0 MaxLen=7 DT1 EndPt=0 Dev=57, PID=69(IN) (buf=1abf2440)

  10: [f63fd4c0] link (363fd500) e3 SPD LS Active Length=0 MaxLen=7 DT0 EndPt=0 Dev=57, PID=69(IN) (buf=1abf2448)

[skipped 60 active TD's]

  71: [df149440] link (00000001) e3 LS IOC Active Length=0 MaxLen=7ff DT1 EndPt=0 Dev=57, PID=e1(OUT) (buf=00000000)

uhci_hcd 0000:00:1d.1: uhci_result_control: failed with status 440000

[e59c1270] link (259c11b2) element (159bc040)

  0: [d59bc040] link (159bc080) e0 LS Stalled CRC/Timeo Length=7 MaxLen=7 DT0 EndPt=0 Dev=57, PID=2d(SETUP) (buf=21fe9360)

  1: [d59bc080] link (159bc0c0) e3 SPD LS Active Length=0 MaxLen=7 DT1 EndPt=0 Dev=57, PID=69(IN) (buf=1abf2400)

  2: [d59bc0c0] link (159bc100) e3 SPD LS Active Length=0 MaxLen=7 DT0 EndPt=0 Dev=57, PID=69(IN) (buf=1abf2408)

  3: [d59bc100] link (159bc140) e3 SPD LS Active Length=0 MaxLen=7 DT1 EndPt=0 Dev=57, PID=69(IN) (buf=1abf2410)

  4: [d59bc140] link (159bc180) e3 SPD LS Active Length=0 MaxLen=7 DT0 EndPt=0 Dev=57, PID=69(IN) (buf=1abf2418)

  5: [d59bc180] link (159bc1c0) e3 SPD LS Active Length=0 MaxLen=7 DT1 EndPt=0 Dev=57, PID=69(IN) (buf=1abf2420)

  6: [d59bc1c0] link (159bc200) e3 SPD LS Active Length=0 MaxLen=7 DT0 EndPt=0 Dev=57, PID=69(IN) (buf=1abf2428)

  7: [d59bc200] link (159bc240) e3 SPD LS Active Length=0 MaxLen=7 DT1 EndPt=0 Dev=57, PID=69(IN) (buf=1abf2430)

  8: [d59bc240] link (159bc280) e3 SPD LS Active Length=0 MaxLen=7 DT0 EndPt=0 Dev=57, PID=69(IN) (buf=1abf2438)

  9: [d59bc280] link (159bc2c0) e3 SPD LS Active Length=0 MaxLen=7 DT1 EndPt=0 Dev=57, PID=69(IN) (buf=1abf2440)

  10: [d59bc2c0] link (159bc300) e3 SPD LS Active Length=0 MaxLen=7 DT0 EndPt=0 Dev=57, PID=69(IN) (buf=1abf2448)

[skipped 60 active TD's]

  71: [f63fd200] link (00000001) e3 LS IOC Active Length=0 MaxLen=7ff DT1 EndPt=0 Dev=57, PID=e1(OUT) (buf=00000000)

uhci_hcd 0000:00:1d.1: uhci_result_control: failed with status 440000

[e59c12a0] link (259c11b2) element (363fd240)

  0: [f63fd240] link (363fd280) e0 LS Stalled CRC/Timeo Length=7 MaxLen=7 DT0 EndPt=0 Dev=57, PID=2d(SETUP) (buf=21fe9360)

  1: [f63fd280] link (363fd2c0) e3 SPD LS Active Length=0 MaxLen=7 DT1 EndPt=0 Dev=57, PID=69(IN) (buf=1abf2400)

  2: [f63fd2c0] link (363fd300) e3 SPD LS Active Length=0 MaxLen=7 DT0 EndPt=0 Dev=57, PID=69(IN) (buf=1abf2408)

  3: [f63fd300] link (363fd340) e3 SPD LS Active Length=0 MaxLen=7 DT1 EndPt=0 Dev=57, PID=69(IN) (buf=1abf2410)

  4: [f63fd340] link (363fd380) e3 SPD LS Active Length=0 MaxLen=7 DT0 EndPt=0 Dev=57, PID=69(IN) (buf=1abf2418)

  5: [f63fd380] link (363fd3c0) e3 SPD LS Active Length=0 MaxLen=7 DT1 EndPt=0 Dev=57, PID=69(IN) (buf=1abf2420)

  6: [f63fd3c0] link (363fd400) e3 SPD LS Active Length=0 MaxLen=7 DT0 EndPt=0 Dev=57, PID=69(IN) (buf=1abf2428)

  7: [f63fd400] link (363fd440) e3 SPD LS Active Length=0 MaxLen=7 DT1 EndPt=0 Dev=57, PID=69(IN) (buf=1abf2430)

  8: [f63fd440] link (363fd480) e3 SPD LS Active Length=0 MaxLen=7 DT0 EndPt=0 Dev=57, PID=69(IN) (buf=1abf2438)

  9: [f63fd480] link (363fd4c0) e3 SPD LS Active Length=0 MaxLen=7 DT1 EndPt=0 Dev=57, PID=69(IN) (buf=1abf2440)

  10: [f63fd4c0] link (363fd500) e3 SPD LS Active Length=0 MaxLen=7 DT0 EndPt=0 Dev=57, PID=69(IN) (buf=1abf2448)

[skipped 60 active TD's]

  71: [df149440] link (00000001) e3 LS IOC Active Length=0 MaxLen=7ff DT1 EndPt=0 Dev=57, PID=e1(OUT) (buf=00000000)

usbhid: probe of 2-2:1.1 failed with error -5

hub 2-0:1.0: state 5 ports 2 chg 0000 evt 0004

uhci_hcd 0000:00:1d.1: port 2 portsc 01ab,00

hub 2-0:1.0: port 2, status 0301, change 0003, 1.5 Mb/s

usb 2-2: USB disconnect, address 87

usb 2-2: usb_disable_device nuking all URBs

usb 2-2: unregistering interface 2-2:1.0

usb 2-2:1.0: hotplug

usb 2-2: unregistering interface 2-2:1.1

usb 2-2:1.1: hotplug

usb 2-2: unregistering device

```

Any ideas?  Any more information needed to make a diagnosis?

Thanks

----------

## dwcrowe

Possibly related:

https://forums.gentoo.org/viewtopic-t-385492-highlight-wireless+optical.html

----------

## dwcrowe

 *dwcrowe wrote:*   

> Possibly related:
> 
> https://forums.gentoo.org/viewtopic-t-385492-highlight-wireless+optical.html

 

- I am not using ACPI

- When I do not allow loading of the HID layer, the BIOS usb driver allows only the keyboard to work.

- adding "usb-handoff" to the kernel does nothing for me.

- I can't seem to get usbkbd or usbmouse to recognized this hardware.

----------

## dwcrowe

 *dwcrowe wrote:*   

>  *dwcrowe wrote:*   Possibly related:
> 
> https://forums.gentoo.org/viewtopic-t-385492-highlight-wireless+optical.html 
> 
> - I am not using ACPI
> ...

 

Update and Bump:

I am able to enable BIOS USB Keyboard support at boot, this allows the keyboard to work initially.  However, upon loading uhci-hcd, it stops working.  The mouse has never worked.

Switching to the usbkbd/usbmouse modules from the generalized input layer allows the keyboard to work, but not the mouse.

Any Ideas?

Thanks

----------

## thadrewid

I am seeing exactly the same errors in my log.  I am running 2.6.12-r10 trying to use the Microsoft Wireless Optical Desktop comfort edition with a Sony VAIO S360P laptop.   Any solutions to this problem?   :Rolling Eyes: 

-drew

----------

## golding

I'm currently using the MS Wireless Optical Desktop Pro (Ergo) set which is woirking perfectly, even have tilt and extra keys mapped for my childrens desktops.

Decided to get the Comfort edition as it has a slightly different approach to the ergonomic design.  Plugged it into the system, it works correctly until the usb kicks in, then states something to the effect of "returns -110" after which the [F] key blinks for some time, then stops.  Unplug comfort kb, plugin ergo kb and all is OK.

Started by looking for any differences on the hardware and the only thing I can see is the receivers have different version numbers.

I have a couple of wirless mice, from receiver V1.0 to V2.1, the older Pro set is using V1.0A and the Comfort is using V3.0A.

Just had a thought, I think I might try this with the PS2 connectors and see if it works then.  If it does I'll update this.

UPDATE::

Yeah, have used USB to PS2 converter as I said above above, anyhow, am using nice new comfort kb as I type.  Feels a little stramge after the ergo kb, but is still easier than a standard kb as it's curved for wrist comfort.

Am now going to hunt down reason for MS to change the standard on their receivers for USB.  After all, USB is USB, should all work regardless.

If I was paranoid, I'd think they (MS) did it on purpose so we couldn't use their hardware on our systems.

----------

## peddie

I know for the wired MS optical mouse I have, it comes with a USB to PS/2 convertor. Have you tried using that?

----------

## golding

OK, following is section from messages when connecting the receiver for the Microsoft Wireless Desktop 3.0 Comfort Edition.  I re-attached my older Ergonomic Wireless KB, then tailed my messages while I inserted the USB for the Comfort KB.

Kernel=2.6.14

latest HAL, Dbus, Udev and Urb emerged about two hours ago.

```
Nov 27 08:43:35 rob usb 2-2: new low speed USB device using ohci_hcd and address 3

Nov 27 08:43:35 rob drivers/usb/input/hid-core.c: ctrl urb status -110 received

Nov 27 08:43:35 rob input: USB HID v1.11 Keyboard [Microsft Microsoft Wireless Optical Desktop® 2.10] on usb-0000:00:02.0-2

Nov 27 08:43:35 rob drivers/usb/input/hid-core.c: ctrl urb status -110 received

Nov 27 08:43:35 rob hal.hotplug[14592]: DEVPATH is not set (subsystem input)

Nov 27 08:43:35 rob usb 2-2: USB disconnect, address 3

Nov 27 08:43:35 rob hal.hotplug[14624]: DEVPATH is not set (subsystem input)

Nov 27 08:43:36 rob usb 2-2: new low speed USB device using ohci_hcd and address 4

Nov 27 08:43:36 rob drivers/usb/input/hid-core.c: ctrl urb status -110 received

Nov 27 08:43:36 rob input: USB HID v1.11 Keyboard [Microsft Microsoft Wireless Optical Desktop® 2.10] on usb-0000:00:02.0-2

Nov 27 08:43:36 rob hal.hotplug[14657]: DEVPATH is not set (subsystem input)

Nov 27 08:43:36 rob drivers/usb/input/hid-core.c: ctrl urb status -110 received

Nov 27 08:43:36 rob usb 2-2: USB disconnect, address 4

Nov 27 08:43:36 rob hal.hotplug[14675]: DEVPATH is not set (subsystem input)
```

The section shown is the first two stanzas of the message.  It continues, adding a number to the address until the plug is removed.  On my system it continued to 'ohci_hcd and address 64' when I pulled the USB plug.

The other concern is that 'DEVPATH' only comes up on this item, I can add and remove other USB devices to my hearts content, and never see anything about 'DEVPATH'

Any ideas people?

----------

## golding

More stuff, hopefully will help someone solve this problem.  Unfortunately, I can find stuff, but am very bad at using it to change code or scripts/api etc.

```
/path/to/kernel/source/Documentation/DocBook/usb

The Linux USB API supports synchronous calls for control and bulk messaging.  It also supports asynchnous calls for all kinds of data transfer, using request structures called "URBs" (USB Request Blocks).

USB supported devices:

The remaining kinds of USB devices that do not have support on Linux are almost all vendor-specific devices. Each vendor decides to implement a custom protocol to talk to their device, so a custom driver usually needs to be created. Some vendors are open with their USB protocols and help with the creation of Linux drivers, while others do not publish them, and developers are forced to reverse-engineer. See Resources for some links to handy reverse-engineering tools.

/path/to/kernel/source/include/asm-generic/errno.h

#define   ETIMEDOUT   110   /* Connection timed out */

/path/to/kernel/source/Documentation/usb/error-codes.txt 

-ETIMEDOUT (**)      No response packet received within the prescribed

         bus turn-around time.  This error may instead be

         reported as -EPROTO or -EILSEQ.

         Note that the synchronous USB message functions

         also use this code to indicate timeout expired

         before the transfer completed.

-EPROTO (*, **)      a) bitstuff error

         b) no response packet received within the

            prescribed bus turn-around time

         c) unknown USB error 

-EILSEQ (*, **)      a) CRC mismatch

         b) no response packet received within the

            prescribed bus turn-around time

         c) unknown USB error 

         Note that often the controller hardware does not

         distinguish among cases a), b), and c), so a

         driver cannot tell whether there was a protocol

         error, a failure to respond (often caused by

         device disconnect), or some other fault.
```

From the above I can see that a vendor-specific USB driver is needed for this device.  This is where I will have to bow out, I am not able to write code.  Especially if it requires reverse engineering of the protocols

----------

## golding

SOLVED - for me anyway  :Smile: 

I don't know why, but I decided to try connecting my Comfort KB to the Natural KB receiver.  It worked and now my Comfort KB is working a treat.  The mouse, however would not connect to the Natural receiver.  I had already bought another MS Wireless Mouse anyway (translucent blue coloured model with side scrolling), so that is a non-issue for me.

From this it seems that the problem is entirely with the V3.0 receiver being a vendor specific device.

I had only to setup the 'Favourites' buttons for my daughters logins as the others were already mapped.  As far as I am concerned, the extra buttons are more a hindrance than help.

----------

