Tengo una pregunta sobre los puertos en Linux. Si conecto mi dispositivo a través de USB y quiero verificar su puerto, no puedo hacerlo usando el comando lsusb, que solo especifica el número de bus y el número de dispositivo en este bus:
[ziga@Ziga-PC ~]$ lsusb
Bus 003 Device 007: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC
¿Hay algún comando que me indique el puerto al que está conectado el dispositivo directamente? La única forma de hacer esto hasta ahora era desconectar y volver a conectar y usar el 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
En la última línea se puede ver que mi dispositivo está conectado a / dev / ttyUSB0 .
usb
serial-port
dmesg
71GA
fuente
fuente
/dev
con una entradalsusb
? ¿O desea enumerar todos los dispositivos/dev
derivados de un dispositivo USB físico? ¿O solo quieresls /dev/ttyUSB*
?ls /dev/ttyUSB*
solo enumerará quizás 10 puertos, pero de esta lista no puedo decir cuál es para mi dispositivo.Respuestas:
No estoy muy seguro de lo que estás preguntando. Menciona 'puerto' varias veces, pero luego, en su ejemplo, dice que la respuesta es
/dev/ttyUSB0
, que es una ruta de desarrollo del dispositivo, no un puerto. Entonces, esta respuesta se trata de encontrar la ruta de desarrollo para cada dispositivo.A continuación se muestra un script rápido y sucio que recorre los dispositivos en
/sys
busca de dispositivos USB con unID_SERIAL
atributo. Por lo general, solo los dispositivos USB reales tendrán este atributo, por lo que podemos filtrar con él. Si no lo hacemos, verá muchas cosas en la lista que no son dispositivos físicos.En mi sistema, esto da como resultado lo siguiente:
Explicación:
Los dispositivos que aparecen
/dev
tienen undev
archivo en su/sys
directorio. Entonces buscamos directorios que coincidan con este criterio.Queremos la ruta del directorio, así que nos despojamos
/dev
.Esto nos da la ruta
/dev
que corresponde a este/sys
dispositivo.Esto filtra cosas que no son dispositivos reales. De lo contrario, obtendrá cosas como controladores USB y concentradores.
El
udevadm info -q property --export
comando enumera todas las propiedades del dispositivo en un formato que el shell puede analizar en variables. Entonces simplemente llamamoseval
a esto. Esta es también la razón por la que envolvemos el código entre paréntesis, de modo que usamos un subshell y las variables se borran en cada bucle.Más filtrado de cosas que no son dispositivos reales.
Espero que sepas lo que hace esta línea :-)
fuente
Puede usar este comando para explorar su dispositivo si está conectado a
usb0
:fuente
Podrías probar algo como esto a continuación.
fuente
dmesg | awk '/tty/ && /USB/ {print "/dev/"$1}'
(El código equivalente pero limpio ... pero aún extraño; ¿por qué no simplemente ttyUSB juntos? ¿Y para qué fue 2x rev?)rev
usa para acceder al último campo, esto se puede reemplazar por$NF
: givingdmesg | awk '/tty/ && /USB/ {print "/dev/"$NF}'
¿Quizás le gustaría saber cuál es la ruta al adaptador serie USB que se conectó por última vez?
fuente
Suponiendo que sabe cuál es el dispositivo que conectó, en Ubuntu 14.04, al menos, existe el comando
usb-devices
que puede consultar y encontrar la información:Y la primera línea enumera el bus y el puerto, así como el número de dispositivo que
lsusb
proporciona.fuente
/dev/*
camino