Menyambungkan iPhone Ke Speaker Secara Wireless

Apple punya teknologi yang namanya AirPlay. Teknologi ini memungkinkan pengguna gadget Apple untuk memainkan music, memutar video dari gadget-nya ke remote speaker atau remote monitor. Semuanya dilakukan secara tanpa kabel alias nirkabel alias wireless. Syaratnya speaker atau monitor yang dipakai mendukung teknologi AirPlay ini. AppleTV contohnya; Apple TV ini memungkinkan pengguna iPhone/iPad untuk melakukan streaming musik/video yang ada di handsetnya & menampilkannya di AppleTV. Tentu semua perangkat yang terlibat harus terhubung dalam jaringan WiFi yang sama.

Ternyata ada juga aplikasi gratis yang bisa jadi alternatif dari AppleTV. Saya baru coba XBMC. Aplikasi ini bisa dijalankan di berbagai macam platform, Windows, Linux, Mac, Android, bahkan RaspberryPi. Saya coba instal XBMC ini di Mac. Begitu dijalankan aplikasi ini langsung terbuka full screen seperti berikut ini :

20130308-204117.jpg

XBMC berfungsi sebagai media player. Anda bisa menggunakannya untuk menonton film, menyetel musik, menampilkan foto dari harddisk komputer Anda. Bahkan ada pilihan untuk mengakses data dari Windows file sharing melalui menu Samba (SMB).

Untuk mengaktifkan AirPlay, kita perlu masuk ke menu Settings, lalu ke menu Services seperti tampilan di bawah ini :

20130308-204152.jpg

Pada tampilan Services ada pilihan AirPlay, kita perlu mencentang pilihan “Allow XBMC to receive AirPlay content“. Ada juga pilihan untuk memasang password untuk melindungi service AirPlay untuk membatasi user tertentu saja yang bisa mengakses AirPlay.

20130308-204204.jpg

Begitu AirPlay sudah aktif, perangkat seperti iPhone atau iPad yang terhubung dalam jaringan WiFi akan otomatis mendeteksi adanya service AirPlay yang aktif. Tandanya di dekat tombol volume akan muncul ikon segitiga berwarna orange. Misalnya di aplikasi Music pada iPhone seperti tampilan di bawah ini :

20130308-202952.jpg

Bila saya tap ikon tersebut akan muncul XBMC yang sedang running pada Macbook saya.

20130308-203034.jpg

Bila saya tap pada XBMC, musik yang sedang diputar akan muncul suaranya pada speaker Macbook saya. Ajaib, musiknya bisa diputar tanpa terputus-putus meskipun ini dikirimkan lewat jaringan Wi-Fi. Tampilan XBMC di layar Mac juga langsung berubah seperti di bawah ini :

20130308-203423.jpg

Judul lagu, nama album, nama penyanyi, lengkap dengan gambar album juga ikut dikirimkan ke XBMC ini. Saya bisa menghubungkan Macbook dengan speaker home theather. Jadi bila ingin memainkan musik dari iPhone, saya tidak perlu lagi menyambungkan iPhone langsung ke speaker home theather. Cukup Macbook saja yang terhubung ke speaker.

Saya coba juga memutar video yang ada di iPhone. Video  dapat ditayangkan pada XBMC tanpa terputus-putus. Ini alternatif murah daripada membeli speaker lagi yang sudah dilengkapi dengan built-in AirPlay. Juga bisa dipakai untuk memanfaatkan speaker atau home theather yang sudah ada.

Mengaktifkan FTP Server Di Ubuntu Linux

Kemarin ada seorang rekan bertanya caranya mengakses server Linuxnya melalui FTP. Katanya dia sudah coba akses FTP ke servernya (servernya menggunakan Ubuntu kalau tidak salah) tapi mendapat error "Connection refused". Tentu saja langkah pertama yang saya sarankan adalah memeriksa apakah FTP servernya sudah aktif. Apakah port 21 (default port FTP) sudah listen di servernya. Ternyata belum ada FTP server yang aktif.

Secara default Ubuntu tidak menyertakan FTP server dalam paket instalasinya. Wajar bila kita coba FTP ke Ubuntu server akan mendapat gagal dengan pesan "Connection refused" :

ttirtawi@macbook-air:~$ ftp 192.168.10.10
ftp: connect: Connection refused
ftp> bye
ttirtawi@macbook-air:~$ 

Untuk dapat mengakses FTP di Ubuntu, kita perlu menginstal paket FTP server terlebih dulu. Saya biasanya memilih vsftpd untuk keperluan ini.

ttirtawi@gbt733:~$ sudo apt-get install vsftpd
[sudo] password for ttirtawi: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
  vsftpd
0 upgraded, 1 newly installed, 0 to remove and 256 not upgraded.
Need to get 0 B/132 kB of archives.
After this operation, 364 kB of additional disk space will be used.
Preconfiguring packages ...
Selecting previously unselected package vsftpd.
(Reading database ... 190272 files and directories currently installed.)
Unpacking vsftpd (from .../vsftpd_2.3.5-3ubuntu1_i386.deb) ...
Processing triggers for man-db ...
Processing triggers for ureadahead ...
Setting up vsftpd (2.3.5-3ubuntu1) ...
vsftpd start/running, process 7570
Processing triggers for ureadahead ...
ttirtawi@gbt733:~$ 

Setelah paket vsftpd terinstal, aplikasi vsftpd akan otomatis bekerja dan menunggu di port 21 :

ttirtawi@gbt733:~$ netstat -ano | grep :21
tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN      off (0.00/0/0)
ttirtawi@gbt733:~$ 

Setelah itu kita bisa akses servernya via FTP :

ttirtawi@macbook-air:~$ ftp 192.168.10.10
Connected to 192.168.10.10.
220 (vsFTPd 2.3.5)
530 Please login with USER and PASS.
Name (192.168.10.10:ttirtawi): ttirtawi
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> 

Tapi kita belum bisa login ke FTP server sebagai user root :

ttirtawi@macbook-air:~$ ftp 192.168.10.10
Connected to 192.168.10.10.
220 (vsFTPd 2.3.5)
530 Please login with USER and PASS.
Name (192.168.10.10:ttirtawi): root
331 Please specify the password.
Password:
530 Login incorrect.
Login failed.
ftp> 

Meskipun kita sudah login & memasukkan password root yang benar, kita tetap tidak bisa otomatis login sebagai root. Akan selalu muncul pesan error Login incorrect seperti contoh di atas. Secara default, root tidak diperkenankan mengakses FTP server. File /etc/ftpusers mengatur daftar user yang tidak boleh login ke FTP server, termasuk root.

ttirtawi@gbt733:~$ cat /etc/ftpusers 
# /etc/ftpusers: list of users disallowed FTP access. See ftpusers(5).

# root ###### Hapus baris ini atau beri tanda # di awal baris
daemon
bin
sys
sync
games
man
lp
mail
news
uucp
nobody
ttirtawi@gbt733:~$ 

Dengan menghapus user root dari dalam file /etc/ftpusers atau cukup menambahkan tanda # di depan user root, maka root bisa mengakses FTP server.

ttirtawi@macbook-air:~$ ftp 192.168.10.10
Connected to 192.168.10.10.
220 (vsFTPd 2.3.5)
530 Please login with USER and PASS.
Name (192.168.10.10:ttirtawi): root
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> 

Lokasi Parkir

20130305-085029.jpg

Pengelola mal Kota Kasablanca rupanya peduli pada kebiasaan pengunjung yang sering lupa di memarkirkan mobilnya. Di depan lift basement parkir mobil, ada pesan untuk mengingatkan orang untuk mengingat-ingat lokasi parkir mobilnya. Saya yakin pasti banyak juga orang yang kembali menoleh melihat kembali lokasi parkirnya setelah membaca tulisan itu.

Saya pernah lihat juga di tempat lain, orang sengaja memotret nomor lokasi parkir. Jaman ponsel berkamera sekarang, makin gampang orang mengingat-ingat suatu lokasi. Asal jangan ponsel kehabisan batere saat kebingungan mencari mobilnya di parkiran 🙂 .

Router & Bandwidth Control Dengan Raspberry Pi

Akhirnya saya berhasil memanfaatkan RaspberryPi menjadi router dengan kemampuan mengatur kuota bandwidth internet. Saya ikuti beberapa petunjuk dari sumber-sumber berikut ini :

Susunan jaringannya menjadi seperti ini :

20130303-215947.jpg

  • Port Ethernet bawaan RaspberryPi (eth0) menjadi port WAN yang terhubung langsung dengan modem internet.
  • Adapter USB Ethernet (eth1) menjadi port LAN yang terhubung ke switch.
  • WiFi TP-Link tidak lagi dipakai sebagai DHCP server. Port WANnya pun tidak dipakai. Hanya difungsikan sebagai access-point. Client mendapat IP address dari Raspberry. Karena Wi-Fi ini menggunakan DD-WRT sebagai sistem operasinya, saya harus mematikan DHCP server & memilih untuk menggunakan DHCP Forwarder.

Ini adalah konfigurasi IP di RaspberryPi.

root@raspberrypi:~# cat /etc/network/interfaces 
auto lo

iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet static
    address 192.168.10.1
    netmask 255.255.255.0
    network 192.168.10.0
    broadcast 192.168.10.255
    dns-nameservers 192.168.10.1
root@raspberrypi:~#

Port eth0 diset menggunakan IP dinamis, IPnya didapat dari modem FirstMedia. Sementara port eth1 adalah port LAN sehingga menggunakan IP statis.

Untuk menjadikan Raspberry sebagai DHCP server di jaringan lokal saya perlu paket dnsmasq.

root@raspberrypi:~# apt-get install dnsmasq

Konfigurasi dnsmasq sangat simpel seperti berikut ini :

root@raspberrypi:~# cat /etc/dnsmasq.conf 
interface=eth1
dhcp-range=192.168.10.50,192.168.10.150,255.255.255.0,12h
root@raspberrypi:~# 

Saya hanya perlu mencantumkan di interface mana DHCP server akan beroperasi, tentu ini interface yang terhubung ke LAN. Dan satu lagi opsi yang dhcp-range, opsi ini mendefinisikan alamat IP mana saja yang disediakan oleh DHCP server. Sebenarnya masih banyak opsi yang bisa dipakai oleh dnsmasq, tapi untuk keperluan test ini hanya itu yang saya perlukan.

Proses routing dijalankan oleh perintah iptables. Di website Debian Administrator sudah ada contoh script yang memanfaatkan iptables sebagai router & juga sebagai firewall.

root@raspberrypi:~# cat /etc/network/if-up.d/router 
#!/bin/sh

PATH=/usr/sbin:/sbin:/bin:/usr/bin

# Notes : eth0 = WAN port / internet
#         eth1 = LAN port
#
# delete all existing rules.
#
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X

# Always accept loopback traffic
iptables -A INPUT -i lo -j ACCEPT

# Allow established connections, and those not coming from the outside
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state NEW ! -i eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT

# Allow outgoing connections from the LAN side.
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

# Masquerade.
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# Don't forward from the outside to the inside.
iptables -A FORWARD -i eth0 -o eth0 -j REJECT

# Enable routing.
echo 1 > /proc/sys/net/ipv4/ip_forward
root@raspberrypi:~#

Sementara untuk mengatur alokasi bandwidth aplikasi yang dipakai adalah tc. Konsep yang diterapkan untuk mengatur alokasi bandwidth ini adalah HTB (Hierarchical Token Bucket). Pengaturan bandwidth dilakukan dalam sistem hirarki. Saya contoh apa yang dijelaskan di web ini. Ada beberapa modifikasi yang saya tambahkan. Di web tadi hanya kecepatan download yang dibatasi. Ternyata untuk membatasi kecepatan upload, saya perlu tambahkan rule lain di port WANnya (dalam contoh kasus saya di port eth0).

root@raspberrypi:~# cat /etc/network/if-up.d/tcscript 
#!/bin/bash

# DOWNLOAD LIMIT
tc qdisc add dev eth1 root handle 1:0 htb default 10
tc class add dev eth1 parent 1:0 classid 1:10 htb rate 256kbit ceil 256kbit prio 0
tc class add dev eth1 parent 1:1 classid 1:5 htb rate 4864kbit ceil 4864kbit prio 1
tc filter add dev eth1 parent 1:0 prio 1 handle 5 fw flowid 1:5

# UPLOAD LIMIT
tc qdisc add dev eth0 root handle 1:0 htb default 10
tc class add dev eth0 parent 1:0 classid 1:10 htb rate 128kbit ceil 128kbit prio 0
tc class add dev eth0 parent 1:1 classid 1:5 htb rate 4864kbit ceil 4864kbit prio 1
tc filter add dev eth0 parent 1:0 prio 1 handle 5 fw flowid 1:5

iptables -t mangle -N shaper-out
iptables -t mangle -N shaper-in

iptables -t mangle -I POSTROUTING -o eth1 -j shaper-in
iptables -t mangle -I PREROUTING -i eth1 -j shaper-out
iptables -t mangle -I PREROUTING -i eth0 -j shaper-in
iptables -t mangle -I POSTROUTING -o eth0 -j shaper-out

iptables -t mangle -A shaper-out -s 192.168.10.0/24 -j MARK --set-mark 1
iptables -t mangle -A shaper-in -d 192.168.10.0/24 -j MARK --set-mark 1

iptables -t mangle -A shaper-out -s 192.168.10.129 -j MARK --set-mark 5
iptables -t mangle -A shaper-in -d 192.168.10.129 -j MARK --set-mark 5
root@raspberrypi:~#

Di contoh script di atas, saya buat skenario sederhana yaitu hanya IP 192.168.10.129 (IP Macbook) yang diberi akses untuk menggunakan bandwidth sampai maksimum (4-5MB).

20130303-234031.jpg

Sementara semua client lain dalam jaringan 192.168.10.0/24 hanya bisa mendapat kecepatan download 256Kbps & kecepatan upload 128Kbps. Ternyata berhasil, dan ini contohnya hasil testing dengan iPhone :

20130303-233616.jpg

Kira-kira begitu pemanfaatan Raspberry Pi untuk mengontrol pemakaian bandwidth dalam jaringan. Masih banyak yang bisa dibahas dari topik ini. Mungkin nanti saya tuliskan lagi di tulisan-tulisan berikutnya.

Rangkaian Kereta Dorong

20130302-212636.jpg

Apa yang terlintas di benak Anda bila melihat deretan kereta belanja seperti foto di atas? Tiap kali melihat deretan kereta dorong (troli) yang tersusun seperti itu, yang terlintas dalam benak saya adalah film The Terminal.

Di film tersebut Tom Hank berperan sebagai seorang turis yang terjebak di bandara JFK New York. Tokohnya bernama Viktor Navorski. Negaranya dilanda kudeta sehingga paspornya tidak diterima oleh imigrasi Amerika. Untuk kembali ke negaranya pun tidak mungkin karena negaranya sedang dalam kondisi perang.

Nah karena kebingungan berada di terminal bandara dan tidak punya uang untuk bertahan hidup, muncul idenya untuk mengumpulkan kereta dorong di bandara. Di bandara sana rupanya tiap kali seorang penumpang pesawat ingin menggunakan kereta dorong mereka harus memasukkan uang koin sebagai deposit. Uang tersebut bisa diambil kembali bila mereka mengembalikan kereta tersebut ke tempatnya setelah selesai digunakan. Ada mesin koin di tempat pengembalian kereta.

Viktor secara jenius menangkap peluang untuk mengumpulkan uang. Dia kembalikan kereta-kereta dorong yang ditinggalkan begitu saja oleh para penumpang. Lalu dia kembalikan ke mesin deposit. Sen demi sen dikumpulkan dari setiap kereta yang dikembalikannya. Sampai akhirnya dia bisa mengumpulkan banyak sekali kereta, disusun banyak sekali dalam 1 rangkaian lalu didorongnya sampai ke tempat pengembalian kereta. Makin banyak kereta yang dikembalikan, makin banyak koin yang keluar dari mesinnya.

Ya memang kereta dorong di film The Terminal berbeda dengan kereta belanja di Carrefour tadi. Tapi entahlah itu yang terpikir di benak saya bila melihat rangkaian kereta dorong yang disusun berangkai seperti itu.