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

Logbook XIDOL K5188 / HMUF02-V05

[What is (custom)
ROM?](https://stackoverflow.com/questions/14644149/what-do-people-mean-by-rom-and-firmware-in-the-context-of-android)

Beberapa hari terakhir saya dan beberapa teman saya, 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
2.  WCN3620 wireless connectivity IC
3.  Qualcomm PM8916 0VV
4.  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: ,


## 2025-10-26

### 1. Run `flash.sh` kemudian run `edl printgpt` untuk lihat perubahan layout partisinya. Apa saja yang diubah?

Tabel GPT baru setelah flash menggunakan `flash.sh`:

    GPT Table:
    -------------
    cdt:                 Offset 0x0000000004000000, Length 0x0000000000000800, Flags 0x1000000000000000, UUID 18285060-b8c8-7cf7-2328-fd5dd2956b88, Type 0xa19f205f, Active False
    sbl1:                Offset 0x0000000008000000, Length 0x0000000000080000, Flags 0x0000000000000000, UUID 534641ab-51f1-f296-79cf-26e9c92e9002, Type 0xdea0ba2c, Active False
    rpm:                 Offset 0x0000000008080000, Length 0x0000000000080000, Flags 0x0000000000000000, UUID 4cd3470f-02ef-5e92-f4c4-14bb5251e8f1, Type 0x98df793, Active False
    tz:                  Offset 0x0000000008100000, Length 0x0000000000100000, Flags 0x0000000000000000, UUID 0929ef2f-5cbe-b222-ff9a-64578c4e1feb, Type 0xa053aa7f, Active False
    hyp:                 Offset 0x0000000008200000, Length 0x0000000000080000, Flags 0x0000000000000000, UUID bf2ea2b6-9f32-b528-bb99-c856cd988976, Type 0xe1a6a689, Active False
    sec:                 Offset 0x0000000008280000, Length 0x0000000000004000, Flags 0x0000000000000000, UUID db68eec7-4c13-bc28-20f7-2241bb41d057, Type 0x303e6ac3, Active False
    modemst1:            Offset 0x0000000008284000, Length 0x0000000000200000, Flags 0x0000000000000000, UUID f4c8387d-6628-200b-cc82-16025907d272, Type 0xebbeadaf, Active False
    modemst2:            Offset 0x0000000008484000, Length 0x0000000000200000, Flags 0x0000000000000000, UUID 45ba3e2a-d277-68a3-114a-748d8ef623af, Type 0xa288b1f, Active False
    fsc:                 Offset 0x0000000008684000, Length 0x0000000000000400, Flags 0x0000000000000000, UUID 28fa1c81-5b9f-3a57-0b29-e8ca46eb0055, Type 0x57b90a16, Active False
    fsg:                 Offset 0x000000000c000000, Length 0x0000000000200000, Flags 0x1000000000000000, UUID 0d6c74b1-89bd-841e-2e4b-b7b23246967b, Type 0x638ff8e2, Active False
    aboot:               Offset 0x0000000010000000, Length 0x0000000000100000, Flags 0x0000000000000000, UUID 2432ce91-198e-589b-6c5d-1e2953615a38, Type 0x400ffdcd, Active False
    boot:                Offset 0x0000000010100000, Length 0x0000000004000000, Flags 0x0000000000000000, UUID 80780b1d-0fe1-27d3-e423-9244e62f8c46, Type 0x20117f86, Active False
    devinfo:             Offset 0x0000000014100000, Length 0x0000000000100000, Flags 0x0000000000000000, UUID 8b46880a-3de7-53e5-741e-4602f82e1993, Type 0x1b81e7e6, Active False
    rootfs:              Offset 0x0000000014200000, Length 0x00000000d4dfbe00, Flags 0x0000000000000000, UUID a7ab80e8-e9d1-e8cd-57f1-93f69b1d141e, Type 0x97d7b011, Active False

    Total disk size:0x00000000e9000000, sectors:0x0000000000748000

Ada banyak partisi yang dihapus atau tidak ada lagi di layout partisi yang baru:
modem, sbl1bak, rpmbak, tzbak, hypbak, pad, misc, ssd, splash, DDR, system,
persist, cache, config, recovery, userdata. Ada juga tambahan partisi baru
seperti devinfo, rootfs, dan cdt.

### 2. Bagaimana `gpt_both0.bin` dibuat?

Sepertinya file ini dibuat mengikuti cara yang sama dengan yang sama temukan
pada [panduan kustomisasi partisi eMMC Dragonboard 410c
ini](https://github.com/96boards/documentation/blob/master/consumer/dragonboard/dragonboard410c/guides/customize-emmc-partition.md).
Dragonboard 410c juga ada yang pakai chipset MSM8916 dan sering saya lihat jadi
acuan untuk dukungan Linux di MSM8916. Dari panduan tersebut, file
`gpt_both0.bin` ini dihasilkan dari:

Pertama, membuat daftar partisi (`partitions.txt`) yang formatnya seperti ini:

    sec,16,303E6AC3-AF15-4C54-9E9B-D9A8FBECF401,sec.dat
    aboot,1024,400FFDCD-22E0-47E7-9A23-F16ED9382388,emmc_appsboot.mbn
    boot,65536,20117F86-E985-4357-B9EE-374BC1D8487D,
    oe,786432
    sid,2621440
    rootfs,0

Kalau dari ChatGPT, format ini memang tidak terstandar tapi umum dipakai
("Qualcomm/Linaro partition descriptors"):

    # name, size_in_sectors, partition_type_GUID, image_filename
    ,,,

GUID bisa tidak di-specify dan sepertinya punya nilai default. GUID ini
digunakan untuk mengatur jenis partisi, misalnya EFI_BASIC_DATA dan UUID-nya.

> CGPT: So if you leave the type GUID blank, the partition will be treated as a
> generic "data" type. That's fine for most Linux filesystems (ext4, btrfs,
> etc.), but it may be ignored by bootloaders expecting a known type.

Jika mengikuti panduan, file `partitions.txt` kemudian dimasukkan sebagai
pengikut argumen/flag `-p` untuk membuat file SD card menggunakan tool
`mksdcard` yang menghasilkan `sd.img`. Lalu, tool `sgdisk` digunakan untuk
membuat GPT backup, menghasilkan `gpt.bin`. File ini tidak bisa langsung
di-flash menggunakan `fastboot`, sehingga disesuaikan lagi formatnya menjadi
*proper 'fastboot' format* menggunakan tool `mkgpt`.

Saya rasa ada banyak cara yang bisa digunakan untuk membuat file GPT yang bisa
diterima oleh `fastboot flash`, dan pastinya ada cara lain untuk melakukan
flashing GPT, misalnya melalui EDL. Tapi saya tidak akan telusuri lebih jauh
lagi karena sepertinya ini sudah cukup.

Cara lain membuat gpt_both0.bin:


Side dish: sepertinya
[OpenEmbedded](https://www.openembedded.org/wiki/Main_Page) menarik juga untuk
ditelusuri

Saya menemukan [struktur yang mirip yaitu file
PIT](https://wiki.z3x-team.com/index.php?title=Samsung_PIT_Files), tapi saya
kurang yakin apakah `partitions.txt` di atas juga disebut PIT (Partition
Information Table).

## 2025-10-27

### 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)?

Saya tidak menemukan dokumentasi resmi dari fungsi masing-masing partisi
tersebut. Seharusnya fungsinya bisa ditentukan dari membaca isinya (belum saya
lakukan). Jika mengutip dari [laman
ini](https://alephgsm.com/2023/10/27/important-partitions-of-qualcomm-mobile-phones/),
fungsi-fungsi partisi tersebut diuraikan sebagai berikut.

1.  `fsc`: Mungkin "File System Cookie", tertulis untuk menyimpan cookie dari
    Modem File System (Q: apa itu Modem File System?)
2.  `fsg`: Salinan/cadangan "golden copy" dari Modem File System yang
    terenkripsi yang juga digunakan untuk "pre-populate the file system"
3.  `modemst{1,2}`: Salinan dari Modem File System (terenkripsi, katanya juga
    ini device-specific)
4.  `hyp`: Hypervisor image (???)
5.  `rpm`: Rpm image (???)
6.  `sbl1`: Secondary Boot Loader (SBL)
7.  `tz`: tz image (???)

Notes dari artikel yang sama: settingan radio/modem/baseband seperti IMEI dan
data kalibrasi sepertinya disimpan di fsc/fsg/modemst1/modemst2 dan device bound
(mungkin karena terenkripsi dengan device key). Di-mention juga bahwa modemst1
dan modemst2 bisa di-erase dan bisa secara otomatis direstore dari fsg (mungkin
tidak otomatis? tapi butuh file QCN dengan tool QPST).

Yang masih misterius: `cdt`, `tz`, `hyp`, `rpm`. Saya menemukan [GH gist
menarik](https://gist.github.com/lopestom/ce250f5de64a2764ee85092a2c01939e),
tapi sayangnya tidak membahas Qualcomm.

0.  `cdt`

    Sepertinya ini mengacu ke [Configuration Data Table
    (CDT)](https://docs.qualcomm.com/doc/80-88500-4/topic/10_Boot_loader_configuration.html).

    > A configuration data table (CDT) is a data block that contains
    > platform/device-dependent data such as the hardware platform ID and DDR
    > SDRAM configuration. The CDT is available in storage (universal flash
    > storage, embedded multimedia card, or electronically erasable programmable
    > read-only memory) or is linked with the eXtensible boot loader (XBL).

    Di script `flash.sh`, partisi ini di-flash dari file `sbc_1.0_8016.bin`.
    Setelah membaca [thread
    ini](https://lists-ec2.linaro.org/archives/list/linaro-validation@lists.linaro.org/thread/DVZLS4MACCY5MN27QN3CUTIXLGGLYBLI/),
    sepertinya partisi ini diambil dari ROM Dragonboard 410c. Mengutip dari
    [website
    postamarketOS](https://wiki.postmarketos.org/wiki/Qualcomm_Snapdragon_410/412_(MSM8916)),

    > MSM8916/APQ8016 (or Snapdragon 410) is Qualcomm SoC released in 2014, with
    > great mainline Linux support originally added for the Dragonboard 410c.
    > There is a slightly higher clocked variant (CPU cores up to 1.4 GHz)
    > available as Snapdragon 412.

    Di thread mailist di atas juga ada mention tentang kegunaan file
    `sbc_1.0_8016.bin` ini. Sayangnya, laman web forum tersebut sudah tidak ada
    lagi (di Internet Archive juga not found).

1.  `tz`: Terkait dengan TrustZone, harusnya firmware TrustZone

2.  `hyp`: Firmware "hypervisor" untuk monitor di level EL2 ([Exception
    Level](https://developer.arm.com/documentation/102412/latest/Privilege-and-Exception-levels/Exception-levels))

3.  `rpm`: Firmware "Resource and Power Management", harusnya berkaitan dengan
    PMIC

Kenapa harus pakai yang dari `base.zip`? Yang dibawa dari zip tersebut adalah
`aboot.bin`, `hyp.bin`, `sbl1.bin`, dan `tz.bin`. Saya curiga firmware-firmware
tersebut mungkin adalah versi yang sudah diubah sedikit. Mungkin akan saya coba
break-down dari sumbernya saja.

Untuk partisi `rpm`, `sbl1`, dan `tz`, imagenya diambil dari firmware
Dragonboard 401c. Ini ada di dalam script [extract_fw.sh dari
OpenStick-Builder](https://github.com/dbrant/OpenStick-Builder/blob/debian/scripts/extract_fw.sh).
Sepertinya, dragonboard410c punya firmware Debian yang bisa di-reuse.

File MBN adalah file ELF yang juga berisi custom config segment untuk modem
Qualcomm. Tool
[sbaresearch/mbn-mcfg-tools](https://github.com/sbaresearch/mbn-mcfg-tools?tab=readme-ov-file)
sepertinya bisa digunakan untuk untuk ekstraksi dan modifikasi file MBN.

Sisa partisi yang belum terjelaskan adalah `aboot` and `hyp`. Di
OpenStick-Builder, kedua partisi ini digenerate menggunakan script
[build_hyp_aboot.sh](https://github.com/dbrant/OpenStick-Builder/blob/debian/scripts/build_hyp_aboot.sh).

1.  `hyp.mbn`: dicompile dari
    [qhypstub](https://github.com/msm8916-mainline/qhypstub?tab=readme-ov-file)

        make -j$(nproc) -C src/qhypstub CROSS_COMPILE=aarch64-linux-gnu-

2.  `aboot.mbn`: dicompile dari
    [lk2nd](https://github.com/msm8916-mainline/lk2nd).

        make -j$(nproc) -C src/lk2nd LK2ND_BUNDLE_DTB="msm8916-512mb-mtp.dtb" LK2ND_COMPATIBLE="yiming,uz801-v3" \
        TOOLCHAIN_PREFIX=arm-none-eabi- lk1st-msm8916

Setelah dicompile, kedua file kemudian di-sign menggunakan test keys Qualcomm
melalui tool [qtestsign](https://github.com/msm8916-mainline/qtestsign). Program
qtestsign ini sepertinya memanipulasi segmen ELF khusus ("hash segment") untuk
menyimpan: header MBN, hash untuk setiap segmen ELF, signature (masih dummy),
dan dummy certificate chain.

Referensi untuk format hash segment (untuk sekarang belum saya eksplor):
[v1](https://www.qualcomm.com/content/dam/qcomm-martech/dm-assets/documents/secure-boot-image-authentication_11.30.16.pdf),
[v2](https://www.qualcomm.com/content/dam/qcomm-martech/dm-assets/documents/secure-boot-and-image-authentication-version_final.pdf)

Proses signing menggunakan qtestsign ini works karena secure boot tidak
di-enable di model XIDOL HMUF02-V05 ini. Dari dokumentasi qtestsign, ternyata
beberapa SoC Qualcomm punya format hash segment yang berbeda-beda, jadi tool ini
hanya works di beberapa SoC tertentu saja (termasuk MSM8916). Bahkan ada yang
tidak perlu di-sign.

> On some platforms only the hashes are required, others also require a valid
> certificate chain (but no valid signature). Some platforms even accept
> unsigned ELF images and can therefore work without using qtestsign.

### 4. Kenapa beberapa partisi di-flash berkali-kali? (seperti `boot`)

Untuk memastikan agar partisi boot 

### 5. Jelaskan secara ringkas apa yang disiapkan dengan menjalankan `flash.sh`!

Dijawab di section berikutnya.

### 6. Kapan EDL mode dijalankan?

Dijawab di section berikutnya.

## sekitar 2025-11-07

Saya belum ngoprek modem ini lagi. Tapi saya sempat membuat desain enclosure
sederhana dan saya upload ke Printables di
.
Terima kasih Seclab Indonesia karena sudah memfasilitasi 3D printer untuk
ngoprek2 :D

## 2025-12-07

Hari ini saya membaca ulang dan melengkapi logbook ini.

## 2025-12-13

Saya kembali lagi melengkapi logbook ini. Beberapa link menarik:

1.   -\> artikel yang mention soal running
    HMUF, dan punya fork OpenStick-Builder yang sepertinya lebih baru (bahkan
    sudah ditambahin gpiod)
2.   -\> fork-nya dmitrybrant

## 2025-12-14

Saya, Mas Riyan, dan Mas Reqy beli lagi modem di online shop. Kami kira yang
dibeli adalah UZ801, ternyata XIDOL lagi...

## 2025-12-15

Saya melengkapi logbook ini lagi. Saya sampai bikin script agar bisa update post
di blog ini ala hot reload dari terminal (agar saya ngeditnya bisa di lokal).

Saya juga sambil coba run
[dbrant/OpenStick-Builder](https://github.com/dbrant/OpenStick-Builder) dan
berhasil sampai akhir tanpa ada yang saya edit.
Created: 2025-10-21 16:59:52, Updated: 2025-12-15 15:17:03, ID: 930cdae1-b8d9-49f6-8b34-58174a890fdf