私は最近apt full-upgrade
含まれているカーネルアップデートの後にかなり奇妙な問題に2回ぶつかりました。
これまで2回、私のマウス(完全に動作しているLogitech M510、以下で説明しますが、これが問題ではないとほとんど確信しています)が20〜30分間アイドル状態のときにポインタを無効にしました。ボタン機能を維持しながらビデオを視聴します。
1.バッテリーを交換し、マウスを数回オフにして再びオンにしましたが、違いはありません。
2.同様に、USB統合レシーバーを削除しても問題は解決しません。
三。 dmesg
エラーや警告は記録されません。受信機を再接続すると、出力は以前と同様に正常です。
usb 4-1.1: USB disconnect, device number 3
usb 4-1.1: new full-speed USB device number 5 using ehci-pci
usb 4-1.1: New USB device found, idVendor=046d, idProduct=c52b, bcdDevice=24.07
usb 4-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
usb 4-1.1: Product: USB Receiver
usb 4-1.1: Manufacturer: Logitech
logitech-djreceiver 0003:046D:C52B.0008: hiddev0,hidraw0: USB HID v1.11 Device [Logitech USB Receiver] on usb-0000:00:1d.0-1.1/input2
input: Logitech M510 as /devices/pci0000:00/0000:00:1d.0/usb4/4-1/4-1.1/4-1.1:1.2/0003:046D:C52B.0008/0003:046D:4051.0009/input/input38
logitech-hidpp-device 0003:046D:4051.0009: input,hidraw1: USB HID v1.11 Mouse [Logitech M510] on usb-0000:00:1d.0-1.1/input2:1
input: Logitech K350 as /devices/pci0000:00/0000:00:1d.0/usb4/4-1/4-1.1/4-1.1:1.2/0003:046D:C52B.0008/0003:046D:200A.000A/input/input39
logitech-hidpp-device 0003:046D:200A.000A: input,hidraw2: USB HID v1.11 Keyboard [Logitech K350] on usb-0000:00:1d.0-1.1/input2:2
4. xinput test [mouse]
ボタンを押すのに反応しますが、xev
ポインタの移動は記録されません。つまり、端末には何も記録されません。
5.solaar show
マウスポインタが機能していないとき(ロジクールreceive cli)を使って修正しましたが、線Device activity counters: 1=18, 2=12
以外には何の違いもありませんでした。受信機とマウスが失敗した場合の結合出力は次のとおりです。
Unifying Receiver
Device path : /dev/hidraw0
USB id : 046d:c52b
Serial : AD33D9EE
Firmware : 24.07.B0030
Bootloader : 02.09
Other : AA.AC
Has 2 paired device(s) out of a maximum of 6.
Notifications: wireless, software present (0x000900)
Device activity counters: 1=18, 2=12
Wireless Mouse M510
Codename : M510v2
Kind : mouse
Wireless PID : 4051
Protocol : HID++ 4.5
Polling rate : 8 ms (125Hz)
Serial number: AD33D9EE
Firmware: RQM 62.00.B0013
The power switch is located on the base.
Supports 22 HID++ 2.0 features:
0: ROOT {0000}
1: FEATURE SET {0001}
2: DEVICE FW VERSION {0003}
3: DEVICE NAME {0005}
4: RESET {0020}
5: BATTERY STATUS {1000}
6: unknown:1802 {1802} internal, hidden
7: unknown:1810 {1810} internal, hidden
8: unknown:1830 {1830} internal, hidden
9: unknown:1862 {1862} internal, hidden
10: unknown:1890 {1890} internal, hidden
11: unknown:18A0 {18A0} internal, hidden
12: unknown:18B1 {18B1} internal, hidden
13: REPROG CONTROLS V4 {1B04}
14: WIRELESS DEVICE STATUS {1D4B}
15: unknown:1DF0 {1DF0} hidden
16: unknown:1DF3 {1DF3} internal, hidden
17: unknown:1E00 {1E00} hidden
18: unknown:1EB0 {1EB0} internal, hidden
19: unknown:1F03 {1F03} internal, hidden
20: LOWRES WHEEL {2130}
Wheel Reports: HID
21: POINTER SPEED {2205}
Pointer Speed: 1.0
Has 7 reprogrammable keys:
0: LEFT CLICK , default: LeftClick => LEFT CLICK
divertable, mse, pos:0, group:1, gmask:1
1: RIGHT CLICK , default: RightClick => RIGHT CLICK
divertable, mse, pos:0, group:1, gmask:1
2: MIDDLE BUTTON , default: MiddleMouseButton => MIDDLE BUTTON
divertable, mse, reprogrammable, pos:0, group:2, gmask:3
3: LEFT SCROLL AS AC PAN , default: HorzScrollLeftSet => LEFT SCROLL AS AC PAN
divertable, mse, reprogrammable, pos:0, group:2, gmask:3
4: RIGHT SCROLL AS AC PAN , default: HorzScrollRightSet => RIGHT SCROLL AS AC PAN
divertable, mse, reprogrammable, pos:0, group:2, gmask:3
5: BACK AS BUTTON 4 , default: BackEx => BACK AS BUTTON 4
divertable, mse, reprogrammable, pos:0, group:2, gmask:3
6: FORWARD AS BUTTON 5 , default: BrowserForwardEx => FORWARD AS BUTTON 5
divertable, mse, reprogrammable, pos:0, group:2, gmask:3
Battery: 90%, discharging.
diff
出力の前後に使用するsolaar show
ときに得られる唯一の違いは次のとおりです。
< Device activity counters: 1=18, 2=12
---
> Device activity counters: 1=77, 2=212
7.問題が発生したときに単にシステムを再起動しようとしたわけではありません。どちらも作業中で、データの保存が最優先事項だったからです。つまり、再起動してもポインタ機能が復元されないと、とても驚くでしょう。
8.最後に再起動せずにこのセッションの途中で問題を解決する唯一の方法が、次のことを実行している理由を理解できません。
sudo modprobe -r psmouse
元の目標は実行しsudo modprobe -r psmouse
てからsudo modprobe psmouse
再ロードすることでしたが、単にpsmouse
モジュールを削除すると機能が復元されました。実行lsmod | grep -i mouse
リストには何もないか、psmouse
他の*mouse*
モジュールはありません(psmouse
再ロードしようとした最初であり、これまで唯一のマウス関連モジュールです)。
psmouse
これにより、ワイヤレスキーボードとマウスを制御するカーネルモジュールの間に、省電力と電源管理に関連する一種の干渉があるのではないかと思います。修正されました)。しかし、パッシブペリフェラルを選択的に目覚めさせることも聞いたことがありません。hid_logitech_hidpp
/sys/device/[mouse]/power/*
最後に、ブラックリストを使用するとこれがpsmouse
再び発生するのを防ぐことができますが、モジュールを最初にロードしないと有線マウスが認識されなくなる可能性があることを理解しているため、解決策としてこれを行うことは慎重ですですpsmouse
。
この動作の原因を絞り込むためのアイデアと見つけることができる場所はありますか?
$ lsmod | grep hid
hid_logitech_hidpp 45056 0
hid_logitech_dj 28672 0
hid_generic 16384 0
usbhid 65536 1 hid_logitech_dj
hid 139264 4 usbhid,hid_generic,hid_logitech_dj,hid_logitech_hidpp
usbcore 299008 8 xhci_hcd,ehci_pci,usbhid,ehci_hcd,xhci_pci
そしてリストdpkg --list | grep -i libhid
ii libhidapi-dev:amd64 0.9.0+dfsg-1 amd64 Multi-Platform library for communication with HID devices (development files)
ii libhidapi-hidraw0:amd64 0.9.0+dfsg-1 amd64 Multi-Platform library for communication with HID devices (hidraw backend)
ii libhidapi-libusb0:amd64 0.9.0+dfsg-1 amd64 Multi-Platform library for communication with HID devices (libusb backend)
ii libhidrd0:amd64 0.2.0-11 amd64 runtime library for parsing and generating USB HID reports
ii libhidrd0-dev:amd64 0.2.0-11 amd64 development files for parsing and generating USB HID reports
修正する
solaar -dd
以下は、このエラーを一貫して再現する方法を見つけた後に収集したいくつかの追加ログです。
1つ目は、現在のバッテリー状態とその通知に関連しています。可能性はリーンですが、正直なところ、以前に利用可能だったマウスバッテリーの状態を覚えておらず、今ポーリングする可能性があるため、これはまだ理由に関連している可能性があります。ただし、このエラー通知は、マウスが正常に動作しているときに再び表示されるため、疑わしいです。
WARNING [ReceiverListener:hidraw1] logitech_receiver.status: <PairedDevice(1,4051,M510v2)>: battery 70%, ALERT invalid battery
ERROR [ReceiverListener:hidraw1] logitech_receiver.listener: processing Notification(1,05,00,46050000000000000000000000000000)
Traceback (most recent call last):
File "/usr/share/solaar/lib/logitech_receiver/listener.py", line 185, in run
self._notifications_callback(n)
File "/usr/share/solaar/lib/solaar/listener.py", line 220, in _notifications_handler
_notifications.process(dev, n)
File "/usr/share/solaar/lib/logitech_receiver/notifications.py", line 54, in process
return _process_device_notification(device, status, notification)
File "/usr/share/solaar/lib/logitech_receiver/notifications.py", line 115, in _process_device_notification
return _process_feature_notification(device, status, n, feature)
File "/usr/share/solaar/lib/logitech_receiver/notifications.py", line 209, in _process_feature_notification
status.set_battery_info(discharge, _hidpp20.BATTERY_STATUS[battery_status])
File "/usr/share/solaar/lib/logitech_receiver/status.py", line 205, in set_battery_info
reason = _("Battery: %(percent)d%% (%(status)s)") % { 'percent': level, 'status': _(status) }
File "/usr/share/solaar/lib/logitech_receiver/i18n.py", line 29, in <lambda>
_ = lambda x: _gettext.gettext(x).decode('UTF-8')
AttributeError: 'NamedInt' object has no attribute 'decode'
2番目のログは現在読みにくいですが、一度六角形のhidppトラフィックをデコードすると、受信機が実際にマウスで何をしようとしているのかがわかります。現在、受信者が送信中または受信しているようです(まだ方向を特定できず、
w[] and the r[])
応答も同じです)。r[10 01 8F00 0F0900]18:55:44,573 WARNING [ReceiverListener:hidraw1] logitech_receiver.base: timeout (4.00/4.00) on device 1 request {000F} params [2120] 18:55:44,573 DEBUG [ReceiverListener:hidraw1] logitech_receiver.base: (15) <= w[10 01 000F 212100] 18:55:44,577 DEBUG [ReceiverListener:hidraw1] logitech_receiver.base: (15) => r[10 01 8F00 0F0900] 18:55:44,577 DEBUG [ReceiverListener:hidraw1] logitech_receiver.base: (15) device 0x01 error on request {000F}: 9 = resource error 18:55:44,577 DEBUG [ReceiverListener:hidraw1] logitech_receiver.base: (15) <= w[10 01 000A 212100] 18:55:44,579 DEBUG [ReceiverListener:hidraw1] logitech_receiver.base: (15) => r[20 02 4101 0A201A4000000400000000] 18:55:44,581 DEBUG [ReceiverListener:hidraw1] logitech_receiver.base: (15) => r[20 00 4102 0000000000000000000000] 18:55:44,583 DEBUG [ReceiverListener:hidraw1] logitech_receiver.base: (15) => r[10 01 8F00 0A0900] 18:55:44,583 DEBUG [ReceiverListener:hidraw1] logitech_receiver.base: (15) device 0x01 error on request {000A}: 9 = resource error 18:55:44,583 DEBUG [ReceiverListener:hidraw1] logitech_receiver.base: (15) <= w[10 01 000C 40A000] 18:55:44,585 DEBUG [ReceiverListener:hidraw1] logitech_receiver.base: (15) => r[10 01 8F00 0C0900] 18:55:44,585 DEBUG [ReceiverListener:hidraw1] logitech_receiver.base: (15) device 0x01 error on request {000C}: 9 = resource error 18:55:44,585 DEBUG [ReceiverListener:hidraw1] logitech_receiver.base: (15) <= w[10 01 0009 40A200] 18:55:44,587 DEBUG [ReceiverListener:hidraw1] logitech_receiver.base: (15) => r[10 01 8F00 090900] 18:55:44,587 DEBUG [ReceiverListener:hidraw1] logitech_receiver.base: (15) device 0x01 error on request {0009}: 9 = resource error 18:55:44,587 DEBUG [ReceiverListener:hidraw1] logitech_receiver.base: (15) <= w[10 01 0008 40A300] 18:55:44,589 DEBUG [ReceiverListener:hidraw1] logitech_receiver.base: (15) => r[10 01 8F00 080900] 18:55:44,589 DEBUG [ReceiverListener:hidraw1] logitech_receiver.base: (15) device 0x01 error on request {0008}: 9 = resource error 18:55:44,589 DEBUG [ReceiverListener:hidraw1] logitech_receiver.base: (15) <= w[10 01 000C 220100] 18:55:44,591 DEBUG [ReceiverListener:hidraw1] logitech_receiver.base: (15) => r[10 01 8F00 0C0900] 18:55:44,591 DEBUG [ReceiverListener:hidraw1] logitech_receiver.base: (15) device 0x01 error on request {000C}: 9 = resource error 18:55:44,591 DEBUG [ReceiverListener:hidraw1] logitech_receiver.base: (15) <= w[10 01 000C 211000] 18:55:44,593 DEBUG [ReceiverListener:hidraw1] logitech_receiver.base: (15) => r[10 01 8F00 0C0900] 18:55:44,593 DEBUG [ReceiverListener:hidraw1] logitech_receiver.base: (15) device 0x01 error on request {000C}: 9 = resource error
最後に、nouveをペアリング解除してから再ペアリングしようとすると、まだ機能しなくなり、デバッグログに次の行が表示されます。
INFO [ReceiverListener:hidraw1] solaar.listener: Notification(2,41,04,B10A20) triggered new device <PairedDevice(2,200A,K350)> (keyboard) INFO [ReceiverListener:hidraw1] solaar.listener: status_changed <UnifyingReceiver(/dev/hidraw1,15)>: present, 1 paired device. (0) DEBUG [ReceiverListener:hidraw1] logitech_receiver.notifications: <PairedDevice(2,200A,K350)>: unifying (eQuad DJ) connection notification: software=True, encrypted=True, link=True, payload=True INFO [ReceiverListener:hidraw1] solaar.listener: status_changed <PairedDevice(2,200A,K350)>: paired online, {'BATTERY LEVEL': NamedInt(90, 'full'), 'BATTERY CHARGING': False, 'BATTERY STATUS': NamedInt(0, 'discharging'), 'LINK ENCRYPTED': True, 'NOTIFICATION FLAGS': 1048576, 'ERROR': None} (0) WARNING [ReceiverListener:hidraw1] logitech_receiver.notifications: <PairedDevice(2,200A,K350)>: unrecognized Notification(2,42,00,0000000000000000000000) DEBUG [ReceiverListener:hidraw1] logitech_receiver.base: (15) <= w[10 FF 83B5 200000] DEBUG [ReceiverListener:hidraw1] logitech_receiver.base: (15) => r[10 FF 8F83 B50300] DEBUG [ReceiverListener:hidraw1] logitech_receiver.base: (15) device 0xFF error on request {83B5}: 3 = invalid value DEBUG [ReceiverListener:hidraw1] logitech_receiver.base: (15) <= w[10 FF 83B5 040000] DEBUG [ReceiverListener:hidraw1] logitech_receiver.base: (15) => r[10 FF 8F83 B50300] DEBUG [ReceiverListener:hidraw1] logitech_receiver.base: (15) device 0xFF error on request {83B5}: 3 = invalid value ERROR [ReceiverListener:hidraw1] logitech_receiver.receiver: failed to read Nano wpid for device 1 of <UnifyingReceiver(/dev/hidraw1,15)> ERROR [ReceiverListener:hidraw1] logitech_receiver.receiver: register_new_device Traceback (most recent call last): File "/usr/share/solaar/lib/logitech_receiver/receiver.py", line 415, in register_new_device dev = PairedDevice(self, number, notification) File "/usr/share/solaar/lib/logitech_receiver/receiver.py", line 103, in __init__ raise _base.NoSuchDevice(number=number, receiver=receiver, error="read Nano wpid") NoSuchDevice: {'error': u'read Nano wpid', 'number': 1, 'receiver': <UnifyingReceiver(/dev/hidraw1,15)>} WARNING [ReceiverListener:hidraw1] logitech_receiver.receiver: <UnifyingReceiver(/dev/hidraw1,15)>: looked for device 1, not found WARNING [ReceiverListener:hidraw1] solaar.listener: <UnifyingReceiver(/dev/hidraw1,15)>: received Notification(1,40,00,0000000000000000000000) for invalid device 1: None`