Estou usando um modem USB Huawei GMS / UMTS com Gnokii e Gammu. O modem estava na porta inferior do Pi. Com dmesg | grep tty
isso apareceria /dev/ttyUSB0
e /dev/ttyUSB1
. (2 dispositivos USB em um stick são normais, neste caso).
Eu configurei o Gnokii e o Gammu adequadamente, no entanto, no ttyUSB0, eu só podia enviar mensagens. Tanto o envio quanto o recebimento funcionariam apenas em ttyUSB1.
Em seguida, mudei o stick para o soquete USB superior (porque, caso contrário, meu WiFi-stick não caberia ao lado). Tudo continuou funcionando bem. Também após várias reinicializações, frio e quente.
Eu então precisei expandir o sistema de arquivos (Sim, eu sei que deveria ter feito isso antes). Depois disso, o modem estava em ttyUSB0 e ttyUSB * 2 *. Enviar / receber trabalhado no último. Levei algum tempo para descobrir.
Atualização: 2 dias depois, o ttyUSB2 desapareceu. O modem em funcionamento agora se manifesta no ttyUSB0 (era ttyUSB1).
Alguma idéia de por que isso aconteceu? Algum link para os documentos debian ou linux relevantes, talvez? Eu ficaria muito grato ..
fonte
/sys/class/tty/
como guia.Respostas:
A documentação Gammu sugere (mas não entra em detalhes de) uma solução alternativa,
Editar: o Atmel possui uma nota de aplicação que descreve bem o processo de enumeração.
A enumeração é alterada porque ocorre em uma conversa entre host, hub e dispositivo e o tempo de resposta de cada uma delas pode variar, mesmo se a configuração for idêntica de uma reinicialização para a seguinte.
Atualização: a solução não é facilmente encontrada on-line e está espalhada em pedaços por todo o lugar. Então, reuni tudo em um documento . É para isso que tudo se resume.
1. descubra o que está no ttyUSB:
2. liste todos os atributos do dispositivo e escolha um conjunto de identificadores exclusivo, por exemplo, idVendor + idProduct (e, se necessário, SerialNumber, se você tiver mais de um dispositivo com o mesmo idVendor e idProduct).
3. Crie um arquivo
/etc/udev/rules.d/99-usb-serial.rules
com algo como esta linha:(supondo que você não precise de um número de série e, obviamente, com os números de idVendor e idProduct que você encontrou na etapa 2.
4. Carregue a nova regra:
5. Verifique o que aconteceu:
mostrará para qual número ttyUSB o link simbólico foi. Se for
/dev/ttyUSB1
, verifique quem é o proprietário e a qual grupo pertence:Então, apenas por diversão:
fonte
Você respondeu parcialmente à sua própria pergunta, mas há outra maneira de fazer isso, especialmente para dispositivos seriais: os
/dev/serial/*
caminhos. Eu tenho uma interface USB → RS232 Prolific no meu Raspberry Pi, que quase sempre aparece como/dev/ttyUSB0
. Mas também aparece no sistema como:/dev/serial/by-path/platform-bcm2708_usb-usb-0:1.3:1.0-port0
/dev/serial/by-id/usb-067b_2303-if00-port0
O uso do
by-id
link deve permanecer o mesmo, a menos que eu adicione outro conversor baseado em PL2303.fonte