Skip to content

85h50ai: build ultimate, for the CPU person detector Follow needs - #202

Merged
openipc-ai merged 2 commits into
masterfrom
85h50ai-ultimate
Oct 14, 2026
Merged

openipc-ai merged 2 commits into
masterfrom
85h50ai-ultimate

Conversation

@openipc-ai

Copy link
Copy Markdown
Contributor

The XiongMai 85H50AI carries 16 MB of NOR, not the 8 MB the profile and README said. A lab unit's mtd table adds up to exactly 0x1000000, and its bootloader reports a W25Q128. So it can take the ultimate image, and only ultimate ships the CPU person detector (cpu-models). On a chip with no NPU, object detection and PTZ Follow both run on that detector.

Changes

  • devices/hi3516ev300_lite_xm-85h50ai becomes devices/hi3516ev300_ultimate_xm-85h50ai. The defconfig is firmware's hi3516ev300_ultimate_defconfig verbatim, as the lite one was firmware's lite defconfig verbatim. It already keeps MAJESTIC_AF and MOTORS, and adds CPU_MODELS.
  • The excludes list follows the <soc>_<flavour>.list naming.
  • customizer.sh sets the upgrade URL to the new asset name.
  • README: NOR_16M.

Cameras already on lite

The old hi3516ev300_lite_xm-85h50ai-nor.tgz stays on latest, frozen. Moving a camera across needs a repartition (kernel 2 MB → 3 MB, rootfs 5 MB → 10 MB at a new offset), and sysupgrade doesn't do that. OpenIPC/ipctool's upgrade --layout work does it live and keeps the settings. A lab 85H50AI was moved that way to an image built from this branch.

Tested

  • Built locally with builder.sh hi3516ev300_ultimate_xm-85h50ai: uImage 2.0 MB, rootfs 7.6 MB (headroom: kernel 2090 KB, rootfs 8580 KB).
  • That image runs on a lab 85H50AI: ultimate majestic starts, the AF plugin loads, person.pdnet is present, and people detection is offered.

The 85H50AI carries 16 MB of NOR (the lab unit's mtd table adds up to
0x1000000), not the 8 MB the profile and README said, so it can take the
ultimate image -- and only ultimate ships the CPU person detector
(cpu-models) that object detection and PTZ Follow run on, on a chip
without an NPU.

The defconfig is firmware's hi3516ev300_ultimate_defconfig verbatim, as the
lite one was firmware's lite defconfig verbatim; it already keeps
MAJESTIC_AF and MOTORS. The upgrade URL follows the new asset name. The
lite asset stays on 'latest', frozen, for any camera still pointing at it;
moving one across needs a repartition, which sysupgrade does not do.
@openipc-ai

Copy link
Copy Markdown
Contributor Author

/review

@qodo-free-for-open-source-projects

qodo-free-for-open-source-projects Bot commented Oct 14, 2026 •

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (0) 📘 Rule violations (0) 📎 Requirement gaps (0) 🎨 UX issues (0) 🔗 Cross-repo conflicts (0) 📜 Skill insights (0)

Grey Divider


Remediation recommended

1. Migrated cameras keep the old image URL ✓ Resolved
Description
customizer.sh writes the ultimate URL only when it runs, but a layout migration that preserves
settings does not rerun this first-boot script or replace the existing upgrade bootloader value. A
camera migrated from lite therefore continues requesting the frozen lite image on subsequent
upgrades instead of receiving ultimate updates.
Code

devices/hi3516ev300_ultimate_xm-85h50ai/general/overlay/usr/share/openipc/customizer.sh[16]

+fw_setenv upgrade 'https://github.com/OpenIPC/builder/releases/download/latest/hi3516ev300_ultimate_xm-85h50ai-nor.tgz'
Evidence
The changed line writes the new URL only from the customizer. Repository documentation identifies it
as a first-boot script, and the release workflow explicitly states that upgrades retain the
bootloader URL and the customizer runs once.

devices/hi3516ev300_ultimate_xm-85h50ai/general/overlay/usr/share/openipc/customizer.sh[12-16]
CLAUDE.md[48-49]
.github/workflows/master.yml[688-694]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
Cameras migrated from lite while preserving settings retain the old upgrade URL because the customizer runs only on first boot.
## Fix Focus Areas
- devices/hi3516ev300_ultimate_xm-85h50ai/general/overlay/usr/share/openipc/customizer.sh[13-16]
## Recommended Fix
Add a migration step that sets the `upgrade` bootloader variable to the ultimate asset URL even when existing settings are preserved, and document or automate that step for the layout migration.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

Tip of the day
💡 Did you know, you can switch off images and animations for a plain-text comment

More tips ↗ | Customize Qodo ↗ | Qodo docs ↗

Grey Divider

Qodo Logo

The customizer runs once, on a camera with no settings, so one moved here
from the lite profile with its settings kept keeps the lite address unless
the move sets it. ipctool's layout bundle does, with -e upgrade=; on the lab
unit fw_printenv upgrade showed the ultimate asset right after the move.
@openipc-ai
openipc-ai merged commit c2ff4e3 into master Oct 14, 2026
116 of 133 checks passed
@openipc-ai
openipc-ai deleted the 85h50ai-ultimate branch October 14, 2026 15:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant