NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

kern/55161: Add support for Microsoft Wireless Desktop 900 Mouse



>Number:         55161
>Category:       kern
>Synopsis:       Add support for Microsoft Wireless Desktop 900 Mouse
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    kern-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Fri Apr 10 19:35:00 +0000 2020
>Originator:     M. Boerschig
>Release:        9.0, 9.99.55
>Organization:
>Environment:
NetBSD 9.99.55 (GENERIC)
>Description:
I use the Microsoft Wireless Desktop 900 Mouse via its 2.4 GHz transceiver.
When using on NetBSD Xorg appears to lock-up completely when moving the mouse.
Turning on usbhid debug levels showed:

[   331.239567] hidms_intr: x:-5 y:-9 z:1280 w:-1280 buttons:0x0
[   331.249570] uhidev6: expected 2 bytes, got 9
[   331.249570] hidms_intr: len=9

This confused the X server so much that it appears to freeze the whole system (well, keyboard won't react, so...)

I set this PR's priority to 'high' because it renders the system unusable when moving the mouse.

>How-To-Repeat:
Plug the Wireless Desktop 900 2.4GHz receiver in the USB port, start up X, move mouse. System freezes.
I run glxgears to demonstrate the freezing.
A slight mouse movement might take 20-30 seconds to recover, in that time glxgears is wedged.
Somehow the erroneous hid message seem to confuse X.

The workaround employed in ums.c  for other transceivers works fine.
>Fix:
diff --git a/sys/dev/usb/ums.c b/sys/dev/usb/ums.c
index f81295d6d070..f8c4ed1a49b7 100644
--- a/sys/dev/usb/ums.c
+++ b/sys/dev/usb/ums.c
@@ -173,6 +173,7 @@ ums_attach(device_t parent, device_t self, void *aux)
                switch (uha->uiaa->uiaa_product) {
                case USB_PRODUCT_MICROSOFT_24GHZ_XCVR10:
                case USB_PRODUCT_MICROSOFT_24GHZ_XCVR20:
+               case USB_PRODUCT_MICROSOFT_24GHZ_XCVR80:
                case USB_PRODUCT_MICROSOFT_NATURAL_6000:
                        fixpos = 24;
                        break;
diff --git a/sys/dev/usb/usbdevs b/sys/dev/usb/usbdevs
index fbe0a5b987d9..511c94854fe9 100644
--- a/sys/dev/usb/usbdevs
+++ b/sys/dev/usb/usbdevs
@@ -2328,6 +2328,7 @@ product MICROSOFT XBOX_CONTROLLER_S12     0x0289  Xbox Controller S (1.2)
 product MICROSOFT XBOX_360_WIRELESS_RECEIVER 0x0291 Xbox 360 Wireless Receiver
 product MICROSOFT 24GHZ_XCVR10         0x071d  2.4GHz Transceiver V1.0
 product MICROSOFT 24GHZ_XCVR20         0x071f  2.4GHz Transceiver V2.0
+product MICROSOFT 24GHZ_XCVR80         0x07b2  2.4GHz Transceiver V8.0
 product MICROSOFT CM6000               0x077d  Comfort Mouse 6000



Home | Main Index | Thread Index | Old Index