Repository navigation
XM: take the split firmware.bin when a board publishes no fixed-slot package - #56
Merged
Merged
Conversation
…package Since OpenIPC/firmware#2666 a board whose rootfs outgrows its 5 MiB slot ships only openipc.<soc>-nor-lite-split.tgz. gk7201v200 is about to (OpenIPC/firmware#2729: the G3-WQ-G's Wi-Fi driver takes it to 5340 KB), and the fetch step's plain wget of the fixed-slot package would then fail the whole release run. The fetch step now tries both packages for every SoC, and _xm2oipc.sh takes the fixed-slot one when it is there, else the split one. The split firmware.bin -- the uImage padded to 64 KiB, then the squashfs -- is cut at the squashfs and burned as the same uImage.img and rootfs.img, so InstallDesc and the env are unchanged and the flash holds firmware.bin byte for byte from the kernel's address. rootfs_data is blanked from its end. The kernel recognises the layout and ignores the env's mtdparts and root= (OpenIPC/linux#140). Checked with the 2026-10-28 nightly and the stock G3-WQ-G image (000929QB, V5.03.C01), each package's images applied to an 8 MB flash the way "Burn" writes them: - split only: firmware.bin at 0x50000 byte-identical, 0x700000 to the end blank, U-Boot untouched. In qemu-hisilicon's gk7201v200 the stock XM U-Boot boots it: "sfc: split NOR layout, device tree partitions", "root=/dev/mtdblock3 ignored", root on 31:4, login. The overlay gets its jffs2 at 0x700000, and a second boot comes up clean. - both packages: the fixed-slot one is used, and the flash is byte-identical to what main's script produces. Not run on a camera, and the stock upgrader itself is not emulated.
PR Summary by QodoSupport split NOR firmware packages in XM releases
AI Description
Diagram
High-Level Assessment
Files changed (2)
|
Code Review by Qodo🐞 Bugs (0) 📘 Rule violations (0) 📎 Requirement gaps (0)
Great, no issues found!Qodo reviewed your code and found no material issues that require reviewTip of the day💡 Did you know, you can add REVIEW.md to your repo root and Qodo follows it on every PR |
7 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Since OpenIPC/firmware#2666 a board whose rootfs outgrows its 5 MiB slot
ships only openipc.-nor-lite-split.tgz. gk7201v200 is about to
(OpenIPC/firmware#2729: the G3-WQ-G's Wi-Fi driver takes it to 5340 KB),
and the fetch step's plain wget of the fixed-slot package would then fail
the whole release run.
The fetch step now tries both packages for every SoC, and _xm2oipc.sh
takes the fixed-slot one when it is there, else the split one. The split
firmware.bin -- the uImage padded to 64 KiB, then the squashfs -- is cut
at the squashfs and burned as the same uImage.img and rootfs.img, so
InstallDesc and the env are unchanged and the flash holds firmware.bin
byte for byte from the kernel's address. rootfs_data is blanked from its
end. The kernel recognises the layout and ignores the env's mtdparts and
root= (OpenIPC/linux#140).
Checked with the 2026-10-28 nightly and the stock G3-WQ-G image
(000929QB, V5.03.C01), each package's images applied to an 8 MB flash
the way "Burn" writes them:
end blank, U-Boot untouched. In qemu-hisilicon's gk7201v200 the stock
XM U-Boot boots it: "sfc: split NOR layout, device tree partitions",
"root=/dev/mtdblock3 ignored", root on 31:4, login. The overlay gets
its jffs2 at 0x700000, and a second boot comes up clean.
byte-identical to what main's script produces.
Not run on a camera, and the stock upgrader itself is not emulated.