我有 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
...
Run Code Online (Sandbox Code Playgroud)
use*_*561 37
这里的问题是 BRLTTY,一个“使用可刷新盲文显示器为盲人提供对 Linux/Unix 控制台(在文本模式下)的访问”的程序。
\n如果您没瞎,您可以通过两种不同的方式禁用 BRLTTY:
\nBRLTTY 使用 udev 规则来获取在不成为 root 的情况下干扰 TTY 的权限。您可以通过使用以下命令覆盖发行版附带的规则来禁用这些规则/dev/null
:
for f in /usr/lib/udev/rules.d/*brltty*.rules; do\n sudo ln -s /dev/null "/etc/udev/rules.d/$(basename "$f")"\ndone\nsudo udevadm control --reload-rules\n
Run Code Online (Sandbox Code Playgroud)\nBRLTTY服务是由该brltty.path
服务启动的。通过执行以下操作,可以完全阻止该服务运行:
$ sudo systemctl mask brltty.path\nCreated symlink /etc/systemd/system/brltty.path \xe2\x86\x92 /dev/null.\n
Run Code Online (Sandbox Code Playgroud)\n
小智 21
那里射击有点太多了。用户Blackisle在 ArchLinux BBS 上的这篇文章(“Arduino notworking adter update”)中贡献了一个侵入性小得多的解决方案。brltty
brltty
有 的规则idVendor=1a86, idProduct=7523
,与我的 Mega 克隆上的 CH340 串行转换器相同。
您可以通过使用lsusb
获取设备列表来查看您的设备 ID(拔下 Arduino,运行,lsusb
然后插入 Arduino,然后lsusb
再次运行以查看出现的设备)。
就我而言:
Bus 003 Device 005: ID 1a86:7523 QinHeng Electronics CH340 serial converter
Run Code Online (Sandbox Code Playgroud)
记下 ID,然后打开 brltty 规则文件:
sudo nano /usr/lib/udev/rules.d/90-brltty-device.rules
Run Code Online (Sandbox Code Playgroud)
搜索文件,直到找到您的 ID 条目:
# Device: 1A86:7523
# Baum [NLS eReader Zoomax (20 cells)]
ENV{PRODUCT}=="1a86/7523/*", ENV{BRLTTY_BRAILLE_DRIVER}="bm", GOTO="brltty_usb_run"
Run Code Online (Sandbox Code Playgroud)
现在注释掉这一行:
# Device: 1A86:7523
# Baum [NLS eReader Zoomax (20 cells)]
# ENV{PRODUCT}=="1a86/7523/*", ENV{BRLTTY_BRAILLE_DRIVER}="bm", GOTO="brltty_usb_run"
Run Code Online (Sandbox Code Playgroud)
保存并关闭文件,然后重新启动。
重新启动后,该/dev/ttyUSB0
端口在 Arduino IDE 中再次可用。
小智 8
这只是为了突出@EvgEnZh 的精彩评论并添加一些内容。Manjaro 上需要禁用的服务不止一项。对我来说是这样的:
列出服务:
$ systemctl list-units | grep brltty
brltty.path loaded active running Default BRLTTY Instance
brltty@-etc-brltty.conf.service loaded active running BRLTTY Instance: /etc/brltty.conf
system-brltty.slice loaded active active Slice /system/brltty
system-brltty\x2ddevice.slice loaded active active Slice /system/brltty-device
Run Code Online (Sandbox Code Playgroud)
然后禁用它们:
$ sudo systemctl mask brltty.path
$ sudo systemctl stop brltty.path
$ sudo systemctl mask system-brltty\x2ddevice.slice
$ sudo systemctl stop system-brltty\x2ddevice.slice
$ sudo systemctl mask system-brltty.slice
$ sudo systemctl stop system-brltty.slice
$ sudo systemctl mask brltty@-etc-brltty.conf.service
$ sudo systemctl stop brltty@-etc-brltty.conf.service
Run Code Online (Sandbox Code Playgroud)
我不确定是否所有这些都需要被屏蔽,但仅仅屏蔽和停止 brltty.path 对我来说不起作用。
归档时间: |
|
查看次数: |
32663 次 |
最近记录: |