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
This commit is contained in:
q 2026-10-04 19:00:27 +03:00
parent 41d7850b12
commit 58dcb3d121
399 changed files with 1683906 additions and 6 deletions

View file

@ -9,7 +9,7 @@
> (см. [docs/QUICKSTART.md](docs/QUICKSTART.md)). Никогда не прошивайте NV/EFS-разделы (`modemst1`, `modemst2`, `fsg`, `fsc`, `persist`)
> с другого устройства — там калибровки RF и идентификаторы конкретного модема.
## Статус (2026-10-03)
## Статус (2026-10-04)
| Подсистема | Статус |
|---|---|
@ -28,13 +28,13 @@
| Wi-Fi (WCNSS/Pronto + wcn36xx, тестовая AP WPA2, автозапуск из flash) — B8 | **PASS / CLOSED** (см. ниже) |
| Router stack (NAT/firewall/VPN) | TODO |
| Дисплей ST7735S 128×128 (SPI): DRM/fbcon tty1, подсветка, автозапуск из flash — B9 | **PASS / CLOSED** (см. ниже) |
| Батарея / зарядка | TODO |
| Батарея / зарядка: супервизор CHARGE → HOLD → батарея, FAULT safe clamp, автозапуск из flash — B10 | **PASS / CLOSED** (см. ниже) |
## Рабочая цепочка загрузки (baseline B5)
```
Power → stock SBL1 → DB410c TZ (TZ.BF.3.0) → qhypstub → lk1st (aboot, autoboot, splash на ST7735S через ~0.4 с)
→ cache: ext2 + extlinux/extlinux.conf → B9C (ядро b9c + DTB b9b + initramfs: модем, время, Wi-Fi, дисплей) → ARM64 Linux → LTE + Wi-Fi AP + консоль на экране
→ cache: ext2 + extlinux/extlinux.conf → B10B-5 (ядро b10b5 + DTB b10b3 + initramfs B9C: модем, время, Wi-Fi, дисплей) → ARM64 Linux → LTE + Wi-Fi AP + консоль на экране + зарядка
Fallback: extlinux не найден / не парсится / не грузится → Android boot image из раздела boot (emmc1 rescue)
```
@ -48,13 +48,29 @@ Fallback: extlinux не найден / не парсится / не грузит
| hyp | qhypstub, до 512 KiB | `1a963047` |
| aboot | lk1st (lk2nd 23.1 + патч B9L: SPI-панель ST7735S + splash) autoboot, подписан qtestsign, до 1 MiB | `15208dbb` (откат: B5a lk1st `3b8cd266`) |
| boot | emmc1 rescue image (+ нули до 16 MiB) | `e9579f33` |
| cache | ext2 + extlinux + B9C (ядро 7.2.7-aurora-b9c, DTB b9b, initramfs B8F + дисплей) | `b9ce13c9` (откат: B8F `857c9c30` → B7C `14fe453a` → T4 `9d3bc890` → B6P `9fea693a`) |
| cache | ext2 + extlinux + B10B-5 (ядро 7.2.7-aurora-b10b5 = B9C + зарядник, DTB b10b3, initramfs B9C) | `c3732515` (откат: B9C `b9ce13c9` → B8F `857c9c30` → B7C `14fe453a` → T4 `9d3bc890` → B6P `9fea693a`) |
| recovery | lk2nd 23.1 (fastboot) | `0dfa60a0` |
| modem, NV/EFS, persist, system, userdata | не менялись (Linux монтирует modem FAT только RO) | — |
Golden mm1 (Android boot image, для `fastboot boot`): `aurora-mm1.img` sha256 `38c960ef…`, ядро `7.2.7-aurora-bam1 #5`.
Все хэши целиком: `b5a/SHA256SUMS`, `b5b/SHA256SUMS`, `bootchain-migration/SHA256SUMS`, `linux/*/SHA256SUMS`, [docs/BLOBS.md](docs/BLOBS.md).
## B10 status — батарея и зарядка PASS (2026-10-04)
- Зарядник PM8916 **LBC** (линейный) + VADC VBAT + BMS-VM: свой супервизор поверх upstream `pm8916_lbc` (`linux/patches/b10b3-lbc-supervisor-v3.patch`
+ `b10/b10b3/lbc-v3-to-v4-fault-clamp.diff` = **v4**). Состояния NO_USB → CHARGING (4.20 V / 450 mA, safety timer 512 min) → **HOLD**
(после 60 min CV при VBAT ≥ 4.15 V VDD_MAX опускается до 4.05 V: батарея стекает до полки, дальше плату питает USB) → USB вынут → батарея → USB → новый цикл.
**FAULT** (VBAT > 4.25 V или CHG_FAILED): единственная запись — **FAULT safe clamp to 4.00 V** (VDD_MAX = 0x00), защёлка до извлечения USB/перезагрузки.
- Проверено в RAM: CC/CV → HOLD, полка 4.03–4.06 V ~6 ч, USB 0.1 A на полке, HOLD → USB off → батарея без сброса, USB insert → новый цикл,
warm reboot (программный вход в lk1st fastboot через PON reboot reason), FAULT-инъекция (тестовое ядро) → USB 0.000 A; затем production smoke.
- Записано в cache (`b10/b10b5/B10-write.sh`, HW EDL, readback + сверка всех разделов) и проверено class-A загрузкой с eMMC без ввода.
- Факты о железе (подробно в `logs/b10/b10b3/B10B3-DESIGN.md`, отчётах `B10B3-*`/`B10B4-*`/`B10B5-*`, `logs/b10/b10b5/B10-RESULT.md`):
CHG_STATUS `00` + USB path `01` — защёлка, а не «заряжено»; CHG_EN = 0 заряд **не** останавливает; safety timer (TCHG = min/4 − 1) работает только
в fast-charge (FAST_CHG_ON, path `02`) и по истечении лишь выводит из него — ток идёт, CHG_FAILED не ставится; USB_SUSP (`0x1347` bit0) вход не отключает;
рабочий рычаг — VDD_MAX = 4.00 V (при VBAT > 4.00 V ток со входа → 0); после warm reboot SBL частично переинициализирует зарядник.
- Ограничения: clamp при VBAT < 4.00 V не отключает заряд (жёсткой остановки нет); safety timer не является защитой; нет снижения тока по температуре
(PMIC до 58 °C при заряде + нагрузке CPU); время CV 60 min не подбиралось.
## B9 status — дисплей PASS (2026-10-03)
- Встроенный экран — **не DSI**: 1.44" **ST7735S 128×128 на SPI** (MIPI-DBI type C), BLSP1 QUP4 `spi@78b8000`, 16 MHz, mode 3, CS0,
@ -132,6 +148,7 @@ Safety:
| `b7/` | B7: время от сети (DMS/NITZ), проверка по NTP, cache B7C |
| `b8/` | B8: Wi-Fi — аудит, WCNSS/NV, wcn36xx, hostapd, сервис aurora-wifi, cache B8F (запись/откат/эмулятор) |
| `b9/` | B9: дисплей — аудит stock LK/DT, panel-mipi-dbi firmware, fbcon/сервис aurora-display, cache B9C, патч lk2nd (SPI-панель в LK) |
| `b10/` | B10: батарея/зарядка — аудит, супервизор v1–v4 (патчи/diff), тестовые DTB/сборки/скрипты, хуки B10B-4/5 (только тест), cache B10B-5 (запись/откат/эмулятор) |
| `tools/` | утилиты: UART-логгер, Sahara probe, распаковка boot.img, sanitizer публикации |
| `logs/` | sanitized логи: UART, QMI, ModemManager, EDL, результаты тестов |
| `android/` | снимок стокового Android (getprop, gpio, input, leds, …), sanitized |
@ -140,6 +157,6 @@ Safety:
Полные дампы eMMC и разделов, NV/EFS (`modemst1/2`, `fsg`, `fsc`), `persist`, `userdata`, файлы прошивки модема,
стоковые SBL1/RPM/TZ/aboot/boot/recovery/system, Firehose-программер, DB410c TZ, собранные бинарники,
Wi-Fi NV (`WCNSS_qcom_wlan_nv.bin`), PSK тестовой AP и образы с ним (B8F/B9C initramfs/cache), логотип из stock LK.
Wi-Fi NV (`WCNSS_qcom_wlan_nv.bin`), PSK тестовой AP и образы с ним (B8F/B9C/B10 initramfs/cache/RAM-образы), логотип из stock LK.
Идентификаторы (IMEI, IMSI, ICCID, eMMC CID/serial, Sahara serial, MAC, номера сот, cookies) заменены на `<PLACEHOLDER>`.
Как это сделано — `tools/publish-sanitize.py`; значения идентификаторов в репозиторий не попадают.

View file

@ -0,0 +1 @@
M 0 up=45.52 st1009=05 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=02 90 usbrt1310=03 batrt1210=03 fifo=94 38 ff ff ff ff ff ff ff ff ocv=0a 37 bms4008=80 01 tcpu=44000

View file

@ -0,0 +1,110 @@
]: <dbg> [1790984252.769311] [modem0] RSSI: -73 dBm --> 65%
[1902]: <dbg> [1790984252.770059] [modem0] signal quality updated (65)
[1902]: <dbg> [1790984252.770580] [modem0] skipping extended signal information update...
[1902]: <dbg> [1790984264.324814] [/dev/wwan0qmi0] sent message...
<<<<<< RAW:
<<<<<< length = 20
<<<<<< data = <qmi-hex-redacted>
[1902]: <dbg> [1790984264.325828] [/dev/wwan0qmi0] sent generic request (translated)...
<<<<<< QMUX:
<<<<<< length = 19
<<<<<< flags = 0x00
<<<<<< service = "wds"
<<<<<< client = 2
<<<<<< QMI:
<<<<<< flags = "none"
<<<<<< transaction = 76
<<<<<< tlv_length = 7
<<<<<< message = "Get Packet Statistics" (0x0024)
<<<<<< TLV:
<<<<<< type = "Mask" (0x01)
<<<<<< length = 4
<<<<<< value = C0:00:00:00
<<<<<< translated = tx-bytes-ok, rx-bytes-ok
[1902]: <dbg> [1790984264.331320] [/dev/wwan0qmi0] received message...
<<<<<< RAW:
<<<<<< length = 42
<<<<<< data = <qmi-hex-redacted>
[1902]: <dbg> [1790984264.332555] [/dev/wwan0qmi0] received generic response (translated)...
<<<<<< QMUX:
<<<<<< length = 41
<<<<<< flags = 0x80
<<<<<< service = "wds"
<<<<<< client = 2
<<<<<< QMI:
<<<<<< flags = "response"
<<<<<< transaction = 76
<<<<<< tlv_length = 29
<<<<<< message = "Get Packet Statistics" (0x0024)
<<<<<< TLV:
<<<<<< type = "Result" (0x02)
<<<<<< length = 4
<<<<<< value = 00:00:00:00
<<<<<< translated = SUCCESS
<<<<<< TLV:
<<<<<< type = "Rx Bytes Ok" (0x1a)
<<<<<< length = 8
<<<<<< value = <qmi-hex-redacted>
<<<<<< translated = 2062
<<<<<< TLV:
<<<<<< type = "Tx Bytes Ok" (0x19)
<<<<<< length = 8
<<<<<< value = <qmi-hex-redacted>
<<<<<< translated = 1772
[1902]: <dbg> [1790984268.123143] [/dev/wwan0qmi0] received message...
<<<<<< RAW:
<<<<<< length = 22
<<<<<< data = <qmi-hex-redacted>
[1902]: <dbg> [1790984268.124163] [/dev/wwan0qmi0] received generic indication (translated)...
<<<<<< QMUX:
<<<<<< length = 21
<<<<<< flags = 0x80
<<<<<< service = "nas"
<<<<<< client = 1
<<<<<< QMI:
<<<<<< flags = "indication"
<<<<<< transaction = 107
<<<<<< tlv_length = 9
<<<<<< message = "Signal Info" (0x0051)
<<<<<< TLV:
<<<<<< type = "LTE Signal Strength" (0x14)
<<<<<< length = 6
<<<<<< value = <qmi-hex-redacted>
<<<<<< translated = [ rssi = '-68' rsrq = '-12' rsrp = '-96' snr = '18' ]
[1902]: <dbg> [1790984268.128639] [modem0] RSSI (LTE): -68 dBm
[1902]: <dbg> [1790984268.129088] [modem0] RSSI: -68 dBm --> 73%
[1902]: <dbg> [1790984268.129841] [modem0] signal quality updated (73)
[1902]: <dbg> [1790984268.130362] [modem0] skipping extended signal information update...
[1902]: <dbg> [1790984270.682898] [/dev/wwan0qmi0] received message...
<<<<<< RAW:
<<<<<< length = 22
<<<<<< data = <qmi-hex-redacted>
[1902]: <dbg> [1790984270.683916] [/dev/wwan0qmi0] received generic indication (translated)...
<<<<<< QMUX:
<<<<<< length = 21
<<<<<< flags = 0x80
<<<<<< service = "nas"
<<<<<< client = 1
<<<<<< QMI:
<<<<<< flags = "indication"
<<<<<< transaction = 108
<<<<<< tlv_length = 9
<<<<<< message = "Signal Info" (0x0051)
<<<<<< TLV:
<<<<<< type = "LTE Signal Strength" (0x14)
<<<<<< length = 6
<<<<<< value = <qmi-hex-redacted>
<<<<<< translated = [ rssi = '-72' rsrq = '-9' rsrp = '-97' snr = '84' ]
[1902]: <dbg> [1790984270.688601] [modem0] RSSI (LTE): -72 dBm
[1902]: <dbg> [1790984270.689055] [modem0] RSSI: -72 dBm --> 67%
[1902]: <dbg> [1790984270.689800] [modem0] signal quality updated (67)
[1902]: <dbg> [1790984270.690326] [modem0] skipping extended signal information update...
[1902]: <dbg> [1790984291.163062] [/dev/wwan0qmi0] receiv

3427
b10/b10a/b10a-live1.txt Normal file

File diff suppressed because it is too large Load diff

3427
b10/b10a/b10a-live2.txt Normal file

File diff suppressed because it is too large Load diff

12
b10/b10a/b10a-load.sh Normal file
View file

@ -0,0 +1,12 @@
#!/bin/sh
# B10A load probe: idle 20 s, 4x `yes` for 60 s, idle 30 s; sample BMS FIFO + CHGR/USB RT every 5 s. Reads only.
grep -q " /sys/kernel/debug " /proc/mounts || mount -t debugfs debugfs /sys/kernel/debug
R=/sys/kernel/debug/regmap/0-00/registers
rd() { dd if=$R bs=9 skip=$(($1)) count=$2 2>/dev/null | cut -d' ' -f2 | tr '\n' ' '; }
s() { echo "$1 $(date +%T) up=$(cut -d' ' -f1 /proc/uptime) fifo=$(rd 0x40c0 10) chgrt=$(rd 0x1010 1) usbrt=$(rd 0x1310 1) t=$(cat /sys/class/thermal/thermal_zone4/temp) f=$(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq)"; }
for i in 1 2 3 4; do s IDLE0; sleep 5; done
echo "LOAD-ON $(date +%T)"; for c in 1 2 3 4; do yes > /dev/null & done
for i in 1 2 3 4 5 6 7 8 9 10 11 12; do s LOAD; sleep 5; done
killall yes; echo "LOAD-OFF $(date +%T)"
for i in 1 2 3 4 5 6; do s IDLE1; sleep 5; done
echo B10A-LOAD-END

25
b10/b10a/b10a-load2.txt Normal file
View file

@ -0,0 +1,25 @@
IDLE0 23:55:03 up=100.91 fifo= chgrt= usbrt= t=45000 f=800000
IDLE0 23:55:08 up=105.94 fifo= chgrt= usbrt= t=44000 f=800000
IDLE0 23:55:13 up=110.96 fifo= chgrt= usbrt= t=44000 f=800000
IDLE0 23:55:18 up=115.99 fifo= chgrt= usbrt= t=44000 f=800000
LOAD-ON 23:55:23
LOAD 23:55:23 up=121.03 fifo= chgrt= usbrt= t=44000 f=998400
LOAD 23:55:28 up=126.09 fifo= chgrt= usbrt= t=59000 f=998400
LOAD 23:55:33 up=131.14 fifo= chgrt= usbrt= t=62000 f=998400
LOAD 23:55:38 up=136.20 fifo= chgrt= usbrt= t=64000 f=998400
LOAD 23:55:43 up=141.25 fifo= chgrt= usbrt= t=65000 f=998400
LOAD 23:55:48 up=146.30 fifo= chgrt= usbrt= t=66000 f=998400
LOAD 23:55:53 up=151.35 fifo= chgrt= usbrt= t=67000 f=998400
LOAD 23:55:58 up=156.41 fifo= chgrt= usbrt= t=68000 f=998400
LOAD 23:56:03 up=161.46 fifo= chgrt= usbrt= t=69000 f=998400
LOAD 23:56:08 up=166.51 fifo= chgrt= usbrt= t=69000 f=998400
LOAD 23:56:13 up=171.56 fifo= chgrt= usbrt= t=70000 f=998400
LOAD 23:56:18 up=176.62 fifo= chgrt= usbrt= t=71000 f=998400
LOAD-OFF 23:56:23
IDLE1 23:56:23 up=181.68 fifo= chgrt= usbrt= t=71000 f=800000
IDLE1 23:56:28 up=186.71 fifo= chgrt= usbrt= t=55000 f=800000
IDLE1 23:56:33 up=191.74 fifo= chgrt= usbrt= t=52000 f=800000
IDLE1 23:56:38 up=196.77 fifo= chgrt= usbrt= t=50000 f=800000
IDLE1 23:56:43 up=201.81 fifo= chgrt= usbrt= t=49000 f=800000
IDLE1 23:56:48 up=206.84 fifo= chgrt= usbrt= t=48000 f=800000
B10A-LOAD-END

25
b10/b10a/b10a-load3.txt Normal file
View file

@ -0,0 +1,25 @@
IDLE0 23:58:35 up=313.28 fifo=da 38 ae 38 dc 38 db 38 d9 38 chgrt=01 usbrt=03 t=45000 f=800000
IDLE0 23:58:40 up=318.31 fifo=da 38 ae 38 dc 38 db 38 d9 38 chgrt=01 usbrt=03 t=45000 f=800000
IDLE0 23:58:45 up=323.34 fifo=da 38 ae 38 dc 38 db 38 d9 38 chgrt=01 usbrt=03 t=44000 f=800000
IDLE0 23:58:50 up=328.37 fifo=da 38 ae 38 dc 38 db 38 d9 38 chgrt=01 usbrt=03 t=44000 f=800000
LOAD-ON 23:58:55
LOAD 23:58:55 up=333.41 fifo=da 38 ae 38 dc 38 db 38 d9 38 chgrt=01 usbrt=03 t=44000 f=998400
LOAD 23:59:00 up=338.46 fifo=da 38 bb 38 dc 38 db 38 d9 38 chgrt=01 usbrt=03 t=60000 f=998400
LOAD 23:59:05 up=343.50 fifo=da 38 bb 38 dc 38 db 38 d9 38 chgrt=01 usbrt=03 t=62000 f=998400
LOAD 23:59:10 up=348.56 fifo=da 38 bb 38 dc 38 db 38 d9 38 chgrt=01 usbrt=03 t=64000 f=998400
LOAD 23:59:15 up=353.61 fifo=da 38 bb 38 dc 38 db 38 d9 38 chgrt=01 usbrt=03 t=66000 f=998400
LOAD 23:59:20 up=358.66 fifo=da 38 bb 38 dc 38 db 38 d9 38 chgrt=01 usbrt=03 t=66000 f=998400
LOAD 23:59:25 up=363.71 fifo=da 38 bb 38 dc 38 db 38 d9 38 chgrt=01 usbrt=03 t=68000 f=998400
LOAD 23:59:30 up=368.76 fifo=da 38 bb 38 f4 37 db 38 d9 38 chgrt=01 usbrt=03 t=68000 f=998400
LOAD 23:59:35 up=373.81 fifo=da 38 bb 38 f4 37 db 38 d9 38 chgrt=01 usbrt=03 t=69000 f=998400
LOAD 23:59:40 up=378.86 fifo=da 38 bb 38 f4 37 db 38 d9 38 chgrt=01 usbrt=03 t=70000 f=998400
LOAD 23:59:46 up=383.92 fifo=da 38 bb 38 f4 37 db 38 d9 38 chgrt=01 usbrt=03 t=71000 f=998400
LOAD 23:59:51 up=388.98 fifo=da 38 bb 38 f4 37 db 38 d9 38 chgrt=01 usbrt=03 t=71000 f=998400
LOAD-OFF 23:59:56
IDLE1 23:59:56 up=394.04 fifo=da 38 bb 38 f4 37 e4 37 d9 38 chgrt=01 usbrt=03 t=71000 f=800000
IDLE1 00:00:01 up=399.07 fifo=da 38 bb 38 f4 37 e4 37 d9 38 chgrt=01 usbrt=03 t=55000 f=800000
IDLE1 00:00:06 up=404.09 fifo=da 38 bb 38 f4 37 e4 37 d9 38 chgrt=01 usbrt=03 t=52000 f=800000
IDLE1 00:00:11 up=409.13 fifo=da 38 bb 38 f4 37 e4 37 d9 38 chgrt=01 usbrt=03 t=51000 f=800000
IDLE1 00:00:16 up=414.16 fifo=da 38 bb 38 f4 37 e4 37 d9 38 chgrt=01 usbrt=03 t=50000 f=800000
IDLE1 00:00:21 up=419.18 fifo=da 38 bb 38 f4 37 e4 37 a2 38 chgrt=01 usbrt=03 t=49000 f=800000
B10A-LOAD-END

11
b10/b10a/b10a-mon.sh Normal file
View file

@ -0,0 +1,11 @@
#!/bin/sh
# B10A 30-min read-only monitor: every 60 s read LBC/USB/BMS registers. Reads only (regmap debugfs), no writes.
grep -q " /sys/kernel/debug " /proc/mounts || mount -t debugfs debugfs /sys/kernel/debug
R=/sys/kernel/debug/regmap/0-00/registers
rd() { dd if=$R bs=9 skip=$(($1)) count=$2 2>/dev/null | cut -d' ' -f2 | tr '\n' ' '; }
i=0
while [ $i -lt ${1:-31} ]; do
echo "M $i up=$(cut -d' ' -f1 /proc/uptime) st1009=$(rd 0x1009 3) rt1010=$(rd 0x1010 1) vdd1040=$(rd 0x1040 1) ibat1044=$(rd 0x1044 1) ctrl1049=$(rd 0x1049 1) usb1308=$(rd 0x1308 2) usbrt1310=$(rd 0x1310 1) batrt1210=$(rd 0x1210 1) fifo=$(rd 0x40c0 10) ocv=$(rd 0x406a 2) bms4008=$(rd 0x4008 2) tcpu=$(cat /sys/class/thermal/thermal_zone4/temp)"
i=$((i+1)); [ $i -lt ${1:-31} ] && sleep 60
done
echo B10A-MON-END

32
b10/b10a/b10a-mon1.txt Normal file
View file

@ -0,0 +1,32 @@
M 0 up=630.26 st1009=00 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=01 90 usbrt1310=03 batrt1210=03 fifo=bf 38 bf 38 c4 38 c1 38 c2 38 ocv=28 38 bms4008=80 52 tcpu=44000
M 1 up=690.31 st1009=00 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=01 90 usbrt1310=03 batrt1210=03 fifo=bf 38 bf 38 bc 38 ba 38 b8 38 ocv=28 38 bms4008=80 55 tcpu=44000
M 2 up=750.37 st1009=00 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=01 90 usbrt1310=03 batrt1210=03 fifo=b6 38 b5 38 bc 38 ba 38 b8 38 ocv=28 38 bms4008=80 52 tcpu=43000
M 3 up=810.42 st1009=00 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=01 90 usbrt1310=03 batrt1210=03 fifo=b6 38 b5 38 b3 38 b2 38 b8 38 ocv=28 38 bms4008=80 54 tcpu=43000
M 4 up=870.48 st1009=00 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=01 90 usbrt1310=03 batrt1210=03 fifo=b0 38 b5 38 b3 38 b2 38 b1 38 ocv=28 38 bms4008=80 51 tcpu=43000
M 5 up=930.54 st1009=00 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=01 90 usbrt1310=03 batrt1210=03 fifo=b0 38 ac 38 ab 38 a9 38 b1 38 ocv=28 38 bms4008=80 54 tcpu=43000
M 6 up=990.60 st1009=00 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=01 90 usbrt1310=03 batrt1210=03 fifo=a5 38 ac 38 ab 38 a9 38 a7 38 ocv=28 38 bms4008=80 51 tcpu=43000
M 7 up=1050.65 st1009=00 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=01 90 usbrt1310=03 batrt1210=03 fifo=a5 38 a4 38 a2 38 a9 38 a7 38 ocv=28 38 bms4008=80 53 tcpu=43000
M 8 up=1110.71 st1009=00 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=01 90 usbrt1310=03 batrt1210=03 fifo=a5 38 a4 38 a2 38 a0 38 9f 38 ocv=28 38 bms4008=80 55 tcpu=44000
M 9 up=1170.77 st1009=00 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=01 90 usbrt1310=03 batrt1210=03 fifo=9d 38 9b 38 98 38 a0 38 9f 38 ocv=28 38 bms4008=80 53 tcpu=43000
M 10 up=1230.83 st1009=00 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=01 90 usbrt1310=03 batrt1210=03 fifo=9d 38 9b 38 98 38 98 38 96 38 ocv=28 38 bms4008=80 55 tcpu=43000
M 11 up=1290.89 st1009=00 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=01 90 usbrt1310=03 batrt1210=03 fifo=95 38 92 38 98 38 98 38 96 38 ocv=28 38 bms4008=80 52 tcpu=43000
M 12 up=1350.95 st1009=00 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=01 90 usbrt1310=03 batrt1210=03 fifo=95 38 92 38 90 38 90 38 96 38 ocv=28 38 bms4008=80 54 tcpu=43000
M 13 up=1411.01 st1009=00 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=01 90 usbrt1310=03 batrt1210=03 fifo=8d 38 8b 38 90 38 90 38 8e 38 ocv=28 38 bms4008=80 52 tcpu=43000
M 14 up=1471.06 st1009=00 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=01 90 usbrt1310=03 batrt1210=03 fifo=8d 38 8b 38 89 38 86 38 8e 38 ocv=28 38 bms4008=80 54 tcpu=43000
M 15 up=1531.12 st1009=00 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=01 90 usbrt1310=03 batrt1210=03 fifo=83 38 8b 38 89 38 86 38 85 38 ocv=28 38 bms4008=80 51 tcpu=43000
M 16 up=1591.18 st1009=00 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=01 90 usbrt1310=03 batrt1210=03 fifo=83 38 81 38 81 38 86 38 85 38 ocv=28 38 bms4008=80 53 tcpu=43000
M 17 up=1651.24 st1009=00 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=01 90 usbrt1310=03 batrt1210=03 fifo=7b 38 81 38 81 38 7d 38 7e 38 ocv=28 38 bms4008=80 51 tcpu=43000
M 18 up=1711.30 st1009=00 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=01 90 usbrt1310=03 batrt1210=03 fifo=7b 38 79 38 79 38 7d 38 7e 38 ocv=28 38 bms4008=80 53 tcpu=44000
M 19 up=1771.35 st1009=00 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=01 90 usbrt1310=03 batrt1210=03 fifo=7b 38 79 38 79 38 76 38 74 38 ocv=28 38 bms4008=80 55 tcpu=43000
M 20 up=1831.41 st1009=00 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=01 90 usbrt1310=03 batrt1210=03 fifo=72 38 73 38 79 38 76 38 74 38 ocv=28 38 bms4008=80 52 tcpu=43000
M 21 up=1891.47 st1009=00 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=01 90 usbrt1310=03 batrt1210=03 fifo=72 38 73 38 6f 38 6c 38 6c 38 ocv=28 38 bms4008=80 55 tcpu=43000
M 22 up=1951.52 st1009=00 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=01 90 usbrt1310=03 batrt1210=03 fifo=69 38 69 38 6f 38 6c 38 6c 38 ocv=28 38 bms4008=80 52 tcpu=43000
M 23 up=2011.58 st1009=00 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=01 90 usbrt1310=03 batrt1210=03 fifo=69 38 69 38 66 38 66 38 6c 38 ocv=28 38 bms4008=80 54 tcpu=43000
M 24 up=2071.64 st1009=00 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=01 90 usbrt1310=03 batrt1210=03 fifo=62 38 69 38 66 38 66 38 63 38 ocv=28 38 bms4008=80 51 tcpu=43000
M 25 up=2131.69 st1009=00 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=01 90 usbrt1310=03 batrt1210=03 fifo=62 38 60 38 5f 38 5f 38 63 38 ocv=28 38 bms4008=80 54 tcpu=43000
M 26 up=2191.75 st1009=00 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=01 90 usbrt1310=03 batrt1210=03 fifo=5b 38 60 38 5f 38 5f 38 5c 38 ocv=28 38 bms4008=80 51 tcpu=43000
M 27 up=2251.81 st1009=00 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=01 90 usbrt1310=03 batrt1210=03 fifo=5b 38 5a 38 57 38 5f 38 5c 38 ocv=28 38 bms4008=80 53 tcpu=43000
M 28 up=2311.87 st1009=00 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=01 90 usbrt1310=03 batrt1210=03 fifo=5b 38 5a 38 57 38 54 38 54 38 ocv=28 38 bms4008=80 55 tcpu=43000
M 29 up=2371.93 st1009=00 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=01 90 usbrt1310=03 batrt1210=03 fifo=52 38 51 38 4f 38 54 38 54 38 ocv=28 38 bms4008=80 53 tcpu=43000
M 30 up=2431.98 st1009=00 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=01 90 usbrt1310=03 batrt1210=03 fifo=52 38 51 38 4f 38 4c 38 4a 38 ocv=28 38 bms4008=80 55 tcpu=43000
B10A-MON-END

62
b10/b10a/b10a-mon2.txt Normal file
View file

@ -0,0 +1,62 @@
M 0 up=99.65 st1009=05 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=02 90 usbrt1310=03 batrt1210=03 fifo=94 38 00 39 1e 39 ff ff ff ff ocv=0a 37 bms4008=80 03 tcpu=45000
M 1 up=159.70 st1009=05 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=02 90 usbrt1310=03 batrt1210=03 fifo=24 39 00 39 1e 39 f8 38 1e 39 ocv=0a 37 bms4008=80 51 tcpu=44000
M 2 up=219.76 st1009=05 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=02 90 usbrt1310=03 batrt1210=03 fifo=24 39 26 39 2c 39 f8 38 1e 39 ocv=0a 37 bms4008=80 53 tcpu=44000
M 3 up=279.82 st1009=05 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=02 90 usbrt1310=03 batrt1210=03 fifo=24 39 26 39 2c 39 2e 39 31 39 ocv=0a 37 bms4008=80 55 tcpu=45000
M 4 up=339.88 st1009=05 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=02 90 usbrt1310=03 batrt1210=03 fifo=35 39 38 39 2c 39 2e 39 31 39 ocv=0a 37 bms4008=80 52 tcpu=45000
M 5 up=399.94 st1009=05 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=02 90 usbrt1310=03 batrt1210=03 fifo=35 39 38 39 3b 39 3f 39 43 39 ocv=0a 37 bms4008=80 55 tcpu=45000
M 6 up=460.00 st1009=05 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=02 90 usbrt1310=03 batrt1210=03 fifo=47 39 4b 39 3b 39 3f 39 43 39 ocv=0a 37 bms4008=80 52 tcpu=45000
M 7 up=520.06 st1009=05 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=02 90 usbrt1310=03 batrt1210=03 fifo=47 39 4b 39 4d 39 50 39 43 39 ocv=0a 37 bms4008=80 54 tcpu=45000
M 8 up=580.12 st1009=05 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=02 90 usbrt1310=03 batrt1210=03 fifo=56 39 4b 39 4d 39 50 39 53 39 ocv=0a 37 bms4008=80 51 tcpu=45000
M 9 up=640.17 st1009=05 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=02 90 usbrt1310=03 batrt1210=03 fifo=56 39 5b 39 4c 39 5d 39 53 39 ocv=0a 37 bms4008=80 54 tcpu=45000
M 10 up=700.23 st1009=05 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=02 90 usbrt1310=03 batrt1210=03 fifo=65 39 5b 39 4c 39 5d 39 5e 39 ocv=0a 37 bms4008=80 51 tcpu=45000
M 11 up=760.29 st1009=05 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=02 90 usbrt1310=03 batrt1210=03 fifo=65 39 68 39 6b 39 5d 39 5e 39 ocv=0a 37 bms4008=80 53 tcpu=45000
M 12 up=820.34 st1009=05 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=02 90 usbrt1310=03 batrt1210=03 fifo=65 39 68 39 6b 39 5d 39 5e 39 ocv=0a 37 bms4008=80 00 tcpu=46000
M 13 up=880.40 st1009=05 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=02 90 usbrt1310=03 batrt1210=03 fifo=65 39 68 39 6b 39 5d 39 5e 39 ocv=0a 37 bms4008=80 00 tcpu=46000
M 14 up=940.46 st1009=05 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=02 90 usbrt1310=03 batrt1210=03 fifo=65 39 68 39 6b 39 5d 39 5e 39 ocv=0a 37 bms4008=80 00 tcpu=46000
M 15 up=1000.52 st1009=05 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=02 90 usbrt1310=03 batrt1210=03 fifo=65 39 68 39 6b 39 5d 39 5e 39 ocv=0a 37 bms4008=80 00 tcpu=46000
M 16 up=1060.57 st1009=05 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=02 90 usbrt1310=03 batrt1210=03 fifo=65 39 68 39 6b 39 5d 39 5e 39 ocv=0a 37 bms4008=80 00 tcpu=46000
M 17 up=1120.63 st1009=05 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=02 90 usbrt1310=03 batrt1210=03 fifo=65 39 68 39 6b 39 5d 39 5e 39 ocv=0a 37 bms4008=80 00 tcpu=46000
M 18 up=1180.69 st1009=05 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=02 90 usbrt1310=03 batrt1210=03 fifo=65 39 68 39 6b 39 5d 39 5e 39 ocv=0a 37 bms4008=80 00 tcpu=46000
M 19 up=1240.75 st1009=05 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=02 90 usbrt1310=03 batrt1210=03 fifo=65 39 68 39 6b 39 5d 39 5e 39 ocv=0a 37 bms4008=80 00 tcpu=46000
M 20 up=1300.80 st1009=05 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=02 90 usbrt1310=03 batrt1210=03 fifo=65 39 68 39 6b 39 5d 39 5e 39 ocv=0a 37 bms4008=80 00 tcpu=46000
M 21 up=1360.86 st1009=03 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=02 90 usbrt1310=03 batrt1210=03 fifo=65 39 68 39 6b 39 5d 39 5e 39 ocv=0a 37 bms4008=80 00 tcpu=46000
M 22 up=1420.92 st1009=03 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=02 90 usbrt1310=03 batrt1210=03 fifo=4c 39 4c 39 4d 39 4c 39 4b 39 ocv=0a 37 bms4008=80 00 tcpu=45000
M 23 up=1480.98 st1009=03 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=02 90 usbrt1310=03 batrt1210=03 fifo=4d 39 4c 39 4b 39 4c 39 4b 39 ocv=0a 37 bms4008=80 02 tcpu=45000
M 24 up=1541.04 st1009=03 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=02 90 usbrt1310=03 batrt1210=03 fifo=4d 39 4d 39 4b 39 4d 39 4c 39 ocv=0a 37 bms4008=80 00 tcpu=45000
M 25 up=1601.09 st1009=03 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=02 90 usbrt1310=03 batrt1210=03 fifo=4e 39 4e 39 4e 39 4d 39 4c 39 ocv=0a 37 bms4008=80 01 tcpu=45000
M 26 up=1661.15 st1009=03 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=02 90 usbrt1310=03 batrt1210=03 fifo=4e 39 4f 39 4e 39 4f 39 4f 39 ocv=0a 37 bms4008=80 00 tcpu=46000
M 27 up=1721.21 st1009=07 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=02 90 usbrt1310=03 batrt1210=03 fifo=50 39 50 39 50 39 50 39 50 39 ocv=0a 37 bms4008=80 00 tcpu=45000
M 28 up=1781.27 st1009=03 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=02 90 usbrt1310=03 batrt1210=03 fifo=50 39 50 39 50 39 50 39 50 39 ocv=0a 37 bms4008=80 00 tcpu=45000
M 29 up=1841.33 st1009=03 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=02 90 usbrt1310=03 batrt1210=03 fifo=51 39 51 39 51 39 51 39 51 39 ocv=0a 37 bms4008=80 00 tcpu=45000
M 30 up=1901.38 st1009=05 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=02 90 usbrt1310=03 batrt1210=03 fifo=52 39 52 39 52 39 52 39 52 39 ocv=0a 37 bms4008=80 00 tcpu=45000
M 31 up=1961.44 st1009=03 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=02 90 usbrt1310=03 batrt1210=03 fifo=52 39 53 39 53 39 53 39 52 39 ocv=0a 37 bms4008=80 00 tcpu=45000
M 32 up=2021.50 st1009=03 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=02 90 usbrt1310=03 batrt1210=03 fifo=54 39 54 39 54 39 54 39 53 39 ocv=0a 37 bms4008=80 00 tcpu=45000
M 33 up=2081.56 st1009=07 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=02 90 usbrt1310=03 batrt1210=03 fifo=54 39 54 39 53 39 54 39 54 39 ocv=0a 37 bms4008=80 00 tcpu=45000
M 34 up=2141.62 st1009=03 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=02 90 usbrt1310=03 batrt1210=03 fifo=55 39 55 39 56 39 55 39 55 39 ocv=0a 37 bms4008=80 51 tcpu=45000
M 35 up=2201.68 st1009=03 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=02 90 usbrt1310=03 batrt1210=03 fifo=55 39 56 39 56 39 56 39 56 39 ocv=0a 37 bms4008=80 52 tcpu=45000
M 36 up=2261.73 st1009=03 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=02 90 usbrt1310=03 batrt1210=03 fifo=57 39 57 39 56 39 56 39 56 39 ocv=0a 37 bms4008=80 01 tcpu=46000
M 37 up=2321.79 st1009=03 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=02 90 usbrt1310=03 batrt1210=03 fifo=57 39 56 39 57 39 57 39 56 39 ocv=0a 37 bms4008=80 52 tcpu=45000
M 38 up=2381.85 st1009=03 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=02 90 usbrt1310=03 batrt1210=03 fifo=58 39 58 39 57 39 57 39 58 39 ocv=0a 37 bms4008=80 53 tcpu=45000
M 39 up=2441.91 st1009=03 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=02 90 usbrt1310=03 batrt1210=03 fifo=58 39 58 39 58 39 59 39 58 39 ocv=0a 37 bms4008=80 55 tcpu=45000
M 40 up=2501.97 st1009=03 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=02 90 usbrt1310=03 batrt1210=03 fifo=59 39 58 39 59 39 59 39 59 39 ocv=0a 37 bms4008=80 00 tcpu=45000
M 41 up=2562.03 st1009=03 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=02 90 usbrt1310=03 batrt1210=03 fifo=5a 39 5a 39 5a 39 5a 39 5a 39 ocv=0a 37 bms4008=80 51 tcpu=45000
M 42 up=2622.09 st1009=03 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=02 90 usbrt1310=03 batrt1210=03 fifo=5a 39 5a 39 5a 39 5a 39 5b 39 ocv=0a 37 bms4008=80 00 tcpu=45000
M 43 up=2682.14 st1009=00 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=01 90 usbrt1310=03 batrt1210=03 fifo=ca 38 5a 39 5a 39 5a 39 5b 39 ocv=0a 37 bms4008=80 11 tcpu=45000
M 44 up=2742.20 st1009=00 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=01 90 usbrt1310=03 batrt1210=03 fifo=ca 38 c1 38 be 38 5a 39 5b 39 ocv=0a 37 bms4008=80 13 tcpu=44000
M 45 up=2802.26 st1009=00 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=01 90 usbrt1310=03 batrt1210=03 fifo=b5 38 c1 38 be 38 ba 38 b7 38 ocv=0a 37 bms4008=80 51 tcpu=44000
M 46 up=2862.32 st1009=00 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=01 90 usbrt1310=03 batrt1210=03 fifo=b5 38 b2 38 b0 38 ba 38 b7 38 ocv=0a 37 bms4008=80 53 tcpu=45000
M 47 up=2922.38 st1009=00 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=01 90 usbrt1310=03 batrt1210=03 fifo=b5 38 b2 38 b0 38 ab 38 a9 38 ocv=0a 37 bms4008=80 55 tcpu=44000
M 48 up=2982.44 st1009=00 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=01 90 usbrt1310=03 batrt1210=03 fifo=a8 38 a5 38 b0 38 ab 38 a9 38 ocv=0a 37 bms4008=80 52 tcpu=43000
M 49 up=3042.50 st1009=00 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=01 90 usbrt1310=03 batrt1210=03 fifo=a8 38 a5 38 a4 38 a3 38 a1 38 ocv=0a 37 bms4008=80 55 tcpu=44000
M 50 up=3102.56 st1009=00 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=01 90 usbrt1310=03 batrt1210=03 fifo=9e 38 9b 38 a4 38 a3 38 a1 38 ocv=0a 37 bms4008=80 52 tcpu=43000
M 51 up=3162.62 st1009=00 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=01 90 usbrt1310=03 batrt1210=03 fifo=9e 38 9b 38 9b 38 98 38 a1 38 ocv=0a 37 bms4008=80 54 tcpu=43000
M 52 up=3222.68 st1009=00 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=01 90 usbrt1310=03 batrt1210=03 fifo=93 38 9b 38 9b 38 98 38 95 38 ocv=0a 37 bms4008=80 51 tcpu=43000
M 53 up=3282.73 st1009=00 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=01 90 usbrt1310=03 batrt1210=03 fifo=93 38 91 38 8e 38 8e 38 95 38 ocv=0a 37 bms4008=80 54 tcpu=43000
M 54 up=3342.80 st1009=00 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=01 90 usbrt1310=03 batrt1210=03 fifo=89 38 91 38 8e 38 8e 38 8c 38 ocv=0a 37 bms4008=80 51 tcpu=43000
M 55 up=3402.86 st1009=00 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=01 90 usbrt1310=03 batrt1210=03 fifo=89 38 89 38 86 38 8e 38 8c 38 ocv=0a 37 bms4008=80 53 tcpu=43000
M 56 up=3462.91 st1009=00 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=01 90 usbrt1310=03 batrt1210=03 fifo=89 38 89 38 86 38 84 38 82 38 ocv=0a 37 bms4008=80 55 tcpu=45000
M 57 up=3522.98 st1009=00 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=01 90 usbrt1310=03 batrt1210=03 fifo=7e 38 7a 38 79 38 84 38 82 38 ocv=0a 37 bms4008=80 53 tcpu=43000
M 58 up=3583.04 st1009=00 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=01 90 usbrt1310=03 batrt1210=03 fifo=7e 38 7a 38 79 38 74 38 73 38 ocv=0a 37 bms4008=80 55 tcpu=43000
M 59 up=3643.10 st1009=00 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=01 90 usbrt1310=03 batrt1210=03 fifo=77 38 76 38 79 38 74 38 73 38 ocv=0a 37 bms4008=80 52 tcpu=43000
M 60 up=3703.15 st1009=00 00 43 rt1010=01 vdd1040=08 ibat1044=00 ctrl1049=90 usb1308=01 90 usbrt1310=03 batrt1210=03 fifo=77 38 76 38 73 38 71 38 73 38 ocv=0a 37 bms4008=80 54 tcpu=43000
B10A-MON-END

10
b10/b10a/b10a-pm.sh Normal file
View file

@ -0,0 +1,10 @@
#!/bin/sh
# B10A read-only: USB gadget power descriptor, cpuidle/cpufreq/suspend state.
for f in /sys/kernel/config/usb_gadget/*/configs/*/MaxPower /sys/kernel/config/usb_gadget/*/configs/*/bmAttributes; do echo "$f $(cat $f)"; done
echo "cpuidle driver: $(cat /sys/devices/system/cpu/cpuidle/current_driver 2>&1) gov: $(cat /sys/devices/system/cpu/cpuidle/current_governor 2>&1)"
for s in /sys/devices/system/cpu/cpu0/cpuidle/state*; do echo "$s $(cat $s/name) usage=$(cat $s/usage) time=$(cat $s/time)"; done
ls /sys/devices/system/cpu/cpu0/cpufreq 2>&1 | head -3
echo "online: $(cat /sys/devices/system/cpu/online) power/state: $(cat /sys/power/state) mem_sleep: $(cat /sys/power/mem_sleep 2>&1)"
cat /proc/loadavg
grep -i -E "cpuidle|psci|cpufreq|suspend" /proc/config.gz 2>/dev/null | head -1
dmesg | grep -i -E "psci|cpuidle|cpufreq|idle" | head -10

22
b10/b10a/b10a-probe.sh Normal file
View file

@ -0,0 +1,22 @@
#!/bin/sh
# B10A read-only probe: power_supply/extcon/regulator state + PM8916 charger/BMS/VADC/PON register dump.
# Only reads (regmap debugfs positioned reads, sysfs/proc reads). No writes to any device register.
grep -q " /sys/kernel/debug " /proc/mounts || mount -t debugfs debugfs /sys/kernel/debug
R=/sys/kernel/debug/regmap/0-00/registers
echo "== B10A-PROBE-START $(date -u +%s) up $(cut -d' ' -f1 /proc/uptime)"
uname -a
echo "== power_supply"; ls -la /sys/class/power_supply/ 2>&1
for d in /sys/class/power_supply/*; do [ -e "$d/uevent" ] && { echo "-- $d"; cat "$d/uevent"; }; done
echo "== extcon"; for e in /sys/class/extcon/*; do echo "-- $e $(cat $e/name 2>/dev/null)"; cat $e/state 2>/dev/null; done
echo "== thermal"; for t in /sys/class/thermal/thermal_zone*; do echo "$t $(cat $t/type) $(cat $t/temp 2>/dev/null)"; done
echo "== hwmon"; for h in /sys/class/hwmon/*; do echo "$h $(cat $h/name)"; done
echo "== iio"; ls /sys/bus/iio/devices 2>&1
echo "== regmaps"; ls /sys/kernel/debug/regmap/
echo "== regulator_summary"; cat /sys/kernel/debug/regulator/regulator_summary 2>&1 | head -60
echo "== udc"; for u in /sys/class/udc/*; do echo "$u state=$(cat $u/state 2>/dev/null) speed=$(cat $u/current_speed 2>/dev/null)"; done
echo "== dmesg-power"; dmesg | grep -i -E "charg|batt|bms|vbus|usb_vbus|extcon|power_supply|ci_hdrc|pm8916|pon|uvlo|thermal|tsens|spmi" | head -80
echo "== interrupts"; grep -i -E "pm8916|spmi|pon|usb|chg|bat" /proc/interrupts
for blk in 0100 0800 0900 1000 1200 1300 1600 2400 2800 3100 3400 4000 a300; do
echo "== REG $blk"; dd if=$R bs=9 skip=$((0x$blk)) count=256 2>/dev/null
done
echo "== B10A-PROBE-END"

10
b10/b10a/b10a-trend.sh Normal file
View file

@ -0,0 +1,10 @@
#!/bin/sh
# B10A read-only trend: every 30 s read BMS FIFO/status, CHGR/BAT_IF/USB RT_STS, VADC last data. Reads only.
R=/sys/kernel/debug/regmap/0-00/registers
rd() { dd if=$R bs=9 skip=$(($1)) count=$2 2>/dev/null | cut -d' ' -f2 | tr '\n' ' '; }
i=0
while [ $i -lt ${1:-10} ]; do
echo "T $(cut -d' ' -f1 /proc/uptime) bms08=$(rd 0x4008 2) fifo=$(rd 0x40c0 10) ocv=$(rd 0x406a 2) chg09=$(rd 0x1009 1) chgrt=$(rd 0x1010 1) batrt=$(rd 0x1210 1) usbrt=$(rd 0x1310 1) vadc=$(rd 0x3160 2) ch=$(rd 0x3148 1) temps=$(cat /sys/class/thermal/thermal_zone*/temp | tr '\n' ' ')"
i=$((i+1)); sleep 30
done
echo B10A-TREND-END

4
b10/b10a/b10a-trend1.txt Normal file
View file

@ -0,0 +1,4 @@
T 1828.98 bms08=80 51 fifo=6e 39 6e 39 6e 39 6e 39 6e 39 ocv=ff 37 chg09=03 chgrt=01 batrt=03 usbrt=03 vadc=26 98 ch=06 temps=45000 43000 44000 43000 45000
T 1859.02 bms08=80 54 fifo=6e 39 6e 39 6e 39 6f 39 6e 39 ocv=ff 37 chg09=03 chgrt=01 batrt=03 usbrt=03 vadc=26 98 ch=06 temps=45000 43000 44000 43000 44000
T 1889.07 bms08=80 52 fifo=6f 39 6f 39 6e 39 6f 39 6e 39 ocv=ff 37 chg09=03 chgrt=01 batrt=03 usbrt=03 vadc=26 98 ch=06 temps=45000 43000 44000 43000 45000
# samples 4..12 lost: board died at uptime ~2148.7 s (see B10A-RESULT "Incident"); /tmp/b10t.out was in RAM.

2706
b10/b10a/lbc-7f1748.c Normal file

File diff suppressed because it is too large Load diff

3743
b10/b10a/vmbms-7f1748.c Normal file

File diff suppressed because it is too large Load diff

57
b10/b10b0/b10b0-boot.sh Normal file
View file

@ -0,0 +1,57 @@
#!/bin/sh
# 480s side, B10B-0 boot K (RAM only). RESET-held power-on -> lk1st fastboot -> `fastboot boot` B10B-0 RAM image. Reads only over telnet.
# MODE=cold: normal power-on (no RESET, no fastboot) -> lk2nd extlinux from eMMC cache. Script only observes + reads over telnet;
# nothing is written to eMMC. Visual display checks need the operator. Adds display/fbcon/getty/console checks to the B8F snapshot.
K=$1; MODE=ram; [ -n "$K" ] || { echo "usage: $0 K"; exit 2; }
cd ~/doc/modem/jz08-aurora; O=logs/b10/b10b0/$MODE$K; mkdir -p $O; IMG=b10/b10b0/out/aurora-b10b0.img
A=$O/host-actions.txt; act() { echo "$(date -u +%H:%M:%S.%3N) $*" | tee -a $A; }
tn() { { sleep 1; sed "s/\$/\r/" "$1"; sleep $2; } | ncat 172.16.42.1 23 | tr -d "\000\r"; }
OLD=$(ps -eo pid,cmd | grep "[u]artlog.py /dev/ttyUSB0" | awk '{print $1}'); [ -n "$OLD" ] && kill $OLD; sleep 1
U=logs/uart/b10b0-$MODE$K-$(date +%Y%m%d-%H%M%S); setsid nohup python3 tools/uartlog.py /dev/ttyUSB0 $U > $U.stderr 2>&1 < /dev/null &
if [ $MODE = ram ]; then
echo "a360aee2cb822d737c7409deb71b39951e02c436f5252e88d96c0583cb81e2bb $IMG" | sha256sum -c || exit 1
act "B10B0 $MODE$K: waiting for fastboot <EMMC_SERIAL> (power off >= 90 s, then RESET held + battery -> USB)"
if fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL>; then act "already in fastboot - wait for power-off"; until ! fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL>; do sleep 1; done; fi
i=0; until fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL>; do i=$((i+1)); [ $i -ge 600 ] && { act "ABORT: no fastboot"; exit 1; }; sleep 2; done
act "fastboot present"; { fastboot boot $IMG 2>&1; echo "rc=$?"; } | tee -a $A
else
act "B10B0 $MODE$K: waiting for the board to go away (power off >= 90 s), then normal power-on WITHOUT RESET"
until ! ping -c1 -W1 172.16.42.1 >/dev/null 2>&1; do sleep 1; done; act "board unreachable (powered off)"
until ping -c1 -W1 172.16.42.1 >/dev/null 2>&1; do fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL> && { act "ABORT: board is in fastboot - RESET was held?"; exit 1; }; sleep 1; done
fi
i=0; until ping -c1 -W1 172.16.42.1 >/dev/null 2>&1; do i=$((i+1)); [ $i -ge 180 ] && { act "ABORT: NCM not up"; cp $U.log $O/uart.log; exit 1; }; sleep 1; done; act "NCM ping ok"
R=$(grep -a "rtc-pm8xxx.*setting system clock" $U.log | tail -1 | sed -n 's/.*(\([0-9]*\)).*/\1/p'); C=B; [ -n "$R" ] && [ "$R" -lt 40 ] && C=A; act "RTC at boot ${R:-?} s -> class $C"
printf 'cat /proc/device-tree/model; echo; uname -r; grep -E "START OK|FAIL in|rollback" /run/aurora-modem/lifecycle.log | tail -1\n' > $O/.w
i=0; until tn $O/.w 3 | grep -qE "^\[[0-9.]+\] .*(=== START OK|FAIL in|rollback)"; do i=$((i+1)); [ $i -ge 80 ] && { act "no START OK/FAIL after ~12 min"; break; }; sleep 6; done
tn $O/.w 3 | grep -aE "Aurora|aurora-b8|START OK|FAIL" | tee -a $A
printf 'grep -E "AP ENABLED|FAIL" /run/aurora-wifi/wifi.log | tail -1\n' > $O/.a
i=0; until tn $O/.a 3 | grep -qE "^\[[0-9.]+\] (=== AP ENABLED|FAIL)"; do i=$((i+1)); [ $i -ge 20 ] && { act "no AP ENABLED/FAIL after ~3 min"; break; }; sleep 6; done
act "wifi: $(tn $O/.a 3 | grep -E '^\[[0-9.]+\] (=== AP ENABLED|FAIL)' | tail -1)"
printf 'grep -E "SNTP (check|STEP|: )" /run/aurora-modem/lifecycle.log | tail -2\n' > $O/.s
i=0; until tn $O/.s 3 | grep -qE "^\[[0-9.]+\] SNTP"; do i=$((i+1)); [ $i -ge 15 ] && break; sleep 4; done; act "sntp: $(tn $O/.s 3 | grep -E '^\[[0-9.]+\] SNTP' | tail -2 | tr '\n' ' ')"
cat > $O/.c <<'C'
echo SNAP-BEGIN; cat /proc/uptime; date -u; cat /proc/device-tree/model; echo; uname -a; cat /proc/cmdline
echo ---time; cat /run/aurora-modem/time-set; grep -E "TIME|SNTP" /run/aurora-modem/lifecycle.log | tail -4
echo ---modem; /etc/init.d/aurora-modem status
echo ---wifi; /etc/init.d/aurora-wifi status; echo ---wifilog; cat /run/aurora-wifi/wifi.log; cat /run/aurora-wifi/service.log; echo ---hostapdlog; cat /run/aurora-wifi/hostapd.log
for r in /sys/class/remoteproc/*; do echo "RP $(cat $r/name)=$(cat $r/state)"; done; iw dev
echo ---dmesg-wifi; dmesg | grep -iE "wcn36xx|wcnss|a204000|cfg80211|aurora-wifi|crash|watchdog"
echo ---ping; ping -c4 -W3 -I wwan0 77.88.8.8 | tail -2
echo ---display; /etc/init.d/aurora-display status; cat /run/aurora-display/display.log; cat /run/aurora-display/service.log
echo ---consoles; cat /sys/class/tty/console/active; for v in /sys/class/vtconsole/vtcon*; do echo "$v $(cat $v/bind) $(cat $v/name)"; done; ls -l /proc/[0-9]*/fd/0 2>/dev/null | grep -E "ttyMSM0|tty1|console" | sed "s/.* \/proc/\/proc/"
echo ---getty; hostname; ps | grep -E "[g]etty|[c]ttyhack| sh$"
echo ---fb; ls -l /dev/dri/card0 /dev/fb0; for f in name bits_per_pixel virtual_size stride; do echo "fb0 $f=$(cat /sys/class/graphics/fb0/$f)"; done; cat /sys/class/drm/card0-SPI-1/enabled /sys/class/drm/card0-SPI-1/dpms
echo ---regs; for r in /sys/class/regulator/regulator.*; do n=$(cat $r/name); case $n in l6|l17) echo "$n $(cat $r/state) $(cat $r/microvolts) users=$(cat $r/num_users)";; esac; done
echo ---bl; for f in bl_power brightness actual_brightness; do echo "bl $f=$(cat /sys/class/backlight/backlight/$f)"; done
echo ---dmesg-display; dmesg | grep -iE "drm|panel|mipi|spi_qup|78b8000|fbcon|Console: |frame buffer|backlight|aurora-display|l17"
echo ---display-errors; dmesg | grep -iE "drm|panel|mipi|spi0|fbcon|backlight|aurora-display" | grep -ciE "err|fail|timeout|warn"
echo ---iio; for d in /sys/bus/iio/devices/iio:device*; do echo "$d name=$(cat $d/name)"; ls $d | tr '\n' ' '; echo; done
for f in /sys/bus/iio/devices/iio:device*/in_*; do case $f in *_raw|*_input|*_scale|*_offset) echo "$f=$(cat $f 2>&1)";; esac; done
echo ---thermal; for t in /sys/class/thermal/thermal_zone*; do echo "$t $(cat $t/type) $(cat $t/temp)"; done
echo ---dmesg-adc; dmesg | grep -iE "vadc|iio|temp-alarm|qpnp|spmi-temp|pm8916-thermal|thermal"
echo ---emmc; awk "{print \"w=\"\$5\" s=\"\$7}" /sys/block/mmcblk0/stat
echo SNAP-END
C
tn $O/.c 25 > $O/snapshot.txt; act "snapshot: $(grep -c SNAP-END $O/snapshot.txt) end markers; $(grep -E '^RP a204' $O/snapshot.txt)"
printf 'dmesg > /tmp/dm.txt; nc -l -p 9881 < /tmp/dm.txt &\n' > $O/.d; tn $O/.d 3 >/dev/null; sleep 1; ncat --recv-only 172.16.42.1 9881 > $O/dmesg.full
cp $U.log $O/uart.log; act "B10B0 $MODE$K END - operator visual check next"

19
b10/b10b0/b10b0-cal.sh Normal file
View file

@ -0,0 +1,19 @@
#!/bin/sh
# B10B-0 VBAT calibration series: N samples, P s apart. Reads IIO (VADC) + BMS FIFO/charger status via regmap debugfs (reads only).
# Shows the sample number on the display (tty1) so the operator can note the DMM value (BAT+ - BAT-) for each sample.
N=${1:-12}; P=${2:-20}
grep -q " /sys/kernel/debug " /proc/mounts || mount -t debugfs debugfs /sys/kernel/debug
R=/sys/kernel/debug/regmap/0-00/registers
rd() { dd if=$R bs=9 skip=$(($1)) count=$2 2>/dev/null | cut -d' ' -f2 | tr '\n' ' '; }
D=$(for d in /sys/bus/iio/devices/iio:device*; do [ "$(cat $d/name 2>/dev/null)" = "adc@3100" ] && echo $d; done | head -1)
[ -z "$D" ] && D=$(ls -d /sys/bus/iio/devices/iio:device* | head -1)
echo "CAL-START dev=$D name=$(cat $D/name) files: $(cd $D && ls | grep -E '^in_' | tr '\n' ' ')"
i=1
while [ $i -le $N ]; do
printf '\033[2J\033[H\n\n B10B-0 CAL\n\n SAMPLE %d / %d\n\n read DMM now\n' $i $N > /dev/tty1
v=""; for f in $D/in_voltage6_*raw $D/in_voltage6_*input $D/in_voltage7_*raw $D/in_voltage7_*input; do [ -e "$f" ] && v="$v ${f##*/}=$(cat $f)"; done
echo "S $i $(date -u +%T) up=$(cut -d' ' -f1 /proc/uptime)$v fifo=$(rd 0x40c0 10) st1009=$(rd 0x1009 1) usb1308=$(rd 0x1308 1) rt1010=$(rd 0x1010 1) tz=$(for t in /sys/class/thermal/thermal_zone*; do printf "%s:%s," $(cat $t/type) $(cat $t/temp); done)"
i=$((i + 1)); [ $i -le $N ] && sleep $P
done
printf '\033[2J\033[H\n\n B10B-0 CAL\n\n DONE\n' > /dev/tty1
echo CAL-END

13
b10/b10b0/b10b0-dump.sh Normal file
View file

@ -0,0 +1,13 @@
#!/bin/sh
# B10B-0 read-only full dump of PM8916 SID0: every 0x100 peripheral block whose TYPE (offset 0x04) is non-zero. Reads only.
grep -q " /sys/kernel/debug " /proc/mounts || mount -t debugfs debugfs /sys/kernel/debug
R=/sys/kernel/debug/regmap/0-00/registers
echo "== DUMP-START up=$(cut -d' ' -f1 /proc/uptime) $(uname -r) emmc=$(awk '{print "w="$5}' /sys/block/mmcblk0/stat)"
b=1
while [ $b -lt 256 ]; do
a=$((b * 256))
t=$(dd if=$R bs=9 skip=$((a + 4)) count=1 2>/dev/null | cut -d' ' -f2)
if [ -n "$t" ] && [ "$t" != "00" ]; then dd if=$R bs=9 skip=$a count=256 2>/dev/null; fi
b=$((b + 1))
done
echo "== DUMP-END up=$(cut -d' ' -f1 /proc/uptime)"

19
b10/b10b0/build-b10b0.sh Executable file
View file

@ -0,0 +1,19 @@
#!/bin/sh
# B10B-0 RAM test image (fastboot boot only - never flash; cache B9C / aboot untouched):
# kernel = out-b10b0 (b9c + IIO + QCOM_SPMI_VADC + QCOM_SPMI_TEMP_ALARM; linux/aurora-b10b0.config). No BMS, no LBC.
# DTB = linux/dts/msm8916-jz08-aurora-b10b0.dtb (B9B DTB 7ca9cc79 + VADC channel@6 VBAT_SNS 1/3 + model string)
# initramfs + cmdline = exact B9C (b9/b9c/out). out/ contains the B8F initramfs (Wi-Fi PSK): never publish.
set -e; cd "$(dirname "$0")"; O=out; KB=/home/q/aurora-kbuild/out-b10b0; L=../../linux; B9C=../../b9/b9c/out
mkdir -p $O
echo "7ca9cc794a3b85d3b7240f6311ad03bee9e1a4a59aae2ed9438318e853f7c3dc $L/dts/msm8916-jz08-aurora-b9b.dtb" | sha256sum -c
grep " initramfs-b9c.cpio.gz\$" $B9C/SHA256SUMS | sed "s| | $B9C/|" | sha256sum -c
grep " cmdline.txt\$" $B9C/SHA256SUMS | sed "s| | $B9C/|" | sha256sum -c
for s in IIO=y QCOM_SPMI_VADC=y QCOM_SPMI_TEMP_ALARM=y 'LOCALVERSION="-aurora-b10b0"'; do grep -q "^CONFIG_$s\$" $KB/.config || { echo "STOP: CONFIG_$s"; exit 1; }; done
for s in CHARGER_PM8916_LBC BATTERY_PM8916_BMS_VM; do grep -q "^CONFIG_$s=y" $KB/.config && { echo "STOP: $s enabled"; exit 1; }; done
cp $KB/arch/arm64/boot/Image.gz $O/Image.gz; cp $KB/.config $O/config-b10b0; cp $L/dts/msm8916-jz08-aurora-b10b0.dtb $O/aurora-b10b0.dtb
cp $B9C/initramfs-b9c.cpio.gz $O/initramfs.cpio.gz; cp $B9C/cmdline.txt $O/cmdline.txt
cat $O/Image.gz $O/aurora-b10b0.dtb > $O/Image.gz-dtb
python3 ../../b6p/mkbootimg.py $O/Image.gz-dtb $O/initramfs.cpio.gz $O/cmdline.txt $O/aurora-b10b0.img
SZ=$(python3 -c "import struct;print(struct.unpack_from('<Q',open('$KB/arch/arm64/boot/Image','rb').read(24),16)[0])")
printf 'kernel image_size 0x%x, RAM-boot end 0x%x (< 0x81e00000 DTB)\n' $SZ $((0x80000000 + SZ)); [ $((0x80000000 + SZ)) -lt $((0x81e00000)) ]
(cd $O && sha256sum Image.gz aurora-b10b0.dtb Image.gz-dtb config-b10b0 cmdline.txt initramfs.cpio.gz aurora-b10b0.img > SHA256SUMS; cat SHA256SUMS); ls -l $O/aurora-b10b0.img

7
b10/b10b0/out/SHA256SUMS Normal file
View file

@ -0,0 +1,7 @@
ca099bf36ab03a2ad3a984b1920723f1e619d4f69b1c8d5742b59fda55acad71 Image.gz
7837c5047ecfd6ce44ba6c3045904a68a3656ced835b7d35469f00d1fb1a88a7 aurora-b10b0.dtb
8f244e82cc425a8522515e535cca27908757b0fe26e877ddde5a6680a94710f5 Image.gz-dtb
27eab277cd2b6e74389ed9801d025d9f53046e9b2e6dac091b0a5e753e86017a config-b10b0
0fef41b262917c8ae308fa222da0017e2b3cb3ec5da1ca8ba18d0318476761a3 cmdline.txt
ac518e27e2957ad5e4515969b9a3808024e11ef8d1a79433a899a67dbc644558 initramfs.cpio.gz
a360aee2cb822d737c7409deb71b39951e02c436f5252e88d96c0583cb81e2bb aurora-b10b0.img

View file

@ -0,0 +1 @@
earlycon console=tty0 console=ttyMSM0,115200n8 ignore_loglevel loglevel=8 rdinit=/init fbcon=font:6x8 consoleblank=0

59
b10/b10b1/b10b1-boot.sh Normal file
View file

@ -0,0 +1,59 @@
#!/bin/sh
# 480s side, B10B-1 boot K (RAM only). RESET-held power-on -> lk1st fastboot -> `fastboot boot` B10B-1 RAM image. Reads only over telnet.
# MODE=cold: normal power-on (no RESET, no fastboot) -> lk2nd extlinux from eMMC cache. Script only observes + reads over telnet;
# nothing is written to eMMC. Visual display checks need the operator. Adds display/fbcon/getty/console checks to the B8F snapshot.
K=$1; MODE=ram; [ -n "$K" ] || { echo "usage: $0 K"; exit 2; }
cd ~/doc/modem/jz08-aurora; O=logs/b10/b10b1/$MODE$K; mkdir -p $O; IMG=b10/b10b1/out/aurora-b10b1.img
A=$O/host-actions.txt; act() { echo "$(date -u +%H:%M:%S.%3N) $*" | tee -a $A; }
tn() { { sleep 1; sed "s/\$/\r/" "$1"; sleep $2; } | ncat 172.16.42.1 23 | tr -d "\000\r"; }
OLD=$(ps -eo pid,cmd | grep "[u]artlog.py /dev/ttyUSB0" | awk '{print $1}'); [ -n "$OLD" ] && kill $OLD; sleep 1
U=logs/uart/b10b1-$MODE$K-$(date +%Y%m%d-%H%M%S); setsid nohup python3 tools/uartlog.py /dev/ttyUSB0 $U > $U.stderr 2>&1 < /dev/null &
if [ $MODE = ram ]; then
echo "1029647d6a245481ff8488dabea2ab53cb15f800f5ddbb07a2737b83ae06d4ac $IMG" | sha256sum -c || exit 1
act "B10B1 $MODE$K: waiting for fastboot <EMMC_SERIAL> (power off >= 90 s, then RESET held + battery -> USB)"
if fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL>; then act "already in fastboot - wait for power-off"; until ! fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL>; do sleep 1; done; fi
i=0; until fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL>; do i=$((i+1)); [ $i -ge 1800 ] && { act "ABORT: no fastboot"; exit 1; }; sleep 2; done
act "fastboot present"; { fastboot boot $IMG 2>&1; echo "rc=$?"; } | tee -a $A
else
act "B10B1 $MODE$K: waiting for the board to go away (power off >= 90 s), then normal power-on WITHOUT RESET"
until ! ping -c1 -W1 172.16.42.1 >/dev/null 2>&1; do sleep 1; done; act "board unreachable (powered off)"
until ping -c1 -W1 172.16.42.1 >/dev/null 2>&1; do fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL> && { act "ABORT: board is in fastboot - RESET was held?"; exit 1; }; sleep 1; done
fi
i=0; until ping -c1 -W1 172.16.42.1 >/dev/null 2>&1; do i=$((i+1)); [ $i -ge 180 ] && { act "ABORT: NCM not up"; cp $U.log $O/uart.log; exit 1; }; sleep 1; done; act "NCM ping ok"
R=$(grep -a "rtc-pm8xxx.*setting system clock" $U.log | tail -1 | sed -n 's/.*(\([0-9]*\)).*/\1/p'); C=B; [ -n "$R" ] && [ "$R" -lt 40 ] && C=A; act "RTC at boot ${R:-?} s -> class $C"
printf 'cat /proc/device-tree/model; echo; uname -r; grep -E "START OK|FAIL in|rollback" /run/aurora-modem/lifecycle.log | tail -1\n' > $O/.w
i=0; until tn $O/.w 3 | grep -qE "^\[[0-9.]+\] .*(=== START OK|FAIL in|rollback)"; do i=$((i+1)); [ $i -ge 80 ] && { act "no START OK/FAIL after ~12 min"; break; }; sleep 6; done
tn $O/.w 3 | grep -aE "Aurora|aurora-b8|START OK|FAIL" | tee -a $A
printf 'grep -E "AP ENABLED|FAIL" /run/aurora-wifi/wifi.log | tail -1\n' > $O/.a
i=0; until tn $O/.a 3 | grep -qE "^\[[0-9.]+\] (=== AP ENABLED|FAIL)"; do i=$((i+1)); [ $i -ge 20 ] && { act "no AP ENABLED/FAIL after ~3 min"; break; }; sleep 6; done
act "wifi: $(tn $O/.a 3 | grep -E '^\[[0-9.]+\] (=== AP ENABLED|FAIL)' | tail -1)"
printf 'grep -E "SNTP (check|STEP|: )" /run/aurora-modem/lifecycle.log | tail -2\n' > $O/.s
i=0; until tn $O/.s 3 | grep -qE "^\[[0-9.]+\] SNTP"; do i=$((i+1)); [ $i -ge 15 ] && break; sleep 4; done; act "sntp: $(tn $O/.s 3 | grep -E '^\[[0-9.]+\] SNTP' | tail -2 | tr '\n' ' ')"
cat > $O/.c <<'C'
echo SNAP-BEGIN; cat /proc/uptime; date -u; cat /proc/device-tree/model; echo; uname -a; cat /proc/cmdline
echo ---time; cat /run/aurora-modem/time-set; grep -E "TIME|SNTP" /run/aurora-modem/lifecycle.log | tail -4
echo ---modem; /etc/init.d/aurora-modem status
echo ---wifi; /etc/init.d/aurora-wifi status; echo ---wifilog; cat /run/aurora-wifi/wifi.log; cat /run/aurora-wifi/service.log; echo ---hostapdlog; cat /run/aurora-wifi/hostapd.log
for r in /sys/class/remoteproc/*; do echo "RP $(cat $r/name)=$(cat $r/state)"; done; iw dev
echo ---dmesg-wifi; dmesg | grep -iE "wcn36xx|wcnss|a204000|cfg80211|aurora-wifi|crash|watchdog"
echo ---ping; ping -c4 -W3 -I wwan0 77.88.8.8 | tail -2
echo ---display; /etc/init.d/aurora-display status; cat /run/aurora-display/display.log; cat /run/aurora-display/service.log
echo ---consoles; cat /sys/class/tty/console/active; for v in /sys/class/vtconsole/vtcon*; do echo "$v $(cat $v/bind) $(cat $v/name)"; done; ls -l /proc/[0-9]*/fd/0 2>/dev/null | grep -E "ttyMSM0|tty1|console" | sed "s/.* \/proc/\/proc/"
echo ---getty; hostname; ps | grep -E "[g]etty|[c]ttyhack| sh$"
echo ---fb; ls -l /dev/dri/card0 /dev/fb0; for f in name bits_per_pixel virtual_size stride; do echo "fb0 $f=$(cat /sys/class/graphics/fb0/$f)"; done; cat /sys/class/drm/card0-SPI-1/enabled /sys/class/drm/card0-SPI-1/dpms
echo ---regs; for r in /sys/class/regulator/regulator.*; do n=$(cat $r/name); case $n in l6|l17) echo "$n $(cat $r/state) $(cat $r/microvolts) users=$(cat $r/num_users)";; esac; done
echo ---bl; for f in bl_power brightness actual_brightness; do echo "bl $f=$(cat /sys/class/backlight/backlight/$f)"; done
echo ---dmesg-display; dmesg | grep -iE "drm|panel|mipi|spi_qup|78b8000|fbcon|Console: |frame buffer|backlight|aurora-display|l17"
echo ---display-errors; dmesg | grep -iE "drm|panel|mipi|spi0|fbcon|backlight|aurora-display" | grep -ciE "err|fail|timeout|warn"
echo ---iio; for d in /sys/bus/iio/devices/iio:device*; do echo "$d name=$(cat $d/name)"; ls $d | tr '\n' ' '; echo; done
for f in /sys/bus/iio/devices/iio:device*/in_*; do case $f in *_raw|*_input|*_scale|*_offset) echo "$f=$(cat $f 2>&1)";; esac; done
echo ---psy; ls -l /sys/class/power_supply/; for p in /sys/class/power_supply/*; do echo "-- $p"; cat $p/uevent; ls $p; done
echo ---dmesg-bms; dmesg | grep -iE "bms|battery|power_supply|4000"
echo ---thermal; for t in /sys/class/thermal/thermal_zone*; do echo "$t $(cat $t/type) $(cat $t/temp)"; done
echo ---dmesg-adc; dmesg | grep -iE "vadc|iio|temp-alarm|qpnp|spmi-temp|pm8916-thermal|thermal"
echo ---emmc; awk "{print \"w=\"\$5\" s=\"\$7}" /sys/block/mmcblk0/stat
echo SNAP-END
C
tn $O/.c 25 > $O/snapshot.txt; act "snapshot: $(grep -c SNAP-END $O/snapshot.txt) end markers; $(grep -E '^RP a204' $O/snapshot.txt)"
printf 'dmesg > /tmp/dm.txt; nc -l -p 9881 < /tmp/dm.txt &\n' > $O/.d; tn $O/.d 3 >/dev/null; sleep 1; ncat --recv-only 172.16.42.1 9881 > $O/dmesg.full
cp $U.log $O/uart.log; act "B10B1 $MODE$K END - operator visual check next"

16
b10/b10b1/b10b1-cal.sh Normal file
View file

@ -0,0 +1,16 @@
#!/bin/sh
# B10B-1 series: N samples, P s apart. Reads VADC (IIO), BMS-VM power_supply properties, BMS FIFO/OCV raw and charger status (reads only).
N=${1:-12}; P=${2:-20}
grep -q " /sys/kernel/debug " /proc/mounts || mount -t debugfs debugfs /sys/kernel/debug
R=/sys/kernel/debug/regmap/0-00/registers
rd() { dd if=$R bs=9 skip=$(($1)) count=$2 2>/dev/null | cut -d' ' -f2 | tr '\n' ' '; }
D=/sys/bus/iio/devices/iio:device0; B=$(ls -d /sys/class/power_supply/*bms* 2>/dev/null | head -1)
echo "CAL-START iio=$(cat $D/name) bms=$B props: $(ls $B | tr '\n' ' ')"
i=1
while [ $i -le $N ]; do
printf '\033[2J\033[H\n\n B10B-1\n\n SAMPLE %d / %d\n' $i $N > /dev/tty1
echo "S $i $(date -u +%T) up=$(cut -d' ' -f1 /proc/uptime) r6=$(cat $D/in_voltage6_raw) r9=$(cat $D/in_voltage9_raw) r10=$(cat $D/in_voltage10_raw) vph=$(cat $D/in_voltage7_input) bms_v=$(cat $B/voltage_now 2>&1) bms_ocv=$(cat $B/voltage_ocv 2>&1) bms_st=$(cat $B/status 2>&1) bms_h=$(cat $B/health 2>&1) fifo=$(rd 0x40c0 4) ocv=$(rd 0x406a 2) st1009=$(rd 0x1009 1) usb1308=$(rd 0x1308 1) irq=$(grep -i vm_bms /proc/interrupts | awk '{print $2+$3+$4+$5}') pmt=$(cat $D/in_temp8_input)"
i=$((i + 1)); [ $i -le $N ] && sleep $P
done
printf '\033[2J\033[H\n\n B10B-1\n\n DONE\n' > /dev/tty1
echo CAL-END

19
b10/b10b1/build-b10b1.sh Executable file
View file

@ -0,0 +1,19 @@
#!/bin/sh
# B10B-1 RAM test image (fastboot boot only - never flash; cache B9C / aboot untouched):
# kernel = out-b10b1 (b10b0 + BATTERY_PM8916_BMS_VM; linux/aurora-b10b1.config). No LBC.
# DTB = linux/dts/msm8916-jz08-aurora-b10b1.dtb (B10B-0 DTB + simple-battery 3000 mAh/3.4-4.2 V + pm8916_bms okay)
# initramfs + cmdline = exact B9C (b9/b9c/out). out/ contains the B8F initramfs (Wi-Fi PSK): never publish.
set -e; cd "$(dirname "$0")"; O=out; KB=/home/q/aurora-kbuild/out-b10b1; L=../../linux; B9C=../../b9/b9c/out
mkdir -p $O
echo "7ca9cc794a3b85d3b7240f6311ad03bee9e1a4a59aae2ed9438318e853f7c3dc $L/dts/msm8916-jz08-aurora-b9b.dtb" | sha256sum -c
grep " initramfs-b9c.cpio.gz\$" $B9C/SHA256SUMS | sed "s| | $B9C/|" | sha256sum -c
grep " cmdline.txt\$" $B9C/SHA256SUMS | sed "s| | $B9C/|" | sha256sum -c
for s in IIO=y QCOM_SPMI_VADC=y BATTERY_PM8916_BMS_VM=y QCOM_SPMI_TEMP_ALARM=y 'LOCALVERSION="-aurora-b10b1"'; do grep -q "^CONFIG_$s\$" $KB/.config || { echo "STOP: CONFIG_$s"; exit 1; }; done
for s in CHARGER_PM8916_LBC; do grep -q "^CONFIG_$s=y" $KB/.config && { echo "STOP: $s enabled"; exit 1; }; done
cp $KB/arch/arm64/boot/Image.gz $O/Image.gz; cp $KB/.config $O/config-b10b1; cp $L/dts/msm8916-jz08-aurora-b10b1.dtb $O/aurora-b10b1.dtb
cp $B9C/initramfs-b9c.cpio.gz $O/initramfs.cpio.gz; cp $B9C/cmdline.txt $O/cmdline.txt
cat $O/Image.gz $O/aurora-b10b1.dtb > $O/Image.gz-dtb
python3 ../../b6p/mkbootimg.py $O/Image.gz-dtb $O/initramfs.cpio.gz $O/cmdline.txt $O/aurora-b10b1.img
SZ=$(python3 -c "import struct;print(struct.unpack_from('<Q',open('$KB/arch/arm64/boot/Image','rb').read(24),16)[0])")
printf 'kernel image_size 0x%x, RAM-boot end 0x%x (< 0x81e00000 DTB)\n' $SZ $((0x80000000 + SZ)); [ $((0x80000000 + SZ)) -lt $((0x81e00000)) ]
(cd $O && sha256sum Image.gz aurora-b10b1.dtb Image.gz-dtb config-b10b1 cmdline.txt initramfs.cpio.gz aurora-b10b1.img > SHA256SUMS; cat SHA256SUMS); ls -l $O/aurora-b10b1.img

7
b10/b10b1/out/SHA256SUMS Normal file
View file

@ -0,0 +1,7 @@
fa573b4b4e1249efc9ee7db3067020086152aabfe84540c65c98242dd8077cd9 Image.gz
1400f98f8ec90ffc7c6efe04e83541d0a7b6a4e6895932e55267642c44c0d1ef aurora-b10b1.dtb
c932cdcd594034066ed286d64a065642f3e664da81ef0314f60f7afffc261832 Image.gz-dtb
5241bb0cef473c60c0ca56e10e07d2561e38c054b5e488660665a4d42f013b2a config-b10b1
0fef41b262917c8ae308fa222da0017e2b3cb3ec5da1ca8ba18d0318476761a3 cmdline.txt
ac518e27e2957ad5e4515969b9a3808024e11ef8d1a79433a899a67dbc644558 initramfs.cpio.gz
1029647d6a245481ff8488dabea2ab53cb15f800f5ddbb07a2737b83ae06d4ac aurora-b10b1.img

View file

@ -0,0 +1 @@
earlycon console=tty0 console=ttyMSM0,115200n8 ignore_loglevel loglevel=8 rdinit=/init fbcon=font:6x8 consoleblank=0

59
b10/b10b2/b10b2-boot.sh Normal file
View file

@ -0,0 +1,59 @@
#!/bin/sh
# 480s side, B10B-2 boot K (RAM only). RESET-held power-on -> lk1st fastboot -> `fastboot boot` B10B-2 RAM image. Reads only over telnet.
# MODE=cold: normal power-on (no RESET, no fastboot) -> lk2nd extlinux from eMMC cache. Script only observes + reads over telnet;
# nothing is written to eMMC. Visual display checks need the operator. Adds display/fbcon/getty/console checks to the B8F snapshot.
K=$1; MODE=ram; [ -n "$K" ] || { echo "usage: $0 K"; exit 2; }
cd ~/doc/modem/jz08-aurora; O=logs/b10/b10b2/$MODE$K; mkdir -p $O; IMG=b10/b10b2/out/aurora-b10b2.img
A=$O/host-actions.txt; act() { echo "$(date -u +%H:%M:%S.%3N) $*" | tee -a $A; }
tn() { { sleep 1; sed "s/\$/\r/" "$1"; sleep $2; } | ncat 172.16.42.1 23 | tr -d "\000\r"; }
OLD=$(ps -eo pid,cmd | grep "[u]artlog.py /dev/ttyUSB0" | awk '{print $1}'); [ -n "$OLD" ] && kill $OLD; sleep 1
U=logs/uart/b10b2-$MODE$K-$(date +%Y%m%d-%H%M%S); setsid nohup python3 tools/uartlog.py /dev/ttyUSB0 $U > $U.stderr 2>&1 < /dev/null &
if [ $MODE = ram ]; then
echo "9f8a909604cca92b79a0678873dbd721e5266b6e7053af8e61cefc7ca684e2cc $IMG" | sha256sum -c || exit 1
act "B10B2 $MODE$K: waiting for fastboot <EMMC_SERIAL> (power off >= 90 s, then RESET held + battery -> USB)"
if fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL>; then act "already in fastboot - wait for power-off"; until ! fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL>; do sleep 1; done; fi
i=0; until fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL>; do i=$((i+1)); [ $i -ge 1800 ] && { act "ABORT: no fastboot"; exit 1; }; sleep 2; done
act "fastboot present"; { fastboot boot $IMG 2>&1; echo "rc=$?"; } | tee -a $A
else
act "B10B2 $MODE$K: waiting for the board to go away (power off >= 90 s), then normal power-on WITHOUT RESET"
until ! ping -c1 -W1 172.16.42.1 >/dev/null 2>&1; do sleep 1; done; act "board unreachable (powered off)"
until ping -c1 -W1 172.16.42.1 >/dev/null 2>&1; do fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL> && { act "ABORT: board is in fastboot - RESET was held?"; exit 1; }; sleep 1; done
fi
i=0; until ping -c1 -W1 172.16.42.1 >/dev/null 2>&1; do i=$((i+1)); [ $i -ge 180 ] && { act "ABORT: NCM not up"; cp $U.log $O/uart.log; exit 1; }; sleep 1; done; act "NCM ping ok"
R=$(grep -a "rtc-pm8xxx.*setting system clock" $U.log | tail -1 | sed -n 's/.*(\([0-9]*\)).*/\1/p'); C=B; [ -n "$R" ] && [ "$R" -lt 40 ] && C=A; act "RTC at boot ${R:-?} s -> class $C"
printf 'cat /proc/device-tree/model; echo; uname -r; grep -E "START OK|FAIL in|rollback" /run/aurora-modem/lifecycle.log | tail -1\n' > $O/.w
i=0; until tn $O/.w 3 | grep -qE "^\[[0-9.]+\] .*(=== START OK|FAIL in|rollback)"; do i=$((i+1)); [ $i -ge 80 ] && { act "no START OK/FAIL after ~12 min"; break; }; sleep 6; done
tn $O/.w 3 | grep -aE "Aurora|aurora-b8|START OK|FAIL" | tee -a $A
printf 'grep -E "AP ENABLED|FAIL" /run/aurora-wifi/wifi.log | tail -1\n' > $O/.a
i=0; until tn $O/.a 3 | grep -qE "^\[[0-9.]+\] (=== AP ENABLED|FAIL)"; do i=$((i+1)); [ $i -ge 20 ] && { act "no AP ENABLED/FAIL after ~3 min"; break; }; sleep 6; done
act "wifi: $(tn $O/.a 3 | grep -E '^\[[0-9.]+\] (=== AP ENABLED|FAIL)' | tail -1)"
printf 'grep -E "SNTP (check|STEP|: )" /run/aurora-modem/lifecycle.log | tail -2\n' > $O/.s
i=0; until tn $O/.s 3 | grep -qE "^\[[0-9.]+\] SNTP"; do i=$((i+1)); [ $i -ge 15 ] && break; sleep 4; done; act "sntp: $(tn $O/.s 3 | grep -E '^\[[0-9.]+\] SNTP' | tail -2 | tr '\n' ' ')"
cat > $O/.c <<'C'
echo SNAP-BEGIN; cat /proc/uptime; date -u; cat /proc/device-tree/model; echo; uname -a; cat /proc/cmdline
echo ---time; cat /run/aurora-modem/time-set; grep -E "TIME|SNTP" /run/aurora-modem/lifecycle.log | tail -4
echo ---modem; /etc/init.d/aurora-modem status
echo ---wifi; /etc/init.d/aurora-wifi status; echo ---wifilog; cat /run/aurora-wifi/wifi.log; cat /run/aurora-wifi/service.log; echo ---hostapdlog; cat /run/aurora-wifi/hostapd.log
for r in /sys/class/remoteproc/*; do echo "RP $(cat $r/name)=$(cat $r/state)"; done; iw dev
echo ---dmesg-wifi; dmesg | grep -iE "wcn36xx|wcnss|a204000|cfg80211|aurora-wifi|crash|watchdog"
echo ---ping; ping -c4 -W3 -I wwan0 77.88.8.8 | tail -2
echo ---display; /etc/init.d/aurora-display status; cat /run/aurora-display/display.log; cat /run/aurora-display/service.log
echo ---consoles; cat /sys/class/tty/console/active; for v in /sys/class/vtconsole/vtcon*; do echo "$v $(cat $v/bind) $(cat $v/name)"; done; ls -l /proc/[0-9]*/fd/0 2>/dev/null | grep -E "ttyMSM0|tty1|console" | sed "s/.* \/proc/\/proc/"
echo ---getty; hostname; ps | grep -E "[g]etty|[c]ttyhack| sh$"
echo ---fb; ls -l /dev/dri/card0 /dev/fb0; for f in name bits_per_pixel virtual_size stride; do echo "fb0 $f=$(cat /sys/class/graphics/fb0/$f)"; done; cat /sys/class/drm/card0-SPI-1/enabled /sys/class/drm/card0-SPI-1/dpms
echo ---regs; for r in /sys/class/regulator/regulator.*; do n=$(cat $r/name); case $n in l6|l17) echo "$n $(cat $r/state) $(cat $r/microvolts) users=$(cat $r/num_users)";; esac; done
echo ---bl; for f in bl_power brightness actual_brightness; do echo "bl $f=$(cat /sys/class/backlight/backlight/$f)"; done
echo ---dmesg-display; dmesg | grep -iE "drm|panel|mipi|spi_qup|78b8000|fbcon|Console: |frame buffer|backlight|aurora-display|l17"
echo ---display-errors; dmesg | grep -iE "drm|panel|mipi|spi0|fbcon|backlight|aurora-display" | grep -ciE "err|fail|timeout|warn"
echo ---iio; for d in /sys/bus/iio/devices/iio:device*; do echo "$d name=$(cat $d/name)"; ls $d | tr '\n' ' '; echo; done
for f in /sys/bus/iio/devices/iio:device*/in_*; do case $f in *_raw|*_input|*_scale|*_offset) echo "$f=$(cat $f 2>&1)";; esac; done
echo ---psy; ls -l /sys/class/power_supply/; for p in /sys/class/power_supply/*; do echo "-- $p"; cat $p/uevent; ls $p; done
echo ---dmesg-bms; dmesg | grep -iE "bms|battery|power_supply|lbc|charger|extcon|ci_hdrc|4000|1000"
echo ---thermal; for t in /sys/class/thermal/thermal_zone*; do echo "$t $(cat $t/type) $(cat $t/temp)"; done
echo ---dmesg-adc; dmesg | grep -iE "vadc|iio|temp-alarm|qpnp|spmi-temp|pm8916-thermal|thermal"
echo ---emmc; awk "{print \"w=\"\$5\" s=\"\$7}" /sys/block/mmcblk0/stat
echo SNAP-END
C
tn $O/.c 25 > $O/snapshot.txt; act "snapshot: $(grep -c SNAP-END $O/snapshot.txt) end markers; $(grep -E '^RP a204' $O/snapshot.txt)"
printf 'dmesg > /tmp/dm.txt; nc -l -p 9881 < /tmp/dm.txt &\n' > $O/.d; tn $O/.d 3 >/dev/null; sleep 1; ncat --recv-only 172.16.42.1 9881 > $O/dmesg.full
cp $U.log $O/uart.log; act "B10B2 $MODE$K END - operator visual check next"

18
b10/b10b2/b10b2-mon.sh Normal file
View file

@ -0,0 +1,18 @@
#!/bin/sh
# B10B-2 charger observation: N samples, P s apart. Reads only (IIO, power_supply sysfs, regmap debugfs, thermal).
# Prints ALERT if VADC VBAT > 4.22 V or PMIC die temp > 60 C (operator then removes USB; the script never writes).
N=${1:-120}; P=${2:-30}
grep -q " /sys/kernel/debug " /proc/mounts || mount -t debugfs debugfs /sys/kernel/debug
R=/sys/kernel/debug/regmap/0-00/registers
rd() { dd if=$R bs=9 skip=$(($1)) count=$2 2>/dev/null | cut -d' ' -f2 | tr '\n' ' '; }
D=/sys/bus/iio/devices/iio:device0; B=/sys/class/power_supply/pm8916-bms-vm; C=$(ls -d /sys/class/power_supply/*lbc* 2>/dev/null | head -1)
echo "MON-START charger=$C props: $(ls $C 2>/dev/null | tr '\n' ' ')"
i=1
while [ $i -le $N ]; do
r6=$(cat $D/in_voltage6_raw); r9=$(cat $D/in_voltage9_raw); r10=$(cat $D/in_voltage10_raw); pt=$(cat $D/in_temp8_input)
vb=$(( (625000 + (r6 - r9) * 625000 / (r10 - r9)) * 3 ))
a=""; [ $vb -gt 4220000 ] && a="$a ALERT-VBAT"; [ $pt -gt 60000 ] && a="$a ALERT-TEMP"
echo "M $i $(date -u +%T) up=$(cut -d' ' -f1 /proc/uptime) vbat=$vb r6=$r6 r9=$r9 r10=$r10 vph=$(cat $D/in_voltage7_input) usbin=$(cat $D/in_voltage0_input) bms_v=$(cat $B/voltage_now) bms_st=$(cat $B/status) fifo=$(rd 0x40c0 4) st=$(rd 0x1009 3) crt=$(rd 0x1010 1) brt=$(rd 0x1210 1) urt=$(rd 0x1310 1) usb=$(rd 0x1308 2) vdd=$(rd 0x1040 2) ibat=$(rd 0x1044 2) ctrl=$(rd 0x1049 1) tchg=$(rd 0x1060 2) bd=$(rd 0x1642 1) online=$(cat $C/online 2>&1) ccc=$(cat $C/constant_charge_current 2>&1) ccv=$(cat $C/constant_charge_voltage_max 2>&1) pmt=$pt cpu=$(cat /sys/class/thermal/thermal_zone4/temp)$a"
i=$((i + 1)); [ $i -le $N ] && sleep $P
done
echo MON-END

19
b10/b10b2/build-b10b2.sh Executable file
View file

@ -0,0 +1,19 @@
#!/bin/sh
# B10B-2 RAM test image (fastboot boot only - never flash; cache B9C / aboot untouched):
# kernel = out-b10b2 (b10b2 + CHARGER_PM8916_LBC; linux/aurora-b10b2.config).
# DTB = linux/dts/msm8916-jz08-aurora-b10b2.dtb (B10B-1 DTB + pm8916_charger okay 4.2 V/500 mA, usbin off, usb extcon -> charger)
# initramfs + cmdline = exact B9C (b9/b9c/out). out/ contains the B8F initramfs (Wi-Fi PSK): never publish.
set -e; cd "$(dirname "$0")"; O=out; KB=/home/q/aurora-kbuild/out-b10b2; L=../../linux; B9C=../../b9/b9c/out
mkdir -p $O
echo "7ca9cc794a3b85d3b7240f6311ad03bee9e1a4a59aae2ed9438318e853f7c3dc $L/dts/msm8916-jz08-aurora-b9b.dtb" | sha256sum -c
grep " initramfs-b9c.cpio.gz\$" $B9C/SHA256SUMS | sed "s| | $B9C/|" | sha256sum -c
grep " cmdline.txt\$" $B9C/SHA256SUMS | sed "s| | $B9C/|" | sha256sum -c
for s in IIO=y QCOM_SPMI_VADC=y BATTERY_PM8916_BMS_VM=y CHARGER_PM8916_LBC=y QCOM_SPMI_TEMP_ALARM=y 'LOCALVERSION="-aurora-b10b2"'; do grep -q "^CONFIG_$s\$" $KB/.config || { echo "STOP: CONFIG_$s"; exit 1; }; done
cp $KB/arch/arm64/boot/Image.gz $O/Image.gz; cp $KB/.config $O/config-b10b2; cp $L/dts/msm8916-jz08-aurora-b10b2.dtb $O/aurora-b10b2.dtb
cp $B9C/initramfs-b9c.cpio.gz $O/initramfs.cpio.gz; cp $B9C/cmdline.txt $O/cmdline.txt
cat $O/Image.gz $O/aurora-b10b2.dtb > $O/Image.gz-dtb
python3 ../../b6p/mkbootimg.py $O/Image.gz-dtb $O/initramfs.cpio.gz $O/cmdline.txt $O/aurora-b10b2.img
SZ=$(python3 -c "import struct;print(struct.unpack_from('<Q',open('$KB/arch/arm64/boot/Image','rb').read(24),16)[0])")
printf 'kernel image_size 0x%x, RAM-boot end 0x%x (< 0x81e00000 DTB)\n' $SZ $((0x80000000 + SZ)); [ $((0x80000000 + SZ)) -lt $((0x81e00000)) ]
(cd $O && sha256sum Image.gz aurora-b10b2.dtb Image.gz-dtb config-b10b2 cmdline.txt initramfs.cpio.gz aurora-b10b2.img > SHA256SUMS; cat SHA256SUMS); ls -l $O/aurora-b10b2.img

7
b10/b10b2/out/SHA256SUMS Normal file
View file

@ -0,0 +1,7 @@
1b5ac87fd4490650a8510c94de7b882da90d3080a0dbcacb070888a12da433bc Image.gz
e7e3fe3e9dae0572a1e3fee709e19e3c6fd36c187a09055f77f438a95ac4b1a5 aurora-b10b2.dtb
ed290a259e576ce6e35387cb60cee248ac317dc7b84269ce4f8f6cda37d7a363 Image.gz-dtb
08358882f778741cd949f57049c019d2df0917f368fac3f3f1da3300407f54ba config-b10b2
0fef41b262917c8ae308fa222da0017e2b3cb3ec5da1ca8ba18d0318476761a3 cmdline.txt
ac518e27e2957ad5e4515969b9a3808024e11ef8d1a79433a899a67dbc644558 initramfs.cpio.gz
9f8a909604cca92b79a0678873dbd721e5266b6e7053af8e61cefc7ca684e2cc aurora-b10b2.img

View file

@ -0,0 +1 @@
earlycon console=tty0 console=ttyMSM0,115200n8 ignore_loglevel loglevel=8 rdinit=/init fbcon=font:6x8 consoleblank=0

60
b10/b10b3/b10b3-boot.sh Normal file
View file

@ -0,0 +1,60 @@
#!/bin/sh
# 480s side, B10B-3 boot K (RAM only). RESET-held power-on -> lk1st fastboot -> `fastboot boot` B10B-3 RAM image. Reads only over telnet.
# MODE=cold: normal power-on (no RESET, no fastboot) -> lk2nd extlinux from eMMC cache. Script only observes + reads over telnet;
# nothing is written to eMMC. Visual display checks need the operator. Adds display/fbcon/getty/console checks to the B8F snapshot.
K=$1; MODE=ram; [ -n "$K" ] || { echo "usage: $0 K"; exit 2; }
cd ~/doc/modem/jz08-aurora; O=logs/b10/b10b3/$MODE$K; mkdir -p $O; IMG=b10/b10b3/out/aurora-b10b3.img
A=$O/host-actions.txt; act() { echo "$(date -u +%H:%M:%S.%3N) $*" | tee -a $A; }
tn() { { sleep 1; sed "s/\$/\r/" "$1"; sleep $2; } | ncat 172.16.42.1 23 | tr -d "\000\r"; }
OLD=$(ps -eo pid,cmd | grep "[u]artlog.py /dev/ttyUSB0" | awk '{print $1}'); [ -n "$OLD" ] && kill $OLD; sleep 1
U=logs/uart/b10b3-$MODE$K-$(date +%Y%m%d-%H%M%S); setsid nohup python3 tools/uartlog.py /dev/ttyUSB0 $U > $U.stderr 2>&1 < /dev/null &
if [ $MODE = ram ]; then
echo "c3c885d5204ad5287ad474cc99068ca6995dc97281f2a014f383c20235bc827c $IMG" | sha256sum -c || exit 1
act "B10B3 $MODE$K: waiting for fastboot <EMMC_SERIAL> (power off >= 90 s, then RESET held + battery -> USB)"
if fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL>; then act "already in fastboot - wait for power-off"; until ! fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL>; do sleep 1; done; fi
i=0; until fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL>; do i=$((i+1)); [ $i -ge 1800 ] && { act "ABORT: no fastboot"; exit 1; }; sleep 2; done
act "fastboot present"; { fastboot boot $IMG 2>&1; echo "rc=$?"; } | tee -a $A
else
act "B10B3 $MODE$K: waiting for the board to go away (power off >= 90 s), then normal power-on WITHOUT RESET"
until ! ping -c1 -W1 172.16.42.1 >/dev/null 2>&1; do sleep 1; done; act "board unreachable (powered off)"
until ping -c1 -W1 172.16.42.1 >/dev/null 2>&1; do fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL> && { act "ABORT: board is in fastboot - RESET was held?"; exit 1; }; sleep 1; done
fi
i=0; until ping -c1 -W1 172.16.42.1 >/dev/null 2>&1; do i=$((i+1)); [ $i -ge 180 ] && { act "ABORT: NCM not up"; cp $U.log $O/uart.log; exit 1; }; sleep 1; done; act "NCM ping ok"
R=$(grep -a "rtc-pm8xxx.*setting system clock" $U.log | tail -1 | sed -n 's/.*(\([0-9]*\)).*/\1/p'); C=B; [ -n "$R" ] && [ "$R" -lt 40 ] && C=A; act "RTC at boot ${R:-?} s -> class $C"
printf 'cat /proc/device-tree/model; echo; uname -r; grep -E "START OK|FAIL in|rollback" /run/aurora-modem/lifecycle.log | tail -1\n' > $O/.w
i=0; until tn $O/.w 3 | grep -qE "^\[[0-9.]+\] .*(=== START OK|FAIL in|rollback)"; do i=$((i+1)); [ $i -ge 80 ] && { act "no START OK/FAIL after ~12 min"; break; }; sleep 6; done
tn $O/.w 3 | grep -aE "Aurora|aurora-b8|START OK|FAIL" | tee -a $A
printf 'grep -E "AP ENABLED|FAIL" /run/aurora-wifi/wifi.log | tail -1\n' > $O/.a
i=0; until tn $O/.a 3 | grep -qE "^\[[0-9.]+\] (=== AP ENABLED|FAIL)"; do i=$((i+1)); [ $i -ge 20 ] && { act "no AP ENABLED/FAIL after ~3 min"; break; }; sleep 6; done
act "wifi: $(tn $O/.a 3 | grep -E '^\[[0-9.]+\] (=== AP ENABLED|FAIL)' | tail -1)"
printf 'grep -E "SNTP (check|STEP|: )" /run/aurora-modem/lifecycle.log | tail -2\n' > $O/.s
i=0; until tn $O/.s 3 | grep -qE "^\[[0-9.]+\] SNTP"; do i=$((i+1)); [ $i -ge 15 ] && break; sleep 4; done; act "sntp: $(tn $O/.s 3 | grep -E '^\[[0-9.]+\] SNTP' | tail -2 | tr '\n' ' ')"
cat > $O/.c <<'C'
echo SNAP-BEGIN; cat /proc/uptime; date -u; cat /proc/device-tree/model; echo; uname -a; cat /proc/cmdline
echo ---time; cat /run/aurora-modem/time-set; grep -E "TIME|SNTP" /run/aurora-modem/lifecycle.log | tail -4
echo ---modem; /etc/init.d/aurora-modem status
echo ---wifi; /etc/init.d/aurora-wifi status; echo ---wifilog; cat /run/aurora-wifi/wifi.log; cat /run/aurora-wifi/service.log; echo ---hostapdlog; cat /run/aurora-wifi/hostapd.log
for r in /sys/class/remoteproc/*; do echo "RP $(cat $r/name)=$(cat $r/state)"; done; iw dev
echo ---dmesg-wifi; dmesg | grep -iE "wcn36xx|wcnss|a204000|cfg80211|aurora-wifi|crash|watchdog"
echo ---ping; ping -c4 -W3 -I wwan0 77.88.8.8 | tail -2
echo ---display; /etc/init.d/aurora-display status; cat /run/aurora-display/display.log; cat /run/aurora-display/service.log
echo ---consoles; cat /sys/class/tty/console/active; for v in /sys/class/vtconsole/vtcon*; do echo "$v $(cat $v/bind) $(cat $v/name)"; done; ls -l /proc/[0-9]*/fd/0 2>/dev/null | grep -E "ttyMSM0|tty1|console" | sed "s/.* \/proc/\/proc/"
echo ---getty; hostname; ps | grep -E "[g]etty|[c]ttyhack| sh$"
echo ---fb; ls -l /dev/dri/card0 /dev/fb0; for f in name bits_per_pixel virtual_size stride; do echo "fb0 $f=$(cat /sys/class/graphics/fb0/$f)"; done; cat /sys/class/drm/card0-SPI-1/enabled /sys/class/drm/card0-SPI-1/dpms
echo ---regs; for r in /sys/class/regulator/regulator.*; do n=$(cat $r/name); case $n in l6|l17) echo "$n $(cat $r/state) $(cat $r/microvolts) users=$(cat $r/num_users)";; esac; done
echo ---bl; for f in bl_power brightness actual_brightness; do echo "bl $f=$(cat /sys/class/backlight/backlight/$f)"; done
echo ---dmesg-display; dmesg | grep -iE "drm|panel|mipi|spi_qup|78b8000|fbcon|Console: |frame buffer|backlight|aurora-display|l17"
echo ---display-errors; dmesg | grep -iE "drm|panel|mipi|spi0|fbcon|backlight|aurora-display" | grep -ciE "err|fail|timeout|warn"
echo ---iio; for d in /sys/bus/iio/devices/iio:device*; do echo "$d name=$(cat $d/name)"; ls $d | tr '\n' ' '; echo; done
for f in /sys/bus/iio/devices/iio:device*/in_*; do case $f in *_raw|*_input|*_scale|*_offset) echo "$f=$(cat $f 2>&1)";; esac; done
echo ---psy; ls -l /sys/class/power_supply/; for p in /sys/class/power_supply/*; do echo "-- $p"; cat $p/uevent; ls $p; done
echo ---dmesg-bms; dmesg | grep -iE "bms|battery|power_supply|lbc|charger|extcon|ci_hdrc|4000|1000"
echo ---lbc-state; grep -q " /sys/kernel/debug " /proc/mounts || mount -t debugfs debugfs /sys/kernel/debug; cat /sys/kernel/debug/pm8916_lbc/state; dmesg | grep -E "safety timer|supervisor|pm8916-lbc|lbc"
echo ---thermal; for t in /sys/class/thermal/thermal_zone*; do echo "$t $(cat $t/type) $(cat $t/temp)"; done
echo ---dmesg-adc; dmesg | grep -iE "vadc|iio|temp-alarm|qpnp|spmi-temp|pm8916-thermal|thermal"
echo ---emmc; awk "{print \"w=\"\$5\" s=\"\$7}" /sys/block/mmcblk0/stat
echo SNAP-END
C
tn $O/.c 25 > $O/snapshot.txt; act "snapshot: $(grep -c SNAP-END $O/snapshot.txt) end markers; $(grep -E '^RP a204' $O/snapshot.txt)"
printf 'dmesg > /tmp/dm.txt; nc -l -p 9881 < /tmp/dm.txt &\n' > $O/.d; tn $O/.d 3 >/dev/null; sleep 1; ncat --recv-only 172.16.42.1 9881 > $O/dmesg.full
cp $U.log $O/uart.log; act "B10B3 $MODE$K END - operator visual check next"

3
b10/b10b3/b10b3-cmd.sh Normal file
View file

@ -0,0 +1,3 @@
#!/bin/sh
# 480s side: run one shell command line on the board over telnet, print output. usage: b10b3-cmd.sh WAIT 'cmd'
W=$1; shift; { sleep 1; printf '%s\r\n' "$*"; sleep $W; } | ncat -w $((W + 6)) 172.16.42.1 23 | tr -d '\000\r' | grep -vE '^(~ #|BusyBox|Enter .help)' | sed 1d

View file

@ -0,0 +1,483 @@
--- a/drivers/iio/adc/qcom-spmi-vadc.c
+++ b/drivers/iio/adc/qcom-spmi-vadc.c
@@ -563,7 +563,7 @@
VADC_CHAN_NO_SCALE(SPARE1_03, 1)
VADC_CHAN_NO_SCALE(USB_ID_MV, 1)
VADC_CHAN_VOLT(VCOIN, 1, SCALE_DEFAULT)
- VADC_CHAN_NO_SCALE(VBAT_SNS, 1)
+ VADC_CHAN_VOLT(VBAT_SNS, 1, SCALE_DEFAULT)
VADC_CHAN_VOLT(VSYS, 1, SCALE_DEFAULT)
VADC_CHAN_TEMP(DIE_TEMP, 0, SCALE_PMIC_THERM)
VADC_CHAN_VOLT(REF_625MV, 0, SCALE_DEFAULT)
--- a/drivers/power/supply/pm8916_lbc.c
+++ b/drivers/power/supply/pm8916_lbc.c
@@ -13,6 +13,13 @@
#include <linux/delay.h>
#include <linux/interrupt.h>
#include <linux/extcon-provider.h>
+#include <linux/debugfs.h>
+#include <linux/devm-helpers.h>
+#include <linux/iio/consumer.h>
+#include <linux/mutex.h>
+#include <linux/of.h>
+#include <linux/seq_file.h>
+#include <linux/workqueue.h>
/* Two bytes: type + subtype */
#define PM8916_PERPH_TYPE 0x04
@@ -42,6 +49,25 @@
#define PM8916_LBC_CHGR_CHG_CTRL 0x49
#define PM8916_LBC_CHGR_CHG_EN BIT(7)
#define PM8916_LBC_CHGR_PSTG_EN BIT(5)
+#define PM8916_LBC_CHGR_FORCE_BATT_ON BIT(0)
+#define PM8916_LBC_CHGR_EN_MASK (PM8916_LBC_CHGR_CHG_EN | PM8916_LBC_CHGR_FORCE_BATT_ON)
+
+#define PM8916_LBC_CHGR_CHG_FAILED 0x4a
+#define PM8916_LBC_CHGR_CHG_FAILED_BIT BIT(7)
+
+/* USB_CHGPTH 0x08: 0x02 while the charge path is on, 0x01 after end of charge (observed, not documented) */
+#define PM8916_LBC_USB_PATH_STS 0x08
+#define PM8916_LBC_USB_PATH_ON BIT(1)
+
+/* Aurora B10B-3 recharge supervisor */
+#define PM8916_LBC_SUPV_PERIOD_MS 30000
+#define PM8916_LBC_SUPV_DONE_POLLS 2
+#define PM8916_LBC_SUPV_LOW_POLLS 3
+#define PM8916_LBC_SUPV_OVP_UV 4250000
+#define PM8916_LBC_TIMEOUT_DEFAULT_MIN 512
+#define PM8916_LBC_TIMEOUT_STEP_MIN 4
+#define PM8916_LBC_TIMEOUT_MAX_MIN 512
+#define PM8916_LBC_SUPV_LOG 16
#define PM8916_LBC_CHGR_MIN_CURRENT 90000
#define PM8916_LBC_CHGR_MAX_CURRENT 1440000
@@ -65,6 +91,55 @@
unsigned int charge_voltage_safe;
unsigned int charge_current_max;
unsigned int charge_current_safe;
+
+ /* recharge supervisor */
+ struct iio_channel *vbat_chan;
+ struct delayed_work supv_work;
+ struct mutex supv_lock;
+ int state;
+ int fault_reason;
+ unsigned int recharge_uv; /* production threshold from monitored-battery */
+ unsigned int timeout_min;
+ int vbat_uv;
+ int done_polls;
+ int low_polls;
+ unsigned int n_terminated;
+ unsigned int n_recharge;
+ struct {
+ time64_t t;
+ int from, to, vbat;
+ const char *why;
+ } log[PM8916_LBC_SUPV_LOG];
+ unsigned int log_n;
+ struct dentry *debugfs;
+};
+
+enum {
+ LBC_ST_INIT = 0,
+ LBC_ST_NO_USB,
+ LBC_ST_CHARGING,
+ LBC_ST_TERMINATED,
+ LBC_ST_FAULT,
+};
+
+static const char * const lbc_state_name[] = {
+ [LBC_ST_INIT] = "INIT",
+ [LBC_ST_NO_USB] = "NO_USB",
+ [LBC_ST_CHARGING] = "CHARGING",
+ [LBC_ST_TERMINATED] = "TERMINATED",
+ [LBC_ST_FAULT] = "FAULT",
+};
+
+enum {
+ LBC_FAULT_NONE = 0,
+ LBC_FAULT_TIMER,
+ LBC_FAULT_OVP,
+};
+
+static const char * const lbc_fault_name[] = {
+ [LBC_FAULT_NONE] = "none",
+ [LBC_FAULT_TIMER] = "safety-timer (CHG_FAILED)",
+ [LBC_FAULT_OVP] = "vbat-overvoltage",
};
static const unsigned int pm8916_lbc_charger_cable[] = {
@@ -79,7 +154,7 @@
LBC_MISC,
};
-static int pm8916_lbc_charger_configure(struct pm8916_lbc_charger *chg)
+static int pm8916_lbc_charger_configure(struct pm8916_lbc_charger *chg, bool set_ctrl)
{
int ret = 0;
unsigned int tmp;
@@ -107,10 +182,16 @@
if (ret)
goto error;
- ret = regmap_write(chg->regmap, chg->reg[LBC_CHGR] + PM8916_LBC_CHGR_CHG_CTRL,
- PM8916_LBC_CHGR_CHG_EN | PM8916_LBC_CHGR_PSTG_EN);
- if (ret)
- goto error;
+ /*
+ * CHG_CTRL is written only at probe. Afterwards the recharge supervisor owns CHG_EN, so a
+ * constant_charge_current update must not re-enable charging in TERMINATED/FAULT.
+ */
+ if (set_ctrl) {
+ ret = regmap_write(chg->regmap, chg->reg[LBC_CHGR] + PM8916_LBC_CHGR_CHG_CTRL,
+ PM8916_LBC_CHGR_CHG_EN | PM8916_LBC_CHGR_PSTG_EN);
+ if (ret)
+ goto error;
+ }
return ret;
@@ -126,6 +207,23 @@
struct pm8916_lbc_charger *chg = power_supply_get_drvdata(psy);
switch (psp) {
+ case POWER_SUPPLY_PROP_STATUS:
+ switch (chg->state) {
+ case LBC_ST_CHARGING:
+ val->intval = POWER_SUPPLY_STATUS_CHARGING;
+ break;
+ case LBC_ST_TERMINATED:
+ val->intval = POWER_SUPPLY_STATUS_FULL;
+ break;
+ case LBC_ST_NO_USB:
+ val->intval = POWER_SUPPLY_STATUS_DISCHARGING;
+ break;
+ default:
+ val->intval = POWER_SUPPLY_STATUS_NOT_CHARGING;
+ break;
+ }
+ return 0;
+
case POWER_SUPPLY_PROP_ONLINE:
val->intval = chg->online;
return 0;
@@ -152,7 +250,7 @@
switch (prop) {
case POWER_SUPPLY_PROP_CONSTANT_CHARGE_CURRENT:
chg->charge_current_max = val->intval;
- return pm8916_lbc_charger_configure(chg);
+ return pm8916_lbc_charger_configure(chg, false);
default:
return -EINVAL;
}
@@ -170,11 +268,208 @@
}
static enum power_supply_property pm8916_lbc_charger_properties[] = {
+ POWER_SUPPLY_PROP_STATUS,
POWER_SUPPLY_PROP_ONLINE,
POWER_SUPPLY_PROP_CONSTANT_CHARGE_VOLTAGE_MAX,
POWER_SUPPLY_PROP_CONSTANT_CHARGE_CURRENT,
};
+
+/*
+ * Aurora B10B-3 recharge supervisor.
+ * The LBC ends a charge cycle in hardware (end-of-charge latch: CHG_STATUS 00, USB path 01, USB input ~0) and then
+ * stays off until software gives CHG_EN a 0 -> 1 edge (downstream qpnp-linear-charger did this from BMS SOC /
+ * VBAT_DET IRQ). Verified on Aurora (B10B-3 ram1): CHG_CTRL 0x21 -> 0xa0 releases the latch.
+ * Also verified: writing CHG_EN = 0 does NOT stop the charger (USB input stays ~0.36 A), so the supervisor never
+ * uses CHG_CTRL to "turn charging off"; TERMINATED is only the hardware latch, observed after CHARGING.
+ * The supervisor polls the VADC VBAT every 30 s and restarts charging when VBAT stays below the monitored-battery
+ * re-charge-voltage-microvolt for 3 consecutive polls.
+ */
+static void lbc_supv_log(struct pm8916_lbc_charger *chg, int to, const char *why)
+{
+ unsigned int i = chg->log_n++ % PM8916_LBC_SUPV_LOG;
+
+ chg->log[i].t = ktime_get_seconds();
+ chg->log[i].from = chg->state;
+ chg->log[i].to = to;
+ chg->log[i].vbat = chg->vbat_uv;
+ chg->log[i].why = why;
+ dev_info(chg->dev, "supervisor %s -> %s (%s), vbat %d uV\n", lbc_state_name[chg->state],
+ lbc_state_name[to], why, chg->vbat_uv);
+ chg->state = to;
+}
+
+static int lbc_charge_enable(struct pm8916_lbc_charger *chg, bool en)
+{
+ /* stock-style: enabled = CHG_EN, disabled = FORCE_BATT_ON */
+ return regmap_update_bits(chg->regmap, chg->reg[LBC_CHGR] + PM8916_LBC_CHGR_CHG_CTRL,
+ PM8916_LBC_CHGR_EN_MASK,
+ en ? PM8916_LBC_CHGR_CHG_EN : PM8916_LBC_CHGR_FORCE_BATT_ON);
+}
+
+/* the verified restart: CHG_CTRL 0x21 (CHG_EN 0) -> 20 ms -> 0xa0 (CHG_EN 1); on (re)insert also clear CHG_FAILED */
+static int lbc_charge_restart(struct pm8916_lbc_charger *chg, bool clear_failed)
+{
+ int ret;
+
+ if (clear_failed) {
+ ret = regmap_write(chg->regmap, chg->reg[LBC_CHGR] + PM8916_LBC_CHGR_CHG_FAILED,
+ PM8916_LBC_CHGR_CHG_FAILED_BIT);
+ if (ret)
+ return ret;
+ }
+ ret = lbc_charge_enable(chg, false);
+ if (ret)
+ return ret;
+ msleep(20);
+ return lbc_charge_enable(chg, true);
+}
+
+static void lbc_supv_work(struct work_struct *work)
+{
+ struct pm8916_lbc_charger *chg = container_of(work, struct pm8916_lbc_charger, supv_work.work);
+ unsigned int usb_rt, sts, path, failed;
+ int ret, uv;
+
+ mutex_lock(&chg->supv_lock);
+
+ ret = regmap_read(chg->regmap, chg->reg[LBC_USB] + PM8916_INT_RT_STS, &usb_rt);
+ ret = ret ?: regmap_read(chg->regmap, chg->reg[LBC_CHGR] + PM8916_LBC_CHGR_CHG_STATUS, &sts);
+ ret = ret ?: regmap_read(chg->regmap, chg->reg[LBC_USB] + PM8916_LBC_USB_PATH_STS, &path);
+ ret = ret ?: regmap_read(chg->regmap, chg->reg[LBC_CHGR] + PM8916_LBC_CHGR_CHG_FAILED, &failed);
+ if (ret) {
+ dev_err(chg->dev, "supervisor: register read failed: %d\n", ret);
+ goto out;
+ }
+ if (!iio_read_channel_processed(chg->vbat_chan, &uv))
+ chg->vbat_uv = uv;
+ else
+ chg->vbat_uv = -1;
+
+ if (!(usb_rt & PM8916_LBC_USB_USBIN_VALID)) {
+ /* CHG_CTRL untouched; the next insert restarts with the verified edge */
+ if (chg->state != LBC_ST_NO_USB) {
+ chg->fault_reason = LBC_FAULT_NONE;
+ lbc_supv_log(chg, LBC_ST_NO_USB, "usb removed");
+ }
+ goto out;
+ }
+
+ switch (chg->state) {
+ case LBC_ST_INIT:
+ case LBC_ST_NO_USB:
+ /* probe or USB insert: always start a cycle, like stock's usbin path */
+ chg->done_polls = 0;
+ chg->low_polls = 0;
+ chg->fault_reason = LBC_FAULT_NONE;
+ if (!lbc_charge_restart(chg, true))
+ lbc_supv_log(chg, LBC_ST_CHARGING,
+ chg->state == LBC_ST_INIT ? "probe, usb present" : "usb inserted");
+ break;
+
+ case LBC_ST_CHARGING:
+ /*
+ * Safety timer expiry: the hardware stops and sets CHG_FAILED. Latch FAULT so the supervisor never
+ * restarts; no register write (CHG_EN = 0 is not a verified way to stop the charger).
+ */
+ if (failed & PM8916_LBC_CHGR_CHG_FAILED_BIT) {
+ chg->fault_reason = LBC_FAULT_TIMER;
+ lbc_supv_log(chg, LBC_ST_FAULT, "CHG_FAILED (safety timer)");
+ break;
+ }
+ if (chg->vbat_uv > PM8916_LBC_SUPV_OVP_UV) {
+ /* defence only: VDD_MAX regulates in hardware; latch FAULT = no further restarts */
+ chg->fault_reason = LBC_FAULT_OVP;
+ lbc_supv_log(chg, LBC_ST_FAULT, "vbat > 4.25 V");
+ break;
+ }
+ /* TERMINATED = hardware end-of-charge latch only; CHG_CTRL is not changed */
+ if (sts == 0 && !(path & PM8916_LBC_USB_PATH_ON))
+ chg->done_polls++;
+ else
+ chg->done_polls = 0;
+ if (chg->done_polls >= PM8916_LBC_SUPV_DONE_POLLS) {
+ chg->n_terminated++;
+ chg->low_polls = 0;
+ lbc_supv_log(chg, LBC_ST_TERMINATED, "hardware end of charge");
+ }
+ break;
+
+ case LBC_ST_TERMINATED:
+ if (!chg->recharge_uv || chg->vbat_uv < 0)
+ break;
+ if ((unsigned int)chg->vbat_uv < chg->recharge_uv)
+ chg->low_polls++;
+ else
+ chg->low_polls = 0;
+ if (chg->low_polls >= PM8916_LBC_SUPV_LOW_POLLS) {
+ chg->done_polls = 0;
+ chg->low_polls = 0;
+ if (!lbc_charge_restart(chg, false)) {
+ chg->n_recharge++;
+ lbc_supv_log(chg, LBC_ST_CHARGING, "recharge");
+ }
+ }
+ break;
+
+ case LBC_ST_FAULT:
+ /* latched: left only by USB removal/insert or reboot */
+ break;
+ }
+
+out:
+ mutex_unlock(&chg->supv_lock);
+ power_supply_changed(chg->charger);
+ queue_delayed_work(system_freezable_wq, &chg->supv_work,
+ msecs_to_jiffies(PM8916_LBC_SUPV_PERIOD_MS));
+}
+
+static int lbc_state_show(struct seq_file *s, void *unused)
+{
+ struct pm8916_lbc_charger *chg = s->private;
+ static const struct { const char *n; int blk; unsigned int off; } regs[] = {
+ { "CHG_STATUS", LBC_CHGR, PM8916_LBC_CHGR_CHG_STATUS },
+ { "CHGR_RT", LBC_CHGR, PM8916_INT_RT_STS },
+ { "CHG_CTRL", LBC_CHGR, PM8916_LBC_CHGR_CHG_CTRL },
+ { "CHG_FAILED", LBC_CHGR, PM8916_LBC_CHGR_CHG_FAILED },
+ { "VDD_MAX", LBC_CHGR, PM8916_LBC_CHGR_VDD_MAX },
+ { "IBAT_MAX", LBC_CHGR, PM8916_LBC_CHGR_IBAT_MAX },
+ { "TCHG_MAX_EN", LBC_CHGR, PM8916_LBC_CHGR_TCHG_MAX_EN },
+ { "TCHG_MAX", LBC_CHGR, PM8916_LBC_CHGR_TCHG_MAX },
+ { "USB_PATH", LBC_USB, PM8916_LBC_USB_PATH_STS },
+ { "USB_RT", LBC_USB, PM8916_INT_RT_STS },
+ { "BAT_RT", LBC_BAT_IF, PM8916_INT_RT_STS },
+ };
+ unsigned int i, v;
+
+ mutex_lock(&chg->supv_lock);
+ seq_printf(s, "state %s fault %s vbat_uv %d\n", lbc_state_name[chg->state],
+ lbc_fault_name[chg->fault_reason], chg->vbat_uv);
+ seq_printf(s, "recharge_uv %u done_polls %d low_polls %d timeout_min %u\n",
+ chg->recharge_uv, chg->done_polls, chg->low_polls, chg->timeout_min);
+ seq_printf(s, "n_terminated %u n_recharge %u\n", chg->n_terminated, chg->n_recharge);
+ for (i = 0; i < ARRAY_SIZE(regs); i++) {
+ if (regmap_read(chg->regmap, chg->reg[regs[i].blk] + regs[i].off, &v))
+ v = 0xffff;
+ seq_printf(s, "%s %02x\n", regs[i].n, v);
+ }
+ for (i = chg->log_n > PM8916_LBC_SUPV_LOG ? chg->log_n - PM8916_LBC_SUPV_LOG : 0; i < chg->log_n; i++) {
+ unsigned int j = i % PM8916_LBC_SUPV_LOG;
+
+ seq_printf(s, "log %u t=%lld %s->%s vbat=%d %s\n", i, chg->log[j].t,
+ lbc_state_name[chg->log[j].from], lbc_state_name[chg->log[j].to],
+ chg->log[j].vbat, chg->log[j].why);
+ }
+ mutex_unlock(&chg->supv_lock);
+ return 0;
+}
+DEFINE_SHOW_ATTRIBUTE(lbc_state);
+
+static void lbc_debugfs_remove(void *data)
+{
+ debugfs_remove_recursive(data);
+}
+
static irqreturn_t pm8916_lbc_charger_state_changed_irq(int irq, void *data)
{
struct pm8916_lbc_charger *chg = data;
@@ -190,6 +485,9 @@
power_supply_changed(chg->charger);
+ if (chg->vbat_chan)
+ mod_delayed_work(system_freezable_wq, &chg->supv_work, 0);
+
return IRQ_HANDLED;
}
@@ -230,10 +528,35 @@
if (ret)
return ret;
- /* Disable charger timeout. */
+ /*
+ * Keep the charger safety timer running (upstream disabled it). Same sequence as the
+ * downstream qpnp-linear-charger: timer off, TCHG_MAX = minutes / 4 - 1 (4..512 min), timer on.
+ */
+ chg->timeout_min = PM8916_LBC_TIMEOUT_DEFAULT_MIN;
+ device_property_read_u32(dev, "qcom,charge-timeout-minutes", &chg->timeout_min);
+ chg->timeout_min = clamp_t(u32, chg->timeout_min, PM8916_LBC_TIMEOUT_STEP_MIN,
+ PM8916_LBC_TIMEOUT_MAX_MIN);
+ chg->timeout_min -= chg->timeout_min % PM8916_LBC_TIMEOUT_STEP_MIN;
+
ret = regmap_write(chg->regmap, chg->reg[LBC_CHGR] + PM8916_LBC_CHGR_TCHG_MAX_EN, 0x00);
if (ret)
return ret;
+ tmp = chg->timeout_min / PM8916_LBC_TIMEOUT_STEP_MIN - 1;
+ ret = regmap_write(chg->regmap, chg->reg[LBC_CHGR] + PM8916_LBC_CHGR_TCHG_MAX, tmp);
+ if (ret)
+ return ret;
+ ret = regmap_write(chg->regmap, chg->reg[LBC_CHGR] + PM8916_LBC_CHGR_TCHG_MAX_EN,
+ PM8916_LBC_CHGR_TCHG_MAX_ENABLED);
+ if (ret)
+ return ret;
+
+ ret = regmap_read(chg->regmap, chg->reg[LBC_CHGR] + PM8916_LBC_CHGR_TCHG_MAX, &tmp);
+ if (ret)
+ return ret;
+ if (tmp != chg->timeout_min / PM8916_LBC_TIMEOUT_STEP_MIN - 1)
+ return dev_err_probe(dev, -EIO, "TCHG_MAX readback 0x%x != 0x%x\n", tmp,
+ chg->timeout_min / PM8916_LBC_TIMEOUT_STEP_MIN - 1);
+ dev_info(dev, "safety timer %u min (TCHG_MAX 0x%02x), enabled\n", chg->timeout_min, tmp);
return ret;
}
@@ -309,7 +632,7 @@
ret = pm8916_lbc_charger_probe_dt(chg);
if (ret)
- dev_err_probe(dev, ret, "Error while parsing device tree\n");
+ return dev_err_probe(dev, ret, "Error while parsing device tree\n");
psy_cfg.drv_data = chg;
psy_cfg.fwnode = dev_fwnode(dev);
@@ -322,6 +645,22 @@
if (ret)
return dev_err_probe(dev, ret, "Unable to get battery info\n");
+ chg->vbat_chan = devm_iio_channel_get(dev, "vbat");
+ if (IS_ERR(chg->vbat_chan))
+ return dev_err_probe(dev, PTR_ERR(chg->vbat_chan), "no VADC vbat channel\n");
+
+ {
+ struct device_node *bat = of_parse_phandle(dev->of_node, "monitored-battery", 0);
+
+ if (!bat || of_property_read_u32(bat, "re-charge-voltage-microvolt", &chg->recharge_uv))
+ dev_warn(dev, "no re-charge-voltage-microvolt: automatic recharge disabled\n");
+ of_node_put(bat);
+ }
+ mutex_init(&chg->supv_lock);
+ ret = devm_delayed_work_autocancel(dev, &chg->supv_work, lbc_supv_work);
+ if (ret)
+ return ret;
+
irq = platform_get_irq_byname(pdev, "usb_vbus");
if (irq < 0)
return irq;
@@ -347,10 +686,21 @@
extcon_set_state_sync(chg->edev, EXTCON_USB, chg->online);
chg->charge_voltage_max = chg->info->voltage_max_design_uv;
- ret = pm8916_lbc_charger_configure(chg);
+ ret = pm8916_lbc_charger_configure(chg, true);
if (ret)
return ret;
+ chg->debugfs = debugfs_create_dir("pm8916_lbc", NULL);
+ debugfs_create_file("state", 0444, chg->debugfs, chg, &lbc_state_fops);
+ ret = devm_add_action_or_reset(dev, lbc_debugfs_remove, chg->debugfs);
+ if (ret)
+ return ret;
+
+ dev_info(dev, "recharge supervisor: threshold %u uV, %d x %d ms below, ovp %d uV\n",
+ chg->recharge_uv, PM8916_LBC_SUPV_LOW_POLLS, PM8916_LBC_SUPV_PERIOD_MS,
+ PM8916_LBC_SUPV_OVP_UV);
+ queue_delayed_work(system_freezable_wq, &chg->supv_work, 0);
+
return 0;
comm_error:

View file

@ -0,0 +1,596 @@
--- a/drivers/iio/adc/qcom-spmi-vadc.c
+++ b/drivers/iio/adc/qcom-spmi-vadc.c
@@ -563,7 +563,7 @@
VADC_CHAN_NO_SCALE(SPARE1_03, 1)
VADC_CHAN_NO_SCALE(USB_ID_MV, 1)
VADC_CHAN_VOLT(VCOIN, 1, SCALE_DEFAULT)
- VADC_CHAN_NO_SCALE(VBAT_SNS, 1)
+ VADC_CHAN_VOLT(VBAT_SNS, 1, SCALE_DEFAULT)
VADC_CHAN_VOLT(VSYS, 1, SCALE_DEFAULT)
VADC_CHAN_TEMP(DIE_TEMP, 0, SCALE_PMIC_THERM)
VADC_CHAN_VOLT(REF_625MV, 0, SCALE_DEFAULT)
--- a/drivers/power/supply/pm8916_lbc.c
+++ b/drivers/power/supply/pm8916_lbc.c
@@ -13,6 +13,13 @@
#include <linux/delay.h>
#include <linux/interrupt.h>
#include <linux/extcon-provider.h>
+#include <linux/debugfs.h>
+#include <linux/devm-helpers.h>
+#include <linux/iio/consumer.h>
+#include <linux/mutex.h>
+#include <linux/of.h>
+#include <linux/seq_file.h>
+#include <linux/workqueue.h>
/* Two bytes: type + subtype */
#define PM8916_PERPH_TYPE 0x04
@@ -42,6 +49,30 @@
#define PM8916_LBC_CHGR_CHG_CTRL 0x49
#define PM8916_LBC_CHGR_CHG_EN BIT(7)
#define PM8916_LBC_CHGR_PSTG_EN BIT(5)
+#define PM8916_LBC_CHGR_FORCE_BATT_ON BIT(0)
+#define PM8916_LBC_CHGR_EN_MASK (PM8916_LBC_CHGR_CHG_EN | PM8916_LBC_CHGR_FORCE_BATT_ON)
+
+#define PM8916_LBC_CHGR_CHG_FAILED 0x4a
+#define PM8916_LBC_CHGR_CHG_FAILED_BIT BIT(7)
+
+/* USB_CHGPTH 0x08: 0x02 while the charge path is on, 0x01 after end of charge (observed, not documented) */
+#define PM8916_LBC_USB_PATH_STS 0x08
+#define PM8916_LBC_USB_PATH_ON BIT(1)
+
+/* Aurora B10B-3 recharge supervisor */
+#define PM8916_LBC_SUPV_PERIOD_MS 30000
+#define PM8916_LBC_SUPV_LATCH_POLLS 2
+#define PM8916_LBC_SUPV_NOCV_POLLS 2
+#define PM8916_LBC_SUPV_OVP_UV 4250000
+#define PM8916_LBC_CV_HOLD_DEFAULT_MIN 60
+#define PM8916_LBC_CHGR_CV_LOOP BIT(1)
+
+#define PM8916_LBC_MISC_BOOT_DONE 0x42
+#define PM8916_LBC_MISC_BOOT_DONE_BIT BIT(7)
+#define PM8916_LBC_TIMEOUT_DEFAULT_MIN 512
+#define PM8916_LBC_TIMEOUT_STEP_MIN 4
+#define PM8916_LBC_TIMEOUT_MAX_MIN 512
+#define PM8916_LBC_SUPV_LOG 16
#define PM8916_LBC_CHGR_MIN_CURRENT 90000
#define PM8916_LBC_CHGR_MAX_CURRENT 1440000
@@ -65,6 +96,61 @@
unsigned int charge_voltage_safe;
unsigned int charge_current_max;
unsigned int charge_current_safe;
+
+ /* charger supervisor (Aurora B10B-3 v3) */
+ struct iio_channel *vbat_chan;
+ struct delayed_work supv_work;
+ struct mutex supv_lock;
+ int state;
+ int fault_reason;
+ unsigned int hold_uv; /* aurora,hold-voltage-microvolt, 0 = HOLD disabled */
+ unsigned int full_min_uv; /* aurora,full-min-voltage-microvolt */
+ unsigned int cv_hold_min; /* aurora,cv-hold-minutes */
+ unsigned int ibat_code; /* IBAT_MAX code programmed at probe */
+ unsigned int timeout_min;
+ int vbat_uv;
+ int latch_polls;
+ int nocv_polls;
+ time64_t cv_since; /* start of the current CV run, 0 = none */
+ bool supv_ready; /* set at the end of probe; IRQ kicks only after that */
+ unsigned int n_insert;
+ unsigned int n_hold;
+ unsigned int n_latch;
+ struct {
+ time64_t t;
+ int from, to, vbat;
+ const char *why;
+ } log[PM8916_LBC_SUPV_LOG];
+ unsigned int log_n;
+ struct dentry *debugfs;
+};
+
+enum {
+ LBC_ST_INIT = 0,
+ LBC_ST_NO_USB,
+ LBC_ST_CHARGING,
+ LBC_ST_HOLD,
+ LBC_ST_FAULT,
+};
+
+static const char * const lbc_state_name[] = {
+ [LBC_ST_INIT] = "INIT",
+ [LBC_ST_NO_USB] = "NO_USB",
+ [LBC_ST_CHARGING] = "CHARGING",
+ [LBC_ST_HOLD] = "HOLD",
+ [LBC_ST_FAULT] = "FAULT",
+};
+
+enum {
+ LBC_FAULT_NONE = 0,
+ LBC_FAULT_TIMER,
+ LBC_FAULT_OVP,
+};
+
+static const char * const lbc_fault_name[] = {
+ [LBC_FAULT_NONE] = "none",
+ [LBC_FAULT_TIMER] = "safety-timer (CHG_FAILED)",
+ [LBC_FAULT_OVP] = "vbat-overvoltage",
};
static const unsigned int pm8916_lbc_charger_cable[] = {
@@ -79,7 +165,7 @@
LBC_MISC,
};
-static int pm8916_lbc_charger_configure(struct pm8916_lbc_charger *chg)
+static int pm8916_lbc_charger_configure(struct pm8916_lbc_charger *chg, bool probe)
{
int ret = 0;
unsigned int tmp;
@@ -91,9 +177,12 @@
tmp /= PM8916_LBC_CHGR_VOLTAGE_STEP;
chg->charge_voltage_max = PM8916_LBC_CHGR_MIN_VOLTAGE + tmp * PM8916_LBC_CHGR_VOLTAGE_STEP;
- ret = regmap_write(chg->regmap, chg->reg[LBC_CHGR] + PM8916_LBC_CHGR_VDD_MAX, tmp);
- if (ret)
- goto error;
+ /* after probe the supervisor owns VDD_MAX (charge level / hold level) */
+ if (probe) {
+ ret = regmap_write(chg->regmap, chg->reg[LBC_CHGR] + PM8916_LBC_CHGR_VDD_MAX, tmp);
+ if (ret)
+ goto error;
+ }
chg->charge_current_max = min(chg->charge_current_max, chg->charge_current_safe);
@@ -102,15 +191,22 @@
tmp = chg->charge_current_max / PM8916_LBC_CHGR_MIN_CURRENT - 1;
chg->charge_current_max = (tmp + 1) * PM8916_LBC_CHGR_MIN_CURRENT;
+ chg->ibat_code = tmp;
ret = regmap_write(chg->regmap, chg->reg[LBC_CHGR] + PM8916_LBC_CHGR_IBAT_MAX, tmp);
if (ret)
goto error;
- ret = regmap_write(chg->regmap, chg->reg[LBC_CHGR] + PM8916_LBC_CHGR_CHG_CTRL,
- PM8916_LBC_CHGR_CHG_EN | PM8916_LBC_CHGR_PSTG_EN);
- if (ret)
- goto error;
+ /*
+ * CHG_CTRL is written only at probe. Afterwards the supervisor owns CHG_EN, so a
+ * constant_charge_current update must not restart charging in HOLD/FAULT.
+ */
+ if (probe) {
+ ret = regmap_write(chg->regmap, chg->reg[LBC_CHGR] + PM8916_LBC_CHGR_CHG_CTRL,
+ PM8916_LBC_CHGR_CHG_EN | PM8916_LBC_CHGR_PSTG_EN);
+ if (ret)
+ goto error;
+ }
return ret;
@@ -126,6 +222,23 @@
struct pm8916_lbc_charger *chg = power_supply_get_drvdata(psy);
switch (psp) {
+ case POWER_SUPPLY_PROP_STATUS:
+ switch (chg->state) {
+ case LBC_ST_CHARGING:
+ val->intval = POWER_SUPPLY_STATUS_CHARGING;
+ break;
+ case LBC_ST_HOLD:
+ val->intval = POWER_SUPPLY_STATUS_FULL;
+ break;
+ case LBC_ST_NO_USB:
+ val->intval = POWER_SUPPLY_STATUS_DISCHARGING;
+ break;
+ default:
+ val->intval = POWER_SUPPLY_STATUS_NOT_CHARGING;
+ break;
+ }
+ return 0;
+
case POWER_SUPPLY_PROP_ONLINE:
val->intval = chg->online;
return 0;
@@ -151,8 +264,15 @@
switch (prop) {
case POWER_SUPPLY_PROP_CONSTANT_CHARGE_CURRENT:
+ {
+ int ret;
+
+ mutex_lock(&chg->supv_lock);
chg->charge_current_max = val->intval;
- return pm8916_lbc_charger_configure(chg);
+ ret = pm8916_lbc_charger_configure(chg, false);
+ mutex_unlock(&chg->supv_lock);
+ return ret;
+ }
default:
return -EINVAL;
}
@@ -170,11 +290,265 @@
}
static enum power_supply_property pm8916_lbc_charger_properties[] = {
+ POWER_SUPPLY_PROP_STATUS,
POWER_SUPPLY_PROP_ONLINE,
POWER_SUPPLY_PROP_CONSTANT_CHARGE_VOLTAGE_MAX,
POWER_SUPPLY_PROP_CONSTANT_CHARGE_CURRENT,
};
+
+/*
+ * Aurora B10B-3 v3 charger supervisor: CHARGE -> HOLD -> (battery) -> CHARGE.
+ * Facts it relies on (B10A/B10B-2/B10B-3 tests): CHG_STATUS 00 + USB path 01 is a latch, not an end-of-charge;
+ * no hardware EOC was seen with BOOT_DONE set; CHG_EN = 0 does not stop the charger; verified levers are VDD_MAX,
+ * IBAT_MAX and the CHG_CTRL 0x21 -> 0xa0 edge (releases the latch). All decisions use the calibrated VADC VBAT.
+ * NO_USB: nothing is written.
+ * CHARGING: entered on USB insert/probe: BOOT_DONE, VDD_MAX = charge level, IBAT_MAX, restart edge.
+ * -> HOLD after the CV loop with VBAT >= full-min lasted cv-hold-minutes; 00/01 latch -> restart, stay.
+ * HOLD: only VDD_MAX = hold level; 00/01 latch -> restart edge, VDD_MAX stays at the hold level.
+ * FAULT: logical only (VBAT > 4.25 V or CHG_FAILED): no restarts. There is no verified software stop.
+ */
+static void lbc_supv_log(struct pm8916_lbc_charger *chg, int to, const char *why)
+{
+ unsigned int i = chg->log_n++ % PM8916_LBC_SUPV_LOG;
+
+ chg->log[i].t = ktime_get_seconds();
+ chg->log[i].from = chg->state;
+ chg->log[i].to = to;
+ chg->log[i].vbat = chg->vbat_uv;
+ chg->log[i].why = why;
+ if (to == LBC_ST_FAULT)
+ dev_crit(chg->dev, "supervisor %s -> FAULT (%s), vbat %d uV: restarts blocked, NO software stop available\n",
+ lbc_state_name[chg->state], why, chg->vbat_uv);
+ else
+ dev_info(chg->dev, "supervisor %s -> %s (%s), vbat %d uV\n", lbc_state_name[chg->state],
+ lbc_state_name[to], why, chg->vbat_uv);
+ chg->state = to;
+}
+
+static int lbc_charge_enable(struct pm8916_lbc_charger *chg, bool en)
+{
+ return regmap_update_bits(chg->regmap, chg->reg[LBC_CHGR] + PM8916_LBC_CHGR_CHG_CTRL,
+ PM8916_LBC_CHGR_EN_MASK,
+ en ? PM8916_LBC_CHGR_CHG_EN : PM8916_LBC_CHGR_FORCE_BATT_ON);
+}
+
+/* the verified restart: CHG_CTRL 0x21 (CHG_EN 0) -> 20 ms -> 0xa0 (CHG_EN 1); on (re)insert also clear CHG_FAILED */
+static int lbc_charge_restart(struct pm8916_lbc_charger *chg, bool clear_failed)
+{
+ int ret;
+
+ if (clear_failed) {
+ ret = regmap_write(chg->regmap, chg->reg[LBC_CHGR] + PM8916_LBC_CHGR_CHG_FAILED,
+ PM8916_LBC_CHGR_CHG_FAILED_BIT);
+ if (ret)
+ return ret;
+ }
+ ret = lbc_charge_enable(chg, false);
+ if (ret)
+ return ret;
+ msleep(20);
+ return lbc_charge_enable(chg, true);
+}
+
+static int lbc_set_vdd_max(struct pm8916_lbc_charger *chg, unsigned int uv)
+{
+ uv = clamp_t(u32, uv, PM8916_LBC_CHGR_MIN_VOLTAGE, chg->charge_voltage_safe);
+ return regmap_write(chg->regmap, chg->reg[LBC_CHGR] + PM8916_LBC_CHGR_VDD_MAX,
+ (uv - PM8916_LBC_CHGR_MIN_VOLTAGE) / PM8916_LBC_CHGR_VOLTAGE_STEP);
+}
+
+/* USB insert / probe with USB: start a full cycle at the charge level */
+static int lbc_enter_charging(struct pm8916_lbc_charger *chg)
+{
+ unsigned int v;
+ int ret;
+
+ ret = regmap_update_bits(chg->regmap, chg->reg[LBC_MISC] + PM8916_LBC_MISC_BOOT_DONE,
+ PM8916_LBC_MISC_BOOT_DONE_BIT, PM8916_LBC_MISC_BOOT_DONE_BIT);
+ ret = ret ?: lbc_set_vdd_max(chg, chg->charge_voltage_max);
+ ret = ret ?: regmap_read(chg->regmap, chg->reg[LBC_CHGR] + PM8916_LBC_CHGR_IBAT_MAX, &v);
+ if (!ret && v != chg->ibat_code)
+ ret = regmap_write(chg->regmap, chg->reg[LBC_CHGR] + PM8916_LBC_CHGR_IBAT_MAX, chg->ibat_code);
+ ret = ret ?: lbc_charge_restart(chg, true);
+ chg->latch_polls = 0;
+ chg->nocv_polls = 0;
+ chg->cv_since = 0;
+ return ret;
+}
+
+/* 00/01 latch with USB valid: count polls; restart with the verified edge (VDD_MAX untouched) */
+static bool lbc_handle_latch(struct pm8916_lbc_charger *chg, unsigned int sts, unsigned int path)
+{
+ if (sts == 0 && !(path & PM8916_LBC_USB_PATH_ON))
+ chg->latch_polls++;
+ else
+ chg->latch_polls = 0;
+ if (chg->latch_polls < PM8916_LBC_SUPV_LATCH_POLLS)
+ return false;
+ chg->latch_polls = 0;
+ chg->n_latch++;
+ if (!lbc_charge_restart(chg, false))
+ dev_warn(chg->dev, "supervisor: 00/01 latch in %s (vbat %d uV) -> restart edge #%u\n",
+ lbc_state_name[chg->state], chg->vbat_uv, chg->n_latch);
+ return true;
+}
+
+static bool lbc_check_fault(struct pm8916_lbc_charger *chg, unsigned int failed)
+{
+ if (failed & PM8916_LBC_CHGR_CHG_FAILED_BIT) {
+ chg->fault_reason = LBC_FAULT_TIMER;
+ lbc_supv_log(chg, LBC_ST_FAULT, "CHG_FAILED (safety timer)");
+ return true;
+ }
+ if (chg->vbat_uv > PM8916_LBC_SUPV_OVP_UV) {
+ chg->fault_reason = LBC_FAULT_OVP;
+ lbc_supv_log(chg, LBC_ST_FAULT, "vbat > 4.25 V");
+ return true;
+ }
+ return false;
+}
+
+static void lbc_supv_work(struct work_struct *work)
+{
+ struct pm8916_lbc_charger *chg = container_of(work, struct pm8916_lbc_charger, supv_work.work);
+ unsigned int usb_rt, sts, path, failed;
+ time64_t now = ktime_get_seconds();
+ int ret, uv;
+
+ mutex_lock(&chg->supv_lock);
+
+ ret = regmap_read(chg->regmap, chg->reg[LBC_USB] + PM8916_INT_RT_STS, &usb_rt);
+ ret = ret ?: regmap_read(chg->regmap, chg->reg[LBC_CHGR] + PM8916_LBC_CHGR_CHG_STATUS, &sts);
+ ret = ret ?: regmap_read(chg->regmap, chg->reg[LBC_USB] + PM8916_LBC_USB_PATH_STS, &path);
+ ret = ret ?: regmap_read(chg->regmap, chg->reg[LBC_CHGR] + PM8916_LBC_CHGR_CHG_FAILED, &failed);
+ if (ret) {
+ dev_err(chg->dev, "supervisor: register read failed: %d\n", ret);
+ goto out;
+ }
+ if (!iio_read_channel_processed(chg->vbat_chan, &uv))
+ chg->vbat_uv = uv;
+ else
+ chg->vbat_uv = -1;
+
+ if (!(usb_rt & PM8916_LBC_USB_USBIN_VALID)) {
+ if (chg->state != LBC_ST_NO_USB) {
+ chg->fault_reason = LBC_FAULT_NONE;
+ lbc_supv_log(chg, LBC_ST_NO_USB, "usb removed");
+ }
+ goto out;
+ }
+
+ switch (chg->state) {
+ case LBC_ST_INIT:
+ case LBC_ST_NO_USB:
+ chg->fault_reason = LBC_FAULT_NONE;
+ chg->n_insert++;
+ if (!lbc_enter_charging(chg))
+ lbc_supv_log(chg, LBC_ST_CHARGING,
+ chg->state == LBC_ST_INIT ? "probe, usb present" : "usb inserted");
+ break;
+
+ case LBC_ST_CHARGING:
+ if (lbc_check_fault(chg, failed))
+ break;
+ if (lbc_handle_latch(chg, sts, path)) {
+ chg->cv_since = 0;
+ chg->nocv_polls = 0;
+ break;
+ }
+ if (!chg->hold_uv || chg->vbat_uv < 0)
+ break;
+ /* CV run: CV loop bit with VBAT >= full-min; tolerate one poll without the bit (05/07 interleave) */
+ if ((unsigned int)chg->vbat_uv < chg->full_min_uv) {
+ chg->cv_since = 0;
+ chg->nocv_polls = 0;
+ break;
+ }
+ if (sts & PM8916_LBC_CHGR_CV_LOOP) {
+ chg->nocv_polls = 0;
+ if (!chg->cv_since)
+ chg->cv_since = now;
+ } else if (++chg->nocv_polls >= PM8916_LBC_SUPV_NOCV_POLLS) {
+ chg->cv_since = 0;
+ }
+ if (chg->cv_since && now - chg->cv_since >= (time64_t)chg->cv_hold_min * 60) {
+ if (!lbc_set_vdd_max(chg, chg->hold_uv)) {
+ chg->n_hold++;
+ chg->latch_polls = 0;
+ lbc_supv_log(chg, LBC_ST_HOLD, "CV time reached, VDD_MAX -> hold level");
+ }
+ }
+ break;
+
+ case LBC_ST_HOLD:
+ if (lbc_check_fault(chg, failed))
+ break;
+ /* keep the board on USB: a 00/01 latch gets the restart edge, VDD_MAX stays at the hold level */
+ lbc_handle_latch(chg, sts, path);
+ break;
+
+ case LBC_ST_FAULT:
+ /* latched: left only by USB removal/insert or reboot */
+ break;
+ }
+
+out:
+ mutex_unlock(&chg->supv_lock);
+ power_supply_changed(chg->charger);
+ queue_delayed_work(system_freezable_wq, &chg->supv_work,
+ msecs_to_jiffies(PM8916_LBC_SUPV_PERIOD_MS));
+}
+
+static int lbc_state_show(struct seq_file *s, void *unused)
+{
+ struct pm8916_lbc_charger *chg = s->private;
+ static const struct { const char *n; int blk; unsigned int off; } regs[] = {
+ { "CHG_STATUS", LBC_CHGR, PM8916_LBC_CHGR_CHG_STATUS },
+ { "CHGR_RT", LBC_CHGR, PM8916_INT_RT_STS },
+ { "CHG_CTRL", LBC_CHGR, PM8916_LBC_CHGR_CHG_CTRL },
+ { "CHG_FAILED", LBC_CHGR, PM8916_LBC_CHGR_CHG_FAILED },
+ { "VDD_MAX", LBC_CHGR, PM8916_LBC_CHGR_VDD_MAX },
+ { "IBAT_MAX", LBC_CHGR, PM8916_LBC_CHGR_IBAT_MAX },
+ { "TCHG_MAX_EN", LBC_CHGR, PM8916_LBC_CHGR_TCHG_MAX_EN },
+ { "TCHG_MAX", LBC_CHGR, PM8916_LBC_CHGR_TCHG_MAX },
+ { "USB_PATH", LBC_USB, PM8916_LBC_USB_PATH_STS },
+ { "USB_RT", LBC_USB, PM8916_INT_RT_STS },
+ { "BAT_RT", LBC_BAT_IF, PM8916_INT_RT_STS },
+ { "BOOT_DONE", LBC_MISC, PM8916_LBC_MISC_BOOT_DONE },
+ };
+ time64_t now = ktime_get_seconds();
+ unsigned int i, v;
+
+ mutex_lock(&chg->supv_lock);
+ seq_printf(s, "state %s fault %s vbat_uv %d\n", lbc_state_name[chg->state],
+ lbc_fault_name[chg->fault_reason], chg->vbat_uv);
+ seq_printf(s, "charge_uv %u hold_uv %u full_min_uv %u cv_hold_min %u cv_s %lld nocv %d timeout_min %u\n",
+ chg->charge_voltage_max, chg->hold_uv, chg->full_min_uv, chg->cv_hold_min,
+ chg->cv_since ? now - chg->cv_since : -1LL, chg->nocv_polls, chg->timeout_min);
+ seq_printf(s, "n_insert %u n_hold %u n_latch %u\n", chg->n_insert, chg->n_hold, chg->n_latch);
+ for (i = 0; i < ARRAY_SIZE(regs); i++) {
+ if (regmap_read(chg->regmap, chg->reg[regs[i].blk] + regs[i].off, &v))
+ v = 0xffff;
+ seq_printf(s, "%s %02x\n", regs[i].n, v);
+ }
+ for (i = chg->log_n > PM8916_LBC_SUPV_LOG ? chg->log_n - PM8916_LBC_SUPV_LOG : 0; i < chg->log_n; i++) {
+ unsigned int j = i % PM8916_LBC_SUPV_LOG;
+
+ seq_printf(s, "log %u t=%lld %s->%s vbat=%d %s\n", i, chg->log[j].t,
+ lbc_state_name[chg->log[j].from], lbc_state_name[chg->log[j].to],
+ chg->log[j].vbat, chg->log[j].why);
+ }
+ mutex_unlock(&chg->supv_lock);
+ return 0;
+}
+DEFINE_SHOW_ATTRIBUTE(lbc_state);
+
+static void lbc_debugfs_remove(void *data)
+{
+ debugfs_remove_recursive(data);
+}
+
static irqreturn_t pm8916_lbc_charger_state_changed_irq(int irq, void *data)
{
struct pm8916_lbc_charger *chg = data;
@@ -190,6 +564,9 @@
power_supply_changed(chg->charger);
+ if (READ_ONCE(chg->supv_ready))
+ mod_delayed_work(system_freezable_wq, &chg->supv_work, 0);
+
return IRQ_HANDLED;
}
@@ -230,10 +607,35 @@
if (ret)
return ret;
- /* Disable charger timeout. */
+ /*
+ * Keep the charger safety timer running (upstream disabled it). Same sequence as the
+ * downstream qpnp-linear-charger: timer off, TCHG_MAX = minutes / 4 - 1 (4..512 min), timer on.
+ */
+ chg->timeout_min = PM8916_LBC_TIMEOUT_DEFAULT_MIN;
+ device_property_read_u32(dev, "qcom,charge-timeout-minutes", &chg->timeout_min);
+ chg->timeout_min = clamp_t(u32, chg->timeout_min, PM8916_LBC_TIMEOUT_STEP_MIN,
+ PM8916_LBC_TIMEOUT_MAX_MIN);
+ chg->timeout_min -= chg->timeout_min % PM8916_LBC_TIMEOUT_STEP_MIN;
+
ret = regmap_write(chg->regmap, chg->reg[LBC_CHGR] + PM8916_LBC_CHGR_TCHG_MAX_EN, 0x00);
if (ret)
return ret;
+ tmp = chg->timeout_min / PM8916_LBC_TIMEOUT_STEP_MIN - 1;
+ ret = regmap_write(chg->regmap, chg->reg[LBC_CHGR] + PM8916_LBC_CHGR_TCHG_MAX, tmp);
+ if (ret)
+ return ret;
+ ret = regmap_write(chg->regmap, chg->reg[LBC_CHGR] + PM8916_LBC_CHGR_TCHG_MAX_EN,
+ PM8916_LBC_CHGR_TCHG_MAX_ENABLED);
+ if (ret)
+ return ret;
+
+ ret = regmap_read(chg->regmap, chg->reg[LBC_CHGR] + PM8916_LBC_CHGR_TCHG_MAX, &tmp);
+ if (ret)
+ return ret;
+ if (tmp != chg->timeout_min / PM8916_LBC_TIMEOUT_STEP_MIN - 1)
+ return dev_err_probe(dev, -EIO, "TCHG_MAX readback 0x%x != 0x%x\n", tmp,
+ chg->timeout_min / PM8916_LBC_TIMEOUT_STEP_MIN - 1);
+ dev_info(dev, "safety timer %u min (TCHG_MAX 0x%02x), enabled\n", chg->timeout_min, tmp);
return ret;
}
@@ -261,6 +663,7 @@
return -ENOMEM;
chg->dev = dev;
+ mutex_init(&chg->supv_lock);
chg->regmap = dev_get_regmap(pdev->dev.parent, NULL);
if (!chg->regmap)
@@ -309,7 +712,7 @@
ret = pm8916_lbc_charger_probe_dt(chg);
if (ret)
- dev_err_probe(dev, ret, "Error while parsing device tree\n");
+ return dev_err_probe(dev, ret, "Error while parsing device tree\n");
psy_cfg.drv_data = chg;
psy_cfg.fwnode = dev_fwnode(dev);
@@ -322,6 +725,21 @@
if (ret)
return dev_err_probe(dev, ret, "Unable to get battery info\n");
+ chg->vbat_chan = devm_iio_channel_get(dev, "vbat");
+ if (IS_ERR(chg->vbat_chan))
+ return dev_err_probe(dev, PTR_ERR(chg->vbat_chan), "no VADC vbat channel\n");
+
+ chg->cv_hold_min = PM8916_LBC_CV_HOLD_DEFAULT_MIN;
+ device_property_read_u32(dev, "aurora,cv-hold-minutes", &chg->cv_hold_min);
+ if (device_property_read_u32(dev, "aurora,hold-voltage-microvolt", &chg->hold_uv) ||
+ device_property_read_u32(dev, "aurora,full-min-voltage-microvolt", &chg->full_min_uv)) {
+ chg->hold_uv = 0;
+ dev_warn(dev, "no aurora,hold-voltage/full-min-voltage: HOLD disabled\n");
+ }
+ ret = devm_delayed_work_autocancel(dev, &chg->supv_work, lbc_supv_work);
+ if (ret)
+ return ret;
+
irq = platform_get_irq_byname(pdev, "usb_vbus");
if (irq < 0)
return irq;
@@ -347,10 +765,29 @@
extcon_set_state_sync(chg->edev, EXTCON_USB, chg->online);
chg->charge_voltage_max = chg->info->voltage_max_design_uv;
- ret = pm8916_lbc_charger_configure(chg);
+ ret = pm8916_lbc_charger_configure(chg, true);
+ if (ret)
+ return ret;
+
+ chg->debugfs = debugfs_create_dir("pm8916_lbc", NULL);
+ debugfs_create_file("state", 0444, chg->debugfs, chg, &lbc_state_fops);
+ ret = devm_add_action_or_reset(dev, lbc_debugfs_remove, chg->debugfs);
if (ret)
return ret;
+ if (chg->hold_uv && (chg->hold_uv < PM8916_LBC_CHGR_MIN_VOLTAGE ||
+ chg->hold_uv >= chg->charge_voltage_max ||
+ chg->full_min_uv > chg->charge_voltage_max)) {
+ dev_warn(dev, "invalid hold %u / full-min %u for charge level %u: HOLD disabled\n",
+ chg->hold_uv, chg->full_min_uv, chg->charge_voltage_max);
+ chg->hold_uv = 0;
+ }
+ dev_info(dev, "supervisor v3: charge %u uV, hold %u uV, full-min %u uV, cv %u min, IBAT_MAX code %u, ovp %d uV\n",
+ chg->charge_voltage_max, chg->hold_uv, chg->full_min_uv, chg->cv_hold_min,
+ chg->ibat_code, PM8916_LBC_SUPV_OVP_UV);
+ WRITE_ONCE(chg->supv_ready, true);
+ queue_delayed_work(system_freezable_wq, &chg->supv_work, 0);
+
return 0;
comm_error:

18
b10/b10b3/b10b3-mon.sh Normal file
View file

@ -0,0 +1,18 @@
#!/bin/sh
# B10B-3 board-side observer (env VMAX = ALERT VBAT uV, EVDD = expected VDD_MAX hex): every P s append one line to /tmp/b10b3-mon.log (survives NCM/USB loss). Reads only.
P=${1:-30}
grep -q " /sys/kernel/debug " /proc/mounts || mount -t debugfs debugfs /sys/kernel/debug
R=/sys/kernel/debug/regmap/0-00/registers; S=/sys/kernel/debug/pm8916_lbc/state
rd() { dd if=$R bs=9 skip=$(($1)) count=$2 2>/dev/null | cut -d' ' -f2 | tr '\n' ' '; }
D=/sys/bus/iio/devices/iio:device0; C=/sys/class/power_supply/pm8916-lbc-chgr
trap '' HUP
i=0
while [ ! -e /tmp/b10b3-mon.stop ]; do
i=$((i + 1)); vb=$(cat $D/in_voltage6_input); pt=$(cat $D/in_temp8_input)
a=""; [ "$vb" -gt ${VMAX:-4220000} ] && a="$a ALERT-VBAT"; [ "$pt" -gt 60000 ] && a="$a ALERT-TEMP"; [ "$(rd 0x1060 1)" != "80 " ] && a="$a ALERT-TIMER"; case "$(rd 0x1040 1)" in ${EVDD:-08}" "|${EVDD2:-xx}" ") ;; *) a="$a ALERT-VDDMAX";; esac; [ "$(rd 0x1044 1)" != "04 " ] && a="$a ALERT-IBAT"
st=$(head -1 $S | tr ' ' '='); cv=$(sed -n 2p $S | sed 's/.*cv_s \([-0-9]*\) nocv \([0-9]*\).*/cv_s=\1 nocv=\2/'); cnt=$(sed -n 3p $S | tr ' ' '='); vdd=$(rd 0x1040 1)
ld=$(pgrep -c yes 2>/dev/null || ps | grep -c "[y]es$")
echo "M $i $(date -u +%T) up=$(cut -d' ' -f1 /proc/uptime) $st $cv $cnt vbat6=$vb vph=$(cat $D/in_voltage7_input) usbin=$(cat $D/in_voltage0_input) fifo=$(rd 0x40c0 4) chgst=$(rd 0x1009 1) crt=$(rd 0x1010 1) brt=$(rd 0x1210 1) urt=$(rd 0x1310 1) usbp=$(rd 0x1308 2) ctrl=$(rd 0x1049 1) vdd=$vdd ibat=$(rd 0x1044 1) tchg=$(rd 0x1060 2) failed=$(rd 0x104a 1) bd=$(rd 0x1642 1) online=$(cat $C/online) psy=$(cat $C/status) pmt=$pt cpu=$(cat /sys/class/thermal/thermal_zone4/temp) load=$ld$a" >> /tmp/b10b3-mon.log
sleep $P
done
echo "MON-END $(date -u +%T)" >> /tmp/b10b3-mon.log

8
b10/b10b3/b10b3-pull.sh Normal file
View file

@ -0,0 +1,8 @@
#!/bin/sh
# 480s side: every 30 s copy the board's /tmp/b10b3-mon.log into logs/b10/b10b3/<K>-mon.txt (keeps the last good copy while NCM is down).
K=$1; cd ~/doc/modem/jz08-aurora; O=logs/b10/b10b3/$K-mon.txt
while [ ! -e logs/b10/b10b3/pull.stop ]; do
{ sleep 1; printf 'cat /tmp/b10b3-mon.log\r\n'; sleep 4; } | ncat -w 8 172.16.42.1 23 2>/dev/null | tr -d '\000\r' | grep -E '^(M |MON-END)' > $O.tmp
[ -s $O.tmp ] && [ $(wc -l < $O.tmp) -ge $(cat $O 2>/dev/null | wc -l) ] && mv $O.tmp $O
sleep 30
done

60
b10/b10b3/b10b3b-boot.sh Executable file
View file

@ -0,0 +1,60 @@
#!/bin/sh
# 480s side, B10B-3 Test B (TEST image) boot K (RAM only). RESET-held power-on -> lk1st fastboot -> `fastboot boot` B10B-3 RAM image. Reads only over telnet.
# MODE=cold: normal power-on (no RESET, no fastboot) -> lk2nd extlinux from eMMC cache. Script only observes + reads over telnet;
# nothing is written to eMMC. Visual display checks need the operator. Adds display/fbcon/getty/console checks to the B8F snapshot.
K=$1; MODE=ram; [ -n "$K" ] || { echo "usage: $0 K"; exit 2; }
cd ~/doc/modem/jz08-aurora; O=logs/b10/b10b3/b$K; mkdir -p $O; IMG=b10/b10b3/out-b/aurora-b10b3b.img
A=$O/host-actions.txt; act() { echo "$(date -u +%H:%M:%S.%3N) $*" | tee -a $A; }
tn() { { sleep 1; sed "s/\$/\r/" "$1"; sleep $2; } | ncat 172.16.42.1 23 | tr -d "\000\r"; }
OLD=$(ps -eo pid,cmd | grep "[u]artlog.py /dev/ttyUSB0" | awk '{print $1}'); [ -n "$OLD" ] && kill $OLD; sleep 1
U=logs/uart/b10b3b-$MODE$K-$(date +%Y%m%d-%H%M%S); setsid nohup python3 tools/uartlog.py /dev/ttyUSB0 $U > $U.stderr 2>&1 < /dev/null &
if [ $MODE = ram ]; then
echo "9e66466d64e6832865af145e365c3ee36619d3607fee3b7cd9609533d1102c06 $IMG" | sha256sum -c || exit 1
act "B10B3B $MODE$K: waiting for fastboot <EMMC_SERIAL> (power off >= 90 s, then RESET held + battery -> USB)"
if fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL>; then act "already in fastboot - wait for power-off"; until ! fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL>; do sleep 1; done; fi
i=0; until fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL>; do i=$((i+1)); [ $i -ge 1800 ] && { act "ABORT: no fastboot"; exit 1; }; sleep 2; done
act "fastboot present"; { fastboot boot $IMG 2>&1; echo "rc=$?"; } | tee -a $A
else
act "B10B3B $MODE$K: waiting for the board to go away (power off >= 90 s), then normal power-on WITHOUT RESET"
until ! ping -c1 -W1 172.16.42.1 >/dev/null 2>&1; do sleep 1; done; act "board unreachable (powered off)"
until ping -c1 -W1 172.16.42.1 >/dev/null 2>&1; do fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL> && { act "ABORT: board is in fastboot - RESET was held?"; exit 1; }; sleep 1; done
fi
i=0; until ping -c1 -W1 172.16.42.1 >/dev/null 2>&1; do i=$((i+1)); [ $i -ge 180 ] && { act "ABORT: NCM not up"; cp $U.log $O/uart.log; exit 1; }; sleep 1; done; act "NCM ping ok"
R=$(grep -a "rtc-pm8xxx.*setting system clock" $U.log | tail -1 | sed -n 's/.*(\([0-9]*\)).*/\1/p'); C=B; [ -n "$R" ] && [ "$R" -lt 40 ] && C=A; act "RTC at boot ${R:-?} s -> class $C"
printf 'cat /proc/device-tree/model; echo; uname -r; grep -E "START OK|FAIL in|rollback" /run/aurora-modem/lifecycle.log | tail -1\n' > $O/.w
i=0; until tn $O/.w 3 | grep -qE "^\[[0-9.]+\] .*(=== START OK|FAIL in|rollback)"; do i=$((i+1)); [ $i -ge 80 ] && { act "no START OK/FAIL after ~12 min"; break; }; sleep 6; done
tn $O/.w 3 | grep -aE "Aurora|aurora-b8|START OK|FAIL" | tee -a $A
printf 'grep -E "AP ENABLED|FAIL" /run/aurora-wifi/wifi.log | tail -1\n' > $O/.a
i=0; until tn $O/.a 3 | grep -qE "^\[[0-9.]+\] (=== AP ENABLED|FAIL)"; do i=$((i+1)); [ $i -ge 20 ] && { act "no AP ENABLED/FAIL after ~3 min"; break; }; sleep 6; done
act "wifi: $(tn $O/.a 3 | grep -E '^\[[0-9.]+\] (=== AP ENABLED|FAIL)' | tail -1)"
printf 'grep -E "SNTP (check|STEP|: )" /run/aurora-modem/lifecycle.log | tail -2\n' > $O/.s
i=0; until tn $O/.s 3 | grep -qE "^\[[0-9.]+\] SNTP"; do i=$((i+1)); [ $i -ge 15 ] && break; sleep 4; done; act "sntp: $(tn $O/.s 3 | grep -E '^\[[0-9.]+\] SNTP' | tail -2 | tr '\n' ' ')"
cat > $O/.c <<'C'
echo SNAP-BEGIN; cat /proc/uptime; date -u; cat /proc/device-tree/model; echo; uname -a; cat /proc/cmdline
echo ---time; cat /run/aurora-modem/time-set; grep -E "TIME|SNTP" /run/aurora-modem/lifecycle.log | tail -4
echo ---modem; /etc/init.d/aurora-modem status
echo ---wifi; /etc/init.d/aurora-wifi status; echo ---wifilog; cat /run/aurora-wifi/wifi.log; cat /run/aurora-wifi/service.log; echo ---hostapdlog; cat /run/aurora-wifi/hostapd.log
for r in /sys/class/remoteproc/*; do echo "RP $(cat $r/name)=$(cat $r/state)"; done; iw dev
echo ---dmesg-wifi; dmesg | grep -iE "wcn36xx|wcnss|a204000|cfg80211|aurora-wifi|crash|watchdog"
echo ---ping; ping -c4 -W3 -I wwan0 77.88.8.8 | tail -2
echo ---display; /etc/init.d/aurora-display status; cat /run/aurora-display/display.log; cat /run/aurora-display/service.log
echo ---consoles; cat /sys/class/tty/console/active; for v in /sys/class/vtconsole/vtcon*; do echo "$v $(cat $v/bind) $(cat $v/name)"; done; ls -l /proc/[0-9]*/fd/0 2>/dev/null | grep -E "ttyMSM0|tty1|console" | sed "s/.* \/proc/\/proc/"
echo ---getty; hostname; ps | grep -E "[g]etty|[c]ttyhack| sh$"
echo ---fb; ls -l /dev/dri/card0 /dev/fb0; for f in name bits_per_pixel virtual_size stride; do echo "fb0 $f=$(cat /sys/class/graphics/fb0/$f)"; done; cat /sys/class/drm/card0-SPI-1/enabled /sys/class/drm/card0-SPI-1/dpms
echo ---regs; for r in /sys/class/regulator/regulator.*; do n=$(cat $r/name); case $n in l6|l17) echo "$n $(cat $r/state) $(cat $r/microvolts) users=$(cat $r/num_users)";; esac; done
echo ---bl; for f in bl_power brightness actual_brightness; do echo "bl $f=$(cat /sys/class/backlight/backlight/$f)"; done
echo ---dmesg-display; dmesg | grep -iE "drm|panel|mipi|spi_qup|78b8000|fbcon|Console: |frame buffer|backlight|aurora-display|l17"
echo ---display-errors; dmesg | grep -iE "drm|panel|mipi|spi0|fbcon|backlight|aurora-display" | grep -ciE "err|fail|timeout|warn"
echo ---iio; for d in /sys/bus/iio/devices/iio:device*; do echo "$d name=$(cat $d/name)"; ls $d | tr '\n' ' '; echo; done
for f in /sys/bus/iio/devices/iio:device*/in_*; do case $f in *_raw|*_input|*_scale|*_offset) echo "$f=$(cat $f 2>&1)";; esac; done
echo ---psy; ls -l /sys/class/power_supply/; for p in /sys/class/power_supply/*; do echo "-- $p"; cat $p/uevent; ls $p; done
echo ---dmesg-bms; dmesg | grep -iE "bms|battery|power_supply|lbc|charger|extcon|ci_hdrc|4000|1000"
echo ---lbc-state; grep -q " /sys/kernel/debug " /proc/mounts || mount -t debugfs debugfs /sys/kernel/debug; cat /sys/kernel/debug/pm8916_lbc/state; dmesg | grep -E "safety timer|supervisor|pm8916-lbc|lbc"
echo ---thermal; for t in /sys/class/thermal/thermal_zone*; do echo "$t $(cat $t/type) $(cat $t/temp)"; done
echo ---dmesg-adc; dmesg | grep -iE "vadc|iio|temp-alarm|qpnp|spmi-temp|pm8916-thermal|thermal"
echo ---emmc; awk "{print \"w=\"\$5\" s=\"\$7}" /sys/block/mmcblk0/stat
echo SNAP-END
C
tn $O/.c 25 > $O/snapshot.txt; act "snapshot: $(grep -c SNAP-END $O/snapshot.txt) end markers; $(grep -E '^RP a204' $O/snapshot.txt)"
printf 'dmesg > /tmp/dm.txt; nc -l -p 9881 < /tmp/dm.txt &\n' > $O/.d; tn $O/.d 3 >/dev/null; sleep 1; ncat --recv-only 172.16.42.1 9881 > $O/dmesg.full
cp $U.log $O/uart.log; act "B10B3B $MODE$K END - operator visual check next"

17
b10/b10b3/b10b3b-load.sh Normal file
View file

@ -0,0 +1,17 @@
#!/bin/sh
# Test B board-side CPU load with guard: N x `yes`, stop on PMIC > 52 C, VADC VBAT < 3.95 V, or after MAX s. Writes /tmp only.
N=${1:-2}; MAX=${2:-300}; L=/tmp/b10b3b-load.log; D=/sys/bus/iio/devices/iio:device0
trap '' HUP
t0=$(cut -d. -f1 /proc/uptime); P=""
for i in $(seq 1 $N); do yes > /dev/null & P="$P $!"; done
echo "LOAD-START up=$t0 n=$N pids=$P" >> $L
why=timeout
while :; do
t=$(cut -d. -f1 /proc/uptime); vb=$(cat $D/in_voltage6_input); pt=$(cat $D/in_temp8_input)
echo "L up=$t vbat6=$vb pmt=$pt" >> $L
[ "$pt" -gt 52000 ] && { why=pmic-52C; break; }
[ "$vb" -lt 3950000 ] && { why=vbat-below-3.95V; break; }
[ $((t - t0)) -ge $MAX ] && break
sleep 5
done
kill $P; echo "LOAD-STOP up=$(cut -d' ' -f1 /proc/uptime) reason=$why" >> $L

14
b10/b10b3/b10b3b-mon-start.sh Executable file
View file

@ -0,0 +1,14 @@
#!/bin/sh
# 480s side, Test B: wait for the NEW boot's NCM, then at once push b10b3-mon.sh to the board and start it (10 s, EVDD=02/00, VMAX 4.15 V),
# then start the 30-s pull into logs/b10/b10b3/<K>-mon.txt. Board side reads only (writes /tmp only). usage: b10b3b-mon-start.sh K
K=$1; [ -n "$K" ] || { echo "usage: $0 K"; exit 2; }
cd ~/doc/modem/jz08-aurora; A=logs/b10/b10b3/$K-actions.txt; act() { echo "$(date -u +%H:%M:%S.%3N) $*" | tee -a $A; }
rm -f logs/b10/b10b3/pull.stop
act "mon-start $K: waiting for the board to go away (warm reboot)"; until ! ping -c1 -W1 172.16.42.1 >/dev/null 2>&1; do sleep 0.5; done; act "board gone"
until ping -c1 -W1 172.16.42.1 >/dev/null 2>&1; do sleep 0.5; done; act "NCM up"
i=0; until { sleep 1; printf 'nc -l -p 9933 > /tmp/b10b3-mon.sh &\r\n'; sleep 1; } | ncat -w 4 172.16.42.1 23 >/dev/null 2>&1; do i=$((i+1)); [ $i -ge 60 ] && { act "ABORT: no telnet"; exit 1; }; sleep 1; done
sleep 1; ncat --send-only 172.16.42.1 9933 < b10/b10b3/b10b3-mon.sh; sleep 1
sh b10/b10b3/b10b3-cmd.sh 3 'md5sum /tmp/b10b3-mon.sh; rm -f /tmp/b10b3-mon.stop; VMAX=4150000 EVDD=02 EVDD2=00 setsid sh /tmp/b10b3-mon.sh 10 > /dev/null 2>&1 < /dev/null & sleep 1; dmesg | grep -E "safety timer|supervisor"; cut -d" " -f1 /proc/uptime' | tee -a $A
act "local md5 $(md5sum < b10/b10b3/b10b3-mon.sh)"
setsid nohup sh b10/b10b3/b10b3-pull.sh $K > /dev/null 2>&1 < /dev/null &
act "monitor started (10 s), pull started -> logs/b10/b10b3/$K-mon.txt"

60
b10/b10b3/b10b3c-boot.sh Normal file
View file

@ -0,0 +1,60 @@
#!/bin/sh
# 480s side, B10B-3 Test C (TEST image) boot K (RAM only). RESET-held power-on -> lk1st fastboot -> `fastboot boot` B10B-3 RAM image. Reads only over telnet.
# MODE=cold: normal power-on (no RESET, no fastboot) -> lk2nd extlinux from eMMC cache. Script only observes + reads over telnet;
# nothing is written to eMMC. Visual display checks need the operator. Adds display/fbcon/getty/console checks to the B8F snapshot.
K=$1; MODE=ram; [ -n "$K" ] || { echo "usage: $0 K"; exit 2; }
cd ~/doc/modem/jz08-aurora; O=logs/b10/b10b3/c$K; mkdir -p $O; IMG=b10/b10b3/out-c/aurora-b10b3c.img
A=$O/host-actions.txt; act() { echo "$(date -u +%H:%M:%S.%3N) $*" | tee -a $A; }
tn() { { sleep 1; sed "s/\$/\r/" "$1"; sleep $2; } | ncat 172.16.42.1 23 | tr -d "\000\r"; }
OLD=$(ps -eo pid,cmd | grep "[u]artlog.py /dev/ttyUSB0" | awk '{print $1}'); [ -n "$OLD" ] && kill $OLD; sleep 1
U=logs/uart/b10b3c-$MODE$K-$(date +%Y%m%d-%H%M%S); setsid nohup python3 tools/uartlog.py /dev/ttyUSB0 $U > $U.stderr 2>&1 < /dev/null &
if [ $MODE = ram ]; then
echo "5ff9dec079a300511883d3d6a79c72539f43c980e921c34af7916e949ca1010d $IMG" | sha256sum -c || exit 1
act "B10B3C $MODE$K: waiting for fastboot <EMMC_SERIAL> (power off >= 90 s, then RESET held + battery -> USB)"
if fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL>; then act "already in fastboot - wait for power-off"; until ! fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL>; do sleep 1; done; fi
i=0; until fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL>; do i=$((i+1)); [ $i -ge 1800 ] && { act "ABORT: no fastboot"; exit 1; }; sleep 2; done
act "fastboot present"; { fastboot boot $IMG 2>&1; echo "rc=$?"; } | tee -a $A
else
act "B10B3C $MODE$K: waiting for the board to go away (power off >= 90 s), then normal power-on WITHOUT RESET"
until ! ping -c1 -W1 172.16.42.1 >/dev/null 2>&1; do sleep 1; done; act "board unreachable (powered off)"
until ping -c1 -W1 172.16.42.1 >/dev/null 2>&1; do fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL> && { act "ABORT: board is in fastboot - RESET was held?"; exit 1; }; sleep 1; done
fi
i=0; until ping -c1 -W1 172.16.42.1 >/dev/null 2>&1; do i=$((i+1)); [ $i -ge 180 ] && { act "ABORT: NCM not up"; cp $U.log $O/uart.log; exit 1; }; sleep 1; done; act "NCM ping ok"
R=$(grep -a "rtc-pm8xxx.*setting system clock" $U.log | tail -1 | sed -n 's/.*(\([0-9]*\)).*/\1/p'); C=B; [ -n "$R" ] && [ "$R" -lt 40 ] && C=A; act "RTC at boot ${R:-?} s -> class $C"
printf 'cat /proc/device-tree/model; echo; uname -r; grep -E "START OK|FAIL in|rollback" /run/aurora-modem/lifecycle.log | tail -1\n' > $O/.w
i=0; until tn $O/.w 3 | grep -qE "^\[[0-9.]+\] .*(=== START OK|FAIL in|rollback)"; do i=$((i+1)); [ $i -ge 80 ] && { act "no START OK/FAIL after ~12 min"; break; }; sleep 6; done
tn $O/.w 3 | grep -aE "Aurora|aurora-b8|START OK|FAIL" | tee -a $A
printf 'grep -E "AP ENABLED|FAIL" /run/aurora-wifi/wifi.log | tail -1\n' > $O/.a
i=0; until tn $O/.a 3 | grep -qE "^\[[0-9.]+\] (=== AP ENABLED|FAIL)"; do i=$((i+1)); [ $i -ge 20 ] && { act "no AP ENABLED/FAIL after ~3 min"; break; }; sleep 6; done
act "wifi: $(tn $O/.a 3 | grep -E '^\[[0-9.]+\] (=== AP ENABLED|FAIL)' | tail -1)"
printf 'grep -E "SNTP (check|STEP|: )" /run/aurora-modem/lifecycle.log | tail -2\n' > $O/.s
i=0; until tn $O/.s 3 | grep -qE "^\[[0-9.]+\] SNTP"; do i=$((i+1)); [ $i -ge 15 ] && break; sleep 4; done; act "sntp: $(tn $O/.s 3 | grep -E '^\[[0-9.]+\] SNTP' | tail -2 | tr '\n' ' ')"
cat > $O/.c <<'C'
echo SNAP-BEGIN; cat /proc/uptime; date -u; cat /proc/device-tree/model; echo; uname -a; cat /proc/cmdline
echo ---time; cat /run/aurora-modem/time-set; grep -E "TIME|SNTP" /run/aurora-modem/lifecycle.log | tail -4
echo ---modem; /etc/init.d/aurora-modem status
echo ---wifi; /etc/init.d/aurora-wifi status; echo ---wifilog; cat /run/aurora-wifi/wifi.log; cat /run/aurora-wifi/service.log; echo ---hostapdlog; cat /run/aurora-wifi/hostapd.log
for r in /sys/class/remoteproc/*; do echo "RP $(cat $r/name)=$(cat $r/state)"; done; iw dev
echo ---dmesg-wifi; dmesg | grep -iE "wcn36xx|wcnss|a204000|cfg80211|aurora-wifi|crash|watchdog"
echo ---ping; ping -c4 -W3 -I wwan0 77.88.8.8 | tail -2
echo ---display; /etc/init.d/aurora-display status; cat /run/aurora-display/display.log; cat /run/aurora-display/service.log
echo ---consoles; cat /sys/class/tty/console/active; for v in /sys/class/vtconsole/vtcon*; do echo "$v $(cat $v/bind) $(cat $v/name)"; done; ls -l /proc/[0-9]*/fd/0 2>/dev/null | grep -E "ttyMSM0|tty1|console" | sed "s/.* \/proc/\/proc/"
echo ---getty; hostname; ps | grep -E "[g]etty|[c]ttyhack| sh$"
echo ---fb; ls -l /dev/dri/card0 /dev/fb0; for f in name bits_per_pixel virtual_size stride; do echo "fb0 $f=$(cat /sys/class/graphics/fb0/$f)"; done; cat /sys/class/drm/card0-SPI-1/enabled /sys/class/drm/card0-SPI-1/dpms
echo ---regs; for r in /sys/class/regulator/regulator.*; do n=$(cat $r/name); case $n in l6|l17) echo "$n $(cat $r/state) $(cat $r/microvolts) users=$(cat $r/num_users)";; esac; done
echo ---bl; for f in bl_power brightness actual_brightness; do echo "bl $f=$(cat /sys/class/backlight/backlight/$f)"; done
echo ---dmesg-display; dmesg | grep -iE "drm|panel|mipi|spi_qup|78b8000|fbcon|Console: |frame buffer|backlight|aurora-display|l17"
echo ---display-errors; dmesg | grep -iE "drm|panel|mipi|spi0|fbcon|backlight|aurora-display" | grep -ciE "err|fail|timeout|warn"
echo ---iio; for d in /sys/bus/iio/devices/iio:device*; do echo "$d name=$(cat $d/name)"; ls $d | tr '\n' ' '; echo; done
for f in /sys/bus/iio/devices/iio:device*/in_*; do case $f in *_raw|*_input|*_scale|*_offset) echo "$f=$(cat $f 2>&1)";; esac; done
echo ---psy; ls -l /sys/class/power_supply/; for p in /sys/class/power_supply/*; do echo "-- $p"; cat $p/uevent; ls $p; done
echo ---dmesg-bms; dmesg | grep -iE "bms|battery|power_supply|lbc|charger|extcon|ci_hdrc|4000|1000"
echo ---lbc-state; grep -q " /sys/kernel/debug " /proc/mounts || mount -t debugfs debugfs /sys/kernel/debug; cat /sys/kernel/debug/pm8916_lbc/state; dmesg | grep -E "safety timer|supervisor|pm8916-lbc|lbc"
echo ---thermal; for t in /sys/class/thermal/thermal_zone*; do echo "$t $(cat $t/type) $(cat $t/temp)"; done
echo ---dmesg-adc; dmesg | grep -iE "vadc|iio|temp-alarm|qpnp|spmi-temp|pm8916-thermal|thermal"
echo ---emmc; awk "{print \"w=\"\$5\" s=\"\$7}" /sys/block/mmcblk0/stat
echo SNAP-END
C
tn $O/.c 25 > $O/snapshot.txt; act "snapshot: $(grep -c SNAP-END $O/snapshot.txt) end markers; $(grep -E '^RP a204' $O/snapshot.txt)"
printf 'dmesg > /tmp/dm.txt; nc -l -p 9881 < /tmp/dm.txt &\n' > $O/.d; tn $O/.d 3 >/dev/null; sleep 1; ncat --recv-only 172.16.42.1 9881 > $O/dmesg.full
cp $U.log $O/uart.log; act "B10B3C $MODE$K END - operator visual check next"

60
b10/b10b3/b10b3cand-boot.sh Executable file
View file

@ -0,0 +1,60 @@
#!/bin/sh
# 480s side, B10B-3 CACHE CANDIDATE RAM pretest (same kernel/DTB/initramfs/cmdline as cache-extlinux-b10b3.img) boot K (RAM only). RESET-held power-on -> lk1st fastboot -> `fastboot boot` B10B-3 RAM image. Reads only over telnet.
# MODE=cold: normal power-on (no RESET, no fastboot) -> lk2nd extlinux from eMMC cache. Script only observes + reads over telnet;
# nothing is written to eMMC. Visual display checks need the operator. Adds display/fbcon/getty/console checks to the B8F snapshot.
K=$1; MODE=ram; [ -n "$K" ] || { echo "usage: $0 K"; exit 2; }
cd ~/doc/modem/jz08-aurora; O=logs/b10/b10b3/cand$K; mkdir -p $O; IMG=b10/b10b3/out/aurora-b10b3.img
A=$O/host-actions.txt; act() { echo "$(date -u +%H:%M:%S.%3N) $*" | tee -a $A; }
tn() { { sleep 1; sed "s/\$/\r/" "$1"; sleep $2; } | ncat 172.16.42.1 23 | tr -d "\000\r"; }
OLD=$(ps -eo pid,cmd | grep "[u]artlog.py /dev/ttyUSB0" | awk '{print $1}'); [ -n "$OLD" ] && kill $OLD; sleep 1
U=logs/uart/b10b3cand-$MODE$K-$(date +%Y%m%d-%H%M%S); setsid nohup python3 tools/uartlog.py /dev/ttyUSB0 $U > $U.stderr 2>&1 < /dev/null &
if [ $MODE = ram ]; then
echo "b7dc34e92148613fd7292ec21209eb7ecd7a96b721b85ab42d374ce5f40d8f84 $IMG" | sha256sum -c || exit 1
act "B10B3CAND $MODE$K: waiting for fastboot <EMMC_SERIAL> (power off >= 90 s, then RESET held + battery -> USB)"
if fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL>; then act "already in fastboot - wait for power-off"; until ! fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL>; do sleep 1; done; fi
i=0; until fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL>; do i=$((i+1)); [ $i -ge 1800 ] && { act "ABORT: no fastboot"; exit 1; }; sleep 2; done
act "fastboot present"; { fastboot boot $IMG 2>&1; echo "rc=$?"; } | tee -a $A
else
act "B10B3CAND $MODE$K: waiting for the board to go away (power off >= 90 s), then normal power-on WITHOUT RESET"
until ! ping -c1 -W1 172.16.42.1 >/dev/null 2>&1; do sleep 1; done; act "board unreachable (powered off)"
until ping -c1 -W1 172.16.42.1 >/dev/null 2>&1; do fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL> && { act "ABORT: board is in fastboot - RESET was held?"; exit 1; }; sleep 1; done
fi
i=0; until ping -c1 -W1 172.16.42.1 >/dev/null 2>&1; do i=$((i+1)); [ $i -ge 180 ] && { act "ABORT: NCM not up"; cp $U.log $O/uart.log; exit 1; }; sleep 1; done; act "NCM ping ok"
R=$(grep -a "rtc-pm8xxx.*setting system clock" $U.log | tail -1 | sed -n 's/.*(\([0-9]*\)).*/\1/p'); C=B; [ -n "$R" ] && [ "$R" -lt 40 ] && C=A; act "RTC at boot ${R:-?} s -> class $C"
printf 'cat /proc/device-tree/model; echo; uname -r; grep -E "START OK|FAIL in|rollback" /run/aurora-modem/lifecycle.log | tail -1\n' > $O/.w
i=0; until tn $O/.w 3 | grep -qE "^\[[0-9.]+\] .*(=== START OK|FAIL in|rollback)"; do i=$((i+1)); [ $i -ge 80 ] && { act "no START OK/FAIL after ~12 min"; break; }; sleep 6; done
tn $O/.w 3 | grep -aE "Aurora|aurora-b8|START OK|FAIL" | tee -a $A
printf 'grep -E "AP ENABLED|FAIL" /run/aurora-wifi/wifi.log | tail -1\n' > $O/.a
i=0; until tn $O/.a 3 | grep -qE "^\[[0-9.]+\] (=== AP ENABLED|FAIL)"; do i=$((i+1)); [ $i -ge 20 ] && { act "no AP ENABLED/FAIL after ~3 min"; break; }; sleep 6; done
act "wifi: $(tn $O/.a 3 | grep -E '^\[[0-9.]+\] (=== AP ENABLED|FAIL)' | tail -1)"
printf 'grep -E "SNTP (check|STEP|: )" /run/aurora-modem/lifecycle.log | tail -2\n' > $O/.s
i=0; until tn $O/.s 3 | grep -qE "^\[[0-9.]+\] SNTP"; do i=$((i+1)); [ $i -ge 15 ] && break; sleep 4; done; act "sntp: $(tn $O/.s 3 | grep -E '^\[[0-9.]+\] SNTP' | tail -2 | tr '\n' ' ')"
cat > $O/.c <<'C'
echo SNAP-BEGIN; cat /proc/uptime; date -u; cat /proc/device-tree/model; echo; uname -a; cat /proc/cmdline
echo ---time; cat /run/aurora-modem/time-set; grep -E "TIME|SNTP" /run/aurora-modem/lifecycle.log | tail -4
echo ---modem; /etc/init.d/aurora-modem status
echo ---wifi; /etc/init.d/aurora-wifi status; echo ---wifilog; cat /run/aurora-wifi/wifi.log; cat /run/aurora-wifi/service.log; echo ---hostapdlog; cat /run/aurora-wifi/hostapd.log
for r in /sys/class/remoteproc/*; do echo "RP $(cat $r/name)=$(cat $r/state)"; done; iw dev
echo ---dmesg-wifi; dmesg | grep -iE "wcn36xx|wcnss|a204000|cfg80211|aurora-wifi|crash|watchdog"
echo ---ping; ping -c4 -W3 -I wwan0 77.88.8.8 | tail -2
echo ---display; /etc/init.d/aurora-display status; cat /run/aurora-display/display.log; cat /run/aurora-display/service.log
echo ---consoles; cat /sys/class/tty/console/active; for v in /sys/class/vtconsole/vtcon*; do echo "$v $(cat $v/bind) $(cat $v/name)"; done; ls -l /proc/[0-9]*/fd/0 2>/dev/null | grep -E "ttyMSM0|tty1|console" | sed "s/.* \/proc/\/proc/"
echo ---getty; hostname; ps | grep -E "[g]etty|[c]ttyhack| sh$"
echo ---fb; ls -l /dev/dri/card0 /dev/fb0; for f in name bits_per_pixel virtual_size stride; do echo "fb0 $f=$(cat /sys/class/graphics/fb0/$f)"; done; cat /sys/class/drm/card0-SPI-1/enabled /sys/class/drm/card0-SPI-1/dpms
echo ---regs; for r in /sys/class/regulator/regulator.*; do n=$(cat $r/name); case $n in l6|l17) echo "$n $(cat $r/state) $(cat $r/microvolts) users=$(cat $r/num_users)";; esac; done
echo ---bl; for f in bl_power brightness actual_brightness; do echo "bl $f=$(cat /sys/class/backlight/backlight/$f)"; done
echo ---dmesg-display; dmesg | grep -iE "drm|panel|mipi|spi_qup|78b8000|fbcon|Console: |frame buffer|backlight|aurora-display|l17"
echo ---display-errors; dmesg | grep -iE "drm|panel|mipi|spi0|fbcon|backlight|aurora-display" | grep -ciE "err|fail|timeout|warn"
echo ---iio; for d in /sys/bus/iio/devices/iio:device*; do echo "$d name=$(cat $d/name)"; ls $d | tr '\n' ' '; echo; done
for f in /sys/bus/iio/devices/iio:device*/in_*; do case $f in *_raw|*_input|*_scale|*_offset) echo "$f=$(cat $f 2>&1)";; esac; done
echo ---psy; ls -l /sys/class/power_supply/; for p in /sys/class/power_supply/*; do echo "-- $p"; cat $p/uevent; ls $p; done
echo ---dmesg-bms; dmesg | grep -iE "bms|battery|power_supply|lbc|charger|extcon|ci_hdrc|4000|1000"
echo ---lbc-state; grep -q " /sys/kernel/debug " /proc/mounts || mount -t debugfs debugfs /sys/kernel/debug; cat /sys/kernel/debug/pm8916_lbc/state; dmesg | grep -E "safety timer|supervisor|pm8916-lbc|lbc"
echo ---thermal; for t in /sys/class/thermal/thermal_zone*; do echo "$t $(cat $t/type) $(cat $t/temp)"; done
echo ---dmesg-adc; dmesg | grep -iE "vadc|iio|temp-alarm|qpnp|spmi-temp|pm8916-thermal|thermal"
echo ---emmc; awk "{print \"w=\"\$5\" s=\"\$7}" /sys/block/mmcblk0/stat
echo SNAP-END
C
tn $O/.c 25 > $O/snapshot.txt; act "snapshot: $(grep -c SNAP-END $O/snapshot.txt) end markers; $(grep -E '^RP a204' $O/snapshot.txt)"
printf 'dmesg > /tmp/dm.txt; nc -l -p 9881 < /tmp/dm.txt &\n' > $O/.d; tn $O/.d 3 >/dev/null; sleep 1; ncat --recv-only 172.16.42.1 9881 > $O/dmesg.full
cp $U.log $O/uart.log; act "B10B3CAND $MODE$K END - operator visual check next"

60
b10/b10b3/b10b3d-boot.sh Executable file
View file

@ -0,0 +1,60 @@
#!/bin/sh
# 480s side, B10B-3 Test D (TEST image) boot K (RAM only). RESET-held power-on -> lk1st fastboot -> `fastboot boot` B10B-3 RAM image. Reads only over telnet.
# MODE=cold: normal power-on (no RESET, no fastboot) -> lk2nd extlinux from eMMC cache. Script only observes + reads over telnet;
# nothing is written to eMMC. Visual display checks need the operator. Adds display/fbcon/getty/console checks to the B8F snapshot.
K=$1; MODE=ram; [ -n "$K" ] || { echo "usage: $0 K"; exit 2; }
cd ~/doc/modem/jz08-aurora; O=logs/b10/b10b3/d$K; mkdir -p $O; IMG=b10/b10b3/out-d/aurora-b10b3d.img
A=$O/host-actions.txt; act() { echo "$(date -u +%H:%M:%S.%3N) $*" | tee -a $A; }
tn() { { sleep 1; sed "s/\$/\r/" "$1"; sleep $2; } | ncat 172.16.42.1 23 | tr -d "\000\r"; }
OLD=$(ps -eo pid,cmd | grep "[u]artlog.py /dev/ttyUSB0" | awk '{print $1}'); [ -n "$OLD" ] && kill $OLD; sleep 1
U=logs/uart/b10b3d-$MODE$K-$(date +%Y%m%d-%H%M%S); setsid nohup python3 tools/uartlog.py /dev/ttyUSB0 $U > $U.stderr 2>&1 < /dev/null &
if [ $MODE = ram ]; then
echo "43739e5565e7d2dc14d6249b098130dd3094c2748dd07a4a2373394c0241b897 $IMG" | sha256sum -c || exit 1
act "B10B3D $MODE$K: waiting for fastboot <EMMC_SERIAL> (power off >= 90 s, then RESET held + battery -> USB)"
if fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL>; then act "already in fastboot - wait for power-off"; until ! fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL>; do sleep 1; done; fi
i=0; until fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL>; do i=$((i+1)); [ $i -ge 1800 ] && { act "ABORT: no fastboot"; exit 1; }; sleep 2; done
act "fastboot present"; { fastboot boot $IMG 2>&1; echo "rc=$?"; } | tee -a $A
else
act "B10B3D $MODE$K: waiting for the board to go away (power off >= 90 s), then normal power-on WITHOUT RESET"
until ! ping -c1 -W1 172.16.42.1 >/dev/null 2>&1; do sleep 1; done; act "board unreachable (powered off)"
until ping -c1 -W1 172.16.42.1 >/dev/null 2>&1; do fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL> && { act "ABORT: board is in fastboot - RESET was held?"; exit 1; }; sleep 1; done
fi
i=0; until ping -c1 -W1 172.16.42.1 >/dev/null 2>&1; do i=$((i+1)); [ $i -ge 180 ] && { act "ABORT: NCM not up"; cp $U.log $O/uart.log; exit 1; }; sleep 1; done; act "NCM ping ok"
R=$(grep -a "rtc-pm8xxx.*setting system clock" $U.log | tail -1 | sed -n 's/.*(\([0-9]*\)).*/\1/p'); C=B; [ -n "$R" ] && [ "$R" -lt 40 ] && C=A; act "RTC at boot ${R:-?} s -> class $C"
printf 'cat /proc/device-tree/model; echo; uname -r; grep -E "START OK|FAIL in|rollback" /run/aurora-modem/lifecycle.log | tail -1\n' > $O/.w
i=0; until tn $O/.w 3 | grep -qE "^\[[0-9.]+\] .*(=== START OK|FAIL in|rollback)"; do i=$((i+1)); [ $i -ge 80 ] && { act "no START OK/FAIL after ~12 min"; break; }; sleep 6; done
tn $O/.w 3 | grep -aE "Aurora|aurora-b8|START OK|FAIL" | tee -a $A
printf 'grep -E "AP ENABLED|FAIL" /run/aurora-wifi/wifi.log | tail -1\n' > $O/.a
i=0; until tn $O/.a 3 | grep -qE "^\[[0-9.]+\] (=== AP ENABLED|FAIL)"; do i=$((i+1)); [ $i -ge 20 ] && { act "no AP ENABLED/FAIL after ~3 min"; break; }; sleep 6; done
act "wifi: $(tn $O/.a 3 | grep -E '^\[[0-9.]+\] (=== AP ENABLED|FAIL)' | tail -1)"
printf 'grep -E "SNTP (check|STEP|: )" /run/aurora-modem/lifecycle.log | tail -2\n' > $O/.s
i=0; until tn $O/.s 3 | grep -qE "^\[[0-9.]+\] SNTP"; do i=$((i+1)); [ $i -ge 15 ] && break; sleep 4; done; act "sntp: $(tn $O/.s 3 | grep -E '^\[[0-9.]+\] SNTP' | tail -2 | tr '\n' ' ')"
cat > $O/.c <<'C'
echo SNAP-BEGIN; cat /proc/uptime; date -u; cat /proc/device-tree/model; echo; uname -a; cat /proc/cmdline
echo ---time; cat /run/aurora-modem/time-set; grep -E "TIME|SNTP" /run/aurora-modem/lifecycle.log | tail -4
echo ---modem; /etc/init.d/aurora-modem status
echo ---wifi; /etc/init.d/aurora-wifi status; echo ---wifilog; cat /run/aurora-wifi/wifi.log; cat /run/aurora-wifi/service.log; echo ---hostapdlog; cat /run/aurora-wifi/hostapd.log
for r in /sys/class/remoteproc/*; do echo "RP $(cat $r/name)=$(cat $r/state)"; done; iw dev
echo ---dmesg-wifi; dmesg | grep -iE "wcn36xx|wcnss|a204000|cfg80211|aurora-wifi|crash|watchdog"
echo ---ping; ping -c4 -W3 -I wwan0 77.88.8.8 | tail -2
echo ---display; /etc/init.d/aurora-display status; cat /run/aurora-display/display.log; cat /run/aurora-display/service.log
echo ---consoles; cat /sys/class/tty/console/active; for v in /sys/class/vtconsole/vtcon*; do echo "$v $(cat $v/bind) $(cat $v/name)"; done; ls -l /proc/[0-9]*/fd/0 2>/dev/null | grep -E "ttyMSM0|tty1|console" | sed "s/.* \/proc/\/proc/"
echo ---getty; hostname; ps | grep -E "[g]etty|[c]ttyhack| sh$"
echo ---fb; ls -l /dev/dri/card0 /dev/fb0; for f in name bits_per_pixel virtual_size stride; do echo "fb0 $f=$(cat /sys/class/graphics/fb0/$f)"; done; cat /sys/class/drm/card0-SPI-1/enabled /sys/class/drm/card0-SPI-1/dpms
echo ---regs; for r in /sys/class/regulator/regulator.*; do n=$(cat $r/name); case $n in l6|l17) echo "$n $(cat $r/state) $(cat $r/microvolts) users=$(cat $r/num_users)";; esac; done
echo ---bl; for f in bl_power brightness actual_brightness; do echo "bl $f=$(cat /sys/class/backlight/backlight/$f)"; done
echo ---dmesg-display; dmesg | grep -iE "drm|panel|mipi|spi_qup|78b8000|fbcon|Console: |frame buffer|backlight|aurora-display|l17"
echo ---display-errors; dmesg | grep -iE "drm|panel|mipi|spi0|fbcon|backlight|aurora-display" | grep -ciE "err|fail|timeout|warn"
echo ---iio; for d in /sys/bus/iio/devices/iio:device*; do echo "$d name=$(cat $d/name)"; ls $d | tr '\n' ' '; echo; done
for f in /sys/bus/iio/devices/iio:device*/in_*; do case $f in *_raw|*_input|*_scale|*_offset) echo "$f=$(cat $f 2>&1)";; esac; done
echo ---psy; ls -l /sys/class/power_supply/; for p in /sys/class/power_supply/*; do echo "-- $p"; cat $p/uevent; ls $p; done
echo ---dmesg-bms; dmesg | grep -iE "bms|battery|power_supply|lbc|charger|extcon|ci_hdrc|4000|1000"
echo ---lbc-state; grep -q " /sys/kernel/debug " /proc/mounts || mount -t debugfs debugfs /sys/kernel/debug; cat /sys/kernel/debug/pm8916_lbc/state; dmesg | grep -E "safety timer|supervisor|pm8916-lbc|lbc"
echo ---thermal; for t in /sys/class/thermal/thermal_zone*; do echo "$t $(cat $t/type) $(cat $t/temp)"; done
echo ---dmesg-adc; dmesg | grep -iE "vadc|iio|temp-alarm|qpnp|spmi-temp|pm8916-thermal|thermal"
echo ---emmc; awk "{print \"w=\"\$5\" s=\"\$7}" /sys/block/mmcblk0/stat
echo SNAP-END
C
tn $O/.c 25 > $O/snapshot.txt; act "snapshot: $(grep -c SNAP-END $O/snapshot.txt) end markers; $(grep -E '^RP a204' $O/snapshot.txt)"
printf 'dmesg > /tmp/dm.txt; nc -l -p 9881 < /tmp/dm.txt &\n' > $O/.d; tn $O/.d 3 >/dev/null; sleep 1; ncat --recv-only 172.16.42.1 9881 > $O/dmesg.full
cp $U.log $O/uart.log; act "B10B3D $MODE$K END - operator visual check next"

14
b10/b10b3/b10b3d-mon-start.sh Executable file
View file

@ -0,0 +1,14 @@
#!/bin/sh
# 480s side, Test D: wait for the NEW boot's NCM, then at once push b10b3-mon.sh to the board and start it (5 s, EVDD=04/00, VMAX 4.15 V),
# then start the 30-s pull into logs/b10/b10b3/<K>-mon.txt. Board side reads only (writes /tmp only). usage: b10b3b-mon-start.sh K
K=$1; [ -n "$K" ] || { echo "usage: $0 K"; exit 2; }
cd ~/doc/modem/jz08-aurora; A=logs/b10/b10b3/$K-actions.txt; act() { echo "$(date -u +%H:%M:%S.%3N) $*" | tee -a $A; }
rm -f logs/b10/b10b3/pull.stop
act "mon-start $K: waiting for the board to go away (warm reboot)"; until ! ping -c1 -W1 172.16.42.1 >/dev/null 2>&1; do sleep 0.5; done; act "board gone"
until ping -c1 -W1 172.16.42.1 >/dev/null 2>&1; do sleep 0.5; done; act "NCM up"
i=0; until { sleep 1; printf 'nc -l -p 9943 > /tmp/b10b3-mon.sh &\r\n'; sleep 1; } | ncat -w 4 172.16.42.1 23 >/dev/null 2>&1; do i=$((i+1)); [ $i -ge 60 ] && { act "ABORT: no telnet"; exit 1; }; sleep 1; done
sleep 1; ncat --send-only 172.16.42.1 9943 < b10/b10b3/b10b3-mon.sh; sleep 1
sh b10/b10b3/b10b3-cmd.sh 3 'md5sum /tmp/b10b3-mon.sh; rm -f /tmp/b10b3-mon.stop; VMAX=4150000 EVDD=04 EVDD2=00 setsid sh /tmp/b10b3-mon.sh 5 > /dev/null 2>&1 < /dev/null & sleep 1; dmesg | grep -E "safety timer|supervisor"; cut -d" " -f1 /proc/uptime' | tee -a $A
act "local md5 $(md5sum < b10/b10b3/b10b3-mon.sh)"
setsid nohup sh b10/b10b3/b10b3-pull.sh $K > /dev/null 2>&1 < /dev/null &
act "monitor started (5 s), pull started -> logs/b10/b10b3/$K-mon.txt"

60
b10/b10b3/b10b3d3-boot.sh Executable file
View file

@ -0,0 +1,60 @@
#!/bin/sh
# 480s side, B10B-3 Test D3 (TEST image) boot K (RAM only). RESET-held power-on -> lk1st fastboot -> `fastboot boot` B10B-3 RAM image. Reads only over telnet.
# MODE=cold: normal power-on (no RESET, no fastboot) -> lk2nd extlinux from eMMC cache. Script only observes + reads over telnet;
# nothing is written to eMMC. Visual display checks need the operator. Adds display/fbcon/getty/console checks to the B8F snapshot.
K=$1; MODE=ram; [ -n "$K" ] || { echo "usage: $0 K"; exit 2; }
cd ~/doc/modem/jz08-aurora; O=logs/b10/b10b3/d3r$K; mkdir -p $O; IMG=b10/b10b3/out-d3/aurora-b10b3d3.img
A=$O/host-actions.txt; act() { echo "$(date -u +%H:%M:%S.%3N) $*" | tee -a $A; }
tn() { { sleep 1; sed "s/\$/\r/" "$1"; sleep $2; } | ncat 172.16.42.1 23 | tr -d "\000\r"; }
OLD=$(ps -eo pid,cmd | grep "[u]artlog.py /dev/ttyUSB0" | awk '{print $1}'); [ -n "$OLD" ] && kill $OLD; sleep 1
U=logs/uart/b10b3d3-$MODE$K-$(date +%Y%m%d-%H%M%S); setsid nohup python3 tools/uartlog.py /dev/ttyUSB0 $U > $U.stderr 2>&1 < /dev/null &
if [ $MODE = ram ]; then
echo "4645a7ec012e4c83af4f496ce03431024a758c64c679da45f7b6445edef777f9 $IMG" | sha256sum -c || exit 1
act "B10B3D3 $MODE$K: waiting for fastboot <EMMC_SERIAL> (power off >= 90 s, then RESET held + battery -> USB)"
if fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL>; then act "already in fastboot - wait for power-off"; until ! fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL>; do sleep 1; done; fi
i=0; until fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL>; do i=$((i+1)); [ $i -ge 1800 ] && { act "ABORT: no fastboot"; exit 1; }; sleep 2; done
act "fastboot present"; { fastboot boot $IMG 2>&1; echo "rc=$?"; } | tee -a $A
else
act "B10B3D3 $MODE$K: waiting for the board to go away (power off >= 90 s), then normal power-on WITHOUT RESET"
until ! ping -c1 -W1 172.16.42.1 >/dev/null 2>&1; do sleep 1; done; act "board unreachable (powered off)"
until ping -c1 -W1 172.16.42.1 >/dev/null 2>&1; do fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL> && { act "ABORT: board is in fastboot - RESET was held?"; exit 1; }; sleep 1; done
fi
i=0; until ping -c1 -W1 172.16.42.1 >/dev/null 2>&1; do i=$((i+1)); [ $i -ge 180 ] && { act "ABORT: NCM not up"; cp $U.log $O/uart.log; exit 1; }; sleep 1; done; act "NCM ping ok"
R=$(grep -a "rtc-pm8xxx.*setting system clock" $U.log | tail -1 | sed -n 's/.*(\([0-9]*\)).*/\1/p'); C=B; [ -n "$R" ] && [ "$R" -lt 40 ] && C=A; act "RTC at boot ${R:-?} s -> class $C"
printf 'cat /proc/device-tree/model; echo; uname -r; grep -E "START OK|FAIL in|rollback" /run/aurora-modem/lifecycle.log | tail -1\n' > $O/.w
i=0; until tn $O/.w 3 | grep -qE "^\[[0-9.]+\] .*(=== START OK|FAIL in|rollback)"; do i=$((i+1)); [ $i -ge 80 ] && { act "no START OK/FAIL after ~12 min"; break; }; sleep 6; done
tn $O/.w 3 | grep -aE "Aurora|aurora-b8|START OK|FAIL" | tee -a $A
printf 'grep -E "AP ENABLED|FAIL" /run/aurora-wifi/wifi.log | tail -1\n' > $O/.a
i=0; until tn $O/.a 3 | grep -qE "^\[[0-9.]+\] (=== AP ENABLED|FAIL)"; do i=$((i+1)); [ $i -ge 20 ] && { act "no AP ENABLED/FAIL after ~3 min"; break; }; sleep 6; done
act "wifi: $(tn $O/.a 3 | grep -E '^\[[0-9.]+\] (=== AP ENABLED|FAIL)' | tail -1)"
printf 'grep -E "SNTP (check|STEP|: )" /run/aurora-modem/lifecycle.log | tail -2\n' > $O/.s
i=0; until tn $O/.s 3 | grep -qE "^\[[0-9.]+\] SNTP"; do i=$((i+1)); [ $i -ge 15 ] && break; sleep 4; done; act "sntp: $(tn $O/.s 3 | grep -E '^\[[0-9.]+\] SNTP' | tail -2 | tr '\n' ' ')"
cat > $O/.c <<'C'
echo SNAP-BEGIN; cat /proc/uptime; date -u; cat /proc/device-tree/model; echo; uname -a; cat /proc/cmdline
echo ---time; cat /run/aurora-modem/time-set; grep -E "TIME|SNTP" /run/aurora-modem/lifecycle.log | tail -4
echo ---modem; /etc/init.d/aurora-modem status
echo ---wifi; /etc/init.d/aurora-wifi status; echo ---wifilog; cat /run/aurora-wifi/wifi.log; cat /run/aurora-wifi/service.log; echo ---hostapdlog; cat /run/aurora-wifi/hostapd.log
for r in /sys/class/remoteproc/*; do echo "RP $(cat $r/name)=$(cat $r/state)"; done; iw dev
echo ---dmesg-wifi; dmesg | grep -iE "wcn36xx|wcnss|a204000|cfg80211|aurora-wifi|crash|watchdog"
echo ---ping; ping -c4 -W3 -I wwan0 77.88.8.8 | tail -2
echo ---display; /etc/init.d/aurora-display status; cat /run/aurora-display/display.log; cat /run/aurora-display/service.log
echo ---consoles; cat /sys/class/tty/console/active; for v in /sys/class/vtconsole/vtcon*; do echo "$v $(cat $v/bind) $(cat $v/name)"; done; ls -l /proc/[0-9]*/fd/0 2>/dev/null | grep -E "ttyMSM0|tty1|console" | sed "s/.* \/proc/\/proc/"
echo ---getty; hostname; ps | grep -E "[g]etty|[c]ttyhack| sh$"
echo ---fb; ls -l /dev/dri/card0 /dev/fb0; for f in name bits_per_pixel virtual_size stride; do echo "fb0 $f=$(cat /sys/class/graphics/fb0/$f)"; done; cat /sys/class/drm/card0-SPI-1/enabled /sys/class/drm/card0-SPI-1/dpms
echo ---regs; for r in /sys/class/regulator/regulator.*; do n=$(cat $r/name); case $n in l6|l17) echo "$n $(cat $r/state) $(cat $r/microvolts) users=$(cat $r/num_users)";; esac; done
echo ---bl; for f in bl_power brightness actual_brightness; do echo "bl $f=$(cat /sys/class/backlight/backlight/$f)"; done
echo ---dmesg-display; dmesg | grep -iE "drm|panel|mipi|spi_qup|78b8000|fbcon|Console: |frame buffer|backlight|aurora-display|l17"
echo ---display-errors; dmesg | grep -iE "drm|panel|mipi|spi0|fbcon|backlight|aurora-display" | grep -ciE "err|fail|timeout|warn"
echo ---iio; for d in /sys/bus/iio/devices/iio:device*; do echo "$d name=$(cat $d/name)"; ls $d | tr '\n' ' '; echo; done
for f in /sys/bus/iio/devices/iio:device*/in_*; do case $f in *_raw|*_input|*_scale|*_offset) echo "$f=$(cat $f 2>&1)";; esac; done
echo ---psy; ls -l /sys/class/power_supply/; for p in /sys/class/power_supply/*; do echo "-- $p"; cat $p/uevent; ls $p; done
echo ---dmesg-bms; dmesg | grep -iE "bms|battery|power_supply|lbc|charger|extcon|ci_hdrc|4000|1000"
echo ---lbc-state; grep -q " /sys/kernel/debug " /proc/mounts || mount -t debugfs debugfs /sys/kernel/debug; cat /sys/kernel/debug/pm8916_lbc/state; dmesg | grep -E "safety timer|supervisor|pm8916-lbc|lbc"
echo ---thermal; for t in /sys/class/thermal/thermal_zone*; do echo "$t $(cat $t/type) $(cat $t/temp)"; done
echo ---dmesg-adc; dmesg | grep -iE "vadc|iio|temp-alarm|qpnp|spmi-temp|pm8916-thermal|thermal"
echo ---emmc; awk "{print \"w=\"\$5\" s=\"\$7}" /sys/block/mmcblk0/stat
echo SNAP-END
C
tn $O/.c 25 > $O/snapshot.txt; act "snapshot: $(grep -c SNAP-END $O/snapshot.txt) end markers; $(grep -E '^RP a204' $O/snapshot.txt)"
printf 'dmesg > /tmp/dm.txt; nc -l -p 9881 < /tmp/dm.txt &\n' > $O/.d; tn $O/.d 3 >/dev/null; sleep 1; ncat --recv-only 172.16.42.1 9881 > $O/dmesg.full
cp $U.log $O/uart.log; act "B10B3D3 $MODE$K END - operator visual check next"

60
b10/b10b3/b10b3p-boot.sh Executable file
View file

@ -0,0 +1,60 @@
#!/bin/sh
# 480s side, B10B-3 production-profile (TEST image) boot K (RAM only). RESET-held power-on -> lk1st fastboot -> `fastboot boot` B10B-3 RAM image. Reads only over telnet.
# MODE=cold: normal power-on (no RESET, no fastboot) -> lk2nd extlinux from eMMC cache. Script only observes + reads over telnet;
# nothing is written to eMMC. Visual display checks need the operator. Adds display/fbcon/getty/console checks to the B8F snapshot.
K=$1; MODE=ram; [ -n "$K" ] || { echo "usage: $0 K"; exit 2; }
cd ~/doc/modem/jz08-aurora; O=logs/b10/b10b3/p$K; mkdir -p $O; IMG=b10/b10b3/out-p/aurora-b10b3p.img
A=$O/host-actions.txt; act() { echo "$(date -u +%H:%M:%S.%3N) $*" | tee -a $A; }
tn() { { sleep 1; sed "s/\$/\r/" "$1"; sleep $2; } | ncat 172.16.42.1 23 | tr -d "\000\r"; }
OLD=$(ps -eo pid,cmd | grep "[u]artlog.py /dev/ttyUSB0" | awk '{print $1}'); [ -n "$OLD" ] && kill $OLD; sleep 1
U=logs/uart/b10b3p-$MODE$K-$(date +%Y%m%d-%H%M%S); setsid nohup python3 tools/uartlog.py /dev/ttyUSB0 $U > $U.stderr 2>&1 < /dev/null &
if [ $MODE = ram ]; then
echo "8bcd613e029b9b72a2105e1aaf93572601345871c6917b178cd5fd462816e8aa $IMG" | sha256sum -c || exit 1
act "B10B3P $MODE$K: waiting for fastboot <EMMC_SERIAL> (power off >= 90 s, then RESET held + battery -> USB)"
if fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL>; then act "already in fastboot - wait for power-off"; until ! fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL>; do sleep 1; done; fi
i=0; until fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL>; do i=$((i+1)); [ $i -ge 1800 ] && { act "ABORT: no fastboot"; exit 1; }; sleep 2; done
act "fastboot present"; { fastboot boot $IMG 2>&1; echo "rc=$?"; } | tee -a $A
else
act "B10B3P $MODE$K: waiting for the board to go away (power off >= 90 s), then normal power-on WITHOUT RESET"
until ! ping -c1 -W1 172.16.42.1 >/dev/null 2>&1; do sleep 1; done; act "board unreachable (powered off)"
until ping -c1 -W1 172.16.42.1 >/dev/null 2>&1; do fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL> && { act "ABORT: board is in fastboot - RESET was held?"; exit 1; }; sleep 1; done
fi
i=0; until ping -c1 -W1 172.16.42.1 >/dev/null 2>&1; do i=$((i+1)); [ $i -ge 180 ] && { act "ABORT: NCM not up"; cp $U.log $O/uart.log; exit 1; }; sleep 1; done; act "NCM ping ok"
R=$(grep -a "rtc-pm8xxx.*setting system clock" $U.log | tail -1 | sed -n 's/.*(\([0-9]*\)).*/\1/p'); C=B; [ -n "$R" ] && [ "$R" -lt 40 ] && C=A; act "RTC at boot ${R:-?} s -> class $C"
printf 'cat /proc/device-tree/model; echo; uname -r; grep -E "START OK|FAIL in|rollback" /run/aurora-modem/lifecycle.log | tail -1\n' > $O/.w
i=0; until tn $O/.w 3 | grep -qE "^\[[0-9.]+\] .*(=== START OK|FAIL in|rollback)"; do i=$((i+1)); [ $i -ge 80 ] && { act "no START OK/FAIL after ~12 min"; break; }; sleep 6; done
tn $O/.w 3 | grep -aE "Aurora|aurora-b8|START OK|FAIL" | tee -a $A
printf 'grep -E "AP ENABLED|FAIL" /run/aurora-wifi/wifi.log | tail -1\n' > $O/.a
i=0; until tn $O/.a 3 | grep -qE "^\[[0-9.]+\] (=== AP ENABLED|FAIL)"; do i=$((i+1)); [ $i -ge 20 ] && { act "no AP ENABLED/FAIL after ~3 min"; break; }; sleep 6; done
act "wifi: $(tn $O/.a 3 | grep -E '^\[[0-9.]+\] (=== AP ENABLED|FAIL)' | tail -1)"
printf 'grep -E "SNTP (check|STEP|: )" /run/aurora-modem/lifecycle.log | tail -2\n' > $O/.s
i=0; until tn $O/.s 3 | grep -qE "^\[[0-9.]+\] SNTP"; do i=$((i+1)); [ $i -ge 15 ] && break; sleep 4; done; act "sntp: $(tn $O/.s 3 | grep -E '^\[[0-9.]+\] SNTP' | tail -2 | tr '\n' ' ')"
cat > $O/.c <<'C'
echo SNAP-BEGIN; cat /proc/uptime; date -u; cat /proc/device-tree/model; echo; uname -a; cat /proc/cmdline
echo ---time; cat /run/aurora-modem/time-set; grep -E "TIME|SNTP" /run/aurora-modem/lifecycle.log | tail -4
echo ---modem; /etc/init.d/aurora-modem status
echo ---wifi; /etc/init.d/aurora-wifi status; echo ---wifilog; cat /run/aurora-wifi/wifi.log; cat /run/aurora-wifi/service.log; echo ---hostapdlog; cat /run/aurora-wifi/hostapd.log
for r in /sys/class/remoteproc/*; do echo "RP $(cat $r/name)=$(cat $r/state)"; done; iw dev
echo ---dmesg-wifi; dmesg | grep -iE "wcn36xx|wcnss|a204000|cfg80211|aurora-wifi|crash|watchdog"
echo ---ping; ping -c4 -W3 -I wwan0 77.88.8.8 | tail -2
echo ---display; /etc/init.d/aurora-display status; cat /run/aurora-display/display.log; cat /run/aurora-display/service.log
echo ---consoles; cat /sys/class/tty/console/active; for v in /sys/class/vtconsole/vtcon*; do echo "$v $(cat $v/bind) $(cat $v/name)"; done; ls -l /proc/[0-9]*/fd/0 2>/dev/null | grep -E "ttyMSM0|tty1|console" | sed "s/.* \/proc/\/proc/"
echo ---getty; hostname; ps | grep -E "[g]etty|[c]ttyhack| sh$"
echo ---fb; ls -l /dev/dri/card0 /dev/fb0; for f in name bits_per_pixel virtual_size stride; do echo "fb0 $f=$(cat /sys/class/graphics/fb0/$f)"; done; cat /sys/class/drm/card0-SPI-1/enabled /sys/class/drm/card0-SPI-1/dpms
echo ---regs; for r in /sys/class/regulator/regulator.*; do n=$(cat $r/name); case $n in l6|l17) echo "$n $(cat $r/state) $(cat $r/microvolts) users=$(cat $r/num_users)";; esac; done
echo ---bl; for f in bl_power brightness actual_brightness; do echo "bl $f=$(cat /sys/class/backlight/backlight/$f)"; done
echo ---dmesg-display; dmesg | grep -iE "drm|panel|mipi|spi_qup|78b8000|fbcon|Console: |frame buffer|backlight|aurora-display|l17"
echo ---display-errors; dmesg | grep -iE "drm|panel|mipi|spi0|fbcon|backlight|aurora-display" | grep -ciE "err|fail|timeout|warn"
echo ---iio; for d in /sys/bus/iio/devices/iio:device*; do echo "$d name=$(cat $d/name)"; ls $d | tr '\n' ' '; echo; done
for f in /sys/bus/iio/devices/iio:device*/in_*; do case $f in *_raw|*_input|*_scale|*_offset) echo "$f=$(cat $f 2>&1)";; esac; done
echo ---psy; ls -l /sys/class/power_supply/; for p in /sys/class/power_supply/*; do echo "-- $p"; cat $p/uevent; ls $p; done
echo ---dmesg-bms; dmesg | grep -iE "bms|battery|power_supply|lbc|charger|extcon|ci_hdrc|4000|1000"
echo ---lbc-state; grep -q " /sys/kernel/debug " /proc/mounts || mount -t debugfs debugfs /sys/kernel/debug; cat /sys/kernel/debug/pm8916_lbc/state; dmesg | grep -E "safety timer|supervisor|pm8916-lbc|lbc"
echo ---thermal; for t in /sys/class/thermal/thermal_zone*; do echo "$t $(cat $t/type) $(cat $t/temp)"; done
echo ---dmesg-adc; dmesg | grep -iE "vadc|iio|temp-alarm|qpnp|spmi-temp|pm8916-thermal|thermal"
echo ---emmc; awk "{print \"w=\"\$5\" s=\"\$7}" /sys/block/mmcblk0/stat
echo SNAP-END
C
tn $O/.c 25 > $O/snapshot.txt; act "snapshot: $(grep -c SNAP-END $O/snapshot.txt) end markers; $(grep -E '^RP a204' $O/snapshot.txt)"
printf 'dmesg > /tmp/dm.txt; nc -l -p 9881 < /tmp/dm.txt &\n' > $O/.d; tn $O/.d 3 >/dev/null; sleep 1; ncat --recv-only 172.16.42.1 9881 > $O/dmesg.full
cp $U.log $O/uart.log; act "B10B3P $MODE$K END - operator visual check next"

14
b10/b10b3/b10b3p-mon-start.sh Executable file
View file

@ -0,0 +1,14 @@
#!/bin/sh
# 480s side, production-profile run: wait for the NEW boot's NCM, then at once push b10b3-mon.sh to the board and start it (5 s, EVDD=08/02, VMAX 4.23 V),
# then start the 30-s pull into logs/b10/b10b3/<K>-mon.txt. Board side reads only (writes /tmp only). usage: b10b3b-mon-start.sh K
K=$1; [ -n "$K" ] || { echo "usage: $0 K"; exit 2; }
cd ~/doc/modem/jz08-aurora; A=logs/b10/b10b3/$K-actions.txt; act() { echo "$(date -u +%H:%M:%S.%3N) $*" | tee -a $A; }
rm -f logs/b10/b10b3/pull.stop
act "mon-start $K: waiting for lk1st fastboot (RESET-held reboot), then for the new boot"; until fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL>; do sleep 1; done; act "fastboot seen"; until ! fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL>; do sleep 1; done; act "fastboot gone (booting)"
until ping -c1 -W1 172.16.42.1 >/dev/null 2>&1; do sleep 0.5; done; act "NCM up"
i=0; until { sleep 1; printf 'nc -l -p 9981 > /tmp/b10b3-mon.sh &\r\n'; sleep 1; } | ncat -w 4 172.16.42.1 23 >/dev/null 2>&1; do i=$((i+1)); [ $i -ge 60 ] && { act "ABORT: no telnet"; exit 1; }; sleep 1; done
sleep 1; ncat --send-only 172.16.42.1 9981 < b10/b10b3/b10b3-mon.sh; sleep 1
sh b10/b10b3/b10b3-cmd.sh 3 'md5sum /tmp/b10b3-mon.sh; rm -f /tmp/b10b3-mon.stop; VMAX=4230000 EVDD=08 EVDD2=02 setsid sh /tmp/b10b3-mon.sh 30 > /dev/null 2>&1 < /dev/null & sleep 1; dmesg | grep -E "safety timer|supervisor"; cut -d" " -f1 /proc/uptime' | tee -a $A
act "local md5 $(md5sum < b10/b10b3/b10b3-mon.sh)"
setsid nohup sh b10/b10b3/b10b3-pull.sh $K > /dev/null 2>&1 < /dev/null &
act "monitor started (30 s), pull started -> logs/b10/b10b3/$K-mon.txt"

60
b10/b10b3/b10b3t-boot.sh Normal file
View file

@ -0,0 +1,60 @@
#!/bin/sh
# 480s side, B10B-3T (TEST image) boot K (RAM only). RESET-held power-on -> lk1st fastboot -> `fastboot boot` B10B-3 RAM image. Reads only over telnet.
# MODE=cold: normal power-on (no RESET, no fastboot) -> lk2nd extlinux from eMMC cache. Script only observes + reads over telnet;
# nothing is written to eMMC. Visual display checks need the operator. Adds display/fbcon/getty/console checks to the B8F snapshot.
K=$1; MODE=ram; [ -n "$K" ] || { echo "usage: $0 K"; exit 2; }
cd ~/doc/modem/jz08-aurora; O=logs/b10/b10b3/t$K; mkdir -p $O; IMG=b10/b10b3/out-t/aurora-b10b3t.img
A=$O/host-actions.txt; act() { echo "$(date -u +%H:%M:%S.%3N) $*" | tee -a $A; }
tn() { { sleep 1; sed "s/\$/\r/" "$1"; sleep $2; } | ncat 172.16.42.1 23 | tr -d "\000\r"; }
OLD=$(ps -eo pid,cmd | grep "[u]artlog.py /dev/ttyUSB0" | awk '{print $1}'); [ -n "$OLD" ] && kill $OLD; sleep 1
U=logs/uart/b10b3t-$MODE$K-$(date +%Y%m%d-%H%M%S); setsid nohup python3 tools/uartlog.py /dev/ttyUSB0 $U > $U.stderr 2>&1 < /dev/null &
if [ $MODE = ram ]; then
echo "dfe2fae69f0c64be85bc972e2e8502e9bef262fa5dbb5e77b3c76ed183a89f1f $IMG" | sha256sum -c || exit 1
act "B10B3 $MODE$K: waiting for fastboot <EMMC_SERIAL> (power off >= 90 s, then RESET held + battery -> USB)"
if fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL>; then act "already in fastboot - wait for power-off"; until ! fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL>; do sleep 1; done; fi
i=0; until fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL>; do i=$((i+1)); [ $i -ge 1800 ] && { act "ABORT: no fastboot"; exit 1; }; sleep 2; done
act "fastboot present"; { fastboot boot $IMG 2>&1; echo "rc=$?"; } | tee -a $A
else
act "B10B3 $MODE$K: waiting for the board to go away (power off >= 90 s), then normal power-on WITHOUT RESET"
until ! ping -c1 -W1 172.16.42.1 >/dev/null 2>&1; do sleep 1; done; act "board unreachable (powered off)"
until ping -c1 -W1 172.16.42.1 >/dev/null 2>&1; do fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL> && { act "ABORT: board is in fastboot - RESET was held?"; exit 1; }; sleep 1; done
fi
i=0; until ping -c1 -W1 172.16.42.1 >/dev/null 2>&1; do i=$((i+1)); [ $i -ge 180 ] && { act "ABORT: NCM not up"; cp $U.log $O/uart.log; exit 1; }; sleep 1; done; act "NCM ping ok"
R=$(grep -a "rtc-pm8xxx.*setting system clock" $U.log | tail -1 | sed -n 's/.*(\([0-9]*\)).*/\1/p'); C=B; [ -n "$R" ] && [ "$R" -lt 40 ] && C=A; act "RTC at boot ${R:-?} s -> class $C"
printf 'cat /proc/device-tree/model; echo; uname -r; grep -E "START OK|FAIL in|rollback" /run/aurora-modem/lifecycle.log | tail -1\n' > $O/.w
i=0; until tn $O/.w 3 | grep -qE "^\[[0-9.]+\] .*(=== START OK|FAIL in|rollback)"; do i=$((i+1)); [ $i -ge 80 ] && { act "no START OK/FAIL after ~12 min"; break; }; sleep 6; done
tn $O/.w 3 | grep -aE "Aurora|aurora-b8|START OK|FAIL" | tee -a $A
printf 'grep -E "AP ENABLED|FAIL" /run/aurora-wifi/wifi.log | tail -1\n' > $O/.a
i=0; until tn $O/.a 3 | grep -qE "^\[[0-9.]+\] (=== AP ENABLED|FAIL)"; do i=$((i+1)); [ $i -ge 20 ] && { act "no AP ENABLED/FAIL after ~3 min"; break; }; sleep 6; done
act "wifi: $(tn $O/.a 3 | grep -E '^\[[0-9.]+\] (=== AP ENABLED|FAIL)' | tail -1)"
printf 'grep -E "SNTP (check|STEP|: )" /run/aurora-modem/lifecycle.log | tail -2\n' > $O/.s
i=0; until tn $O/.s 3 | grep -qE "^\[[0-9.]+\] SNTP"; do i=$((i+1)); [ $i -ge 15 ] && break; sleep 4; done; act "sntp: $(tn $O/.s 3 | grep -E '^\[[0-9.]+\] SNTP' | tail -2 | tr '\n' ' ')"
cat > $O/.c <<'C'
echo SNAP-BEGIN; cat /proc/uptime; date -u; cat /proc/device-tree/model; echo; uname -a; cat /proc/cmdline
echo ---time; cat /run/aurora-modem/time-set; grep -E "TIME|SNTP" /run/aurora-modem/lifecycle.log | tail -4
echo ---modem; /etc/init.d/aurora-modem status
echo ---wifi; /etc/init.d/aurora-wifi status; echo ---wifilog; cat /run/aurora-wifi/wifi.log; cat /run/aurora-wifi/service.log; echo ---hostapdlog; cat /run/aurora-wifi/hostapd.log
for r in /sys/class/remoteproc/*; do echo "RP $(cat $r/name)=$(cat $r/state)"; done; iw dev
echo ---dmesg-wifi; dmesg | grep -iE "wcn36xx|wcnss|a204000|cfg80211|aurora-wifi|crash|watchdog"
echo ---ping; ping -c4 -W3 -I wwan0 77.88.8.8 | tail -2
echo ---display; /etc/init.d/aurora-display status; cat /run/aurora-display/display.log; cat /run/aurora-display/service.log
echo ---consoles; cat /sys/class/tty/console/active; for v in /sys/class/vtconsole/vtcon*; do echo "$v $(cat $v/bind) $(cat $v/name)"; done; ls -l /proc/[0-9]*/fd/0 2>/dev/null | grep -E "ttyMSM0|tty1|console" | sed "s/.* \/proc/\/proc/"
echo ---getty; hostname; ps | grep -E "[g]etty|[c]ttyhack| sh$"
echo ---fb; ls -l /dev/dri/card0 /dev/fb0; for f in name bits_per_pixel virtual_size stride; do echo "fb0 $f=$(cat /sys/class/graphics/fb0/$f)"; done; cat /sys/class/drm/card0-SPI-1/enabled /sys/class/drm/card0-SPI-1/dpms
echo ---regs; for r in /sys/class/regulator/regulator.*; do n=$(cat $r/name); case $n in l6|l17) echo "$n $(cat $r/state) $(cat $r/microvolts) users=$(cat $r/num_users)";; esac; done
echo ---bl; for f in bl_power brightness actual_brightness; do echo "bl $f=$(cat /sys/class/backlight/backlight/$f)"; done
echo ---dmesg-display; dmesg | grep -iE "drm|panel|mipi|spi_qup|78b8000|fbcon|Console: |frame buffer|backlight|aurora-display|l17"
echo ---display-errors; dmesg | grep -iE "drm|panel|mipi|spi0|fbcon|backlight|aurora-display" | grep -ciE "err|fail|timeout|warn"
echo ---iio; for d in /sys/bus/iio/devices/iio:device*; do echo "$d name=$(cat $d/name)"; ls $d | tr '\n' ' '; echo; done
for f in /sys/bus/iio/devices/iio:device*/in_*; do case $f in *_raw|*_input|*_scale|*_offset) echo "$f=$(cat $f 2>&1)";; esac; done
echo ---psy; ls -l /sys/class/power_supply/; for p in /sys/class/power_supply/*; do echo "-- $p"; cat $p/uevent; ls $p; done
echo ---dmesg-bms; dmesg | grep -iE "bms|battery|power_supply|lbc|charger|extcon|ci_hdrc|4000|1000"
echo ---lbc-state; grep -q " /sys/kernel/debug " /proc/mounts || mount -t debugfs debugfs /sys/kernel/debug; cat /sys/kernel/debug/pm8916_lbc/state; dmesg | grep -E "safety timer|supervisor|pm8916-lbc|lbc"
echo ---thermal; for t in /sys/class/thermal/thermal_zone*; do echo "$t $(cat $t/type) $(cat $t/temp)"; done
echo ---dmesg-adc; dmesg | grep -iE "vadc|iio|temp-alarm|qpnp|spmi-temp|pm8916-thermal|thermal"
echo ---emmc; awk "{print \"w=\"\$5\" s=\"\$7}" /sys/block/mmcblk0/stat
echo SNAP-END
C
tn $O/.c 25 > $O/snapshot.txt; act "snapshot: $(grep -c SNAP-END $O/snapshot.txt) end markers; $(grep -E '^RP a204' $O/snapshot.txt)"
printf 'dmesg > /tmp/dm.txt; nc -l -p 9881 < /tmp/dm.txt &\n' > $O/.d; tn $O/.d 3 >/dev/null; sleep 1; ncat --recv-only 172.16.42.1 9881 > $O/dmesg.full
cp $U.log $O/uart.log; act "B10B3 $MODE$K END - operator visual check next"

View file

@ -0,0 +1,18 @@
#!/bin/sh
# Pre-t1 discharge (board on battery): N x `yes`, stop when VADC VBAT <= VMIN uV (3 samples in a row), PMIC > 55 C, or after MAX s. Writes /tmp only.
N=${1:-4}; MAX=${2:-5400}; VMIN=${3:-3880000}; L=/tmp/b10b3t-dis.log; low=0; D=/sys/bus/iio/devices/iio:device0
trap '' HUP
C=/sys/class/power_supply/pm8916-lbc-chgr/online; echo "WAIT-USB-OFF up=$(cut -d" " -f1 /proc/uptime)" >> $L; while [ "$(cat $C)" != 0 ]; do sleep 2; done; echo "USB-OFF up=$(cut -d" " -f1 /proc/uptime)" >> $L
t0=$(cut -d. -f1 /proc/uptime); P=""
for i in $(seq 1 $N); do yes > /dev/null & P="$P $!"; done
echo "LOAD-START up=$t0 n=$N pids=$P" >> $L
why=timeout
while :; do
t=$(cut -d. -f1 /proc/uptime); vb=$(cat $D/in_voltage6_input); pt=$(cat $D/in_temp8_input)
echo "L up=$t vbat6=$vb pmt=$pt" >> $L
[ "$pt" -gt 55000 ] && { why=pmic-55C; break; }
if [ "$vb" -le $VMIN ]; then low=$((low + 1)); else low=0; fi; [ $low -ge 3 ] && { why=vbat-reached-VMIN; break; }
[ $((t - t0)) -ge $MAX ] && break
sleep 10
done
kill $P; echo "LOAD-STOP up=$(cut -d' ' -f1 /proc/uptime) reason=$why" >> $L

View file

@ -0,0 +1,14 @@
#!/bin/sh
# 480s side, t1 diagnostic (B10B-3T v2 image, FAST_CHG_ON check): wait for the NEW boot's NCM, then at once push b10b3-mon.sh to the board and start it (5 s, EVDD=00/00, VMAX 4.15 V),
# then start the 30-s pull into logs/b10/b10b3/<K>-mon.txt. Board side reads only (writes /tmp only). usage: b10b3b-mon-start.sh K
K=$1; [ -n "$K" ] || { echo "usage: $0 K"; exit 2; }
cd ~/doc/modem/jz08-aurora; A=logs/b10/b10b3/$K-actions.txt; act() { echo "$(date -u +%H:%M:%S.%3N) $*" | tee -a $A; }
rm -f logs/b10/b10b3/pull.stop
act "mon-start $K: waiting for the board to go away (warm reboot)"; until ! ping -c1 -W1 172.16.42.1 >/dev/null 2>&1; do sleep 0.5; done; act "board gone"
until ping -c1 -W1 172.16.42.1 >/dev/null 2>&1; do sleep 0.5; done; act "NCM up"
i=0; until { sleep 1; printf 'nc -l -p 9957 > /tmp/b10b3-mon.sh &\r\n'; sleep 1; } | ncat -w 4 172.16.42.1 23 >/dev/null 2>&1; do i=$((i+1)); [ $i -ge 60 ] && { act "ABORT: no telnet"; exit 1; }; sleep 1; done
sleep 1; ncat --send-only 172.16.42.1 9957 < b10/b10b3/b10b3-mon.sh; sleep 1
sh b10/b10b3/b10b3-cmd.sh 3 'md5sum /tmp/b10b3-mon.sh; rm -f /tmp/b10b3-mon.stop; VMAX=4150000 EVDD=00 EVDD2=00 setsid sh /tmp/b10b3-mon.sh 5 > /dev/null 2>&1 < /dev/null & sleep 1; dmesg | grep -E "safety timer|supervisor"; cut -d" " -f1 /proc/uptime' | tee -a $A
act "local md5 $(md5sum < b10/b10b3/b10b3-mon.sh)"
setsid nohup sh b10/b10b3/b10b3-pull.sh $K > /dev/null 2>&1 < /dev/null &
act "monitor started (5 s), pull started -> logs/b10/b10b3/$K-mon.txt"

14
b10/b10b3/b10b4-act.sh Executable file
View file

@ -0,0 +1,14 @@
#!/bin/sh
# B10B-4 board side: apply ONE hook command (or "none") and log fast: 1 s x 12, then 5 s x 10 (≈ 62 s). Reads only, except the single hook write.
# usage: b10b4-act.sh TAG "susp 1"|"vdd 0"|"ibat 0"|none -> /tmp/b4-TAG.log
T=$1; CMD=$2; L=/tmp/b4-$T.log; R=/sys/kernel/debug/regmap/0-00/registers; D=/sys/bus/iio/devices/iio:device0; H=/sys/kernel/debug/pm8916_lbc/b10b4
grep -q " /sys/kernel/debug " /proc/mounts || mount -t debugfs debugfs /sys/kernel/debug
rd() { dd if=$R bs=9 skip=$(($1)) count=1 2>/dev/null | cut -d' ' -f2; }
s() { echo "S $1 up=$(cut -d' ' -f1 /proc/uptime) vbat=$(cat $D/in_voltage6_input) vph=$(cat $D/in_voltage7_input) usbin=$(cat $D/in_voltage0_input) pmt=$(cat $D/in_temp8_input) chgst=$(rd 0x1009) crt=$(rd 0x1010) urt=$(rd 0x1310) path=$(rd 0x1308) susp=$(rd 0x1347) vdd=$(rd 0x1040) ibat=$(rd 0x1044) ctrl=$(rd 0x1049) failed=$(rd 0x104a) st=$(head -1 /sys/kernel/debug/pm8916_lbc/state | cut -d' ' -f2)" >> $L; }
trap '' HUP
echo "BEGIN $T cmd='$CMD' $(date -u +%T)" >> $L
s pre; s pre
if [ "$CMD" != none ]; then echo "$CMD" > $H; echo "WRITE rc=$? '$CMD' up=$(cut -d' ' -f1 /proc/uptime)" >> $L; dmesg | grep "B10B-4 TEST hook" | tail -1 >> $L; fi
i=0; while [ $i -lt 12 ]; do s "+${i}s"; sleep 1; i=$((i+1)); done
i=0; while [ $i -lt 10 ]; do sleep 5; s "+$((12+5*i+5))s"; i=$((i+1)); done
echo "END $T $(date -u +%T)" >> $L

60
b10/b10b3/b10b4-boot.sh Executable file
View file

@ -0,0 +1,60 @@
#!/bin/sh
# 480s side, B10B-4 actuator-audit TEST image (TEST-ONLY kernel, debugfs pm8916_lbc/b10b4) boot K (RAM only). RESET-held power-on -> lk1st fastboot -> `fastboot boot` B10B-3 RAM image. Reads only over telnet.
# MODE=cold: normal power-on (no RESET, no fastboot) -> lk2nd extlinux from eMMC cache. Script only observes + reads over telnet;
# nothing is written to eMMC. Visual display checks need the operator. Adds display/fbcon/getty/console checks to the B8F snapshot.
K=$1; MODE=ram; [ -n "$K" ] || { echo "usage: $0 K"; exit 2; }
cd ~/doc/modem/jz08-aurora; O=logs/b10/b10b3/b4r$K; mkdir -p $O; IMG=b10/b10b3/out-b4/aurora-b10b4.img
A=$O/host-actions.txt; act() { echo "$(date -u +%H:%M:%S.%3N) $*" | tee -a $A; }
tn() { { sleep 1; sed "s/\$/\r/" "$1"; sleep $2; } | ncat 172.16.42.1 23 | tr -d "\000\r"; }
OLD=$(ps -eo pid,cmd | grep "[u]artlog.py /dev/ttyUSB0" | awk '{print $1}'); [ -n "$OLD" ] && kill $OLD; sleep 1
U=logs/uart/b10b4-$MODE$K-$(date +%Y%m%d-%H%M%S); setsid nohup python3 tools/uartlog.py /dev/ttyUSB0 $U > $U.stderr 2>&1 < /dev/null &
if [ $MODE = ram ]; then
echo "eeff682053ac49abfa3952a2d3957dcbf5cd384280f35647ec40eb83835dc38b $IMG" | sha256sum -c || exit 1
act "B10B4 $MODE$K: waiting for fastboot <EMMC_SERIAL> (power off >= 90 s, then RESET held + battery -> USB)"
if fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL>; then act "already in fastboot - wait for power-off"; until ! fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL>; do sleep 1; done; fi
i=0; until fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL>; do i=$((i+1)); [ $i -ge 1800 ] && { act "ABORT: no fastboot"; exit 1; }; sleep 2; done
act "fastboot present"; { fastboot boot $IMG 2>&1; echo "rc=$?"; } | tee -a $A
else
act "B10B4 $MODE$K: waiting for the board to go away (power off >= 90 s), then normal power-on WITHOUT RESET"
until ! ping -c1 -W1 172.16.42.1 >/dev/null 2>&1; do sleep 1; done; act "board unreachable (powered off)"
until ping -c1 -W1 172.16.42.1 >/dev/null 2>&1; do fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL> && { act "ABORT: board is in fastboot - RESET was held?"; exit 1; }; sleep 1; done
fi
i=0; until ping -c1 -W1 172.16.42.1 >/dev/null 2>&1; do i=$((i+1)); [ $i -ge 180 ] && { act "ABORT: NCM not up"; cp $U.log $O/uart.log; exit 1; }; sleep 1; done; act "NCM ping ok"
R=$(grep -a "rtc-pm8xxx.*setting system clock" $U.log | tail -1 | sed -n 's/.*(\([0-9]*\)).*/\1/p'); C=B; [ -n "$R" ] && [ "$R" -lt 40 ] && C=A; act "RTC at boot ${R:-?} s -> class $C"
printf 'cat /proc/device-tree/model; echo; uname -r; grep -E "START OK|FAIL in|rollback" /run/aurora-modem/lifecycle.log | tail -1\n' > $O/.w
i=0; until tn $O/.w 3 | grep -qE "^\[[0-9.]+\] .*(=== START OK|FAIL in|rollback)"; do i=$((i+1)); [ $i -ge 80 ] && { act "no START OK/FAIL after ~12 min"; break; }; sleep 6; done
tn $O/.w 3 | grep -aE "Aurora|aurora-b8|START OK|FAIL" | tee -a $A
printf 'grep -E "AP ENABLED|FAIL" /run/aurora-wifi/wifi.log | tail -1\n' > $O/.a
i=0; until tn $O/.a 3 | grep -qE "^\[[0-9.]+\] (=== AP ENABLED|FAIL)"; do i=$((i+1)); [ $i -ge 20 ] && { act "no AP ENABLED/FAIL after ~3 min"; break; }; sleep 6; done
act "wifi: $(tn $O/.a 3 | grep -E '^\[[0-9.]+\] (=== AP ENABLED|FAIL)' | tail -1)"
printf 'grep -E "SNTP (check|STEP|: )" /run/aurora-modem/lifecycle.log | tail -2\n' > $O/.s
i=0; until tn $O/.s 3 | grep -qE "^\[[0-9.]+\] SNTP"; do i=$((i+1)); [ $i -ge 15 ] && break; sleep 4; done; act "sntp: $(tn $O/.s 3 | grep -E '^\[[0-9.]+\] SNTP' | tail -2 | tr '\n' ' ')"
cat > $O/.c <<'C'
echo SNAP-BEGIN; cat /proc/uptime; date -u; cat /proc/device-tree/model; echo; uname -a; cat /proc/cmdline
echo ---time; cat /run/aurora-modem/time-set; grep -E "TIME|SNTP" /run/aurora-modem/lifecycle.log | tail -4
echo ---modem; /etc/init.d/aurora-modem status
echo ---wifi; /etc/init.d/aurora-wifi status; echo ---wifilog; cat /run/aurora-wifi/wifi.log; cat /run/aurora-wifi/service.log; echo ---hostapdlog; cat /run/aurora-wifi/hostapd.log
for r in /sys/class/remoteproc/*; do echo "RP $(cat $r/name)=$(cat $r/state)"; done; iw dev
echo ---dmesg-wifi; dmesg | grep -iE "wcn36xx|wcnss|a204000|cfg80211|aurora-wifi|crash|watchdog"
echo ---ping; ping -c4 -W3 -I wwan0 77.88.8.8 | tail -2
echo ---display; /etc/init.d/aurora-display status; cat /run/aurora-display/display.log; cat /run/aurora-display/service.log
echo ---consoles; cat /sys/class/tty/console/active; for v in /sys/class/vtconsole/vtcon*; do echo "$v $(cat $v/bind) $(cat $v/name)"; done; ls -l /proc/[0-9]*/fd/0 2>/dev/null | grep -E "ttyMSM0|tty1|console" | sed "s/.* \/proc/\/proc/"
echo ---getty; hostname; ps | grep -E "[g]etty|[c]ttyhack| sh$"
echo ---fb; ls -l /dev/dri/card0 /dev/fb0; for f in name bits_per_pixel virtual_size stride; do echo "fb0 $f=$(cat /sys/class/graphics/fb0/$f)"; done; cat /sys/class/drm/card0-SPI-1/enabled /sys/class/drm/card0-SPI-1/dpms
echo ---regs; for r in /sys/class/regulator/regulator.*; do n=$(cat $r/name); case $n in l6|l17) echo "$n $(cat $r/state) $(cat $r/microvolts) users=$(cat $r/num_users)";; esac; done
echo ---bl; for f in bl_power brightness actual_brightness; do echo "bl $f=$(cat /sys/class/backlight/backlight/$f)"; done
echo ---dmesg-display; dmesg | grep -iE "drm|panel|mipi|spi_qup|78b8000|fbcon|Console: |frame buffer|backlight|aurora-display|l17"
echo ---display-errors; dmesg | grep -iE "drm|panel|mipi|spi0|fbcon|backlight|aurora-display" | grep -ciE "err|fail|timeout|warn"
echo ---iio; for d in /sys/bus/iio/devices/iio:device*; do echo "$d name=$(cat $d/name)"; ls $d | tr '\n' ' '; echo; done
for f in /sys/bus/iio/devices/iio:device*/in_*; do case $f in *_raw|*_input|*_scale|*_offset) echo "$f=$(cat $f 2>&1)";; esac; done
echo ---psy; ls -l /sys/class/power_supply/; for p in /sys/class/power_supply/*; do echo "-- $p"; cat $p/uevent; ls $p; done
echo ---dmesg-bms; dmesg | grep -iE "bms|battery|power_supply|lbc|charger|extcon|ci_hdrc|4000|1000"
echo ---lbc-state; grep -q " /sys/kernel/debug " /proc/mounts || mount -t debugfs debugfs /sys/kernel/debug; cat /sys/kernel/debug/pm8916_lbc/state; dmesg | grep -E "safety timer|supervisor|pm8916-lbc|lbc"
echo ---thermal; for t in /sys/class/thermal/thermal_zone*; do echo "$t $(cat $t/type) $(cat $t/temp)"; done
echo ---dmesg-adc; dmesg | grep -iE "vadc|iio|temp-alarm|qpnp|spmi-temp|pm8916-thermal|thermal"
echo ---emmc; awk "{print \"w=\"\$5\" s=\"\$7}" /sys/block/mmcblk0/stat
echo SNAP-END
C
tn $O/.c 25 > $O/snapshot.txt; act "snapshot: $(grep -c SNAP-END $O/snapshot.txt) end markers; $(grep -E '^RP a204' $O/snapshot.txt)"
printf 'dmesg > /tmp/dm.txt; nc -l -p 9881 < /tmp/dm.txt &\n' > $O/.d; tn $O/.d 3 >/dev/null; sleep 1; ncat --recv-only 172.16.42.1 9881 > $O/dmesg.full
cp $U.log $O/uart.log; act "B10B4 $MODE$K END - operator visual check next"

14
b10/b10b3/b10b4-mon-start.sh Executable file
View file

@ -0,0 +1,14 @@
#!/bin/sh
# 480s side, B10B-4 actuator audit: wait for the NEW boot's NCM, then at once push b10b3-mon.sh to the board and start it (5 s, EVDD=08/02, VMAX 4.23 V),
# then start the 30-s pull into logs/b10/b10b3/<K>-mon.txt. Board side reads only (writes /tmp only). usage: b10b3b-mon-start.sh K
K=$1; [ -n "$K" ] || { echo "usage: $0 K"; exit 2; }
cd ~/doc/modem/jz08-aurora; A=logs/b10/b10b3/$K-actions.txt; act() { echo "$(date -u +%H:%M:%S.%3N) $*" | tee -a $A; }
rm -f logs/b10/b10b3/pull.stop
act "mon-start $K: waiting for lk1st fastboot (RESET-held reboot), then for the new boot"; until fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL>; do sleep 1; done; act "fastboot seen"; until ! fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL>; do sleep 1; done; act "fastboot gone (booting)"
until ping -c1 -W1 172.16.42.1 >/dev/null 2>&1; do sleep 0.5; done; act "NCM up"
i=0; until { sleep 1; printf 'nc -l -p 9981 > /tmp/b10b3-mon.sh &\r\n'; sleep 1; } | ncat -w 4 172.16.42.1 23 >/dev/null 2>&1; do i=$((i+1)); [ $i -ge 60 ] && { act "ABORT: no telnet"; exit 1; }; sleep 1; done
sleep 1; ncat --send-only 172.16.42.1 9981 < b10/b10b3/b10b3-mon.sh; sleep 1
sh b10/b10b3/b10b3-cmd.sh 3 'md5sum /tmp/b10b3-mon.sh; rm -f /tmp/b10b3-mon.stop; VMAX=4230000 EVDD=08 EVDD2=02 setsid sh /tmp/b10b3-mon.sh 30 > /dev/null 2>&1 < /dev/null & sleep 1; dmesg | grep -E "safety timer|supervisor"; cut -d" " -f1 /proc/uptime' | tee -a $A
act "local md5 $(md5sum < b10/b10b3/b10b3-mon.sh)"
setsid nohup sh b10/b10b3/b10b3-pull.sh $K > /dev/null 2>&1 < /dev/null &
act "monitor started (30 s), pull started -> logs/b10/b10b3/$K-mon.txt"

14
b10/b10b3/b10b5-act.sh Executable file
View file

@ -0,0 +1,14 @@
#!/bin/sh
# B10B-5 board side: arm ONE TEST OVP FAULT injection ("ovp") or "none" and log fast: 1 s x 12, then 5 s x 10 (≈ 62 s). Reads only, except the single hook write.
# usage: b10b4-act.sh TAG "susp 1"|"vdd 0"|"ibat 0"|none -> /tmp/b4-TAG.log
T=$1; CMD=$2; L=/tmp/b5-$T.log; R=/sys/kernel/debug/regmap/0-00/registers; D=/sys/bus/iio/devices/iio:device0; H=/sys/kernel/debug/pm8916_lbc/b10b5_fault
grep -q " /sys/kernel/debug " /proc/mounts || mount -t debugfs debugfs /sys/kernel/debug
rd() { dd if=$R bs=9 skip=$(($1)) count=1 2>/dev/null | cut -d' ' -f2; }
s() { echo "S $1 up=$(cut -d' ' -f1 /proc/uptime) vbat=$(cat $D/in_voltage6_input) vph=$(cat $D/in_voltage7_input) usbin=$(cat $D/in_voltage0_input) pmt=$(cat $D/in_temp8_input) chgst=$(rd 0x1009) crt=$(rd 0x1010) urt=$(rd 0x1310) path=$(rd 0x1308) susp=$(rd 0x1347) vdd=$(rd 0x1040) ibat=$(rd 0x1044) ctrl=$(rd 0x1049) failed=$(rd 0x104a) st=$(head -1 /sys/kernel/debug/pm8916_lbc/state | cut -d' ' -f2)" >> $L; }
trap '' HUP
echo "BEGIN $T cmd='$CMD' $(date -u +%T)" >> $L
s pre; s pre
if [ "$CMD" != none ]; then echo "$CMD" > $H; echo "WRITE rc=$? '$CMD' up=$(cut -d' ' -f1 /proc/uptime)" >> $L; sleep 1; dmesg | grep -E "FAULT safe clamp|B10B-5 TEST|-> FAULT" | tail -3 >> $L; fi
i=0; while [ $i -lt 12 ]; do s "+${i}s"; sleep 1; i=$((i+1)); done
i=0; while [ $i -lt 22 ]; do sleep 5; s "+$((12+5*i+5))s"; i=$((i+1)); done
echo "END $T $(date -u +%T)" >> $L

60
b10/b10b3/b10b5p-boot.sh Executable file
View file

@ -0,0 +1,60 @@
#!/bin/sh
# 480s side, B10B-5 PRODUCTION v4 RAM smoke test (no test hooks) boot K (RAM only). RESET-held power-on -> lk1st fastboot -> `fastboot boot` B10B-3 RAM image. Reads only over telnet.
# MODE=cold: normal power-on (no RESET, no fastboot) -> lk2nd extlinux from eMMC cache. Script only observes + reads over telnet;
# nothing is written to eMMC. Visual display checks need the operator. Adds display/fbcon/getty/console checks to the B8F snapshot.
K=$1; MODE=ram; [ -n "$K" ] || { echo "usage: $0 K"; exit 2; }
cd ~/doc/modem/jz08-aurora; O=logs/b10/b10b3/b5p$K; mkdir -p $O; IMG=b10/b10b3/out-v4/aurora-b10b5.img
A=$O/host-actions.txt; act() { echo "$(date -u +%H:%M:%S.%3N) $*" | tee -a $A; }
tn() { { sleep 1; sed "s/\$/\r/" "$1"; sleep $2; } | ncat 172.16.42.1 23 | tr -d "\000\r"; }
OLD=$(ps -eo pid,cmd | grep "[u]artlog.py /dev/ttyUSB0" | awk '{print $1}'); [ -n "$OLD" ] && kill $OLD; sleep 1
U=logs/uart/b10b5p-$MODE$K-$(date +%Y%m%d-%H%M%S); setsid nohup python3 tools/uartlog.py /dev/ttyUSB0 $U > $U.stderr 2>&1 < /dev/null &
if [ $MODE = ram ]; then
echo "386502d3ca68b1c4dfb4bbf354f3abc48cfab497143a39f6272b79a3899c1e9b $IMG" | sha256sum -c || exit 1
act "B10B5P $MODE$K: waiting for fastboot <EMMC_SERIAL> (power off >= 90 s, then RESET held + battery -> USB)"
if fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL>; then act "already in fastboot - wait for power-off"; until ! fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL>; do sleep 1; done; fi
i=0; until fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL>; do i=$((i+1)); [ $i -ge 1800 ] && { act "ABORT: no fastboot"; exit 1; }; sleep 2; done
act "fastboot present"; { fastboot boot $IMG 2>&1; echo "rc=$?"; } | tee -a $A
else
act "B10B5P $MODE$K: waiting for the board to go away (power off >= 90 s), then normal power-on WITHOUT RESET"
until ! ping -c1 -W1 172.16.42.1 >/dev/null 2>&1; do sleep 1; done; act "board unreachable (powered off)"
until ping -c1 -W1 172.16.42.1 >/dev/null 2>&1; do fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL> && { act "ABORT: board is in fastboot - RESET was held?"; exit 1; }; sleep 1; done
fi
i=0; until ping -c1 -W1 172.16.42.1 >/dev/null 2>&1; do i=$((i+1)); [ $i -ge 180 ] && { act "ABORT: NCM not up"; cp $U.log $O/uart.log; exit 1; }; sleep 1; done; act "NCM ping ok"
R=$(grep -a "rtc-pm8xxx.*setting system clock" $U.log | tail -1 | sed -n 's/.*(\([0-9]*\)).*/\1/p'); C=B; [ -n "$R" ] && [ "$R" -lt 40 ] && C=A; act "RTC at boot ${R:-?} s -> class $C"
printf 'cat /proc/device-tree/model; echo; uname -r; grep -E "START OK|FAIL in|rollback" /run/aurora-modem/lifecycle.log | tail -1\n' > $O/.w
i=0; until tn $O/.w 3 | grep -qE "^\[[0-9.]+\] .*(=== START OK|FAIL in|rollback)"; do i=$((i+1)); [ $i -ge 80 ] && { act "no START OK/FAIL after ~12 min"; break; }; sleep 6; done
tn $O/.w 3 | grep -aE "Aurora|aurora-b8|START OK|FAIL" | tee -a $A
printf 'grep -E "AP ENABLED|FAIL" /run/aurora-wifi/wifi.log | tail -1\n' > $O/.a
i=0; until tn $O/.a 3 | grep -qE "^\[[0-9.]+\] (=== AP ENABLED|FAIL)"; do i=$((i+1)); [ $i -ge 20 ] && { act "no AP ENABLED/FAIL after ~3 min"; break; }; sleep 6; done
act "wifi: $(tn $O/.a 3 | grep -E '^\[[0-9.]+\] (=== AP ENABLED|FAIL)' | tail -1)"
printf 'grep -E "SNTP (check|STEP|: )" /run/aurora-modem/lifecycle.log | tail -2\n' > $O/.s
i=0; until tn $O/.s 3 | grep -qE "^\[[0-9.]+\] SNTP"; do i=$((i+1)); [ $i -ge 15 ] && break; sleep 4; done; act "sntp: $(tn $O/.s 3 | grep -E '^\[[0-9.]+\] SNTP' | tail -2 | tr '\n' ' ')"
cat > $O/.c <<'C'
echo SNAP-BEGIN; cat /proc/uptime; date -u; cat /proc/device-tree/model; echo; uname -a; cat /proc/cmdline
echo ---time; cat /run/aurora-modem/time-set; grep -E "TIME|SNTP" /run/aurora-modem/lifecycle.log | tail -4
echo ---modem; /etc/init.d/aurora-modem status
echo ---wifi; /etc/init.d/aurora-wifi status; echo ---wifilog; cat /run/aurora-wifi/wifi.log; cat /run/aurora-wifi/service.log; echo ---hostapdlog; cat /run/aurora-wifi/hostapd.log
for r in /sys/class/remoteproc/*; do echo "RP $(cat $r/name)=$(cat $r/state)"; done; iw dev
echo ---dmesg-wifi; dmesg | grep -iE "wcn36xx|wcnss|a204000|cfg80211|aurora-wifi|crash|watchdog"
echo ---ping; ping -c4 -W3 -I wwan0 77.88.8.8 | tail -2
echo ---display; /etc/init.d/aurora-display status; cat /run/aurora-display/display.log; cat /run/aurora-display/service.log
echo ---consoles; cat /sys/class/tty/console/active; for v in /sys/class/vtconsole/vtcon*; do echo "$v $(cat $v/bind) $(cat $v/name)"; done; ls -l /proc/[0-9]*/fd/0 2>/dev/null | grep -E "ttyMSM0|tty1|console" | sed "s/.* \/proc/\/proc/"
echo ---getty; hostname; ps | grep -E "[g]etty|[c]ttyhack| sh$"
echo ---fb; ls -l /dev/dri/card0 /dev/fb0; for f in name bits_per_pixel virtual_size stride; do echo "fb0 $f=$(cat /sys/class/graphics/fb0/$f)"; done; cat /sys/class/drm/card0-SPI-1/enabled /sys/class/drm/card0-SPI-1/dpms
echo ---regs; for r in /sys/class/regulator/regulator.*; do n=$(cat $r/name); case $n in l6|l17) echo "$n $(cat $r/state) $(cat $r/microvolts) users=$(cat $r/num_users)";; esac; done
echo ---bl; for f in bl_power brightness actual_brightness; do echo "bl $f=$(cat /sys/class/backlight/backlight/$f)"; done
echo ---dmesg-display; dmesg | grep -iE "drm|panel|mipi|spi_qup|78b8000|fbcon|Console: |frame buffer|backlight|aurora-display|l17"
echo ---display-errors; dmesg | grep -iE "drm|panel|mipi|spi0|fbcon|backlight|aurora-display" | grep -ciE "err|fail|timeout|warn"
echo ---iio; for d in /sys/bus/iio/devices/iio:device*; do echo "$d name=$(cat $d/name)"; ls $d | tr '\n' ' '; echo; done
for f in /sys/bus/iio/devices/iio:device*/in_*; do case $f in *_raw|*_input|*_scale|*_offset) echo "$f=$(cat $f 2>&1)";; esac; done
echo ---psy; ls -l /sys/class/power_supply/; for p in /sys/class/power_supply/*; do echo "-- $p"; cat $p/uevent; ls $p; done
echo ---dmesg-bms; dmesg | grep -iE "bms|battery|power_supply|lbc|charger|extcon|ci_hdrc|4000|1000"
echo ---lbc-state; grep -q " /sys/kernel/debug " /proc/mounts || mount -t debugfs debugfs /sys/kernel/debug; cat /sys/kernel/debug/pm8916_lbc/state; dmesg | grep -E "safety timer|supervisor|pm8916-lbc|lbc"
echo ---thermal; for t in /sys/class/thermal/thermal_zone*; do echo "$t $(cat $t/type) $(cat $t/temp)"; done
echo ---dmesg-adc; dmesg | grep -iE "vadc|iio|temp-alarm|qpnp|spmi-temp|pm8916-thermal|thermal"
echo ---emmc; awk "{print \"w=\"\$5\" s=\"\$7}" /sys/block/mmcblk0/stat
echo SNAP-END
C
tn $O/.c 25 > $O/snapshot.txt; act "snapshot: $(grep -c SNAP-END $O/snapshot.txt) end markers; $(grep -E '^RP a204' $O/snapshot.txt)"
printf 'dmesg > /tmp/dm.txt; nc -l -p 9881 < /tmp/dm.txt &\n' > $O/.d; tn $O/.d 3 >/dev/null; sleep 1; ncat --recv-only 172.16.42.1 9881 > $O/dmesg.full
cp $U.log $O/uart.log; act "B10B5P $MODE$K END - operator visual check next"

60
b10/b10b3/b10b5t-boot.sh Executable file
View file

@ -0,0 +1,60 @@
#!/bin/sh
# 480s side, B10B-5 FAULT-clamp regression TEST image (TEST-ONLY kernel v4 + FAULT injection) boot K (RAM only). RESET-held power-on -> lk1st fastboot -> `fastboot boot` B10B-3 RAM image. Reads only over telnet.
# MODE=cold: normal power-on (no RESET, no fastboot) -> lk2nd extlinux from eMMC cache. Script only observes + reads over telnet;
# nothing is written to eMMC. Visual display checks need the operator. Adds display/fbcon/getty/console checks to the B8F snapshot.
K=$1; MODE=ram; [ -n "$K" ] || { echo "usage: $0 K"; exit 2; }
cd ~/doc/modem/jz08-aurora; O=logs/b10/b10b3/b5r$K; mkdir -p $O; IMG=b10/b10b3/out-b5t/aurora-b10b5t.img
A=$O/host-actions.txt; act() { echo "$(date -u +%H:%M:%S.%3N) $*" | tee -a $A; }
tn() { { sleep 1; sed "s/\$/\r/" "$1"; sleep $2; } | ncat 172.16.42.1 23 | tr -d "\000\r"; }
OLD=$(ps -eo pid,cmd | grep "[u]artlog.py /dev/ttyUSB0" | awk '{print $1}'); [ -n "$OLD" ] && kill $OLD; sleep 1
U=logs/uart/b10b5t-$MODE$K-$(date +%Y%m%d-%H%M%S); setsid nohup python3 tools/uartlog.py /dev/ttyUSB0 $U > $U.stderr 2>&1 < /dev/null &
if [ $MODE = ram ]; then
echo "ea37a67cb488b627bd52603cf7c686e34d1c7e5232bfdb13b891b7f89f2e1cae $IMG" | sha256sum -c || exit 1
act "B10B5T $MODE$K: waiting for fastboot <EMMC_SERIAL> (power off >= 90 s, then RESET held + battery -> USB)"
if fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL>; then act "already in fastboot - wait for power-off"; until ! fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL>; do sleep 1; done; fi
i=0; until fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL>; do i=$((i+1)); [ $i -ge 1800 ] && { act "ABORT: no fastboot"; exit 1; }; sleep 2; done
act "fastboot present"; { fastboot boot $IMG 2>&1; echo "rc=$?"; } | tee -a $A
else
act "B10B5T $MODE$K: waiting for the board to go away (power off >= 90 s), then normal power-on WITHOUT RESET"
until ! ping -c1 -W1 172.16.42.1 >/dev/null 2>&1; do sleep 1; done; act "board unreachable (powered off)"
until ping -c1 -W1 172.16.42.1 >/dev/null 2>&1; do fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL> && { act "ABORT: board is in fastboot - RESET was held?"; exit 1; }; sleep 1; done
fi
i=0; until ping -c1 -W1 172.16.42.1 >/dev/null 2>&1; do i=$((i+1)); [ $i -ge 180 ] && { act "ABORT: NCM not up"; cp $U.log $O/uart.log; exit 1; }; sleep 1; done; act "NCM ping ok"
R=$(grep -a "rtc-pm8xxx.*setting system clock" $U.log | tail -1 | sed -n 's/.*(\([0-9]*\)).*/\1/p'); C=B; [ -n "$R" ] && [ "$R" -lt 40 ] && C=A; act "RTC at boot ${R:-?} s -> class $C"
printf 'cat /proc/device-tree/model; echo; uname -r; grep -E "START OK|FAIL in|rollback" /run/aurora-modem/lifecycle.log | tail -1\n' > $O/.w
i=0; until tn $O/.w 3 | grep -qE "^\[[0-9.]+\] .*(=== START OK|FAIL in|rollback)"; do i=$((i+1)); [ $i -ge 80 ] && { act "no START OK/FAIL after ~12 min"; break; }; sleep 6; done
tn $O/.w 3 | grep -aE "Aurora|aurora-b8|START OK|FAIL" | tee -a $A
printf 'grep -E "AP ENABLED|FAIL" /run/aurora-wifi/wifi.log | tail -1\n' > $O/.a
i=0; until tn $O/.a 3 | grep -qE "^\[[0-9.]+\] (=== AP ENABLED|FAIL)"; do i=$((i+1)); [ $i -ge 20 ] && { act "no AP ENABLED/FAIL after ~3 min"; break; }; sleep 6; done
act "wifi: $(tn $O/.a 3 | grep -E '^\[[0-9.]+\] (=== AP ENABLED|FAIL)' | tail -1)"
printf 'grep -E "SNTP (check|STEP|: )" /run/aurora-modem/lifecycle.log | tail -2\n' > $O/.s
i=0; until tn $O/.s 3 | grep -qE "^\[[0-9.]+\] SNTP"; do i=$((i+1)); [ $i -ge 15 ] && break; sleep 4; done; act "sntp: $(tn $O/.s 3 | grep -E '^\[[0-9.]+\] SNTP' | tail -2 | tr '\n' ' ')"
cat > $O/.c <<'C'
echo SNAP-BEGIN; cat /proc/uptime; date -u; cat /proc/device-tree/model; echo; uname -a; cat /proc/cmdline
echo ---time; cat /run/aurora-modem/time-set; grep -E "TIME|SNTP" /run/aurora-modem/lifecycle.log | tail -4
echo ---modem; /etc/init.d/aurora-modem status
echo ---wifi; /etc/init.d/aurora-wifi status; echo ---wifilog; cat /run/aurora-wifi/wifi.log; cat /run/aurora-wifi/service.log; echo ---hostapdlog; cat /run/aurora-wifi/hostapd.log
for r in /sys/class/remoteproc/*; do echo "RP $(cat $r/name)=$(cat $r/state)"; done; iw dev
echo ---dmesg-wifi; dmesg | grep -iE "wcn36xx|wcnss|a204000|cfg80211|aurora-wifi|crash|watchdog"
echo ---ping; ping -c4 -W3 -I wwan0 77.88.8.8 | tail -2
echo ---display; /etc/init.d/aurora-display status; cat /run/aurora-display/display.log; cat /run/aurora-display/service.log
echo ---consoles; cat /sys/class/tty/console/active; for v in /sys/class/vtconsole/vtcon*; do echo "$v $(cat $v/bind) $(cat $v/name)"; done; ls -l /proc/[0-9]*/fd/0 2>/dev/null | grep -E "ttyMSM0|tty1|console" | sed "s/.* \/proc/\/proc/"
echo ---getty; hostname; ps | grep -E "[g]etty|[c]ttyhack| sh$"
echo ---fb; ls -l /dev/dri/card0 /dev/fb0; for f in name bits_per_pixel virtual_size stride; do echo "fb0 $f=$(cat /sys/class/graphics/fb0/$f)"; done; cat /sys/class/drm/card0-SPI-1/enabled /sys/class/drm/card0-SPI-1/dpms
echo ---regs; for r in /sys/class/regulator/regulator.*; do n=$(cat $r/name); case $n in l6|l17) echo "$n $(cat $r/state) $(cat $r/microvolts) users=$(cat $r/num_users)";; esac; done
echo ---bl; for f in bl_power brightness actual_brightness; do echo "bl $f=$(cat /sys/class/backlight/backlight/$f)"; done
echo ---dmesg-display; dmesg | grep -iE "drm|panel|mipi|spi_qup|78b8000|fbcon|Console: |frame buffer|backlight|aurora-display|l17"
echo ---display-errors; dmesg | grep -iE "drm|panel|mipi|spi0|fbcon|backlight|aurora-display" | grep -ciE "err|fail|timeout|warn"
echo ---iio; for d in /sys/bus/iio/devices/iio:device*; do echo "$d name=$(cat $d/name)"; ls $d | tr '\n' ' '; echo; done
for f in /sys/bus/iio/devices/iio:device*/in_*; do case $f in *_raw|*_input|*_scale|*_offset) echo "$f=$(cat $f 2>&1)";; esac; done
echo ---psy; ls -l /sys/class/power_supply/; for p in /sys/class/power_supply/*; do echo "-- $p"; cat $p/uevent; ls $p; done
echo ---dmesg-bms; dmesg | grep -iE "bms|battery|power_supply|lbc|charger|extcon|ci_hdrc|4000|1000"
echo ---lbc-state; grep -q " /sys/kernel/debug " /proc/mounts || mount -t debugfs debugfs /sys/kernel/debug; cat /sys/kernel/debug/pm8916_lbc/state; dmesg | grep -E "safety timer|supervisor|pm8916-lbc|lbc"
echo ---thermal; for t in /sys/class/thermal/thermal_zone*; do echo "$t $(cat $t/type) $(cat $t/temp)"; done
echo ---dmesg-adc; dmesg | grep -iE "vadc|iio|temp-alarm|qpnp|spmi-temp|pm8916-thermal|thermal"
echo ---emmc; awk "{print \"w=\"\$5\" s=\"\$7}" /sys/block/mmcblk0/stat
echo SNAP-END
C
tn $O/.c 25 > $O/snapshot.txt; act "snapshot: $(grep -c SNAP-END $O/snapshot.txt) end markers; $(grep -E '^RP a204' $O/snapshot.txt)"
printf 'dmesg > /tmp/dm.txt; nc -l -p 9881 < /tmp/dm.txt &\n' > $O/.d; tn $O/.d 3 >/dev/null; sleep 1; ncat --recv-only 172.16.42.1 9881 > $O/dmesg.full
cp $U.log $O/uart.log; act "B10B5T $MODE$K END - operator visual check next"

View file

@ -0,0 +1,17 @@
#!/bin/sh
# Pre-t1 discharge on B9C (no VADC; VBAT read by the operator's DMM): N x `yes`, stop on /tmp/b9c-dis.stop, CPU > 80 C, or after MAX s. Writes /tmp only.
N=${1:-4}; MAX=${2:-3600}; L=/tmp/b9c-dis.log
trap '' HUP
t0=$(cut -d. -f1 /proc/uptime); P=""
for i in $(seq 1 $N); do yes > /dev/null & P="$P $!"; done
echo "LOAD-START up=$t0 n=$N pids=$P" >> $L
why=timeout
while :; do
t=$(cut -d. -f1 /proc/uptime); ct=$(cat /sys/class/thermal/thermal_zone*/temp | sort -n | tail -1)
echo "L up=$t cpumax=$ct" >> $L
[ -e /tmp/b9c-dis.stop ] && { why=operator; break; }
[ "$ct" -gt 80000 ] && { why=cpu-80C; break; }
[ $((t - t0)) -ge $MAX ] && break
sleep 10
done
kill $P; echo "LOAD-STOP up=$(cut -d' ' -f1 /proc/uptime) reason=$why" >> $L

19
b10/b10b3/build-b10b3.sh Executable file
View file

@ -0,0 +1,19 @@
#!/bin/sh
# B10B-3 RAM test image (fastboot boot only - never flash; cache B9C / aboot untouched):
# kernel = out-b10b3 (b10b2 options; built from /home/q/aurora-kbuild/src-b10b3 = src + linux/patches/b10b3-lbc-supervisor-v3.patch).
# DTB = linux/dts/msm8916-jz08-aurora-b10b3.dtb (production v3 values: 4.20 V / HOLD 4.05 V / full-min 4.15 V / CV 60 min / 450 mA / 512 min)
# initramfs + cmdline = exact B9C (b9/b9c/out). out/ contains the B8F initramfs (Wi-Fi PSK): never publish.
set -e; cd "$(dirname "$0")"; O=out; KB=/home/q/aurora-kbuild/out-b10b3; L=../../linux; B9C=../../b9/b9c/out
mkdir -p $O
echo "7ca9cc794a3b85d3b7240f6311ad03bee9e1a4a59aae2ed9438318e853f7c3dc $L/dts/msm8916-jz08-aurora-b9b.dtb" | sha256sum -c
grep " initramfs-b9c.cpio.gz\$" $B9C/SHA256SUMS | sed "s| | $B9C/|" | sha256sum -c
grep " cmdline.txt\$" $B9C/SHA256SUMS | sed "s| | $B9C/|" | sha256sum -c
for s in IIO=y QCOM_SPMI_VADC=y BATTERY_PM8916_BMS_VM=y CHARGER_PM8916_LBC=y QCOM_SPMI_TEMP_ALARM=y 'LOCALVERSION="-aurora-b10b3"'; do grep -q "^CONFIG_$s\$" $KB/.config || { echo "STOP: CONFIG_$s"; exit 1; }; done
cp $KB/arch/arm64/boot/Image.gz $O/Image.gz; cp $KB/.config $O/config-b10b3; cp $L/dts/msm8916-jz08-aurora-b10b3.dtb $O/aurora-b10b3.dtb
cp $B9C/initramfs-b9c.cpio.gz $O/initramfs.cpio.gz; cp $B9C/cmdline.txt $O/cmdline.txt
cat $O/Image.gz $O/aurora-b10b3.dtb > $O/Image.gz-dtb
python3 ../../b6p/mkbootimg.py $O/Image.gz-dtb $O/initramfs.cpio.gz $O/cmdline.txt $O/aurora-b10b3.img
SZ=$(python3 -c "import struct;print(struct.unpack_from('<Q',open('$KB/arch/arm64/boot/Image','rb').read(24),16)[0])")
printf 'kernel image_size 0x%x, RAM-boot end 0x%x (< 0x81e00000 DTB)\n' $SZ $((0x80000000 + SZ)); [ $((0x80000000 + SZ)) -lt $((0x81e00000)) ]
(cd $O && sha256sum Image.gz aurora-b10b3.dtb Image.gz-dtb config-b10b3 cmdline.txt initramfs.cpio.gz aurora-b10b3.img > SHA256SUMS; cat SHA256SUMS); ls -l $O/aurora-b10b3.img

19
b10/b10b3/build-b10b3b.sh Executable file
View file

@ -0,0 +1,19 @@
#!/bin/sh
# B10B-3 Test B TEST-ONLY RAM image (safety timer in HOLD; never for persistent use) (fastboot boot only - never flash; cache B9C / aboot untouched):
# kernel = out-b10b3 (b10b2 options; built from /home/q/aurora-kbuild/src-b10b3 = src + linux/patches/b10b3-lbc-supervisor-v3.patch).
# DTB = linux/dts/msm8916-jz08-aurora-b10b3b.dtb (TEST B: production v3 DTB with charge 4.05 V, hold 4.00 V, full-min 4.03 V, cv 2 min, timer 8 min)
# initramfs + cmdline = exact B9C (b9/b9c/out). out/ contains the B8F initramfs (Wi-Fi PSK): never publish.
set -e; cd "$(dirname "$0")"; O=out-b; KB=/home/q/aurora-kbuild/out-b10b3; L=../../linux; B9C=../../b9/b9c/out
mkdir -p $O
echo "7ca9cc794a3b85d3b7240f6311ad03bee9e1a4a59aae2ed9438318e853f7c3dc $L/dts/msm8916-jz08-aurora-b9b.dtb" | sha256sum -c
grep " initramfs-b9c.cpio.gz\$" $B9C/SHA256SUMS | sed "s| | $B9C/|" | sha256sum -c
grep " cmdline.txt\$" $B9C/SHA256SUMS | sed "s| | $B9C/|" | sha256sum -c
for s in IIO=y QCOM_SPMI_VADC=y BATTERY_PM8916_BMS_VM=y CHARGER_PM8916_LBC=y QCOM_SPMI_TEMP_ALARM=y 'LOCALVERSION="-aurora-b10b3"'; do grep -q "^CONFIG_$s\$" $KB/.config || { echo "STOP: CONFIG_$s"; exit 1; }; done
cp $KB/arch/arm64/boot/Image.gz $O/Image.gz; cp $KB/.config $O/config-b10b3; cp $L/dts/msm8916-jz08-aurora-b10b3b.dtb $O/aurora-b10b3b.dtb
cp $B9C/initramfs-b9c.cpio.gz $O/initramfs.cpio.gz; cp $B9C/cmdline.txt $O/cmdline.txt
cat $O/Image.gz $O/aurora-b10b3b.dtb > $O/Image.gz-dtb
python3 ../../b6p/mkbootimg.py $O/Image.gz-dtb $O/initramfs.cpio.gz $O/cmdline.txt $O/aurora-b10b3b.img
SZ=$(python3 -c "import struct;print(struct.unpack_from('<Q',open('$KB/arch/arm64/boot/Image','rb').read(24),16)[0])")
printf 'kernel image_size 0x%x, RAM-boot end 0x%x (< 0x81e00000 DTB)\n' $SZ $((0x80000000 + SZ)); [ $((0x80000000 + SZ)) -lt $((0x81e00000)) ]
(cd $O && sha256sum Image.gz aurora-b10b3b.dtb Image.gz-dtb config-b10b3 cmdline.txt initramfs.cpio.gz aurora-b10b3b.img > SHA256SUMS; cat SHA256SUMS); ls -l $O/aurora-b10b3b.img

19
b10/b10b3/build-b10b3c.sh Executable file
View file

@ -0,0 +1,19 @@
#!/bin/sh
# B10B-3 Test C TEST-ONLY RAM image (HOLD mechanism; never for persistent use) (fastboot boot only - never flash; cache B9C / aboot untouched):
# kernel = out-b10b3 (b10b2 options; built from /home/q/aurora-kbuild/src-b10b3 = src + linux/patches/b10b3-lbc-supervisor-v3.patch).
# DTB = linux/dts/msm8916-jz08-aurora-b10b3c.dtb (TEST C: production v3 DTB with charge 4.10 V, hold 4.00 V, full-min 4.05 V, cv 5 min)
# initramfs + cmdline = exact B9C (b9/b9c/out). out/ contains the B8F initramfs (Wi-Fi PSK): never publish.
set -e; cd "$(dirname "$0")"; O=out-c; KB=/home/q/aurora-kbuild/out-b10b3; L=../../linux; B9C=../../b9/b9c/out
mkdir -p $O
echo "7ca9cc794a3b85d3b7240f6311ad03bee9e1a4a59aae2ed9438318e853f7c3dc $L/dts/msm8916-jz08-aurora-b9b.dtb" | sha256sum -c
grep " initramfs-b9c.cpio.gz\$" $B9C/SHA256SUMS | sed "s| | $B9C/|" | sha256sum -c
grep " cmdline.txt\$" $B9C/SHA256SUMS | sed "s| | $B9C/|" | sha256sum -c
for s in IIO=y QCOM_SPMI_VADC=y BATTERY_PM8916_BMS_VM=y CHARGER_PM8916_LBC=y QCOM_SPMI_TEMP_ALARM=y 'LOCALVERSION="-aurora-b10b3"'; do grep -q "^CONFIG_$s\$" $KB/.config || { echo "STOP: CONFIG_$s"; exit 1; }; done
cp $KB/arch/arm64/boot/Image.gz $O/Image.gz; cp $KB/.config $O/config-b10b3; cp $L/dts/msm8916-jz08-aurora-b10b3c.dtb $O/aurora-b10b3c.dtb
cp $B9C/initramfs-b9c.cpio.gz $O/initramfs.cpio.gz; cp $B9C/cmdline.txt $O/cmdline.txt
cat $O/Image.gz $O/aurora-b10b3c.dtb > $O/Image.gz-dtb
python3 ../../b6p/mkbootimg.py $O/Image.gz-dtb $O/initramfs.cpio.gz $O/cmdline.txt $O/aurora-b10b3c.img
SZ=$(python3 -c "import struct;print(struct.unpack_from('<Q',open('$KB/arch/arm64/boot/Image','rb').read(24),16)[0])")
printf 'kernel image_size 0x%x, RAM-boot end 0x%x (< 0x81e00000 DTB)\n' $SZ $((0x80000000 + SZ)); [ $((0x80000000 + SZ)) -lt $((0x81e00000)) ]
(cd $O && sha256sum Image.gz aurora-b10b3c.dtb Image.gz-dtb config-b10b3 cmdline.txt initramfs.cpio.gz aurora-b10b3c.img > SHA256SUMS; cat SHA256SUMS); ls -l $O/aurora-b10b3c.img

19
b10/b10b3/build-b10b3d.sh Executable file
View file

@ -0,0 +1,19 @@
#!/bin/sh
# B10B-3 Test D TEST-ONLY RAM image (safety timer expiry in CHARGING; never for persistent use) (fastboot boot only - never flash; cache B9C / aboot untouched):
# kernel = out-b10b3 (b10b2 options; built from /home/q/aurora-kbuild/src-b10b3 = src + linux/patches/b10b3-lbc-supervisor-v3.patch).
# DTB = linux/dts/msm8916-jz08-aurora-b10b3d.dtb (TEST D: production v3 DTB with charge 4.10 V, hold 4.00 V, full-min 4.05 V, cv 5 min, timer 8 min)
# initramfs + cmdline = exact B9C (b9/b9c/out). out/ contains the B8F initramfs (Wi-Fi PSK): never publish.
set -e; cd "$(dirname "$0")"; O=out-d; KB=/home/q/aurora-kbuild/out-b10b3; L=../../linux; B9C=../../b9/b9c/out
mkdir -p $O
echo "7ca9cc794a3b85d3b7240f6311ad03bee9e1a4a59aae2ed9438318e853f7c3dc $L/dts/msm8916-jz08-aurora-b9b.dtb" | sha256sum -c
grep " initramfs-b9c.cpio.gz\$" $B9C/SHA256SUMS | sed "s| | $B9C/|" | sha256sum -c
grep " cmdline.txt\$" $B9C/SHA256SUMS | sed "s| | $B9C/|" | sha256sum -c
for s in IIO=y QCOM_SPMI_VADC=y BATTERY_PM8916_BMS_VM=y CHARGER_PM8916_LBC=y QCOM_SPMI_TEMP_ALARM=y 'LOCALVERSION="-aurora-b10b3"'; do grep -q "^CONFIG_$s\$" $KB/.config || { echo "STOP: CONFIG_$s"; exit 1; }; done
cp $KB/arch/arm64/boot/Image.gz $O/Image.gz; cp $KB/.config $O/config-b10b3; cp $L/dts/msm8916-jz08-aurora-b10b3d.dtb $O/aurora-b10b3d.dtb
cp $B9C/initramfs-b9c.cpio.gz $O/initramfs.cpio.gz; cp $B9C/cmdline.txt $O/cmdline.txt
cat $O/Image.gz $O/aurora-b10b3d.dtb > $O/Image.gz-dtb
python3 ../../b6p/mkbootimg.py $O/Image.gz-dtb $O/initramfs.cpio.gz $O/cmdline.txt $O/aurora-b10b3d.img
SZ=$(python3 -c "import struct;print(struct.unpack_from('<Q',open('$KB/arch/arm64/boot/Image','rb').read(24),16)[0])")
printf 'kernel image_size 0x%x, RAM-boot end 0x%x (< 0x81e00000 DTB)\n' $SZ $((0x80000000 + SZ)); [ $((0x80000000 + SZ)) -lt $((0x81e00000)) ]
(cd $O && sha256sum Image.gz aurora-b10b3d.dtb Image.gz-dtb config-b10b3 cmdline.txt initramfs.cpio.gz aurora-b10b3d.img > SHA256SUMS; cat SHA256SUMS); ls -l $O/aurora-b10b3d.img

19
b10/b10b3/build-b10b3d3.sh Executable file
View file

@ -0,0 +1,19 @@
#!/bin/sh
# B10B-3 Test D3 TEST-ONLY RAM image (D3 kernel: VDD_MAX written at CHARGING entry only if different; safety timer expiry in CHARGING; never for persistent use) (fastboot boot only - never flash; cache B9C / aboot untouched):
# kernel = out-b10b3d3 (v3 + b10/b10b3/lbc-v3-to-d3.diff; tree /home/q/aurora-kbuild/src-b10b3d3).
# DTB = linux/dts/msm8916-jz08-aurora-b10b3d.dtb (TEST D: production v3 DTB with charge 4.10 V, hold 4.00 V, full-min 4.05 V, cv 5 min, timer 8 min)
# initramfs + cmdline = exact B9C (b9/b9c/out). out/ contains the B8F initramfs (Wi-Fi PSK): never publish.
set -e; cd "$(dirname "$0")"; O=out-d3; KB=/home/q/aurora-kbuild/out-b10b3d3; L=../../linux; B9C=../../b9/b9c/out
mkdir -p $O
echo "7ca9cc794a3b85d3b7240f6311ad03bee9e1a4a59aae2ed9438318e853f7c3dc $L/dts/msm8916-jz08-aurora-b9b.dtb" | sha256sum -c
grep " initramfs-b9c.cpio.gz\$" $B9C/SHA256SUMS | sed "s| | $B9C/|" | sha256sum -c
grep " cmdline.txt\$" $B9C/SHA256SUMS | sed "s| | $B9C/|" | sha256sum -c
for s in IIO=y QCOM_SPMI_VADC=y BATTERY_PM8916_BMS_VM=y CHARGER_PM8916_LBC=y QCOM_SPMI_TEMP_ALARM=y 'LOCALVERSION="-aurora-b10b3"'; do grep -q "^CONFIG_$s\$" $KB/.config || { echo "STOP: CONFIG_$s"; exit 1; }; done
cp $KB/arch/arm64/boot/Image.gz $O/Image.gz; cp $KB/.config $O/config-b10b3; cp $L/dts/msm8916-jz08-aurora-b10b3d.dtb $O/aurora-b10b3d.dtb
cp $B9C/initramfs-b9c.cpio.gz $O/initramfs.cpio.gz; cp $B9C/cmdline.txt $O/cmdline.txt
cat $O/Image.gz $O/aurora-b10b3d.dtb > $O/Image.gz-dtb
python3 ../../b6p/mkbootimg.py $O/Image.gz-dtb $O/initramfs.cpio.gz $O/cmdline.txt $O/aurora-b10b3d3.img
SZ=$(python3 -c "import struct;print(struct.unpack_from('<Q',open('$KB/arch/arm64/boot/Image','rb').read(24),16)[0])")
printf 'kernel image_size 0x%x, RAM-boot end 0x%x (< 0x81e00000 DTB)\n' $SZ $((0x80000000 + SZ)); [ $((0x80000000 + SZ)) -lt $((0x81e00000)) ]
(cd $O && sha256sum Image.gz aurora-b10b3d.dtb Image.gz-dtb config-b10b3 cmdline.txt initramfs.cpio.gz aurora-b10b3d3.img > SHA256SUMS; cat SHA256SUMS); ls -l $O/aurora-b10b3d3.img

19
b10/b10b3/build-b10b3p.sh Executable file
View file

@ -0,0 +1,19 @@
#!/bin/sh
# B10B-3 Production-profile TEST RAM image (DESIGN 8.7 final RAM run; never flash) (fastboot boot only - never flash; cache B9C / aboot untouched):
# kernel = out-b10b3 (b10b2 options; built from /home/q/aurora-kbuild/src-b10b3 = src + linux/patches/b10b3-lbc-supervisor-v3.patch).
# DTB = linux/dts/msm8916-jz08-aurora-b10b3p.dtb (production values: 4.20 V / HOLD 4.05 V / full-min 4.15 V / CV 60 min / 450 mA / 512 min; model string only differs)
# initramfs + cmdline = exact B9C (b9/b9c/out). out/ contains the B8F initramfs (Wi-Fi PSK): never publish.
set -e; cd "$(dirname "$0")"; O=out-p; KB=/home/q/aurora-kbuild/out-b10b3; L=../../linux; B9C=../../b9/b9c/out
mkdir -p $O
echo "7ca9cc794a3b85d3b7240f6311ad03bee9e1a4a59aae2ed9438318e853f7c3dc $L/dts/msm8916-jz08-aurora-b9b.dtb" | sha256sum -c
grep " initramfs-b9c.cpio.gz\$" $B9C/SHA256SUMS | sed "s| | $B9C/|" | sha256sum -c
grep " cmdline.txt\$" $B9C/SHA256SUMS | sed "s| | $B9C/|" | sha256sum -c
for s in IIO=y QCOM_SPMI_VADC=y BATTERY_PM8916_BMS_VM=y CHARGER_PM8916_LBC=y QCOM_SPMI_TEMP_ALARM=y 'LOCALVERSION="-aurora-b10b3"'; do grep -q "^CONFIG_$s\$" $KB/.config || { echo "STOP: CONFIG_$s"; exit 1; }; done
cp $KB/arch/arm64/boot/Image.gz $O/Image.gz; cp $KB/.config $O/config-b10b3; cp $L/dts/msm8916-jz08-aurora-b10b3p.dtb $O/aurora-b10b3p.dtb
cp $B9C/initramfs-b9c.cpio.gz $O/initramfs.cpio.gz; cp $B9C/cmdline.txt $O/cmdline.txt
cat $O/Image.gz $O/aurora-b10b3p.dtb > $O/Image.gz-dtb
python3 ../../b6p/mkbootimg.py $O/Image.gz-dtb $O/initramfs.cpio.gz $O/cmdline.txt $O/aurora-b10b3p.img
SZ=$(python3 -c "import struct;print(struct.unpack_from('<Q',open('$KB/arch/arm64/boot/Image','rb').read(24),16)[0])")
printf 'kernel image_size 0x%x, RAM-boot end 0x%x (< 0x81e00000 DTB)\n' $SZ $((0x80000000 + SZ)); [ $((0x80000000 + SZ)) -lt $((0x81e00000)) ]
(cd $O && sha256sum Image.gz aurora-b10b3p.dtb Image.gz-dtb config-b10b3 cmdline.txt initramfs.cpio.gz aurora-b10b3p.img > SHA256SUMS; cat SHA256SUMS); ls -l $O/aurora-b10b3p.img

19
b10/b10b3/build-b10b3t.sh Executable file
View file

@ -0,0 +1,19 @@
#!/bin/sh
# B10B-3T TEST-ONLY RAM image (accelerated recharge test; never for persistent use) (fastboot boot only - never flash; cache B9C / aboot untouched):
# kernel = out-b10b3 (b10b2 options; built from /home/q/aurora-kbuild/src-b10b3 = src + linux/patches/b10b3-lbc-recharge-supervisor.patch).
# DTB = linux/dts/msm8916-jz08-aurora-b10b3t.dtb (TEST: production B10B-3 DTB with battery max 4.00 V and re-charge 3.94 V)
# initramfs + cmdline = exact B9C (b9/b9c/out). out/ contains the B8F initramfs (Wi-Fi PSK): never publish.
set -e; cd "$(dirname "$0")"; O=out-t; KB=/home/q/aurora-kbuild/out-b10b3; L=../../linux; B9C=../../b9/b9c/out
mkdir -p $O
echo "7ca9cc794a3b85d3b7240f6311ad03bee9e1a4a59aae2ed9438318e853f7c3dc $L/dts/msm8916-jz08-aurora-b9b.dtb" | sha256sum -c
grep " initramfs-b9c.cpio.gz\$" $B9C/SHA256SUMS | sed "s| | $B9C/|" | sha256sum -c
grep " cmdline.txt\$" $B9C/SHA256SUMS | sed "s| | $B9C/|" | sha256sum -c
for s in IIO=y QCOM_SPMI_VADC=y BATTERY_PM8916_BMS_VM=y CHARGER_PM8916_LBC=y QCOM_SPMI_TEMP_ALARM=y 'LOCALVERSION="-aurora-b10b3"'; do grep -q "^CONFIG_$s\$" $KB/.config || { echo "STOP: CONFIG_$s"; exit 1; }; done
cp $KB/arch/arm64/boot/Image.gz $O/Image.gz; cp $KB/.config $O/config-b10b3; cp $L/dts/msm8916-jz08-aurora-b10b3t.dtb $O/aurora-b10b3t.dtb
cp $B9C/initramfs-b9c.cpio.gz $O/initramfs.cpio.gz; cp $B9C/cmdline.txt $O/cmdline.txt
cat $O/Image.gz $O/aurora-b10b3t.dtb > $O/Image.gz-dtb
python3 ../../b6p/mkbootimg.py $O/Image.gz-dtb $O/initramfs.cpio.gz $O/cmdline.txt $O/aurora-b10b3t.img
SZ=$(python3 -c "import struct;print(struct.unpack_from('<Q',open('$KB/arch/arm64/boot/Image','rb').read(24),16)[0])")
printf 'kernel image_size 0x%x, RAM-boot end 0x%x (< 0x81e00000 DTB)\n' $SZ $((0x80000000 + SZ)); [ $((0x80000000 + SZ)) -lt $((0x81e00000)) ]
(cd $O && sha256sum Image.gz aurora-b10b3t.dtb Image.gz-dtb config-b10b3 cmdline.txt initramfs.cpio.gz aurora-b10b3t.img > SHA256SUMS; cat SHA256SUMS); ls -l $O/aurora-b10b3t.img

19
b10/b10b3/build-b10b4.sh Executable file
View file

@ -0,0 +1,19 @@
#!/bin/sh
# B10B-4 actuator-audit TEST RAM image (TEST-ONLY kernel with debugfs pm8916_lbc/b10b4; never flash, never cache) (fastboot boot only - never flash; cache B9C / aboot untouched):
# kernel = out-b10b4 (7.2.7-aurora-b10b4-debug = v3 + b10/b10b3/lbc-v3-to-b10b4-debug.diff, CHARGER_PM8916_LBC_B10B4_DEBUG=y; tree src-b10b4).
# DTB = linux/dts/msm8916-jz08-aurora-b10b4.dtb (production values: 4.20 V / HOLD 4.05 V / full-min 4.15 V / CV 60 min / 450 mA / 512 min; model string only differs)
# initramfs + cmdline = exact B9C (b9/b9c/out). out/ contains the B8F initramfs (Wi-Fi PSK): never publish.
set -e; cd "$(dirname "$0")"; O=out-b4; KB=/home/q/aurora-kbuild/out-b10b4; L=../../linux; B9C=../../b9/b9c/out
mkdir -p $O
echo "7ca9cc794a3b85d3b7240f6311ad03bee9e1a4a59aae2ed9438318e853f7c3dc $L/dts/msm8916-jz08-aurora-b9b.dtb" | sha256sum -c
grep " initramfs-b9c.cpio.gz\$" $B9C/SHA256SUMS | sed "s| | $B9C/|" | sha256sum -c
grep " cmdline.txt\$" $B9C/SHA256SUMS | sed "s| | $B9C/|" | sha256sum -c
for s in IIO=y QCOM_SPMI_VADC=y BATTERY_PM8916_BMS_VM=y CHARGER_PM8916_LBC=y QCOM_SPMI_TEMP_ALARM=y 'LOCALVERSION="-aurora-b10b4-debug"' CHARGER_PM8916_LBC_B10B4_DEBUG=y; do grep -q "^CONFIG_$s\$" $KB/.config || { echo "STOP: CONFIG_$s"; exit 1; }; done
cp $KB/arch/arm64/boot/Image.gz $O/Image.gz; cp $KB/.config $O/config-b10b4; cp $L/dts/msm8916-jz08-aurora-b10b4.dtb $O/aurora-b10b4.dtb
cp $B9C/initramfs-b9c.cpio.gz $O/initramfs.cpio.gz; cp $B9C/cmdline.txt $O/cmdline.txt
cat $O/Image.gz $O/aurora-b10b4.dtb > $O/Image.gz-dtb
python3 ../../b6p/mkbootimg.py $O/Image.gz-dtb $O/initramfs.cpio.gz $O/cmdline.txt $O/aurora-b10b4.img
SZ=$(python3 -c "import struct;print(struct.unpack_from('<Q',open('$KB/arch/arm64/boot/Image','rb').read(24),16)[0])")
printf 'kernel image_size 0x%x, RAM-boot end 0x%x (< 0x81e00000 DTB)\n' $SZ $((0x80000000 + SZ)); [ $((0x80000000 + SZ)) -lt $((0x81e00000)) ]
(cd $O && sha256sum Image.gz aurora-b10b4.dtb Image.gz-dtb config-b10b4 cmdline.txt initramfs.cpio.gz aurora-b10b4.img > SHA256SUMS; cat SHA256SUMS); ls -l $O/aurora-b10b4.img

21
b10/b10b3/build-b10b5.sh Executable file
View file

@ -0,0 +1,21 @@
#!/bin/sh
# B10B-5 PRODUCTION v4 image (v3 + FAULT safe clamp to 4.00 V; no test hooks) - RAM pretest + parts for the cache candidate (fastboot boot only - never flash):
# kernel = out-b10b5 (7.2.7-aurora-b10b5 = v3 + b10/b10b3/lbc-v3-to-v4-fault-clamp.diff; tree src-b10b5; config = b10b3 + LOCALVERSION only).
# DTB = linux/dts/msm8916-jz08-aurora-b10b3.dtb (production v3 values: 4.20 V / HOLD 4.05 V / full-min 4.15 V / CV 60 min / 450 mA / 512 min)
# initramfs + cmdline = exact B9C (b9/b9c/out). out/ contains the B8F initramfs (Wi-Fi PSK): never publish.
set -e; cd "$(dirname "$0")"; O=out-v4; KB=/home/q/aurora-kbuild/out-b10b5; L=../../linux; B9C=../../b9/b9c/out
mkdir -p $O
echo "7ca9cc794a3b85d3b7240f6311ad03bee9e1a4a59aae2ed9438318e853f7c3dc $L/dts/msm8916-jz08-aurora-b9b.dtb" | sha256sum -c
grep " initramfs-b9c.cpio.gz\$" $B9C/SHA256SUMS | sed "s| | $B9C/|" | sha256sum -c
grep " cmdline.txt\$" $B9C/SHA256SUMS | sed "s| | $B9C/|" | sha256sum -c
for s in IIO=y QCOM_SPMI_VADC=y BATTERY_PM8916_BMS_VM=y CHARGER_PM8916_LBC=y QCOM_SPMI_TEMP_ALARM=y 'LOCALVERSION="-aurora-b10b5"'; do grep -q "^CONFIG_$s\$" $KB/.config || { echo "STOP: CONFIG_$s"; exit 1; }; done
grep -q "B10B5_TEST\|B10B4_DEBUG" $KB/.config && { echo "STOP: test hook symbol in production config"; exit 1; }
zcat $KB/arch/arm64/boot/Image.gz | strings | grep -qE "B10B-5 TEST|B10B-4 TEST" && { echo "STOP: test hook strings in production kernel"; exit 1; }
cp $KB/arch/arm64/boot/Image.gz $O/Image.gz; cp $KB/.config $O/config-b10b5; cp $L/dts/msm8916-jz08-aurora-b10b3.dtb $O/aurora-b10b3.dtb
cp $B9C/initramfs-b9c.cpio.gz $O/initramfs.cpio.gz; cp $B9C/cmdline.txt $O/cmdline.txt
cat $O/Image.gz $O/aurora-b10b3.dtb > $O/Image.gz-dtb
python3 ../../b6p/mkbootimg.py $O/Image.gz-dtb $O/initramfs.cpio.gz $O/cmdline.txt $O/aurora-b10b5.img
SZ=$(python3 -c "import struct;print(struct.unpack_from('<Q',open('$KB/arch/arm64/boot/Image','rb').read(24),16)[0])")
printf 'kernel image_size 0x%x, RAM-boot end 0x%x (< 0x81e00000 DTB)\n' $SZ $((0x80000000 + SZ)); [ $((0x80000000 + SZ)) -lt $((0x81e00000)) ]
(cd $O && sha256sum Image.gz aurora-b10b3.dtb Image.gz-dtb config-b10b5 cmdline.txt initramfs.cpio.gz aurora-b10b5.img > SHA256SUMS; cat SHA256SUMS); ls -l $O/aurora-b10b5.img

19
b10/b10b3/build-b10b5t.sh Executable file
View file

@ -0,0 +1,19 @@
#!/bin/sh
# B10B-5 FAULT-clamp regression TEST RAM image (TEST-ONLY kernel v4 + debugfs pm8916_lbc/b10b5_fault; never flash, never cache) (fastboot boot only - never flash; cache B9C / aboot untouched):
# kernel = out-b10b5 test build (7.2.7-aurora-b10b5-test = v4 [lbc-v3-to-v4-fault-clamp.diff] + lbc-v4-to-v4test-fault-inject.diff, CHARGER_PM8916_LBC_B10B5_TEST=y; tree src-b10b5).
# DTB = linux/dts/msm8916-jz08-aurora-b10b5t.dtb (production values: 4.20 V / HOLD 4.05 V / full-min 4.15 V / CV 60 min / 450 mA / 512 min; model string only differs)
# initramfs + cmdline = exact B9C (b9/b9c/out). out/ contains the B8F initramfs (Wi-Fi PSK): never publish.
set -e; cd "$(dirname "$0")"; O=out-b5t; KB=/home/q/aurora-kbuild/out-b10b5; L=../../linux; B9C=../../b9/b9c/out
mkdir -p $O
echo "7ca9cc794a3b85d3b7240f6311ad03bee9e1a4a59aae2ed9438318e853f7c3dc $L/dts/msm8916-jz08-aurora-b9b.dtb" | sha256sum -c
grep " initramfs-b9c.cpio.gz\$" $B9C/SHA256SUMS | sed "s| | $B9C/|" | sha256sum -c
grep " cmdline.txt\$" $B9C/SHA256SUMS | sed "s| | $B9C/|" | sha256sum -c
for s in IIO=y QCOM_SPMI_VADC=y BATTERY_PM8916_BMS_VM=y CHARGER_PM8916_LBC=y QCOM_SPMI_TEMP_ALARM=y 'LOCALVERSION="-aurora-b10b5-test"' CHARGER_PM8916_LBC_B10B5_TEST=y; do grep -q "^CONFIG_$s\$" $KB/.config || { echo "STOP: CONFIG_$s"; exit 1; }; done
cp $KB/arch/arm64/boot/Image.gz $O/Image.gz; cp $KB/.config $O/config-b10b5t; cp $L/dts/msm8916-jz08-aurora-b10b5t.dtb $O/aurora-b10b5t.dtb
cp $B9C/initramfs-b9c.cpio.gz $O/initramfs.cpio.gz; cp $B9C/cmdline.txt $O/cmdline.txt
cat $O/Image.gz $O/aurora-b10b5t.dtb > $O/Image.gz-dtb
python3 ../../b6p/mkbootimg.py $O/Image.gz-dtb $O/initramfs.cpio.gz $O/cmdline.txt $O/aurora-b10b5t.img
SZ=$(python3 -c "import struct;print(struct.unpack_from('<Q',open('$KB/arch/arm64/boot/Image','rb').read(24),16)[0])")
printf 'kernel image_size 0x%x, RAM-boot end 0x%x (< 0x81e00000 DTB)\n' $SZ $((0x80000000 + SZ)); [ $((0x80000000 + SZ)) -lt $((0x81e00000)) ]
(cd $O && sha256sum Image.gz aurora-b10b5t.dtb Image.gz-dtb config-b10b5t cmdline.txt initramfs.cpio.gz aurora-b10b5t.img > SHA256SUMS; cat SHA256SUMS); ls -l $O/aurora-b10b5t.img

View file

@ -0,0 +1,4 @@
c37325156a6f4c013982cf01bcb5b2ddb026b0298e9c3ec0be87f57d693464b8 cache-extlinux-b10b5.img
7e80063945bcd017d61c3ef285f14b7216a54ca103c796d67628fff917a7b83d mkfs-cache-b10b5.sh
b6d9ecdc0cc09528704ffca440f645ac1438c0ffc81176591c2c92ba6d4b4d1c extlinux-b10b5.conf
98bfaf2d8d44698bcc33181fd89d339a8eb3b01ccdfea5c6df71d70f6369e256 emu/run-emu-b10b5.sh

View file

@ -0,0 +1,10 @@
== cache-extlinux-b10b3
5e69f8431d42a9ddb9d64f06dcc408cd8dbfa9dffdba7e9b06e4ba58075ed1c7 Image.gz-dtb
e47762d1dcd0af6e2acb711fa47ecc13769cd6bcb81259ce50635e8b18b6514a aurora-b10b3.dtb
9b6584fcc71ae74f6c84cba6c9bcd2576ae8c59edee2fad5b9d0753f54f8ca19 extlinux_extlinux.conf
ac518e27e2957ad5e4515969b9a3808024e11ef8d1a79433a899a67dbc644558 initramfs-b9c.cpio.gz
== cache-extlinux-b10b5
b0ea04666c4ab979067fe9c0015bda0e9c8ac742678321e57b18e841c9c69f95 Image.gz-dtb
e47762d1dcd0af6e2acb711fa47ecc13769cd6bcb81259ce50635e8b18b6514a aurora-b10b3.dtb
b6d9ecdc0cc09528704ffca440f645ac1438c0ffc81176591c2c92ba6d4b4d1c extlinux_extlinux.conf
ac518e27e2957ad5e4515969b9a3808024e11ef8d1a79433a899a67dbc644558 initramfs-b9c.cpio.gz

View file

@ -0,0 +1,42 @@
[lk] Registering wrapper bio devices...
[lk] block devices:
[lk] | dev | label | size | Leaf |
[lk] | wrp0p26 | userdata | 2542 MiB | Yes |
[lk] | wrp0p25 | recovery | 16 MiB | Yes |
[lk] | wrp0p24 | cache | 128 MiB | Yes |
[lk] | wrp0p23 | persist | 32 MiB | Yes |
[lk] | wrp0p22 | system | 800 MiB | Yes |
[lk] | wrp0p21 | boot | 16 MiB | Yes |
[lk] | wrp0p20 | sec | 16 KiB | Yes |
[lk] | wrp0p19 | fsg | 1 MiB | Yes |
[lk] | wrp0p18 | DDR | 32 KiB | Yes |
[lk] | wrp0p17 | splash | 10 MiB | Yes |
[lk] | wrp0p16 | ssd | 8 KiB | Yes |
[lk] | wrp0p15 | fsc | 1 KiB | Yes |
[lk] | wrp0p14 | misc | 1024 KiB | Yes |
[lk] | wrp0p13 | modemst2 | 1 MiB | Yes |
[lk] | wrp0p12 | modemst1 | 1 MiB | Yes |
[lk] | wrp0p11 | pad | 1024 KiB | Yes |
[lk] | wrp0p10 | hypbak | 512 KiB | Yes |
[lk] | wrp0p9 | hyp | 512 KiB | Yes |
[lk] | wrp0p8 | tzbak | 512 KiB | Yes |
[lk] | wrp0p7 | tz | 1024 KiB | Yes |
[lk] | wrp0p6 | rpmbak | 512 KiB | Yes |
[lk] | wrp0p5 | rpm | 512 KiB | Yes |
[lk] | wrp0p4 | abootbak | 1024 KiB | Yes |
[lk] | wrp0p3 | aboot | 1024 KiB | Yes |
[lk] | wrp0p2 | sbl1bak | 512 KiB | Yes |
[lk] | wrp0p1 | sbl1 | 512 KiB | Yes |
[lk] | wrp0p0 | modem | 64 MiB | Yes |
[lk] | wrp0 | | 3728 MiB | |
[lk] boot: Trying to boot from the file system...
[lk] boot: Bootable file system not found. Reverting to android boot.
HARNESS: lk2nd_boot() returned -> aboot would continue to boot_linux_from_mmc() (Android boot partition)
HARNESS: scan-candidate wrp0p26 (userdata) ext2 mount rc=-3
HARNESS: scan-candidate wrp0p25 (recovery) ext2 mount rc=-1
HARNESS: scan-candidate wrp0p24 (cache) ext2 mount rc=0
HARNESS: scan-candidate wrp0p23 (persist) ext2 mount rc=-3
HARNESS: scan-candidate wrp0p22 (system) ext2 mount rc=-3
HARNESS: scan-candidate wrp0p21 (boot) ext2 mount rc=-1
HARNESS: scan-candidate wrp0p0 (modem) ext2 mount rc=-1
HARNESS: total bytes read 45568

View file

@ -0,0 +1,42 @@
[lk] Registering wrapper bio devices...
[lk] block devices:
[lk] | dev | label | size | Leaf |
[lk] | wrp0p26 | userdata | 2542 MiB | Yes |
[lk] | wrp0p25 | recovery | 16 MiB | Yes |
[lk] | wrp0p24 | cache | 128 MiB | Yes |
[lk] | wrp0p23 | persist | 32 MiB | Yes |
[lk] | wrp0p22 | system | 800 MiB | Yes |
[lk] | wrp0p21 | boot | 16 MiB | Yes |
[lk] | wrp0p20 | sec | 16 KiB | Yes |
[lk] | wrp0p19 | fsg | 1 MiB | Yes |
[lk] | wrp0p18 | DDR | 32 KiB | Yes |
[lk] | wrp0p17 | splash | 10 MiB | Yes |
[lk] | wrp0p16 | ssd | 8 KiB | Yes |
[lk] | wrp0p15 | fsc | 1 KiB | Yes |
[lk] | wrp0p14 | misc | 1024 KiB | Yes |
[lk] | wrp0p13 | modemst2 | 1 MiB | Yes |
[lk] | wrp0p12 | modemst1 | 1 MiB | Yes |
[lk] | wrp0p11 | pad | 1024 KiB | Yes |
[lk] | wrp0p10 | hypbak | 512 KiB | Yes |
[lk] | wrp0p9 | hyp | 512 KiB | Yes |
[lk] | wrp0p8 | tzbak | 512 KiB | Yes |
[lk] | wrp0p7 | tz | 1024 KiB | Yes |
[lk] | wrp0p6 | rpmbak | 512 KiB | Yes |
[lk] | wrp0p5 | rpm | 512 KiB | Yes |
[lk] | wrp0p4 | abootbak | 1024 KiB | Yes |
[lk] | wrp0p3 | aboot | 1024 KiB | Yes |
[lk] | wrp0p2 | sbl1bak | 512 KiB | Yes |
[lk] | wrp0p1 | sbl1 | 512 KiB | Yes |
[lk] | wrp0p0 | modem | 64 MiB | Yes |
[lk] | wrp0 | | 3728 MiB | |
[lk] boot: Trying to boot from the file system...
[lk] boot: Bootable file system not found. Reverting to android boot.
HARNESS: lk2nd_boot() returned -> aboot would continue to boot_linux_from_mmc() (Android boot partition)
HARNESS: scan-candidate wrp0p26 (userdata) ext2 mount rc=-3
HARNESS: scan-candidate wrp0p25 (recovery) ext2 mount rc=-1
HARNESS: scan-candidate wrp0p24 (cache) ext2 mount rc=-1
HARNESS: scan-candidate wrp0p23 (persist) ext2 mount rc=-3
HARNESS: scan-candidate wrp0p22 (system) ext2 mount rc=-3
HARNESS: scan-candidate wrp0p21 (boot) ext2 mount rc=-1
HARNESS: scan-candidate wrp0p0 (modem) ext2 mount rc=-1
HARNESS: total bytes read 28160

View file

@ -0,0 +1,44 @@
[lk] Registering wrapper bio devices...
[lk] block devices:
[lk] | dev | label | size | Leaf |
[lk] | wrp0p26 | userdata | 2542 MiB | Yes |
[lk] | wrp0p25 | recovery | 16 MiB | Yes |
[lk] | wrp0p24 | cache | 128 MiB | Yes |
[lk] | wrp0p23 | persist | 32 MiB | Yes |
[lk] | wrp0p22 | system | 800 MiB | Yes |
[lk] | wrp0p21 | boot | 16 MiB | Yes |
[lk] | wrp0p20 | sec | 16 KiB | Yes |
[lk] | wrp0p19 | fsg | 1 MiB | Yes |
[lk] | wrp0p18 | DDR | 32 KiB | Yes |
[lk] | wrp0p17 | splash | 10 MiB | Yes |
[lk] | wrp0p16 | ssd | 8 KiB | Yes |
[lk] | wrp0p15 | fsc | 1 KiB | Yes |
[lk] | wrp0p14 | misc | 1024 KiB | Yes |
[lk] | wrp0p13 | modemst2 | 1 MiB | Yes |
[lk] | wrp0p12 | modemst1 | 1 MiB | Yes |
[lk] | wrp0p11 | pad | 1024 KiB | Yes |
[lk] | wrp0p10 | hypbak | 512 KiB | Yes |
[lk] | wrp0p9 | hyp | 512 KiB | Yes |
[lk] | wrp0p8 | tzbak | 512 KiB | Yes |
[lk] | wrp0p7 | tz | 1024 KiB | Yes |
[lk] | wrp0p6 | rpmbak | 512 KiB | Yes |
[lk] | wrp0p5 | rpm | 512 KiB | Yes |
[lk] | wrp0p4 | abootbak | 1024 KiB | Yes |
[lk] | wrp0p3 | aboot | 1024 KiB | Yes |
[lk] | wrp0p2 | sbl1bak | 512 KiB | Yes |
[lk] | wrp0p1 | sbl1 | 512 KiB | Yes |
[lk] | wrp0p0 | modem | 64 MiB | Yes |
[lk] | wrp0 | | 3728 MiB | |
[lk] boot: Trying to boot from the file system...
[lk] Initramfs /wrp0p24//initramfs-b9c.cpio.gz does not exist
[lk] Failed to parse extlinux.conf
[lk] boot: Bootable file system not found. Reverting to android boot.
HARNESS: lk2nd_boot() returned -> aboot would continue to boot_linux_from_mmc() (Android boot partition)
HARNESS: scan-candidate wrp0p26 (userdata) ext2 mount rc=-3
HARNESS: scan-candidate wrp0p25 (recovery) ext2 mount rc=-1
HARNESS: scan-candidate wrp0p24 (cache) ext2 mount rc=0
HARNESS: scan-candidate wrp0p23 (persist) ext2 mount rc=-3
HARNESS: scan-candidate wrp0p22 (system) ext2 mount rc=-3
HARNESS: scan-candidate wrp0p21 (boot) ext2 mount rc=-1
HARNESS: scan-candidate wrp0p0 (modem) ext2 mount rc=-1
HARNESS: total bytes read 49664

View file

@ -0,0 +1,40 @@
[lk] Registering wrapper bio devices...
[lk] block devices:
[lk] | dev | label | size | Leaf |
[lk] | wrp0p26 | userdata | 2542 MiB | Yes |
[lk] | wrp0p25 | recovery | 16 MiB | Yes |
[lk] | wrp0p24 | cache | 128 MiB | Yes |
[lk] | wrp0p23 | persist | 32 MiB | Yes |
[lk] | wrp0p22 | system | 800 MiB | Yes |
[lk] | wrp0p21 | boot | 16 MiB | Yes |
[lk] | wrp0p20 | sec | 16 KiB | Yes |
[lk] | wrp0p19 | fsg | 1 MiB | Yes |
[lk] | wrp0p18 | DDR | 32 KiB | Yes |
[lk] | wrp0p17 | splash | 10 MiB | Yes |
[lk] | wrp0p16 | ssd | 8 KiB | Yes |
[lk] | wrp0p15 | fsc | 1 KiB | Yes |
[lk] | wrp0p14 | misc | 1024 KiB | Yes |
[lk] | wrp0p13 | modemst2 | 1 MiB | Yes |
[lk] | wrp0p12 | modemst1 | 1 MiB | Yes |
[lk] | wrp0p11 | pad | 1024 KiB | Yes |
[lk] | wrp0p10 | hypbak | 512 KiB | Yes |
[lk] | wrp0p9 | hyp | 512 KiB | Yes |
[lk] | wrp0p8 | tzbak | 512 KiB | Yes |
[lk] | wrp0p7 | tz | 1024 KiB | Yes |
[lk] | wrp0p6 | rpmbak | 512 KiB | Yes |
[lk] | wrp0p5 | rpm | 512 KiB | Yes |
[lk] | wrp0p4 | abootbak | 1024 KiB | Yes |
[lk] | wrp0p3 | aboot | 1024 KiB | Yes |
[lk] | wrp0p2 | sbl1bak | 512 KiB | Yes |
[lk] | wrp0p1 | sbl1 | 512 KiB | Yes |
[lk] | wrp0p0 | modem | 64 MiB | Yes |
[lk] | wrp0 | | 3728 MiB | |
[lk] boot: Trying to boot from the file system...
[lk] Trying to boot 'b10b5'
[lk] Decompressing the kernel...
HARNESS: boot_linux reached: kernel @DDR+0x0 tags @DDR+0x20a9000 ramdisk @DDR+0x22a9000 (16082426) boot_type 0
HARNESS: kernel magic 0x644d5241 image_size 0x1830000 end @DDR+0x1830000
HARNESS: cmdline 'earlycon console=tty0 console=ttyMSM0,115200n8 ignore_loglevel loglevel=8 rdinit=/init fbcon=font:6x8 consoleblank=0'
HARNESS: kernel sha256 8c8bfccbad6e00bf3397e27563e0a90787e98edc4eae22ecbb7930afea7ad143 (24754184 bytes)
HARNESS: dtb sha256 e47762d1dcd0af6e2acb711fa47ecc13769cd6bcb81259ce50635e8b18b6514a (68093 bytes)
HARNESS: ramdisk sha256 ac518e27e2957ad5e4515969b9a3808024e11ef8d1a79433a899a67dbc644558 (16082426 bytes)

View file

@ -0,0 +1,40 @@
[lk] Registering wrapper bio devices...
[lk] block devices:
[lk] | dev | label | size | Leaf |
[lk] | wrp0p26 | userdata | 2542 MiB | Yes |
[lk] | wrp0p25 | recovery | 16 MiB | Yes |
[lk] | wrp0p24 | cache | 128 MiB | Yes |
[lk] | wrp0p23 | persist | 32 MiB | Yes |
[lk] | wrp0p22 | system | 800 MiB | Yes |
[lk] | wrp0p21 | boot | 16 MiB | Yes |
[lk] | wrp0p20 | sec | 16 KiB | Yes |
[lk] | wrp0p19 | fsg | 1 MiB | Yes |
[lk] | wrp0p18 | DDR | 32 KiB | Yes |
[lk] | wrp0p17 | splash | 10 MiB | Yes |
[lk] | wrp0p16 | ssd | 8 KiB | Yes |
[lk] | wrp0p15 | fsc | 1 KiB | Yes |
[lk] | wrp0p14 | misc | 1024 KiB | Yes |
[lk] | wrp0p13 | modemst2 | 1 MiB | Yes |
[lk] | wrp0p12 | modemst1 | 1 MiB | Yes |
[lk] | wrp0p11 | pad | 1024 KiB | Yes |
[lk] | wrp0p10 | hypbak | 512 KiB | Yes |
[lk] | wrp0p9 | hyp | 512 KiB | Yes |
[lk] | wrp0p8 | tzbak | 512 KiB | Yes |
[lk] | wrp0p7 | tz | 1024 KiB | Yes |
[lk] | wrp0p6 | rpmbak | 512 KiB | Yes |
[lk] | wrp0p5 | rpm | 512 KiB | Yes |
[lk] | wrp0p4 | abootbak | 1024 KiB | Yes |
[lk] | wrp0p3 | aboot | 1024 KiB | Yes |
[lk] | wrp0p2 | sbl1bak | 512 KiB | Yes |
[lk] | wrp0p1 | sbl1 | 512 KiB | Yes |
[lk] | wrp0p0 | modem | 64 MiB | Yes |
[lk] | wrp0 | | 3728 MiB | |
[lk] boot: Trying to boot from the file system...
[lk] Trying to boot 'b9c'
[lk] Decompressing the kernel...
HARNESS: boot_linux reached: kernel @DDR+0x0 tags @DDR+0x20a9000 ramdisk @DDR+0x22a9000 (16082426) boot_type 0
HARNESS: kernel magic 0x644d5241 image_size 0x1820000 end @DDR+0x1820000
HARNESS: cmdline 'earlycon console=tty0 console=ttyMSM0,115200n8 ignore_loglevel loglevel=8 rdinit=/init fbcon=font:6x8 consoleblank=0'
HARNESS: kernel sha256 3afc6c77f3ed4b4ad82f61914b9cca354c3bdcaf5d102d7782a0cd5577cbca61 (24686600 bytes)
HARNESS: dtb sha256 7ca9cc794a3b85d3b7240f6311ad03bee9e1a4a59aae2ed9438318e853f7c3dc (67425 bytes)
HARNESS: ramdisk sha256 ac518e27e2957ad5e4515969b9a3808024e11ef8d1a79433a899a67dbc644558 (16082426 bytes)

View file

@ -0,0 +1,28 @@
0 34 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/gpt-primary-34.bin
131072 131072 /home/q/doc/modem/jz08-aurora/logs/b5a/A4pre/modem.bin
262144 1024 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/sbl1.bin
263168 1024 /home/q/doc/modem/jz08-aurora/partitions/sbl1bak.bin
264192 2048 /home/q/doc/modem/jz08-aurora/b5a/aboot-lk1st-aurora-autoboot.pad1M
266240 2048 /home/q/doc/modem/jz08-aurora/partitions/abootbak.bin
268288 1024 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/rpm.bin
269312 1024 /home/q/doc/modem/jz08-aurora/partitions/rpmbak.bin
270336 2048 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/tz.bin
305184 1024 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/tzbak-305184.bin
272384 1024 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/hyp.bin
273408 1024 /home/q/doc/modem/jz08-aurora/partitions/hypbak.bin
274432 2048 /home/q/doc/modem/jz08-aurora/partitions/pad.bin
276480 3072 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/modemst1.bin
279552 3072 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/modemst2.bin
282624 2048 /home/q/doc/modem/jz08-aurora/partitions/misc.bin
284672 2 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/fsc.bin
284674 16 /home/q/doc/modem/jz08-aurora/partitions/ssd.bin
284690 20480 /home/q/doc/modem/jz08-aurora/partitions/splash.bin
393216 64 /home/q/doc/modem/jz08-aurora/partitions/DDR.bin
393280 3072 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/fsg.bin
396352 32 /home/q/doc/modem/jz08-aurora/partitions/sec.bin
396384 32768 /home/q/doc/modem/jz08-aurora/b5a/boot-emmc1-16MiB.img
429152 1638400 /home/q/doc/modem/jz08-aurora/logs/b5a/A4pre/system.bin
2067552 65536 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/persist.bin
2133088 262144 /tmp/tmp.Gm3RAnxk7D/F1-no-conf.img
2395232 32768 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/recovery.bin
2428000 5206911 /home/q/doc/modem/jz08-aurora/logs/b5a/A4pre/userdata.bin

View file

@ -0,0 +1,28 @@
0 34 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/gpt-primary-34.bin
131072 131072 /home/q/doc/modem/jz08-aurora/logs/b5a/A4pre/modem.bin
262144 1024 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/sbl1.bin
263168 1024 /home/q/doc/modem/jz08-aurora/partitions/sbl1bak.bin
264192 2048 /home/q/doc/modem/jz08-aurora/b5a/aboot-lk1st-aurora-autoboot.pad1M
266240 2048 /home/q/doc/modem/jz08-aurora/partitions/abootbak.bin
268288 1024 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/rpm.bin
269312 1024 /home/q/doc/modem/jz08-aurora/partitions/rpmbak.bin
270336 2048 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/tz.bin
305184 1024 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/tzbak-305184.bin
272384 1024 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/hyp.bin
273408 1024 /home/q/doc/modem/jz08-aurora/partitions/hypbak.bin
274432 2048 /home/q/doc/modem/jz08-aurora/partitions/pad.bin
276480 3072 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/modemst1.bin
279552 3072 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/modemst2.bin
282624 2048 /home/q/doc/modem/jz08-aurora/partitions/misc.bin
284672 2 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/fsc.bin
284674 16 /home/q/doc/modem/jz08-aurora/partitions/ssd.bin
284690 20480 /home/q/doc/modem/jz08-aurora/partitions/splash.bin
393216 64 /home/q/doc/modem/jz08-aurora/partitions/DDR.bin
393280 3072 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/fsg.bin
396352 32 /home/q/doc/modem/jz08-aurora/partitions/sec.bin
396384 32768 /home/q/doc/modem/jz08-aurora/b5a/boot-emmc1-16MiB.img
429152 1638400 /home/q/doc/modem/jz08-aurora/logs/b5a/A4pre/system.bin
2067552 65536 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/persist.bin
2133088 262144 /tmp/tmp.Gm3RAnxk7D/F10-zeroed-cache.img
2395232 32768 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/recovery.bin
2428000 5206911 /home/q/doc/modem/jz08-aurora/logs/b5a/A4pre/userdata.bin

View file

@ -0,0 +1,28 @@
0 34 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/gpt-primary-34.bin
131072 131072 /home/q/doc/modem/jz08-aurora/logs/b5a/A4pre/modem.bin
262144 1024 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/sbl1.bin
263168 1024 /home/q/doc/modem/jz08-aurora/partitions/sbl1bak.bin
264192 2048 /home/q/doc/modem/jz08-aurora/b5a/aboot-lk1st-aurora-autoboot.pad1M
266240 2048 /home/q/doc/modem/jz08-aurora/partitions/abootbak.bin
268288 1024 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/rpm.bin
269312 1024 /home/q/doc/modem/jz08-aurora/partitions/rpmbak.bin
270336 2048 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/tz.bin
305184 1024 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/tzbak-305184.bin
272384 1024 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/hyp.bin
273408 1024 /home/q/doc/modem/jz08-aurora/partitions/hypbak.bin
274432 2048 /home/q/doc/modem/jz08-aurora/partitions/pad.bin
276480 3072 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/modemst1.bin
279552 3072 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/modemst2.bin
282624 2048 /home/q/doc/modem/jz08-aurora/partitions/misc.bin
284672 2 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/fsc.bin
284674 16 /home/q/doc/modem/jz08-aurora/partitions/ssd.bin
284690 20480 /home/q/doc/modem/jz08-aurora/partitions/splash.bin
393216 64 /home/q/doc/modem/jz08-aurora/partitions/DDR.bin
393280 3072 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/fsg.bin
396352 32 /home/q/doc/modem/jz08-aurora/partitions/sec.bin
396384 32768 /home/q/doc/modem/jz08-aurora/b5a/boot-emmc1-16MiB.img
429152 1638400 /home/q/doc/modem/jz08-aurora/logs/b5a/A4pre/system.bin
2067552 65536 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/persist.bin
2133088 262144 /tmp/tmp.Gm3RAnxk7D/F3-no-initrd.img
2395232 32768 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/recovery.bin
2428000 5206911 /home/q/doc/modem/jz08-aurora/logs/b5a/A4pre/userdata.bin

View file

@ -0,0 +1,28 @@
0 34 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/gpt-primary-34.bin
131072 131072 /home/q/doc/modem/jz08-aurora/logs/b5a/A4pre/modem.bin
262144 1024 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/sbl1.bin
263168 1024 /home/q/doc/modem/jz08-aurora/partitions/sbl1bak.bin
264192 2048 /home/q/doc/modem/jz08-aurora/b5a/aboot-lk1st-aurora-autoboot.pad1M
266240 2048 /home/q/doc/modem/jz08-aurora/partitions/abootbak.bin
268288 1024 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/rpm.bin
269312 1024 /home/q/doc/modem/jz08-aurora/partitions/rpmbak.bin
270336 2048 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/tz.bin
305184 1024 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/tzbak-305184.bin
272384 1024 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/hyp.bin
273408 1024 /home/q/doc/modem/jz08-aurora/partitions/hypbak.bin
274432 2048 /home/q/doc/modem/jz08-aurora/partitions/pad.bin
276480 3072 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/modemst1.bin
279552 3072 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/modemst2.bin
282624 2048 /home/q/doc/modem/jz08-aurora/partitions/misc.bin
284672 2 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/fsc.bin
284674 16 /home/q/doc/modem/jz08-aurora/partitions/ssd.bin
284690 20480 /home/q/doc/modem/jz08-aurora/partitions/splash.bin
393216 64 /home/q/doc/modem/jz08-aurora/partitions/DDR.bin
393280 3072 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/fsg.bin
396352 32 /home/q/doc/modem/jz08-aurora/partitions/sec.bin
396384 32768 /home/q/doc/modem/jz08-aurora/b5a/boot-emmc1-16MiB.img
429152 1638400 /home/q/doc/modem/jz08-aurora/logs/b5a/A4pre/system.bin
2067552 65536 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/persist.bin
2133088 262144 /home/q/doc/modem/jz08-aurora/b10/b10b3/cache-v4/cache-extlinux-b10b5.img
2395232 32768 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/recovery.bin
2428000 5206911 /home/q/doc/modem/jz08-aurora/logs/b5a/A4pre/userdata.bin

View file

@ -0,0 +1,28 @@
0 34 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/gpt-primary-34.bin
131072 131072 /home/q/doc/modem/jz08-aurora/logs/b5a/A4pre/modem.bin
262144 1024 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/sbl1.bin
263168 1024 /home/q/doc/modem/jz08-aurora/partitions/sbl1bak.bin
264192 2048 /home/q/doc/modem/jz08-aurora/b5a/aboot-lk1st-aurora-autoboot.pad1M
266240 2048 /home/q/doc/modem/jz08-aurora/partitions/abootbak.bin
268288 1024 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/rpm.bin
269312 1024 /home/q/doc/modem/jz08-aurora/partitions/rpmbak.bin
270336 2048 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/tz.bin
305184 1024 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/tzbak-305184.bin
272384 1024 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/hyp.bin
273408 1024 /home/q/doc/modem/jz08-aurora/partitions/hypbak.bin
274432 2048 /home/q/doc/modem/jz08-aurora/partitions/pad.bin
276480 3072 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/modemst1.bin
279552 3072 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/modemst2.bin
282624 2048 /home/q/doc/modem/jz08-aurora/partitions/misc.bin
284672 2 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/fsc.bin
284674 16 /home/q/doc/modem/jz08-aurora/partitions/ssd.bin
284690 20480 /home/q/doc/modem/jz08-aurora/partitions/splash.bin
393216 64 /home/q/doc/modem/jz08-aurora/partitions/DDR.bin
393280 3072 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/fsg.bin
396352 32 /home/q/doc/modem/jz08-aurora/partitions/sec.bin
396384 32768 /home/q/doc/modem/jz08-aurora/b5a/boot-emmc1-16MiB.img
429152 1638400 /home/q/doc/modem/jz08-aurora/logs/b5a/A4pre/system.bin
2067552 65536 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/persist.bin
2133088 262144 /home/q/doc/modem/jz08-aurora/b9/b9c/cache/cache-extlinux-b9c.img
2395232 32768 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/recovery.bin
2428000 5206911 /home/q/doc/modem/jz08-aurora/logs/b5a/A4pre/userdata.bin

View file

@ -0,0 +1,13 @@
#!/bin/bash
# lk2nd-23.1 extlinux emulator (b5b/emu) on: S8 (B9C cache = current flash, regression vs b9/b9c/cache/emu S7), S10 B10B-5 (v4) candidate, fault variants. Offline, 480s.
cd ~/doc/modem/jz08-aurora/b10/b10b3/cache-v4/emu; E=../../../../b5b/emu; GPT=../../../../logs/b5a/A3/gpt-primary-34.bin; C=/home/q/doc/modem/jz08-aurora/b10/b10b3/cache-v4/cache-extlinux-b10b5.img
run() { python3 $E/mkmap.py $2 > map-$1.txt; $E/lk2nd-scan-emu map-$1.txt $GPT $3 > $1.out 2>&1; echo "== $1 rc=$? :: $(grep -E "Trying to boot|Reverting|boot_linux reached|ramdisk sha256|Could not" $1.out | tr '\n' ' ' | cut -c1-260)"; }
run S8-b9c-regression /home/q/doc/modem/jz08-aurora/b9/b9c/cache/cache-extlinux-b9c.img 24686600
cmp <(grep HARNESS S8-b9c-regression.out) <(grep HARNESS ../../../../b9/b9c/cache/emu/S7-b9c-candidate.out) && echo " S8 HARNESS lines == b9/b9c/cache/emu/S7-b9c-candidate.out"
run S10-b10b5-candidate $C 24754184; # kernel_len = b10b5 Image (8c8bfccb, 24754184 B)
grep HARNESS S10-b10b5-candidate.out
D=$(mktemp -d); v(){ cp $C $D/$1.img; chmod u+w $D/$1.img; }
v F3-no-initrd; /sbin/debugfs -w -R "rm /initramfs-b9c.cpio.gz" $D/F3-no-initrd.img >/dev/null 2>&1
v F1-no-conf; /sbin/debugfs -w -R "rm /extlinux/extlinux.conf" $D/F1-no-conf.img >/dev/null 2>&1
head -c 134217728 /dev/zero > $D/F10-zeroed-cache.img
for f in $D/F*.img; do run $(basename $f .img) $f; done; rm -rf $D

View file

@ -0,0 +1,6 @@
default b10b5
label b10b5
linux /Image.gz-dtb
fdt /aurora-b10b3.dtb
initrd /initramfs-b9c.cpio.gz
append earlycon console=tty0 console=ttyMSM0,115200n8 ignore_loglevel loglevel=8 rdinit=/init fbcon=font:6x8 consoleblank=0

View file

@ -0,0 +1,27 @@
#!/bin/bash
# B10B-5 cache CANDIDATE (v4 = v3 + FAULT safe clamp; NOT for writing without a separate GO): exact recipe of b10/b10b3/cache/mkfs-cache-b10b3.sh (86869061);
# differs only in the kernel file (Image.gz-dtb = kernel 7.2.7-aurora-b10b5 96b71ec3 + the same production DTB e47762d1),
# fdt (production DTB), file names, extlinux label, fs label and UUIDs. initrd and append = B9C unchanged. Runs on 480s (mke2fs 1.47.2). Offline only.
# The image contains the AP PSK (in the initramfs) - never publish it.
set -e
cd ~/doc/modem/jz08-aurora/b10/b10b3/cache-v4
OUT=${1:-cache-extlinux-b10b5.img}; F=../out-v4
echo "0fef41b262917c8ae308fa222da0017e2b3cb3ec5da1ca8ba18d0318476761a3 $F/cmdline.txt" | sha256sum -c
echo "b0ea04666c4ab979067fe9c0015bda0e9c8ac742678321e57b18e841c9c69f95 $F/Image.gz-dtb" | sha256sum -c
echo "e47762d1dcd0af6e2acb711fa47ecc13769cd6bcb81259ce50635e8b18b6514a $F/aurora-b10b3.dtb" | sha256sum -c
echo "ac518e27e2957ad5e4515969b9a3808024e11ef8d1a79433a899a67dbc644558 $F/initramfs.cpio.gz" | sha256sum -c
ST=$(mktemp -d); mkdir -p $ST/extlinux
cp $F/Image.gz-dtb $F/aurora-b10b3.dtb $ST/; cp $F/initramfs.cpio.gz $ST/initramfs-b9c.cpio.gz
printf "default b10b5\nlabel b10b5\n\tlinux /Image.gz-dtb\n\tfdt /aurora-b10b3.dtb\n\tinitrd /initramfs-b9c.cpio.gz\n\tappend %s\n" "$(cat $F/cmdline.txt)" > $ST/extlinux/extlinux.conf
cp $ST/extlinux/extlinux.conf extlinux-b10b5.conf
chmod 0644 $ST/*.* $ST/extlinux/extlinux.conf; chmod 0755 $ST $ST/extlinux
find $ST -exec touch -h -d @1790726400 {} +
rm -f $OUT; truncate -s 134217728 $OUT
E2FSPROGS_FAKE_TIME=1790726400 /sbin/mke2fs -F -q -t ext2 -O none,filetype,sparse_super \
-b 4096 -I 128 -N 64 -m 0 -L aurora-b10b5 -U 4a5a3038-b6f0-4000-8000-0000b10b5c00 \
-E root_owner=0:0,hash_seed=4a5a3038-b6f0-4000-8000-0000b10b5c01 -d $ST $OUT 32768
rm -rf $ST
for f in / /lost+found /extlinux /extlinux/extlinux.conf /Image.gz-dtb /aurora-b10b3.dtb /initramfs-b9c.cpio.gz; do for t in atime ctime mtime; do echo "sif $f $t @1790726400"; done; done > /tmp/b10b5-sif.$$
/sbin/debugfs -w -f /tmp/b10b5-sif.$$ $OUT >/dev/null 2>&1; rm -f /tmp/b10b5-sif.$$
/sbin/e2fsck -fn $OUT >/dev/null 2>&1 && echo "e2fsck -fn clean"
stat -c "%n %s" $OUT; sha256sum $OUT

View file

@ -0,0 +1,56 @@
# B10B-3 cache candidate — prepared, NOT written, NOT ready for persistent deployment
Date: 2026-10-04. **Status: candidate prepared and RAM-pretested; no cache/eMMC write. Persistent GO blocked (see Blocker).**
Contains the AP PSK (B8F initramfs) — never publish.
## Candidate
`cache-extlinux-b10b3.img` **86869061fcc971131068644542547893332f3ede9870a324eaf360824610d40a** (134217728 B, ext2, label aurora-b10b3,
UUID 4a5a3038-b6f0-4000-8000-0000b10b3c00). Built on 480s by `mkfs-cache-b10b3.sh` (278130cf) = exact B9C recipe (`b9/b9c/cache/mkfs-cache-b9c.sh`);
rebuild bit-identical; `e2fsck -fn` clean. `SHA256SUMS` in this directory.
## Composition and diff vs the live B9C cache (b9ce13c9) — `cache-contents-b9c-vs-b10b3.txt`
| file | B9C | candidate |
|---|---|---|
| /Image.gz-dtb | 632a7be8 (kernel 7.2.7-aurora-b9c + B9B DTB) | **5e69f843** (kernel 7.2.7-aurora-b10b3 1164b1c7 + production DTB) |
| DTB (fdt) | /aurora-b9c.dtb 7ca9cc79 | **/aurora-b10b3.dtb e47762d1** (`linux/dts/msm8916-jz08-aurora-b10b3.dts`) |
| /initramfs-b9c.cpio.gz | ac518e27 | ac518e27 (unchanged: B9C userspace/init/display/network) |
| extlinux.conf | label b9c, fdt aurora-b9c.dtb | label b10b3, fdt aurora-b10b3.dtb; **append identical** |
Really replaced: the kernel file and the DTB (plus label/fdt name in extlinux.conf). Kernel config b10b3 = B9C config + CHARGER_PM8916_LBC,
BATTERY_PM8916_BMS_VM, IIO, QCOM_SPMI_VADC, QCOM_VADC_COMMON, QCOM_SPMI_TEMP_ALARM (+ LOCALVERSION). Driver = v3 (`linux/patches/b10b3-lbc-supervisor-v3.patch`),
**no D3 change**. DTB = B9B DTB + layers b10b0 (VADC VBAT ch6) / b10b1 (battery 3000 mAh, BMS) / b10b2 (charger on, usbin off, extcon) / b10b3 (supervisor).
## DTB check (fdtget, /soc@0/spmi@200f000/pmic@0/charger@1000)
status "okay"; qcom,fast-charge-safe-voltage 4200000; qcom,fast-charge-safe-current 500000 (→ IBAT_MAX 450 mA); qcom,charge-timeout-minutes 512;
aurora,hold-voltage-microvolt 4050000; aurora,full-min-voltage-microvolt 4150000; aurora,cv-hold-minutes 60; io-channel-names "vbat";
/battery voltage-max-design-microvolt 4200000, charge-full-design 3000000; re-charge-voltage absent. No Test-C/B/D/T values (4.10/4.00 V, 5/2 min,
8 min, 3.94 V) present. The DTB appended to Image.gz-dtb is byte-identical to the fdt file. Model string "JZ08AU Aurora (RAM boot B10B-3)" (cosmetic).
## lk2nd emulator (`emu/run-emu-b10b3.sh`, b5b/emu)
- S8 regression on the live B9C cache == b9/b9c/cache/emu S7 (HARNESS lines identical).
- S9 candidate: "Trying to boot 'b10b3'", kernel 5afd371e (24754184 B, image_size 0x1830000, ends DDR+0x1830000), DTB e47762d1 @DDR+0x20A9000,
ramdisk ac518e27 @DDR+0x22A9000 — no overlap; cmdline = B9C.
- F1 (no conf) / F3 (no initrd) / F10 (zeroed cache) → "Reverting to android boot" (emmc1 fallback).
## RAM pretest (class A, run cand1; `logs/b10/b10b3/cand1*`, `pre-cand-classA-*`)
RAM image `b10/b10b3/out/aurora-b10b3.img` b7dc34e9 = same kernel/DTB/initramfs/cmdline as the candidate. Class A proven (RTC 3 s, SBL charger
defaults, dump diff ADC/BMS/RTC only). RESET-held boot (stage-3 again, RTC 5 s — harness only).
- probe: `safety timer 512 min (TCHG_MAX 0x7f), enabled`; `supervisor v3: charge 4200000, hold 4050000, full-min 4150000, cv 60 min, IBAT_MAX code 4`;
`INIT -> CHARGING (probe, usb present)` at 4.072 V.
- registers: VDD_MAX 08 (4.20 V), IBAT_MAX 04 (450 mA), CHG_CTRL a0, TCHG 80/7f, BOOT_DONE 80, CHG_FAILED 00, CHG_STATUS 05; no latch; 0 ALERT.
- VADC: VBAT 4.159 V (under charge), USBIN 4.884 V; PMIC 45.7 °C (VADC) / 44.6 °C (pm8916-thermal), CPU ≈ 44–46 °C.
- LTE START OK 73.7 s, ping 4/4; Wi-Fi AP enabled 77.3 s, MSS + WCNSS running; NCM ok; DISPLAY READY 7.8 s (fbcon bound, backlight on, 0 errors);
eMMC writes 0. 60-min CV/HOLD not repeated (state machine validated in B10B3-RESULT.md).
Board left CHARGING on the RAM pretest image; nothing written.
## Blocker before any persistent GO
**FAULT currently has no verified physical charge-stop actuator; the safety timer also does not stop charging** (Test D4: expiry only ends the
fast-charge state, current continues, CHG_FAILED not set; CHG_EN = 0 does not stop the LBC). FAULT in v3 is logical only.
## Proposed next test (needs a separate GO; RAM only, not executed)
**B10B-4 — emergency actuator search.** Test-only kernel hook (debugfs, RAM image only) or manual regmap writes per approved list, each step:
class-A start, CHARGING at ≈ 0.4 A, apply one actuator, observe USB current (meter), CHG_STATUS, RT, path, VBAT, PMIC 30–60 s, then revert:
1. USB_SUSP (0x1347 bit0 = 1): does input current go to ≈ 0, does the board drop to battery, does it survive; release → recovery.
2. IBAT_MAX minimum (0x1044 = 00, 90 mA): residual current with the board load.
3. VDD_MAX minimum (0x1040 = 00, 4.00 V) when VBAT > 4.00 V: does charging stop (HOLD phase-1 already suggests yes).
4. Combination (2 + 3) and, if 1 works, 1 alone as the FAULT action.
Pass criterion for an actuator: battery current stops within seconds, no 00/01 latch, board keeps running (from USB or battery), reversible.

4
b10/b10b3/cache/SHA256SUMS vendored Normal file
View file

@ -0,0 +1,4 @@
86869061fcc971131068644542547893332f3ede9870a324eaf360824610d40a cache-extlinux-b10b3.img
278130cfeabdc625c91accd2f29d660f65eec4b04f917325f43d574711df64fb mkfs-cache-b10b3.sh
9b6584fcc71ae74f6c84cba6c9bcd2576ae8c59edee2fad5b9d0753f54f8ca19 extlinux-b10b3.conf
d34697d23c65fa5d31478522b5551b074f208e5314e4e4b0ba72a5be819f105a emu/run-emu-b10b3.sh

View file

@ -0,0 +1,10 @@
== cache-extlinux-b10b3
5e69f8431d42a9ddb9d64f06dcc408cd8dbfa9dffdba7e9b06e4ba58075ed1c7 Image.gz-dtb
e47762d1dcd0af6e2acb711fa47ecc13769cd6bcb81259ce50635e8b18b6514a aurora-b10b3.dtb
9b6584fcc71ae74f6c84cba6c9bcd2576ae8c59edee2fad5b9d0753f54f8ca19 extlinux_extlinux.conf
ac518e27e2957ad5e4515969b9a3808024e11ef8d1a79433a899a67dbc644558 initramfs-b9c.cpio.gz
== cache-extlinux-b9c
632a7be801978dfaddeae633d5293b3abe385f2281cc5053772e6637897a7e5a Image.gz-dtb
7ca9cc794a3b85d3b7240f6311ad03bee9e1a4a59aae2ed9438318e853f7c3dc aurora-b9c.dtb
7facbd7aec20d7a823f23a824172448dd3d21a3f9bc9cc422fe6ef4565d52e90 extlinux_extlinux.conf
ac518e27e2957ad5e4515969b9a3808024e11ef8d1a79433a899a67dbc644558 initramfs-b9c.cpio.gz

42
b10/b10b3/cache/emu/F1-no-conf.out vendored Normal file
View file

@ -0,0 +1,42 @@
[lk] Registering wrapper bio devices...
[lk] block devices:
[lk] | dev | label | size | Leaf |
[lk] | wrp0p26 | userdata | 2542 MiB | Yes |
[lk] | wrp0p25 | recovery | 16 MiB | Yes |
[lk] | wrp0p24 | cache | 128 MiB | Yes |
[lk] | wrp0p23 | persist | 32 MiB | Yes |
[lk] | wrp0p22 | system | 800 MiB | Yes |
[lk] | wrp0p21 | boot | 16 MiB | Yes |
[lk] | wrp0p20 | sec | 16 KiB | Yes |
[lk] | wrp0p19 | fsg | 1 MiB | Yes |
[lk] | wrp0p18 | DDR | 32 KiB | Yes |
[lk] | wrp0p17 | splash | 10 MiB | Yes |
[lk] | wrp0p16 | ssd | 8 KiB | Yes |
[lk] | wrp0p15 | fsc | 1 KiB | Yes |
[lk] | wrp0p14 | misc | 1024 KiB | Yes |
[lk] | wrp0p13 | modemst2 | 1 MiB | Yes |
[lk] | wrp0p12 | modemst1 | 1 MiB | Yes |
[lk] | wrp0p11 | pad | 1024 KiB | Yes |
[lk] | wrp0p10 | hypbak | 512 KiB | Yes |
[lk] | wrp0p9 | hyp | 512 KiB | Yes |
[lk] | wrp0p8 | tzbak | 512 KiB | Yes |
[lk] | wrp0p7 | tz | 1024 KiB | Yes |
[lk] | wrp0p6 | rpmbak | 512 KiB | Yes |
[lk] | wrp0p5 | rpm | 512 KiB | Yes |
[lk] | wrp0p4 | abootbak | 1024 KiB | Yes |
[lk] | wrp0p3 | aboot | 1024 KiB | Yes |
[lk] | wrp0p2 | sbl1bak | 512 KiB | Yes |
[lk] | wrp0p1 | sbl1 | 512 KiB | Yes |
[lk] | wrp0p0 | modem | 64 MiB | Yes |
[lk] | wrp0 | | 3728 MiB | |
[lk] boot: Trying to boot from the file system...
[lk] boot: Bootable file system not found. Reverting to android boot.
HARNESS: lk2nd_boot() returned -> aboot would continue to boot_linux_from_mmc() (Android boot partition)
HARNESS: scan-candidate wrp0p26 (userdata) ext2 mount rc=-3
HARNESS: scan-candidate wrp0p25 (recovery) ext2 mount rc=-1
HARNESS: scan-candidate wrp0p24 (cache) ext2 mount rc=0
HARNESS: scan-candidate wrp0p23 (persist) ext2 mount rc=-3
HARNESS: scan-candidate wrp0p22 (system) ext2 mount rc=-3
HARNESS: scan-candidate wrp0p21 (boot) ext2 mount rc=-1
HARNESS: scan-candidate wrp0p0 (modem) ext2 mount rc=-1
HARNESS: total bytes read 45568

View file

@ -0,0 +1,42 @@
[lk] Registering wrapper bio devices...
[lk] block devices:
[lk] | dev | label | size | Leaf |
[lk] | wrp0p26 | userdata | 2542 MiB | Yes |
[lk] | wrp0p25 | recovery | 16 MiB | Yes |
[lk] | wrp0p24 | cache | 128 MiB | Yes |
[lk] | wrp0p23 | persist | 32 MiB | Yes |
[lk] | wrp0p22 | system | 800 MiB | Yes |
[lk] | wrp0p21 | boot | 16 MiB | Yes |
[lk] | wrp0p20 | sec | 16 KiB | Yes |
[lk] | wrp0p19 | fsg | 1 MiB | Yes |
[lk] | wrp0p18 | DDR | 32 KiB | Yes |
[lk] | wrp0p17 | splash | 10 MiB | Yes |
[lk] | wrp0p16 | ssd | 8 KiB | Yes |
[lk] | wrp0p15 | fsc | 1 KiB | Yes |
[lk] | wrp0p14 | misc | 1024 KiB | Yes |
[lk] | wrp0p13 | modemst2 | 1 MiB | Yes |
[lk] | wrp0p12 | modemst1 | 1 MiB | Yes |
[lk] | wrp0p11 | pad | 1024 KiB | Yes |
[lk] | wrp0p10 | hypbak | 512 KiB | Yes |
[lk] | wrp0p9 | hyp | 512 KiB | Yes |
[lk] | wrp0p8 | tzbak | 512 KiB | Yes |
[lk] | wrp0p7 | tz | 1024 KiB | Yes |
[lk] | wrp0p6 | rpmbak | 512 KiB | Yes |
[lk] | wrp0p5 | rpm | 512 KiB | Yes |
[lk] | wrp0p4 | abootbak | 1024 KiB | Yes |
[lk] | wrp0p3 | aboot | 1024 KiB | Yes |
[lk] | wrp0p2 | sbl1bak | 512 KiB | Yes |
[lk] | wrp0p1 | sbl1 | 512 KiB | Yes |
[lk] | wrp0p0 | modem | 64 MiB | Yes |
[lk] | wrp0 | | 3728 MiB | |
[lk] boot: Trying to boot from the file system...
[lk] boot: Bootable file system not found. Reverting to android boot.
HARNESS: lk2nd_boot() returned -> aboot would continue to boot_linux_from_mmc() (Android boot partition)
HARNESS: scan-candidate wrp0p26 (userdata) ext2 mount rc=-3
HARNESS: scan-candidate wrp0p25 (recovery) ext2 mount rc=-1
HARNESS: scan-candidate wrp0p24 (cache) ext2 mount rc=-1
HARNESS: scan-candidate wrp0p23 (persist) ext2 mount rc=-3
HARNESS: scan-candidate wrp0p22 (system) ext2 mount rc=-3
HARNESS: scan-candidate wrp0p21 (boot) ext2 mount rc=-1
HARNESS: scan-candidate wrp0p0 (modem) ext2 mount rc=-1
HARNESS: total bytes read 28160

44
b10/b10b3/cache/emu/F3-no-initrd.out vendored Normal file
View file

@ -0,0 +1,44 @@
[lk] Registering wrapper bio devices...
[lk] block devices:
[lk] | dev | label | size | Leaf |
[lk] | wrp0p26 | userdata | 2542 MiB | Yes |
[lk] | wrp0p25 | recovery | 16 MiB | Yes |
[lk] | wrp0p24 | cache | 128 MiB | Yes |
[lk] | wrp0p23 | persist | 32 MiB | Yes |
[lk] | wrp0p22 | system | 800 MiB | Yes |
[lk] | wrp0p21 | boot | 16 MiB | Yes |
[lk] | wrp0p20 | sec | 16 KiB | Yes |
[lk] | wrp0p19 | fsg | 1 MiB | Yes |
[lk] | wrp0p18 | DDR | 32 KiB | Yes |
[lk] | wrp0p17 | splash | 10 MiB | Yes |
[lk] | wrp0p16 | ssd | 8 KiB | Yes |
[lk] | wrp0p15 | fsc | 1 KiB | Yes |
[lk] | wrp0p14 | misc | 1024 KiB | Yes |
[lk] | wrp0p13 | modemst2 | 1 MiB | Yes |
[lk] | wrp0p12 | modemst1 | 1 MiB | Yes |
[lk] | wrp0p11 | pad | 1024 KiB | Yes |
[lk] | wrp0p10 | hypbak | 512 KiB | Yes |
[lk] | wrp0p9 | hyp | 512 KiB | Yes |
[lk] | wrp0p8 | tzbak | 512 KiB | Yes |
[lk] | wrp0p7 | tz | 1024 KiB | Yes |
[lk] | wrp0p6 | rpmbak | 512 KiB | Yes |
[lk] | wrp0p5 | rpm | 512 KiB | Yes |
[lk] | wrp0p4 | abootbak | 1024 KiB | Yes |
[lk] | wrp0p3 | aboot | 1024 KiB | Yes |
[lk] | wrp0p2 | sbl1bak | 512 KiB | Yes |
[lk] | wrp0p1 | sbl1 | 512 KiB | Yes |
[lk] | wrp0p0 | modem | 64 MiB | Yes |
[lk] | wrp0 | | 3728 MiB | |
[lk] boot: Trying to boot from the file system...
[lk] Initramfs /wrp0p24//initramfs-b9c.cpio.gz does not exist
[lk] Failed to parse extlinux.conf
[lk] boot: Bootable file system not found. Reverting to android boot.
HARNESS: lk2nd_boot() returned -> aboot would continue to boot_linux_from_mmc() (Android boot partition)
HARNESS: scan-candidate wrp0p26 (userdata) ext2 mount rc=-3
HARNESS: scan-candidate wrp0p25 (recovery) ext2 mount rc=-1
HARNESS: scan-candidate wrp0p24 (cache) ext2 mount rc=0
HARNESS: scan-candidate wrp0p23 (persist) ext2 mount rc=-3
HARNESS: scan-candidate wrp0p22 (system) ext2 mount rc=-3
HARNESS: scan-candidate wrp0p21 (boot) ext2 mount rc=-1
HARNESS: scan-candidate wrp0p0 (modem) ext2 mount rc=-1
HARNESS: total bytes read 49664

View file

@ -0,0 +1,40 @@
[lk] Registering wrapper bio devices...
[lk] block devices:
[lk] | dev | label | size | Leaf |
[lk] | wrp0p26 | userdata | 2542 MiB | Yes |
[lk] | wrp0p25 | recovery | 16 MiB | Yes |
[lk] | wrp0p24 | cache | 128 MiB | Yes |
[lk] | wrp0p23 | persist | 32 MiB | Yes |
[lk] | wrp0p22 | system | 800 MiB | Yes |
[lk] | wrp0p21 | boot | 16 MiB | Yes |
[lk] | wrp0p20 | sec | 16 KiB | Yes |
[lk] | wrp0p19 | fsg | 1 MiB | Yes |
[lk] | wrp0p18 | DDR | 32 KiB | Yes |
[lk] | wrp0p17 | splash | 10 MiB | Yes |
[lk] | wrp0p16 | ssd | 8 KiB | Yes |
[lk] | wrp0p15 | fsc | 1 KiB | Yes |
[lk] | wrp0p14 | misc | 1024 KiB | Yes |
[lk] | wrp0p13 | modemst2 | 1 MiB | Yes |
[lk] | wrp0p12 | modemst1 | 1 MiB | Yes |
[lk] | wrp0p11 | pad | 1024 KiB | Yes |
[lk] | wrp0p10 | hypbak | 512 KiB | Yes |
[lk] | wrp0p9 | hyp | 512 KiB | Yes |
[lk] | wrp0p8 | tzbak | 512 KiB | Yes |
[lk] | wrp0p7 | tz | 1024 KiB | Yes |
[lk] | wrp0p6 | rpmbak | 512 KiB | Yes |
[lk] | wrp0p5 | rpm | 512 KiB | Yes |
[lk] | wrp0p4 | abootbak | 1024 KiB | Yes |
[lk] | wrp0p3 | aboot | 1024 KiB | Yes |
[lk] | wrp0p2 | sbl1bak | 512 KiB | Yes |
[lk] | wrp0p1 | sbl1 | 512 KiB | Yes |
[lk] | wrp0p0 | modem | 64 MiB | Yes |
[lk] | wrp0 | | 3728 MiB | |
[lk] boot: Trying to boot from the file system...
[lk] Trying to boot 'b9c'
[lk] Decompressing the kernel...
HARNESS: boot_linux reached: kernel @DDR+0x0 tags @DDR+0x20a9000 ramdisk @DDR+0x22a9000 (16082426) boot_type 0
HARNESS: kernel magic 0x644d5241 image_size 0x1820000 end @DDR+0x1820000
HARNESS: cmdline 'earlycon console=tty0 console=ttyMSM0,115200n8 ignore_loglevel loglevel=8 rdinit=/init fbcon=font:6x8 consoleblank=0'
HARNESS: kernel sha256 3afc6c77f3ed4b4ad82f61914b9cca354c3bdcaf5d102d7782a0cd5577cbca61 (24686600 bytes)
HARNESS: dtb sha256 7ca9cc794a3b85d3b7240f6311ad03bee9e1a4a59aae2ed9438318e853f7c3dc (67425 bytes)
HARNESS: ramdisk sha256 ac518e27e2957ad5e4515969b9a3808024e11ef8d1a79433a899a67dbc644558 (16082426 bytes)

View file

@ -0,0 +1,40 @@
[lk] Registering wrapper bio devices...
[lk] block devices:
[lk] | dev | label | size | Leaf |
[lk] | wrp0p26 | userdata | 2542 MiB | Yes |
[lk] | wrp0p25 | recovery | 16 MiB | Yes |
[lk] | wrp0p24 | cache | 128 MiB | Yes |
[lk] | wrp0p23 | persist | 32 MiB | Yes |
[lk] | wrp0p22 | system | 800 MiB | Yes |
[lk] | wrp0p21 | boot | 16 MiB | Yes |
[lk] | wrp0p20 | sec | 16 KiB | Yes |
[lk] | wrp0p19 | fsg | 1 MiB | Yes |
[lk] | wrp0p18 | DDR | 32 KiB | Yes |
[lk] | wrp0p17 | splash | 10 MiB | Yes |
[lk] | wrp0p16 | ssd | 8 KiB | Yes |
[lk] | wrp0p15 | fsc | 1 KiB | Yes |
[lk] | wrp0p14 | misc | 1024 KiB | Yes |
[lk] | wrp0p13 | modemst2 | 1 MiB | Yes |
[lk] | wrp0p12 | modemst1 | 1 MiB | Yes |
[lk] | wrp0p11 | pad | 1024 KiB | Yes |
[lk] | wrp0p10 | hypbak | 512 KiB | Yes |
[lk] | wrp0p9 | hyp | 512 KiB | Yes |
[lk] | wrp0p8 | tzbak | 512 KiB | Yes |
[lk] | wrp0p7 | tz | 1024 KiB | Yes |
[lk] | wrp0p6 | rpmbak | 512 KiB | Yes |
[lk] | wrp0p5 | rpm | 512 KiB | Yes |
[lk] | wrp0p4 | abootbak | 1024 KiB | Yes |
[lk] | wrp0p3 | aboot | 1024 KiB | Yes |
[lk] | wrp0p2 | sbl1bak | 512 KiB | Yes |
[lk] | wrp0p1 | sbl1 | 512 KiB | Yes |
[lk] | wrp0p0 | modem | 64 MiB | Yes |
[lk] | wrp0 | | 3728 MiB | |
[lk] boot: Trying to boot from the file system...
[lk] Trying to boot 'b10b3'
[lk] Decompressing the kernel...
HARNESS: boot_linux reached: kernel @DDR+0x0 tags @DDR+0x20a9000 ramdisk @DDR+0x22a9000 (16082426) boot_type 0
HARNESS: kernel magic 0x644d5241 image_size 0x1830000 end @DDR+0x1830000
HARNESS: cmdline 'earlycon console=tty0 console=ttyMSM0,115200n8 ignore_loglevel loglevel=8 rdinit=/init fbcon=font:6x8 consoleblank=0'
HARNESS: kernel sha256 5afd371e3bb1d2a2119071622194ae533db9f456408fda696ad4aa3d9df871fb (24754184 bytes)
HARNESS: dtb sha256 e47762d1dcd0af6e2acb711fa47ecc13769cd6bcb81259ce50635e8b18b6514a (68093 bytes)
HARNESS: ramdisk sha256 ac518e27e2957ad5e4515969b9a3808024e11ef8d1a79433a899a67dbc644558 (16082426 bytes)

28
b10/b10b3/cache/emu/map-F1-no-conf.txt vendored Normal file
View file

@ -0,0 +1,28 @@
0 34 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/gpt-primary-34.bin
131072 131072 /home/q/doc/modem/jz08-aurora/logs/b5a/A4pre/modem.bin
262144 1024 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/sbl1.bin
263168 1024 /home/q/doc/modem/jz08-aurora/partitions/sbl1bak.bin
264192 2048 /home/q/doc/modem/jz08-aurora/b5a/aboot-lk1st-aurora-autoboot.pad1M
266240 2048 /home/q/doc/modem/jz08-aurora/partitions/abootbak.bin
268288 1024 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/rpm.bin
269312 1024 /home/q/doc/modem/jz08-aurora/partitions/rpmbak.bin
270336 2048 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/tz.bin
305184 1024 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/tzbak-305184.bin
272384 1024 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/hyp.bin
273408 1024 /home/q/doc/modem/jz08-aurora/partitions/hypbak.bin
274432 2048 /home/q/doc/modem/jz08-aurora/partitions/pad.bin
276480 3072 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/modemst1.bin
279552 3072 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/modemst2.bin
282624 2048 /home/q/doc/modem/jz08-aurora/partitions/misc.bin
284672 2 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/fsc.bin
284674 16 /home/q/doc/modem/jz08-aurora/partitions/ssd.bin
284690 20480 /home/q/doc/modem/jz08-aurora/partitions/splash.bin
393216 64 /home/q/doc/modem/jz08-aurora/partitions/DDR.bin
393280 3072 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/fsg.bin
396352 32 /home/q/doc/modem/jz08-aurora/partitions/sec.bin
396384 32768 /home/q/doc/modem/jz08-aurora/b5a/boot-emmc1-16MiB.img
429152 1638400 /home/q/doc/modem/jz08-aurora/logs/b5a/A4pre/system.bin
2067552 65536 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/persist.bin
2133088 262144 /tmp/tmp.9yMft8rFLs/F1-no-conf.img
2395232 32768 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/recovery.bin
2428000 5206911 /home/q/doc/modem/jz08-aurora/logs/b5a/A4pre/userdata.bin

View file

@ -0,0 +1,28 @@
0 34 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/gpt-primary-34.bin
131072 131072 /home/q/doc/modem/jz08-aurora/logs/b5a/A4pre/modem.bin
262144 1024 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/sbl1.bin
263168 1024 /home/q/doc/modem/jz08-aurora/partitions/sbl1bak.bin
264192 2048 /home/q/doc/modem/jz08-aurora/b5a/aboot-lk1st-aurora-autoboot.pad1M
266240 2048 /home/q/doc/modem/jz08-aurora/partitions/abootbak.bin
268288 1024 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/rpm.bin
269312 1024 /home/q/doc/modem/jz08-aurora/partitions/rpmbak.bin
270336 2048 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/tz.bin
305184 1024 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/tzbak-305184.bin
272384 1024 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/hyp.bin
273408 1024 /home/q/doc/modem/jz08-aurora/partitions/hypbak.bin
274432 2048 /home/q/doc/modem/jz08-aurora/partitions/pad.bin
276480 3072 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/modemst1.bin
279552 3072 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/modemst2.bin
282624 2048 /home/q/doc/modem/jz08-aurora/partitions/misc.bin
284672 2 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/fsc.bin
284674 16 /home/q/doc/modem/jz08-aurora/partitions/ssd.bin
284690 20480 /home/q/doc/modem/jz08-aurora/partitions/splash.bin
393216 64 /home/q/doc/modem/jz08-aurora/partitions/DDR.bin
393280 3072 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/fsg.bin
396352 32 /home/q/doc/modem/jz08-aurora/partitions/sec.bin
396384 32768 /home/q/doc/modem/jz08-aurora/b5a/boot-emmc1-16MiB.img
429152 1638400 /home/q/doc/modem/jz08-aurora/logs/b5a/A4pre/system.bin
2067552 65536 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/persist.bin
2133088 262144 /tmp/tmp.9yMft8rFLs/F10-zeroed-cache.img
2395232 32768 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/recovery.bin
2428000 5206911 /home/q/doc/modem/jz08-aurora/logs/b5a/A4pre/userdata.bin

View file

@ -0,0 +1,28 @@
0 34 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/gpt-primary-34.bin
131072 131072 /home/q/doc/modem/jz08-aurora/logs/b5a/A4pre/modem.bin
262144 1024 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/sbl1.bin
263168 1024 /home/q/doc/modem/jz08-aurora/partitions/sbl1bak.bin
264192 2048 /home/q/doc/modem/jz08-aurora/b5a/aboot-lk1st-aurora-autoboot.pad1M
266240 2048 /home/q/doc/modem/jz08-aurora/partitions/abootbak.bin
268288 1024 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/rpm.bin
269312 1024 /home/q/doc/modem/jz08-aurora/partitions/rpmbak.bin
270336 2048 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/tz.bin
305184 1024 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/tzbak-305184.bin
272384 1024 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/hyp.bin
273408 1024 /home/q/doc/modem/jz08-aurora/partitions/hypbak.bin
274432 2048 /home/q/doc/modem/jz08-aurora/partitions/pad.bin
276480 3072 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/modemst1.bin
279552 3072 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/modemst2.bin
282624 2048 /home/q/doc/modem/jz08-aurora/partitions/misc.bin
284672 2 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/fsc.bin
284674 16 /home/q/doc/modem/jz08-aurora/partitions/ssd.bin
284690 20480 /home/q/doc/modem/jz08-aurora/partitions/splash.bin
393216 64 /home/q/doc/modem/jz08-aurora/partitions/DDR.bin
393280 3072 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/fsg.bin
396352 32 /home/q/doc/modem/jz08-aurora/partitions/sec.bin
396384 32768 /home/q/doc/modem/jz08-aurora/b5a/boot-emmc1-16MiB.img
429152 1638400 /home/q/doc/modem/jz08-aurora/logs/b5a/A4pre/system.bin
2067552 65536 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/persist.bin
2133088 262144 /tmp/tmp.9yMft8rFLs/F3-no-initrd.img
2395232 32768 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/recovery.bin
2428000 5206911 /home/q/doc/modem/jz08-aurora/logs/b5a/A4pre/userdata.bin

View file

@ -0,0 +1,28 @@
0 34 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/gpt-primary-34.bin
131072 131072 /home/q/doc/modem/jz08-aurora/logs/b5a/A4pre/modem.bin
262144 1024 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/sbl1.bin
263168 1024 /home/q/doc/modem/jz08-aurora/partitions/sbl1bak.bin
264192 2048 /home/q/doc/modem/jz08-aurora/b5a/aboot-lk1st-aurora-autoboot.pad1M
266240 2048 /home/q/doc/modem/jz08-aurora/partitions/abootbak.bin
268288 1024 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/rpm.bin
269312 1024 /home/q/doc/modem/jz08-aurora/partitions/rpmbak.bin
270336 2048 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/tz.bin
305184 1024 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/tzbak-305184.bin
272384 1024 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/hyp.bin
273408 1024 /home/q/doc/modem/jz08-aurora/partitions/hypbak.bin
274432 2048 /home/q/doc/modem/jz08-aurora/partitions/pad.bin
276480 3072 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/modemst1.bin
279552 3072 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/modemst2.bin
282624 2048 /home/q/doc/modem/jz08-aurora/partitions/misc.bin
284672 2 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/fsc.bin
284674 16 /home/q/doc/modem/jz08-aurora/partitions/ssd.bin
284690 20480 /home/q/doc/modem/jz08-aurora/partitions/splash.bin
393216 64 /home/q/doc/modem/jz08-aurora/partitions/DDR.bin
393280 3072 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/fsg.bin
396352 32 /home/q/doc/modem/jz08-aurora/partitions/sec.bin
396384 32768 /home/q/doc/modem/jz08-aurora/b5a/boot-emmc1-16MiB.img
429152 1638400 /home/q/doc/modem/jz08-aurora/logs/b5a/A4pre/system.bin
2067552 65536 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/persist.bin
2133088 262144 /home/q/doc/modem/jz08-aurora/b9/b9c/cache/cache-extlinux-b9c.img
2395232 32768 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/recovery.bin
2428000 5206911 /home/q/doc/modem/jz08-aurora/logs/b5a/A4pre/userdata.bin

View file

@ -0,0 +1,28 @@
0 34 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/gpt-primary-34.bin
131072 131072 /home/q/doc/modem/jz08-aurora/logs/b5a/A4pre/modem.bin
262144 1024 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/sbl1.bin
263168 1024 /home/q/doc/modem/jz08-aurora/partitions/sbl1bak.bin
264192 2048 /home/q/doc/modem/jz08-aurora/b5a/aboot-lk1st-aurora-autoboot.pad1M
266240 2048 /home/q/doc/modem/jz08-aurora/partitions/abootbak.bin
268288 1024 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/rpm.bin
269312 1024 /home/q/doc/modem/jz08-aurora/partitions/rpmbak.bin
270336 2048 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/tz.bin
305184 1024 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/tzbak-305184.bin
272384 1024 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/hyp.bin
273408 1024 /home/q/doc/modem/jz08-aurora/partitions/hypbak.bin
274432 2048 /home/q/doc/modem/jz08-aurora/partitions/pad.bin
276480 3072 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/modemst1.bin
279552 3072 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/modemst2.bin
282624 2048 /home/q/doc/modem/jz08-aurora/partitions/misc.bin
284672 2 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/fsc.bin
284674 16 /home/q/doc/modem/jz08-aurora/partitions/ssd.bin
284690 20480 /home/q/doc/modem/jz08-aurora/partitions/splash.bin
393216 64 /home/q/doc/modem/jz08-aurora/partitions/DDR.bin
393280 3072 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/fsg.bin
396352 32 /home/q/doc/modem/jz08-aurora/partitions/sec.bin
396384 32768 /home/q/doc/modem/jz08-aurora/b5a/boot-emmc1-16MiB.img
429152 1638400 /home/q/doc/modem/jz08-aurora/logs/b5a/A4pre/system.bin
2067552 65536 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/persist.bin
2133088 262144 /home/q/doc/modem/jz08-aurora/b10/b10b3/cache/cache-extlinux-b10b3.img
2395232 32768 /home/q/doc/modem/jz08-aurora/logs/b5a/A3/recovery.bin
2428000 5206911 /home/q/doc/modem/jz08-aurora/logs/b5a/A4pre/userdata.bin

13
b10/b10b3/cache/emu/run-emu-b10b3.sh vendored Normal file
View file

@ -0,0 +1,13 @@
#!/bin/bash
# lk2nd-23.1 extlinux emulator (b5b/emu) on: S8 (B9C cache = current flash, regression vs b9/b9c/cache/emu S7), S9 B10B-3 candidate, fault variants. Offline, 480s.
cd ~/doc/modem/jz08-aurora/b10/b10b3/cache/emu; E=../../../../b5b/emu; GPT=../../../../logs/b5a/A3/gpt-primary-34.bin; C=/home/q/doc/modem/jz08-aurora/b10/b10b3/cache/cache-extlinux-b10b3.img
run() { python3 $E/mkmap.py $2 > map-$1.txt; $E/lk2nd-scan-emu map-$1.txt $GPT $3 > $1.out 2>&1; echo "== $1 rc=$? :: $(grep -E "Trying to boot|Reverting|boot_linux reached|ramdisk sha256|Could not" $1.out | tr '\n' ' ' | cut -c1-260)"; }
run S8-b9c-regression /home/q/doc/modem/jz08-aurora/b9/b9c/cache/cache-extlinux-b9c.img 24686600
cmp <(grep HARNESS S8-b9c-regression.out) <(grep HARNESS ../../../../b9/b9c/cache/emu/S7-b9c-candidate.out) && echo " S8 HARNESS lines == b9/b9c/cache/emu/S7-b9c-candidate.out"
run S9-b10b3-candidate $C 24754184; # kernel_len = b10b3 Image (5afd371e, 24754184 B)
grep HARNESS S9-b10b3-candidate.out
D=$(mktemp -d); v(){ cp $C $D/$1.img; chmod u+w $D/$1.img; }
v F3-no-initrd; /sbin/debugfs -w -R "rm /initramfs-b9c.cpio.gz" $D/F3-no-initrd.img >/dev/null 2>&1
v F1-no-conf; /sbin/debugfs -w -R "rm /extlinux/extlinux.conf" $D/F1-no-conf.img >/dev/null 2>&1
head -c 134217728 /dev/zero > $D/F10-zeroed-cache.img
for f in $D/F*.img; do run $(basename $f .img) $f; done; rm -rf $D

6
b10/b10b3/cache/extlinux-b10b3.conf vendored Normal file
View file

@ -0,0 +1,6 @@
default b10b3
label b10b3
linux /Image.gz-dtb
fdt /aurora-b10b3.dtb
initrd /initramfs-b9c.cpio.gz
append earlycon console=tty0 console=ttyMSM0,115200n8 ignore_loglevel loglevel=8 rdinit=/init fbcon=font:6x8 consoleblank=0

27
b10/b10b3/cache/mkfs-cache-b10b3.sh vendored Normal file
View file

@ -0,0 +1,27 @@
#!/bin/bash
# B10B-3 cache CANDIDATE (not for writing without a separate GO): exact recipe of b9/b9c/cache/mkfs-cache-b9c.sh (b9ce13c9); differs only in
# the kernel file (b10b3 production Image.gz-dtb = kernel 7.2.7-aurora-b10b3 1164b1c7 + production DTB msm8916-jz08-aurora-b10b3 e47762d1),
# fdt (production DTB), file names, extlinux label, fs label and UUIDs. initrd and append = B9C unchanged. Runs on 480s (mke2fs 1.47.2). Offline only.
# The image contains the AP PSK (in the initramfs) - never publish it.
set -e
cd ~/doc/modem/jz08-aurora/b10/b10b3/cache
OUT=${1:-cache-extlinux-b10b3.img}; F=../out
echo "0fef41b262917c8ae308fa222da0017e2b3cb3ec5da1ca8ba18d0318476761a3 $F/cmdline.txt" | sha256sum -c
echo "5e69f8431d42a9ddb9d64f06dcc408cd8dbfa9dffdba7e9b06e4ba58075ed1c7 $F/Image.gz-dtb" | sha256sum -c
echo "e47762d1dcd0af6e2acb711fa47ecc13769cd6bcb81259ce50635e8b18b6514a $F/aurora-b10b3.dtb" | sha256sum -c
echo "ac518e27e2957ad5e4515969b9a3808024e11ef8d1a79433a899a67dbc644558 $F/initramfs.cpio.gz" | sha256sum -c
ST=$(mktemp -d); mkdir -p $ST/extlinux
cp $F/Image.gz-dtb $F/aurora-b10b3.dtb $ST/; cp $F/initramfs.cpio.gz $ST/initramfs-b9c.cpio.gz
printf "default b10b3\nlabel b10b3\n\tlinux /Image.gz-dtb\n\tfdt /aurora-b10b3.dtb\n\tinitrd /initramfs-b9c.cpio.gz\n\tappend %s\n" "$(cat $F/cmdline.txt)" > $ST/extlinux/extlinux.conf
cp $ST/extlinux/extlinux.conf extlinux-b10b3.conf
chmod 0644 $ST/*.* $ST/extlinux/extlinux.conf; chmod 0755 $ST $ST/extlinux
find $ST -exec touch -h -d @1790726400 {} +
rm -f $OUT; truncate -s 134217728 $OUT
E2FSPROGS_FAKE_TIME=1790726400 /sbin/mke2fs -F -q -t ext2 -O none,filetype,sparse_super \
-b 4096 -I 128 -N 64 -m 0 -L aurora-b10b3 -U 4a5a3038-b6f0-4000-8000-0000b10b3c00 \
-E root_owner=0:0,hash_seed=4a5a3038-b6f0-4000-8000-0000b10b3c01 -d $ST $OUT 32768
rm -rf $ST
for f in / /lost+found /extlinux /extlinux/extlinux.conf /Image.gz-dtb /aurora-b10b3.dtb /initramfs-b9c.cpio.gz; do for t in atime ctime mtime; do echo "sif $f $t @1790726400"; done; done > /tmp/b10b3-sif.$$
/sbin/debugfs -w -f /tmp/b10b3-sif.$$ $OUT >/dev/null 2>&1; rm -f /tmp/b10b3-sif.$$
/sbin/e2fsck -fn $OUT >/dev/null 2>&1 && echo "e2fsck -fn clean"
stat -c "%n %s" $OUT; sha256sum $OUT

Some files were not shown because too many files have changed in this diff Show more