lcat
My personal /var/log
  • Home
  • Contact
  • HackMe!

Logbook memahami Linux dan persoalan custom ROM XIDOL K5188

Beberapa hari terakhir saya dan beberapa teman saya (worth mentioning: Mas Riyan & Mas Rifqi) dibuat pusing oleh [XIDOL K5188](?q=xidol). Karena sepertinya hanya akan tambah pusing, saya pikir mungkin akan lebih baik jika saya rangkum saja hal-hal yang saya dan teman-teman lainnya pelajari di sepanjang jalan. Goal akhirnya adalah bisa membuat sendiri Debian firmware dengan fitur modem dan wifi yang berfungsi. Syukur-syukur jika bisa atur LED.

### 2025-10-21

Awal logbook ini dibuat. Hari ini saya baca-baca soal DTB. Jika dilihat dari `build.prop` di stock ROM, XIDOL K5188 ini hanya memberi info:

```
$ cat build.prop
# begin build properties
# autogenerated by buildinfo.sh
ro.build.id=KTU84P
ro.build.display.id=msm8916_32_512-userdebug 4.4.4 KTU84P eng.root.20240826 test-keys
ro.build.version.incremental=eng.root.20240826
ro.build.version.sdk=19
ro.build.version.codename=REL
ro.build.version.release=4.4.4
ro.build.date=2024年 08月 26日 星期一 22:43:49 CST
ro.build.date.utc=1724683429
ro.build.type=userdebug
ro.build.user=android
ro.build.host=android
ro.build.tags=test-keys
ro.product.model=HiMI_UFI
ro.product.brand=HiMI
ro.product.name=HiMI_UFI
ro.product.device=HiMI_UFI
ro.product.board=msm8916
ro.product.cpu.abi=armeabi-v7a
ro.product.cpu.abi2=armeabi
ro.product.manufacturer=HiMI
ro.product.locale.language=en
ro.product.locale.region=US
ro.wifi.channels=
ro.board.platform=msm8916
# ro.build.product is obsolete; use ro.product.device
ro.build.product=HiMI_UFI
# Do not try to parse ro.build.description or .fingerprint
ro.build.description=msm8916_32_512-userdebug 4.4.4 KTU84P eng.root.20240826 test-keys
ro.build.fingerprint=qcom/msm8916_32_512/msm8916_32_512:4.4.4/KTU84P/eng.root.20240826:userdebug/test-keys
ro.build.characteristics=default
# end build properties
```

Jika berkonsultasi ke Mbah Google, tidak banyak referensi yang spesifik tentang si HiMI_UFI ini. Tapi yang jelas, sepertinya dia masuk keluarga modem 4G MSM4916 model UFI_xxx.

Beberapa informasi dari marking di chip-chip pada PCB:

1. WTR1605L
1. WCN3620 wireless connectivity IC
1. Qualcomm PM8916 0VV
1. KMF5X0005C-B211 eMCP (eMMC+DRAM)

Ada gambar PCB dengan nomor seri/revisi yang sama (HMUF02-V05) pada [salah satu komentar di sini](https://gist.github.com/kinsamanka/0b01cd02412bd13ee072072043d46fa2?permalink_comment_id=5685615#gistcomment-5685615).

Saya juga baca-baca dan mencoba step-by-step tutorial dari [kinsamanka/OpenStick-Builder](https://github.com/kinsamanka/OpenStick-Builder). Ini sangat menarik karena OpenStick yang asli, setahu saya, tidak memprovide cara dia mem-build Debian image-nya. Tutorialnya tidak pakai HandsomeMod kernel, tapi pakai kernel dari postmarketOS. Saya sudah berhasil build. Besok akan coba flash.


### 2025-10-22

Yang kemarin saya build sudah saya flash, tapi sayangnya tidak bisa terdeteksi dari adb maupun fastboot, sehingga terpaksa harus saya restore ke stock ROM via edl. Kemudian, hari ini saya menemukan dan ingin mencoba [step-by-step building OpenStick ini](https://github.com/redwoz/msm8916-openstick-build).

Kalau dibaca dari README, hasil dari proses buildnya adalah image dari rootfs dan kernel yang siap untuk diflash. Tapi, sebelum itu partisi-partisinya harus di-setup terlebih dahulu.

> Fresh devices need to have their non-rootfs partitions flashed using [the OpenStick process](https://extrowerk.com/2022-07-31/OpenStick.html)

Sebagai informasi, berikut hasil dari `edl printgpt` dari modem XIDOL saya yang sudah saya flash stock ROM:

```
GPT Table:
-------------
modem:               Offset 0x0000000004000000, Length 0x0000000004000000, Flags 0x1000000000000000, UUID 0500af3e-e0f2-5464-3fef-9cb298fe235b, Type EFI_BASIC_DATA, Active False
sbl1:                Offset 0x0000000008000000, Length 0x0000000000080000, Flags 0x0000000000000000, UUID 845a881a-a92d-fb69-3005-3017018d16f9, Type 0xdea0ba2c, Active False
sbl1bak:             Offset 0x0000000008080000, Length 0x0000000000080000, Flags 0x0000000000000000, UUID 342cbb6c-0387-6d48-6ccd-6c7154949dde, Type EFI_BASIC_DATA, Active False
aboot:               Offset 0x0000000008100000, Length 0x0000000000100000, Flags 0x0000000000000000, UUID fad78b90-626d-c302-d899-cdea098f2da2, Type 0x400ffdcd, Active False
abootbak:            Offset 0x0000000008200000, Length 0x0000000000100000, Flags 0x0000000000000000, UUID be2d6949-2dbd-fd55-810d-33039219a2b4, Type EFI_BASIC_DATA, Active False
rpm:                 Offset 0x0000000008300000, Length 0x0000000000080000, Flags 0x0000000000000000, UUID 77562045-a05a-0970-ebc0-f0757483b23d, Type 0x98df793, Active False
rpmbak:              Offset 0x0000000008380000, Length 0x0000000000080000, Flags 0x0000000000000000, UUID efa048d6-11cb-e111-af8c-10731f1425bf, Type EFI_BASIC_DATA, Active False
tz:                  Offset 0x0000000008400000, Length 0x0000000000080000, Flags 0x0000000000000000, UUID b76d44ff-9867-50df-b153-660f9cb2a972, Type 0xa053aa7f, Active False
tzbak:               Offset 0x0000000008480000, Length 0x0000000000080000, Flags 0x0000000000000000, UUID d169954e-25b1-6fe4-3b79-5de6dcf6d089, Type EFI_BASIC_DATA, Active False
hyp:                 Offset 0x0000000008500000, Length 0x0000000000080000, Flags 0x0000000000000000, UUID 24681f91-c77a-a3dc-c269-1e047696d8ae, Type 0xe1a6a689, Active False
hypbak:              Offset 0x0000000008580000, Length 0x0000000000080000, Flags 0x0000000000000000, UUID d9703d2f-4bc9-33bd-f307-9fe588e10a73, Type EFI_BASIC_DATA, Active False
pad:                 Offset 0x0000000008600000, Length 0x0000000000100000, Flags 0x0000000000000000, UUID d615d64d-d794-b56c-d446-d64de7f78ebc, Type EFI_BASIC_DATA, Active False
modemst1:            Offset 0x0000000008700000, Length 0x0000000000180000, Flags 0x0000000000000000, UUID 9140f236-ae8c-6807-1270-25d2b44c96d8, Type 0xebbeadaf, Active False
modemst2:            Offset 0x0000000008880000, Length 0x0000000000180000, Flags 0x0000000000000000, UUID 4ed9545b-01e4-1809-1436-58cdb6007bef, Type 0xa288b1f, Active False
misc:                Offset 0x0000000008a00000, Length 0x0000000000100000, Flags 0x0000000000000000, UUID 8486fb13-bdee-880d-f1ff-e2f78ca436e7, Type 0x20117f86, Active False
fsc:                 Offset 0x0000000008b00000, Length 0x0000000000000400, Flags 0x0000000000000000, UUID c24d9fea-64ad-ed47-f03f-ed5a54fc2d88, Type 0x57b90a16, Active False
ssd:                 Offset 0x0000000008b00400, Length 0x0000000000002000, Flags 0x0000000000000000, UUID 71ee5e6c-5bf6-bbf8-48a7-49a84af6d540, Type 0x2c86e742, Active False
splash:              Offset 0x0000000008b02400, Length 0x0000000000a00000, Flags 0x0000000000000000, UUID 7e5c02ce-3993-c933-32f0-27d1dc4cbfcc, Type 0x20117f86, Active False
DDR:                 Offset 0x000000000c000000, Length 0x0000000000008000, Flags 0x1000000000000000, UUID 0a7337db-7ff8-cdf5-39f1-430a507eb37b, Type 0x20a0c19c, Active False
fsg:                 Offset 0x000000000c008000, Length 0x0000000000180000, Flags 0x1000000000000000, UUID eb85d748-0212-9919-ca5f-2bb72d3a0991, Type 0x638ff8e2, Active False
sec:                 Offset 0x000000000c188000, Length 0x0000000000004000, Flags 0x1000000000000000, UUID a68e17a4-fe4b-0444-5922-12b0bc7102d2, Type 0x303e6ac3, Active False
boot:                Offset 0x000000000c18c000, Length 0x0000000001000000, Flags 0x1000000000000000, UUID 51785e6e-113a-dd15-996b-2c04c95610d7, Type 0x20117f86, Active False
system:              Offset 0x000000000d18c000, Length 0x0000000032000000, Flags 0x1000000000000000, UUID 429733d1-ca08-c8ce-a44f-247984aa725c, Type EFI_BASIC_DATA, Active False
persist:             Offset 0x000000003f18c000, Length 0x0000000002000000, Flags 0x1000000000000000, UUID b05508ef-86d9-ca21-3372-52cea5e5db11, Type EFI_BASIC_DATA, Active False
cache:               Offset 0x000000004118c000, Length 0x0000000010000000, Flags 0x1000000000000000, UUID ef7033a9-cd92-be3e-a68b-ab773d19bc24, Type EFI_BASIC_DATA, Active False
config:              Offset 0x0000000054000000, Length 0x0000000000080000, Flags 0x0000000000000000, UUID 4f6a3972-eb46-c5f8-e5cf-6e7879e6fb6e, Type 0x91b72d4d, Active False
recovery:            Offset 0x0000000058000000, Length 0x0000000001000000, Flags 0x1000000000000000, UUID e135b3ba-8d2d-b359-f68c-0e3c084c12e3, Type 0x20117f86, Active False
userdata:            Offset 0x000000005c000000, Length 0x000000008cffbe00, Flags 0x0000000000000000, UUID e1a4b370-e5ec-e29f-135c-875f1a96ef10, Type 0x1b81e7e6, Active False

Total disk size:0x00000000e9000000, sectors:0x0000000000748000
```

Menelusuri proses flash OpenStick yang ada di file `flash.sh` dalam [base.zip](https://github.com/OpenStick/OpenStick/releases/download/v1/base-generic.zip), hal-hal yang dilakukan adalah:

1. Erase boot partition
2. Flash aboot partition dari aboot.bin
3. Dump dan backup fsc, fsg, modemst1, modemst2
4. Erase boot lagi (kenapa?)
5. Reboot to bootloader
6. Flash partition table (fastboot flash partition gpt_both0.bin) -- sepertinya ini akan menghapus semuanya karena partition tablenya diubah
7. Flash partisi-partisi: hyp.mbn, rpm.mbn, sbl1.mbn, tz.mbn, fsg.mbn, modemst1.mbn, modemst2.mbn, aboot.bin (lagi?), cdt (`sbc_1.0_8016.bin`, ini apa?)
8. Erase boot partition (lagi?)
9. Erase rootfs partition (lagi?)
10. Reboot to fastboot, ready to flash OS

Terkait `aboot.bin`: Artikel menarik dari [website bukunya Jonathan Levin](https://newandroidbook.com/Articles/aboot.html) ini membahas tentang `aboot.img` yang berisi Android bootloader. Membaca artikelnya lumayan membuka pikiran saya tentang proses boot Android dan beberapa hal menarik tentang exception vector di ARM. Singkatnya, `aboot.bin` ini adalah Android bootloader yang akan berjalan setelah Secondary Bootloader (SBL). Program `aboot.bin` ini adalah yang menangani proses booting Linux (`boot_linux`), handling mode fastboot, dan mode recovery.

Saatnya istirahat. Pertanyaan untuk besok:

1. Run `flash.sh` kemudian run `edl printgpt` untuk lihat perubahan layout partisinya. Apa saja yang diubah?
2. Bagaimana `gpt_both0.bin` dibuat?
3. Apa isi dari masing-masing partisi yang ada? Misalnya fsc, fsg, modemst1, modemst2, hyp, rpm, sbl1, tz, fsg, cdt? Mengapa beberapa partisi harus diubah menggunakan image dari `base.zip` (seperti hyp, sbl1)?
4. Kenapa beberapa partisi di-flash berkali-kali? (seperti `boot`)
5. Jelaskan secara ringkas apa yang disiapkan dengan menjalankan `flash.sh`!
6. Kapan EDL mode dijalankan?

Untuk menjawab: , 
Created: 2025-10-21 16:59:52, Updated: 2025-10-22 17:52:59, ID: 930cdae1-b8d9-49f6-8b34-58174a890fdf