Merakit dan Mengupgrade PC

Kebanyakan teman seangkatan saya sudah jarang yang merakit PC. Bahkan kalau dipikir-pikir yang memakai PC (di rumah, bukan di kantor) juga semakin sedikit, kebanyakan hanya punya laptop saja. Saya sendiri sampai saat ini merasa lebih nyaman bekerja di PC yang cepat dengan layar besar dan keyboard mekanis.

Sekarang saya memesan berbagai komponen PC dari jib.co.th atau kadang beli offline jika kebetulan barang yang hendak dibeli tersedia di toko JIB di Airport Plaza. Jika membeli online prosesnya sangat mudah dan cepat. Setelah selesai membayar, barang akan segera dipack, dan saya akan dikirimi URL video pengepakannya. Sayangnya karena jauh dari Bangkok, jadi tetap butuh 2 hari sampai barangnya diterima di Chiang Mai.

Sebenarnya saya mulai malas membongkar PC, memasang komponen baru, mengetes, setting BIOS, memindahkan sistem operasi dsb, tapi saya lebih malas lagi dengan berbagai alternatifnya. Beberapa alternatifnya adalah:

  • membawa semua ke toko, memberi instruksi dan menunggu sampai semua selesai, pulang ke rumah (capek, tetap harus memasang ulang kabel), perlu memberi tahu password ke teknisi (atau membantu mengisi password setiap kali dibutuhkan)
  • membeli komputer baru yang lebih baik (tetap harus memindahkan data/program ke komputer baru)
  • mendatangkan teknisi: saya nggak akan sabar memberi tahu apa yang harus dilakukan, memberi tahu password, dsb

Jadi meskipun saya kurang suka, merakit dan mengupgrade PC tetap saya lakukan sendiri. Contoh beberapa hal yang menyebalkan ketika merakit PC:

  • memasang CPU cooler
  • memasang kabel untuk power/reset/LED HDD/Power, ribet karena kecil
  • mengatur kabel. padahal saya sudah memakai PSU dengan kabel modular
  • memasang backplate. Tapi sekarang tidak lagi, karena sebel sering menyakiti tangan, saya putuskan untuk tidak memasang benda ini. Memang berisiko menambah debu yang masuk, tapi saya lebih memilih membersihkan debu daripada memasang benda ini
Backplate, nggak pernah saya pasang lagi

Sekarang mau cerita konfigurasi desktop saat ini:

  • Casing Chaser MK I (saya beli tahun 2013)
  • Storage M2.NVME 1 TB untuk Windows
  • CPU Intel Core i5 9400F 2.9 GHz (terpikir membeli Core i9, tapi perbedaan performancenya kurang signifikan untuk use case saya)
  • Banyak harddisk
  • Ram DDR4 32 GB

Alasannya cukup panjang, tapi sekarang saya memakai Desktop Windows dan sebuah server Linux. Keduanya saya pakai bekerja. Meskipun rasanya agak ekstrim bekerja dengan dua komputer, tapi menurut saya ini workflow paling enak. Desktop dipakai untuk pekerjaan interaktif, dan Linux dipakai untuk berbagai server (samba, mongo, mysql, http, dsb) dan untuk kompilasi yang memakan waktu lama (compile kernel, compile ROM Android).

Spesifikasi server sekarang:

  • Casing nggak jelas beli second hand
  • SSD 1 TB untuk Linux
  • CPU: AMD Ryzen 5 2600X Six-Core Processor
  • RAM DDR4 16 GB
  • Banyak harddisk

Pemilihan berbagai komponen saya dasarkan pada pengukuran: dengan melihat task manager (windows) dan top (Linux). Dengan memperhatikan tool, umumnya kita bisa melihat apakah kita butuh lebih banyak memori (free memori selalu rendah atau pemakaian swap tinggi), butuh CPU yang lebih baik (CPU usage selalu tinggi), atau butuh SSD/NVME (nilai “wa” di top tinggi, atau akses disk tinggi di task manager).

Untuk CPU saya mendasarkan pemilihan pada benchmark dari http://cpubenchmark.net/ . Pertimbangan lain adalah harga, saya tidak mau menghabiskan uang 2X lipat jika performance yang didapatkan hanya bertambah sedikit (lebih baik menunggu sampai harga turun).

Perlu diperhatikan juga program spesifik yang kita pakai, contohnya IDA Pro butuh waktu lama untuk mendecompile fungi kompleks, tapi proses dekompilasi ini tidak multi thread, dan juga tidak memakai 100% CPU. Jadi memakai CPU yang 2x lebih cepat sama sekali tidak membantu mempercepat proses dekompilasi.

Sekedar tips, jika ingin merakit PC dan ingin melakukannya jangka panjang, maka:

  • belilah casing yang bagus, akan tahan lama
  • belilah PSU yang bagus dan modular, walau kabel tetap berantakan tapi sedikit lebih baik
  • belilah keyboard yang bagus (kalau suka mekanis, beli yang mekanis) karena akan tahan lama

Demikian cerita singkat ngalor-ngidul mengenai merakit dan mengupdate PC. Berikutnya saya perlu menambah storage di Thinkpad X230 saya.

MAIX GO: AIOT Board

Di jaman Artificial Intelligence (AI) dan Internert of Things (IOT), ada beberapa perusahaan yang berusaha menggabungkan keduanya menjadi AIOT (Artificial Intelligence of Things). Salah satunya adalah Sipeed dari China. Perusahaan ini mengembangkan teknologinya berdasarkan instruction set RISC-V (baca: Risk Five) yang sifatnya terbuka. Jika saat ini Intel dan ARM masih menguasai dunia, di masa depan ada kemungkinan RISC-V yang akan jaya.

Sipeed sudah membuat cukup banyak produk, baik chip SOC dengan neural accelerator maupun board-board pendukungnya. Salah satu produk mereka adalah MAIX GO. MAIX GO ini memakai SOC Kendryte K210 dengan instruction set RISC-V 64 Bit dan memiliki accelerator untuk Fast Fourier Transform dan CNN (Convolutional Neural Network). Dengan adanya accelerator tersebut, SOC ini sangat cocok untuk memproses gambar dan suara. Menurut dokumentasinya, jika ukuran model kita kecil (<5.9 Mb fixed point 8-16 bit) maka pemrosesan image real time bisa dilakukan (~30 fps).

Saya memesan board MAIX GO ini ketika ada kampanye Indiegogo bulan November tahun lalu. Paket yang saya ambil seharga 45 USD dengan ongkir 5 USD ke Thailand dengan isi sebagai berikut:

  • 1 x MAIX GO (termasuk batere)
  • 1 x M12 OV2640 Camera
  • 1 x 2.8 inch QVGA LCD
  • 1 x MAIX GO simple case
  • 1 x MAIX R6+1 Microphone Array
  • 1 x MAIX Binocular Camera

Bendanya sebenarnya sudah saya terima sejak akhir Januari dan sudah langsung saya susun, tapi karena beberapa kesulitan awal, baru saya teruskan lagi ngopreknya sekarang. Isi paket utama MAIX GO lengkap: termasuk juga batere (biasanya sulit mengirimkan ini) dan juga obeng kecil serta kabel USB ke USB-C.

Sekarang benda ini sudah tersedia umum dan bisa dibeli di seeed studio atau Aliexpress (tapi lebih mahal). Harga MAIX GO tanpa Microphone Array dan Binocular Camera adalah 40.9 USD. Microphone Array bisa dibeli terpisah seharga 11.9 USD dan Binocular Camera bisa dibeli seharga 13.9 USD. Jadi harga total paket yang sama dengan yang saya pilih waktu crowdfunding adalah: 66.7 USD (belum termasuk ongkir).

Masalah pertama dengan hardware ini adalah pada interface serialnya. Benda ini dikenali sebagai serial port, tapi koneksinya tidak stabil (kadang bisa kadang nggak). Ternyata setelah membaca dan mengikuti diskusi telegram, masalahnya adalah pada chip STM32 yang dipakai sebagai interface serial, dan bagian ini perlu diupdate.

The problem is that OS X doesn’t let non-kernel drivers capture HID devices except through the HID APIs (for security reasons – helping prevent keyloggers etc). The CMSIS-DAP python server supplied by mbed libusb which implements it’s own HID layer and accesses the underlying USB stack at a lower level than HID – which Windows and Linux allow, but OS X does not.
The solution is update the firmware of cmsis-dap for maixgo to openec, and then OSX could recognize it.
You need a stlink, and use https://github.com/pavelrevak/pystlink/blob/master/README.md to flash the openec firmware. The openec firmware download URL is: https://github.com/rgwan/open-ec/releases, download and program the firmware flash-zero.bin, re-connect the USB cable of maix-go, and OSX will show new serial port. Use homebrew, install lsusb, and use lsusb command to check whether it work

Diskusi telegram

Masalah pertama untuk mengupdate: saya perlu membongkar lagi board yang sudah saya susun susah payah mengikuti instruksi Instruksi di youtube. Perlu mengikuti Youtube karena tidak ada instruksinya di dalam paket yang disertakan ataupun di websitenya. Tidak mudah juga menebak bagaimana menyusunnya karena tidak jelas juga orientasi LCD-nya harus dicolok ke arah mana (tidak ada labelnya).

Masalah berikutnya: saya harus mencari ST-LINK yang saya miliki. Karena sedang ada kesibukan lain, saya mengurungkan niat dan hampir melupakan board ini. Kemarin teman saya ada yang menanyakan apakah saya sudah mencoba board ini dan baru ingat lagi untuk mencoba. Akhirnya saya mulai membongkar lagi board ini malam ini.

Saya tidak tahu apakah board baru sudah memakai firmware yang baru atau masih harus diupdate manual. Jika masih perlu update manual, maka jangan lupa beli hardware ST-LINK-nya juga. Harga ST-LINK cukup murah dan terpakai juga untuk development STM8 dan STM32, jadi saran saya sih beli saja satu. Sebagai catatan: harga ST-LINK di Aliexpress lebih murah.

Setelah dibongkar ternyata posisi lubang pin untuk memprogram ulang STM32 sulit dijangkau. Tadinya mau saya solder pin header sementara lalu dilepas lagi, tapi ternyata spacing pin headernya juga tidak standar (standar di sini maksud saya seperti Arduino/Raspberry Pi). Tepatnya lagi: beberapa pin header di board ini standar 2.54mm, sebagian lagi tidak. Akhirnya saya memakai kabel dupont yang sudah ada headernya dan ditahan dengan tangan.

Kemudian ada masalah lain: sistem power board ini semuanya terhubung. Jika board ini dimatikan dan saya colok ST-LINK ke pin programming standard (3.3V, GND, DIO dan CLK) maka board ini akan berusaha menyala dan tidak berhasil karena dayanya tidak cukup. Jadi untuk memprogramnya benda ini perlu sambil diberi power via USB juga.

Setelah beberapa kali mencoba akhirnya berhasil juga mengupdate STM32-nya. Untungnya ini hanya perlu dilakukan sekali, jadi saya pastikan booting masih bisa dilakukan, dan setelah itu saya susun lagi boardnya.

Setelah berhasil mengupdate, saya berusaha memflash chip utama dengan Flasher versi Windows. Hasilnya: gagal. Padahal software Windows ini disarankan dan dilink dari website utamanya.

Akhirnya flashing berhasil dilakukan dengan skrip Python kflash.py. Saya mencoba Maixpy versi terbaru. Ini merupakan firmware Python untuk MAIX yang menurut saya sangat mudah digunakan.

Setelah sampai di prompt Python, semua berjalan cukup lancar. Saya mencoba-coba berbagai skrip contoh yang ada di:

https://github.com/sipeed/MaixPy_scripts

dan hampir semuanya berjalan lancar. Jangan lupa untuk deteksi wajah, ada data yang perlu diflash terpisah (sesuai komentar skripnya). Kualitas kamera yang diberikan biasa saja.

Board MAIX Go ini memiliki ESP8285 untuk koneksi WIFI, tapi saya baru mencoba scan access point. Saya belum mencoba seberapa bagus streaming kamera ke WIFI. Perlu dicatat bahwa tidak semua board seri MAIX memiliki WIFI (misalnya MAIX Bit tidak memiliki chip WIFI).

Selain dengan Python, benda ini juga bisa diprogram dengan menggunakan C/C++ tapi inipun belum saya coba. Sejauh ini Python sudah cukup untuk banyak eksperimen. Pemrograman C/C++ bisa dilakukan dari command line ataupun menggunakan IDE Arduino (ada dokumentasi Maixduino di website sipeed tapi isinya masih sangat minim).

Sayangnya dua benda ekstra yaitu Microphone Array dan Binocular Camera belum sempat saya test. Melepas ulang modul kamera dari boardnya cukup sulit (ada beberapa baut yang perlu dilepas) sedangkan hanya ada 1 konektor kamera. Konektor mic array ada di dalam board dan sulit dihubungkan juga. Selain itu saat ini saya belum kepikiran proyek khusus yang memakai benda tersebut.

Ada satu lagi komplain mengenai benda ini yaitu mengenai speakernya. Ada bunyi statik yang selalu ada setiap waktu, dan kadang lebih parah ketika dicolok ke USB. Ternyata ini katanya normal dan jika tidak ingin suara ini, kita harus melepas kabelnya dengan solder. Ini satu-satunya bagian yang memakai kabel dan tidak memakai pin header.

Penutup

Di atas kertas kemampuan K210 sangat bagus, bahkan untuk hal-hal di luar AI dan harganya juga murah. Ada versi board dengan SOC yang sama (K210) MAIX Bit dengan kamera dan LCD hanya 20.9 USD (atau boardnya saja 12.9 USD). Tapi ada banyak hal juga yang agak menghambat chip ini:

  • Instruction set RISC-V belum terlalu dikenal, supportnya belum matang seperti ARM/Intel
  • Chip ini bersaing dengan berbagai SOC ARM yang sekarang juga mulai menyertakan accelerator untuk AI (walau harganya tak semurah K210)
  • Guide berbahasa inggris masih jarang (kebanyakan berbahasa mandarin)

Saat ini menurut saya MAIX masih belum cukup matang untuk Anda yang ingin “langsung jalan”. Namun demikian group Sipeed sangat aktif, github mereka juga masih sangat aktif, jadi sepertinya masa depan benda ini (dan produk sejenis dari Sipeed) cukup cerah.

ESP32

Beberapa tahun lalu saya menulis mengenai ESP8266, sebuah microchip Wifi yang sangat populer dari China. Karena ESP8266 yang sangat terkenal, mereka mengundang hacker-hacker dari berbagai negara untuk bekerja di perusahaan mereka untuk produk berikutnya: ESP32.

ESP32 merupakan versi lebih baik dari ESP8266, hampir dari semua segi:

  • CPU lebih cepat, dual core
  • Selain mendukung WIFI juga mendukung Bluetooth Low Energy (BLE)
  • RAM lebih besar
  • I/O lebih banyak, mendukung CAN bus
  • Memiliki sensor temperatur dan Hal effect sensor internal

Sebenarnya ESP32 ini sudah diluncurkan agak lama, tapi dulu masih banyak masalah sehingga masih kurang cocok buat pemula. Ketika dilaunch:

  • Bug silikon yang baru diperbaiki di hardware versi berikutnya
  • Arduino IDE belum mendukung ESP32
  • Porting Python dan Lua belum sempurna

Tapi sekarang statusnya sudah berubah:

  • Hardware yang baru jumlah bugnya sudah sedikit
  • Arduino sudah mendukung ESp32
  • MicroPython dan Lua sudah disupport dengan baik

Sebagai informasi: ESP32 memiliki interpreter BASIC built ini di dalam silikonnya, jadi andaikan belum menginstall compiler atau interpreter apapun, kita sudah bisa mengetes beberapa hal dengan menggunakan BASIC. Seperti BASIC di BIOS jaman IBM PC XT dulu, programnya tidak bisa disimpan.

Dari segi harga, saat ini sebagian board ESP32 sudah di bawah 5 USD (harga sudah termasuk ongkos kirim). Sementara harga ESP8266 paling murah saat ini bisa kurang dari 2 USD. Dari segi harga, untuk proyek yang tidak butuh fitur ESP32, memakai ESP8266 masih lebih baik.

Saya sendiri masih lebih suka langsung memakai esp-idf (ESP IOT Development Framework) dibanding memakai teknologi lain. Saya juga belum banyak membuat program dengan ESP32. Saat ini program besar yang saya publish hanya emulator Pokemon Go Plus yang memakai fitur BLE.

Ketika harganya masih mahal (awalnya sampai 20an USD), memakai ESP32 masih terasa kurang pas karena harganya lebih mahal dibandingkan solusi lain misalnya Orang Pi Zero hanya sekitar 10 USD (dan bisa beli banyak), Raspberry Pi Zero lebih murah lagi tapi hanya boleh satu item setiap kali membeli. Setelah harganya cukup rendah (bahkan sudah bersaing dengan ESP8266) sepertinya sudah saatnya memakai ESP32 di lebih banyak project.

Mendinginkan Raspberry Pi

Ini merupakan catatan lama ketika memakai Raspberry Pi untuk pemrosesan yang memakai CPU secara ekstensif. Ketika suhu mencapai 80-85 derajat celcius, maka akan muncul simbol termometer setengah di layar:

Over Temperature (80-85C)
Temperatur tinggi

Simbol ini akan dioverlay di atas tampilan apapun yang muncul di layar. Contohnya seperti ini.

Suhu tepatnya bisa dilihat dengan perintah:

vcgencmd measure_temp

Hasilnya langsung berupa temperatur dalam derajat Celcius. Ini temperatur normal di ruangan saya ketika Pi bekerja ringan.

$ vcgencmd measure_temp
temp=41.7'C

Munculnya simbol temperatur tinggi ini biasanya akan segera diikuti simbol berikutnya berupa termometer yang merah yang menandakan bahwa CPU sudah lebih dari 85 derajat dan akan dithrottle (performancenya dikurangi):

Over Temperature (85C+)
Overheat

Setelah program tidak bisa diakali lagi, hal berikutnya yang dicoba adalah hardware: pertama saya tambahkan heatsink dan hasilnya suhu berkurang 2-3 derajat saja, tapi kemudian panasnya terus naik. Akhirnya saya memutuskan untuk membeli casing yang memiliki fan.

Fan dalam posisi tidak dicolok (untuk menyalakan perlu dicolok ke pin VCC dan GND)

Dan ternyata berhasil, suhu bisa berkurang cukup drastis, yang tadinya sekitar 85 derajat celcius menjadi sekitar 70 derajat celcius. Tapi ada masalah yang tadinya tidak ada: bunyi fan-nya cukup mengganggu. dalam kasus tertentu Pi ini akan ada di posisi tersembunyi jadi tidak apa-apa, tapi jika kita berniat menaruh Pi di tempat sunyi ini bisa jadi masalah.

Saya tidak punya solusi khusus agar fan menjadi sunyi, jadi sepertinya kita harus memilih antara mendapatkan kecepatan yang lebih rendah karena throttling atau mendapatkan kecepatan tinggi tapi tidak senyap. Solusi yang saya coba hanya yang sederhana saja. Jika putus asa ada juga banyak solusi lain yang lebih kompleks di internet, misalnya memakai liquid cooling.

Demikian catatan singkat ini, semoga bisa membantu mereka yang memiliki masalah Raspberry Pi yang suhunya terlalu tinggi.

USB Jig untuk Samsung

Saat ini saya punya satu tablet Android Samsung Tab A SM-P355. Device ini jarang sekali terpakai kecuali untuk pentesting. Kenapa perlu tablet khusus untuk pentesting? intinya untuk menghemat waktu. Beberapa app yang saya testing butuh layar besar dan tidak cukup menggunakan HP biasa.

Kenapa tidak menggunakan emulator? beberapa aplikasi memiliki proteksi sehingga tidak jalan di emulator, sebagian aplikasi membutuhkan verifikasi SMS, sehingga harus diakali di emulator. Masalah akal-akalan ini butuh waktu, dan kadang aplikasi tetap error dan tidak jelas apakah karena akal-akalan yang dilakukan atau memang aplikasinya yang error. Kadang setelah dijelaskan panjang lebar ke developernya, jawabannya: coba dulu di hardware beneran. Setelah dicoba di hardware beneran ternyata memang aplikasinya error. Jadi untuk menghemat waktu, saya punya device khusus testing.

Beberapa waktu yang lalu saya ingin mencoba ROM alternatif untuk device ini, dengan harapan bisa lebih terpakai. Sebenarnya sudah puluhan kali saya memakai sofware Odin untuk flashing firmware Samsung dan tidak pernah gagal, dan percobaan pertama flashing juga berhasil. Entah kenapa ketika mencoba flashing kali kedua, tiba-tiba tabletnya bricked. Tidak mau menyala, ketika dicharge juga tidak ada indikator charging.

Saya pernah membaca tentang USB jig, sebenarnya ini hanya dongle USB dengan sebuah resistor kecil. Jika Samsung mendeteksi benda ini maka akan masuk ke mode di mana kita bisa memflash ulang tablet kita. Teorinya membuat USB jig ini gampang karena hanya butuh konektor USB dan resistor, tapi sayangnya mencari konektor USB yang pin 4 (pin ID)-nya bisa diakses tidak gampang. Saya membongkar beberapa kabel USB, tapi yang diekspose hanya D+/D-/Vcc/GND, konektor ID-nya tidak terkoneksi ke mana-mana.

Akhirnya setelah mengorbankan beberapa kabel USB, saya mencari USB Jig ini dari AliExpress. Ternyata benda ini sangat murah, 0.26 USD. Tadinya saya berpikir untuk menyolder manual dari ujung konektor USB (saya sudah pernah menyolder benda yang lebih kecil dari ini, misalnya ketika reverse engineering pokemon go plus), tapi daripada repot, saya pesan saja benda ini. Sekitar 11 hari kemudian benda ini sampai.

Saya langsung colokkan benda ini, dan berhasil nyala. Berikutnya saya mencari firmware yang sesuai dari updato. Samsung merupakan satu perusahaan yang cukup aneh yang tidak menyediakan firmware download secara resmi di situsnya. Untungnya ada updato yang memberikan firmware secara gratis.

Sekarang tabletnya sudah bisa menyala lagi setelah diflash dengan firmware defaultnya. Tapi sekarang saya masih belum semangat lagi untuk ngoprek benda ini, karena sudah terlanjur mengoprek berbagai benda lain. Setidaknya dengan USB Jig ini tabletnya bisa dipakai lagi, dan ketika ngoprek berikutnya saya tidak akan khawatir bricked.

Lenovo Thinkpad X230

Minggu lalu karena kombinasi beberapa hal, saya memutuskan ingin membeli Thinkpad bekas dan ngoprek FreeBSD di laptop itu. Laptopnya dipesan hari Minggu dan sampai hari Rabu siang lalu. Saat ini laptop ini sudah berhasil: diganti SSD-nya, ditambah RAM-nya, diinstall Coreboot (software open source pengganti BIOS), dan sudah diinstall FreeBSD 12 dengan segala setting yang membuat semuanya berjalan normal.

Kalau dipikir-pikir sebenarnya nggak ada alasan yang kuat untuk harus beli laptop dan install FreeBSD, cuma seneng aja ngoprek di hardware langsung. Sekitar 10 tahun yang lalu saya pernah ngoprek FreeBSD, di Virtual Machine. Porting kernel ARM untuk NAS yang dulu saya miliki. Dibandingkan virtual machine, ngoprek langsung di hardware punya tantangan sendiri.

Sebenarnya yang saya pesan dari Shopee adalah Thinkpad X220, tapi ternyata malah dikirim X230 (yang lebih baik), jadi ya saya terima aja. Spesifikasinya: Core i5-3320M 2.6 Ghz, RAM 4 G, HDD 300 GB. Laptopnya memiliki lisensi Windows 7. Ketika sampai, saya test bahwa semua hardware berjalan normal (kecuali suara, entah kenapa tidak ada suara di Windows 7, sepertinya masalah driver). Secara umum kondisi laptop cukup baik, yang agak mengganggu hanya ada cacat di layar, ada noda agak terang tapi relatif kecil. Saya punya SSD lama 60 GB yang tidak saya pakai, jadi saya ganti saja dengan SSD supaya lebih cepat sebelum saya install FreeBSD (60 GB sudah lebih dari cukup buat sistem yang lengkap).

Instalasi FreeBSD bisa saya lakukan cepat sekali, dan setelah mengikuti beberapa tutorial di Internet untuk mengubah berbagai konfigurasinya, semua bisa berjalan normal. Ini mengingatkan saya jaman dulu memakai laptop Linux, harus banyak konfigurasi berbagai hal supaya berbagai fitur bisa jalan. Saat ini kalau saya memakai Linux, semua fitur sudah jalan tanpa perlu dioprek. Berbagai fitur yang langsung dicoba adalah: WIFI, Sound, Power management (termasuk juga berbagai shortcut untuk meredupkan layar, close lid untuk hibernate, dsb).

Hal berikutnya yang ingin saya lakukan adalah menginstall Coreboot (dulu namany LinuxBIOS). Coreboot adalah proyek open source pengganti BIOS. Salah satu turunan proyek ini adalah Libreboot yang lebih strict dari coreboot, sama sekali tidak memakai “blob” proprietary.

Untuk menginstall coreboot pada X230 kita perlu membongkar dulu laptopnya dan memakai SPI Flash Programmer. Beberapa jenis Thinkpad yang lebih lama tidak butuh programmer ini, tapi versi X230 dan beberapa versi yang lebih baru sudah diproteksi sedemikian rupa sehingga tidak bisa dilakukan dengan software saja. Langkah yang diperlukan adalah mengekstrak BIOSnya, mengambil beberapa komponennya, mengganti sisanya dengan coreboot dan menuliskan kembali hasilnya ke chip tersebut. Langkah ini cuma diperlukan sekali saja, karena setelah itu BIOS akan bisa diflash langsung dari OS Linux/FreeBSD.

Membaca SPI Flash biasanya saya lakukan dari Raspberry PI (seperti ketika hacking Pokemon Go), tapi tidak berhasil ketika saya coba membaca BIOS Thinkpad ini. Kemungkinan besar masalahnya adalah kabelnya terlalu panjang. Karena kabel dari klip SPI-nya memang panjang sekali, saya mencoba mencari cara lain, dan teringat bahwa saya pernah membeli SPI Flasher berbasia CH341 yang belum pernah saya pakai. Ternyata dengan SPI Flasher ini BIOS-nya langsung terbaca.

Klip SPI Flash ini sangat berguna

Waktu membongkar laptopnya, saya lihat bahwa RAM-nya adala 1 x 4 GB DDR3, dan masih ada satu slot kosong. Saya teringat masih punya DDR3 lama dari laptop dulu, dan ternyata masih bisa dipakai. Sekarang total RAM-nya laptop ini adalah 6 GB. Ada peringatan di halaman Coreboot bahwa RAM bisa tidak terdeteksi. Tapi ternyata booting bisa berjalan dengan baik, dan bisa masuk ke FreeBSD.

Sekarang ada masalah baru: batere tidak terdeteksi oleh sistem operasi sehingga tidak diketahui kapasitasnya. Sebelum memakai coreboot, saya sudah cek bahwa baterenya masih bisa dipakai sekitar 3 jam, yang biasanya lebih dari cukup karena saya memakai laptop ini terutama ketika mengantar Jonathan Tae Kwondo, dengan waktu ganti baju dsb, akan selesai sekitar 2 jam.

Status batere adalah hal yang sangat penting untuk sebuah laptop, jadi saya baca-baca apa masalahnya. Ternyata ada banyak yang mengalami, dan solusinya adalah dengan compile kernel development terbaru. Setelah saya cek, ternyata patchnya sangat kecil, jadi saya patch saja kernel saat ini. Kompilasi kernel FreeBSD sangat mudah. Kompilasi pertama kali agak lama karena butuh ‘buildworld’ yang akan mengcompile semua requirement untuk kompilasi kernel dan semua tool standar sistem, setelah itu kita hanya perlu ‘make buildkernel’ dan ‘make installkernel’.

Saya mengecek di AliExpress dan Shopee Thailand, ternyata masih banyak yang menjual berbagai parts dan aksesori untuk Thinkpad. Komponen pengganti standar seperti Batere, Layar LCD, Keyboard masih banyak dijual. Bahkan karet penyangga “kaki” laptop yang sering lepas juga masih bisa dicari di AliExpress. Card tambahan untuk 3G/4G/GPS juga masih dijual, walaupun saat ini saya belum tertarik untuk memakainya.

Dari sisi software, banyak software Linux bisa berjalan di FreeBSD, bahkan Wine juga tersedia untuk menjalankan aplikasi Windows. Kebetulan saya butuh Wine karena gagal mengkompilasi ucblogo untuk FreeBSD dan butuh solusi cepat. Saya memakai ucblogo karena Jonathan selesai membaca komik Secret Coders, yang mengajarkan pemrograman dengan bahasa LOGO dan implementasi yang dipakai adalah ucblogo. Saya perlu memahami beberapa hal dasar yang tidak obvious (seperti mengedit/menyimpan file) agar Jonathan bisa membuat karya yang disimpan.

Beberapa hal yang tidak bisa dilakukan saat ini adalah: menonton Netflix karena masalah DRM (meski Chromium bisa diinstall tapi tidak bisa meload plugin Netflix). Untuk developer: Docker juga tidak ada di FreeBSD. VirtualBox seharusnya bisa berjalan, tapi saat ini hang ketika saya jalankan. Tapi berbagai kelemahan ini saat init tidak mengganggu bagi saya karena saya bisa menonton Netflix di HP atau komputer lain, dan saya tidak harus memakai docker (kalaupun sangat butuh, bisa SSH ke server lain).

Seiring bertambahnya usia, kebanyakan orang akan makin malas ngoprek hal-hal seperti ini, tapi bagi saya hal-hal seperti ini sangat menyenangkan. Saya jadi teringat dulu waktu saya ngoprek Linux di laptop di dekade lalu. Saya juga senang ternyata masih ingat dengan berbagai hal di FreeBSD walaupun jarang menyentuh OS ini. Tulisan iseng ini diketik dan diposting dari Thinkpad X230.


Catatan Oprekan Liburan

Pulang ke Indonesia kali ini cukup lama dari tanggal 12 Desember 2018 dan baru masuk kerja besok, tanggal 7 Januari. Sebenarnya nggak banyak yang dioprek selama liburan ini, tapi ini sekedar jadi catatan, plus ada beberapa barang yang baru sampai ketika kami sedang di Depok yang siap dioprek bulan ini.

Liburan kali ini saya berusaha meminimasi bawaan, tapi tetap ingin bisa ngoprek hardware. Kali ini saya coba membawa Pi Zero W yang sudah diberi case USB, sehingga bisa langsung dicolok ke komputer untuk powernya. Saya juga sudah setup agar Pi Zero W-nya mengemulasikan USB Ethernet, jadi bisa langsung diakses dari komputer/laptop.

Ini saya pakai untuk iseng-iseng membaca data dari beberapa kartu NFC yang saya temui. Saat ini tidak ada temuan baru yang menarik.

Waktu libur saya sempat ngoprek dan nemu bug. Sementara ini saya nggak kasih tau dulu bugnya apa, tapi sayangnya tidak ada bounty dari perusahaan tersebut. Tapi ada teman saya di situ yang mengurusin security dan pinter bikin cake, jadi ditodong aja, hasilnya Cheese Cake ini.

Dari sejak beberapa tahun lalu saya teringat sebuah game lama, tapi lupa judulnya, dan bahkan lupa di platform mana (NES atau Sega Mega Drive, dulu punya 2 console ini). Yang saya ingat cuma satu: tokohnya membawa anjing dalam petualangannya, anjingnya bisa dibuat agar terbang mengelilingi tokohnya, terus terbang menerjang musuhnya. Karena sulit mencari deskripsi ini (dan adik-adik saya juga lupa), jadi saya putuskan untuk mencoba memainkan semua game NES dan kalau tidak ketemu, akan mencoba semua game Sega Mega Drive.

Saya menggunakan 3DS untuk mencoba-coba game-game NES-nya, jadi bisa dilakukan di mana saja. Saya juga membawa 3DS dalam liburan ini dan untungnya sampai huruf C sudah ketemu judul yang saya cari: Conquest of the Crystal Palace. Walau sudah menemukan ini, saya masih akan meneruskan mencoba semua game NES.

Ini adegan yang saya ingat

Sesampainya di Chiang Mai, sudah ada beberapa paket menunggu.

Nggak semua isi paket dibahas di posting kali ini

Yang pertama adalah decoder ring hadiah dari Flare-On. Jonathan sedang suka bermain-main sebagai detektif/spy dan senang memainkan ini.

Ini hadiah dari menyelesaikan flare-on 2018

Paket lainnya adlaah Foldscope, mikroskop origami kertas. Ceritanya mikroskop ini dibuat dengan biaya 1 USD (tentunya dijual dengan harga lebih dari harga pembuatan), tapi untuk bisa mendapatkannya tidak bisa beli satuan. Harga termurah adalah 35 USD (dapat 20 Foldscope) belum termasuk ongkos kirim.

Jonathan memakai Foldscope

Beberapa waktu yang lalu kernel Linux mensupport satu arsitektur CPU baru: C-SKY dari China. Ini mungkin akan menjadi arsitektur baru terakhir yang akan ditambakan ke Linux karena sekarang semua memakai arsitektur populer atau RISC-V yang terbuka. Karena penasaran saya membeli satu development board untuk CPU ini dan baru sampai ketika saya sudah di Depok. Saat inielum sempat dicoba lebih lanjut.

Booting CSKY
Ini boardnya

Demikian catatan oprekan kali ini. Semoga tahun ini akan bisa menulis lebih banyak oprekan lain.