Mencoba untuk mendokumentasikan dan berbagi pengalaman saat ngeset modem serial di Linux. Sebenarnya ngga susah sih, banyak resourcenya, cuman karena emang dilakukan secara manual pake konsol dan ssh, jadi terlihat sangat rumit, tetapi sebenarnya ngga susah kok. Begini critanya:

Pertama, cek apakah /dev/ttyS1 … /dev/ttyS4 nya ada yang idle.

# setserial /dev/ttyS0 -a

Kalau device terpakai — oleh mouse misalnya, biasanya akan memunculkan result sbb:

/dev/ttyS0 : Device or resource busy

Tapi kalau ngga busy alias available, maka akan kaya gini:

/dev/ttyS0, Line 0, UART: 16550A, Port: 0x3f8, irq: 4
Baud_base: 115200, clos_delay: 50, divisor: 0
closing_wait: 3000, closing_wait2: infinite
Flags: spd_normal skip_test

Nah, sekarang, cari tau info device PCI anda pakai command lspci -vv biar mantab:

# lspci -vv
00:00.0 Host bridge: Intel Corporation 82865G/PE/P DRAM Controller/Host-Hub Interface (rev 02)
	Subsystem: ASUSTeK Computer Inc. P5P800-MX Mainboard
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
	Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort+ >SERR- <PERR-
	Latency: 0
	Region 0: Memory at fe800000 (32-bit, prefetchable) [size=4M]
	Capabilities: [e4] Vendor Specific Information

...

01:0b.0 Serial controller: NetMos Technology Unknown device 9820 (rev 01) (prog-if 02 [16550])
	Subsystem: LSI Logic / Symbios Logic Unknown device 0001
	Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B-
	Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
	Interrupt: pin A routed to IRQ 16
	Region 0: I/O ports at dff0 [size=8]
	Region 1: I/O ports at dfe0 [size=8]
	Region 2: I/O ports at dfa8 [size=8]
	Region 3: I/O ports at dfa0 [size=8]
	Region 4: I/O ports at df98 [size=8]
	Region 5: I/O ports at df80 [size=16]

Tuh dapet info port address dan IRQ dari PCI modemnya. Tinggal ngeset serial port. Saya kebetulan pakai ttyS2 dan ttyS3. Begini caranya:

# setserial /dev/ttyS2 port 0xdff0 UART 16550A irq 16 Baud_base 115200
# setserial /dev/ttyS3 port 0xdfa8 UART 16550A irq 16 Baud_base 115200

Cukup perhatikan port yang saya ambil adalah port yg saya dapet dari lspci di:

  • Region 0 (dff0) untuk ttyS2
  • Region 2 (dfa8) untuk ttyS3

Sedang IRQ nya cukup pakai punya lspci juga, yaitu 16. Untuk mengetes, bisa gunakan minicom. Sekian saya akhiri tulisan singkat ini, have fun with your linux ;)

Eksternal resource saya dapatkan dari: