我的朋友有带有 AES 的 Microsoft Wireless Desktop 850(PY9-00001)Ubuntu 18.04。滚动速度太快,但如果他移除 USB 加密狗并再次插入,它修复了问题。
他使用的是双启动的 PC,每次他启动 Windows 然后重新启动 Ubuntu 时,问题就会再次出现。
我们如何才能彻底解决这个问题?
该问题仅在软重启后才会发生。
lsusb
当鼠标工作正常时
lsusb
当它不工作时,当启动 Windows 然后启动 Ubuntu
当鼠标正常工作时,lsmod
输出
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
当鼠标无法正常工作时,lsmod
输出
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
输出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)]
和
$ 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.
lsmod
无需插入鼠标适配器(因此鼠标和键盘组合已拔下)
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
我的朋友以前用的是 HP 无线鼠标和有线键盘,一切都很好。当他买了微软无线鼠标/键盘组合后,他开始遇到上述问题。
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
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
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
答案1
重置鼠标
Windows 有一个习惯,就是在重启时让设备处于异常状态。从 Windows 重启到 Windows 时一切正常,但从 Windows 重启到 Grub 再到 Ubuntu 时就会出现问题。
楼主的问题只是鼠标滚动速度不正确的一个例子。其他例子包括 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
使用以下命令将文件标记为可执行文件:
sudo chmod +x /usr/local/bin/reset-usb
编辑文件/etc/rc.local
并插入以下行前最后一行是exit 0
:
# Reboot / reset all USB devices
/usr/local/bin/reset-usb
笔记:当内部 USB 设备重置时,WiFi/蓝牙也会重新初始化systemctl restart NetworkManager
。
答案2
显然,KISS(保持简单愚蠢)的答案是:
- 关闭视窗
- 按下电源按钮启动 Ubuntu。
为什么?
Windows 驱动程序使鼠标处于不稳定状态,并且没有非常聪明的答案似乎有效,这让我得出这样的结论:Ubuntu 无法解决这个 Windows 问题。
您仍然可以向驱动程序的开发人员提交错误(这与本文无关),但这是一个副作用,而且调试起来非常困难。如果您这样做,预计会花费大量时间
答案3
鼠标必须具有 Windows 在启动时修改的 DPI 设置。通常,为了获得最佳响应,系统将禁用软件鼠标加速并将鼠标 DPI 设置为提供所需移动速度的值。
当您重新启动 Ubuntu 而不关闭鼠标电源时,DPI 设置仍处于 Windows 设置的级别。但是,Ubuntu 默认将鼠标加速度设置为超过 1 倍速度,因此您会体验到更快的运动。
您可以删除 Ubuntu 中的鼠标加速,以便在 Windows 和 Ubuntu 之间切换以获得相似的鼠标移动速度,但如果您直接打开 Ubuntu,鼠标移动可能会非常慢,除非您的鼠标支持在电源循环期间不会改变的 DPI 设置内存。
在 Ubuntu 中删除鼠标加速,创建以下文件:
sudo nano /usr/share/X11/xorg.conf.d/50-mouse-accel-disable.conf
文件内容:
Section "InputClass"
Identifier "Microsoft Mouse"
MatchIsPointer "yes"
Option "AccelerationProfile" "-1"
Option "AccelerationScheme" "none"
Option "AccelSpeed" "-1"
EndSection
重新启动会话以使此更改生效(即注销/登录)