Jika Anda membaca cerita mengenai bagaimana saya mengatasi bootloop pada Xiaomi Mi 4c, tentunya terbayang kerepotan yang saya lakukan kala itu. Hape bootloop, kapasitas baterai kian menyusut, tidak ada akses internet hingga memasang Windows 7 64 bit.
Itu bootloop perdana yang saya alami pada hape milik pribadi, jadi ya lumayan panik. Kini, setelah hape normal kembali kadang saya tersenyum kecut mengingat kejadian tersebut. Terlebih, setelah mengetahui ternyata kita tidak perlu berepot-ria memasang Windows 64 bit, atau bahkan tidak perlu Windows sama sekali jika hanya untuk flashing ROM fastboot ke Xiaomi.
Pada saat kekisruhan mengatasi bootloop tersebut, saya mendapati bahwa di dalam berkas ROM fastboot Xiaomi terdapat dua buah skrip Bourne shell (sh). Berdasar penemuan ini, setelah hape sembuh dari bootloop, saya pun kemudian mencari guna dari skrip-skrip tersebut. Dan ternyata, skrip tersebut berguna untuk melakukan flashing dari dalam sistem Linux (atau mungkin BSD dan sistem lainnya yang mengerti Bourne shell dan memiliki adb serta fastboot). Wow, andai saya tahu dan paham lebih awal...
Kemarin, demi menuntaskan rasa penasaran mengapa kemampuan penerimaan sinyal Mi 4c masih juga lemah meski telah berganti custom ROM dari yang berdasar Android 7 ke custom ROM yang berdasar Android 5.1.1, saya pun berencana melakukan flashing ulang ke ROM MIUI 6.1.7 yang berdasar Android 5.1.
Jika ternyata setelah diganti ke ROM MIUI Android 5.1 penerimaan sinyalnya masih juga lemah, sepertinya kerusakan bukan pada tingkat perangkat lunak, melainkan telah pada tingkat perangkat kerasnya.
Berikut rangkuman langkah demi langkah yang saya lakukan untuk flashing ROM fastboot ke hape Xiaomi Mi 4c dari dalam sistem Debian Sid. Sebagai catatan, bootloader hape ini telah unlocked. Saya tidak tahu apa ini berpengaruh ke bisa atau tidaknya kita flashing dari Linux, but, that's it, just for your information....
-
Buka laman en.miui.com untuk mengunduh ROM yang sesuai dengan jenis hape Xiaomi yang Anda miliki.
Berkas ROM fastboot biasa dikemas dalam bentuk arsip tgz (tar gunzip) dan berukuran lebih dari 1GB.
Selepas pengunduhan, uraikan berkas tgz tersebut agar kita bisa mengakses isinya secara langsung.
Misal, saya mengunduh ROM fastboot bernama libra_images_6.1.7_20151221.0000.11_5.1_cn_b09dac70a0.tgz dan kemudian menguraikannya menggunakan perintah berikut:tar -xvzf libra_images_6.1.7_20151221.0000.11_5.1_cn_b09dac70a0.tgz
Hasilnya adalah sebuah folder bernama
libra_images_6.1.7_20151221.0000.11_5.1_cn
, yang jika dilihat menggunakan perintahtree
, susunan isinya seperti berikut:libra_images_6.1.7_20151221.0000.11_5.1_cn ├── flash_all.bat ├── flash_all_except_data_storage.bat ├── flash_all_except_data_storage.sh ├── flash_all.sh ├── images │ ├── bk2.img │ ├── boot.img │ ├── BTFM.bin │ ├── cache.img │ ├── cust.img │ ├── dummy.img │ ├── emmc_appsboot.mbn │ ├── gpt_backup0.bin │ ├── gpt_both0.bin │ ├── gpt_main0.bin │ ├── hyp.mbn │ ├── logo.img │ ├── misc.img │ ├── NON-HLOS.bin │ ├── patch0.xml │ ├── persist.img │ ├── pmic.mbn │ ├── prog_emmc_firehose_8992_ddr.mbn │ ├── rawprogram0.xml │ ├── recovery.img │ ├── rpm.mbn │ ├── sbl1.mbn │ ├── sdi.mbn │ ├── system.img │ ├── tz.mbn │ └── userdata.img └── misc.txt 1 directory, 31 files
Bisa kita lihat dua buah skrip sh, yakni
flash_all_except_data_storage.sh
danflash_all.sh
. Skrip tersebutlah yang akan kita gunakan untuk flashing ROM fastboot MIUI ke hape Xiaomi Mi 4c dari dalam sistem Linux. -
Pasang perkakas Android Debug Bridge (ADB) dan Fastboot.
Nama paket yang mengandung perkakas tersebut mungkin akan berbeda antar distro. Pada Debian nama paketnya adalahadb
danfastboot
, yang bisa dipasang menggunakan perintah berikut:sudo apt install adb fastboot
-
Sambungkan hape ke komputer dengan menggunakan kabel USB data dan hidupkan pengaturan USB debugging di hape (Settings ➜ Additional settings ➜ Developer options ➜ USB debugging).
Jalankan perintah berikut untuk melihat apakah hape telah dikenali oleh komputer:adb devices
Jika hape telah dikenali oleh komputer, akan tampak output seperti berikut:
List of devices attached 4494c888 device
-
Jika hape memang telah dikenali oleh komputer, reboot hape ke moda fastboot. Bisa secara manual dengan cara mematikan hape dan setelah hape mati kemudian menekan tombol POWER + VOLUME DOWN, atau jika hape belum dipasangi custom bootloader (misalnya TWRP), perintah berikut akan membuat hape reboot ke fastboot:
adb reboot bootloader
-
Setelah hape masuk moda fastboot (yang ditandai tampilan layar hitam dan hape seperti mati), periksa apakah ia bisa dikenali oleh komputer.
fastboot devices
Tergantung distro atau sistem yang digunakan, Anda mungkin perlu menggunakan
sudo
dalam menjalankanfastboot
.Jika hape telah dikenali, output perintah di atas akan serupa berikut:
4494c888 fastboot
-
Saatnya untuk flashing ROM.
Masuklah ke dalam folder hasil uraian ROM fastboot pada langkah pertama di atas. Misalnya, yang telah saya contohkan folder-nya adalahlibra_images_6.1.7_20151221.0000.11_5.1_cn
.cd libra_images_6.1.7_20151221.0000.11_5.1_cn
Di dalam folder tersebut terdapat 4 skrip untuk flashing ROM; 2 skrip bat untuk digunakan di Microsoft Windows, dan 2 skrip sh untuk digunakan di GNU/Linux (atau sistem lain yang memahami Bourne shell).
Kita hanya akan peduli pada dua skrip sh tersebut:
flash_all.sh
. Skrip ini digunakan untuk flashing semua partisi di hape.flash_all_except_data_storage.sh
. Skrip ini digunakan untuk flashing semua partisi, kecuali partisi tempat menyimpan data.
Berdasar pengalaman saya, skrip
flash_all_except_data_storage.sh
tidak mencapai hasil yang diharapkan. Flashing berjalan lancar, namun hape tidak bisa masuk launcher karena banyak jendela error bermunculan dan tidak bisa ditutup. Your mileage may vary.Dari pengalaman tersebut, saya lebih menyarankan menggunakan skrip
flash_all.sh
, tentunya dengan resiko semua data di dalam hape akan dihapus. Jadi, pastikan untuk terlebih dahulu mencadangkan data penting dari dalam hape ke tempat yang lebih aman, baru kemudian ikuti langkah selanjutnya untuk flashing seluruh partisi hape. -
Jadikan skrip
flash_all.sh
executable.sudo chmod +x flash_all.sh
-
Mulai flashing dengan menjalankan skrip
flash_all.sh
. Skrip ini mendayagunakanfastboot
, jadi seperti yang telah disinggung di atas, mungkin pada beberapa distro Anda perlu untuk menggunakansudo
.sudo ./flash_all.sh
-
Skrip akan melakukan flashing secara otomatis dan tidak memerlukan interaksi dengan user, jadi kita tunggu saja sampai proses flashing selesai.
iza@sid:/tmp/libra_images_6.1.7_20151221.0000.11_5.1_cn$ sudo ./flash_all.sh product: MSM8992 target reported max download size of 536870912 bytes sending 'pmic' (36 KB)... OKAY [ 0.040s] writing 'pmic'... OKAY [ 0.021s] finished. total time: 0.061s target reported max download size of 536870912 bytes sending 'pmicbak' (36 KB)... OKAY [ 0.040s] writing 'pmicbak'... OKAY [ 0.022s] finished. total time: 0.061s target reported max download size of 536870912 bytes sending 'hyp' (92 KB)... OKAY [ 0.040s] writing 'hyp'... OKAY [ 0.024s] finished. total time: 0.064s target reported max download size of 536870912 bytes sending 'hypbak' (92 KB)... OKAY [ 0.040s] writing 'hypbak'... OKAY [ 0.024s] finished. total time: 0.064s target reported max download size of 536870912 bytes sending 'tz' (560 KB)... OKAY [ 0.059s] writing 'tz'... OKAY [ 0.034s] finished. total time: 0.093s target reported max download size of 536870912 bytes sending 'tzbak' (560 KB)... OKAY [ 0.049s] writing 'tzbak'... OKAY [ 0.032s] finished. total time: 0.081s target reported max download size of 536870912 bytes sending 'sbl1' (474 KB)... OKAY [ 0.049s] writing 'sbl1'... OKAY [ 0.032s] finished. total time: 0.081s target reported max download size of 536870912 bytes sending 'sbl1bak' (474 KB)... OKAY [ 0.049s] writing 'sbl1bak'... OKAY [ 0.035s] finished. total time: 0.084s target reported max download size of 536870912 bytes sending 'sdi' (27 KB)... OKAY [ 0.040s] writing 'sdi'... OKAY [ 0.021s] finished. total time: 0.061s target reported max download size of 536870912 bytes sending 'rpm' (187 KB)... OKAY [ 0.039s] writing 'rpm'... OKAY [ 0.026s] finished. total time: 0.066s target reported max download size of 536870912 bytes sending 'rpmbak' (187 KB)... OKAY [ 0.039s] writing 'rpmbak'... OKAY [ 0.033s] finished. total time: 0.073s target reported max download size of 536870912 bytes sending 'aboot' (469 KB)... OKAY [ 0.049s] writing 'aboot'... OKAY [ 0.031s] finished. total time: 0.080s target reported max download size of 536870912 bytes sending 'abootbak' (469 KB)... OKAY [ 0.049s] writing 'abootbak'... OKAY [ 0.031s] finished. total time: 0.081s erasing 'boot'... OKAY [ 0.039s] finished. total time: 0.039s erasing 'sec'... OKAY [ 0.044s] finished. total time: 0.044s target reported max download size of 536870912 bytes sending 'misc' (8 KB)... OKAY [ 0.040s] writing 'misc'... OKAY [ 0.021s] finished. total time: 0.061s target reported max download size of 536870912 bytes sending 'modem' (73473 KB)... OKAY [ 2.464s] writing 'modem'... OKAY [ 1.285s] finished. total time: 3.749s target reported max download size of 536870912 bytes erasing 'system'... OKAY [ 0.306s] sending sparse 'system' 1/3 (517255 KB)... OKAY [ 17.914s] writing 'system' 1/3... OKAY [ 10.276s] sending sparse 'system' 2/3 (520525 KB)... OKAY [ 17.445s] writing 'system' 2/3... OKAY [ 9.472s] sending sparse 'system' 3/3 (507806 KB)... OKAY [ 17.591s] writing 'system' 3/3... OKAY [ 10.086s] finished. total time: 83.090s target reported max download size of 536870912 bytes erasing 'cache'... OKAY [ 0.026s] sending 'cache' (8336 KB)... OKAY [ 0.367s] writing 'cache'... OKAY [ 0.161s] finished. total time: 0.554s target reported max download size of 536870912 bytes erasing 'userdata'... OKAY [ 1.122s] sending 'userdata' (332558 KB)... OKAY [ 11.211s] writing 'userdata'... OKAY [ 5.949s] finished. total time: 18.282s target reported max download size of 536870912 bytes sending 'recovery' (47717 KB)... OKAY [ 1.651s] writing 'recovery'... OKAY [ 0.839s] finished. total time: 2.490s target reported max download size of 536870912 bytes sending 'boot' (45541 KB)... OKAY [ 1.530s] writing 'boot'... OKAY [ 0.793s] finished. total time: 2.323s target reported max download size of 536870912 bytes sending 'bluetooth' (113 KB)... OKAY [ 0.040s] writing 'bluetooth'... OKAY [ 0.029s] finished. total time: 0.068s target reported max download size of 536870912 bytes sending 'bk2' (151 KB)... OKAY [ 0.040s] writing 'bk2'... OKAY [ 0.027s] finished. total time: 0.067s target reported max download size of 536870912 bytes sending 'logo' (1504 KB)... OKAY [ 0.078s] writing 'logo'... OKAY [ 0.048s] finished. total time: 0.126s target reported max download size of 536870912 bytes sending 'cust' (207452 KB)... OKAY [ 7.012s] writing 'cust'... OKAY [ 3.615s] finished. total time: 10.627s rebooting... finished. total time: 0.506s
Dan selepas flashing, skrip akan otomatis menghidupkan ulang hape. Jangan kaget jika proses boot perdana ini berlangsung agak lama, tunggu saja. Jika selama boot muncul bootsplash Mi dan kemudian android, maka kemungkinan besar proses flashing telah berhasil.
That's it.
Mudah bukan? Sedemikian mudah sehingga saya merasa bodoh telah panik dan repot ketika mengalami bootloop kemarin.
Jadi jika lain kali Anda perlu untuk melakukan flashing ROM fastboot ke hape Xiaomi (atau Android) sementara hanya memiliki sistem GNU/Linux, jangan khawatir, flash saja hapenya dari dalam Linux seperti yang telah saya terangkan di atas.
Satu yang masih mengganjal adalah; apakah cara ini bisa dilakukan pada hape yang bootloader-nya masih terkunci? Mungkin di antara pembaca ada yang telah, atau hendak mencobanya, silakan berbagi informasi di kolom komentar.
Ehm, BTW, ternyata setelah hape ini memakai ROM MIUI 6.1.7 yang berdasar Android 5.1, ia masih tetap kesulitan dalam mengais sinyal... Damn...
Wah sudah ngga pake aptitude lagi min
BalasHapusMasih lah, tapi kalau untuk di artikel mungkin akan selalu menyarankan apt, soalnya sudah pasti ada di distro Debian based, ga perlu install lagi..
Hapus