我有一个 USB Zigbee 加密狗,但无法连接到它。它短暂地出现在 中/dev/ttyUSB0
,但很快就消失了。我在控制台中看到以下输出:
$ dmesg --follow
...
[ 738.365561] usb 1-10: new full-speed USB device number 8 using xhci_hcd
[ 738.607730] usb 1-10: New USB device found, idVendor=1a86, idProduct=7523, bcdDevice= 2.64
[ 738.607737] usb 1-10: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[ 738.607739] usb 1-10: Product: USB Serial
[ 738.619446] ch341 1-10:1.0: ch341-uart converter detected
[ 738.633501] usb 1-10: ch341-uart converter now attached to ttyUSB0
[ 738.732348] audit: type=1130 audit(1632606446.974:2212): pid=1 uid=0 auid=4294967295 ses=4294967295 msg='unit=brltty-device@sys-devices-pci0000:00-0000:00:01.3-0000:03:00.0-usb1-1\x2d10 comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
[ 738.768081] audit: type=1130 audit(1632606447.007:2213): pid=1 uid=0 auid=4294967295 ses=4294967295 msg='unit=brltty@-sys-devices-pci0000:00-0000:00:01.3-0000:03:00.0-usb1-1\x2d10 comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
[ 738.776433] usb 1-10: usbfs: interface 0 claimed by ch341 while 'brltty' sets config #1
[ 738.783508] ch341-uart ttyUSB0: ch341-uart converter now disconnected from ttyUSB0
[ 738.783521] ch341 1-10:1.0: device disconnected
[ 739.955783] input: BRLTTY 6.4 Linux Screen Driver Keyboard as /devices/virtual/input/input35
...
这里的问题是 BRLTTY,这是一个“为使用可刷新盲文显示器的盲人提供对 Linux/Unix 控制台(在文本模式下)的访问”的程序。
如果您不是盲人,您可以通过两种不同的方式禁用 BRLTTY:
删除 udev 规则
BRLTTY 使用 udev 规则来获取权限以在不成为 root 的情况下与 TTY 混淆。您可以通过覆盖发行版附带的规则来禁用这些规则
/dev/null
:禁用服务
BRLTTY 服务由
brltty.path
服务启动。通过执行以下操作,可以完全防止此服务启动:那里的射击有点太多了。用户Blackisle为ArchLinux BBS 上的这篇文章(“Arduino not working adter update”)贡献了一个侵入性小得多的解决方案。
brltty
brltty
有一个规则idVendor=1a86, idProduct=7523
,这与我的 Mega 克隆上的 CH340 串行转换器相同。lsusb
您可以通过使用获取您的设备列表来查看您的设备 ID (拔下您的 Arduino,运行lsusb
然后插入您的 Arduino 并lsusb
再次运行以查看出现的设备)。就我而言:
记下 ID,然后打开 brltty 规则文件:
搜索文件,直到找到您的 ID 条目:
现在注释掉这一行:
保存并关闭文件,然后重新启动。
重新启动后,
/dev/ttyUSB0
端口在 Arduino IDE 中再次可用。这只是为了突出@EvgEnZh 的出色评论并添加一些内容。在 Manjaro 上需要禁用的服务不止一项。对我来说,它是以下内容:
列出服务:
然后禁用它们:
我不确定是否所有这些都需要被屏蔽,但只是屏蔽和停止 brltty.path 对我不起作用。
注释掉 brltty 中的违规行也对我有用
我有很多 usbuarts,发现它们都消失了,但仍然在以前的 Ubuntu 和 Windows 下工作,真是令人沮丧!
来自 lsmod
为了安全起见,我将 10c4:ea60 和 10c4:ea80 都注释掉了
但老实说,我很生气。支持我们的盲人(或聋人,或坐轮椅)的朋友是令人钦佩的。
他们怎么会犯这样的错误。从 3 个不同的制造商处取下 usbuarts。CP210x 显然是一种流行的芯片。
我很想删除 85-brltty.rules
这与那些决定为盲文添加内置支持的人的意图完全相反。