- 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/.
4.5 KiB
4.5 KiB
B9C-RESULT — persistent display stack (ST7735S, fbcon tty1, MPP4 backlight) — PASS (2026-10-03)
The eMMC cache is now B9C b9ce13c9 (B9C_WRITE_VERIFIED). It replaces B8F 857c9c30; the B8F image is kept as backup/rollback.
What B9C adds on top of B8F
| part | change |
|---|---|
| kernel | b9c 3afc6c77 = b8d + DRM + DRM_PANEL_MIPI_DBI + DRM_FBDEV_EMULATION + FRAMEBUFFER_CONSOLE + FONTS with FONT_6x8 only (linux/aurora-b9b.config, linux/aurora-b9c.config) |
| DTB | B9B 7ca9cc79: spi@78b8000 (native CS0, stock pinctrl), panel jz08au,aurora-st7735s + panel-mipi-dbi-spi (16 MHz, mode 3, write-only, D/C 116, RESET 118, power L17 2.85 V, io L6 1.8 V, r5g6b5, 128x128, back porches 2/3), L17 constraints, MPP4 sink (drive-strength 7) + gpio-backlight |
| firmware | /lib/firmware/jz08au,aurora-st7735s.bin 58697d4d = the stock LK/dtb_01 init sequence (18 commands + the 120 ms SLPOUT delay; RAMWR left to the driver) |
| initramfs | B8F abb3bd67 + overlay: /init (+5 lines: hostname aurora, /etc/init.d/aurora-display start, getty loop on tty1), /usr/sbin/aurora-display, /etc/init.d/aurora-display |
| cmdline | earlycon console=tty0 console=ttyMSM0,115200n8 ignore_loglevel loglevel=8 rdinit=/init fbcon=font:6x8 consoleblank=0. console=tty0 is placed before the UART console so that /dev/console (and the cttyhack UART shell) stays on ttyMSM0. |
aurora-display: waits for fb0 → if fbcon's takeover already enabled the pipe (connector enabled/On + L17 used) it does no unblank (no double init);
otherwise it does one fbdev unblank → backlight on through the gpio-backlight sysfs (never raw PMIC writes) → === DISPLAY READY.
In every run the fbcon takeover enabled the pipe by itself.
Path
- B9B (RAM): first light via panel-mipi-dbi, colours/orientation/offsets confirmed (logs/b9/b9b).
- B9C RAM pretest
aurora-b9c.imgfa855e1c (ram1, class A): fbcon 21x16, DISPLAY READY 8.0 s, getty tty1, UART shell, LTE/Wi-Fi OK; operator: text readable, orientation right, nothing clipped, backlight OFF→ON. The login prompt scrolls away under the later kernel messages (ignore_loglevel) — accepted (option A). - Cache candidate
b9/b9c/cache/cache-extlinux-b9c.imgb9ce13c9 (B8F mkfs recipe, bit-identical rebuild, e2fsck clean). lk2nd emulator: S6 regression == B8F; S7 "Trying to boot 'b9c'", kernel end DDR+0x1820000 < tags +0x20a9000 < ramdisk +0x22a9000; F1/F3/F10 → emmc1 fallback. - Write (HW EDL,
B9C-write.sh): live cache == B8F 857c9c30 (pre-cache.bin = backup) → write → CACHE_MATCH → all other partitions == A3/A4pre → B9C_WRITE_VERIFIED (logs/b9/b9c/W).
Cold boots (normal power-on, no RESET, no fastboot, no UART input, no manual commands)
| run | class | display | console/getty | LTE / Wi-Fi | time | other |
|---|---|---|---|---|---|---|
| cold1 | A (RTC 3 s) | fbcon 21x16 1.77 s, DISPLAY READY 7.8 s, no unblank, errors 0 | console tty0+ttyMSM0, getty tty1, hostname aurora, UART shell on ttyMSM0 | START OK 76.4 s, AP ENABLED 80.6 s, ping 4/4 | DMS/NITZ VALID, SNTP +0.55 s | MPSS+WCNSS running, crash 0, eMMC w=0; backlight ON→OFF→ON confirmed visually (sysfs) |
| cold2-classB | B (RTC 585 s, ~12 s off) | same, DISPLAY READY 7.8 s, errors 0 | same | START OK 73.8 s, AP ENABLED 78.6 s, ping 4/4 | VALID, SNTP +0.46 s | crash 0, w=0 — counted by operator decision (relaxed criterion) |
| cold3 | A (RTC 3 s) | fbcon 1.78 s, DISPLAY READY 7.35 s, errors 0 | same | START OK 76.3 s, AP ENABLED 80.2 s, ping 4/4 | VALID, SNTP +0.09 s | crash 0, w=0 |
Not counted:
cold1-invalid: the battery dropped out at ~27 s; the second start was class B and the modem controller rolled back because the USB host was not reachable; the display part was OK.cold1-aborted: the driver was stopped before power-on, while B9L was run in between.
Deviation: the B9C criterion was "3/3 class A"; the result is 2× class A + 1× class B, accepted explicitly by the operator.
Rollback
b9/b9c/cache/B9C-rollback.sh (HW EDL) → B8F 857c9c30. Deeper: B8F-rollback.sh → B7C 14fe453a.
Not in scope / open
- Screen content is a live kernel console. A real UI comes in a later stage.
- No backlight dimming (MPP4 sink is on/off at 40 mA).
- About 1 s of dark screen between the bootloader and Linux. The display before Linux needs the B9L lk2nd port; B9L-RAM PASS (logs/b9/lk, logs/b9/b9l); flashing lk1st needs a separate GO.
- The device-tree model string still says "RAM boot B9B" (cosmetic, inherited from the B9B DTS).
B9 CLOSED.