Tenho um dongle USB Zigbee, mas não consigo me conectar a ele. Ele aparece brevemente em /dev/ttyUSB0
, mas depois desaparece rapidamente. Eu vejo a seguinte saída no console:
$ 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
...
O problema aqui é o BRLTTY, um programa que "fornece acesso ao console Linux/Unix (quando em modo texto) para uma pessoa cega usando um display braille atualizável".
Se você não é cego, pode desabilitar o BRLTTY de duas maneiras diferentes:
Remover regras do udev
BRLTTY usa regras do udev para obter permissões para mexer com os TTYs sem ser root. Você pode desabilitar essas regras substituindo as regras enviadas pela sua distribuição por
/dev/null
:Desativar serviço
O serviço BRLTTY é lançado pelo
brltty.path
serviço. Este serviço pode ser completamente impedido de ser iniciado executando-se o seguinte:Atirando um pouco demais lá. Uma solução muito menos invasiva foi contribuída pelo usuário Blackisle para este post ( "Arduino não está funcionando após a
brltty
atualização" ) no ArchLinux BBS.brltty
tem uma regra paraidVendor=1a86, idProduct=7523
, que é a mesma do conversor serial CH340 no meu Mega clone.Você pode ver o ID do seu dispositivo usando
lsusb
para obter uma lista de seus dispositivos (desconecte seu Arduino, executelsusb
e conecte seu Arduino e executelsusb
novamente para ver qual dispositivo aparece).No meu caso:
Anote o ID e abra o arquivo de regras brltty:
Pesquise no arquivo até encontrar a entrada para o seu ID:
Agora comente a linha:
Salve e feche o arquivo e reinicie.
Após a reinicialização, a
/dev/ttyUSB0
porta estava disponível novamente no IDE do Arduino.Isso é apenas para destacar o excelente comentário de @EvgEnZh e acrescentar algo. Há mais de um serviço que precisa ser desabilitado no Manjaro. Para mim foi o seguinte:
Liste os serviços com:
E, em seguida, desative-os com:
Não tenho certeza se todos eles precisam ser mascarados, mas apenas mascarar e parar o brltty.path não funcionou para mim.
Comentar as linhas ofensivas em brltty funcionou para mim também
Eu tenho alguns usbuarts e foi muito frustrante encontrá-los todos desaparecidos, mas ainda funcionando no Ubuntu e no Windows anteriores!
de lsmod
Por segurança, comentei 10c4:ea60 e 10c4:ea80
Mas honestamente estou louco. Apoiar nossos amigos cegos (ou surdos, ou cadeirantes) é admirável.
Como podem cometer um erro desses. Derrubar usbuarts de 3 fabricantes diferentes. O CP210x é obviamente um chip popular.
Fiquei tentado a apenas excluir 85-brltty.rules
O que é exatamente o oposto do que aqueles que decidiram adicionar suporte embutido para braille pretendiam.