Microsoft wireless keyboard - trackpad (mouse) use freezes the machine!
Rick Murray (539) 13872 posts |
Hi, My Pi/server made it to 42 days., 21 hours, and 23 minutes. Then I plugged in a Microsoft All-In-One Media keyboard – one of these. I got it in the sale and was interested in it because it uses a tiny USB dongle and advertises itself as an HID, so isn’t anything unfriendly to RISC OS, like Bluetooth. I’d need to look at tweaking one of the media keys to replace the missing Menu button, but it isn’t a big thing, I did something sort of similar for the Bush Box many years ago. Would be nice, you know, if it actually worked. Using both my homebrew ROM (about a year old) and yesterday’s Pi ROM, the results are the same. Touchpad motion – Touchpad tap – does the action expected of a Select click. Then the machine freezes. Mouse pointer keeps working, but CallBacks don’t. Unless there has been keyboard activity, it seems, in which case simply moving the mouse will result in the machine freezing. Keyboard – spamming the ESC key at boot interrupts the boot sequence. As far as I can determine, that is the ONLY key that works. Oh, okay, I am writing this on the keyboard now. It seems to work when the other keyboard is connected? That’s weird, let me reboot to see… Okay, the keyboard part does work. I just cqnnot touch the ;ouse. Oh, crap, sorry, it is an AZERTY layout keyboard. If I can get it working, I’ll need to get some key stickers or something. Right. One more reboot. Simply moving the mouse pointer with the keyboard in use froze the machine (pointer would move, nothing responsive). I wonder if the mouse or HID part sends too much data or something? I don’t know. I just think it is…unusual…that a mouse can bring the machine down. [that said, my graphics tablet sends extra information (pen pressure) and this doesn’t cause any problems…?] Can anybody help get this working, please? Here is the HID descriptor: FS=USB4 Bus=1 Address=4 Interface=1 045e [Microsoft] 0800 [Microsoft® Nano Transceiver v2.0] HID Report Descriptor, HEX dump (223 bytes): 05 01 09 02 a1 01 05 01 09 02 a1 02 85 1a 09 01 a1 00 05 09 19 01 29 05 95 05 75 01 15 00 25 01 81 02 75 03 95 01 81 01 05 01 09 30 09 31 95 02 75 10 16 01 80 26 ff 7f 81 06 a1 02 85 12 09 48 95 01 75 02 15 00 25 01 35 01 45 10 b1 02 85 1a 09 38 35 00 45 00 95 01 75 10 16 01 80 26 ff 7f 81 06 c0 a1 02 85 12 09 48 75 02 15 00 25 01 35 01 45 10 b1 02 35 00 45 00 75 04 b1 01 85 1a 05 0c 95 01 75 10 16 01 80 26 ff 7f 0a 38 02 81 06 c0 c0 c0 c0 05 0c 09 01 a1 01 05 01 09 02 a1 02 85 1f 05 0c 0a 38 02 95 01 75 10 16 01 80 26 ff 7f 81 06 85 17 06 00 ff 0a 06 ff 0a 0f ff 15 00 25 01 35 01 45 10 95 02 75 02 b1 02 0a 04 ff 35 00 45 00 95 01 75 01 b1 02 75 03 b1 01 c0 c0 HID Report Descriptor (parsed) 04 ......01 Usage Page (Generic Desktop Controls) 08 ......02 Usage (Mouse) a0 ......01 Collection (Application) 04 ......01 Usage Page (Generic Desktop Controls) 08 ......02 Usage (Mouse) a0 ......02 Collection (Logical) 84 ......1a Report ID (26) 08 ......01 Usage (Pointer) a0 ......00 Collection (Physical) 04 ......09 Usage Page (Buttons) 18 ......01 Usage Minimum (1) 28 ......05 Usage Maximum (5) 94 ......05 Report Count (5) 74 ......01 Report Size (1) 14 ......00 Logical Minimum (0) 24 ......01 Logical Maximum (1) 80 ......02 Input (Data, Variable, Absolute) 74 ......03 Report Size (3) 94 ......01 Report Count (1) 80 ......01 Input (Constant, Array, Absolute) 04 ......01 Usage Page (Generic Desktop Controls) 08 ......30 Usage (Direction-X) 08 ......31 Usage (Direction-Y) 94 ......02 Report Count (2) 74 ......10 Report Size (16) 14 ....8001 Logical Minimum (32769) 24 ....7fff Logical Maximum (32767) 80 ......06 Input (Data, Variable, Relative) a0 ......02 Collection (Logical) 84 ......12 Report ID (18) 08 ......48 Usage () 94 ......01 Report Count (1) 74 ......02 Report Size (2) 14 ......00 Logical Minimum (0) 24 ......01 Logical Maximum (1) 34 ......01 Physical Minimum (1) 44 ......10 Physical Maximum (16) b0 ......02 Feature (Data, Variable, Absolute) 84 ......1a Report ID (26) 08 ......38 Usage (Wheel) 34 ......00 Physical Minimum (0) 44 ......00 Physical Maximum (0) 94 ......01 Report Count (1) 74 ......10 Report Size (16) 14 ....8001 Logical Minimum (32769) 24 ....7fff Logical Maximum (32767) 80 ......06 Input (Data, Variable, Relative) c0 ........ End Collection a0 ......02 Collection (Logical) 84 ......12 Report ID (18) 08 ......48 Usage () 74 ......02 Report Size (2) 14 ......00 Logical Minimum (0) 24 ......01 Logical Maximum (1) 34 ......01 Physical Minimum (1) 44 ......10 Physical Maximum (16) b0 ......02 Feature (Data, Variable, Absolute) 34 ......00 Physical Minimum (0) 44 ......00 Physical Maximum (0) 74 ......04 Report Size (4) b0 ......01 Feature (Constant, Array, Absolute) 84 ......1a Report ID (26) 04 ......0c Usage Page (Consumer) 94 ......01 Report Count (1) 74 ......10 Report Size (16) 14 ....8001 Logical Minimum (32769) 24 ....7fff Logical Maximum (32767) 08 ....0238 Usage (AC Pan) 80 ......06 Input (Data, Variable, Relative) c0 ........ End Collection c0 ........ End Collection c0 ........ End Collection c0 ........ End Collection 04 ......0c Usage Page (Consumer) 08 ......01 Usage (Consumer Control) a0 ......01 Collection (Application) 04 ......01 Usage Page (Generic Desktop Controls) 08 ......02 Usage (Mouse) a0 ......02 Collection (Logical) 84 ......1f Report ID (31) 04 ......0c Usage Page (Consumer) 08 ....0238 Usage (AC Pan) 94 ......01 Report Count (1) 74 ......10 Report Size (16) 14 ....8001 Logical Minimum (32769) 24 ....7fff Logical Maximum (32767) 80 ......06 Input (Data, Variable, Relative) 84 ......17 Report ID (23) 04 ....ff00 Usage Page (Undefined) 08 ....ff06 Usage () 08 ....ff0f Usage () 14 ......00 Logical Minimum (0) 24 ......01 Logical Maximum (1) 34 ......01 Physical Minimum (1) 44 ......10 Physical Maximum (16) 94 ......02 Report Count (2) 74 ......02 Report Size (2) b0 ......02 Feature (Data, Variable, Absolute) 08 ....ff04 Usage () 34 ......00 Physical Minimum (0) 44 ......00 Physical Maximum (0) 94 ......01 Report Count (1) 74 ......01 Report Size (1) b0 ......02 Feature (Data, Variable, Absolute) 74 ......03 Report Size (3) b0 ......01 Feature (Constant, Array, Absolute) c0 ........ End Collection c0 ........ End Collection |
Chris Mahoney (1684) 2166 posts |
This wouldn’t be the first time that I’ve seen Microsoft hardware do weird things. With an earlier Pi ROM, my “Basic Optical Mouse v2.0” would result in a “FileCore in use” error as soon as I touched it! Fortunately newer ROMs such as RC14 don’t have that issue, but it was still bizarre. Presumably your device is doing something similarly unexpected. In a way, I’m glad to see that it’s still not working with a year-old ROM; that means that my “touchscreen” code submission didn’t break it :) |
Rick Murray (539) 13872 posts |
Just tested, mouse and cursors work on an older RaspBMC. Didn’t test other keys. Works with Windows, and most of the media keys work too, which is nice given it is designed for Win8+ and I’m using XP… ;-) |
Rick Murray (539) 13872 posts |
Whoa… so cynical! :) |
Steve Pampling (1551) 8187 posts |
Just a thought but if the windows/linux setup includes an option to set keyboard / mouse repeat rate1 then change to a longer time interval and see what it does. Related to the thought, the best way of stopping the VNC server from crashing is to alter repeat rates downward. My speculation was that it was a buffer filling issue. 1 Old |
Chris Mahoney (1684) 2166 posts |
There is a method to my madness :) The touchscreen code queries the screen to get its bounds. It’s possible that a trackpad could return bound data and “trick” the system into thinking that it’s a touchscreen, which would likely result in oddities. It shouldn’t freeze, but you never know! |