Linux 下配置udev来实现chrome对于蜻蜓R1鼠标的访问

Linux 下配置udev来实现chrome对于蜻蜓R1鼠标的访问

前言

最近买了一个蜻蜓R1的鼠标,用于我的Manjaro Linux笔记本。鼠标本身不错,但是其提供的鼠标控制台只有官方windows版本的。不过官方也考虑到Linux用户的需求,有一个ATK HUB WEB供非windows系统的用户在Chrome或者chromium浏览器中使用。

不过当我尝试使用它的时候,发现实际上并不能正常使用。于是就开始探寻如何能让它正常工作。

udev规则的设置

首先,打开chrome的控制台之后会发现一个无法打开设备的报错。于是我先搜了一下关于chrome如何访问USB的资料,得到了Google官方的帮助文档,文档里提到若想在 Linux 系统上访问已连接的设备,需要先正确配置 udev 规则。那看来就是udev规则设置的问题了。下面我们就开始设置udev规则。

首先在终端中执行lsusb命令打印出目前所有的usb设备

   ~  lsusb                                                                                    
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 3554:f58e Compx VXE Mouse 1K Dongle
Bus 001 Device 003: ID 04f2:b6cb Chicony Electronics Co., Ltd Integrated Camera

很明显Compx VXE Mouse 1K Dongle这个设备就是我们鼠标的usb无线接收器了,其中3554为VID,f58e为PID。

接下来我们在新建一条udev规则/etc/udev/rules.d/99-usb.rules,并且写入如下内容

SUBSYSTEM=="usb", ATTRS{idVendor}=="3554", ATTRS{idProduct}=="f58e", MODE="0666", GROUP="plugdev"

保存之后,执行下面两条命令来让规则生效

sudo udevadm control --reload-rules
sudo udevadm trigger

接下来新建一个plugdev的组并且将我们当前的用户加入组中。

sudo groupadd plugdev
sudo usermod -aG plugdev $USER

之后重启系统,再次尝试使用ATK HUB WEB,结果还是不行,看来还有别的原因。

修改USB/HID设备权限

经过一番查找之后,我了解chrome会将访问usb设备的日志打印在chrome://device-log/中,于是我在chrome中打开这个地址,里面写明了错误的原因。

20:08:55] Failed to open '/dev/hidraw1': FILE_ERROR_ACCESS_DENIED

HIDEvent[20:08:55] Access denied opening device read-write, trying read-only.

这里的日志清晰的告诉我们chrome访问的/dev/hidraw1是没有写入权限的,所以导致无法操作设备。

这里我们执行命令为设备添加写入权限。

sudo chmod a+rw /dev/hidraw1

之后重启之后,确实可以成功的使用了。

等我高兴的设置完鼠标之后,因为其他任务我重启了一下,之后发现居然又失效了,必须重新运行一遍sudo chmod a+rw /dev/hidraw1才能使用。我想每次启动执行一遍这个命令也不是不可以,但是一个是设备名可能会变成/dev/hidraw2之类的,如果直接sudo chmod a+rw /dev/hidraw*虽然也可以但是总不太优雅和安全。看来还有别的办法。

问题的本质

经过一番查询之后我才发现,原来是我第一步里面的配置有误,网站并不是通过USB访问鼠标,而是通过HID来访问鼠标的,所以我们之前在chrome://device-log/中才看到日志里面是对于HID的访问报错。所以我们只需要修改一下之前的udev规则就可以每次都正常访问到鼠标。

修改/etc/udev/rules.d/99-usb.rules为如下:

KERNEL=="hidraw*", SUBSYSTEM=="hidraw",  ATTRS{idVendor}=="3554", ATTRS{idProduct}=="f58e", MODE="0666", GROUP="plugdev"

之后执行命令让规则生效即可

sudo udevadm control --reload-rules
sudo udevadm trigger

之后我们就可以每次重启都能正常访问到鼠标了。
屏幕截图_20240629_034741

posted @ 2024-06-29 03:40  写python的叮叮叮  阅读(62)  评论(0编辑  收藏  举报