42k Series Custom firmware for Pace V5471 xDSL Modem
(c) 2016-2017 Triple Oxygen
É sempre arriscado editar e criar imagens custom para o aparelho. Algumas situações são complicadas de resolver quando uma imagem problemática é gravada.
O uso dessas informações e ferramentas é por sua conta e risco.
- Clone este repo
- Escolha a versão base da imagem e baixe o rootfs daqui
- Coloque o rootfs baixado na raiz do projeto
- Execute (substitua a versão pelo número do rootfs (e.g.: 42006, 42007, ...). Aqui vamos usar a 42007 como exemplo):
sudo ./unpack_rootfs.sh 42007
- Atenção: é importante descompactar o rootfs como root para que os devs (/dev/) possam ser criados com sucesso!
- O conteúdo do rootfs estará em
squashfs-root
, faça suas modificações nesta pasta - Execute
./build.sh 42007
- A imagem gerada estará em
build/42007/
com a extensão.bin
- Esta imagem ainda precisa ser corrigida utilizando o
firmInfo_r2.py
.
Script as is. Infelizmente não tenho a versão mais atualizada do script firmInfo_r2.py
(devo ter sobrescrito em algum momento) que faz tudo sozinho. Esta versão é mais "manual", quem puder atualizá-la, ficaria grato. É simples.
- Na pasta de saída
build/42007/
, obtenha o tamanho dos arquivosrootfs.patched
e da imagem final.bin
(e.g.: B14103-GVT-OXY-42007.bin)- Exemplo
$ ls -l *.bin rootfs.patched -rw-r--r-- 1 ... 14815232 Jul 11 21:09 B14103-GVT-OXY-42007.bin -rw-r--r-- 1 ... 12677120 Jul 11 21:06 rootfs.patched
- Exemplo
- Edite a imagem
.bin
de saída com um editor hexadecimal, indo nos offsets especificados e editando (sobrescreva, não insira!):
Offset 0x40c (4 bytes) - Tamanho total da imagem `.bin`, big-endian
Offset 0x57c (4 bytes) - Tamanho do `rootfs.patched`, big-endian
- Exemplo
Offset 0x40c = 00 E2 10 00 (14815232 em hex, big-endian) Offset 0x57c = 00 C1 70 00 (12677120 em hex, big-endian)
- Salve o arquivo, execute o
firmInfo_r2.py
na imagem.bin
alterada acima:python firmInfo_r2.py B14103-GVT-OXY-42007.bin
- A imagem resultante com
-fixed-header.bin
estará pronta para ser gravada no modem.