Problema : Meu sistema operacional Ubuntu não suporta duas portas seriais quando os dispositivos seriais conectados às portas seriais estão ligados. como superar esse problema e impedir que minha porta falhe? Como posso resolver o problema?
Sinopse dos sintomas : Quando os dois conversores serial para USB estão conectados ao PC (sem nenhum dispositivo serial conectado a eles), tudo está bem; eles aparecem como ttyUSB0 e ttyUSB1. No entanto, assim que eu conecto dispositivos seriais a eles e ative os dispositivos seriais, uma das portas seriais falha (desaparece do diretório / dev). Este não é um problema de hardware ou fiação. Algo está acontecendo no sistema operacional que está adicionando cabelos grisalhos na minha cabeça .... Poderia, por favor, ajudar? Por favor, leia para mais detalhes.
Estou executando o Ubuntu 14.04.3 em um laptop Lenovo.
Estou em um ponto em que posso recriar o erro com o menor número de peças de hardware e software. Os passos abaixo recriam o problema:
- Eu inicio o PC.
- Quando o PC é ativado, executo
dmesg
e salvo a saída em um arquivo. Veja link
- Eu conecto um dispositivo USB 2.0 chamado "Labjack U3". Este é um fato que eu não acredito ser muito relevante para este assunto, mas deve ser notado.
-
Eu conecto o RS422 ao dispositivo USB sem nada conectado a ele. Eu corro lsusb
. É o dispositivo Bus 003 Device 003: ID 0856:ac11 B&B Electronics
. A saída é:
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 004: ID 04f2:b44d Chicony Electronics Co., Ltd
Bus 001 Device 003: ID 0a5c:21e6 Broadcom Corp. BCM20702 Bluetooth 4.0 [ThinkPad]
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 003: ID 0856:ac11 B&B Electronics
Bus 003 Device 002: ID 0cd5:0003 LabJack Corporation U3
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
-
Eu corri dmesg
novamente. A saída está aqui: link
-
Eu vou para /dev
e executo ls -l | grep USB
. A porta serial aparece:
constructor@constructor-pc:~$ cd /dev
constructor@constructor-pc:/dev$ ls -l | grep USB
crw-rw-rw- 1 root dialout 188, 0 Nov 21 16:36 ttyUSB0
-
Ligue o dispositivo conectado à porta RS422. Não há alteração na saída de /dev
ou ls -l | grep USB
e lsusb
-
Eu conecto o conversor RS232 ao USB. O dispositivo serial ainda não está conectado ao conversor. Eu corri lsusb
. É o dispositivo Bus 001 Device 018: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
. A saída é:
constructor@constructor-pc:/dev$ lsusb
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 004: ID 04f2:b44d Chicony Electronics Co., Ltd
Bus 001 Device 003: ID 0a5c:21e6 Broadcom Corp. BCM20702 Bluetooth 4.0 [ThinkPad]
Bus 001 Device 018: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 003: ID 0856:ac11 B&B Electronics
Bus 003 Device 002: ID 0cd5:0003 LabJack Corporation U3
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
- em seguida, executo o comando
ls -l | grep USB
no diretório /dev
. Aqui está a saída:
constructor@constructor-pc:/dev$ ls -l | grep USB
crw-rw-rw- 1 root dialout 188, 0 Nov 21 16:36 ttyUSB0
crw-rw---- 1 root dialout 188, 1 Nov 21 18:47 ttyUSB1
-
Até esse ponto, tudo está OK. Eu corro o comando dmesg
para capturar tudo para solução de problemas. Veja: link
-
Neste ponto, é onde o problema aparece. Eu conecto um dispositivo serial ao conversor RS232 para USB. Até agora tudo ainda está OK. Eu ligo a energia para o dispositivo serial (normalmente este é o ponto onde o software que controla o meu protótipo falha). Eu imediatamente executo o comando ls -l | grep USB
muitas vezes. Aqui está a saída:
constructor@constructor-pc:/dev$ ls -l | grep USB
crw-rw-rw- 1 root dialout 188, 0 Nov 21 16:36 ttyUSB0
constructor@constructor-pc:/dev$ ls -l | grep USB
crw-rw-rw- 1 root dialout 188, 0 Nov 21 16:36 ttyUSB0
constructor@constructor-pc:/dev$ ls -l | grep USB
crw-rw-rw- 1 root dialout 188, 0 Nov 21 16:36 ttyUSB0
constructor@constructor-pc:/dev$ ls -l | grep USB
crw-rw-rw- 1 root dialout 188, 0 Nov 21 16:36 ttyUSB0
constructor@constructor-pc:/dev$ ls -l | grep USB
crw-rw-rw- 1 root dialout 188, 0 Nov 21 16:36 ttyUSB0
constructor@constructor-pc:/dev$ ls -l | grep USB
crw-rw-rw- 1 root dialout 188, 0 Nov 21 16:36 ttyUSB0
constructor@constructor-pc:/dev$ ls -l | grep USB
crw-rw-rw- 1 root dialout 188, 0 Nov 21 16:36 ttyUSB0
constructor@constructor-pc:/dev$ ls -l | grep USB
crw-rw-rw- 1 root dialout 188, 0 Nov 21 16:36 ttyUSB0
constructor@constructor-pc:/dev$ ls -l | grep USB
crw-rw-rw- 1 root dialout 188, 0 Nov 21 16:36 ttyUSB0
Você pode ver que eu perdi uma das minhas portas seriais!
- Agora corro
dmesg
para uma pessoa mais experiente usar para o diagnóstico. Por favor, veja: link
Conclusões testadas a que cheguei nos últimos 5 dias:
- Os dispositivos seriais conectados ao RS232 e ao RS422 funcionam exatamente como o fabricante descreve nos manuais quando apenas um dos dispositivos é conectado de cada vez. Os dispositivos seriais não estão funcionando mal ou quebrados de alguma forma. Se apenas um dispositivo estiver conectado por vez, posso me comunicar com ele e controlá-lo, e ele se comportará corretamente.
- A fiação para todos os dispositivos é boa (dupla e tripla verificada usando desenhos e medidor)
- Eu removi o hub USB que estava usando e demorei para descobrir que não era culpa do hub.
- Excluí os vários pacotes de software que estou usando para ler os dados seriais (sinto que as etapas descritas nesta postagem provam isso).
- É interessante comentar que esse problema ocorre sem que eu mesmo envie ou receba comandos para os dispositivos seriais! Quando eu ligar o dispositivo conectado ao conversor RS232 para USB, o dispositivo serial ainda não está enviando mensagens (ou pelo menos eu não acredito que seja), mas a porta serial é imediatamente descartada pelo sistema operacional.
Informações Adicionais: Na última semana desde que fiz esta pergunta, obtive mais portas serial para USB, caso uma delas esteja com defeito, e o comportamento não tenha mudado. Eu também substituí o componente serial que faz com que a porta falhe quando ligada com uma unidade sobressalente, e o comportamento não mudou. Eu também tentei um PC diferente, e o comportamento não mudou.
Você pode fornecer uma resposta com uma correção para esse problema? Ou como solucionar esse problema?
Além disso, se eu puder fornecer qualquer informação ou executar algum comando, não hesite em me avisar!
Obrigado antecipadamente ...
Mike