uzbek-plus/logs/b9/b9c/B9C-RESULT.md
q 4a7224c41f B9: built-in display (ST7735S SPI) in Linux and persistent B9C cache
- 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/.
2026-10-03 01:45:02 +03:00

4.5 KiB
Raw Blame History

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.img fa855e1c (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.img b9ce13c9 (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.