Setup Wi-Fi Ubuntu Dari Command Line

Di Linux desktop yang sudah memiliki Network Manager, mengatur koneksi wireless tidak terlalu sulit. GUI untuk wireless sudah cukup mudah untuk dipakai. Tapi bagaimana bila saya tidak punya tampilan GUI hanya console terminal saja? Saya belum pernah sebelumnya mengatur koneksi wireless tanpa bantuan Network Manager. Tadi saya belajar cara mengatur koneksi WiFi di Ubuntu 12.04 lewat command line. Tentu saja saya harus mematikan Network Manager (menu GUI) terlebih dulu.

root@x220:~# /etc/init.d/network-manager stop

Bila access point yang dipakai menggunakan autentikasi (WPA,WPA2) maka untuk mengatur koneksi wireless-nya kita perlu aplikasi wpa_supplicant. Install dulu dengan perintah berikut :

root@x220:~# apt-get install wpasupplicant
root@x220:~# dpkg -l | grep wpasupplicant
ii  wpasupplicant                             0.7.3-6ubuntu2                          client support for WPA and WPA2 (IEEE 802.11i)
root@x220:~#

Di laptop saya wireless adapter-nya dikenali sebagai wlan0, maka saya perlu mendaftarkannya dulu ke dalam file /etc/network/interfaces :

root@x220:~# cat /etc/network/interfaces 
auto lo
iface lo inet loopback

auto wlan0
	iface wlan0 inet dhcp
	wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

root@x220:~#

Untuk masalah autentikasi password, saya perlu mengatur file wpa_supplicant.conf seperti berikut ini :

root@x220:~# cat /etc/wpa_supplicant/wpa_supplicant.conf 
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=root
network={
        ssid="GBT733"
        scan_ssid=1
        proto=WPA RSN
        key_mgmt=WPA-PSK
        pairwise=CCMP TKIP
        group=CCMP TKIP
        psk=da5d79195468cf3f7cb498731beac2136e8b9fccd11d90182a8d668ddbd660bb
}
root@x220:~#

Beberapa detil yang perlu dipahami dari konfigurasi di atas adalah :

  • ssid : nama access point.
  • proto : tipe wireless security yang dipakai oleh access point. Bisa WPA (Wi-Fi Protected Access) atau RSN (Robust Security Network). RSN ini juga dikenal sebagai WPA2 (Wi-Fi Protected Access II).
  • key_mgmt : menentukan tipe enkripsi dari wireless password-nya. WPA-PSK (WPA Pre-shared Key). Kenapa WPA-PSK karena access point saya menggunakan mode sekuriti WPA2-Personal.
  • pairwise & group : mengatur tipe algoritma enkripsi dari password Wi-Fi.
  • psk : pre shared key hasil enkripsi dari ASCII password

PSK didapat dari hasil enkripsi password Wi-Fi yang berupa text (password Wi-Fi yang kita kenal sehari-hari). Misalnya access point saya menggunakan nama SSID GBT733 dan password-nya adalah ‘testingpassword‘, untuk mendapat WPA PSK saya gunakan perintah berikut ini :

root@x220:~# wpa_passphrase GBT733 testingpassword
network={
	ssid="GBT733"
	#psk="testingpassword"
	psk=da5d79195468cf3f7cb498731beac2136e8b9fccd11d90182a8d668ddbd660bb
}
root@x220:~#

Setelah semua sudah diset, tinggal restart network service-nya dengan perintah :

root@x220:~# /etc/init.d/networking restart
 * Running /etc/init.d/networking restart is deprecated because it may not enable again some interfaces
 * Reconfiguring network interfaces...                                                                                                                                                           ssh stop/waiting
ssh start/running, process 13925
                                                                                                                                                                                          [ OK ]
root@x220:~# 

Di syslog saya bisa lihat DHCP client mencoba mengakses access point & meminta IP address :

root@x220:~# tail -f /var/log/messages
Feb 26 10:53:27 x220 kernel: [273753.765617] iwlwifi 0000:03:00.0: L1 Enabled; Disabling L0S
Feb 26 10:53:27 x220 kernel: [273753.765806] iwlwifi 0000:03:00.0: Radio type=0x1-0x2-0x0
Feb 26 10:53:27 x220 kernel: [273753.894034] ADDRCONF(NETDEV_UP): wlan0: link is not ready
Feb 26 10:53:27 x220 dhclient: DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 3
Feb 26 10:53:30 x220 dhclient: DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 4
Feb 26 10:53:31 x220 wpa_supplicant[13818]: Trying to authenticate with 90:f6:52:43:82:44 (SSID='GBT733' freq=2437 MHz)
Feb 26 10:53:31 x220 wpa_supplicant[13818]: Trying to associate with 90:f6:52:43:82:44 (SSID='GBT733' freq=2437 MHz)
Feb 26 10:53:31 x220 kernel: [273757.284480] wlan0: authenticate with 90:f6:52:43:82:44 (try 1)
Feb 26 10:53:31 x220 kernel: [273757.287179] wlan0: authenticated
Feb 26 10:53:31 x220 kernel: [273757.287454] wlan0: associate with 90:f6:52:43:82:44 (try 1)
Feb 26 10:53:31 x220 kernel: [273757.291546] wlan0: RX AssocResp from 90:f6:52:43:82:44 (capab=0x431 status=0 aid=2)
Feb 26 10:53:31 x220 kernel: [273757.291550] wlan0: associated
Feb 26 10:53:31 x220 wpa_supplicant[13818]: Associated with 90:f6:52:43:82:44
Feb 26 10:53:31 x220 kernel: [273757.299586] ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
Feb 26 10:53:31 x220 wpa_supplicant[13818]: WPA: Key negotiation completed with 90:f6:52:43:82:44 [PTK=CCMP GTK=TKIP]
Feb 26 10:53:31 x220 wpa_supplicant[13818]: CTRL-EVENT-CONNECTED - Connection to 90:f6:52:43:82:44 completed (auth) [id=0 id_str=]
Feb 26 10:53:31 x220 kernel: [273757.358903] wlan0: Wrong control channel in association response: configured center-freq: 2437 hti-cfreq: 2417  hti->control_chan: 2 band: 0.  Disabling HT.
Feb 26 10:53:34 x220 dhclient: DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 9
Feb 26 10:53:34 x220 dhclient: DHCPREQUEST of 192.168.1.112 on wlan0 to 255.255.255.255 port 67
Feb 26 10:53:34 x220 dhclient: DHCPOFFER of 192.168.1.112 from 192.168.1.1
Feb 26 10:53:34 x220 dhclient: DHCPACK of 192.168.1.112 from 192.168.1.1
Feb 26 10:53:34 x220 dhclient: bound to 192.168.1.112 -- renewal in 36185 seconds.

Terlihat proses autentikasi sukses & wireless adapter saya mendapat IP 192.168.1.112.

root@x220:~# ifconfig wlan0
wlan0     Link encap:Ethernet  HWaddr 10:0b:a9:a1:f5:b8  
          inet addr:192.168.1.112  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::120b:a9ff:fea1:f5b8/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:556117 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1859518 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:96155942 (96.1 MB)  TX bytes:2764438662 (2.7 GB)

root@x220:~# 

Set IP Statik Raspberry Pi

20130215-232649.jpg

Karena Raspberry Pi ini menggunakan OS Raspbian yang notabene adalah Debian Wheezy, cara set IP statiknya pun sama persis seperti Debian (sama juga seperti Ubuntu). Tinggal daftarkan IP statiknya di file /etc/network/interface lalu restart Raspberry-nya.

ttirtawi@raspberrypi:~$ cat /etc/network/interfaces
auto lo

iface lo inet loopback

allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf

iface eth0 inet static
address 192.168.1.101
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
dns-nameservers 192.168.1.1

ttirtawi@raspberrypi:~$

Setelah direstart Raspberry ini akan langsung menggunakan IP statik tersebut :

ttirtawi@raspberrypi:~$ ifconfig eth0
eth0      Link encap:Ethernet  HWaddr b8:27:eb:45:7b:e2  
          inet addr:192.168.1.101  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:610 errors:0 dropped:0 overruns:0 frame:0
          TX packets:303 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:70466 (68.8 KiB)  TX bytes:39427 (38.5 KiB)

ttirtawi@raspberrypi:~$ 

Cara Praktis Scanning IP

Setelah main-main dengan RaspberryPi beberapa hari lalu, saya matikan komputer kecil itu sementara waktu. Sampai malam ini saya coba hidupkan kembali tanpa menggunakan monitor, keyboard, dan mouse. Hanya kabel LAN yang tersambung. Terakhir saya hidupkan RaspberryPi ini saya belum sempat memberinya IP statis. Sedikit agak konyol memang. Raspberry masih menggunakan DHCP; tanpa mouse/keyboard, monitor bagaimana saya bisa tahu alamat IP yang sekarang digunakan oleh si Raspberry?

raspberry headless

Karena malas menyambungkannya ke monitor, saya pilih cara gampang dengan lakukan scanning IP di LAN. Cara sederhana dengan bantuan program nmap.

ttirtawi@macbook-air:~$ sudo nmap -sP 192.168.1.0/24
Password:

Starting Nmap 6.01 ( http://nmap.org ) at 2013-02-15 22:33 WIT
...
...
Nmap scan report for raspberrypi (192.168.1.131)
Host is up (0.0065s latency).
MAC Address: B8:27:EB:45:7B:E2 (Raspberry Pi Foundation)
...
...
Nmap done: 256 IP addresses (9 hosts up) scanned in 2.65 seconds
ttirtawi@macbook-air:~$

nmap (dengan opsi -sP) akan memeriksa semua host yang aktif di jaringan 192.168.1.0/24. Penggunaan sederhana dari perintah nmap bisa membantu saya menemukan IP yang dipakai oleh Raspberry saat ini, ternyata dia menggunakan IP 192.168.1.131. Saatnya memberi IP statis untuk Raspberry Pi ini supaya tidak “hilang” lagi.

UPDATE:

nmap di MacOSX tersedia di MacPorts :

ttirtawi@macbook-air:~$ port search nmap | head
Warning: port definitions are more than two weeks old, consider using selfupdate
nmap @6.01 (net)
Port scanning utility for large networks

p5-nmap-scanner @1.0.0 (perl)
Perform and manipulate nmap scans using perl

p5.8-nmap-scanner @1.0.0 (perl)
Perform and manipulate nmap scans using perl

p5.10-nmap-scanner @1.0.0 (perl)
ttirtawi@macbook-air:~$

Sementara di Ubuntu/Debian, nmap tersedia di main repository :

ttirtawi@x220:~$ apt-cache search nmap | grep ^nmap
nmap - The Network Mapper
nmapsi4 - graphical interface to nmap, the network scanner
ttirtawi@x220:~$ 

Mencoba Raspberry Pi

Raspberry Pi adalah sebuah komputer mungil komplit dengan CPU & memori. Sepintas terlihat seperti sebuah PCB biasa. Karena ukurannya yang kecil, komputer ini dijual dalam kemasan yang mirip kotak kartu nama.

20130211-151332.jpg

Sebagai perbandingan ini foto Raspberry Pi dijajarkan dengan Blackberry 9320. Cukup kecil untuk ukuran sebuah komputer mini. Harga Raspberry Pi ini adalah Rp400.000,-.

20130211-151059.jpg

Untuk sumber dayanya, Raspberry Pi menyediakan konektor micro USB. Konektor ini sama seperti yang lazim dipakai di ponsel. Sayangnya adapter power tidak disertakan dalam paket penjualan Raspberry Pi. Harga adapter USBnya Rp50,000.

20130211-162512.jpg

Berikut tampak atas dari Raspberry PI.

20130211-150612.jpg

Tampak bawah dari Raspberry ini seperti berikut ini :

20130211-150620.jpg

Bagian yang berwarna hitam itu adalah slot untuk memasukkan SD Card. Raspberry PI menggunakan SD Card sebagai pengganti harddisk.

Untuk menghubungkan keyboard & mouse, saya menggunakan 2 konektor USB yang tersedia. Raspberry Pi ini juga menyediakan 1 buah konektor LAN (Ethernet) sehingga saya bisa menyambungkannya ke switch dengan kabel UTP.

20130211-150634.jpg

Karena memiliki konektor HDMI, Raspberry ini bisa juga disambungkan ke LCD TV yang memiliki konektor HDMI.

20130211-150644.jpg

Selain konektor HDMI, Raspberry Pi jug menyediakan konektor video analog/RCA (di bagian yang berwarna kuning). Selain itu juga tersedia sebuah konektor audio 3,5 mm.

Saya juga beli casing untuk Raspberry Pi ini. Casing-nya ada yang berwarna hitam, putih, dan transparan; saya pilih yang transparan.

20130211-151345.jpg

Setelah dipasang ke dalam casing, tampilannya seperti berikut ini :

20130211-150553.jpg

Ada beberapa pilihan sistem operasi yang bisa dipasang pada Raspberry Pi ini. Untuk test awal saya pilih Raspbian. Raspbian ini pada dasarnya adalah Debian Wheezy yang sudah di-compile ulang supaya bisa bekerja dengan prosesor ARM; saya download image Raspbian dari sini.

20130211-150457.jpg

Saya perlu menggunakan perintah dd pada terminal untuk menyalin image Raspbian ke dalam SD Card.

ttirtawi@macbook-air:~$ df -h
Filesystem      Size   Used  Avail Capacity  iused   ifree %iused  Mounted on
/dev/disk0s2   112Gi  101Gi   11Gi    91% 26581510 2830858   90%   /
devfs          185Ki  185Ki    0Bi   100%      639       0  100%   /dev
map -hosts       0Bi    0Bi    0Bi   100%        0       0  100%   /net
map auto_home    0Bi    0Bi    0Bi   100%        0       0  100%   /home
/dev/disk1s1   3.7Gi  800Ki  3.7Gi     1%        0       0  100%   /Volumes/UNTITLED 1
ttirtawi@macbook-air:~$ sudo diskutil unmount /dev/disk1s1 
Password:
Volume UNTITLED 1 on disk1s1 unmounted
ttirtawi@macbook-air:~$ sudo dd bs=1m if=2012-12-16-wheezy-raspbian.img of=/dev/rdisk1
1850+0 records in
1850+0 records out
1939865600 bytes transferred in 220.246458 secs (8807704 bytes/sec)
ttirtawi@macbook-air:~$ ls -tlrh 2012-12-16-wheezy-raspbian.img 
-rw-r--r--@ 1 ttirtawi  staff   1.8G Dec 17 02:52 2012-12-16-wheezy-raspbian.img
ttirtawi@macbook-air:~$

Karena tidak punya tombol ON/OFF, begitu disambungkan dengan charger-nya Raspberry Pi ini langsung booting. Pertama kali booting akan muncul menu seperti ini :

20130211-150447.jpg

Ada beberapa pilihan yang bisa dilakukan seperti mengatur tipe keyboard, mengatur time zone, mengaktifkan SSH server, dsb. Setelah selesai proses booting bisa dilanjutkan sampai muncul tampilan desktop seperti berikut ini :

raspberry

Raspbian menggunakan LXDE sebagai desktop environment-nya. Tidak seperti Debian (atau Ubuntu) yang secara default menggunakan Gnome, Raspberry menggunakan LXDE karena LXDE relatif sangat ringan & bisa bekerja di perangkat yang minimalis. Waktu saya coba desktop-nya relatif lambat, mungkin faktor SD Card yang kurang bagus sehingga proses read/write-nya agak terhambat. Nanti saya perlu coba lagi dengan SD Card yang lebih tinggi kecepatan baca-tulisnya.

Berikut informasi hardware dari Raspberry Pi ini :

pi@raspberrypi ~ $ uname -a
Linux raspberrypi 3.2.27+ #250 PREEMPT Thu Oct 18 19:03:02 BST 2012 armv6l GNU/Linux
pi@raspberrypi ~ $ 
pi@raspberrypi ~ $ sudo lshw 
raspberrypi               
    description: Computer
    width: 32 bits
  *-core
       description: Motherboard
       physical id: 0
     *-memory
          description: System memory
          physical id: 0
          size: 438MiB
     *-cpu
          physical id: 1
          bus info: cpu@0
          size: 700MHz
          capacity: 700MHz
          capabilities: cpufreq
  *-network
       description: Ethernet interface
       physical id: 1
       logical name: eth0
       serial: b8:27:eb:45:7b:e2
       size: 100Mbit/s
       capacity: 100Mbit/s
       capabilities: ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd autonegotiation
       configuration: autonegotiation=on broadcast=yes driver=smsc95xx driverversion=22-Aug-2005 duplex=full firmware=smsc95xx USB 2.0 Ethernet ip=192.168.1.118 link=yes multicast=yes port=MII speed=100Mbit/s
pi@raspberrypi ~ $ 

Membuat Live Streaming MP3

Masih menyambung tulisan sebelumnya tentang Evolusi Radio, saya penasaran bagaimana sih caranya membuat livestreaming via internet. Banyak juga tulisan di internet yang membahas tentang cara menginstal aplikasi yang bisa menyediakan streaming musik. Saya coba satu dari web ini. Saya coba install di Ubuntu server (dan di salah satu virtual machine laptop yang menggunakan Linux Mint 13).

Singkatnya membuat aplikasi streaming ini ada 2 aplikasi yang harus diinstal:

  • Aplikasi yang melakukan siaran (broadcasting)
  • Aplikasi yang memainkan musik atau menyuplai konten siaran (lewat microphone misalnya)

Seperti petunjuk yang saya baca, setidaknya ada 2 paket yang harus diinstall yaitu icecast2 (sebagai broadcaster) dan ezstream untuk memainkan musiknya :

ttirtawi@mint13 ~ $ dpkg -l | egrep "ezstream|icecast"
ii  ezstream                               0.5.6~dfsg-1                            easy media streaming client over icecast servers
ii  icecast2                               2.3.2-9ubuntu1                          streaming media server
ttirtawi@mint13 ~ $

Karena Linux Mint & Ubuntu menggunakan manajemen paket yang sama, cara instalnya sama juga :

ttirtawi@mint13 ~ $ sudo apt-get install ezstream icecast

Yang perlu diset kemudian adalah password, hostname, dan port di mana aplikasi icecast2 akan berjalan. Semuanya ada di file /etc/icecast2/icecast.xml

icecast

Lalu berikutnya saya jalankan icecast2 dengan perintah :

ttirtawi@mint13 ~ $ sudo /etc/init.d/icecast2 start
Starting icecast2: Starting icecast2
Detaching from the console
icecast2.
ttirtawi@mint13 ~ $

Berikutnya saya cek apakah bener icecast2 sudah LISTEN di port 8100 :

ttirtawi@mint13 ~ $ netstat -ano  | grep 8100
tcp        0      0 0.0.0.0:8100            0.0.0.0:*               LISTEN      off (0.00/0/0)
unix  2      [ ACC ]     STREAM     LISTENING     11291    /home/ttirtawi/.pulse/0c1857bc46557b6ad5bb06f800000003-runtime/native
unix  3      [ ]         STREAM     CONNECTED     12584    /home/ttirtawi/.pulse/0c1857bc46557b6ad5bb06f800000003-runtime/native
unix  3      [ ]         STREAM     CONNECTED     11331    /home/ttirtawi/.pulse/0c1857bc46557b6ad5bb06f800000003-runtime/native
ttirtawi@mint13 ~ $

Berikutnya saya menyiapkan file konfigurasi ezstream seperti berikut ini :

ezstream

File /home/ttirtawi/playlist2.txt berisi daftar file MP3 yang akan dimainkan oleh ezstream :

ttirtawi@mint13 ~ $ cat playlist2.txt  | head -10
/mnt/hgfs/MUSIC/Jazz For Romantic Moments/01 - Peppi Kamadhatu - Can't Smile Without You.mp3
/mnt/hgfs/MUSIC/Jazz For Romantic Moments/02 - Olive - L.O.V.E.mp3
/mnt/hgfs/MUSIC/Jazz For Romantic Moments/03 - Tata - When Will I See You Again.mp3
/mnt/hgfs/MUSIC/Jazz For Romantic Moments/04 - Otrie B - Jeremy M Quartet - Smoke Gets In Your Eyes.mp3
/mnt/hgfs/MUSIC/Jazz For Romantic Moments/05 - Peppi Kamadhatu - Love Is A Many Splendored Thing.mp3
/mnt/hgfs/MUSIC/Jazz For Romantic Moments/06 - Otrie B - Jeremy M Quartet - For Sentimental Reasons.mp3
/mnt/hgfs/MUSIC/Jazz For Romantic Moments/07 - Tata - Kiss Of Life.mp3
/mnt/hgfs/MUSIC/Jazz For Romantic Moments/08 - Jeremy Monteiro Trio - Stardust.mp3
/mnt/hgfs/MUSIC/Jazz For Romantic Moments/09 - Jeremy Monteiro - I'm Confessin' That I Love You.mp3
/mnt/hgfs/MUSIC/Jazz For Romantic Moments/10 - Jeremy Monteiro Trio - Your Eyes.mp3
ttirtawi@mint13 ~ $

Ready, lalu saya jalankan ezstream dengan perintah berikut ini :

ttirtawi@mint13 ~ $ ezstream -c ezstream.xml 
ezstream: Connected to http://localhost:8100/stream.mp3
ezstream: Streaming ``Peppi Kamadhatu - Can't Smile Without You''

Selesai, saya coba dengan aplikasi Tune-In di iPhone & seperti ini tampilannya :

20130114-001010.jpg