Eu tenho uma pergunta sobre as portas no Linux. Se eu conectar meu dispositivo via USB e quiser verificar sua porta, não posso fazê-lo usando o comando lsusb, que especifica apenas o número do barramento e o número do dispositivo neste barramento:
[ziga@Ziga-PC ~]$ lsusb
Bus 003 Device 007: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC
Existe um comando que me diz a porta à qual o dispositivo está conectado diretamente? A única maneira de fazer isso até agora era desconectar, reconectar e usar o comando:
[ziga@Ziga-PC ~]$ dmesg | grep tty
[ 0.000000] console [tty0] enabled
[ 0.929510] 00:09: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[ 4.378109] systemd[1]: Starting system-getty.slice.
[ 4.378543] systemd[1]: Created slice system-getty.slice.
[ 8.786474] usb 3-4.4: FTDI USB Serial Device converter now attached to ttyUSB0
Na última linha, pode-se ver que meu dispositivo está conectado a / dev / ttyUSB0 .
usb
serial-port
dmesg
71GA
fonte
fonte
/dev
a uma entradalsusb
? Ou você deseja listar todos os dispositivos/dev
derivados de um dispositivo USB físico? Ou você está apenas querendols /dev/ttyUSB*
?ls /dev/ttyUSB*
listarei apenas 10 portas, mas talvez desta lista eu não saiba qual é o meu dispositivo.Respostas:
Não tenho muita certeza do que você está perguntando. Você menciona 'porta' várias vezes, mas, em seu exemplo, diz que a resposta é
/dev/ttyUSB0
: que é um caminho de desenvolvimento do dispositivo, não uma porta. Portanto, esta resposta é sobre encontrar o caminho do desenvolvedor para cada dispositivo.Abaixo está um script rápido e sujo que percorre dispositivos na
/sys
procura de dispositivos USB com umID_SERIAL
atributo. Normalmente, apenas dispositivos USB reais terão esse atributo e, portanto, podemos filtrar com ele. Caso contrário, você verá muitas coisas na lista que não são dispositivos físicos.No meu sistema, isso resulta no seguinte:
Explicação:
Os dispositivos que aparecem
/dev
têm umdev
arquivo em seu/sys
diretório. Então, procuramos por diretórios que correspondam a esse critério.Queremos o caminho do diretório, então removemos
/dev
.Isso nos dá o caminho
/dev
que corresponde a este/sys
dispositivo.Isso filtra coisas que não são dispositivos reais. Caso contrário, você terá coisas como controladores e hubs USB.
O
udevadm info -q property --export
comando lista todas as propriedades do dispositivo em um formato que pode ser analisado pelo shell em variáveis. Então, simplesmente chamamoseval
isso. Essa também é a razão pela qual colocamos o código entre parênteses, para usar um subshell e as variáveis são apagadas em cada loop.Mais filtragem de coisas que não são dispositivos reais.
Espero que você saiba o que essa linha faz :-)
fonte
Você pode usar este comando para explorar seu dispositivo se estiver conectado a
usb0
:fonte
Você pode tentar algo como isto abaixo.
fonte
dmesg | awk '/tty/ && /USB/ {print "/dev/"$1}'
(O código equivalente mas limpo ... mas ainda estranho,? Porque não basta ttyUSB juntos eo que foi 2x rev para)rev
é usado para que o último campo seja acessado, e pode ser substituído por$NF
: givingdmesg | awk '/tty/ && /USB/ {print "/dev/"$NF}'
Talvez você gostaria de saber exatamente o caminho para o adaptador serial USB que se conectou por último?
fonte
Supondo que você saiba qual é o dispositivo conectado, no 14.04 Ubuntu, pelo menos, existe o comando
usb-devices
que você pode procurar e encontrar as informações:E a primeira linha lista ônibus e porta, bem como o número do dispositivo
lsusb
fornecido.fonte
/dev/*
caminho