Pengenalan Dasar Minicom

Karena mesti berurusan dengan komunikasi serial pada modem Gobi 3000, akhirnya saya berkenalan dengan minicom. Menurut manualnya, minicom adalah sebuah program komunikasi serial yang ramah pengguna.
Disarankan agar Anda membaca artikel terdahulu yang mengupas cara mengirim USSD/UMD menggunakan minicom agar tidak terlalu bingung dengan apa yang akan dibahas pada untaian paragraf di bawah ini.

Sebagai pengguna komputer awam yang hanya berkutat pada web dan aplikasi desktop, rasanya baru kali ini saya berhubungan langsung dengan komunikasi serial. Jadi ya lumayan membingungkan. Dan artikel ini adalah catatan mengenai berbagai hal yang saya temui ketika menggunakan minicom untuk melakukan komunikasi serial, sebagai rujukan sekiranya nanti diperlukan.

Memasang minicom

Minicom pastinya telah ada pada pelbagai distro GNU/linux, tinggal cara memasangnya saja yang berbeda karena perbedaan penata paket. Untuk Debian dan distro berdasar Debian, berikut cara untuk memasang minicom.

sudo apt install minicom

Menggunakan minicom

Minicom melakukan komunikasi dengan modem melalui port serial di komputer. Jadi yang pertama harus dilakukan sebelum menggunakan minicom adalah mengetahui port mana yang bisa dipakai untuk berkomunikasi.
Pada banyak tutor di internet, kita bisa menggunakan perkakas setserial untuk mengetahui informasi mengenai port serial yang ada atau terhubung dengan komputer.

setserial -g /dev/ttyS[0123]

Namun ternyata dalam laptop saya, informasi yang diberikan setserial tidaklah sahih; tidak satu pun port yang menanggapi perintah AT yang diberikan. Bisa jadi port-port tersebut memang bukan untuk komunikasi AT, atau entah alasan lain.
Akhirnya port yang bisa digunakan untuk komunikasi AT dengan modem Gobi 3000 bisa didapat dengan bantuan perkakas mmcli.
Intinya sih, gunakan perkakas apa saja asal bisa mengenali perangkat keras kita. dmesg pun pastinya akan bisa digunakan.

Mengatur minicom

Jika hanya akan jarang menggunakan minicom, mungkin cara-cara pengaturan di bawah ini tidak terlalu diperlukan karena minicom juga menerima opsi melalui parameter/argumen ketika dijalankan.
Pada saat dijalankan, minicom akan mencari environment variable MINICOM untuk menjadikannya sebagai command line arguments. Jadi, alih-alih selalu mengetikkan minicom -c on ketika menjalankan minicom, kita bisa menyimpan argumen tersebut ke dalam berkas ~/.bash_profile seperti berikut:

export MINICOM="-c on"

Hingga lain kali kita tidak perlu mengetikkan minicom -c on untuk menampilkan jendela minicom yang berwarna, melainkan cukup mengetik minicom saja.

Jika kita menjalankan minicom sebagai pengguna biasa, maka ia akan menyimpan pengaturannya di berkas $HOME/.minirc.. Dan jika kita menjalankan minicom sebagai root, maka ia akan menyimpan pengaturannya pada berkas /etc/minicom/minicom.. Tanda bintang (asterisk) menunjukkan minicom bisa memiliki banyak berkas pengaturan. Default-nya minicom akan menggunakan berkas konfigurasi minirc.dfl.

Pengaturan minicom bisa diakses dari dalam minicom dengan menekan tombol CTRL+A kemudian O, atau bisa langsung dipanggil ketika menjalankan minicom:

minicom -s

Maka akan muncul dialog pengaturan seperti berikut:

  +-----[configuration]------+
| Filenames and paths |
| File transfer protocols |
| Serial port setup |
| Modem and dialing |
| Screen and keyboard |
| Save setup as dfl |
| Save setup as.. |
| Exit |
+--------------------------+

Pada terminal yang mendukung, minicom juga bisa menampilkan warna. Jalankan ia dengan menggunakan perintah berikut:

minicom -c on

Dan tampilan minicom pun akan sedikit berwarna.

Dialog konfigurasi minicom yang berwarna

Ada banyak pengaturan dalam minicom, jadi silakan Anda jelajahi satu per satu. Jangan lupa untuk merujuk manualnya jika ada yang masih samar dan sulit dipahami.

Minicom mendukung custom configuration, jadi kita bisa memiliki banyak pengaturan yang disesuaikan dengan banyak perangkat keras.
Misal, ketika selesai menata pengaturan minicom untuk terhubung dengan modem Gobi 3000, saya menyimpan pengaturan tersebut sebagai pengaturan tersendiri; minirc.gobi. Caranya adalah sebagai berikut:

  • Ketik CTRL+A diikuti O untuk memunculkan jendela pengaturan
  • Simpan pengaturan dengan memilih menu Save setup as..
  • Beri nama pengaturan pada jendela Give name to save this configuration?
      +-----[configuration]------+
      | Filenames and paths      |
      | File transfer protocols  |
      | Serial port setup        |
      | Modem and dialing        |
      | Screen and keyboard      |
      | Save setup as dfl        |
      | Save setup as..          |
      | Exit                     |
      +--------------------------+
    

Misal, saya memberi pengaturan tersebut nama gobi. Jika minicom dijalankan sebagai root, pengaturan ini akan disimpan sebagai berkas /etc/minicom/minirc.gobi, dan jika minicom dijalankan sebagai pengguna biasa maka pengaturan tersebut akan disimpan dalam berkas ~/.minirc.gobi.

Pengaturan tersebut dapat langsung dipanggil ketika kita menjalankan minicom, misalnya:

minicom gobi -D /dev/ttyUSB1

Navigasi dalam minicom

Saat pertama menggunakan minicom, saya lumayan kebingungan; mengapa perintah yang diketik tidak nampak? Bagaimana keluar dari minicom? Bagaimana menampilkan atau memilih menu? Bagaimana menyimpan pengaturan? Dan bagaimana-bagaimana lainnya...

Navigasi dasar dalam minicom dapat dilakukan dengan menggunakan tombol-tombol keyboard berikut:

  • Naikkan kursor menggunakan tombol ARROW-UP atau K
  • Turunkan kursor menggunakan tombol ARROW-DOWN atau J
  • Geser kursor ke kiri menggunakan tombol ARROW-LEFT atau H
  • Geser kursor ke kanan menggunakan tombol ARROW-RIGHT atau I
  • Memilih (menu) menggunakan tombol ENTER
  • Membatalkan pilihan menggunakan tombol ESC

Selain tombol navigasi dasar di atas, minicom menggunakan kombinasi tombol CTRL+A diikuti tombol pilihan. Misal, untuk menampilkan jendela bantuan kita harus menekan CTRL+A kemudian Z.

  +-------------------------------------------------------------------+
  |                      Minicom Command Summary                      |
  |                                                                   |
  |              Commands can be called by CTRL-A <key>               |
  |                                                                   |
  |               Main Functions                  Other Functions     |
  |                                                                   |
  | Dialing directory..D  run script (Go)....G | Clear Screen.......C |
  | Send files.........S  Receive files......R | cOnfigure Minicom..O |
  | comm Parameters....P  Add linefeed.......A | Suspend minicom....J |
  | Capture on/off.....L  Hangup.............H | eXit and reset.....X |
  | send break.........F  initialize Modem...M | Quit with no reset.Q |
  | Terminal settings..T  run Kermit.........K | Cursor key mode....I |
  | lineWrap on/off....W  local Echo on/off..E | Help screen........Z |
  | Paste file.........Y  Timestamp toggle...N | scroll Back........B |
  | Add Carriage Ret...U                                              |
  |                                                                   |
  |             Select function or press Enter for none.              |
  +-------------------------------------------------------------------+

Pada dialog bantuan di atas, tampak menu yang dapat diakses dengan menekan kunci tertentu sesuai yang tertera. Misal untuk mengkonfigurasi minicom dengan menekan CTRL+A diikuti O, atau menekan CTRL+A diikuti X agar ketikkan kita juga ditampilkan dalam jendela minicom, dan lainnya.

Scripting minicom

Minicom mendukung scripting. Dan walau hingga saat ini saya belum paham benar perihal scripting pada minicom, namun saya telah bisa membuat skrip sederhana untuk mengirim perintah AT yang sederhana. Ya lumayan lah, daripada harus menghapal perintah dan megetikkannya.
Skrip dapat dipanggil langsung ketika kita menjalankan minicom, atau dipanggil dari dalam sesi minicom. Saya lebih menyarankan cara yang kedua.

Berikut cara yang saya tempuh dalam membuat skrip sederhana untuk mengirim perintah USSD.

  • Buat sebuah folder khusus untuk menyimpan skrip minicom. Misalnya saya buat sebuah folder di /home/iza/Software/scripts/minicom.

  • Buat skrip. Di sini saya contohkan membuat dua skrip sederhana untuk menjalankan USSD:

    1. Skrip kuota untuk memeriksa kuota internet

      echo 'send AT+CUSD=1,"*234*111#",15' > /home/iza/Software/scripts/minicom/kuota
      
    2. Skrip pulsa untuk memeriksa pulsa

      echo 'send AT+CUSD=1,"*123#",15' > /home/iza/Software/scripts/minicom/pulsa
      

    Dari kedua contoh skrip tersebut, tampak bahwa saya hanya menambahkan string send pada tiap perintah AT.

  • Buka pengaturan minicom, bisa dengan mengetikkan CTRL+A kemudian O dalam minicom, atau dengan menjalankan minicom menggunakan perintah minicom -s.

  • Pada dialog konfigurasi, pilih menu Filenames and paths.
    Tekan tombol C kemudian masukkan letak map tempat kita menyimpan skrip, misalnya tadi dicontohkan di /home/iza/Software/scripts/minicom. Harus diingat, path harus absolut dan bisa diakses oleh user yang menjalankan minicom.

    +-----------------------------------------------------------------------+
    | A - Download directory :                                              |
    | B - Upload directory   :                                              |
    | C - Script directory   : /home/iza/Software/scripts/minicom           |
    | D - Script program     : runscript                                    |
    | E - Kermit program     :                                              |
    | F - Logging options                                                   |
    |                                                                       |
    |    Change which setting?                                              |
    +-----------------------------------------------------------------------+
    
  • Untuk menjalankan skrip dari dalam sesi minicom, tekan tombol CTRL+A diikuti G. Pada jendela Run a script, tekan tombol C dan ketikkan nama skrip, misal pulsa atau kuota, kemudian tekan ENTER.

    +-----------------------[Run a script]------------------------+
    |                                                             |
    | A -   Username        :                                     |
    | B -   Password        :                                     |
    | C -   Name of script  :                                     |
    |                                                             |
    |    Change which setting?     (Return to run, ESC to stop)   |
    +-------------------------------------------------------------+
    

Troubleshooting minicom

Selain tidak intuitif, sejauh yang saya coba minicom ini lumayan rentan crash/freeze. Jika entah karena sesuatu hal, ia mendadak membeku dan tidak mau menerima input. Satu-satunya cara yang saya tahu jika mengalami hal ini adalah dengan mematikan prosesnya. Menurut manualnya, jika minicom crashed, ia bisa dimatikan dengan mengirimkan isyarat SIGTERM padanya. Jadi, kita bisa mematikannya dengan menggunakan perintah killall -9 atau perkakas lain seperti htop.

Demikianlah sekilas pengenalan dasar hal-ihwal minicom. Bagi saya yang hampir tidak pernah bersentuhan dengan networking (hardware), minicom ini lumayan memusingkan. Namun karena sejauh ini tidak ada jalan lain untuk mengirim USSD/UMD melalui modem Gobi 3000, ya terpaksa menggunakannya.
Semoga artikel ini juga bisa sedikit meredakan pening bagi Anda yang juga kelimpungan karena mesti berhadapan dengan minicom.
Wassalam...