Skonfiguruj wirtualne porty szeregowe (emulator modemu zerowego Linux) za pomocą tty0tty

9

Chcę skonfigurować wirtualny emulator portu szeregowego w systemie Linux. Chcę, aby porty były stałe, aby móc z nich korzystać przy każdym ponownym uruchomieniu. Próbowałem użyć do tego celu socat , ponieważ w ten sposób,

socat -d -d pty,raw,echo=0 pty,raw,echo=0

Ale często mam problemy z portami podczas korzystania z tych VSP (wirtualnych portów szeregowych) w moich programach testowych. Trudno mi też stworzyć stałe / trwałe VSP. Chcę teraz wypróbować tty0tty dla moich celów. Jednak rzadko jest dostępna dokumentacja i sposób użycia przewodnika. Czy ktoś może mnie oświecić? Proszę o komentarz, jeśli istnieje również rozwiązanie dla socat.

Yuva
źródło

Odpowiedzi:

13

Instalacja

  1. Pobierz pakiet tty0tty z jednego z tych źródeł:

  2. Wyodrębnij to

    • tar xf tty0tty-1.2.tgz
  3. Zbuduj moduł jądra z dostarczonego źródła
    • cd tty0tty-1.2/module
    • make
  4. Skopiuj nowy moduł jądra do katalogu modułów jądra
    • sudo cp tty0tty.ko /lib/modules/$(uname -r)/kernel/drivers/misc/
  5. Załaduj moduł
    • sudo depmod
    • sudo modprobe tty0tty
    • Powinieneś zobaczyć nowe porty szeregowe w / dev / ( ls /dev/tnt*)
  6. Nadaj odpowiednie uprawnienia nowym portom szeregowym
    • sudo chmod 666 /dev/tnt*

Możesz teraz uzyskać dostęp do portów szeregowych jako /dev/tnt0(1,2,3,4 itd.). Pamiętaj, że kolejne porty są ze sobą połączone. Na przykład, / dev / tnt0 i / dev / tnt1 są połączone tak, jakby korzystały z kabla bezpośredniego.

Utrzymywanie się podczas rozruchu

edytuj plik / etc / modules (Debian) lub /etc/modules.conf

nano /etc/modules

i dodaj następujący wiersz:

tty0tty

Ostrzeżenie

Zauważ, że ta metoda nie spowoduje, że moduł będzie trwał przy aktualizacjach jądra, więc jeśli kiedykolwiek zaktualizujesz jądro, upewnij się, że ponownie zbudujesz tty0tty, powtórz proces.

Jeśli nie przeniesiesz modułu przy każdej aktualizacji jądra systemctl --failed, usługa zwróci systemd-modules-load.servicefailed”. Też na journalctl -xe | grep "Failed to find".

Ruraj
źródło
1
Dzięki kolego, to działało całkiem dobrze. Nigdzie indziej nie mogłem tego znaleźć.
yuva
1
:) Cieszę się, że mogłem pomóc!
Ruraj
Będzie tty0ttyrównież wspierać Mac OS?
Foad
Być może będziesz w stanie go zbudować i załadować moduł jądra kextutil, ale nigdy go nie próbowałem!
Ruraj,
Wspaniałe wyjaśnienie. Każdy punkt jest miły i schludny. Zawsze cieszę się z takich odpowiedzi
master_clown