chore: 导入旧记忆备份供恢复

This commit is contained in:
2026-09-23 22:38:40 +08:00
parent 5313fcee7a
commit 6a6a895eaf
638 changed files with 29816 additions and 1 deletions
@@ -0,0 +1,115 @@
---
title: Architecture Overview of the BDYG18Pro Armbian Build System
type: curated
permalink: main/projects/d0abaf3f-da04-4dd4-a228-bacf68f44e8f/curated/development/architecture-overview-of-the-bdyg18-pro-armbian-build-system
stable_id: adb3722a-51e7-4ec5-88cc-a95dc399a7a1
scope: project
project_id: d0abaf3f-da04-4dd4-a228-bacf68f44e8f
workspace_type: development
usage_profile_id: null
preference_context: development
document_type: architecture
revision: 8
source_memory_ids: []
source_checkpoint_ids: []
source_file_ids: []
source_git_commit: 36234e0082845515a053c10ee552ce35a03415f0
source_git_commits:
- 36234e0082845515a053c10ee552ce35a03415f0
source_agent_sync_ids: []
model_connection: Sub2API
model_name: openai/gpt-oss-120b
source_count: 125
source_revisions:
memory:11052d10-1adf-4d39-800a-08f9ae708758: '1'
memory:7cf6c014-d2fa-4f99-9ed9-c070b108d3c7: '1'
memory:bea4a5ba-4685-4869-a02e-f0f1c7f733ea: '1'
memory:340af5e9-b3e5-423a-9971-b370992738ce: '1'
memory:d5cbbc04-5929-4583-90b4-bd6c8295db25: '1'
source_dispositions:
processed: 78
unchanged: 0
unsupported: 47
skipped: 0
cited_source_ids:
- memory:11052d10-1adf-4d39-800a-08f9ae708758
- memory:7cf6c014-d2fa-4f99-9ed9-c070b108d3c7
- memory:bea4a5ba-4685-4869-a02e-f0f1c7f733ea
- memory:340af5e9-b3e5-423a-9971-b370992738ce
- memory:d5cbbc04-5929-4583-90b4-bd6c8295db25
job_cited_source_ids: []
conflicts: []
supersedes: []
preferences: []
source_cursor: 0
source_hash: 5fe39ad3a37421f812566dd39f89d4c28fc6078c8d39031dff10eb6eb8d72e00
prompt_version: 2026-08-12.3
schema_version: '3'
curation_job_id: 75339546-fef5-4656-8969-ba806e3ea6f0
created_at: '2026-08-08T10:02:33.012303+00:00'
updated_at: '2026-08-16T18:45:05.147636+00:00'
tags:
- hardware
- boot
- docker
- repo
---
# Architecture Overview
## 1. Hardware Platform
| Component | Specification |
|-----------|---------------|
| **SoC** | Rockchip RK3568 – quad‑core Cortex‑A55 @ 2 GHz, Mali‑G710 GPU, VPU, RGA, HDMI, PCIe, USB 3.0. |
| **Memory** | 8 GB DDR4 HS200 (2.5 V). |
| **Storage** | 256 GB eMMC (boot + rootfs) + 32 MB Winbond W25Q256JW SPI‑NOR (blank). |
| **Switch** | Realtek RTL8367S 5‑port DSA (GMAC1 active, GMAC0 disabled). |
| **Network** | Ethernet MAC‑1 (`end0`), TSO disabled, TCP congestion = **Cubic**. |
| **UART console** | `serial@fe660000` → `ttyS2` @ 1 500 000 baud (pins RX/D0, TX/D1). |
*Source*: `evidence/dtb/rk3568-bdy-g18-pro.fixed.dts`, `evidence/dtb/rk3568-bdy-g18-pro.orig.dts`.
## 2. Boot Flow
1. **MaskROM** reads SPL from DDR (address 0x08000) after power‑on.
2. **SPL** (Rockchip `rk356x_spl_loader_v1.25.114.bin` preferred) initialises DDR and loads **U‑Boot** (mainline 2026.04) from the SPL payload.
3. **U‑Boot** loads a **FIT** image (`uboot‑fit‑rk3568‑bdy‑g18‑pro.dts`) containing BL31, kernel, and DTB.
4. Kernel `Linux 6.18.40‑current‑rockchip64` boots with DTB `rk3568‑bdy‑g18‑pro.dtb`.
All steps are verified by flashing the SPL to SPI‑NOR, reading back SHA‑256, and confirming boot success (see `evidence/selfbuilt-uboot-brideup.txt`).
## 3. Repository Layout & Build Infrastructure
| Directory | Purpose |
|-----------|---------|
| `arm64‑custom/` | Custom board scripts & patches (tracked). |
| `evidence/` | Raw logs, screenshots, serial captures (tracked). |
| `aidocs/` | Additional documentation (tracked). |
| `outputs/armbian-g18pro/` | Final artefacts – compressed image, SHA‑256 manifest, verification report. |
| `armbian‑g18pro‑cache` (Docker volume) | Persistent cache (~19 GB) for U‑Boot, kernel, ccache. |
*Build orchestrator*: Python script `armbian‑custom/build_g18pro.py` + PowerShell wrapper `build_g18pro.ps1`. Docker image `ghcr.io/armbian/docker-armbian-build:armbian-ubuntu-noble-latest` is used; shallow Git clones (`--depth 1`) minimise download size.
## 4. Runtime System State (as of 16 Aug 2026)
- **Kernel**: `6.18.40‑current‑rockchip64`
- **U‑Boot**: Mainline v2026.04 on SPI‑NOR; vendor U‑Boot remains on eMMC as fallback.
- **Network**: `tso` off, `cubic` congestion, throughput ≈ 30 Mbps.
- **Power‑off**: `systemctl poweroff` hangs (requires manual power‑cycle); `syscon‑reboot‑mode` DTB node restores clean reboot.
- **Docker cache**: volume present, speeds up incremental builds.
*Source*: `abe4221f-b290-4384-ad8f-1f72c360b893`.
---
**References**
- `c650c1e4-18ee-44ad-af42-b7632fbdcf5c`
- `dd496c6d-1619-457d-86a9-da57f5b866d7`
- `S-1`
- `aa3057ab-54c5-4ffc-ba85-c2f2396ee60c`
- `bf88c265-4749-4c50-85bc-4bae25298cd5`
- `ff34c6eb-6bba-41e5-9e43-ff80941fa823`
- `adb3722a-51e7-4ec5-88cc-a95dc399a7a1`
- `abe4221f-b290-4384-ad8f-1f72c360b893`
@@ -0,0 +1,186 @@
---
title: BDY‑G18‑Pro Armbian Builder – Deployment Guide
type: curated
permalink: main/projects/d0abaf3f-da04-4dd4-a228-bacf68f44e8f/curated/development/bdy-g18-pro-armbian-builder-deployment-guide
stable_id: 818f5e7c-bf74-4bb0-9bb0-187f7243cf18
scope: project
project_id: d0abaf3f-da04-4dd4-a228-bacf68f44e8f
workspace_type: development
usage_profile_id: null
preference_context: development
document_type: deployment
revision: 8
source_memory_ids: []
source_checkpoint_ids: []
source_file_ids: []
source_git_commit: 36234e0082845515a053c10ee552ce35a03415f0
source_git_commits:
- 36234e0082845515a053c10ee552ce35a03415f0
source_agent_sync_ids: []
model_connection: Sub2API
model_name: openai/gpt-oss-120b
source_count: 125
source_revisions:
memory:11052d10-1adf-4d39-800a-08f9ae708758: '1'
memory:b70c1a22-6834-4e59-936c-1945b04273b7: '1'
memory:340af5e9-b3e5-423a-9971-b370992738ce: '1'
memory:bea4a5ba-4685-4869-a02e-f0f1c7f733ea: '1'
memory:d5cbbc04-5929-4583-90b4-bd6c8295db25: '1'
memory:7cf6c014-d2fa-4f99-9ed9-c070b108d3c7: '1'
source_dispositions:
processed: 78
unchanged: 0
unsupported: 47
skipped: 0
cited_source_ids:
- memory:11052d10-1adf-4d39-800a-08f9ae708758
- memory:b70c1a22-6834-4e59-936c-1945b04273b7
- memory:340af5e9-b3e5-423a-9971-b370992738ce
- memory:bea4a5ba-4685-4869-a02e-f0f1c7f733ea
- memory:d5cbbc04-5929-4583-90b4-bd6c8295db25
- memory:7cf6c014-d2fa-4f99-9ed9-c070b108d3c7
- git:tools/driver/DriverAssitant_v5.14/Driver/x64/win10/rockusb.inf
- git:tools/rkdevtool/revision.txt
- git:tools/loader/WHICH-LOADER.txt
- git:tools/driver/DriverAssitant_v5.14/Readme.txt
- git:tools/driver/DriverAssitant_v5.14/revison.log
job_cited_source_ids: []
conflicts: []
supersedes: []
preferences: []
source_cursor: 0
source_hash: 5fe39ad3a37421f812566dd39f89d4c28fc6078c8d39031dff10eb6eb8d72e00
prompt_version: 2026-08-12.3
schema_version: '3'
curation_job_id: 75339546-fef5-4656-8969-ba806e3ea6f0
created_at: '2026-08-08T10:02:39.887705+00:00'
updated_at: '2026-08-16T18:45:13.856584+00:00'
tags:
- deployment
- flash
- loader
- kernel
- dtb
- docker
- security
- documentation
---
# BDY‑G18 Pro Armbian Builder – Deployment Overview
**Workspace**: `BDYG18ProArmbianBuilder` (type **development**)
**Scope**: Reproducible creation of a flash‑able Armbian image for the BDY‑G18‑Pro RK3568 router and reliable programming of the device via the Rockchip **RKDevTool** utility.
---
## 1. Project Goal & Target Image
- **Goal**: Produce a reproducible, flash‑able Armbian image (Community DIY 13.3 Debian Trixie) with kernel 6.18.x (current build 6.18.40).
- **Preferred image**: *stock* – uses the vendor‑verified boot chain (U‑Boot SPL/U‑Boot on SPI‑NOR) with a minimal Armbian rootfs.
- **Self‑built mode** is available for auditability.
> Sources: `c650c1e4-18ee-44ad-af42-b7632fbdcf5c`, `dd496c6d-1619-457d-86a9-da57f5b866d7`, `aa3057ab-54c5-4ffc-ba85-c2f2396ee60c`
---
## 2. Repository Layout & Build Infrastructure
| Directory | Purpose |
|----------|---------|
| `arm64‑custom/` | Build scripts (`build_g18pro.py`, `build_g18pro.ps1`). |
| `evidence/` | Collected logs, DTB files, kernel configs. |
| `outputs/armbian-g18pro/` | Final artefacts – compressed image, SHA‑256 manifest, verification report, build log. |
| `armbian‑g18pro‑cache` (Docker volume) | Persistent cache (~19 GB) for U‑Boot, kernel, rootfs, ccache. |
> Sources: `adb3722a-51e7-4ec5-88cc-a95dc399a7a1`, `Batch 2/16`
The **Docker image** used is `ghcr.io/armbian/docker-armbian-build:armbian-ubuntu-noble-latest`. The orchestrator is a Python script plus a PowerShell wrapper that works on Windows PowerShell **or** Linux Bash.
> Sources: `adb3722a-51e7-4ec5-88cc-a95dc399a7a1`
---
## 3. Flash Procedure (RKDevTool)
1. **Verify target storage** – select **EMMC** (not SPI‑NOR) in the *Read Flash Info* dialog.
2. Use **RKDevTool V3.37+** (the latest revision listed in the change log).
3. Load the **preferred loader** `rk356x_spl_loader_v1.25.114.bin` (SHA‑256 `d7db6f39…9bba`).
4. **Download Boot** – copies the loader to DDR (RAM) only; no persistent write.
5. *(Optional)* **Switch Storage** if the board has multiple media (UFS, SPI‑NOR).
6. **Burn Loader** – writes the ID‑Block (SPL) to the selected storage.
7. **Flash partitions** – address 0x00000000, force‑address‑write enabled, load the compressed `.img.xz` (≈ 2.12 GiB).
8. After flashing, run `systemctl reboot` (the `syscon‑reboot‑mode` DTB node forces a clean reboot).
9. Verify with `rkdevtool verify` or compare the SHA‑256 manifest against the image file.
> Sources: `6`, `7`, `16` (loader 1), `818f5e7c-bf74-4bb0-9bb0-187f7243cf18`
### 3.1 Loader Provenance
| Loader | SHA‑256 | Size | Build date | Remarks |
|--------|----------|------|------------|---------|
| `rk356x_spl_loader_v1.25.114.bin` | `d7db6f39…9bba` | 481 KB | 2026‑01‑09 | Clean upstream copy – **primary** choice. |
| `rk356x_spl_loader_v1.21.113.bin` | `589f1a70…8f8b` | 475 KB | – | 8‑byte timestamp/CRC delta – secondary fallback. |
| `rk3568_MiniLoaderAll.bin` | `512211c9…3315d2` | 481 KB | – | 10‑byte delta – tertiary fallback. |
> Sources: `16` entries 1‑3
---
## 4. Kernel & System Configuration
- **Kernel**: Linux 6.18.40‑current‑rockchip64 (Armbian 26.05.0).
- **DTB**: `rk3568‑bdy‑g18‑pro.dtb` (stock) with the following key patches applied:
- `syscon‑reboot‑mode` node (clean reboots).
- `snps,tso` removed (TSO disabled).
- GMAC0 reset‑storm disabled.
- **Root‑flags**: `rw,errors=remount-ro` aligned in both `armbianEnv.txt` and `extlinux.conf`.
- **Networking**: TCP congestion control set to **Cubic**; TSO/GSO disabled.
- **Docker**: Cache volume retained, cgroup options added via `armbianEnv.txt`.
> Sources: `aa3057ab-54c5-4ffc-ba85-c2f2396ee60c`, `ff34c6eb-6bba-41e5-9e43-ff80941fa823`, `evidence/live-system/as-shipped-snapshot.txt`, `evidence/live-system/tso-fix-verification-2026-07-31.txt`, `evidence/vendor-backup/vendor-armbianEnv.txt`, `evidence/vendor-backup/vendor-extlinux.conf`
---
## 5. Key Decisions & Rationale
| # | Decision | Rationale |
|---|----------|-----------|
| 1 | Keep **stock U‑Boot** (no custom SPL compile). | Simplifies firmware supply‑chain; stock boot chain is verified. |
| 2 | Remove original `emergency‑reboot.shutdown` hook (now redundant). | The new emergency‑restart script (`sysrq‑b`) already guarantees clean reboots. |
| 3 | Add `syscon‑reboot‑mode` DTB node and enable it. | Fixes power‑off hang; clean reboot works without manual power‑cycle. |
| 4 | Disable hardware TSO (`snps,tso`). | Eliminates massive retransmission storms; network throughput ↑ to 29.6 Mbps. |
| 5 | Set TCP congestion to **Cubic** via sysctl. | Improves TCP performance on the router. |
| 6 | Enforce SHA‑256 verification of flashed images. | Prevents accidental NOR overwrite (Failure A on 2026‑07‑25). |
| 7 | Strip proxy variables inside Docker; optional `G18PRO_PROXY`. | Avoids proxy leakage into container builds. |
| 8 | Force LF line endings via `.gitattributes`; disable `core.autocrlf`. | Prevents CRLF corruption in containers. |
| 9 | Compress final image with `xz` and record SHA‑256. | Size savings and reproducibility. |
|10| Use **Vaultwarden** for credential storage – repository stores only entry **name** and **purpose**. | Secrets never appear in VCS. |
|11| AI / Git integration disabled by default. | Keeps builds deterministic. |
|12| Shallow Git clones, pin `RKBIN_GIT_COMMIT=ce50c0d1`. | Faster, reproducible builds. |
> Sources: `aa3057ab-54c5-4ffc-ba85-c2f2396ee60c`, `ff34c6eb-6bba-41e5-9e43-ff80941fa823`, `bf88c265-4749-4c50-85bc-4bae25298cd5`, `adb3722a-51e7-4ec5-88cc-a95dc399a7a1`, `Batch 2/16`, `105b328f-4bda-4641-90a7-7282ef156316`
---
## 6. Open / Ongoing Deployment Tasks
| # | Task | Status |
|---|------|--------|
| 1 | Verify tiny‑SPI SPL can read > 8 MiB from SPI‑NOR. | Unresolved – needs measurement. |
| 2 | Add missing interrupt‑controller node for RTL8367S in DTB. | Open. |
| 3 | Validate PCIe BAR allocation (`pci=realloc`). | Planned. |
| 4 | Pin `RKBIN_GIT_COMMIT` permanently (currently `ce50c0d1`). | Open. |
| 5 | Test `selfbuilt‑ums` mode (USB‑mass‑storage) for field diagnostics. | Open. |
| 6 | Implement post‑flash verification watchdog script. | Open. |
| 7 | Keep `rockusb.inf` catalog signed (`rockusb.cat`). | Unresolved – required for driver signing enforcement. |
> Sources: `aa3057ab-54c5-4ffc-ba85-c2f2396ee60c`, `evidence/emmc-reset-evaluation.txt`, `evidence/live-system/tso-diagnosis-2026-07-31.txt`, `13`, `14`, `15`
---
## 7. Preferences (Scenario‑Level)
- **Language**: Chinese (documentation).
- **Primary host**: Windows (PowerShell) with Bash support.
- **Design philosophy**: KISS & YAGNI; shallow clones; LF line endings; Docker cache retained.
- **Secrets**: Vaultwarden only.
- **AI/Git integration**: Disabled unless explicitly enabled.
> Sources: `ff34c6eb-6bba-41e5-9e43-ff80941fa823`, `bf88c265-4749-4c50-85bc-4bae25298cd5`, `105b328f-4bda-4641-90a7-7282ef156316`, `3f91189b-11a1-45bb-8357-4f413dc1609d`
---
## 8. Tags
`deployment, flash, loader, kernel, dtb, docker, security, documentation`
@@ -0,0 +1,134 @@
---
title: BDY‑G18‑Pro Armbian Builder – Maintenance & Operational Procedures
type: curated
permalink: main/projects/d0abaf3f-da04-4dd4-a228-bacf68f44e8f/curated/development/bdy-g18-pro-armbian-builder-maintenance-operational-procedures
stable_id: 281fe703-8e1a-475c-ac21-3ed9b03eb63e
scope: project
project_id: d0abaf3f-da04-4dd4-a228-bacf68f44e8f
workspace_type: development
usage_profile_id: null
preference_context: development
document_type: maintenance
revision: 8
source_memory_ids: []
source_checkpoint_ids: []
source_file_ids: []
source_git_commit: 36234e0082845515a053c10ee552ce35a03415f0
source_git_commits:
- 36234e0082845515a053c10ee552ce35a03415f0
source_agent_sync_ids: []
model_connection: Sub2API
model_name: openai/gpt-oss-120b
source_count: 125
source_revisions:
memory:40bd0324-4ef3-4777-9dba-5a7ef64a4c92: '1'
memory:bea4a5ba-4685-4869-a02e-f0f1c7f733ea: '1'
memory:b70c1a22-6834-4e59-936c-1945b04273b7: '1'
memory:7cf6c014-d2fa-4f99-9ed9-c070b108d3c7: '1'
memory:d5cbbc04-5929-4583-90b4-bd6c8295db25: '1'
source_dispositions:
processed: 78
unchanged: 0
unsupported: 47
skipped: 0
cited_source_ids:
- memory:40bd0324-4ef3-4777-9dba-5a7ef64a4c92
- memory:bea4a5ba-4685-4869-a02e-f0f1c7f733ea
- memory:b70c1a22-6834-4e59-936c-1945b04273b7
- memory:7cf6c014-d2fa-4f99-9ed9-c070b108d3c7
- memory:d5cbbc04-5929-4583-90b4-bd6c8295db25
- git:tools/driver/DriverAssitant_v5.14/Driver/x86/win8/rockusb.inf
- git:tools/driver/DriverAssitant_v5.14/Driver/x64/win10/rockusb.inf
- git:tools/driver/DriverAssitant_v5.14/Readme.txt
- git:tools/driver/DriverAssitant_v5.14/revison.log
- git:tools/loader/WHICH-LOADER.txt
- git:tools/rkdevtool/Readme_v1.0.pdf
- git:tools/rkdevtool/revision.txt
job_cited_source_ids: []
conflicts: []
supersedes: []
preferences: []
source_cursor: 0
source_hash: 5fe39ad3a37421f812566dd39f89d4c28fc6078c8d39031dff10eb6eb8d72e00
prompt_version: 2026-08-12.3
schema_version: '3'
curation_job_id: 75339546-fef5-4656-8969-ba806e3ea6f0
created_at: '2026-08-08T10:02:42.406146+00:00'
updated_at: '2026-08-16T18:45:19.484666+00:00'
tags:
- maintenance
- checklist
- troubleshooting
- known-issues
- open-tasks
- security
---
# BDY‑G18 Pro Armbian Builder – Maintenance Checklist & Known Issues
**Workspace**: `BDYG18ProArmbianBuilder` (type **development**)
**Scope**: Daily health checks, troubleshooting, and open‑item tracking for the Armbian image and the underlying hardware.
---
## 1. Daily Maintenance Checklist
| Check | Desired State |
|-------|---------------|
| System time (`chronyc tracking`) | offset `< 1 ms` |
| CPU temperature | `< 75 °C` |
| ZRAM usage (`/dev/zram1`) | ≤ 80 % |
| Network offloads (`ethtool -k eth0`) | `tso: off`, `gso: off` |
| TCP congestion control | `net.ipv4.tcp_congestion_control = cubic` |
| Docker cache volume `armbian‑g18pro‑cache` present | Yes |
> Source: `281fe703-8e1a-475c-ac21-3ed9b03eb63e`
---
## 2. Known Issues & Mitigations
| Issue | Symptom | Root Cause | Mitigation |
|-------|---------|------------|------------|
| **Power‑off hangs** | `systemctl poweroff` does not turn the board off; manual power‑cycle required. | `POWER_OFF_NOTIFY` flag left set in eMMC (see *emmc‑reset‑evaluation*). | Use `syscon‑reboot‑mode` DTB node for clean reboot; keep `emergency‑reboot.shutdown` script as hard‑reset fallback. |
| **Network TX storms / low throughput** | Upload stalls, many retransmissions, ~1 Mbps throughput. | TSO enabled in DTB (`snps,tso`). | Remove `snps,tso` from DTB (kernel 6.18.41). |
| **GMAC0 watchdog messages** | Spurious watchdog logs, possible link storms. | GMAC0 enabled without a physical link. | Keep GMAC0 disabled in DTB. |
| **Accidental SPI‑NOR overwrite** | Flashing tool writes to NOR, corrupting SPL. | User selects wrong storage in RKDevTool. | Enforce target verification, SHA‑256 check, mandatory `flash_erase` before any NOR write. |
| **Docker proxy leakage** | Proxy env vars leaked into container builds. | Proxy vars passed unchanged. | Strip vars inside Docker; optional `G18PRO_PROXY` variable. |
| **CRLF corruption** | Files corrupted after Windows checks out. | `core.autocrlf=true`. | Enforce LF via `.gitattributes`, set `core.autocrlf=false`. |
| **PCIe BAR allocation failures** | Kernel logs: `can’t assign; no space`. | Overlapping memory windows on Rockchip PCIe host. | Add kernel cmdline `pci=realloc` (or `pci=assign-buses`). |
| **MaskROM fallback after bad flash** | Board resets to MaskROM on power‑cycle. | Boot flag `boot_success` not set after flash. | Verify `boot_success` flag is written; use `syscon‑reboot‑mode` node. |
> Sources: `aa3057ab-54c5-4ffc-ba85-c2f2396ee60c`, `evidence/emmc-reset-evaluation.txt`, `evidence/live-system/tso-diagnosis-2026-07-31.txt`, `evidence/live-system/tso-fix-verification-2026-07-31.txt`, `evidence/live-system/as-shipped-snapshot.txt`
---
## 3. Open Maintenance Tasks
| # | Task | Status |
|---|------|--------|
| 1 | Verify tiny‑SPI SPL can read > 8 MiB from SPI‑NOR. | Unresolved – needs measurement. |
| 2 | Capture high‑resolution photos of rear‑side pads (for documentation). | Pending. |
| 3 | Add missing RTL8367S interrupt‑controller node to DTB. | Open. |
| 4 | Confirm PCIe BAR allocation after adding `pci=realloc`. | Planned verification. |
| 5 | Review Rockusb driver security descriptor (currently all‑access). | Open – may tighten for production. |
| 6 | Generate and sign `rockusb.cat` to satisfy driver‑signing enforcement. | Unresolved. |
| 7 | Update VID/PID list in `rockusb.inf` for new Rockchip boards. | Ongoing as new hardware appears. |
| 8 | Test `selfbuilt‑ums` mode (USB‑mass‑storage) for field diagnostics. | Open. |
| 9 | Implement post‑flash verification watchdog script. | Open. |
|10| Periodically update Armbian to newer kernels (e.g., 6.19). | Ongoing. |
> Sources: `aa3057ab-54c5-4ffc-ba85-c2f2396ee60c`, `8a861a5f-35c3-4f95-bd5b-6b2297888f56`, `13`, `14`, `15`
---
## 4. Preferred Maintenance Practices (Scenario‑Level)
- Run the **daily checklist** (section 1) via a scheduled script; log any deviation.
- Keep Docker cache volume between builds to speed up incremental builds.
- After any flash, immediately verify SHA‑256 of the image and the `boot_success` flag.
- When changing DTB or kernel parameters, keep a **git‑ignored** copy of the original for rollback.
- Store all secrets (Wi‑Fi passwords, SSH keys) in Vaultwarden; never check them into the repo.
> Sources: `ff34c6eb-6bba-41e5-9e43-ff80941fa823`, `bf88c265-4749-4c50-85bc-4bae25298cd5`, `105b328f-4bda-4641-90a7-7282ef156316`
---
## 5. Tags
`maintenance, checklist, troubleshooting, known‑issues, open‑tasks, security`
@@ -0,0 +1,161 @@
---
title: Troubleshooting Guide for BDYG18Pro Armbian Builder
type: curated
permalink: main/projects/d0abaf3f-da04-4dd4-a228-bacf68f44e8f/curated/development/troubleshooting-guide-for-bdyg18-pro-armbian-builder
stable_id: a89adf53-4420-43ef-9a95-56567f524ef6
scope: project
project_id: d0abaf3f-da04-4dd4-a228-bacf68f44e8f
workspace_type: development
usage_profile_id: null
preference_context: development
document_type: troubleshooting
revision: 8
source_memory_ids: []
source_checkpoint_ids: []
source_file_ids: []
source_git_commit: 36234e0082845515a053c10ee552ce35a03415f0
source_git_commits:
- 36234e0082845515a053c10ee552ce35a03415f0
source_agent_sync_ids: []
model_connection: Sub2API
model_name: openai/gpt-oss-120b
source_count: 125
source_revisions:
memory:40bd0324-4ef3-4777-9dba-5a7ef64a4c92: '1'
memory:340af5e9-b3e5-423a-9971-b370992738ce: '1'
memory:bea4a5ba-4685-4869-a02e-f0f1c7f733ea: '1'
memory:b70c1a22-6834-4e59-936c-1945b04273b7: '1'
source_dispositions:
processed: 78
unchanged: 0
unsupported: 47
skipped: 0
cited_source_ids:
- memory:40bd0324-4ef3-4777-9dba-5a7ef64a4c92
- memory:340af5e9-b3e5-423a-9971-b370992738ce
- memory:bea4a5ba-4685-4869-a02e-f0f1c7f733ea
- memory:b70c1a22-6834-4e59-936c-1945b04273b7
- git:tools/driver/DriverAssitant_v5.14/Driver/x64/win10/rockusb.inf
- git:tools/rkdevtool/revision.txt
- git:tools/driver/DriverAssitant_v5.14/revison.log
job_cited_source_ids: []
conflicts: []
supersedes: []
preferences: []
source_cursor: 0
source_hash: 5fe39ad3a37421f812566dd39f89d4c28fc6078c8d39031dff10eb6eb8d72e00
prompt_version: 2026-08-12.3
schema_version: '3'
curation_job_id: 75339546-fef5-4656-8969-ba806e3ea6f0
created_at: '2026-08-08T10:02:36.551871+00:00'
updated_at: '2026-08-16T18:45:08.059901+00:00'
tags:
- issues
- fixes
- debugging
---
# Troubleshooting
## Power‑off hangs
**Symptom**: `systemctl poweroff` leaves the board powered on; manual power‑cycle required.
**Root cause**: Linux sets `POWER_OFF_NOTIFICATION=LONG` in the eMMC EXT_CSD, putting the eMMC into a low‑power state that the BootROM cannot wake.
**Fix**: Enable `syscon‑reboot‑mode` DTB node (adds a clean reboot path) **or** use the `emergency‑reboot.shutdown` systemd script which triggers `sysrq b` hard reset.
*Sources*: `evidence/emmc-reset-evaluation.txt`, `evidence/live-system/emergency-reboot.shutdown`.
---
## Network TX storms / low throughput
**Symptom**: Massive retransmits, throughput ≈ 1 Mbps.
**Cause**: Device Tree enables `snps,tso` (TCP Segmentation Offload) on the GMAC, which the driver mishandles.
**Resolution**: Remove the `snps,tso` property from the DTB (kernel 6.18.41). Verify with `ethtool -k eth0` → `tso: off`. Throughput improves to ~30 Mbps.
*Sources*: `evidence/live-system/tso-diagnosis-2026-07-31.txt`, `evidence/live-system/tso-fix-verification-2026-07-31.txt`.
---
## GMAC0 watchdog storms
**Symptom**: Repeated watchdog messages in the kernel log.
**Cause**: GMAC0 is enabled without a physical link, generating spurious watchdog events.
**Fix**: Disable GMAC0 in the DTB (set `status = "disabled"`). The system now only uses GMAC1 for the RTL8367S switch.
*Source*: `aa3057ab-54c5-4ffc-ba85-c2f2396ee60c`.
---
## Accidental SPI‑NOR overwrite
**Symptom**: Flashing the SPL to SPI‑NOR overwrites the boot region; on power‑cycle the board falls back to MaskROM.
**Mitigation**: RKDevTool warns when the target storage is SPI‑NOR. Additionally, the build scripts enforce:
- Target verification via SHA‑256 manifest.
- Mandatory `flash_erase` before writing.
*Source*: `aa3057ab-54c5-4ffc-ba85-c2f2396ee60c`.
---
## Docker proxy leakage
**Symptom**: Proxy environment variables leak into the Docker container, causing network failures.
**Solution**: The orchestrator strips proxy vars inside Docker and uses optional `G18PRO_PROXY` only when explicitly set. `.curlrc`, `.wgetrc`, and Git `insteadOf` are also configured.
*Source*: Batch 2/16, `4`.
---
## CRLF line‑ending corruption
**Symptom**: Files edited on Windows acquire CRLF line endings, breaking scripts inside the Docker container.
**Remedy**: Enforce LF line endings via `.gitattributes` and set `core.autocrlf=false`.
*Source*: `ff34c6eb-6bba-41e5-9e43-ff80941fa823`.
---
## PCIe BAR allocation failures
**Symptom**: Kernel logs report `BAR 0: can't assign; no space`.
**Work‑around**: Add kernel cmdline `pci=realloc` (or `pci=assign-busses`). This re‑allocates address windows to avoid overlaps.
*Source*: `evidence/vendor-backup/vendor-kern.log.net-lines.txt`.
---
## Rockusb driver installation issues
**Problem**: Windows requires a signed catalog (`rockusb.cat`) which is not shipped.
**Temporary fix**: Install the driver in **Test‑Signed** mode (`pnputil /add-driver rockusb.inf /install`) or generate a signed catalog using a code‑signing certificate.
**Security note**: The INF grants `Everyone` full read/write/execute access (`D:P(A;;GRGWGX;;;WD)`). Consider tightening the descriptor for production environments.
*Sources*: `13`, `14`, `15`.
---
**References**
- `aa3057ab-54c5-4ffc-ba85-c2f2396ee60c`
- `evidence/emmc-reset-evaluation.txt`
- `evidence/live-system/emergency-reboot.shutdown`
- `evidence/live-system/tso-diagnosis-2026-07-31.txt`
- `evidence/live-system/tso-fix-verification-2026-07-31.txt`
- `evidence/vendor-backup/vendor-kern.log.net-lines.txt`
- `4`
- `13`
- `14`
- `15`