uzbek-plus/logs/b10/b10b1/B10B1-RESULT.md
q 58dcb3d121 B10: battery charging — PM8916 LBC supervisor v4 (CHARGE/HOLD, FAULT safe clamp to 4.00 V) and persistent B10B-5 cache
- LBC supervisor v1..v4 (linux/patches/b10b3-lbc-supervisor-v3.patch + b10/b10b3/lbc-v3-to-v4-fault-clamp.diff):
  CHARGING 4.20 V/450 mA -> HOLD 4.05 V after 60 min CV -> battery -> new cycle on USB insert; FAULT = VDD_MAX 4.00 V clamp
- RAM tests C/B/D/D2/D3/D4 (safety timer only ends fast charge), B10B-4 actuator audit (VDD_MAX works, USB_SUSP does not),
  B10B-5 FAULT clamp regression, production run, warm reboot via PON reboot reason
- cache = B10B-5 c3732515 (HW EDL write, readback + full partition verify), class-A persistent validation
- test-only hooks/images are not part of the production kernel; images with the AP PSK are not published
2026-10-04 19:00:27 +03:00

4.6 KiB
Raw Permalink Blame History

B10B1-RESULT — upstream PM8916 VM-BMS + simple-battery, RAM only

Date: 2026-10-03. Verdict: PASS. aboot/cache untouched, eMMC writes = 0, no manual PMIC writes, pm8916_lbc not built, pm8916_usbin unchanged. Boot class A (RTC 6 s) via RESET-held lk1st fastboot.

Image

  • kernel 7.2.7-aurora-b10b1 = b10b0 + CONFIG_BATTERY_PM8916_BMS_VM (fragment linux/aurora-b10b1.config; .config diff = 1 option + LOCALVERSION).
  • DTB linux/dts/msm8916-jz08-aurora-b10b1.dts = B10B-0 + battery: simple-battery + &pm8916_bms { status okay; monitored-battery } (no power-supplies: there is no charger supply in this step).
  • simple-battery (temporary B10 values): charge-full-design 3000 mAh, voltage-min-design 3.40 V, voltage-max-design 4.20 V = deliberate B10 safe cap — the cell's datasheet allows 4.35 V. Nominal 3.8 V cannot be expressed: the battery.yaml binding has no nominal-voltage property (not added).
  • image b10/b10b1/out/aurora-b10b1.img 1029647d (build-b10b1.sh), driver b10b1-boot.sh K, series b10b1-cal.sh N P. out/ contains the B8F initramfs (PSK) → never publish.

Before boot (baseline = running B10B-0 RAM boot, same lk1st fastboot path, baseline-b10b0.txt)

BMS 0x4040=0a 0x4046=80 0x4047=55 0x4055=0a 0x4056=07. Charger: 0x1009=05 0x1040/41=08 0x1044=00 0x1045=0a 0x1047=04 0x1049=90 0x105b=09 0x1060/61=80/1d 0x10ee=00 0x1308/09=02/90, BOOT_DONE 0x1642=80 (lk1st fastboot).

After probe

  1. /sys/class/power_supply/pm8916-bms-vm (type Battery), no dmesg errors.
  2. Properties: status Discharging (no supplier → power_supply_am_i_supplied = -ENODEV), health Good, voltage_now, voltage_ocv, voltage_max_design 4200000, voltage_min_design 3400000, charge_full_design 3000000. No capacity, no current_now, no charge_now/energy — the upstream driver does not implement SOC or current (VM-BMS has no current sense); nothing was derived from voltage.
  3. voltage_ocv = 3876600 (OCV reg ×300 µV, read once at probe); after 180 s it returns -ENODATA ("No data available") as coded. voltage_now updates on the fifo IRQ (pm8916_vm_bms, ~1 per minute: 3 → 7 during the series), value = FIFO[1] ×300 µV. 4–6. 12 samples × 20 s (ram1/cal.txt, ram1/analysis.txt), board charging (CHG_STATUS 05) the whole time:
mean σ
VADC VBAT (driver refs, ×3) 3.7436 V 4.5 mV
BMS-VM voltage_now 3.9484 V 1.3 mV
BMS-VM − VADC +204.8 mV (+5.47 %)
FIFO coefficient (VADC / FIFO[1]) 284.4 µV/LSB (B10B-0: 284.3)
upstream ×300 error +5.47 %
BMS-VM rescaled ×284.4/300 3.7436 V → 0.0 mV vs VADC
OCV reg 12922 ×300 = 3.877 V (reported), ×284.4 = 3.675 V

→ The upstream BMS-VM reports VBAT ≈ 5.5 % (~200 mV at 3.75 V) too high on this board; with the calibrated coefficient it matches VADC. VADC itself was checked against the DMM in B10B-0 (+32 mV, DMM-limited). 7. PMIC diff vs baseline (ram1/post-probe.txt):

  • BMS writes (expected from the driver source): 0x4047 FIFO_LENGTH 55→22 (5/5 → 2/2), 0x4056 S2 interval 07→0a; 0x4055 S1 interval (0a) and 0x4046 EN_CTL (80) written with their existing values; 0x4040 MODE unchanged (no suspend → no force-S3). IRQ config 0x4011/15/16 00→10 (fifo IRQ, bit4, from request_irq).
  • dynamic only: 0x4009 state, 0x4060–66 / 0x406a / 0x40c0–c9 BMS data, 0x3160/3260/3360 ADC data, 0x6048/49 RTC.
  • charger unchanged: CHG_CTRL 90, VDD_MAX 08, VDD_SAFE 08, IBAT_MAX 00, IBAT_SAFE 0a, VIN_MIN 04, IBATTERM (termination) 09, TCHG 80/1d, COMP_OVR1 00, USB path 0x1308/09 02/90, BOOT_DONE 80 — no change.

Other subsystems

LTE START OK 62.9 s, ping via wwan0 OK; Wi-Fi AP aurora-b8f 67.0 s, Pronto running; NCM/telnet OK; display showed the SAMPLE n/12 screens; PMIC temp 33.6–34.4 °C (in_temp8_input, pm8916-thermal); eMMC writes = 0 (all dumps/snapshot).

Notes for later steps

  • Upstream BMS-VM is a raw voltmeter: no SOC, no current, OCV only for 180 s, 5.5 % scale error. Any SOC/recharge logic (B10B-3) should use VADC VBAT (or a corrected BMS value), not BMS-VM voltage_now as-is.
  • power-supplies on the BMS node will be needed once the LBC is present (status Charging/Discharging).

USB meter (operator)

≈0.08 A the whole time (same as B10B-0 ram2), while CHG_STATUS = 05 / FAST_CHG_ON. Second confirmation that in RAM boots via lk1st fastboot (BOOT_DONE = 1, IBAT_MAX field = 0 → 90 mA) the USB input is capped near 90 mA; the board load (~0.15–0.2 A seen in cache boots) is then partly taken from the battery. To be resolved in B10B-2 (LBC programs IBAT_MAX).