Blognya Tedy Tirtawidjaja

Kumpulan tulisan dan curahan pikiran saya yang bodoh ini

IP Calculator


Quick post tonight after several days hibernation :D. In my Ubuntu (and other Linux environment), there is a tool named ipcalc that can used as IP address calculator. With this tool, I can easily know what the network address of an certain IP address. I can also know how many client can join into a range of IP address.

For example, I get IP address 10.34.31.34 with network mask 255.255.255.248, with ipcalc I know that the network address for IP 10.34.31.34 is 10.34.41.32. See the log below as appear on my desktop :

tedy@tedy-laptop:~$ ipcalc 10.34.31.34/255.255.255.248
Address: 10.34.31.34 00001010.00100010.00011111.00100 010
Netmask: 255.255.255.248 = 29 11111111.11111111.11111111.11111 000
Wildcard: 0.0.0.7 00000000.00000000.00000000.00000 111
=>
Network: 10.34.31.32/29 00001010.00100010.00011111.00100 000
HostMin: 10.34.31.33 00001010.00100010.00011111.00100 001
HostMax: 10.34.31.38 00001010.00100010.00011111.00100 110
Broadcast: 10.34.31.39 00001010.00100010.00011111.00100 111
Hosts/Net: 6 Class A, Private Internet


tedy@tedy-laptop:~$

Theoretically to find out what is the network address of any given IP address is simply by do Boolean operation AND between IP address and its netmask. So the step to calculate network address manually is like these :

  1. Convert the IP address & network mask into biner form. This should be long explanation how to convert IP address into biner form.
  2. Then perform Boolean operation : <IP Address> AND <Network Mask>,  just keep in mind that in the AND operation if 1 meet 0 then the result will be 0 (vice versa). Only if 1 meet by 1 then the result would be 1.

That’s it, I can explain it longer, Wikipedia explains t well here. I know the theory but I’m too lazy to do math operation like that :p I’m glad to found simple tool like ipcalc. It makes my life a little bit easier :D


Fun Work


Just a quick post in this weekend after passed a busy week. Yeah finally I tasted how busy the work can be…but enjoy the work. Just remember the nice statement on Pak Armien’s blog : “Why bother taking holiday when your work is more fun?” =)) Funny and ironic statement. With that statement in my mind, I smiled when see many people on Facebook whining around why this holiday come to an end tomorrow.

This photo taken by my friend Buchari when I did installation on XL data centre. Those pile of servers are some of XL’s SMS (short message service) machine, Sun Netra T5220. Each server can handle 2000 SMS per second.


Flickr Hanya 200 Foto


Beberapa hari lalu saya sedikit kaget membuka halaman Flickr saya. Ada pengumuman seperti terlihat pada gambar di bawah ini :

Flickr membuat batasan  user regular (alias gratisan) hanya bisa melihat 200 foto terakhir saja. Misalnya saya sudah upload 200 foto, ketika saya upload foto ke-201 maka foto pertama otomatis tidak bisa dilihat lagi :(( Alternatifnya adalah dengan menjadi member Pro di Flickr dengan tambahan dana sekian dolar. Ah aneh tapi saya tahu sebagai pengguna layanan gratisan memang dilarang komplain. Hukumnya kan sudah begitu : Gratis Kok Mau Enak :-p Mau bagaimana lagi namanya juga gratisan, terserah yang punya layanan mau buat aturan seperti apa. Sayang sekali…padahal cukup menyenangkan menaruh koleksi foto di Flickr. Dilarang komplain tapi masih boleh lah saya sedikit membandingkan dengan layanan sejenis Flickr, mengingat penyedia layanan Picasa (milik Google) tidak punya aturan upload seperti ini. Picasa Google memberi kuota sebesar 1 GB bagi para penggunanya, tidak peduli berapa banyak foto yang di-upload.

Sejak awal punya kamera tahun lalu, saya selalu menaruh foto di Picasa. Itupun saya pakai untuk keperluan menampilkan foto ke dalam blog ini. Sebenarnya Wordpress sendiri menyediakan ruang bagi saya untuk menaruh foto. Tapi saya pribadi lebih suka menaruh foto di Picasa. Nah sejak punya kamera DSLR, saya mulai mengefektifkan pemakaian account Flickr saya. Ah tapi tahu ada batasan 200 foto terbaru saja yang bisa terlihat membuat saya berpikir ulang untuk meninggalkan Flickr dan memaksimalkan Picasa saja :


Pidgin YM Login Problem Solved


Since last week, I’ve problem with my Pidgin. It couldn’t used for accessing Yahoo Messenger. From the several website, I knew that the problem located on Yahoo Messenger server. Yahoo change the authentication system for Yahoo Mesenger user. Many blogger also have same problem with me. For couple days, I was using Meebo to using Yahoo Messenger. Maybe you already know Meebo is web based IM client that can used for access several IM services (like MSN, YM, AOL, etc).

This evening, I’ve just tried to get rid my Pidgin’s problem. My friend at office give me update that Pidgin developer has release the update for resolve YM login problem. Open the Pidgin official website, I read the annoucement right on their website about YM problem. Pidgin version 2.5.7 has been released to resolve Yahoo Messenger problem…it just like the screenshot I attached on this post. Hmm glad to read that. I followed the instruction and it’s works like a charm. I’m be able to used Pidgin to open Yahoo Messenger again. I don’t know why Yahoo change the authentication method, too many security attack to YM servers? Just a simple guess :D But the next question is why web based IM client like Meebo doesn’t get impact like Pidgin got. Meebo has update their system more quick than Pidgin? Again…another fool asumption :D

Update June 25th, 2009 :
seems that the new version of Pidgin cannot cooperate with pretty look notification system in Ubuntu Jaunty
:(

Command to do that :

# sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 67265eb522bdd6b1c69e66ed7fb8bee0a1f196a8
# sudo -s
# echo "deb http://ppa.launchpad.net/pidgin-developers/ppa/ubuntu jaunty main" >> /etc/apt/sources.list
# apt-get update
# apt-get purge pidgin
# apt-get install pidgin


Pake BB


Kemarin ada rekan saya yang jarang bertemu mengirim pesan singkat lewat Yahoo Messenger. Isinya seperti ini :

“pake bb ya Pak? online terus…”

Waks??? :-o bb? what the hell is that? Ah rupanya rekan saya itu mengira saya pakai BelekBeri sehingga bisa terlihat online terus. Halah-halah…saya mah belum kelas pakai belekberi. Kan bakal jomplang kelihatannya kalau saya makan di warteg bawa-bawa belekberi. Mungkin juga bisa memancing orang-orang di warteg mengernyitkan kening sambil mikir “pasti bb-nya boleh kridit” =)) Ga pantes juga naik ojek sambil utak-atik belekberi :D

Ada-ada saja teman saya itu,  lucu juga pertanyaannya. Memangnya yang bisa online 24 jam cuma yang pake bb ya. Lah saya kan cuma modal laptop & Speedy di kamar. Anytime laptop saya ketemu akses internet, YM saya pasti nyala tuh.


Ibu Prita VS Manohara


Dari minggu lalu saya baru tahu tentang kasus yang menimpa Ibu Prita Mulyasari. Curhatnya lewat media internet soal pelayanan yang buruk di rumah sakit Omni Internasional berbuntut panjang. Dia terpaksa ditahan pihak berwajib karena pihak rumah sakit menuntutnya dan menjeratnya dengan pasal pencemaran nama baik UU ITE (Undang-Undang Informasi dan Transaksi Elektronik). Halah saya benar-benar kaget membaca berita soal Ibu Prita ini. Kasihan sekali rasanya, mungkin seperti sudah jatuh tertimpa tangga, tangganya digilas kuda, kudanya hamil kembar dua belas.Berita lengkapna Anda bisa membacanya di Surat Pembaca Detik.com. Saya pun dulu pertama kali tahu kasus ini karena membaca berita di Detik.com itu. Tak menyangka belakangan banyak dibahas kalau Ibu Prita itu malah diadukan ke pengadilan oleh pihak rumah sakit. Dan lebih kaget lagi setelah tahu kalau Ibu Prita ditahan pihak berwajib selama proses pemeriksaan.

Hmm pasal pencemaran nama baik memang multiinterprestasi. Banyak sekali celah yang bisa dijadikan cara untuk menjegal lawan/pihak yang berseberangan. Kasus yang menimpa Ibu Prita itu benar suatu bukti bahwa menjegal orang lain dengan pasal pencemaran nama baik UU ITE bisa dilakukan terlepas dari fakta & latar belakang siapa yang benar dan siapa yang salah. Jangan-jangan tulisan-tulisan saya seperti misalnya review hotel bisa bernasib sama :(( Siap-siap balik lagi ke era serba tutup mulut kalau begitu. Kemarin saya juga sempat melihat banyak blogger-blogger terkenal di Indonesia sudah menuliskan keprihatinan mereka soal Ibu Prita. Sampai-sampai ada yang membuat situs khusus untuk menggalang keprihatinan dan protes keras atas tindakan ketidakadilan yang dialami oleh Ibu Prita, situsnya adalah http://ibuprita.suatuhari.com. Saya juga sudah ikut pasang banner-nya di blog ini : Selamatkan Ibu Prita Mulyasari.

Tapi herannya sepanjang pengamatan saya, di televisi jarang ada berita soal Ibu Prita ini. Entah saya yang kurang nonton TV atau memang benar tidak ada. Minggu ini saja, televisi sibuk beramai-ramai membahas yang namanya Manohara. Kasus ini sepertinya lebih menjadi favorit. Entah mana yang lebih penting, tapi menurut saya pribadi kasus Ibu Prita ini sungguh lebih pantas di-blow up ke masyrakat luas daripada kasusnya Manohara. Media memilih yang lain, kasus Manohara benar-benar jadi idola di hampir semua media massa. Lihat saja hampir semua stasiun televisi baik acara berita maupun entertainmen memberitakan model satu itu.

Saya pribadi malah tidak punya rasa simpati apa-apa dengan kasusnya Manohara, jauh berbeda dengan rasa simpati saya dengan kasusnya Ibu Prita. Sejatinya kasus Manohara dalam benak saya hanya kasus kekerasan dalam rumah tangga. Kebetulan terjadi di luar Indonesia sehingga proses perlindungan hukum sedikit tersendat. Lebih itu tidak. Perjuangan ibunya Manohara pun tidak menarik simpati saya. Kalau ABG bilang “lebay”, berlebihan lah… Ibunya mendadak jadi selebritis. Wajahnya muncul terus di televisi, sampai bosan dilihat. Disambut oleh Laskar Merah Putih di bandara Soekarno Hatta, Manohara disambut bak pahlawan negara…geli saya melihatnya. Diberi topi dan rompi loreng-loreng (mungkin pakaian kebesaran Laskar tsb)…lebay kan? Ya suka-suka mereka sih bagaimana mengadakan penyambutan. Tapi di situ memang ironisnya…saya melihat keberpihakan media pada berita yang bakal menyedot rating tinggi. Salah? Tidak juga sih, namanya juga media tentu ingin bisa menampilkan siaran yang menarik banyak pemirsanya. Sepertinya masih banyak kasus kekerasan yang menimpa warga Indonesia tapi kalah populer dengan Manohara. Berapa banyak TKI yang mendapat kekerasan di luar negeri, belum lagi kasusnya David mahasiswa asal Indonesia yang terbunuh di Singapura…sepertinya masih kalah dengan kisahnya Manohara.

Ironis….banyak yang ironis. Yang sakit & dirugikan malah ditangkap, yang bermasalah dengan rumah tangganya malah disiarkan seheboh itu.

Update 25 Juni 2009 :
Hari ini Ibu Prita dinyatakan bebas oleh Pengadilan Negri Tangerang. Semua biaya pengadilan ditanggung negara. Saatnya menghapus banner “Bebaskan Ibu Prita Mulyasari” dari blog saya.


HSDPA Di Ubuntu (part 3)


Ini tulisan ketiga saya tentang modem HSDPA (tulisan sebelumnya ada di sini dan di sini). Modem dalam foto di bawah ini milik rekan saya Andi, modem ZTE MF636 yang di-bundle dengan paket broadband internetnya Indosat. Hitung-hitung ini modem HSDPA yang saya coba.

Dapat petunjuk instalasinya dari sini, lebih mudah daripada modem Option yang pernah saya bahas sebelumnya. Langkah-langkah instalasinya seperti berikut ini :

1. Deteksi dulu modemnya dengan perintah lsusb. Modem ZTE ini terdeteksi dengan idVendor 19d2 dan idProduct 0031.

tedy@tedy-laptop:~$ lsusb
Bus 007 Device 003: ID 19d2:0031
Bus 007 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 002: ID 08ff:2580 AuthenTec, Inc. AES2501 Fingerprint Sensor
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 003: ID 046d:09b2 Logitech, Inc.
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 002: ID 15ca:00c3 Textech International Ltd. Mini Optical Mouse
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
tedy@tedy-laptop:~$

tedy@tedy-laptop:~$ lsusb -v

Bus 007 Device 003: ID 19d2:0031
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x19d2
idProduct 0x0031
bcdDevice 0.00
iManufacturer 2 ZTE, Incorporated
iProduct 1 ZTE CDMA Technologies MSM
iSerial 3 1234567890ABCDEF
bNumConfigurations 1

2. Kita perlu menginstal paket  libusb-dev terlebih dahulu :

tedy@tedy-laptop:~/bin$ sudo apt-get install libusb-dev
[sudo] password for tedy:
Reading package lists… Done
Building dependency tree
Reading state information… Done
libusb-dev is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
tedy@tedy-laptop:~/bin$

3. Untuk membuat Ubuntu mengenali modem ini bukan sebagai USB drive biasa, kita perlu menambahkan rules seperti berikut ini :

tedy@tedy-laptop:~$ cat /etc/udev/rules.d/65-zte-mf628-modem.rules
ACTION!=”add”, GOTO=”ZTE_End”
#
SUBSYSTEM==”usb”, SYSFS{idProduct}==”0031″,
SYSFS{idVendor}==”19d2″, GOTO=”ZTE_Modem”
#
LABEL=”ZTE_Modem”
RUN+=”/sbin/modprobe usbserial vendor=0×19d2 product=0×0031″,
MODE=”660″, GROUP=”dialout”
#
LABEL=”ZTE_End”
tedy@tedy-laptop:~$

4. Ada file yang perlu kita modifikasi juga yaitu file /usr/share/hal/fdi/information/10freedesktop/10-modem.fdi. Yang harus dimodifikasi adalah baris yang berisi "@info.parent:usb.vendor_id" dan "@info.parent:usb.product_id" Ganti default value yang ada dengan idVendor dan idProduct dengan hasil yang ditampilkan oleh perintah  lsusb.

tedy@tedy-laptop:~$ cat /usr/share/hal/fdi/information/10freedesktop/10-modem.fdi | egrep “0031|19d2″
<match key=”@info.parent:usb.vendor_id” int=”0×19d2“>
<match key=”@info.parent:usb.product_id” int=”0×0031“>
tedy@tedy-laptop:~$

5. Reboot komputernya tapi jangan pasangkan modem sampai proses reboot selesai.

6. Setelah reboot, Ubuntu sukses mengenali modem ZTE ini. Saya tinggal membuat koneksi baru dengan Network Manager (yang ada di sisi kanan atas desktop). Langkah-langkahnya persis seperti yang sudah pernah saya tulis di  http://tedytirta.com/2009/03/28/hsdpa-di-ubuntu-part-2/ (lihat bagian setelah langkah ke-10; yang menampilkan gambar-gambar hasil screenshot). Yang perlu diperhatikan mungkin adalah parameter authentifikasinya seperti berikut ini :

username = indosat
password = indosatc
APN = indosat3g

Saat saya coba menggunakan modem ini, saya juga sempat menampilkan output dari sistem lewat file /var/adm/messages seperti berikut ini :

tedy@tedy-laptop:~$ tail -f /var/log/messages
Mar 31 18:31:26 tedy-laptop pppd[14811]: Plugin /usr/lib/pppd/2.4.4/nm-pppd-plugin.so loaded.
Mar 31 18:31:26 tedy-laptop pppd[14811]: pppd 2.4.4 started by root, uid 0
Mar 31 18:31:26 tedy-laptop pppd[14811]: Using interface ppp0
Mar 31 18:31:26 tedy-laptop pppd[14811]: Connect: ppp0 <–> /dev/ttyUSB1
Mar 31 18:31:26 tedy-laptop pppd[14811]: CHAP authentication succeeded
Mar 31 18:31:26 tedy-laptop pppd[14811]: CHAP authentication succeeded
Mar 31 18:31:26 tedy-laptop pppd[14811]: Terminating on signal 15
Mar 31 18:31:26 tedy-laptop pppd[14811]: Connection terminated.
Mar 31 18:31:28 tedy-laptop pppd[14811]: Exit.
Mar 31 18:31:34 tedy-laptop pppd[14824]: Plugin /usr/lib/pppd/2.4.4/nm-pppd-plugin.so loaded.
Mar 31 18:31:34 tedy-laptop pppd[14824]: pppd 2.4.4 started by root, uid 0
Mar 31 18:31:34 tedy-laptop pppd[14824]: Using interface ppp0
Mar 31 18:31:34 tedy-laptop pppd[14824]: Connect: ppp0 <–> /dev/ttyUSB1
Mar 31 18:31:35 tedy-laptop pppd[14824]: CHAP authentication succeeded
Mar 31 18:31:35 tedy-laptop pppd[14824]: CHAP authentication succeeded
Mar 31 18:31:37 tedy-laptop pppd[14824]: Could not determine remote IP address: defaulting to 10.64.64.64
Mar 31 18:31:37 tedy-laptop pppd[14824]: local IP address 10.173.6.216
Mar 31 18:31:37 tedy-laptop pppd[14824]: remote IP address 10.64.64.64
Mar 31 18:31:37 tedy-laptop pppd[14824]: primary DNS address 124.195.15.100
Mar 31 18:31:37 tedy-laptop pppd[14824]: secondary DNS address 124.195.15.98
Mar 31 18:32:34 tedy-laptop pppd[14824]: Terminating on signal 15
Mar 31 18:32:34 tedy-laptop pppd[14824]: Connect time 1.0 minutes.
Mar 31 18:32:34 tedy-laptop pppd[14824]: Sent 15056 bytes, received 160671 bytes.
Mar 31 18:32:34 tedy-laptop pppd[14824]: Connection terminated.
Mar 31 18:32:34 tedy-laptop pppd[14824]: Exit.
Mar 31 18:32:47 tedy-laptop kernel: [ 4671.587486] usb 7-1: USB disconnect, address 4
Mar 31 18:32:47 tedy-laptop kernel: [ 4671.588489] generic ttyUSB0: generic converter now disconnected from ttyUSB0
Mar 31 18:32:47 tedy-laptop kernel: [ 4671.588522] usbserial_generic 7-1:1.2: device disconnected
Mar 31 18:32:47 tedy-laptop kernel: [ 4671.591605] generic ttyUSB1: generic converter now disconnected from ttyUSB1
Mar 31 18:32:47 tedy-laptop kernel: [ 4671.591655] usbserial_generic 7-1:1.3: device disconnected

Ketika saya coba berinternet dengan modem ini, koneksinya buruk sekali. Ah tapi mungkin itu karena tangkapan sinyal yang buruk waktu itu. Waktu itu saya coba di kantor, tidak dipinjam untuk dibawa pulang soalnya :D Berharap ada yang mau meminjamkan modem HSDPA tipe-tipe lainnya, supaya saya bisa punya pengalaman lain lagi & bisa melanjutkan seri tulisan “HSDPA di Ubuntu” ini :-p


HSDPA Di Ubuntu (part 2)


Tulisan ini boleh dibilang sebagai lanjutan dari tulisan saya sebelumnya “HSDPA Di Ubuntu“. Di tulisan sebelumnya saya membahas tentang bagaimana menggunakan modem Option Globaltrotter Connect di Ubuntu. Kali ini saya akan menulis tentang modem Option juga tapi dengan tipe modem yang berbeda. Kebetulan saya sedang pegang modem HSDPA milik kantor, modem Option Icon 7.2 EL. Gambarnya seperti berikut ini :

Kali ini saya tes modem ini dengan Ubuntu di Lenovo saya. Petunjuk instalasinya saya dapat dari sini. Berikut langkah-langkah yang saya lakukan :

1. Cek apakah modem sudah dikenali oleh Ubuntu sebagai USB device :

tedy@lenovo:~$ lsusb
Bus 005 Device 003: ID 0bda:0158 Realtek Semiconductor Corp. Mass Stroage Device
Bus 005 Device 002: ID 5986:0141 Acer, Inc
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 004: ID 0af0:6901 Qualcomm, Inc.
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
tedy@lenovo:~$

2. Tanpa konfigurasi apa-apa, modem ini akan dikenali sebagai USB storage (seperti USB flash disk). Supaya bisa berfungsi sebagai modem, kita harus mengatur Ubuntu supaya memperlakukan modem ini sebagai USB serial. Untuk itu kita perlu mengambil sebuah pre-compiled program icon_switch.c dari sini.

3. Setelah itu kita perlu mengedit file tersebut untuk mendaftarkan idProduct & idVendor dari modem ini :

tedy@lenovo:~$ vi icon_switch.c
# cukup edit bagian berikut ini untuk mengganti idProduct & idVendor
if (dev->descriptor.idVendor == 0x0af0 && dev->descriptor.idProduct == 0x6901) {

4. Karena file  icon_switch.c masih berupa pre-compiled program, maka kita perlu menyiapkan environment untuk melakukan kompilasi. Yang dibutuhkan adalah paket libusb-dev dan libusb++-dev seperti terlihat pada contoh di bawah ini :

tedy@lenovo:~$ sudo apt-get install libusb-dev libusb++-dev
[sudo] password for tedy:
Reading package lists… Done
Building dependency tree
Reading state information… Done
libusb-dev is already the newest version.
libusb++-dev is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

5. Proses kompilasi dilakukan dengan perintah seperti berikut ini :

tedy@lenovo:~$ cc -l usb -o icon_switch icon_switch.c

6. Hasil kompilasinya adalah icon_switch; file tersebut perlu kita salin ke dalam /usr/sbin/ :

tedy@lenovo:~$ sudo cp icon_switch /usr/sbin/

7. Tahap berikutnya adalah membuat rules untuk mengotomatisasi proses switching dari mode USB storage ke USB serial. Caranya seperti berikut ini :

tedy@lenovo:/etc/udev/rules.d$ vi 10-local.rules
BUS==”usb”,SYSFS{idProduct}==”1000″,SYSFS{idVendor}==”05c6″,RUN+=”/usr/sbin/icon_switch”
BUS==”usb”,SYSFS{idProduct}==”6901″,SYSFS{idVendor}==”0af0″,RUN+=”/sbin/modprobe usbserial vendor=0×0af0 product=0×6901 maxsize=4096″

8. Langkah berikutnya adalah memodifikasi (re-compile) driver serial, untuk itu kita perlu menyiapkan paket-paket berikut ini untuk proses kompilasi :

tedy@lenovo:/etc/udev/rules.d$ sudo apt-get install build-essential linux-source
Reading package lists… Done
Building dependency tree
Reading state information… Done
build-essential is already the newest version.
linux-source is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

9.  Berikut ini adalah langkah-langkah untuk meng-compile ulang driver serial :

tedy@lenovo:/etc/udev/rules.d$ cd /usr/src/
tedy@lenovo:/usr/src$ sudo tar xjf linux-source-2.6.27.tar.bz2

tedy@lenovo:/usr/src$ cd linux-source-2.6.27/drivers/usb/serial/
tedy@lenovo:/usr/src/linux-source-2.6.27/drivers/usb/serial$ sudo vi usb-serial.c
#tambahkan baris berikut ini :
static ushort maxSize = 0;
#ganti baris berikut ini :
buffer_size = le16_to_cpu(endpoint->wMaxPacketSize);
#jadi seperti ini:
buffer_size = (endpoint->wMaxPacketSize > maxSize)?endpoint->wMaxPacketSize:maxSize;
#tambahkan baris berikut ini :
module_param(maxSize, ushort,0);
MODULE_PARM_DESC(maxSize,”User specified USB endpoint size”);
tedy@lenovo:/usr/src/linux-source-2.6.27/drivers/usb/serial$ sudo make -C /lib/modules/`uname -r`/build M=`pwd`
make: Entering directory `/usr/src/linux-headers-2.6.27-7-generic’
CC [M] /usr/src/linux-source-2.6.27/drivers/usb/serial/usb-serial.o
CC [M] /usr/src/linux-source-2.6.27/drivers/usb/serial/generic.o
CC [M] /usr/src/linux-source-2.6.27/drivers/usb/serial/bus.o
CC [M] /usr/src/linux-source-2.6.27/drivers/usb/serial/ezusb.o
LD [M] /usr/src/linux-source-2.6.27/drivers/usb/serial/usbserial.o
……..
……..
……..
LD [M] /usr/src/linux-source-2.6.27/drivers/usb/serial/usbserial.ko
CC /usr/src/linux-source-2.6.27/drivers/usb/serial/visor.mod.o
LD [M] /usr/src/linux-source-2.6.27/drivers/usb/serial/visor.ko
CC /usr/src/linux-source-2.6.27/drivers/usb/serial/whiteheat.mod.o
LD [M] /usr/src/linux-source-2.6.27/drivers/usb/serial/whiteheat.ko
make: Leaving directory `/usr/src/linux-headers-2.6.27-7-generic’
tedy@lenovo:/usr/src/linux-source-2.6.27/drivers/usb/serial$ sudo cp usbserial.ko /lib/modules/2.6.27-7-server/kernel/drivers/usb/serial/usbserial.ko
tedy@lenovo:/usr/src/linux-source-2.6.27/drivers/usb/serial$ sudo depmod -a

10.  Setelah selesai saya harus me-restart komputer terlebih dulu :

tedy@lenovo:/usr/src/linux-source-2.6.27/drivers/usb/serial$ reboot

Setelah komputer restart, saya baru menyambungkan modem ke notebook. Di /var/log/messages saya bisa melihat Ubuntu saya sudah mengenali modem tersebut sebagai modem GSM. Lihat contohnya seperti berikut ini :

tedy@lenovo:~$ tail -f /var/log/messages
Mar 19 20:25:58 lenovo kernel: [ 201.272143] usb 1-1: new full speed USB device using uhci_hcd and address 4
Mar 19 20:25:58 lenovo kernel: [ 201.437727] usb 1-1: configuration #1 chosen from 1 choice
Mar 19 20:25:59 lenovo kernel: [ 202.018523] usbcore: registered new interface driver usbserial
Mar 19 20:25:59 lenovo kernel: [ 202.021919] usbserial: USB Serial support registered for generic
Mar 19 20:25:59 lenovo kernel: [ 202.025064] usbcore: registered new interface driver usbserial_generic
Mar 19 20:25:59 lenovo kernel: [ 202.025087] usbserial: USB Serial Driver core
Mar 19 20:25:59 lenovo kernel: [ 202.056566] usbserial: USB Serial support registered for GSM modem (1-port)
Mar 19 20:25:59 lenovo kernel: [ 202.057504] option 1-1:1.0: GSM modem (1-port) converter detected
Mar 19 20:25:59 lenovo kernel: [ 202.061537] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB0
Mar 19 20:25:59 lenovo kernel: [ 202.065018] option 1-1:1.1: GSM modem (1-port) converter detected
Mar 19 20:25:59 lenovo kernel: [ 202.068822] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB1
Mar 19 20:25:59 lenovo kernel: [ 202.072324] option 1-1:1.2: GSM modem (1-port) converter detected
Mar 19 20:25:59 lenovo kernel: [ 202.076305] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB2
Mar 19 20:25:59 lenovo kernel: [ 202.117374] usbcore: registered new interface driver option
Mar 19 20:25:59 lenovo kernel: [ 202.117394] option: USB Driver for GSM modems: v0.7.2

Di taskbar kanan atas, Ubuntu memberi notifikasi seperti berikut ini :

Saya bisa dengan mudah menambahkan modem dengan mengklik tombol “Configure” pada notifikasi yang muncul tersebut. Saat diklik, sistem akan menampilkan jendela baru untuk menambahkan modem seperti gambar di bawah ini :

Proses penambahan modem cukup mudah, tinggal klik “Forward” sampai muncul tampilan seperti di bawah ini :

Karena modem ini berisi SIM card XL, saya jadi pilih Excelcomindo (XL) pada pilihan yang ada. Setelah menekan “Forward”, yang muncul adalah tampilan seperti di bawah ini :

Proses penambahan sudah selesai, tinggal klik “Apply”.

Untuk mulai menggunakan modem, saya tinggal klik kanan pada tombol “Network Connection” di taskbar kanan atas. Di sana sudah muncul pilihan untuk connect ke jaringan XL.

Saat sudah tersambung dengan internet lewat layanan HSDPA XL, akan muncul notifikasi seperti berikut ini :

Oh ya…saat proses koneksi dimulai, saya sempat melihat tampilan /var/log/messages seperti berikut ini :

tedy@lenovo:~$ tail -f /var/log/messages
Mar 19 21:05:54 lenovo pppd[7178]: Plugin /usr/lib/pppd/2.4.4/nm-pppd-plugin.so loaded.
Mar 19 21:05:54 lenovo kernel: [ 2597.342166] PPP generic driver version 2.4.2
Mar 19 21:05:54 lenovo pppd[7178]: pppd 2.4.4 started by root, uid 0
Mar 19 21:05:54 lenovo pppd[7178]: Using interface ppp0
Mar 19 21:05:54 lenovo pppd[7178]: Connect: ppp0 <–> /dev/ttyUSB0
Mar 19 21:05:54 lenovo pppd[7178]: CHAP authentication succeeded
Mar 19 21:05:54 lenovo pppd[7178]: CHAP authentication succeeded
Mar 19 21:05:54 lenovo kernel: [ 2597.805939] PPP BSD Compression module registered
Mar 19 21:05:55 lenovo kernel: [ 2598.026752] PPP Deflate Compression module registered
Mar 19 21:05:58 lenovo pppd[7178]: Could not determine remote IP address: defaulting to 10.64.64.64
Mar 19 21:05:58 lenovo pppd[7178]: local  IP address 10.233.73.204
Mar 19 21:05:58 lenovo pppd[7178]: remote IP address 10.64.64.64
Mar 19 21:05:58 lenovo pppd[7178]: primary   DNS address 202.152.254.245
Mar 19 21:05:58 lenovo pppd[7178]: secondary DNS address 202.152.254.246

Untuk memutus koneksi internet, saya tinggal klik pada pilihan “Disconnect” seperti terlihat pada tampilan seperti berikut ini :

Kecepatan koneksinya HSDPA XL ini cukup lumayan. Tes membuka video di Youtube cukup lancar, bisa mengimbangi kualitas koneksi Speedy saya.


HSDPA Di Ubuntu


Sejak hari Sabtu kemarin, saya mencoba menyambungkan modem HSDPA rekan saya dengan Ubuntu. Baru tadi sore saya sukses menyambungkan modem tersebut. Sudah banyak referensi di Google mengenai cara menggunakan modem HSDPA di Linux (khususnya Ubuntu) tapi tidak ada yang sukses membantu saya. Referensi yang saya temui lebih banyak menggunakan model Huawei sebagai contoh kasusnya. Sedangkan modem yang ada di tangan saya adalah modem keluaran Qualcomm, namanya Option (atau Globaltrotter Connect). Modem ini menggunakan interface USB. Modem ini adalah modem yang dijual sepaket dengan Telkomsel Flash. Tapi di pasaran saya lebih banyak melihat orang membeli Telkomsel Flash yang dijual satu paket dengan modem Huawei.

Di dalam modem ini disertakan aplikasi Globaltrotter Connect, sayangnya aplikasi ini adalah aplikasi Windows. Dengan adanya aplikasi ini, pengguna Windows dapat dengan mudah menggunakan modem ini untuk berinternet. Bila modem ini ditancapkan ke port USB komputer yang menggunakan Windows, aplikasi di dalamnya langsung bekerja otomatis. Aplikasi tersebut akan langsung menginstalkan dirinya ke dalam Windows. Tunggu beberapa menit sampai muncul jendela baru untuk connect ke jaringannya Telkomsel. Tidak perlu ada driver tambahan lainnya. Nah jadi masalah ketika modem ini ditancapkan pada komputer berbasis Linux. Saat disambungkan ke port USB, Ubuntu saya mengenalinya sebagai sebuah USB storage. Sudah banyak tutorial di Internet yang saya coba tapi semuanya gagal. Walaupun demikian Ubuntu sebenarnya sudah mengenali USB tersebut. Buktinya dari output perintah lsusb sudah terlihat nama produk modem ini :

tedy-laptop:/ # sudo lsusb -v
..............
..............
Bus 004 Device 013: ID 0af0:6971 Option
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 255 Vendor Specific Class
bDeviceSubClass 255 Vendor Specific Subclass
bDeviceProtocol 255 Vendor Specific Protocol
bMaxPacketSize0 64
idVendor 0x0af0 Option
idProduct 0x6971
bcdDevice 0.00
iManufacturer 1 Option N.V.
iProduct 2 Globetrotter HSDPA Modem

iSerial 4 Serial Number
bNumConfigurations 1

..............
..............

Baru tadi sore saya menemukan forum yang membahas soal modem Option Globaltrotter ini. Di forum itu dijelaskan bahwa modem seperti ini harus menggunakan driver hso.

Langsung lah saya coba cara-cara yang dijelaskan di sana. Langkah-langkahnya seperti berikut ini :

1. Ambil dulu driver hso di sini, lalu ekstrak; seperti berikut ini contohnya :

tedy@tedy-laptop:~$ tar zxvf hso-1.9.tar.gz
hso_26-v1.9/
hso_26-v1.9/stop.cht
hso_26-v1.9/ports.sh
hso_26-v1.9/hso_connect.sh
hso_26-v1.9/Makefile
hso_26-v1.9/connect.sh
hso_26-v1.9/setpwr.sh
hso_26-v1.9/init.cht
hso_26-v1.9/CHANGELOG
hso_26-v1.9/README
hso_26-v1.9/hso.c
hso_26-v1.9/dial.cht
tedy@tedy-laptop:~$ cd hso_26-v1.9/
edi@edi-laptop:~/hso_26-v1.9$ ls
CHANGELOG dial.cht hso_connect.sh Makefile README stop.cht
connect.sh hso.c init.cht ports.sh setpwr.sh

2. Compile driver tersebut seperti contoh di bawah ini :

tedy@tedy-laptop:~/hso_26-v1.9$ sudo make
[sudo] password for tedy:
mkdir -p /home/tedy/hso_26-v1.9/tmp/.tmp_versions
make -C /lib/modules/2.6.27-7-server/build M=/home/tedy/hso_26-v1.9 MODVERDIR=/home/tedy/hso_26-v1.9/tmp/.tmp_versions modules
make[1]: Entering directory `/usr/src/linux-headers-2.6.27-7-server'
CC [M] /home/tedy/hso_26-v1.9/hso.o
Building modules, stage 2.
MODPOST 1 modules
CC /home/tedy/hso_26-v1.9/hso.mod.o
LD [M] /home/tedy/hso_26-v1.9/hso.ko
make[1]: Leaving directory `/usr/src/linux-headers-2.6.27-7-server'
tedy@tedy-laptop:~/hso_26-v1.9$

tedy@tedy-laptop:~/hso_26-v1.9$ sudo make install
mkdir -p /home/tedy/hso_26-v1.9/tmp/.tmp_versions
make -C /lib/modules/2.6.27-7-server/build M=/home/tedy/hso_26-v1.9 MODVERDIR=/home/tedy/hso_26-v1.9/tmp/.tmp_versions modules
make[1]: Entering directory `/usr/src/linux-headers-2.6.27-7-server'
Building modules, stage 2.
MODPOST 1 modules
make[1]: Leaving directory `/usr/src/linux-headers-2.6.27-7-server'
modprobe -r hso || true
install -d /lib/modules/2.6.27-7-server/kernel/drivers/net/wwan/
install -m 644 -c hso.ko /lib/modules/2.6.27-7-server/kernel/drivers/net/wwan/
/sbin/depmod -a 2.6.27-7-server
tedy@tedy-laptop:~/hso_26-v1.9$

3. Untuk mencegah supaya modem tidak dikenali sebagai usb storage biasa, saya harus menginstal Ozerocdoff. Ambil source-nya di sini lalu instal seperti contoh berikut ini :

tedy@tedy-laptop:~$ tar zxvf udev.tar.gz
udev/
udev/Makefile
udev/ozerocdoff.o
udev/hso.udev
udev/README
udev/ozerocdoff
udev/ozerocdoff.c
udev/ozerocdoff.8
udev/10-wwan-quirk.fdi
udev/osetsuspend
udev/hso-suspend.conf
udev/osethalproperty
udev/osetsuspend.8
udev/hal-serial-hsotype
udev/10-wwan-hso-preprobe.fdi
udev/ofindhsx
tedy@tedy-laptop:~$
cd udev/

tedy@tedy-laptop:~/udev$ sudo make install
install -d /usr/sbin
install -d /etc/udev/rules.d
install ozerocdoff /usr/sbin
cp hso.udev /etc/udev/rules.d/51-hso-udev.rules
install -d /usr/share/hal/fdi/preprobe/20thirdparty
cp 10-wwan-hso-preprobe.fdi /usr/share/hal/fdi/preprobe/20thirdparty
install -d /usr/share/hal/fdi/information/20thirdparty
cp 10-wwan-quirk.fdi /usr/share/hal/fdi/information/20thirdparty
install -d /usr/lib/hal/scripts/
install hal-serial-hsotype /usr/lib/hal/scripts/
install -d /etc
install osetsuspend /usr/sbin
cp hso-suspend.conf /etc
tedy@tedy-laptop:~/udev$

4. Supaya mudah saya juga perlu menginstal hsoconnect (aplikasi GUI untuk memudahkan setup koneksi). Selain hsoconnect, saya juga perlu menginstal hsolink. Keduanya dapat diambil di sini dan di sini.

tedy@tedy-laptop:~$ sudo dpkg -i hsolink_1.0.118-1_i386.deb
Selecting previously deselected package hsolink.
(Reading database ... 203111 files and directories currently installed.)
Unpacking hsolink (from hsolink_1.0.118-1_i386.deb) ...
Setting up hsolink (1.0.118-1) ...
Post install completed

Processing triggers for man-db ...
tedy@tedy-laptop:~$ sudo dpkg -i hsoconnect-py2.5_1.1.83_all.deb
Selecting previously deselected package hsoconnect-py2.5.
(Reading database ... 203119 files and directories currently installed.)
Unpacking hsoconnect-py2.5 (from hsoconnect-py2.5_1.1.83_all.deb) ...
Setting up hsoconnect-py2.5 (1.1.83) ...
Processing triggers for man-db ...
tedy@tedy-laptop:~$

5. Setelah semua selesai diinstal, baru saya tancapkan modem ke port USB. Jika modem sudah bisa “dipegang” oleh driver hso, di /var/log/messages akan muncul pesan-pesan seperti berikut ini (juga bisa dilihat interface baru /dev/ttyHS0) :

tedy-laptop:/ # tail -f /var/log/messages
Mar 9 21:04:42 tedy-laptop kernel: [14778.280084] usb 4-1: new full speed USB device using uhci_hcd and address 10
Mar 9 21:04:42 tedy-laptop kernel: [14778.446957] usb 4-1: configuration #1 chosen from 1 choice
Mar 9 21:04:42 tedy-laptop kernel: [14778.448977] scsi9 : SCSI emulation for USB Mass Storage devices
Mar 9 21:04:43 tedy-laptop kernel: [14779.750120] usb 4-1: USB disconnect, address 10
Mar 9 21:04:45 tedy-laptop kernel: [14781.280113] usb 4-1: new full speed USB device using uhci_hcd and address 11
Mar 9 21:04:45 tedy-laptop kernel: [14781.446963] usb 4-1: configuration #1 chosen from 1 choice
Mar 9 21:04:45 tedy-laptop kernel: [14781.449891] hso0: Disabled Privacy Extensions
^C
tedy-laptop:/ #
ls -lh /dev/ttyHS*
crw-rw---- 1 root dialout 252, 0 2009-03-09 21:04 /dev/ttyHS0
crw-rw---- 1 root dialout 252, 1 2009-03-09 21:04 /dev/ttyHS1
crw-rw---- 1 root dialout 252, 2 2009-03-09 21:04 /dev/ttyHS2
tedy-laptop:/ #

6. Buka aplikasi  hsoconnect seperti terlihat pada gambar di bawah ini :

7. Saya harus mengatur dulu beberapa parameter Telkomsel Flash. Caranya adalah pada jendela hsoconnect klik Profile, lalu Edit Connection. Telkomsel Flash unlimited menggunakan APN=internet (tanpa username & password). Sementara Telkomsel Flash volume based, APN yang digunakan adalah “flash“. Lihat contohnya di bawah ini.

8. Pada jendela utama hsoconnect klik Connect untuk mulai berinternet :) Saat saya sudah bisa terhubung ke Internet dengan Telkomsel Flash, perintah ifconfig menghasilkan keluaran seperti berikut ini :

tedy-laptop:/ # ifconfig hso0
hso0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:114.121.189.94 P-t-P:114.121.189.94 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1486 Metric:1
RX packets:2 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:10
RX bytes:116 (116.0 B) TX bytes:524 (524.0 B)

Ubuntu saya mendapat IP 114.121.189.94. File /etc/resolv.conf juga sudah ter-update dengan baik (file ini berisi alamat IP DNS server yang dipakai oleh Telkomsel Flash).

tedy-laptop:/ # cat /etc/resolv.conf
#Created by hsolinkcontrol
nameserver 202.3.210.11
nameserver 202.3.208.11
tedy-laptop:/ #

Yup selesai, sekarang bisa internetan dengan modem HSDPA walaupun tidak pakai Windows lagi…lega nya :D Yang masih belum bisa malah bagaimana menyambungkan ponsel Nokia 6585 sebagai modem CDMA :(  Next time deh saya ngoprek lagi.


Soal Tagihan Elektronik


Tadi di meja ruang TV ada beberapa amplop tagihan telepon rekan saya berserakan begitu saja. Ada yang menarik di amplop-amplop itu, informasi soal tagihan telepon via email. Indosat menawarkan bentuk tagihan dalam bentuk email. Hmm…menarik. Sepertinya baru Indosat yang menawarkan layanan seperti ini (CMIWW).

Yang sudah saya ikuti adalah programnya tagihan elektroniknya Citibank. Sejak saya pakai kartu kredit Citibank tahun lalu, praktis saya tidak pernah menerima amplop tagihan Citibank lagi. Tiap bulan Citibank mengirimi saya email berisi tagihan dalam format PDF. Canggih juga file PDF-nya, dilengkapi dengan password. Dengan bentuk PDF seperti itu saya lebih mudah mendokumentasikannya. Kapan pun saya perlu memeriksa tagihan, saya tinggal buka komputer atau cukup memeriksa email.

Bagi saya pribadi memang lebih enak memperoleh tagihan dalam bentuk email. Lebih mudah mengarsipkannya. Di kamar saya ada setumpuk berkas tagihan, mulai dari tagihan Telkom, Speedy, Kartu Halo, sampai amplop-amplop tagihan Indovision. Dulu saya pernah memotret satu-satu dokumen tagihan macam itu, supaya saya punya berkas digitalnya. Tapi itu cuma sebentar, keburu malas dan lupa.

Telkom Speedy juga sebenarnya menyediakan versi digital dari tagihannya. Sayangnya tidak secanggih apa yang sudah dilakukan oleh Citibank. Tagihan online Speedy disimpan dalam webnya Speedy. Tiap kali saya ingin tahu berapa tagihan Speedy saya, saya harus login dulu baru kemudian bisa memeriksa tagihan. Ah cara seperti ini butuh langkah proaktif dari pelanggan. Bagaimana kalau lupa memeriksa. Lain ceritanya kalau tagihan dikirimkan ke email….seolah-olah ada yang mengingatkan. Tagihan dalam bentuk digital mungkin sulit mengalahkan dominasi tagihan dalam format cetak.Banyak alasannya,salah satunya mungkin karena tidak semua orang selalu aktif di depan komputer (tambahan lagi akses internet belum menyentuh semua lapisan masyarakat). Tapi paling tidak dengan adanya layanan digital seperti itu memberikan pilihan bagi orang-orang seperti saya.

Bulan lalu misalnya, saya sempat protes ke Telkomsel karena tagihan saya tidak datang selama 2 bulan. Karena tagihan kartu Halo saya secara otomatis dibayar oleh Citibank, saya lupa kalau 2 bulan terakhir tidak terima berkas tagihan dari Telkomsel. Tahun lalu tagihan selalu dikirimkan ke kantor. Berhubung mulai tahun 2009 saya pindah kantor akhir Desember lalu saya minta Telkomsel mengirimkan tagihannya ke rumah saja. Februari lalu saya sempat kaget melihat jumlah pemakaian kartu Halo saya melejit. Yang membuat saya kaget adalah seingat saya pemakaian telepon saya bulan Januari tidak sebesar itu. Praktis saya jadi ingin tahu detail pemakaian telepon saya di bulan Januari. Ah di situ saya baru ingat kalau saya belum terima berkas tagihan Telkomsel bulan Januari & Februari.

Langsung saya lapor ke customer care-nya Telkomsel (telepon ke 111). Saya ceritakan masalahnya, saya juga sempat minta mereka memeriksa alamat rumah yang sudah saya berikan. Ternyata benar tidak ada yang salah dengan alamat saya. Laporan saya diterima dengan baik dan Telkomsel menjanjikan akan mengirim ulang tagihannya. Keesokan harinya ada yang menelpon saya mengaku dari Telkomsel. Si mbak mengklarifikasi soal mengapa tagihan saya tidak datang selama 2 bulan terakhir. Alasan yang diberikan adalah “Bapak memberikan alamat yang salah”…….wah kontan ini menyulut emosi saya. Bukan karena merasa disalahkan tapi saya emosi karena kalau toh alamat saya salah, mengapa Telkomsel tidak menelepon saya? Entah saya tidak tahu siapa sebenarnya yang mengirimkan tagihan tersebut, Telkomsel sendiri atau pihak kurir-nya Telkomsel. Sebagai customer tentu saya emosi mengapa saya tidak diberi tahu kalau alamat pengiriman tagihan salah. Salah kode pos saja sih….ini juga saya heran, kok bisa-bisanya saya salah memberikan kode pos. Jangan-jangan kalau saya tidak butuh melihat detail tagihan sampai besok-besok tagihan saya tetap tidak datang.

Masalah selesai saat dua tagihan saya (yang sudah basi) datang. Di situ saya baru tahu ternyata pemakaian telepon saya di Singapura bulan Desember lalu baru ditagihkan di bulan Februari. Pantas tagihan Februari jadi melonjak. Hmm enaknya kalau tagihan telepon bisa dikirimkan ke email saya. Sudah saatnya para provider/operator atau apapun itu yang rutin mengirimkan berkas tagihan mulai memikirkan pengiriman berkas tagihan secara elektronik. Menghemat kertas, lebih jauh katanya bisa ikut berpartisipasi mencegah pemanasan global. Bayangkan berapa banyak kertas yang dipakai untuk keperluan cetak tagihan. Ah tapi bagi saya tidak usah bicara muluk-muluk soal global warming, yang jelas tagihan elektronik (paperless) lebih mudah disimpan & didokumentasikan.