linux-surface icon indicating copy to clipboard operation
linux-surface copied to clipboard

evbug on Surface Go

Open ecc1 opened this issue 5 years ago • 16 comments

It seems like the evbug module is required to get the Surface Go's cover keyboard to work reliably, but I don't understand why. Is there any hope that it won't be necessary in the future?

ecc1 avatar Feb 28 '19 19:02 ecc1

I'm running it on my Go and haven't had any issues with the type cover so far, I'll do some checking and see if evbug is already installed or not. Running Ubuntu 18.04 with 5.0.1-1.signed. Any specific issues I can test for?

omnibaer avatar Mar 25 '19 06:03 omnibaer

Look at the output of dmesg, it should be filled with evbug messages if you use the keyboard (and lsmod should show that evbug is loaded)

ecc1 avatar Mar 25 '19 19:03 ecc1

I'm running 5.0.1 without evbug installed and the type cover works fine. What specifically isn't working without it?

On Tue, Mar 26, 2019, 04:13 Eric [email protected] wrote:

Look at the output of dmesg, it should be filled with evbug messages if you use the keyboard

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/jakeday/linux-surface/issues/408#issuecomment-476338856, or mute the thread https://github.com/notifications/unsubscribe-auth/ARInq4D9SvqoKAqKqI9sSaVmE4yfSeoZks5vaR_ogaJpZM4bXmwl .

omnibaer avatar Mar 26 '19 00:03 omnibaer

Ah, I'm still on 4.19.28. I'll try the latest and see if it's no longer an issue.

ecc1 avatar Mar 26 '19 01:03 ecc1

No luck. I'm running the kernel deb from the Releases tab here: https://github.com/jakeday/linux-surface/releases/download/5.0.1-1/linux-image-5.0.1-surface-linux-surface_5.0.1-surface-linux-surface-4_amd64.deb

It has the evbug module loaded, but I'm not sure what's causing it to be loaded. And my dmesg output is full of evbug messages ...

I've tried blacklisting the evbug module, but when it's not loaded, keyboard input is unusable -- keystrokes are just not registering for seconds at a time, and it's bad enough that it's impossible to log in (can't tell when my password has been read correctly).

Did you build your own 5.0.1 kernel, and is its config different from the released deb?

Are there multiple revisions of type covers out there? Mine is the cloth-like gray one if it matters.

ecc1 avatar Mar 26 '19 16:03 ecc1

I had tried that initially too and couldn't boot at all, so I ran the setup from the source and had no issues. It also addressed the UTC clock issue, though I had to reconfigure my wireless firmware to get that working again. There aren't many config differences in the setup.sh, and I don't think any would affect type cover functionality, but feel free to play with them.

I'm running a model 1840 type cover, same color; I think the hardware is identical regardless of skin (assuming no localization differences). OOC, does a normal USB keyboard work fine without evbug?

omnibaer avatar Mar 27 '19 00:03 omnibaer

A USB keyboard works fine without evbug, and so does the type cover when I'm using an X terminal. It seems like it's a combination of user error on my part (my thumbs brushing the touchpad while I type) and something that behaves differently on the console vs. X with respect to locking out the keyboard while using the touchpad. It looks like I don't have the X synaptics driver installed, if that matters. Is there some inverse of the "disable touchpad while typing" setting somewhere in the input system?

ecc1 avatar Mar 27 '19 16:03 ecc1

OK, some more data. When the input freezes because I brush the touchpad while typing at the console, the Type Cover USB device is disconnecting and reconnecting:

[61575.061380] input: Microsoft Surface Type Cover Mouse as /devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7:1.3/0003:045E:096F.0096/input/input213                                   
[61575.061684] input: Microsoft Surface Type Cover Touchpad as /devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7:1.3/0003:045E:096F.0096/input/input214                                
[61575.061887] hid-multitouch 0003:045E:096F.0096: input,hiddev2,hidraw4: USB HID v1.11 Mouse [Microsoft Surface Type Cover] on usb-0000:00:14.0-7/input3                          
[62390.126714] usb 1-7: USB disconnect, device number 44                                 
[62391.127712] usb 1-7: new full-speed USB device number 45 using xhci_hcd               
[62391.277482] usb 1-7: New USB device found, idVendor=045e, idProduct=096f, bcdDevice= 0.11
[62391.277485] usb 1-7: New USB device strings: Mfr=1, Product=2, SerialNumber=0         
[62391.277487] usb 1-7: Product: Surface Type Cover                                      
[62391.277489] usb 1-7: Manufacturer: Microsoft                                          
[62391.281139] input: Microsoft Surface Type Cover as /devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7:1.0/0003:045E:096F.0097/input/input215                                         
[62391.339926] hid-generic 0003:045E:096F.0097: input,hidraw0: USB HID v1.11 Keyboard [Microsoft Surface Type Cover] on usb-0000:00:14.0-7/input0                                  
[62391.340806] input: Microsoft Surface Type Cover Consumer Control as /devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7:1.1/0003:045E:096F.0098/input/input216                        
[62391.399820] input: Microsoft Surface Type Cover as /devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7:1.1/0003:045E:096F.0098/input/input217                                         
[62391.399964] hid-generic 0003:045E:096F.0098: input,hiddev0,hidraw1: USB HID v1.11 Device [Microsoft Surface Type Cover] on usb-0000:00:14.0-7/input1                            
[62391.400637] hid-generic 0003:045E:096F.0099: hiddev1,hidraw2: USB HID v1.11 Device [Microsoft Surface Type Cover] on usb-0000:00:14.0-7/input2                                  
[62391.402518] input: Microsoft Surface Type Cover Mouse as /devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7:1.3/0003:045E:096F.009A/input/input218                                   
[62391.402637] input: Microsoft Surface Type Cover Touchpad as /devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7:1.3/0003:045E:096F.009A/input/input219                                
[62391.402764] hid-multitouch 0003:045E:096F.009A: input,hiddev2,hidraw4: USB HID v1.11 Mouse [Microsoft Surface Type Cover] on usb-0000:00:14.0-7/input3                          
[62393.363326] usb 1-7: USB disconnect, device number 45                                 
[62394.363663] usb 1-7: new full-speed USB device number 46 using xhci_hcd               
[62394.513656] usb 1-7: New USB device found, idVendor=045e, idProduct=096f, bcdDevice= 0.11
[62394.513660] usb 1-7: New USB device strings: Mfr=1, Product=2, SerialNumber=0         
[62394.513662] usb 1-7: Product: Surface Type Cover                                      
[62394.513664] usb 1-7: Manufacturer: Microsoft                                          
[62394.517360] input: Microsoft Surface Type Cover as /devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7:1.0/0003:045E:096F.009B/input/input220                                         
[62394.576088] hid-generic 0003:045E:096F.009B: input,hidraw0: USB HID v1.11 Keyboard [Microsoft Surface Type Cover] on usb-0000:00:14.0-7/input0                                  
[62394.576952] input: Microsoft Surface Type Cover Consumer Control as /devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7:1.1/0003:045E:096F.009C/input/input221                        
[62394.635835] input: Microsoft Surface Type Cover as /devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7:1.1/0003:045E:096F.009C/input/input222                                         
[62394.636139] hid-generic 0003:045E:096F.009C: input,hiddev0,hidraw1: USB HID v1.11 Device [Microsoft Surface Type Cover] on usb-0000:00:14.0-7/input1                            
[62394.636802] hid-generic 0003:045E:096F.009D: hiddev1,hidraw2: USB HID v1.11 Device [Microsoft Surface Type Cover] on usb-0000:00:14.0-7/input2                                  
[62394.638711] input: Microsoft Surface Type Cover Mouse as /devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7:1.3/0003:045E:096F.009E/input/input223                                   
[62394.638839] input: Microsoft Surface Type Cover Touchpad as /devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7:1.3/0003:045E:096F.009E/input/input224                                
[62394.638969] hid-multitouch 0003:045E:096F.009E: input,hiddev2,hidraw4: USB HID v1.11 Mouse [Microsoft Surface Type Cover] on usb-0000:00:14.0-7/input3         

ecc1 avatar Mar 27 '19 16:03 ecc1

A USB keyboard works fine without evbug, and so does the type cover when I'm using an X terminal. It seems like it's a combination of user error on my part (my thumbs brushing the touchpad while I type) and something that behaves differently on the console vs. X with respect to locking out the keyboard while using the touchpad. It looks like I don't have the X synaptics driver installed, if that matters. Is there some inverse of the "disable touchpad while typing" setting somewhere in the input system?

Great catch! I'm using Fedora 29 (kernel 5.0.3) on my Surface Go and I'm encountering the exact same issue. The dmesg output is also similar to yours every time it disconnects. No problems at all when in an X or Wayland session, but the problem happens when I'm in a tty or even when I'm trying to unlock my encrypted partition. Since I'm running the kernel provided by the distro, evbug is not installed.

Here's an excerpt from my dmesg output: https://gist.github.com/kylemsguy/6517feb2bfe2361e482a497c39d2e4da

kylemsguy avatar Mar 27 '19 18:03 kylemsguy

Try the steps here, see if that helps: https://github.com/jakeday/linux-surface/issues/385 For consoles, mouse input seldom translates into activity (mouseover events etc) so that might explain the disparity there.

omnibaer avatar Mar 28 '19 01:03 omnibaer

I just tried that, but it didn't seem to change anything. I added those lines to /usr/share/libinput/50-local-overrides.quirks and the problem still happens.

The issue doesn't seem to be the same as the referenced issue, since I was able to disable the touchpad while typing just fine.

kylemsguy avatar Mar 28 '19 01:03 kylemsguy

This issue (type cover USB device detaching and re-attaching when I brush the touchpad while typing) is still present in the 5.0.7-1 release.

ecc1 avatar Apr 17 '19 18:04 ecc1

This problem is still present in 5.0.10. Can anyone besides @kylemsguy and me reproduce this, or is it possible we have flaky Type Cover hardware? (Seems unlikely given the different behavior in console vs X)

ecc1 avatar May 07 '19 01:05 ecc1

Hi, can confirm having the same issue on both 4.19.48 and 5.1.15. In plain tty mode, as soon as I touch Type Cover trackpad it seems to reset and disconnect/reconnect the USB device.

As soon as I start some GUI (in this case Gnome on Wayland) the trackpad work as expected, as long as I stay in that tty. If i switch to tty2 (cli) and use the touchpad, it disconnects/reconnects. But staying in the tty with the X session it does seem to work fine.

Setup: Brand new Surface Go (8GB) with brand new Type Cover. Arch linux, with somewhat hacky setup (first time fooling around in Arch), with modules installed as per https://github.com/dmhacker/arch-linux-surface installation. Kernel built locally, but with configuration as from that repo.

In general, everything so far seems to work pretty well in Gnome session: touchscreen, sound, screen etc. Will continue to play, but so far happy!

stromnet avatar Jul 01 '19 17:07 stromnet

I just tried to run evtest in a plain tty, and selected the Microsoft Surface Type Cover Touchpad device. As long as evtest was running and consuming events, I can use the touchpad without any disconnects. If I kill it, and touch the touchpad, the keyboard resets within a second or two (LEDs flashing briefly).

Wild guess: some io buffer in the Type Cover is not getting drained if nothing is consuming the events or something, causing a reset? I'm not too familiar with the Linux HID API or USB/HID in general, so might be totally wrong :)

stromnet avatar Jul 02 '19 05:07 stromnet

I experience the same issue on my Go. I run Arch with Sway/Wayland, and I have a hotkey that toggles the touchpad on/off via swaymsg.

If the touchpad is off (ie, Sway is no longer consuming events from the device), and I start typing while also interacting with the (disabled) touchpad, then I see the same behaviour described by others in this ticket -- the keyboard briefly stops responding, and my dmesg -w output shows USB disconnect/reconnect events for the keyboard and mouse in the Surface Cover.

It seems that something needs to drain the touchpad events or else the kernel puts it in the corner for a brief timeout.

jvinet avatar Jun 08 '20 14:06 jvinet