# B9B-RESULT — first light: ST7735S through Linux DRM / MIPI-DBI (RAM-only) Date: 2026-10-03. **Result: PASS.** The image was RAM-booted with `fastboot boot` after a RESET-held power-on. Nothing was flashed. The eMMC cache is still B8F `857c9c30`, and `mmcblk0` writes = 0 for the whole boot. ## Image | Component | sha256 | Notes | |---|---|---| | `b9/b9b/out/aurora-b9b.img` | `46e7a682…` | boot.img v0, golden mm1 cmdline | | kernel `Image.gz` | `afdddcef…` | `7.2.7-aurora-b9b #8`. b8d plus `DRM`, `DRM_PANEL_MIPI_DBI`, `DRM_FBDEV_EMULATION`, `FB_DEVICE`, and the symbols they select. No fbcon, no MSM DRM (fragment `linux/aurora-b9b.config`). image_size 0x1820000, so the kernel ends at 0x81820000, below the DTB at 0x81e00000. | | `aurora-b9b.dtb` | `7ca9cc79…` | `linux/dts/msm8916-jz08-aurora-b9b.dts` = B8B plus the display nodes | | `jz08au,aurora-st7735s.bin` | `58697d4d…` | 121 B. The stock LK 19-command table, with an assert that it equals stock dtb_01; only the trailing RAMWR is dropped. Generated by `b9/b9b/mk-panel-fw.py`. | | initramfs | `8a97e93b…` | Exact B8F initramfs (`abb3bd67`) plus an overlay: firmware, test frames, `b9b-test.sh` | The out dir contains the B8F initramfs, which includes the Wi-Fi PSK, so `b9/b9b/out` must never be published. The logs were scanned for the PSK: none found. ## DT (as used) - `spi@78b8000` (BLSP1 QUP4): okay. Pinctrl as in stock: GPIO12/13/15 `blsp_spi4` 12 mA, GPIO14 `blsp_spi4` 2 mA (native CS0). - `panel@0`: - compatible `jz08au,aurora-st7735s` + `panel-mipi-dbi-spi`; `spi-max-frequency 16000000`; `spi-cpol` + `spi-cpha` (mode 3); `write-only`. - `dc-gpios` tlmm 116, `reset-gpios` tlmm 118; GPIOs configured as gpio, 8 mA, no bias (stock pmx_mdss). - `power-supply` = L17 2.85 V, `io-supply` = L6 1.8 V. - `format "r5g6b5"`; `panel-timing` 128×128 with `hback-porch 2` / `vback-porch 3` (the GRAM offset). - Backlight: `gpio-backlight` on `pm8916_mpps 4`, pinctrl `function "sink"`, `drive-strength 7`, `output-low`. It is deliberately not linked to the panel (B9B step split), and is switched only through the kernel driver (sysfs). ## Steps and evidence (logs `ram1/`: `host-actions.txt`, `uart.log`, `state-boot.txt`, `steps.txt`) 1. **fastboot boot:** OK, rc=0. NCM up 11 s later. 2. **Probe:** - `spi_qup 78b8000.spi: IN:block:16, fifo:64…` at 0.71 s. - `l17: Bringing 0uV into 2850000-2850000uV`. - `[drm] Initialized panel-mipi-dbi 1.0.0 for spi0.0 on minor 0` at 1.43 s. - `panel-mipi-dbi-spi spi0.0: [drm] fb0: panel-mipi-dbid frame buffer device`. - No display-related errors. 3. **Devices:** `/dev/dri/card0`, `/sys/class/drm/card0-SPI-1`, `/dev/fb0`. fb0 is 16 bpp, 128×128, stride 256; `/sys/class/backlight/backlight` exists. 4. **Regulators:** - After boot: L17/L6 opened by `spi0.0-power` / `spi0.0-io` but with use=0, because without fbcon nothing had done a modeset yet. L17 was physically off (EN 0x00). - The modeset was triggered the normal way: `echo 0 > /sys/class/graphics/fb0/blank` (fbdev unblank → atomic commit → pipe enable). After that: L17 **STATUS 0x82, EN 0x80, 2.85 V**, L6 use 1, `gcc_blsp1_qup4_spi_apps_clk` = **16 000 000 Hz**. GPIO118 high (out of reset), GPIO116 driven. 5. **Frame:** `b9b-test.sh show geo` wrote the RGB565 frame into `/dev/fb0`. 6. **Backlight MPP4** (PMIC reads only; nothing written raw): | State | 0xa340 MODE | 0xa346 EN | 0xa34c SINK | 0xa341/42/48/4a | |---|---|---|---|---| | Before Linux (B9A, reset defaults) | 00 | 00 | 00 | 00 | | Probe (pinctrl "sink", off) | 60 | 80 | 07 | 00 (unchanged) | | `bl on` (sysfs bl_power 0, brightness 1) | **61** | **80** | **07** | 00 | | `bl off` | 60 | 80 | 07 | 00 | | `bl on` again | 61 | 80 | 07 | 00 | On = **exactly the stock LK values** (0x61 / 0x07 / 0x80: current sink, 40 mA, enabled). Off/on control works through the driver. 7. **Operator visual check** (geo chart: white 1-px border, R/G/B/W corners, R|G|B bars, yellow arrow): **image visible, arrow points up, colours correct, border complete on all 4 sides.** So 128×128, offset X=2/Y=3, MADCTL `c8` + RGB565 and orientation are all correct with no changes. 8. **LTE/Wi-Fi:** START OK in 62.3 s; `ping -I wwan0 77.88.8.8` 5/5; AP `aurora-b8f` ch6 ENABLED in 66 s; MPSS and WCNSS remoteproc running. Same boot-time-only messages as B8F (early `wcnss.mdt` -2 before /firmware is mounted, no `regulatory.db`). 9. **eMMC:** `/sys/block/mmcblk0/stat` write fields = 0 at 96 s and at 219 s. ## Differences from stock LK (by design or inherent to the driver) - The mipi-dbi driver does its own hardware reset (low ≥20 µs, high, 120 ms) and sends SWRESET (0x01) before the firmware commands. Stock does high 1 ms → low 1 ms → high → 120 ms, with no SWRESET. The init commands, parameters and the 120 ms delay are otherwise identical. - Linux enables L17/L6 explicitly; stock LK switches no regulators. - Without fbcon, the fbdev client does not modeset by itself. Pipe enable needs an unblank, or a future DRM/fbdev user. This matters for B9C/persistent integration: the init script must unblank (or open DRM) at boot. ## Open (not blocking) - With the backlight on, the panel is off/on via MPP4 only (no dimming; sink 5–40 mA is possible later via drive-strength or an LPG). - Backlight off was verified by register readback only; the operator visually confirmed "on". - Autostart (unblank + backlight), panel blanking and suspend are not done yet. **Router stack: not touched.** STOP — B9B complete, waiting for the next GO.