Aneka hardware murah untuk belajar embedded Linux

Salah satu kendala yang umum ditemui oleh orang yang ingin belajar embedded Linux adalah ketidaktersediaan hardware untuk praktik. Sebenarnya hampir semua latihan embedded Linux bisa dilakukan via emulator ata virtual machine (qemu, virtualbox, dsb). Tapi bagi sebagian orang berlatih di emulator tidak cukup (dan kurang semangat). Sekarang ini ada banyak alternatif embedded development board, namun rata-rata harganya di atas 500 ribu rupiah, itupun biasanya fiturnya terbatas.

Sekarang ini ada alternatif murah untuk belajar embedded Linux dengan memanfaatkan router, Network Attached Storage, media player, gaming device, dan handeld Android, yang berbasis Linux. Harga barang-barang ini bervariasi, tapi dengan sekitar 250 ribu rupiah, Anda sudah bisa mendapatkan sebuah NAS atau router yang memakai OS Linux. Misalnya NAS ini) harganya sekitar 30 USD (sudah termasuk ongkos kirim ke seluruh dunia). Berbagai router dari Dlink, Asus, TP-LINK juga harganya relatif murah, dan memakai OS Linux. Anda bisa melihat daftarnya di situs Openwrt. Saya akan membahas secara singkat kelebihan dan kekurangan beberapa jenis device yang ada.

Sebagai catatan: ada banyak level "belajar embedded", ini bisa meliputi: belajar berbagai tools dan software untuk embedded device (u-boot, buildroot, dsb) belajar membuat memporting software ke hardware terbatas (CPU lambat, memori sedikit), belajar menghubungkan ke hardware lain, sampai belajar porting kernel OS ke device baru. Semua ini bisa dilakukan dengan device yang saya sebutkan, tapi Anda harus bijaksana dalam memilih.

Sebuah router memiliki banyak port jaringan, tapi biasanya tidak memiliki konektor untuk storage, walaupun ada sebagian yang memiliki konektor USB. Anda bisa menambahkan sendiri SD Card reader dengan menyolder beberapa pin General Purpose I/O (GPIO). Tanpa storage tambahan, Anda hanya bisa menggunakan Flash storage yang biasanya hanya 4 MB-16 MB. RAM untuk router tidak banyak, kebanyakan dalam range 16 MB - 64 MB. Karena penyimpanan sangat kecil, biasanya Anda akan menggunakan OpenWRT atau distro sejenis. Daya yang digunakan router sangat rendah, sehingga Anda bisa memasangnya di manapun (di mobil misalnya), dan karena tidak memakai harddisk, benda ini cocok digunakan mobile.

Sebuah NAS biasanya memiliki konektor untuk storage (USB/Sata), dan port jaringan (LAN/Wifi), NAS yang murah kebanyakan hanya punya konektor untuk LAN. Karena penyimpanan melimpah ruah, Anda bisa menginstall Debian, Gentoo, atau distro "full" lain yang mendukung ARM. RAM bervariasi, biasanya antara 16-256 MB (dan bahkan lebih). Karena memakai harddisk, maka ini tidak cocok dipasang di benda yang bergerak.

Banyak media player yang menggunakan Linux (WDTV, Asus O'Play, dsb). Benda-benda ini biasanya memiliki RAM cukup besar (>= 128 Mb), dan memiliki output grafik (sesuatu yang tidak dimiliki oleh Router maupun NAS). Tapi Anda harus berhati-hati, kebanyakan produsen tidak menyertakan source driver untuk mode grafik (binary module), jadi yang bisa dilakukan cukup terbatas, misalnya kita tidak bisa membuat sendiri Video player, karena API untuk video decoder tidak disediakan.

Anda bisa menginstall Linux juga di beberapa gaming device, misalnya Wii, Playstation, Nintendo DS, dan PSP. Wii memakai PowerPC dan cukup mendekati sebuah komputer biasa (ada port USBnya yang bisa dihubungkan ke keyboard, mouse, dsb). Playstation 2 dan 3 juga sama. Umumnya Anda tidak akan menyolder dan membongkar benda-benda tersebut, karena harganya relatif mahal. Handhel gaming device seperti PSP dan Nintendo DS juga bisa diinstall Linux, tapi karena keterbatasan RAM, yang bisa dilakukan tidak banyak.

HP Android murah dengan harga di bawah 1.5 juta saat ini sudah cukup banyak. Anda bisa melakukan sangat banyak hal dengan HP Android, terutama jika source codenya tersedia lengkap (tidak semua produsen menyediakan source kernel). Misalnya Anda bisa menginstall distro baru (Debian), mengoptimasi software, membuat modul kernel baru, dsb. Di masa depan Anda akan bisa mengembangkan aksesori tambahan dengan Android Open Accessory Development Kit.

Beberapa hal yang perlu diperhatikan ketika memilih sebuah device:

  • Berapa jumlah memori yang dimiliki device tersebut, cukupkah untuk kebutuhan Anda. Anda bisa mencoba-coba dengan menggunakan qemu untuk melihat apakah memori yang sangat kecil bisa cukup untuk menjalankan aplikasi yang Anda inginkan.
  • Apakah punya konektor yang Anda inginkan. Cari spesifikasinya, dan juga foto PCBnya di internet. Jika device tersebut punya port USB, maka Anda akan bisa menambahkan hampir apapun juga, misalnya USB Sound card, serial port, parallel port, bahkan display, dan Anda bisa menghubungkan banyak benda dengan USB hub.
  • Berapa kecepatan prosessornya.
  • Apakah spesifikasi chipnya tersedia. Ini penting jika Anda ingin memporting OS baru, atau memporting Linux versi lama ke versi yang lebih baru.

Untuk memudahkan eksplorasi, carilah device yang source code Linux-nya tersedia, kalau bisa selengkap mungkin. Beberapa produsen hardware cukup "nakal" dengan tidak menyediakan source code Linux untuk device mereka. Beberapa produses menyediakan source codenya tapi tidak lengkap sama sekali. Berikutnya mungkin Anda akan bertanya-tanya: apa yang akan saya lakukan? Ada banyak yang bisa Anda lakukan, misalnya:

  • Membuat software khusus yang menggunakan memori rendah.
  • Mengendalikan perangkat lain (dengan GPIO, dengan serial Port, dengan USB), misalnya menghubungkan dengan HP GSM untuk mengirim SMS.
  • Membuat distro mini (atau memporting distro OpenWRT yang cukup standar untuk NAS dan router). Kalau Anda punya jiwa petualang, coba cari device yang ada source code Linuxnya, tapi belum didukung oleh proyek OpenWRT.
  • Porting OS lain ke device tersebut (misalnya FreeBSD atau NetBSD)

Memakai development board komersial memang lebih nyaman karena semua port sudah tersedia, tidak demikian halnya jika Anda memilih menggunakan NAS atau router. Dalam beberapa kasus, Anda mungkin perlu menyolder beberapa konektor ke NAS atau router yang Anda miliki. Biasanya yang paling berguna pertama kali adalah serial port, dengan serial port, kita akan bisa melihat proses boot Linux secara penuh. Serial port juga berguna untuk debugging, serta bisa dihubungkan ke benda lain yang memakai protokol serial (misalnya handphone). Beberapa device punya fitur USB, tapi tidak punya colokan USB, jadi perlu disolder. Jika Anda butuh penyimpanan extra, maka Anda bisa menyolder SD Card reader ke beberapa pin GPIO (general purpose IO).

Artikel kali ini hanya membahas secara umum device-device yang bisa Anda gunakan untuk development atau untuk Anda hack. Di lain kesempatan saya akan membahas contoh secara spesifik hacking yang sudah saya lakukan pada berbagai device yang saya miliki.

Copyright © 2009-2018 Yohanes Nugroho