Bagaimana saya tahu / dev / ttyS * mana port serial saya?

25

Saya memiliki laptop yang hanya memiliki satu port serial.

Saya pergi ke:

/dev 

direktori, dan saya menemukan:

ttyS0
ttyS1
ttyS2
ttyS3

Bagaimana saya tahu "ttyS" mana yang merujuk ke port serial saya?

sivabudh
sumber
terkait stackoverflow.com/questions/2530096/…
Ciro Santilli 新疆改造中心 六四事件 法轮功

Jawaban:

21

Saya pikir ini perintah ini:

dmesg | grep tty

Menjalankan itu pada kotak Linux saya sendiri (yang hanya memiliki 1 port Serial) menghasilkan jalur output ttyS0 tunggal. Cobalah sendiri, Anda akan melihat apa yang saya maksud.

sivabudh
sumber
Apakah itu berarti bahwa setelah menjalankan perintah itu, jika responsnya adalah ... konsol [tty0] diaktifkan ..., dan tidak ada yang lain, perangkat apa pun terhubung ke / dev / tty0 (maaf atas kekonyolan pertanyaan yang tampak jelas)?
Hektor
1
Satu-satunya masalah adalah bahwa output dmesg dapat dihapus - jadi jika Anda menjalankan ini terlambat, Anda kurang beruntung. Melihat / proc / tty / driver / serial tampaknya jawaban yang lebih kuat dan kemudian memeriksa rx interupsi semakin bertambah saat Anda menulis data ke port
Neil McGill
Maaf, apa yang harus saya lakukan jika saya tidak melihat output apa pun?
user3019105
jika Anda saat ini berada di terminal melalui garis serial tersebut, Anda bisa mengetik tty untuk mendapatkan nama tty Anda. Saya berasumsi itulah yang dimaksud OP karena mereka tidak mengajukan pertanyaan sebagai "yang memiliki port serial getty berlari? "
Thom Nichols
7

Lihat UART mana yang terdeteksi di /proc/tty/driver/serial. Sebuah garis dengan uart:unknown berarti: tidak ada yang terdeteksi (dan kemungkinan tidak ada).

# cat /proc/tty/driver/serial 
serinfo:1.0 driver revision:
0: uart:16550A port:000003F8 irq:4 tx:0 rx:0
1: uart:16550A port:000002F8 irq:3 tx:111780 rx:1321 RTS|DTR|DSR
2: uart:unknown port:000003E8 irq:4
3: uart:unknown port:000002E8 irq:3

Jika ada sesuatu yang terhubung dan menggerakkan garis CTS, DSR atau CD (ini adalah jalur input) Anda bahkan dapat cukup yakin bahwa sebenarnya ada sesuatu ... Hal yang sama berlaku untuk rx-byte-count.

Robert Siemer
sumber
6

Jika Anda perlu melakukan ini secara program, membaca output dari dmesg dapat merepotkan, sebaliknya folder / dev / serial / by-id memiliki tautan sym yang dinamai setelah data yang dapat diidentifikasi dari perangkat Anda dan menunjuk ke spesifik / dev / tty * terhubung ke.

Saya tidak yakin apakah ini adalah beberapa aturan udev khusus yang spesifik untuk distribusi, tetapi berfungsi dengan baik di Ubuntu, beri tahu saya jika itu berfungsi.

santileortiz
sumber
3

ttyS0 melalui 3 sesuai dengan COM1 melalui 4masing-masing. Mereka biasanya memiliki sumber daya perangkat keras yang sama dan tidak selalu dapat dideteksi, sehingga selalu ada.

Ignacio Vazquez-Abrams
sumber
Terima kasih atas jawabannya. Jadi katakan saya ingin memberi tahu Linux bahwa saya ingin ttyS0 memetakan ke perangkat keras port serial saya, apa yang harus saya lakukan?
sivabudh
Anda akan menggunakannya setserial untuk memetakan sumber daya yang ttyS0 gunakan untuk port serial Anda. linux.die.net/man/8/setserial Ini biasanya tidak diperlukan, karena apa pun di luar COM4 biasanya memiliki perangkat keras tambahan yang cukup untuk memungkinkan Linux mendeteksi dan menambahkan perangkat serial yang sesuai.
Ignacio Vazquez-Abrams
0

Ada juga perintahnya setserial yang menggunakan /proc/tty/driver/serial untuk mendapatkan data itu.

# setserial -g /dev/ttyS[0123]
/dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4
/dev/ttyS1, UART: 16550A, Port: 0x02f8, IRQ: 3
/dev/ttyS2, UART: unknown, Port: 0x03e8, IRQ: 4
/dev/ttyS3, UART: unknown, Port: 0x02e8, IRQ: 3
Daniël W. Crompton
sumber