-
Efforts to develop firmware for H96 MAX M9 RK3576 TV Box 8G/128G
The entire process was automated by "Cursor" Here is summary. Just paste to Agent and it would do all. # From Dead Android Brick Anxiety to Booting Armbian — An Agent-Ready Flash Guide for H96 Max M9 (RK3576) > **Board:** H96 Max M9 (RK3576) · **Path that worked:** unofficial Armbian Bookworm **vendor kernel 6.1** · **Host:** Windows + RKDevTool > **Audience:** humans *and* AI coding agents — paste this whole post into your agent and say: *“Follow this. Flash my H96 Max M9.”* > **Warning:** This **wipes eMMC**. Back up anything you care about. Keep a stock Android `update.img` for restore. You do this at your own risk. --- ## Why this post exists There is **no Home Assistant OS** image for this box. There is **no friendly “balenaEtcher to SD and reboot”** path for many units (no reliable TF/USB boot — Rockchip USB flash is the real door). So people burn evenings on: * wrong SoC images (RK3318 / generic “TV box” builds), * RKDevTool’s charming Chinese UI, * the infamous **`内存不足` (out of memory)** popup that is usually *not* about your PC RAM, * LOADER vs Maskrom confusion, * and then wonder why Home Assistant “Add-ons” don’t exist on a plain Linux install. This write-up is the **boring, repeatable recipe** that got an **8G/128G H96 Max M9** from stock Android → **Armbian Bookworm vendor 6.1.75** → SSH → Docker Home Assistant — so the next person (or the next agent) does not reinvent the toothpick. Huge thanks to everyone in the Armbian RK3576 / H96 M9 threads who published loaders, CSCs, DTBs, and unofficial images. This is a **field guide**, not a claim of official Armbian support. --- ## What you need on the table | Item | Notes | |------|--------| | H96 Max M9 (RK3576) | Confirm **RK3576** on the box / seller page | | Windows PC | USB port that can talk Rockusb | | USB-A data cable | Charge-only cables are the silent enemy | | Toothpick / paperclip | For **LOADER** via 3.5 mm AV jack (common method on this board) | | ~5+ GB free disk | Image ~2.2 GB + tools | | Optional HDMI + keyboard | First-boot password wizard is easier on a monitor | ### Software kit 1. **Rockchip Driver Assistant** (install Rockusb driver) 2. **RKDevTool v3.x** (Windows GUI — this is what actually writes under Rockusb) 3. **Unofficial Armbian Bookworm vendor 6.1 image for H96-M9** (raw `.img`, GPT) 4. **`RK3576_MiniLoaderAll.bin`** (keep nearby for Maskrom recovery) 5. Stock **Android `update.img`** (restore parachute) > Tip for agents/humans: put the `.img` on a **short path without spaces** (e.g. `C:\H96flash\armbian.img`). RKDevTool sometimes trips over long/` ` paths. Community threads / Drive folders linked from the main H96 M9 topics on forum.armbian.com are where those artifacts usually live — use the **vendor 6.1 Bookworm** line if you care about NPU later; mainline is a different adventure. --- ## LOADER mode (the toothpick ritual) 1. Install Rockchip drivers. 2. Open **RKDevTool** → tab **Download Image** (not Upgrade Firmware). 3. Power off the box. USB from PC → box. 4. Press & hold the reset via **3.5 mm AV jack**, apply power, wait until RKDevTool says something like **Found One LOADER Device**. 5. Release. Do not unplug. If you only ever see Maskrom, use MiniLoader (`db` / download boot) before writing — LOADER is the happier path when it appears. --- ## The trap that costs hours: `内存不足` / empty Loader row **Symptom:** green row named **Loader**, Address `0x00000000`, **Path empty** → popup **内存不足** (“insufficient memory”). **Truth:** RKDevTool is not complaining that your 32 GB PC is full. It is choking because **Loader** is meant for a tiny MiniLoader, and people (and agents) accidentally treat the **2.2 GB OS image** as “the Loader.” ### Correct Download Image setup 1. Click **Clear** (清空). 2. Right-click table → **Add Item**. 3. One checked row only: | Field | Value | |-------|--------| | Address | `0x00000000` | | Name | `Armbian` (anything **except** thinking this is MiniLoader) | | Path | full path to the **Bookworm `.img`** | | Write by Address | **checked** | 4. When LOADER is detected → **Run** (执行). 5. Wait. Do not unplug. Success text appears in the right log pane. ### Upgrade Firmware tab? Use that for stock **`update.img`** restore — **not** for a raw Armbian `.img`. ### CLI note Open-source `rkdeveloptool` may **list** a LOADER device but fail to write (`creating comm object failed`) while the official **Rockusb** driver is bound. Prefer **RKDevTool GUI** for the actual flash on Windows. --- ## First boot 1. Unplug USB-from-PC. Connect HDMI + Ethernet (Wi‑Fi can wait). Power on. 2. Complete Armbian first-boot: set **root** password, create a normal user. 3. Find the IP (router DHCP list, or `ip a` on console). 4. SSH in as root (or the user + `sudo`). Expected shape when it worked here: * Hostname style: `h96-m9` * OS: Armbian-unofficial Bookworm * Kernel: **`6.1.x-vendor-rk35xx`** * Wi‑Fi chip family seen in dmesg: **AIC8800** (your board may differ) * Ethernet works; Bluetooth HCI may need extra work on some images --- ## After Linux: Home Assistant without lying to yourself **HAOS is not an option** for this SoC today. Practical path that worked: 1. Install **Docker** on Armbian. 2. Run **Home Assistant Container** with `--network=host` and a bind-mounted `/config`. 3. Accept that there is **no official Add-on store** on Container. 4. Run companions as Compose services instead, for example: * Mosquitto (MQTT) * Portainer * go2rtc (camera plumbing) * Node-RED * Samba (edit `/config` from Windows) 5. Install **HACS** into `custom_components`, restart HA, add the integration in the UI. 6. For cameras/NVR later: go2rtc → optionally Frigate; Hikvision users often use **hikvision_next** (HACS). Tuya users: **Tuya Local** (HACS) — not the same as “Local Tuya.” **Wi‑Fi in Home Assistant’s “Network adapter” screen does *not* join SSIDs** on Container installs. Configure Wi‑Fi on the **host** (NetworkManager / `nmtui` / Cockpit), then optionally select the interface in HA. --- ## Android restore parachute RKDevTool → **Upgrade Firmware** → select stock **`update.img`** → LOADER/Maskrom → Run. Keep that file offline. Future-you will thank present-you. --- ## Prompt you can paste to any coding agent Copy everything below the line into Cursor / ChatGPT / Claude / etc. --- **AGENT BRIEF — H96 Max M9 (RK3576) Armbian flash + HA Container** You are helping me flash and bring up an H96 Max M9 TV box (Rockchip **RK3576**). ### Goals 1. Flash **unofficial Armbian Bookworm vendor kernel 6.1** raw `.img` with Windows **RKDevTool** (Write by Address @ `0x0`). 2. Verify SSH. 3. Optionally install Docker + Home Assistant **Container** (host network) + sensible companions (MQTT, Portainer, go2rtc). 4. Never invent HAOS for this board. Never flash RK3318 / wrong-SoC images. ### Hard constraints * No TF/USB boot assumed — use Rockchip USB **LOADER** (AV jack toothpick) or Maskrom. * Do **not** put the full OS image in a RKDevTool row meant as MiniLoader; that causes **内存不足**. * Prefer GUI RKDevTool under Rockusb; don’t fight CLI libusb if `wl` fails with “creating comm object failed.” * Keep stock Android `update.img` as restore. * **Never store or echo my passwords, Wi‑Fi keys, tokens, or emails in git, forum posts, or chat logs.** Ask me to enter secrets locally / in a password manager. ### Deliverables * Checklist of files to download (driver, RKDevTool, Armbian img, MiniLoader, stock update.img). * Exact RKDevTool row settings. * LOADER procedure. * First-boot + SSH verify commands. * Optional Docker Compose for HA + companions. * Short “what failed / how we fixed it” log. ### My environment * OS: Windows * Workspace folder: `<PATH>` * Image path: `<PATH_TO_ARMBIAN.IMG>` * I have HDMI: yes/no * I want Home Assistant after flash: yes/no Proceed step by step. Stop and ask before any destructive flash confirm. --- ## Known pitfalls (cheat sheet) | Symptom | Likely cause | Fix | |---------|----------------|-----| | `内存不足` | OS image on Loader row / empty path | Clear → Add Armbian @ 0x0 → Write by Address | | Found LOADER but write fails in CLI | Rockusb vs libusb | Use RKDevTool GUI | | HA has no Add-ons | Container install | Use Docker companions + HACS | | Wi‑Fi missing in HA network UI | Not connected on host / no IP | Connect with `nmtui` / Cockpit / nmcli first | | BT missing `hci0` | AIC UART BT incomplete on image | Don’t expect HA Bluetooth until host exposes HCI | | Box soft-bricked | Bad image / interrupted write | Maskrom + MiniLoader + restore or reflash | --- ## Closing If this guide saves you a night, pay it forward: post your **exact image filename**, whether **LOADER or Maskrom** worked, and any DTB quirks for your RAM/eMMC variant (2/16, 4/32, 8/128). The RK3576 TV-box story is still being written. Vendor 6.1 is the pragmatic on-ramp today; mainline and NPU are the sequel. Good luck — and may your toothpick find the LOADER on the first try.
cmaity
Validating
-
Joined
-
Last visited