Koneksi GPRS Linux

Kamas Muhammad <kamas@lc.vlsm.org>


Tidak ada copyright apapun dalam dukumen ini, anda bebas menyalin, mencetak, maupun memodifikasi (dengan menyertakan nama penulis asli). Saran, koreksi, kritik, kesalahan ketik, maupun ucapan silakan dikirimkan ke email tersebut diatas. Terima Kasih.

Saya menggunakan GPRS IM3 dengan menggunakan ponsel Siemens S57. Selain ponsel tersebut percobaan pada Siemens M55 juga berjalan dengan lancar. Media koneksi dari PC ke ponsel menggunakan kabel serial dengan device /dev/ttyS0 (COM1).

Selain kabel serial, S57 juga menyediakan interface IrDA yang juga dapat digunakan. Saya mencobanya dengan menggunakan Mobile Action Technology, Inc. MA-620 USB Infrared Adapter Dongle (Lihat catatan di bawah). Percobaan pada Nokia 6610 & 6600 juga berjalan dengan lancar.

File yang digunakan untuk koneksi bisa dilihat pada direktori Serial & IrDA. Sistem Operasi yang digunakan adalah Debian GNU/Linux 3.1(Sarge).

Konfigurasi Umum

  1. Buat file gprs, gprs-connect-chat, dan gprs-disconnect-chat pada direktori /etc/ppp/peers. Panduan penyusunan file gprs bisa dibaca di `man pppd`
  2. Pastikan file gprs-connect-chat, dan gprs-disconnect-chat bisa dieksekusi oleh semua user.
    root:~# chmod 755 gprs-connect-chat gprs-disconnect-chat
  3. Pada file /etc/ppp/pap-secrets masukkan baris di bawah ini:
    "gprs" * "im3" *
  4. Jangan lupa periksa pilihan "user" pada file gprs, masukkan username yang tercantum pada pap-secrets dengan memberi tanda kutip.
    Contoh:
    user "gprs"
  5. Masukkan nama APN(Access Point Name) pada AT command yang berada pada file gprs-connect-chat. Contoh:
    OK'AT+CGDCONT=1,"IP","www.indosat-m3.net","",0,0'\
  6. Untuk memulai koneksi ketik 'pppd call gprs'
  7. Untuk mengakhiri tekan CTRL-C

File Yang Digunakan

Berikut adalah isi file gprs, gprs-connect-chat, dan gprs-disconnect-chat(berada dalam direktori /etc/ppp/peers).

gprs

lcp-echo-failure 0
lcp-echo-interval 0
nodetach
debug
show-password
connect /etc/ppp/peers/gprs-connect-chat
disconnect /etc/ppp/peers/gprs-disconnect-chat
/dev/ttyS0
57600
crtscts 
local
:10.0.0.1
noipdefault
ipcp-accept-local
defaultroute
usepeerdns
novj
nobsdcomp
novjccomp
nopcomp
noaccomp
noauth
user "gprs"

gprs-connect-chat

#!/bin/sh
exec chat \
TIMEOUT	5 \
ECHO 		ON \
ABORT		'\nBUSY\r' \
ABORT		'\nERROR\r' \
ABORT		'\nNO ANSWER\r' \
ABORT		'\nNO CARRIER\r' \
ABORT		'\nNO DIALTONE\r' \
ABORT		'\nRINGING\r\n\r\nRINGING\r' \
''		\rAT \
TIMEOUT	12 \
SAY		"Tekan CTRL-C untuk mengakhiri koneksi!" \
SAY		"\nMengirim perintah koneksi...\n" \
OK		ATH \
OK		ATE1 \
OK		'AT+CGDCONT=1,"IP","www.indosat-m3.net","",0,0' \
OK		ATD*99***1# \
TIMEOUT	22 \
SAY		"\ntunggu koneksi...\n" \
CONNECT	"" \
SAY		"\nTersambung." \

gprs-disconnect-chat

#!/bin/sh
exec /usr/sbin/chat -V -s -S \
ABORT		"BUSY" \
ABORT		"ERROR" \
ABORT		"NO DIALTONE" \
SAY		"\nKirim perintah pemutusan koneksi\n" \
""		"\K" \
""		"\K" \
""		"\K" \
""		"+++ATH" \
""		"+++ATH" \
""		"+++ATH" \
SAY		"\nKoneksi berakhir.\n"

Dial GRPS

[root@aphrodite 17:25 peers]# pppd call gprs
Tekan CTRL-C untuk mengakhiri koneksi!
Mengirim perintah koneksi...
AT
OK
ATH
OK
ATE1
OK
AT+CGDCONT=1,"IP","www.indosat-m3.net","",0,0
OK
tunggu koneksi...

ATD*99***1#
CONNECT
Tersambung.
Serial connection established.
using channel 3
Using interface ppp0
Connect: ppp0 <--> /dev/ttyS0
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0xbc5453ec>]
rcvd [LCP ConfNak id=0x1 <asyncmap 0xa0000>]
sent [LCP ConfReq id=0x2 <asyncmap 0xa0000> <magic 0xbc5453ec>]
rcvd [LCP ConfAck id=0x2 <asyncmap 0xa0000> <magic 0xbc5453ec>]
rcvd [LCP ConfReq id=0x3 <asyncmap 0xa0000> <pcomp> <accomp> <magic 0xbb1cd2b2> <auth chap MD5>]
sent [LCP ConfRej id=0x3 <pcomp> <accomp>]
rcvd [LCP ConfReq id=0x5 <asyncmap 0xa0000> <magic 0xbb1cd2b2> <auth chap MD5>]
sent [LCP ConfNak id=0x5 <auth pap>]
rcvd [LCP ConfReq id=0x7 <asyncmap 0xa0000> <magic 0xbb1cd2b2> <auth pap>]
sent [LCP ConfAck id=0x7 <asyncmap 0xa0000> <magic 0xbb1cd2b2> <auth pap>]
sent [PAP AuthReq id=0x1 user="gprs" password="im3"]
rcvd [PAP AuthAck id=0x1 ""]
PAP authentication succeeded
sent [CCP ConfReq id=0x1 <deflate 15> <deflate(old#) 15>]
sent [IPCP ConfReq id=0x1 <addr 0.0.0.0> <ms-dns1 0.0.0.0> <ms-dns3 0.0.0.0>]
rcvd [LCP ProtRej id=0x8 80 fd 01 01 00 0c 1a 04 78 00]
rcvd [IPCP ConfReq id=0x1 <addr 202.152.169.42>]
sent [IPCP ConfNak id=0x1 <addr 10.0.0.1>]
rcvd [IPCP ConfReq id=0x3 <addr 10.0.0.1>]
sent [IPCP ConfAck id=0x3 <addr 10.0.0.1>]
sent [IPCP ConfReq id=0x1 <addr 0.0.0.0> <ms-dns1 0.0.0.0> <ms-dns3 0.0.0.0>]
rcvd [IPCP ConfNak id=0x1 <addr 10.18.237.77> <ms-dns1 202.155.46.66> <ms-dns3 202.155.46.77>]
sent [IPCP ConfReq id=0x2 <addr 10.18.237.77> <ms-dns1 202.155.46.66> <ms-dns3 202.155.46.77>]
rcvd [IPCP ConfAck id=0x2 <addr 10.18.237.77> <ms-dns1 202.155.46.66> <ms-dns3 202.155.46.77>]
Cannot determine ethernet address for proxy ARP
local  IP address 10.18.237.77
remote IP address 10.0.0.1
primary   DNS address 202.155.46.66
secondary DNS address 202.155.46.77
Script /etc/ppp/ip-up started (pid 4023)
Script /etc/ppp/ip-up finished (pid 4023), status = 0x0


#######################################################
# Koneksi sedang berjalan. Tekan CTRL-C untuk mengakhiri
########################################################


Terminating on signal 2.
Connect time 1.8 minutes.
Sent 1599 bytes, received 3366 bytes.
Script /etc/ppp/ip-down started (pid 4067)
sent [LCP TermReq id=0x3 "User request"]
rcvd [LCP TermAck id=0x3 "User request"]
Connection terminated.

Kirim perintah pemutusan koneksi

Koneksi berakhir.
Serial link disconnected.
Waiting for 1 child processes...
  script /etc/ppp/ip-down, pid 4067
  Script /etc/ppp/ip-down finished (pid 4067), status = 0x0
[root@aphrodite 17:28 peers]#

Perbedaan antara koneksi via kabel serial dan USB dongle:

  1. Koneksi Serial Interface menggunakan device /dev/ttyS0, sedangkan koneksi IrDA USB menggunakan device /dev/ircomm0 yang diakses dari device /dev/ttyUSB0.
  2. Koneksi GPRS dengan menggunakan MA-620 USB Dongle di Linux 2.6.8 tidak berjalan selancar menggunakan kabel serial karena tidak didukung oleh kernel. Percobaan ini bisa berjalan dengan menggunakan emulasi driver MA-600 dan menurunkan max_baud_rate menjadi 9600bps. Delay time untuk koneksi internet dapat dilihat pada file "eksekusi" dalam direktori "IrDA" dan bandingkan dengan file "eksekusi" dalam direktori "Serial" untuk operasi ping. Terlepas dari bentuknya yang "USB", MA-620 tidak memenuhi IrDA-USB class specification. Perangkat ini sebenarnya adalah IrDA serial yang dibangun pada usb-to-rs232 bridge, sehingga untuk menggunakannya di Linux driver yang harus diload adalah ma600 dongle yang berjalan di atas irtty. Driver irda-usb samasekali tidak digunakan.
  3. Setting IrDA dapat dilakukan dengan langkah-langkah di bawah ini:
    modprobe uhci_hcd
    modprobe pl2303
    modprobe irda
    echo 9600 > /proc/sys/net/irda/max_baud_rate
    modprobe irtty-sir
    modprobe ma600-sir
    modprobe ircomm-tty
    irattach /dev/ttyUSB0 -d ma600 -s

    Setelah itu dekatkan interface IR pada ponsel dengan dongle. Monitoring bisa dilakukan dengan menggunakan perintah `irdadump`. Output di komputer saya seperti ini:
    root:~# irdadump
    ...
    22:58:03.315476 xid:cmd 1e1133f7 > ffffffff S=6 s=0 (14)
    22:58:03.405450 xid:cmd 1e1133f7 > ffffffff S=6 s=1 (14)
    22:58:03.495430 xid:cmd 1e1133f7 > ffffffff S=6 s=2 (14)
    22:58:03.577416 xid:rsp 1e1133f7 < 00000056 S=6 s=2 SIEMENS S57 hint=b124 [ PnP Modem Fax IrCOMM IrOBEX ] (28)
    22:58:03.585420 xid:cmd 1e1133f7 > ffffffff S=6 s=3 (14)
    22:58:03.675410 xid:cmd 1e1133f7 > ffffffff S=6 s=4 (14)
    22:58:03.765392 xid:cmd 1e1133f7 > ffffffff S=6 s=5 (14)
    22:58:03.855385 xid:cmd 1e1133f7 > ffffffff S=6 s=* aphrodite hint=0400 [ Computer ] (25)
    ...

    Setelah itu lanjutkan setup dengan langkah-langkah yang ada pada bagian "Konfigurasi Umum".

Selamat mencoba \(^_^)/

Terimakasih buat:

  1. Mbah Google atas petunjuk, wangsit dan bimbingannya
  2. GPRS Modem HOWTO oleh Mikko Rapeli
  3. Wawa yang senantiasa ngirimi semangat & kasih sayang
  4. Andika Gimo yang dah minjemin Siemens M55, ngasi pulsa buat main GPRS, dll
  5. Yetty yang udah minjemin Sonny Ericsson T630nya buat ikutan eksperimen
  6. Sinchan yang dah minjemin IrDA dongle & dan Nokia 6610 walau harus kehujanan
  7. Aphrodite yang RAMnya harus berkurang 128M buat support promeasys
  8. Djarum 76, Excelso Arabica, dan Indocafe yang dah nemenin melekan :)
  9. Kawan-kawan opensource di seluruh dunia (long live public mailing list!)
  10. Mas Rizal yang dah minjemin Nokia 6600nya

Mari kita bersama-sama berdoa semoga saudara kita Galih Satriaji bisa cepat sembuh dari pileknya dan berkumpul kembali dengan kita semua, amin.


File-file yang digunakan dapat diambil di sini.