yllix.com

Oprek-Oprek STB Jadul ZTE B700 B700V5

STB B700v5 saat ini kayaknya sudah menjadi barang "jadul". Silakan searching di tempat-tempat jualan online, harganya lumayan murah. Apalagi kalau Anda bisa ketemu penjual offline, harganya bisa hanya 10rb. Menarik untuk di-oprek.

Kalau dibongkar, dalemannya kira-kira seperti ini :



Bahan-bahan untuk oprek-oprek STB ini cukup simple, yaitu USB-to-TTL lengkap dengan kabel jumpernya. Untungnya koneksi serial B700 ini sudah dilengkapi dengan pin di motherboardnya, jadi kita gak perlu nyolder-nyolder lagi pasang pin. Ssst ... info rahasianya adalah : hanya chipset cp2102 yang bisa nyambung ke B700. Chip-chip lain, sudah saya coba, gak bisa. Mungkin Anda berhasil ... silakan dicoba.




Langkah pertama (dan sangat penting) ... sambungkan USB-TTL Anda ke pin B700 sesuai dengan gambar (GND B700 sambung ke GND USB-TTL, TX B700 sambung ke RX USB-TTL, dan RX B700 sambung ke TX USB-TTL). Anda bisa gunakan putty, Tera Term VT, atau aplikasi terminal lain di laptop/komputer. Settingnya seperti pada umumnya device-device jaman sekarang : 115200-8-none-1-none.


Jika setelah disambungkan, dan STB dinyalain, Anda bisa melihat informasi booting dari STB tersebut, maka Anda siap untuk melanjutkan stek oprekan berikutnya. Jika belum, periksa semua tools dan setingan. Ulangi sampai langkah pertama ini berhasil ...

BAGIAN KEDUA, U-BOOT

Struktur daleman B700 adalah sebagai berikut :

# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 10000000 00020000 "NAND 256MiB 3,3V 8-bit"
mtd1: 00100000 00020000 "boot"
mtd2: 00100000 00020000 "env"
mtd3: 00500000 00020000 "conf"
mtd4: 00400000 00020000 "logo"
mtd5: 00500000 00020000 "kernel1"
mtd6: 00800000 00020000 "rootfs1"
mtd7: 04100000 00020000 "app1"
mtd8: 00500000 00020000 "kernel2"
mtd9: 00800000 00020000 "rootfs2"
mtd10: 04100000 00020000 "app2"
mtd11: 01400000 00020000 "vas"
mtd12: 04500000 00020000 "data"

Seperti yang kita lihat, ada 2 "sistem" kernel-rootfs-app ...
Iya betul, B700 seperti punya 2 sistem ... diberi nama mode safe dan mode norm. Isinya sama persis (kecuali nanti setelah kita ubah-ubah).

Untuk mengetahui kita sedang berada di mode apa, silakan saja nyalakan ... tunggu sampai semua informasi muncul ... dan setelah beberapa saat, tekan ENTER, untuk masuk prompt.

O iya, by default, kita sudah langsung berada pada akses root. Mau diapa-apain, terserah kita.
Dari prompt, ketik echo $system ... dan nanti akan muncul, norm atau safe.

Inilah yang nanti akan kita obrak-abrik ... kita gunakan salah satu sistem saja, supaya kalau ada apa-apa, kita masih bisa dengan aman berpindah ke sistem satunya.

Mari kita kerja di sistem norm -nya, dan kita biarkan sistem safe seperti aslinya, supaya kita masih bisa masuk ke sistem safe, seandainya sistem norm hasil perubahan kita, error dan gak bisa booting.

Catatan :
- semua partisi sebenarnya aman untuk kita ubah-ubah, kecuali partisi boot (mtd1). Karena disitulah bootloader disimpan. Kalau partisi boot error, B700 langsung "mati" / bricked. Dan sayangnya, saya gak tau cara benerinnya. Mungkin harus flash ulang pake alat tambahan (gak bisa pake software / command doank). Kalau bootloader-nya masih aktif ... kita masih bisa aman untuk ngobrak-ngabrik STB ini.

Asal bootloader masih aktif, kita bisa masuk ke uboot. Caranya? Tekan tombol apa saja (saya biasa tekan ENTER), di awal-awal proses booting. Tekan saja ENTER beberapa kali, begitu tulisan U-Boot muncul.


U-Boot command yang available bisa kita cek dengan mengetikkan "help".

STB-BOOT # help
?       - alias for 'help'
base    - print or set address offset
bdinfo  - print Board Info structure
bootm   - boot application image from memory
bootp   - boot image via network using BOOTP/TFTP protocol
bootsys - bootsys - boot system

chpart  - change active partition
cmp     - memory compare
cp      - memory copy
crc32   - checksum calculation
ext2load- load binary file from a Ext2 filesystem
ext2ls  - list files in a directory (default /)
fatgetlength- Get the file length (absolute path)
fatinfo - print information about filesystem
fatload - load binary file from a dos filesystem
fatloadex- load binary file from a dos filesystem
fatls   - list files in a directory (default /)
go      - start application at address 'addr'
help    - print online help
loop    - infinite loop on address range
matchfile- match a file  in a directory
md      - memory display
md5sum  - md5sum        -  calulate the md5 sum

mm      - memory modify (auto-incrementing address)
mtdparts- define flash/nand partitions
mtest   - simple RAM read/write test
mw      - memory write (fill)
nand    - NAND sub-system
nboot   - boot from NAND device
nm      - memory modify (constant address)
normal  - normal  - enter norm mode

ping    - send ICMP ECHO_REQUEST to network host
printenv- print environment variables
rarpboot- boot image via network using RARP/TFTP protocol
read    - MemRead          - Used for read memory

readconf- readconf- read config from conf partition

reset   - Perform RESET of the CPU
revision- revision- show boot revison

safe    - safe    - enter safe mode

saveenv - save environment variables to persistent storage
setenv  - set environment variables
tftpboot- boot image via network using TFTP protocol
ubi     - ubi commands
ubifsload- load file from an UBIFS filesystem
ubifsls - list files in a directory
ubifsmount- mount UBIFS volume
upgrade - upgrade -  burn image into flash

usb     - usb     - BDP USB sub-system

usbboot - usbboot - boot from USB device

version - print monitor version
write   - MemWrite          - Used for write register

Untuk menjalankan mode safe, gunakan perintah safe.
Untuk menjalankan mode norm, ketik norm.

Supaya default-nya adalah mode "norm", gunakan perintah :

setenv system norm; saveenv

Karena kita akan mencoba mengubah-ubah sistem di mode norm, langkah pertama yang sebaiknya kita lakukan (supaya tidak banyak pesan muncul di layar) adalah merubah runlevel menjadi 4, dengan perintah :

setenv runlevel 4; saveenv
norm

runlevel=4 akan menyebabkan aplikasi berhenti hanya sampai prompt, tidak akan melakukan init aplikasi-aplikasi bawaan STB (IPTV dll).

BAGIAN TIGA, MENCOBA-COBA OS LAIN

Sekarang saatnya untuk mengetahui cara kerja sistem operasi B700.

Booting B700 diawali dengan bootloader, lalu menentukan sistem mana yang sedang dipakai (norm/safe). Jika norm maka partisi mtd6 yang akan di-mount sebagai rootfs (/).
Percobaan-percobaan kita, tidak akan sampai mengganti kernel (mtd5), hanya sampai mengganti rootfs (dan partisi lain non-boot / non-kernel). Di rootfs inilah bagian utama suatu OS disimpan (setelah kernel diload).

Semua file yang ada di partisi root ini sebenarnya bisa dihapus, lalu diganti dengan file dari "OS" lain. Tapi, khusus untuk B700 ini, ada 1 file yang tidak boleh dihapus, yaitu file /boot/sbin. Mungkin ini adalah file systemd. Jadi, kalau kita nanti berencana mengganti OS di B700, file /boot/sbin bawaan, harus kita copy ke OS itu.

Karena kita tidak mengubah kernel-nya, maka modul-modul kernel bawaan juga harus kita copy-kan, supaya bisa kita load kalau diperlukan. Beberapa modul yang penting, adalah modul untuk mendukung filesystem FAT (fat.ko, vfat.ko, dan msdos.ko). Kalau modul ini tidak kita load, maka B700 tidak akan bisa membaca USB flashdisk yang diformat FAT/FAT32. Sebagai bahan latihan, silakan dicari lokasi file tersebut, adanya di dalam folder /lib.

Filesystem yang bisa dikenal oleh B700, antara lain : squashfs, jffs2, dan ubifs. ext2 dan ext4 sudah saya coba, tidak bisa.

Untuk mencoba-coba OS yang compatible dengan B700, kita akan gunakan command-command mount dan chroot.
  1. Langkah pertama, siapkan OS yang mau dicoba, download, lalu copy ke flashdisk. OS yang compatibel, adalah OS linux dengan arsitektur armel. Silakan dicari sesuai dengan keinginan. Salah satu yang bisa dicoba adalah OpenWrt armel dengan target Gemini-Willigear dari link ini : http://downloads.openwrt.org/releases/17.01.6/targets/gemini/wiligear/lede-17.01.6-gemini-wiligear-squashfs.img ... download lalu save ke flashdisk dengan nama : lede-gemini.squashfs
  2. Masukkan flashdisk ke B700, nanti dia akan detect secara otomatis. Cek dengan perintah mount ... maka akan ada folder /var/mntt/usba1
  3. Create folder /test ... lalu mount file tersebut ke folder tersebut

    # mkdir /test
    # mount -t squashfs /var/mntt/usba1/lede-gemini.squashfs /test


    jika tidak berhasil, gunakan file yang sudah saya modif ini :
    openwrt-gemini-b700.squashfs
  4. Jika sukses mount, selanjutnya gunakan chroot

    # chroot /test

    Jika berhasil masuk ke prompt, berarti OS tersebut compatible dengan B700. Jika tidak berhasil, cari lagi OS lain dengan arsitektur armel.





Setelah menemukan OS yang compatible, langkah selanjutnya adalah menimpa mtd6 dengan OS tersebut. Ada beberapa cara, tapi yang paling mudah dan aman, adalah dengan booting via mode lain. Kalau kita ingin menimpa mtd6 (mode: norm), maka kita booting B700 dalam mode safe. Dan sebaliknya (tapi jangan dulu dicoba, nanti takut salah, dan dua-duanya ketimpa, error gak bisa diapa-apain. Kecuali sudah paham benar B700).

Caranya adalah :
  1. Reboot B700, masuk ke uboot, lalu ketik safe, sehingga B700 booting ke mode safe.
  2. Dari mode safe, mount mtd6 ke folder lain, misalnya /mtd6
  3. Mount file lede ke folder /test (seperti langkah diatas)
  4. Hapus seluruh folder /mtd6
  5. Copy seluruh folder /test ke /mtd6
  6. Copy file /boot/sbin ke /mtd6/boot/sbin

    # mkdir /mtd6
    # mount -t jffs2 /dev/mtdblock6 /mtd6
    # mount -t squashfs /var/mntt/usba1/lede-gemini.squashfs /test
    # rm -rf /mtd6
    # cp -rp /test /mtd6
    # mkdir /mtd6/boot
    # cp /boot/sbin /mtd6/boot/sbin
  7. Setelah semua selesai dicopy, periksa lagi isi file di /mtd6 (terutama file boot/sbin, harus ada)
  8. Setelah pemeriksaan selesai, silakan dicoba : reboot ... kalau benar semua, harusnya Anda sudah booting ke sistem operasi lain yang dicoba (openwrt/lede). Tentu saja dengan segala keterbatasan B700 (terutama modul-modul kernel), dan dengan beberapa penyesuaian sesuai kebutuhan.

Untuk mencoba OS lain, caranya kurang lebih sama, kecuali bahwa kapasitas mtd6 amat sangat terbatas (8MB). Jadi, tidak bisa langsung copy paste dari OS baru (yang rata-rata pasti ratusan MB, atau bahkan beberapa GB). Harus dipilih dan dipilah, supaya muat. Akan kita bahas juga nanti ...


(bersambung)

Tidak ada komentar