Saya punya pertanyaan tentang port di Linux. Jika saya menghubungkan perangkat saya melalui USB dan ingin memeriksa port-nya, saya tidak dapat melakukannya dengan menggunakan perintah lsusb, yang hanya menentukan nomor bus dan nomor perangkat di bus ini:
[ziga@Ziga-PC ~]$ lsusb
Bus 003 Device 007: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC
Apakah ada perintah yang memberi tahu saya port yang terhubung dengan perangkat secara langsung? Satu-satunya cara untuk melakukan ini sampai sekarang adalah dengan memutus dan menghubungkan kembali dan menggunakan perintah:
[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
Pada baris terakhir dapat dilihat bahwa perangkat saya terhubung ke / dev / ttyUSB0 .
usb
serial-port
dmesg
71GA
sumber
sumber
/dev
dengan entri dilsusb
? Atau Anda ingin membuat daftar semua perangkat/dev
yang berasal dari perangkat USB fisik? Atau Anda hanya inginls /dev/ttyUSB*
?ls /dev/ttyUSB*
hanya akan mencantumkan maybee 10 port tetapi dari daftar ini saya tidak bisa membedakan mana yang untuk perangkat saya.Jawaban:
Saya tidak yakin apa yang Anda tanyakan. Anda menyebutkan 'port' beberapa kali, tetapi kemudian dalam contoh Anda, Anda mengatakan jawabannya adalah
/dev/ttyUSB0
, yang merupakan jalur dev perangkat, bukan port. Jadi jawaban ini adalah tentang menemukan jalur dev untuk setiap perangkat.Di bawah ini adalah skrip cepat dan kotor yang berjalan di perangkat
/sys
mencari perangkat USB denganID_SERIAL
atribut. Biasanya hanya perangkat USB nyata yang akan memiliki atribut ini, sehingga kami dapat memfilternya. Jika tidak, Anda akan melihat banyak hal dalam daftar yang bukan perangkat fisik.Di sistem saya, ini menghasilkan sebagai berikut:
Penjelasan:
Perangkat yang muncul
/dev
memilikidev
file di/sys
direktori mereka . Jadi kami mencari direktori yang cocok dengan kriteria ini.Kami ingin jalur direktori, jadi kami menanggalkannya
/dev
.Ini memberi kita jalan
/dev
yang sesuai dengan/sys
perangkat ini .Ini menyaring hal-hal yang bukan perangkat yang sebenarnya. Kalau tidak, Anda akan mendapatkan hal-hal seperti pengontrol & hub USB.
The
udevadm info -q property --export
perintah daftar semua properti perangkat dalam format yang bisa diurai oleh shell ke dalam variabel. Jadi kami hanya memanggileval
ini. Ini juga merupakan alasan mengapa kita membungkus kode dalam tanda kurung, sehingga kita menggunakan subkulit, dan variabel bisa dihapus pada setiap loop.Lebih banyak pemfilteran hal-hal yang bukan perangkat yang sebenarnya.
Saya harap Anda tahu apa yang dilakukan baris ini :-)
sumber
Anda dapat menggunakan perintah ini untuk menjelajahi perangkat Anda jika terhubung ke
usb0
:sumber
Anda dapat mencoba sesuatu seperti ini di bawah ini.
sumber
dmesg | awk '/tty/ && /USB/ {print "/dev/"$1}'
(Setara tapi bersih ... tapi kode masih aneh; mengapa tidak hanya ttyUSB bersama? Dan untuk apa 2x?)rev
digunakan sehingga bidang terakhir diakses, ini dapat diganti dengan$NF
: pemberiandmesg | awk '/tty/ && /USB/ {print "/dev/"$NF}'
Mungkin Anda hanya ingin tahu jalur adaptor serial USB yang terhubung terakhir?
sumber
Dengan asumsi Anda tahu perangkat apa
usb-devices
yang Anda gunakan , di Ubuntu 14,04, setidaknya, ada perintah yang dapat Anda telusuri dan temukan informasinya:Dan baris pertama mencantumkan bus dan port, serta nomor perangkat yang
lsusb
memberi.sumber
/dev/*
jalan