Dual booting: every time Windows boots, it increases the scrolling speed of the mouse on Ubuntu

Lyn*_*nob 15 mouse dual-boot mouse-scroll scrolling 18.04

My friend has Microsoft Wireless Desktop 850 with AES (PY9-00001) Ubuntu 18.04. The scrolling speed is too fast, but if he removes the USB dongle and plugs it in again, it fixes the problem.

He's on a dual booted PC, and every time he boots Windows then boots back into Ubuntu, the problem is back.

How can we fix it for good?

The problem only occurs after soft reboot only.

lsusb when the mouse is working perfectly

终端中的 lsusb 输出

lsusb when it's not working, when booting Windows then Ubuntu

相同的 lsusb 输出


When the mouse is working as expected, lsmod outputs

Module                  Size  Used by
nls_iso8859_1          16384  1
joydev                 24576  0
input_leds             16384  0
snd_hda_codec_realtek    94208  1
snd_hda_codec_generic    73728  1 snd_hda_codec_realtek
snd_hda_intel          40960  5
snd_hda_codec         126976  3 snd_hda_intel,snd_hda_codec_generic,snd_hda_codec_realtek
mei_me                 40960  0
snd_hda_core           81920  4 snd_hda_intel,snd_hda_codec,snd_hda_codec_generic,snd_hda_codec_realtek
snd_hwdep              20480  1 snd_hda_codec
snd_pcm                98304  4 snd_hda_intel,snd_hda_codec,snd_hda_core
snd_seq_midi           16384  0
snd_seq_midi_event     16384  1 snd_seq_midi
snd_rawmidi            32768  1 snd_seq_midi
lpc_ich                24576  0
intel_rapl             20480  0
x86_pkg_temp_thermal    16384  0
intel_powerclamp       16384  0
coretemp               16384  0
kvm_intel             204800  0
mei                    90112  1 mei_me
kvm                   593920  1 kvm_intel
irqbypass              16384  1 kvm
crct10dif_pclmul       16384  0
crc32_pclmul           16384  0
ghash_clmulni_intel    16384  0
pcbc                   16384  0
snd_seq                65536  2 snd_seq_midi_event,snd_seq_midi
snd_seq_device         16384  3 snd_seq,snd_rawmidi,snd_seq_midi
snd_timer              32768  2 snd_seq,snd_pcm
aesni_intel           188416  0
aes_x86_64             20480  1 aesni_intel
crypto_simd            16384  1 aesni_intel
glue_helper            16384  1 aesni_intel
cryptd                 24576  3 crypto_simd,ghash_clmulni_intel,aesni_intel
intel_cstate           20480  0
intel_rapl_perf        16384  0
snd                    81920  19 snd_hda_intel,snd_hwdep,snd_seq,snd_hda_codec,snd_timer,snd_rawmidi,snd_hda_codec_generic,snd_seq_device,snd_hda_codec_realtek,snd_pcm
shpchp                 36864  0
soundcore              16384  1 snd
mac_hid                16384  0
intel_smartconnect     16384  0
sch_fq_codel           20480  2
parport_pc             36864  0
ppdev                  20480  0
lp                     20480  0
parport                49152  3 lp,parport_pc,ppdev
ip_tables              28672  0
x_tables               40960  1 ip_tables
autofs4                40960  2
hid_generic            16384  0
usbhid                 49152  0
uas                    24576  0
hid                   118784  2 hid_generic,usbhid
usb_storage            69632  3 uas
i915                 1617920  66
i2c_algo_bit           16384  1 i915
drm_kms_helper        172032  1 i915
syscopyarea            16384  1 drm_kms_helper
ahci                   36864  3
sysfillrect            16384  1 drm_kms_helper
mxm_wmi                16384  0
sysimgblt              16384  1 drm_kms_helper
libahci                32768  1 ahci
fb_sys_fops            16384  1 drm_kms_helper
r8169                  86016  0
drm                   401408  11 i915,drm_kms_helper
mii                    16384  1 r8169
video                  45056  1 i915
wmi                    24576  1 mxm_wmi
Run Code Online (Sandbox Code Playgroud)

When the mouse is not working as it should, lsmod outputs

Module                  Size  Used by
nls_iso8859_1          16384  1
input_leds             16384  0
joydev                 24576  0
snd_hda_codec_realtek    94208  1
snd_hda_codec_generic    73728  1 snd_hda_codec_realtek
snd_hda_intel          40960  5
snd_hda_codec         126976  3 snd_hda_intel,snd_hda_codec_generic,snd_hda_codec_realtek
snd_hda_core           81920  4 snd_hda_intel,snd_hda_codec,snd_hda_codec_generic,snd_hda_codec_realtek
snd_hwdep              20480  1 snd_hda_codec
snd_pcm                98304  4 snd_hda_intel,snd_hda_codec,snd_hda_core
snd_seq_midi           16384  0
snd_seq_midi_event     16384  1 snd_seq_midi
snd_rawmidi            32768  1 snd_seq_midi
intel_rapl             20480  0
x86_pkg_temp_thermal    16384  0
intel_powerclamp       16384  0
coretemp               16384  0
kvm_intel             204800  0
kvm                   593920  1 kvm_intel
irqbypass              16384  1 kvm
crct10dif_pclmul       16384  0
crc32_pclmul           16384  0
ghash_clmulni_intel    16384  0
pcbc                   16384  0
aesni_intel           188416  0
aes_x86_64             20480  1 aesni_intel
crypto_simd            16384  1 aesni_intel
glue_helper            16384  1 aesni_intel
cryptd                 24576  3 crypto_simd,ghash_clmulni_intel,aesni_intel
intel_cstate           20480  0
intel_rapl_perf        16384  0
snd_seq                65536  2 snd_seq_midi_event,snd_seq_midi
mei_me                 40960  0
lpc_ich                24576  0
snd_seq_device         16384  3 snd_seq,snd_rawmidi,snd_seq_midi
snd_timer              32768  2 snd_seq,snd_pcm
mei                    90112  1 mei_me
snd                    81920  19 snd_hda_intel,snd_hwdep,snd_seq,snd_hda_codec,snd_timer,snd_rawmidi,snd_hda_codec_generic,snd_seq_device,snd_hda_codec_realtek,snd_pcm
shpchp                 36864  0
soundcore              16384  1 snd
mac_hid                16384  0
intel_smartconnect     16384  0
sch_fq_codel           20480  2
parport_pc             36864  0
ppdev                  20480  0
lp                     20480  0
parport                49152  3 lp,parport_pc,ppdev
ip_tables              28672  0
x_tables               40960  1 ip_tables
autofs4                40960  2
hid_generic            16384  0
usbhid                 49152  0
uas                    24576  0
hid                   118784  2 hid_generic,usbhid
usb_storage            69632  3 uas
mxm_wmi                16384  0
i915                 1617920  56
i2c_algo_bit           16384  1 i915
drm_kms_helper        172032  1 i915
ahci                   36864  3
r8169                  86016  0
syscopyarea            16384  1 drm_kms_helper
sysfillrect            16384  1 drm_kms_helper
libahci                32768  1 ahci
mii                    16384  1 r8169
sysimgblt              16384  1 drm_kms_helper
fb_sys_fops            16384  1 drm_kms_helper
drm                   401408  7 i915,drm_kms_helper
wmi                    24576  1 mxm_wmi
video                  45056  1 i915
Run Code Online (Sandbox Code Playgroud)

The output of xinput:

xinput list
? Virtual core pointer                      id=2    [master pointer  (3)]
?   ? Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
?   ? Microsoft Microsoft® 2.4GHz Transceiver v8.0  id=9    [slave  pointer  (2)]
?   ? Microsoft Microsoft® 2.4GHz Transceiver v8.0  id=11   [slave  pointer  (2)]
? Virtual core keyboard                     id=3    [master keyboard (2)]
    ? Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ? Power Button                              id=6    [slave  keyboard (3)]
    ? Video Bus                                 id=7    [slave  keyboard (3)]
    ? Power Button                              id=8    [slave  keyboard (3)]
    ? Microsoft Microsoft® 2.4GHz Transceiver v8.0  id=10   [slave  keyboard (3)]
    ? Microsoft Microsoft® 2.4GHz Transceiver v8.0  id=12   [slave  keyboard (3)]
    ? Microsoft Microsoft® 2.4GHz Transceiver v8.0  id=13   [slave  keyboard (3)]
Run Code Online (Sandbox Code Playgroud)

And

$ sudo lsof /dev/bus/usb/003/003 
[sudo] password for nad: 
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
      Output information may be incomplete.
lsof: status error on /dev/bus/usb/003/003: No such file or directory
lsof 4.89
 latest revision: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/
 latest FAQ: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/FAQ
 latest man page: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/lsof_man
 usage: [-?abhKlnNoOPRtUvVX] [+|-c c] [+|-d s] [+D D] [+|-E] [+|-e s] [+|-f[gG]]
 [-F [f]] [-g [s]] [-i [i]] [+|-L [l]] [+m [m]] [+|-M] [-o [o]] [-p s]
 [+|-r [t]] [-s [p:s]] [-S [t]] [-T [t]] [-u s] [+|-w] [-x [fl]] [--] [names]
Use the ``-h'' option to get more help information.
Run Code Online (Sandbox Code Playgroud)

lsmod without plugging in the mouse dongle (so the mouse and keyboard combo are unplugged)

Module                  Size  Used by
usbhid                 49152  0
nls_iso8859_1          16384  1
intel_rapl             20480  0
x86_pkg_temp_thermal    16384  0
intel_powerclamp       16384  0
snd_hda_codec_realtek    94208  1
coretemp               16384  0
snd_hda_codec_generic    73728  1 snd_hda_codec_realtek
snd_hda_intel          40960  5
snd_hda_codec         126976  3 snd_hda_intel,snd_hda_codec_generic,snd_hda_codec_realtek
snd_hda_core           81920  4 snd_hda_intel,snd_hda_codec,snd_hda_codec_generic,snd_hda_codec_realtek
snd_hwdep              20480  1 snd_hda_codec
kvm_intel             208896  0
snd_pcm                98304  4 snd_hda_intel,snd_hda_codec,snd_hda_core
kvm                   593920  1 kvm_intel
snd_seq_midi           16384  0
snd_seq_midi_event     16384  1 snd_seq_midi
snd_rawmidi            32768  1 snd_seq_midi
irqbypass              16384  1 kvm
crct10dif_pclmul       16384  0
crc32_pclmul           16384  0
ghash_clmulni_intel    16384  0
snd_seq                65536  2 snd_seq_midi_event,snd_seq_midi
snd_seq_device         16384  3 snd_seq,snd_rawmidi,snd_seq_midi
snd_timer              32768  2 snd_seq,snd_pcm
snd                    81920  19 snd_hda_intel,snd_hwdep,snd_seq,snd_hda_codec,snd_timer,snd_rawmidi,snd_hda_codec_generic,snd_seq_device,snd_hda_codec_realtek,snd_pcm
joydev                 24576  0
input_leds             16384  0
mei_me                 40960  0
pcbc                   16384  0
soundcore              16384  1 snd
mei                    90112  1 mei_me
aesni_intel           188416  0
aes_x86_64             20480  1 aesni_intel
crypto_simd            16384  1 aesni_intel
glue_helper            16384  1 aesni_intel
cryptd                 24576  3 crypto_simd,ghash_clmulni_intel,aesni_intel
intel_cstate           20480  0
intel_rapl_perf        16384  0
lpc_ich                24576  0
shpchp                 36864  0
mac_hid                16384  0
intel_smartconnect     16384  0
sch_fq_codel           20480  2
parport_pc             36864  0
ppdev                  20480  0
lp                     20480  0
parport                49152  3 lp,parport_pc,ppdev
ip_tables              28672  0
x_tables               40960  1 ip_tables
autofs4                40960  2
hid_generic            16384  0
uas                    24576  0
hid                   118784  2 hid_generic,usbhid
usb_storage            69632  3 uas
i915                 1617920  67
mxm_wmi                16384  0
i2c_algo_bit           16384  1 i915
drm_kms_helper        172032  1 i915
syscopyarea            16384  1 drm_kms_helper
sysfillrect            16384  1 drm_kms_helper
r8169                  86016  0
mii                    16384  1 r8169
sysimgblt              16384  1 drm_kms_helper
fb_sys_fops            16384  1 drm_kms_helper
drm                   401408  12 i915,drm_kms_helper
ahci                   36864  3
libahci                32768  1 ahci
wmi                    24576  1 mxm_wmi
video                  45056  1 i915
Run Code Online (Sandbox Code Playgroud)

My friend used to use an HP wireless mouse with a wired keyboard and everything was fine. When he bought that Microsoft wireless mouse/keyboard combo, he started facing the problem listed above.


xinput list-props 9

Device 'Microsoft Microsoft® 2.4GHz Transceiver v8.0':
    Device Enabled (140):   1
    Coordinate Transformation Matrix (142): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
    libinput Natural Scrolling Enabled (275):   0
    libinput Natural Scrolling Enabled Default (276):   0
    libinput Send Events Modes Available (260): 1, 0
    libinput Send Events Mode Enabled (261):    0, 0
    libinput Send Events Mode Enabled Default (262):    0, 0
    Device Node (263):  "/dev/input/event5"
    Device Product ID (264):    1118, 1861
    libinput Drag Lock Buttons (291):   <no items>
    libinput Horizontal Scroll Enabled (292):   1
Run Code Online (Sandbox Code Playgroud)

xinput list-props 11

Device 'Microsoft Microsoft® 2.4GHz Transceiver v8.0':
    Device Enabled (140):   1
    Coordinate Transformation Matrix (142): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
    libinput Natural Scrolling Enabled (275):   0
    libinput Natural Scrolling Enabled Default (276):   0
    libinput Scroll Methods Available (277):    0, 0, 1
    libinput Scroll Method Enabled (278):   0, 0, 0
    libinput Scroll Method Enabled Default (279):   0, 0, 0
    libinput Button Scrolling Button (280): 2
    libinput Button Scrolling Button Default (281): 2
    libinput Middle Emulation Enabled (282):    0
    libinput Middle Emulation Enabled Default (283):    0
    libinput Accel Speed (284): -1.000000
    libinput Accel Speed Default (285): 0.000000
    libinput Accel Profiles Available (286):    1, 1
    libinput Accel Profile Enabled (287):   1, 0
    libinput Accel Profile Enabled Default (288):   1, 0
    libinput Left Handed Enabled (289): 0
    libinput Left Handed Enabled Default (290): 0
    libinput Send Events Modes Available (260): 1, 0
    libinput Send Events Mode Enabled (261):    0, 0
    libinput Send Events Mode Enabled Default (262):    0, 0
    Device Node (263):  "/dev/input/event4"
    Device Product ID (264):    1118, 1861
    libinput Drag Lock Buttons (291):   <no items>
    libinput Horizontal Scroll Enabled (292):   1
Run Code Online (Sandbox Code Playgroud)

usb-devices

T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480 MxCh= 2
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0002 Rev=04.15
S:  Manufacturer=Linux 4.15.0-32-generic ehci_hcd
S:  Product=EHCI Host Controller
S:  SerialNumber=0000:00:1a.0
C:  #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub

T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=480 MxCh= 4
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=8087 ProdID=8008 Rev=00.05
C:  #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub

T:  Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480 MxCh= 2
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0002 Rev=04.15
S:  Manufacturer=Linux 4.15.0-32-generic ehci_hcd
S:  Product=EHCI Host Controller
S:  SerialNumber=0000:00:1d.0
C:  #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub

T:  Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=480 MxCh= 6
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=8087 ProdID=8000 Rev=00.05
C:  #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub

T:  Bus=03 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480 MxCh=10
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0002 Rev=04.15
S:  Manufacturer=Linux 4.15.0-32-generic xhci-hcd
S:  Product=xHCI Host Controller
S:  SerialNumber=0000:00:14.0
C:  #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub

T:  Bus=03 Lev=01 Prnt=01 Port=09 Cnt=01 Dev#=  4 Spd=12  MxCh= 4
D:  Ver= 1.10 Cls=09(hub  ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=058f ProdID=9254 Rev=03.12
S:  Manufacturer=ALCOR
S:  Product=Generic USB Hub
C:  #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=100mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub

T:  Bus=03 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#=  2 Spd=480 MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=1058 ProdID=1021 Rev=20.21
S:  Manufacturer=Western Digital
S:  Product=Ext HDD 1021
S:  SerialNumber=574341575A31353030303333
C:  #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr=2mA
I:  If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage

T:  Bus=03 Lev=01 Prnt=01 Port=02 Cnt=03 Dev#=  5 Spd=12  MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=045e ProdID=0745 Rev=06.76
S:  Manufacturer=Microsoft
S:  Product=Microsoft® 2.4GHz Transceiver v8.0
C:  #Ifs= 3 Cfg#= 1 Atr=a0 MxPwr=100mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=01 Prot=01 Driver=usbhid
I:  If#= 1 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=01 Prot=02 Driver=usbhid
I:  If#= 2 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=00 Prot=00 Driver=usbhid

T:  Bus=04 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=5000 MxCh= 2
D:  Ver= 3.00 Cls=09(hub  ) Sub=00 Prot=03 MxPS= 9 #Cfgs=  1
P:  Vendor=1d6b ProdID=0003 Rev=04.15
S:  Manufacturer=Linux 4.15.0-32-generic xhci-hcd
S:  Product=xHCI Host Controller
S:  SerialNumber=0000:00:14.0
C:  #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
Run Code Online (Sandbox Code Playgroud)

Win*_*nix 6

重置鼠标

Windows 习惯于在重新启动时使设备处于异常状态。当您从 Windows 重新启动到 Windows 时它工作正常,但是从 Windows 重新启动到 Grub 然后再到 Ubuntu 时会出现问题。

OP 的问题只是鼠标滚动速度不正确的一个例子。其他示例包括 Windows 关闭声卡、WiFi 或网络适配器也可能发生。


这是我测试过的一个新脚本,它不会像第一个脚本那样锁定鼠标/键盘。

将此脚本添加到/usr/local/bin/reset-usb

#!/bin/bash

# NAME: /usr/local/bin/reset-usb
# DATE: August 17, 2018.
# DESC: Written for Ask Ubuntu Question:
#       https://askubuntu.com/questions/1061754
#       Reboots / resets all USB devices including mouse & WiFi

if [[ $(id -u) != 0 ]]; then # root powers needed to call this script
    echo $0 must be called with sudo powers
    exit 1
fi

for i in /sys/bus/pci/drivers/[uoex]hci_hcd/*:*; do
  [ -e "$i" ] || continue
  echo "${i##*/}" > "${i%/*}/unbind"
  echo "${i##*/}" > "${i%/*}/bind"
done

systemctl restart NetworkManager.service

exit 0
Run Code Online (Sandbox Code Playgroud)

将文件标记为可执行文件:

sudo chmod +x /usr/local/bin/reset-usb
Run Code Online (Sandbox Code Playgroud)

编辑文件/etc/rc.local并在最后一行之前插入这些行exit 0

# Reboot / reset all USB devices
/usr/local/bin/reset-usb
Run Code Online (Sandbox Code Playgroud)

信用如何从命令行重置 USB 设备?


注意:当内部 USB 设备重置时,WiFi/蓝牙会重新初始化systemctl restart NetworkManager


Fab*_*bby 4

显然,KISS(Keep It Simply Stupid)的答案是:

  • 关闭Windows
  • 按电源按钮启动至 Ubuntu。

为什么?

Windows 驱动程序使鼠标处于不稳定状态,并且所有真正聪明的答案似乎都不起作用,这使我得出这样的结论:Ubuntu 无法解决这个 Windows 问题。

您仍然可以向驱动程序的开发人员提交错误(这里是题外话),但这是一个副作用,而且非常难以调试。如果你这样做的话,预计会花很多时间