Setup port serial virtual (Linux null modem emulator) menggunakan tty0tty

9

Saya ingin mengatur emulator port serial virtual di Linux. Saya ingin port menjadi permanen, sehingga saya bisa menggunakannya setiap kali saya restart. Saya mencoba menggunakan Socat untuk tujuan itu seperti dengan cara ini,

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

Tapi saya sering mendapatkan masalah port sibuk selama penggunaan VSP (Virtual Serial Ports) ini di program pengujian saya. Juga, saya merasa sulit untuk membuat VSP permanen / persisten. Saya sekarang ingin mencoba tty0tty untuk tujuan saya. Namun, jarang ada dokumentasi dan cara menggunakan panduan untuk itu. Adakah yang bisa memberi tahu saya tentang ini? Silakan lakukan komentar, jika ada solusi untuk socat juga.

Yuva
sumber

Jawaban:

13

Instalasi

  1. Unduh paket tty0tty dari salah satu sumber berikut:

  2. Ekstrak itu

    • tar xf tty0tty-1.2.tgz
  3. Bangun modul kernel dari sumber yang disediakan
    • cd tty0tty-1.2/module
    • make
  4. Salin modul kernel baru ke direktori modul kernel
    • sudo cp tty0tty.ko /lib/modules/$(uname -r)/kernel/drivers/misc/
  5. Muat modul
    • sudo depmod
    • sudo modprobe tty0tty
    • Anda akan melihat port serial baru di / dev / ( ls /dev/tnt*)
  6. Berikan izin yang sesuai ke port serial baru
    • sudo chmod 666 /dev/tnt*

Anda sekarang dapat mengakses port serial sebagai /dev/tnt0(1,2,3,4 dll). Perhatikan bahwa port berturut-turut saling berhubungan. Sebagai contoh, / dev / tnt0 dan / dev / tnt1 terhubung seolah-olah menggunakan kabel langsung.

Tetap bertahan di seluruh boot

edit file / etc / modules (Debian) atau /etc/modules.conf

nano /etc/modules

dan tambahkan baris berikut:

tty0tty

Peringatan

Perhatikan bahwa metode ini tidak akan membuat modul bertahan atas pembaruan kernel jadi jika Anda pernah memperbarui kernel Anda, pastikan Anda membangun tty0tty lagi ulangi prosesnya.

Jika Anda tidak memindahkan modul pada setiap pembaruan kernel systemctl --failedakan mengembalikan layanan yang systemd-modules-load.servicediakhiri " failed". Juga aktif journalctl -xe | grep "Failed to find".

Ruraj
sumber
1
Terima kasih sobat, itu bekerja dengan sangat baik. Tidak dapat menemukan ini di tempat lain.
Yuva
1
:) senang bisa membantu!
Ruraj
Apakah tty0ttyjuga mendukung mac OS?
Isi
Anda mungkin dapat membangun dan memuat modul kernel menggunakan kextutil, tetapi saya belum pernah mencobanya!
Ruraj
Penjelasan yang indah. Setiap poin bagus dan rapi. Selalu senang melihat respons seperti itu
master_clown