Skąd mam wiedzieć, który / dev / ttyS * jest moim portem szeregowym?

33

Mam laptopa, który ma tylko jeden port szeregowy.

Wszedłem:

/dev 

katalogu i znalazłem:

ttyS0
ttyS1
ttyS2
ttyS3

Skąd mam wiedzieć, który z tych „ttyS” odnosi się do mojego portu szeregowego?

sivabudh
źródło
powiązane stackoverflow.com/questions/2530096/...
Ciro Santilli 29 改造 中心 法轮功 六四 事件

Odpowiedzi:

32

Myślę, że to jest to polecenie:

dmesg | grep tty

Uruchomienie tego na moim własnym Linux-ie (który ma tylko 1 port szeregowy) tworzy pojedynczą linię wyjściową ttyS0. Wypróbuj sam, zobaczysz, co mam na myśli.

sivabudh
źródło
Czy to oznacza, że ​​po uruchomieniu tego polecenia, jeśli odpowiedź jest ... konsola [tty0] włączona ... i żadne inne, żadne urządzenie nie jest podłączone do / dev / tty0 (przepraszam za pozorną głupotę pytania)?
Hektor
1
Jedynym problemem jest to, że dane wyjściowe dmesg można wyczyścić - więc jeśli uruchomisz to zbyt późno, nie będziesz miał szczęścia. Spojrzenie na / proc / tty / driver / serial wydaje się bardziej solidną odpowiedzią, a następnie sprawdzanie, czy liczba przerwań rx rośnie w miarę zapisywania danych do tego portu
Neil McGill
Przepraszam, co mam zrobić, jeśli nie widzę żadnych wyników?
user3019105
jeśli obecnie znajdujesz się w terminalu za pośrednictwem wspomnianej linii szeregowej, możesz po prostu wpisać ttynazwę swojego tty. Zakładam, że właśnie to miał na myśli OP, ponieważ nie zadawali pytania „jakie porty szeregowe gettydziałają?”.
Thom Nichols,
14

Sprawdź, które UART zostały wykryte /proc/tty/driver/serial. Linia uart:unknownoznacza: nic nie wykryto (i prawdopodobnie nie istnieje).

# 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

Jeśli coś jest podłączone i napędza linie CTS, DSR lub CD (są to linie wejściowe), możesz być nawet całkiem pewien, że rzeczywiście coś jest ... To samo dotyczy liczby bajtów rx.

Robert Siemer
źródło
7

Jeśli musisz to zrobić programowo, odczyt danych wyjściowych z dmesg może być kłopotliwy, zamiast tego folder / dev / serial / by-id ma łącza sym, które są nazwane na podstawie możliwych do zidentyfikowania danych twojego urządzenia i wskazują na konkretne / dev / tty * są połączone z.

Nie jestem pewien, czy jest to jakaś specjalna reguła udev, która jest specyficzna dla dystrybucji, ale działa dobrze w Ubuntu, daj mi znać, czy to działa.

Santileortiz
źródło
5

ttyS0przez 3odpowiadają COM1za pośrednictwem 4, odpowiednio. Zwykle mają te same zasoby sprzętowe i nie zawsze są wykrywalne, więc zawsze istnieją.

Ignacio Vazquez-Abrams
źródło
Dziękuję za odpowiedź. Powiedzmy więc, że chcę powiedzieć Linuksowi, że chcę, aby ttyS0 zmapował na moim sprzęcie portu szeregowego, co muszę zrobić?
sivabudh
Należałoby użyć setserialdo mapowania zasobów ttyS0 wykorzystuje do tego z portu szeregowego. linux.die.net/man/8/setserial Zwykle nie jest to wymagane, ponieważ wszystko poza COM4 zwykle ma wystarczającą ilość sprzętu pomocniczego, aby Linux mógł go wykryć i odpowiednio dodać urządzenie szeregowe.
Ignacio Vazquez-Abrams
0

Istnieje również polecenie, setserialktóre wykorzystuje je /proc/tty/driver/serialdo uzyskania danych.

# 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
źródło