Feeds:
Pos
Komentar

Archive for the ‘bagi ilmu’ Category

hari ini saya diminta tolong oleh rekan kerja saya untuk melakukan konversi berkas rekaman CCTV yang menggunakan berkas DV4. setelah saya coba cari menggunakan google serta mencoba-coba sendiri, tampaknya ffmpeg (sekarang diubah namanya menjadi avconv) maupun handbrake tidak mampu melakukan konversi/transcoding, padahal berkas yang sama bisa dimainkan dengan media player classic di windows.

hasil dari mediainfo menyatakan bahwa berkas tersebut menggunakan format AVC:

mediainfo DV4

percobaan transcoding menggunakan ffmpeg maupun handbrake menghasilkan berkas yang terlalu kecil. hasil pencarian google juga tidak menunjukkan hal yang jelas, dan karena sudah menjelang pulang kantor, akhirnya saya putuskan untuk menggunakan aplikasi windows (gratis) yang bernama Super®.

super

tujuan saya menggunakan Super® adalah melakukan konversi berkas DV4 ke dalam format yang lebih mudah ditangani, dalam hal ini saya memilih MP4. dengan memilih Output Container MP4 lalu centang Stream Copy agak tidak perlu melakukan transcoding atas format yang pada dasarnya sudah AVC, Super® menghasilkan berkas MP4 yang lebih mudah saya kelola dengan default framerate 25 FPS.

Screen Shot 2013-05-31 at 5.31.55 PM

sekarang saya bisa langsung menggunakan ffmpeg/avconv untuk memotong-motong video (misalnya mulai dari menit 12 detik 49 selama 3 menit: ffmpeg -i input.mp4 -ss 00:12:49 -t 00:03:00 output.mp4), dan menggunakan mmg dari paket mkvtoolnix untuk melakukan penggabungan video sekaligus mengubah framerate sesuai dengan hasil rekaman asli CCTV tadi, setelah saya coba-coba angka yang cocok adalah 10 FPS.

Screen Shot 2013-05-31 at 5.44.45 PM

dari hasil penggabungan itu didapatkan berkas mkv (matroska), yang kemudian saya konversi kembali ke mp4: ffmpeg -i input.mkv -vcodec copy output.mp4. voila! berkas DV4 berhasil saya ubah ke MP4 tanpa sekalipun melakukan transcoding yang memakan waktu, sehingga semua proses di atas bisa dilakukan dengan cepat, dan semuanya menggunakan aplikasi non komersial alias tidak berbayar. anyway, di bawah adalah hasil videonya, rekaman pasangan maling yang menyaru seolah-olah calon penyewa apartemen rekan kantor namun lalu mencuri isi apartemen seperti TV, tabung gas, peralatan makan dan lain-lain.

Iklan

Read Full Post »

saya punya 3 mesin ubuntu yang headless, alias tidak terpasang monitor dan bahkan papan ketik ataupun tetikus. ketiga mesin ini tersebar di tiga tempat yang berbeda, dan saya ingin agar jika mesin tersebut melakukan shutdown atau restart, saya diberitahukan melalui mail. untuk kepentingan mengirimkan mail, dulu saya menggunakan nullmailer dengan relay gmail, namun sejak gmail mewajibkan menggunakan TLS, nullmailer tidak bisa dipergunakan lagi.

agar bisa memanfaatkan gmail sebagai relay, maka saya akan menggunakan dovecot-postfix:

sudo aptitude -y install dovecot-postfix

setelah itu akan muncul layar setting:

Screen Shot 2012-12-10 at 11.59.54 AM

karena saya hanya ingin mengirim mail keluar dan bukan menerima mail, saya pilih Satellite system:

Screen Shot 2012-12-10 at 12.01.05 PM

berikutnya isikan nama FQDN (Fully Qualified Domain Name) dari mesin, sesuaikan dengan nama mesin dan di mana jaringan anda berada:

Screen Shot 2012-12-10 at 12.07.30 PM

isikan smtp.gmail.com:587 sebagai SMTP relay host:

Screen Shot 2012-12-10 at 12.09.56 PM

isikan alamat mail yang akan menerima mail untuk root dan postmaster:

Screen Shot 2012-12-10 at 12.12.57 PM

isikan nama mesin/domain yang akan diterima oleh mesin ini sebagai tujuan akhir:

Screen Shot 2012-12-10 at 12.14.32 PM

synchronous updates biarkan pada kondisi default:

Screen Shot 2012-12-10 at 12.17.10 PM

karena hanya akan digunakan untuk mengirimkan mail dari mesin itu sendiri, untuk isian network blocks biarkan dalam kondisi default, dengan demikian mesin tersebut tidak akan melakukan relay mail dari mesin lain:

Screen Shot 2012-12-10 at 12.18.33 PM

batas berkas mailbox saya biarkan dalam kondisi default alias no limit:

Screen Shot 2012-12-10 at 12.21.49 PM

local address extension biarkan dalam kondisi default:

Screen Shot 2012-12-10 at 12.23.09 PM

biarkan dalam kondisi default untuk protokol internet yang akan digunakan:

Screen Shot 2012-12-10 at 12.24.42 PM

selesai sudah proses dpkg-reconfigure. sekarang sunting berkas /etc/postfix/main.cf:

sudo nano /etc/postfix/main.cf

lalu tambahkan baris-baris berikut ini:

smtp_tls_loglevel=1
smtp_tls_security_level=encrypt
smtp_sasl_auth_enable=yes
smtp_sasl_password_maps=hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous

sekarang menambahkan informasi akun gmail yang akan digunakan untuk melakukan relay:

sudo nano /etc/postfix/sasl_passwd

formatnya adalah nama.server:port alamat@mail:password:

smtp.gmail.com:587 nama.akun@gmail.com:password

lakukan hashing terhadap berkas tadi:

sudo postmap /etc/postfix/sasl_passwd

lalu demi keamanan anda bisa menghapus berkas teks sasl_passwd tadi. sekarang cek /etc/aliases, apakah akun postmaster dan root sudah benar aliasnya. kalau belum, silakan sunting lalu perbaiki, lalu jalankan perintah:

sudo newaliases
sudo service postfix reload

sekarang tes apakah sudah bisa mengirimkan mail atau belum:

echo "ini tes kirim mail" | mail -s "testing" root

jika semua setting sudah benar, maka anda akan menerima mail pada akun mail yang sudah didefinisikan dalam /etc/aliases tadi.
sekarang membuat script untuk mengirimkan mail saat shutdown dan reboot:

sudo nano /etc/init.d/SystemEmail

isikan berkas tersebut dengan baris-baris berikut ini:

#!/bin/sh
### BEGIN INIT INFO
# Provides: SystemEmail
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Send email
# Description: Sends an email at system start and shutdown
### END INIT INFO
EMAIL="root"
RESTARTSUBJECT="["`hostname`" "`date`"] – System Startup"
SHUTDOWNSUBJECT="["`hostname`" "`date`"] – System Shutdown"
RESTARTBODY="This is an automated message to notify you that "`hostname`" started successfully. Start up Date and Time: "`date`
SHUTDOWNBODY="This is an automated message to notify you that "`hostname`" is shutting down. Shutdown Date and Time: "`date`
LOCKFILE=/var/lock/SystemEmail
RETVAL=0
# Source function library.
. /lib/lsb/init-functions
stop()
  {
  echo -n "Sending Shutdown Email: "
  echo "${SHUTDOWNBODY}" | mail -s "${SHUTDOWNSUBJECT}" ${EMAIL}
  sleep 4
  RETVAL=$?
  sleep 4
  if [ ${RETVAL} -eq 0 ]; then
    rm -f ${LOCKFILE}
    sleep 4
    log_success_msg
  else
    log_failure_msg
  fi
  echo
  return ${RETVAL}
  }
start()
  {
  echo -n "Sending Startup Email: "
  echo "${RESTARTBODY}" | mail -s "${RESTARTSUBJECT}" ${EMAIL}
  RETVAL=$?
  if [ ${RETVAL} -eq 0 ]; then
    touch ${LOCKFILE}
    log_success_msg
  else
    log_failure_msg
  fi
  echo
  return ${RETVAL}
  }
case "$1" in
  start)
    start
  ;;
  stop)
    stop
  ;;
  status)
    echo "Not applied to service"
  ;;
  restart)
    stop
    start
  ;;
  reload)
    echo "Not applied to service"
  ;;
  condrestart)
  #
    echo "Not applied to service"
  ;;
  probe)
  ;;
  *)
    echo "Usage: SystemEmail{start|stop|status|reload|restart[|probe]"
  exit 1
  ;;
esac
exit ${RETVAL}

simpan berkas tersebut, lalu pastikan berkas tersebut bisa dieksekusi:

sudo chmod u+x /etc/init.d/SystemEmail

daftarkan berkas tersebut agar dieksekusi saat restart maupun shutdown:

sudo update-rc.d SystemEmail start 98 2 3 4 5 . stop 02 0 1 6 .

sekarang uji coba apakah script tadi bisa berjalan baik atau tidak:

sudo service SystemEmail start

jika semuanya berjalan lancar, maka anda akan menerima mail pemberitahuan bahwa server anda baru menyala. sebenarnya semuanya sudah selesai sampai di sini, namun kadang saat melakukan shutdown server keburu mati sebelum sempat mengirimkan mail, maka tambahkan delay secukupnya pada /etc/init.d/postfix agar mail sempat terkirim (saya menambahkan baris sleep 12):

Screen Shot 2012-12-10 at 12.54.14 PM

referensi:

Read Full Post »

tulisan ini sudah tidak berlaku lagi. silakan baca bagaimana cara membuat squid dengan ipkungfu sebagai pengganti tulisan ini.

bagi saya, cara termudah di ubuntu untuk melakukan sharing koneksi internet adalah dengan menggunakan firestarter.
lalu untuk mengirit pemakaian internet, cara yang lumayan mudah dan sederhana adalah dengan memaksakan trafik internet melalui proxy (intercepting proxy, yang lebih populer disebut sebagai transparent proxy, walaupun memang salah kaprah). berikut adalah langkah-langkahnya:

  1. instalasi dan konfigurasi firestarter untuk membagi koneksi internet anda ke jaringan lokal.
  2. instalasi dan konfigurasi Squid. jangan lupa tambahkan policy di firestarter untuk port yang dipergunakan oleh Squid; misalnya Squid masih menggunakan port default 3128, maka tambahkan policy di firestarter untuk koneksi port 3128 pada LAN.
  3. tambahkan baris ini pada /etc/firestarter/user-pre:
    $IPT -t nat -A PREROUTING -i $IF -p tcp --dport 80 -j REDIRECT --to-port 3128

Read Full Post »

di rumah saya menggunakan TV widescreen untuk menayangkan film dan video dari WDTV. yang menjadi masalah adalah jika menemukan video dalam kontainer AVI yang mempunyai PAR (pixel aspect ratio) 1:1, karena di TV akan muncul blok hitam di sebelah kiri dan kanan, tanda bahwa video tersebut memang dibuat bukan untuk WS (wide screen). bicara AR, ada dua jenis AR, yaitu pixel AR (PAR) dan display AR (DAR). TV konvensional mempunyai DAR 4:3, sedangkan TV wide screen mempunyai DAR 16:9. sebuah video dengan resolusi 640×480 dan PAR 1:1 akan mempunyai DAR 4:3.

awalnya saya mencoba untuk re-encode dengan menggunakan ffmpeg, namun proses ini rumit, karena harus menghitung sendiri resolusi akhir yang diinginkan agar sesuai dengan AR 16:9, lalu karena saya memilih codec x264, dimensi tadi harus dalam kelipatan 16 pixel.

dari hasil pencarian, akhirnya saya menemukan MPEG4 Modifier. ada dua jenis, satu dengan GUI (graphical user interface), satu lagi CL (command line), dan keduanya menggunakan .NET, artinya ini adalah aplikasi yang berjalan di windows. untungnya ada Mono, sehingga bisa berjalan di Mac OS X (saya menggunakan fink untuk memunculkan mono) dan sepertinya sudah ada dalam instalasi standar ubuntu jaunty.

jika menggunakan versi GUI, pemakaiannya sangat mudah. jalankan MPEG4 Modifier (dari ubuntu: mono MPEG4Modifier.exe), pilih video yang ingin diubah, pilih DAR yang diinginkan, lalu klik Save.

mpeg4-modifier

sayangnya jika menggunakan versi CL, pilihan AR yang ada tidak selengkap versi GUI. dari hasil eksperimen, untuk mencapai DAR 16:9, saya harus memasukkan parameter custom PAR 227:169.

$ mono ~/mmcl.exe --par custom 227:169 05\ -\ The\ King\ of\ Omashu.avi 05\ -\ The\ King\ of\ Omashu.ws.avi
MPEG4 Modifier CL v1.4.4
http://www.moitah.net/

Loading: 100.0%
Saving: 100.0%
Video was written successfully.

Read Full Post »

CCTV, Closed-circuit television adalah sistem kamera video yang mengirimkan sinyalnya secara terbatas. untuk meningkatkan keamanan rumah saat ditinggalkan, saya memutuskan untuk memasang sistem pengawasan dengan sistem CCTV ini. jika memang tidak punya waktu untuk membuatnya sendiri, ada beberapa perusahaan yang menyediakan jasa pemasangan CCTV ini. salah satu contohnya adalah CCTV Indonesia, yang menawarkan jasa pemasangan sistem CCTV terkomputerisasi lengkap dengan harga paket dasar dari 13 juta sampai dengan 19 juta rupiah.

saya sendiri daripada mengeluarkan uang jutaan rupiah, lebih memilih untuk membuat sendiri sistem ini (DIY, do it yourself). yang sudah tersedia di rumah adalah dua buah server yang selalu menyala (router dan fileserver), sebuah notebook thinkpad X20 yang sudah rusak LCD-nya, dan jaringan kabel maupun nirkabel yang mencakup seluruh rumah. bagi yang punya sistem berbasis windows, mungkin panduan yang ditulis oleh iip sesuai buat anda. saya sendiri menggunakan ubuntu di tiga komputer yang sudah saya sebut di atas.

zoneminder

berikutnya adalah memilih perangkat lunak sistem CCTV ini. dari hasil googling sebentar, akhirnya menemukan zoneminder, aplikasi open source dan sangat lengkap untuk membuat sistem CCTV. fasilitasnya antara lain bisa menggunakan kompresi eksternal seperti ffmpeg, deteksi gerakan (motion detection), membunyikan alarm, mengirimkan peringatan melalui mail, mengirimkan gambar melalui FTP, dan masih banyak lagi. bisa diakses melalui web, atau bisa juga melalui jalur telepon. perangkat kamera bisa menggunakan webcam, IP webcam, video input. di ubuntu, instalasi sangat mudah, cukup tambahkan zoneminder dari Synaptic Package Manager, atau jika anda penggemar CLI (command line interface) seperti saya, dengan perintah:

sudo aptitude -y install zoneminder

jika belum ada, instalasi zoneminder akan menambahkan sendiri dependensi seperti apache2 dan mysql. jangan lupa untuk mengubah password dari mysql agar instalasi mysql anda lebih aman. zoneminder hanya perlu dipasang pada satu server saja, tidak perlu dipasang di tiap komputer yang terpasang webcam.

perangkat webcam

langkah berikutnya adalah memilih webcam. ada banyak pilihan webcam, namun metoda yang saya pilih saat hari jumat kemarin adalah pilih webcam yang driverless (UVC, USB Video device Class), yang termurah yang bisa saya temukan di mal ambasador. 🙂 cara yang saya tempuh ini tentu saja belum tentu cocok buat anda, jadi silakan tentukan sendiri kebutuhan anda. webcam termurah yang saya temukan dibeli seharga 65 ribu rupiah, bermerek apollyon. seharusnya webcam ini bisa lebih murah lagi, sayangnya kurs USD yang memang masih di atas 10 ribu rupiah membuat webcam ini juga naik harganya.

apollyon webcam
murah meriah

UVC compliant
UVC compliant

uji coba perangkat webcam

ketika USB webcam ini dicolokkan ke komputer, USB ID-nya adalah 1c4f:3000:

$ lsusb
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 1c4f:3000
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

untuk mencoba apakah webcam ini bisa dipergunakan di linux atau tidak, bisa dengan memanfaatkan aplikasi luvcview, yang sudah ada di dalam paket ubuntu:

sudo aptitude -y install luvcview
luvcview

mjpg-streamer

sekarang yang menjadi problem, zoneminder versi 1.23.3 masih memakai V4L (Video for Linux) versi 1 (v4l1), yang sudah tidak didukung lagi oleh UVC driver untuk linux (uvcdriver). uvcdriver hanya mendukung V4L versi 2 (v4l2), yang baru akan ada dukungannya di zoneminder versi 1.24. sambil menunggu rilis versi 1.24, kita bisa menggunakan mjpg-streamer sebagai perantara antara uvcdriver ke zoneminder.

mjpg-streamer ini sayangnya belum masuk dalam paket standar ubuntu, dan paket binari yang bisa diunduh hanyalah untuk arsitektur i386, tidak ada amd64, jadi tidak bisa langsung digunakan oleh server router yang saya pasang intrepid amd64. jadi agar bisa digunakan, saya harus melakukan kompilasi dulu terhadap source code dari mpjg-streamer ini. langkah awal adalah mempersiapkan kebutuhan untuk melakukan kompilasi:

sudo aptitude -y install subversion build-essential libjpeg62-dev libjpeg62

setelah itu ambil source code dari mjpg-streamer:

svn co https://mjpg-streamer.svn.sourceforge.net/svnroot/mjpg-streamer mjpg-streamer

lakukan kompilasi dan instalasi:

cd mjpg-streamer/mjpg-streamer
make clean all
sudo make DESTDIR=/usr install

cara menggunakan mjpg-streamer ini cukup mudah, secara default dia akan mengakses /dev/video0, dan membuka akses http di port 8080. saya menambahkan opsi -b agar dijalankan di background:

mjpg-streamer -b

sekarang untuk mencobanya, silakan buka browser ke http://localhost:8080/?action=stream.

tadinya saya mencoba memasang 2 webcam dalam 1 komputer, namun mendapatkan pesan kesalahan “Unable to start capture: No space left on device” saat mencoba menjalankan mjpg-streamer yang kedua. rupanya jika masih menggunakan USB 1.1, bandwidth untuk menangkap sinyal video sudah menghabiskan lebih dari separuh kapasitas lebarpita kanal USB yang cuma 12 Mbps. jika masih ingin menjalankan 2 buah webcam dalam satu komputer, solusinya adalah dengan menggunakan kanal USB 1.1 yang berbeda, atau menggunakan kanal USB 2.0 yang mempunyai lebarpita 480 Mbps.

lalu jika menggunakan mjpg-streamer ini di komputer yang memiliki IP publik, tentu lebih baik jika akses dibatasi dengan menggunakan sandi. ini bisa dilakukan dengan menambahkan opsi -c pada plugin http output:

mjpg_streamer --input "input_uvc.so --device /dev/video0 --fps 5 --resolution 640x480" --output "output_http.so --port 8080 -c user:password" -b

mengaktifkan zoneminder

walaupun zoneminder sudah termasuk dalam paket standar ubuntu, masih diperlukan sedikit langkah untuk mengaktifkannya:

sudo ln -s /etc/zm/apache.conf /etc/apache2/conf.d/zoneminder.conf
sudo /etc/init.d/apache2 force-reload

buka http://namawebserver/zm. instalasi default belum membatasi akses dengan sandi, jadi langkah pertama adalah membatasi akses dengan mengklik Options lalu centang Authenticate user logins to ZoneMinder (ada di baris kedua tab System). klik tombol Save.

sekarang login kembali ke zoneminder (user/password: admin/admin), klik Options, lalu klik tab Users, dan silakan ubah password default, kalau perlu sekalian ditambahkan user baru, misalnya khusus hanya bisa melihat saja tanpa bisa mengubah konfigurasi.

menambahkan kamera

setelah login ke zoneminder, klik tombol Add New Monitor. pada tab General, berikan nama untuk kamera ini pada isian Name.
karena zoneminder versi 1.23.3 ini masih belum mendukung v4l2, saya menggunakan mjpg-streamer sebagai perantara, sehingga pada isian Source Type, isikan dengan Remote. untuk isian Function, saya memilih Modect, artinya Monitor & Detect, jika diakses akan menampilkan video secara realtime, dan hanya akan merekam jika mendeteksi adanya gerakan di kamera.

modect

setelah itu klik tab Source. untuk Remote Host Name, isikan dengan alamat IP dari komputer yang terpasang webcam (localhost jika di komputer yang sama). jika menggunakan sandi, isikan dalam format user:password@alamat-IP. Remote Host Port diisi dengan port yang dipergunakan, contohnya mjpg-streamer secara default menggunakan port 8080. pada Remote Host Path, karena kita menggunakan mjpg-streamer, isikan dengan /?action=stream. pada Capture Width dan Height, isikan dengan dimensi resolusi yang sesuai.

source

setelah itu, klik tombol Save. ulangi langkah di atas untuk menambahkan kamera yang lain. karena saya baru punya 3 webcam, maka baru 3 kamera yang ditangani oleh zoneminder ini.

troubleshooting

seperti yang sudah saya tulis di atas, jika masih menggunakan USB 1.1, hanya bisa terpasang satu webcam pada satu kanal. jika menggunakan USB 2.0 seharusnya bisa jauh lebih banyak webcam yang bisa terpasang.

untuk bisa memproses video resolusi besar, diperlukan alokasi memori yang cukup besar juga, kadang setting default masih kurang cukup besar. solusinya bisa dibaca di Video Surveillance system on Ubuntu 8.04 with Zoneminder, saya sendiri belum terkena problem ini.

masalah lain adalah dukungan uvcdriver sendiri yang berbeda di tiap versi kernel. pada thinkpad X20 yang terpasang ubuntu hardy (2.6.24-23-generic), webcam yang saya beli walaupun terdaftar di /dev/video0, tidak bisa dipergunakan. solusinya bisa dengan melakukan instalasi kernel yang lebih baru, atau dengan cara yang saya tempuh, sekalian upgrade dari hardy ke intrepid (2.6.27-9-generic). setelah saya pasang intrepid, webcam murahan ini bisa langsung dipergunakan. 🙂

CCTV buatan sendiri

berikut ini adalah webcam yang saya tempelkan ke salah satu unit satelit speaker Altec Lansing ATP3 saya:

webcam terpasang

webcam ini mengarah ke arah dapur dan meja makan. dan berikut ini adalah hasil capture dari webcam tersebut pada sistem CCTV zoneminder:

dapur

total biaya yang saya habiskan adalah untuk membeli webcam, 65 ribu x 3 = 195 ribu rupiah.
spesifikasi sistem komputer yang saya pergunakan:

  1. AMD Athlon 3200+, berfungsi sekaligus sebagai router dan server zoneminder:
    • 3 GB RAM, 80 GB harddisk
    • Ubuntu Intrepid Desktop arsitektur amd64
  2. Epia 800 MHz, juga berfungsi sebagai fileserver:
    • 512 MB RAM, 2 TB harddisk
    • Ubuntu Intrepid Server arsitektur i386
  3. Thinkpad X20 P3 600 MHz:
    • 320 MB RAM, 20 GB harddisk
    • Ubuntu Intrepid Desktop arsitektur i386
    • Kondisi LCD rusak, jadi praktis headless

Read Full Post »

vodafone wireless routerpada hari kamis 14 februari kemarin (ya, tepat saat valentine), wireless router vodafone yang saya pergunakan tiba-tiba rusak. sudah saya coba matikan lalu nyalakan kembali, yang terlihat hanyalah lampu LED merah menyala kedap-kedip, tak terlihat indikasi bahwa router tersebut berhasil booting.

saya malas melakukan komplain ke toko, karena terus terang saja saya pernah membongkar router ini untuk mengetahui apa saja isinya, yang tentunya merusak semua stiker garansi yang ada. tapi saya juga ingin berhemat, tidak ingin membeli lagi router yang sejenis, yang harganya mencapai di atas 1 juta rupiah. akhirnya saya putuskan untuk mencoba membuat sendiri router wireless dengan berbagai perangkat yang saya miliki.

merlin U630pertama tentu saja saya butuh modem 3G. dulu saya pernah menggunakan telpon genggam nokia E61 saya sebagai modem 3G, tapi tentu saja ini adalah solusi yang mahal, lagipula saya sudah terbiasa menggunakan E61 untuk komunikasi sehari-hari. jawabannya terletak di dalam router yang rusak ini: di dalamnya terdapat modem 3G pc-card novatel UMTS U630 merlin. setelah saya coba modem U630 ini masih bisa dipergunakan.

thinkpad x20barang kedua yang saya butuhkan adalah sebuah komputer yang bisa menggunakan modem pc-card, dan juga irit dalam pemakaian listrik, karena fungsinya sebagai wireless router yang akan menyala secara terus-menerus. thinkpad x20 yang saya miliki memenuhi kriteria ini. kondisi thinkpad x20 ini sudah tidak terlalu mulus; ada retakan kecil di bagian kanan di atas slot harddisk, dan juga rel slot harddisk-nya sudah patah, layar LCD sudah tidak berfungsi lagi, dan baterenya juga sudah tidak bisa menyimpan listrik. tentu saja kondisi ini malah membuatnya makin cocok untuk dijadikan router wireless.

dlink dwl-700apbarang ketiga yang saya butuhkan — dan yang tak kalah penting — adalah sebuah access point. sewaktu router vodafone saya masih berfungsi, jangkauan sinyalnya tergolong lemah, sewaktu saya bongkar dulu juga terlihat kalau wireless-nya menggunakan antena internal kecil. supaya wireless router vodafone ini bisa menjangkau semua komputer yang ada di rumah, dulu saya sempat membeli dlink DWL-700AP yang saya fungsikan sebagai repeater. sekarang setelah router vodafone rusak, access point dlink ini bisa saya manfaatkan kembali ke fungsi aslinya, yaitu sebagai access point.

thinkpad x20 ini sebelumnya sudah terpasang ubuntu gutsy, dengan fungsi utama sebagai leecher torrent. sekarang fungsinya akan saya tambah sebagai sebuah wireless router, sekaligus berfungsi sebagai cache proxy. langkah pertama adalah membuat x20 ini bisa tersambung ke cbn menggunakan modem 3G, untungnya saya pernah mencatat bagaimana menggunakan wvdial untuk melakukan hal ini dengan modem bluetooth; untuk modem pc-card diperlukan sedikit modifikasi, mengganti rfcomm ke ttyS1. berikut adalah wvdial.conf yang saya pergunakan:

    [Dialer Defaults]
    Phone = *99***1#
    Username = user@cbn.net.id
    Password = password
    New PPPD = yes
    Stupid Mode = 1
    Dial Command = ATDT

    [Dialer CBN]
    Modem = /dev/ttyS1
    Baud = 460800
    Dial Command = ATDT
    Init2 = ATZ
    Init3 = ATM0
    Init4 = AT+CGDCONT=1,”IP”,”cbn.net.id”
    FlowControl= crtscts
    Modem Type = Analog Modem

kemudian agar tiap kali booting komputer akan selalu dial, pada baris terakhir /etc/init.d/rc.local ditambahkan perintah wvdial CBN &.

setelah berhasil membuat komputer selalu melakukan koneksi melalui modem, sekarang komputer dibuat agar menjadi router, dan sekali lagi untungnya saya pernah mencatat bagaimana cara membagi koneksi internet di ubuntu:

  1. mulai dengan melakukan konfigurasi network, saya di rumah menggunakan 10.0.0.1.
  2. edit file /proc/sys/net/ipv4/ip_forward (sudo nano /proc/sys/net/ipv4/ip_forward), ganti angka 0 menjadi 1.
  3. jalankan perintah sudo iptables -t nat -A POSTROUTING -j MASQUERADE.
  4. lakukan instalasi dnsmasq dan ipmasq: sudo apt-get install dnsmasq ipmasq.
  5. restart dnsmasq: /etc/init.d/dnsmasq restart.
  6. konfigurasikan ipmasq agar dijalankan setelah network aktif: dpkg-reconfigure ipmasq
  7. tambahkan baris net.ipv4.ip_forward = 1 ke dalam file /etc/sysctl.conf: sudo nano /etc/sysctl.conf.
  8. instalasi dhcp server: sudo aptitude -y install dhcp3-server. setting yang saya pergunakan pada /etc/dhcp3/dhcpd.conf adalah:
    subnet 10.0.0.0 netmask 255.255.255.0 {
      range 10.0.0.100 10.0.0.200;
      option domain-name-servers 10.0.0.1, 202.158.3.7, 202.158.3.6;
      option domain-name "cbn.net.id";
      option routers 10.0.0.1;
      option broadcast-address 10.0.0.255;
      default-lease-time 600;
      max-lease-time 7200;
    }
  9. di klien saya tinggal konfigurasikan untuk setting IP secara otomatis.

dlink DWL-700AP saya koneksikan ke port ethernet thinkpad x20, lalu saya konfigurasikan untuk menggunakan enkripsi WPA2-PSK (pre-shared key, agar relatif lebih mudah untuk bisa terkoneksi ke access point).

koneksi internet yang saya pergunakan adalah CBN wireless 3G via XL yang unlimited, sayangnya koneksinya dibatasi kecepatannya di 64 Kbps (dan sepertinya paket layanan ini sudah tidak tersedia lagi untuk pelanggan baru). agar browsing internet bisa sedikit terbantu, saya membuat sebuah intercepting transparent proxy dengan menggunakan squid. langkah pertama tentu saja instalasi squid, sudo aptitude -y install squid. dengan dibantu oleh jay, inilah konfigurasi squid saya yang mencontek petunjuk bagaimana membuat transparent proxy menggunakan squid 3 (yang saya pergunakan adalah squid 2.6, namun ternyata konfigurasi squid 3 bisa dipergunakan juga):

http_port 3128 transparent
icp_port 0

cache_mem 128 MB
dns_nameservers 127.0.0.1
cache_swap_low 90
cache_swap_high 95
cache_dir aufs /var/spool/squid 40000 16 256
logfile_rotate 10

cache_effective_user proxy
cache_effective_group proxy

cache_peer proxy.cbn.net.id parent 8080 0 no-query no-digest

visible_hostname squid.diva-valen.com
cache_mgr sigantengkalem@yahoo.com

hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY

acl apache rep_header Server ^Apache
access_log /var/log/squid/access.log squid
hosts_file /etc/hosts
ftp_user ftp@diva-valen.com

refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern .               0       20%     4320

acl all src 0.0.0.0/0.0.0.0
acl daleman src 10.0.0.1/255.255.255.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 563
acl SSL_ports port 873          # rsync
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 631 # cups
acl Safe_ports port 777 # multiling http
acl Safe_ports port 901 # SWAT
acl purge method PURGE
acl CONNECT method CONNECT
acl FTP proto FTP

http_access allow manager localhost daleman
http_access deny manager

http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

http_access allow daleman
http_access allow localhost
http_access deny all

http_reply_access allow all
icp_access allow all

forwarded_for off

always_direct allow all
coredump_dir /var/spool/squid

langkah terakhir tentu saja untuk mencegat semua akses web agar bisa dibelokkan terlebih dahulu ke squid:

sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128

selesailah sudah, saya akhirnya mendapatkan wireless router yang “baru”, yang mempunyai lebih banyak keunggulan ketimbang wireless router vodafone:

  • otomatis berusaha melakukan koneksi. router vodafone tidak memiliki fasilitas ini.
  • intercepting transparent proxy. sulit melakukan hal ini dengan router vodafone.
  • DHCP server yang jauh lebih stabil. entah kenapa pada router vodafone, jika mendapatkan IP di range 10.0.0.200 ke atas, routing tidak berjalan dengan benar, alias tidak akan bisa terkoneksi ke internet.

satu-satunya fasilitas yang belum sempat saya pelajari adalah menggantikan fungsi print server yang tadinya tersedia pada router vodafone. namun saya rasa hal ini adalah hal yang trivial, tinggal saya sempatkan waktu lagi untuk mempelajari bagaimana caranya.

Read Full Post »

ada banyak cara menentukan koordinat dari sebuah titik yang ingin kita ketahui dengan berdasarkan titik-titik acuan yang sudah diketahui koordinatnya; saya akan mencoba membahas 3 di antaranya, yaitu triangulasi, trilaterasi dan multilaterasi.

triangulasi adalah proses mencari koordinat dari sebuah titik dengan cara menghitung panjang sisi segitiga yang berhadapan dengan titik tersebut, dan ukuran kedua sudut antara garis tersebut ke titik yang dicari sudah diketahui. proses ini bisa dijalankan dengan syarat kita sudah mengetahui dengan pasti berapa besar kedua sudut yang terbentuk antara garis acuan dengan titik yang ingin kita cari koordinatnya.

triangulasi

pengamat di titik A mengukur sudut α yang terbentuk antara kapal dengan garis pantai, pengamat di titik B juga mengukur sudut β. jika panjang l diketahui, atau koordinat A dan B sudah diketahui, maka dengan menggunakan hukum sinus bisa diketahui koordinat kapal dan jarak d.

GPSsekitar 6 tahun yang lalu, di milis pau-mikro (sekarang sudah tidak aktif lagi) sempat dibahas tentang GPS. saya yang memang pada waktu itu cuma tahu sedikit tentang teknologi GPS mengira bahwa proses pencarian koordinat juga menggunakan triangulasi. ternyata saya salah, di milis tersebut ada yang menjelaskan bahwa proses yang dipakai adalah trilaterasi. syarat triangulasi seperti yang sudah saya tulis di atas adalah kita mengetahui besar dua sudut yang terbentuk ke titik yang ingin kita ketahui koordinatnya, sementara jika kita menggunakan GPS, kita tidak bisa mendapatkan besar sudut yang diperlukan untuk perhitungan ini.

trilaterasi

trilaterasi itu sendiri adalah proses mencari koordinat sebuah titik berdasarkan jarak titik tersebut ke minimal 3 buah koordinat yang sudah diketahui. misalkan kita ingin mengetahui koordinat titik B, dan koordinat dari titik P1, P2 dan P3 sudah diketahui. dengan mengukur r1 (jarak antara B dengan P1), maka koordinat B pasti terletak pada keliling lingkaran dengan jari-jari r1. lalu dengan mengukur r2 (jarak antara B dengan P2), maka koordinat titik pasti terletak di A atau di B, yang merupakan perpotongan antara kedua lingkaran. ketika diukur jarak r3 (jarak antara B dengan P3), kita sudah mendapatkan sebuah titik B, yang merupakan perpotongan antara ketiga buah lingkaran.

lalu bagaimana cara GPS mengetahui jarak antara dia sendiri dengan satelit GPS?

tiap satelit GPS mengirimkan informasi waktu (berdasarkan jam atom) dan koordinat satelit tersebut. dengan mengukur secara absolut waktu penerimaan sinyal (TOA, time of arrival), dan berdasarkan kenyataan bahwa sinyal tersebut merambat dengan kecepatan mendekati cahaya, GPS bisa menghitung jarak antara dirinya sendiri dengan satelit GPS tadi. dengan menghitung jarak dari minimal 3 buah satelit, dan koordinat tiap satelit sudah diketahui, GPS bisa menentukan koordinat tempat dia berada.

proses penentuan titik koordinat yang saya bahas terakhir adalah multilaterasi. jika pada trilaterasi jarak dihitung berdasarkan pengukuran secara absolut waktu kedatangan sinyal, maka pada multilaterasi yang diukur adalah selisih waktu sinyal yang diterima (TDOA, time difference of arrival) dari minimal tiga buah pemancar yang sudah tersinkronisasi, atau sebaliknya, selisih waktu penerimaan sinyal yang diterima di minimal tiga buah titik yang sudah diketahui koordinatnya.

dengan mengukur selisih waktu penerimaan sinyal dari satu pemancar ke sedikitnya tiga buah titik, bisa dihitung koordinat dari pemancar sinyal tersebut. salah satu implementasi dari teknik multilaterasi ini adalah pada teknologi LBS, Localization-Based Systems. di daerah urban, telpon seluler memonitor sinyal dari paling banyak 6 buah BTS, dan “mengunci” ke BTS dengan sinyal terkuat. karena tiap BTS biasanya sudah diketahui koordinatnya, selisih waktu penerimaan sinyal (TDOA) dari telpon seluler bisa diukur dan dipergunakan untuk menghitung koordinat dari telpon seluler tersebut.

tentu saja tidak setiap saat sebuah telpon seluler dilayani oleh 3 buah BTS, terkadang malah cuma 1 BTS yang sinyalnya ada. dalam situasi ini, multilaterasi jelas tidak bisa dipergunakan, namun masih ada teknik lain seperti cell identification, dengan asumsi bahwa lokasi telpon seluler yang dicari adalah dalam cakupan sinyal BTS tersebut; atau dengan kata lain, akurasinya tidak terlalu bagus. namun demikian cara ini tetap efektif untuk memperkecil cakupan daerah pencarian, terutama jika memang pemakai telpon seluler tersebut sedang dicari.

Read Full Post »

Older Posts »