- B9A: read-only audit of stock LK/DT: the panel is an ST7735S 128x128 on SPI (BLSP1 QUP4, 16 MHz, mode 3, D/C GPIO116, RESET GPIO118), backlight = PM8916 MPP4 current sink 40 mA. - B9B: upstream panel-mipi-dbi with the stock init sequence as firmware; MPP4 sink via pinctrl + gpio-backlight; first light with correct colours/orientation/offsets. - B9C: fbcon (6x8, 21x16) on tty1 + getty, UART console kept, aurora-display service; cache B9C b9ce13c9 written and verified, cold boots with LTE + Wi-Fi + display. - B9L (RAM only): lk2nd second stage with an msm8916 SPI panel port shows a picture before Linux. - Sanitizer: whitelist for b8/ and b9/.
49 lines
3.8 KiB
Bash
Executable file
49 lines
3.8 KiB
Bash
Executable file
#!/bin/bash
|
|
# B9C — the ONLY write: cache := ext2 extlinux -> B9C candidate (B8F + display: b9c kernel (DRM/panel-mipi-dbi/fbcon 6x8), B9B DTB, aurora-display, tty1 getty).
|
|
# Run on 480s ONLY after explicit GO. Derived 1:1 from b8/b8f/cache/B8F-write.sh (B8F_WRITE_VERIFIED 2026-10-03); only image, expected hashes,
|
|
# rollback references and log dir changed. The pre-write readback of the live cache (must be B8F 857c9c30) is kept as backup.
|
|
# Entry: HW EDL (battery on, D+->GND, plug USB, release). Never `edl reset`. Stops at first failed gate.
|
|
cd ~/doc/modem/jz08-aurora || exit 1
|
|
L=firehose/007050e100000000_394a2e47cf830150_fhprg_peek.bin
|
|
O=logs/b9/b9c/W ; A3=logs/b5a/A3 ; P=logs/b5a/A4pre ; mkdir -p $O
|
|
NEW=b9/b9c/cache/cache-extlinux-b9c.img ; NEW_SHA=b9ce13c9f48e36a5054c0ae3c39dc3f184b1fc2eea1d57d4b8bd8e9ae800a37b
|
|
OLD_SHA=857c9c300055804cab673027bc8cddc010ad04bfec5d75276d8229b84846c4b2 # current cache = B8F extlinux
|
|
BOOT_SHA=e9579f33c7304cd47f487f2b61cd9226dc04fd3a63775d62b4b95fc15bd3ebff
|
|
ABOOT_SHA=3b8cd2667837fc7083cb28991d849f9b408a07fa743bfd05eafee7b053760f85
|
|
die(){ echo "STOP: $*"; exit 1; }
|
|
sha(){ sha256sum "$1" | cut -d" " -f1; }
|
|
E(){ edl --loader=$L "$@"; }
|
|
echo "== G0 inputs"
|
|
[ "$(sha $L)" = 53f193500c03248f0d671ab57bfe9ca8a42967e97f28403294b4b3f854075aca ] || die loader
|
|
[ "$(sha $NEW)" = $NEW_SHA ] && [ $(stat -c %s $NEW) = 134217728 ] || die candidate
|
|
[ "$(sha b8/b8f/cache/cache-extlinux-b8f.img)" = $OLD_SHA ] || die rollback-image
|
|
[ "$(sha logs/b8/b8f/W/11-cache-readback.bin)" = $OLD_SHA ] || die b8f-readback-backup
|
|
lsusb | grep -q 05c6:9008 || die "no 9008"
|
|
echo "== G1 identity + geometry + baseline"
|
|
E printgpt > $O/00-printgpt.log 2>&1 || die printgpt
|
|
grep -aq "Serial: *0x<SAHARA_SERIAL>" $O/00-printgpt.log || grep -aq "Mode detected: firehose" $O/00-printgpt.log || die serial
|
|
grep -a "^cache:" $O/00-printgpt.log | grep -q "Offset 0x000000004118c000, Length 0x0000000008000000" || die cache-geometry
|
|
E rs 0 34 $O/pre-gptp.bin >/dev/null 2>&1; cmp $O/pre-gptp.bin $A3/gpt-primary-34.bin || die gpt-changed
|
|
E r boot $O/pre-boot.bin >/dev/null 2>&1; [ "$(sha $O/pre-boot.bin)" = $BOOT_SHA ] || die boot-not-emmc1
|
|
E r aboot $O/pre-aboot.bin >/dev/null 2>&1; [ "$(sha $O/pre-aboot.bin)" = $ABOOT_SHA ] || die aboot-not-autoboot
|
|
E r cache $O/pre-cache.bin >/dev/null 2>&1; [ "$(sha $O/pre-cache.bin)" = $OLD_SHA ] || die cache-not-backup
|
|
echo "== W cache := candidate (LBA 2133088, 262144 sectors)"
|
|
E w cache $NEW > $O/10-cache-write.log 2>&1; echo "rc=$?"; grep -a "Wrote" $O/10-cache-write.log
|
|
E r cache $O/11-cache-readback.bin > $O/11-cache-readback.log 2>&1 || die readback-rc
|
|
sha256sum $NEW $O/11-cache-readback.bin
|
|
cmp $NEW $O/11-cache-readback.bin || die "CACHE READBACK MISMATCH — do NOT reboot; run b9/b9c/cache/B9C-rollback.sh"
|
|
echo CACHE_MATCH
|
|
echo "== V everything else unchanged"
|
|
E rs 0 34 $O/post-gptp.bin >/dev/null 2>&1; cmp $O/post-gptp.bin $A3/gpt-primary-34.bin || die gptp
|
|
E rs 7634911 33 $O/post-gptb.bin >/dev/null 2>&1; cmp $O/post-gptb.bin $A3/gpt-backup-33.bin || die gptb
|
|
E rs 305184 1024 $O/post-tzbak.bin >/dev/null 2>&1; cmp $O/post-tzbak.bin $A3/tzbak-305184.bin || die tzbak
|
|
E r boot $O/post-boot.bin >/dev/null 2>&1; [ "$(sha $O/post-boot.bin)" = $BOOT_SHA ] || die boot
|
|
E r aboot $O/post-aboot.bin >/dev/null 2>&1; [ "$(sha $O/post-aboot.bin)" = $ABOOT_SHA ] || die aboot
|
|
for p in sbl1 rpm tz hyp recovery modemst1 modemst2 fsg fsc persist; do
|
|
E r $p $O/post-$p.bin >/dev/null 2>&1; cmp $O/post-$p.bin $A3/$p.bin || die "$p changed"; echo "$p == A3"
|
|
done
|
|
for p in modem system userdata; do
|
|
E r $p $O/post-$p.bin >/dev/null 2>&1; cmp $O/post-$p.bin $P/$p.bin || die "$p changed"; echo "$p == A4pre"; rm -f $O/post-$p.bin
|
|
done
|
|
(cd $O && sha256sum *.bin > SHA256SUMS)
|
|
echo "B9C_WRITE_VERIFIED — power off fully (USB, then battery) before first boot"
|