Skip to content

xm530: add anbiux A8B-3MP (IPC-RB-BLK530AI, ATBM6032 USB WiFi) - #130

Open
yatotoshka wants to merge 2 commits into
OpenIPC:masterfrom
yatotoshka:xm530-lite-anbiux-a8b-3mp
Open

xm530: add anbiux A8B-3MP (IPC-RB-BLK530AI, ATBM6032 USB WiFi)#130
yatotoshka wants to merge 2 commits into
OpenIPC:masterfrom
yatotoshka:xm530-lite-anbiux-a8b-3mp

Conversation

@yatotoshka

@yatotoshka yatotoshka commented Aug 26, 2026

Copy link
Copy Markdown

Problem

No XM530 device exists in builder. This camera (anbiux A8B-3MP, board
IPC-RB-BLK530AI-0235P-AB0 V1.03, XM530AI + SmartSens SC3335) carries an
AltoBeam ATBM6032 USB WiFi (007a:8888) with power-down on gpio 96; the stock
xm530_lite image has neither the driver nor a bring-up path for it.

What this change does

Device profile xm530_lite_anbiux-a8b-3mp (commit e8f06b6):

  • xm530_lite_anbiux-a8b-3mp_defconfig — a snapshot of xm530_lite_defconfig
    plus atbm60xx (603x, USB), and with the MT7601U firmware dropped (this
    radio is not an MT7601U).
  • customizer.sh — on first boot sets wlandev=atbm603x-xm530-usb (the
    bring-up case in firmware's /etc/wireless/usb), wifipdn=96 (the case
    reads the PDN gpio from the wifipdn env at run time), and the upgrade url
    to this device's builder release, so the Web UI update keeps pulling this
    device's image; reboots after 3 s.
  • xm530_lite.list — prunes the wifi stacks this radio does not use (xm711 +
    its compat shim, 8188fu) to leave room for the atbm60xx module in the 5M
    rootfs.
  • ci-matrix.py — joins SMOKE_TARGETS (the vendor:xiongmai trait must be
    covered or the matrix self-test refuses to select a build matrix) and the
    README device table gets its row.

Build support (commit 826ab1d):

  • builder.sh — the firmware clone is routed through
    ${OPENIPC_FW_REPO:-https://github.com/OpenIPC/firmware.git}; with the
    variable unset the behaviour is exactly as before.
  • build-one — new firmware_repo input next to the existing firmware_ref,
    so a device that depends on unmerged firmware changes can be built against a
    fork.
  • It lives in this PR because this device cannot be built against upstream
    master until xm530: bring up the AltoBeam ATBM6032 USB WiFi chip firmware#2316 is merged; the input is what makes that
    build possible (and is generally useful for any cross-repo bisect against a
    fork).

Dependency

OpenIPC/firmware#2316 (rebased
on upstream master 317b443d, 2026-09-06; draft until its clean-build path is
verified on-device): without it the image has no atbm60xx module, no
/etc/wireless/usb case, and no depmod pass over the merged target (the
vendor modules.dep leaves dwc_otg/wifi_pdn invisible to modprobe), so
the radio cannot load. It also makes the vendor cfg80211 rewrite coexist with
the in-tree one instead of over it. This profile keeps the atbm60xx selection
explicit in its defconfig snapshot and adds the per-device parts: first-boot
wlandev/wifipdn, the device upgrade url, and the prune list.

Hardware tested on

XM530AI (marking 30WX1), board IPC-RB-BLK530AI-0235P-AB0 V1.03, SmartSens
SC3335, AltoBeam ATBM6032 USB WiFi (007a:8888), PDN on gpio 96, 128GB FAT32
(SDXC) card.

Evidence

Re-verified 2026-09-06 from a factory-clean state (env wiped) on the current
nightly (master+4c34a66): the chip, PDN gpio 96 and the load order
(dwc_otg → wifi_pdn → atbm603x) are proven on this camera — it is associated
and takes a DHCP lease:

wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether f4:b1:9c:a8:ca:20 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.243/24 brd 192.168.1.255 scope global wlan0
[atbm_log]:wlan0: authenticated
[atbm_log]:wlan0: associated

The Web UI is reachable over both the Ethernet address (192.168.1.242) and the
Wi-Fi address (192.168.1.243).

Status: the camera currently loads the driver from a prebuilt blob (built from
the same atbm_60xx revision firmware#2316 pins) plus a local init script. The
profile's clean-build path (customizer wlandev/wifipdnS40network → the
wireless/usb case) is what a build of this branch will verify end to end.

How to build (before #2316 is merged)

build-one with platform=xm530_lite_anbiux-a8b-3mp,
firmware_repo=https://github.com/yatotoshka/firmware.git,
firmware_ref=xiongmai-atbm60xx-wifi → publishes
xm530_lite_anbiux-a8b-3mp-nor.tgz, the same name the customizer's upgrade url
points at.

Scope

  • No binary files added (defconfig + shell + list only)
  • Common configuration stays in OpenIPC/firmware; this profile carries only the per-device delta
  • Follows the processor_flavor_vendor-model naming and the minimal-file layout from the README
  • The OPENIPC_FW_REPO change is a default-preserving override (unset → identical clone behaviour as before)

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

qodo-free-for-open-source-projects Bot commented Aug 26, 2026

Copy link
Copy Markdown

PR Summary by Qodo

Add Anbiux A8B-3MP XM530 profile and custom firmware source

✨ Enhancement ⚙️ Configuration changes 📝 Documentation 🕐 20-40 Minutes

Grey Divider

AI Description

• Adds an XM530 Anbiux A8B-3MP profile with ATBM6032 USB Wi-Fi support.
• Configures first-boot Wi-Fi bring-up, firmware upgrades, and rootfs pruning.
• Enables custom firmware repository builds and adds Xiongmai smoke coverage.
Diagram

graph TD
  A["Build workflow"] -->|"repo and ref"| B["Builder script"] -->|"clones"| C["Firmware source"] -->|"builds"| D["Device image"] -->|"first boot"| E["Boot settings"] -->|"loads"| F["ATBM6032 WiFi"]
  G["XM530 profile"] -->|"merged into"| C
Loading
High-Level Assessment

The following are alternative approaches to this PR:

1. Wait for upstream firmware merge
2. Checkout firmware within the workflow
  • ➕ Could use standard checkout action validation and authentication options
  • ➕ Makes the selected repository visible as a dedicated CI step
  • ➖ Duplicates firmware acquisition behavior between CI and local builds
  • ➖ Requires restructuring builder.sh around a pre-populated firmware directory

Recommendation: Keep the default-preserving OPENIPC_FW_REPO override. It supports both local and CI testing of dependent firmware branches without changing normal upstream builds, while remaining more reusable and less intrusive than hardcoding or workflow-only fork handling. Repository inputs should remain restricted to trusted workflow dispatchers because cloned firmware code executes on the runner.

Files changed (7) +109 / -5

Enhancement (3) +97 / -4
builder.shAllow firmware cloning from a custom repository +7/-4

Allow firmware cloning from a custom repository

• Resolves the clone source from OPENIPC_FW_REPO while retaining OpenIPC/firmware as the default. Both full clones for pinned refs and shallow default-branch clones use the selected repository.

builder.sh

xm530_lite_anbiux-a8b-3mp_defconfigDefine the Anbiux XM530 Buildroot configuration +71/-0

Define the Anbiux XM530 Buildroot configuration

• Introduces the complete XM530 Lite Buildroot profile for an 8 MB NOR camera. It selects the ATBM60XX 603X USB driver and omits unused MT7601U firmware while retaining the required Xiongmai and OpenIPC packages.

devices/xm530_lite_anbiux-a8b-3mp/br-ext-chip-xiongmai/configs/xm530_lite_anbiux-a8b-3mp_defconfig

customizer.shConfigure ATBM6032 Wi-Fi during first boot +19/-0

Configure ATBM6032 Wi-Fi during first boot

• Sets the device-specific upgrade URL, selects the atbm603x-xm530-usb bring-up path, and records GPIO 96 as the Wi-Fi power-down pin. It schedules a forced reboot so the persisted settings take effect.

devices/xm530_lite_anbiux-a8b-3mp/general/overlay/usr/share/openipc/customizer.sh

Documentation (1) +1 / -0
README.mdDocument Anbiux A8B-3MP device support +1/-0

Document Anbiux A8B-3MP device support

• Adds the XM530AI, SC3335, ATBM603X USB, 8 MB NOR camera to the supported-device table with an in-progress status.

README.md

Other (3) +11 / -1
ci-matrix.pyAdd XM530 profile to smoke-test coverage +1/-0

Add XM530 profile to smoke-test coverage

• Adds the Anbiux XM530 target to SMOKE_TARGETS so the CI matrix covers the new Xiongmai vendor trait and continues satisfying its self-test.

.github/scripts/ci-matrix.py

build-one.ymlExpose a configurable firmware repository input +5/-1

Expose a configurable firmware repository input

• Adds the optional firmware_repo workflow input and passes it to builder.sh as OPENIPC_FW_REPO. The existing firmware_ref input now applies to either upstream firmware or the selected fork.

.github/workflows/build-one.yml

xm530_lite.listRemove unused XM530 Wi-Fi modules +5/-0

Remove unused XM530 Wi-Fi modules

• Excludes the XM711, compatibility, and RTL8188FU modules from this device image, preserving limited rootfs space for the ATBM60XX stack.

devices/xm530_lite_anbiux-a8b-3mp/general/scripts/excludes/xm530_lite.list

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

qodo-free-for-open-source-projects Bot commented Aug 26, 2026

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (1) 📘 Rule violations (2) 📜 Skill insights (0)

Grey Divider


Action required

1. Nightly builders cannot make this image 📘 Rule violation ☼ Reliability ⭐ New 8
Description
xm530_lite_anbiux-a8b-3mp_defconfig selects the ATBM60XX USB package supplied only by the stated
unmerged firmware dependency, while builder.sh defaults to upstream OpenIPC firmware. When
pull-request or nightly CI selects this target without OPENIPC_FW_REPO and OPENIPC_FW_REV, the
required XM530 driver and bring-up path are unavailable and no functional archive can be produced.
Code

devices/xm530_lite_anbiux-a8b-3mp/br-ext-chip-xiongmai/configs/xm530_lite_anbiux-a8b-3mp_defconfig[R49-51]

+BR2_PACKAGE_ATBM60XX=y
+BR2_PACKAGE_ATBM60XX_MODEL_603X=y
+BR2_PACKAGE_ATBM60XX_INTERFACE_USB=y
Evidence
Rule 9 requires the complete device firmware to build successfully and produce its archive. The new
defconfig requires ATBM60XX USB support, while the standard builder defaults to upstream firmware
and the regular CI build supplies no custom firmware repository or revision; the PR description
explicitly identifies the required firmware change as an unmerged dependency without which this
device cannot be built.

Rule 8: Device Firmware Must Build Successfully and Fit the Target Flash
devices/xm530_lite_anbiux-a8b-3mp/br-ext-chip-xiongmai/configs/xm530_lite_anbiux-a8b-3mp_defconfig[49-51]
builder.sh[129-143]
.github/workflows/master.yml[189-217]

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

## Issue description
The new device requires firmware changes that are not present in the upstream repository cloned by automated builds.

## Issue Context
The manual `build-one` workflow exposes repository and revision overrides, but the regular PR and nightly workflow invokes `builder.sh` without them. Ensure the dependency is merged upstream before this device is registered, or provide a suitably pinned compatible firmware source for this target in automated CI.

## Fix Focus Areas
- devices/xm530_lite_anbiux-a8b-3mp/br-ext-chip-xiongmai/configs/xm530_lite_anbiux-a8b-3mp_defconfig[49-51]
- .github/workflows/master.yml[189-217]
- builder.sh[129-143]

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


2. Remove unused MT7601U firmware 📘 Rule violation ⚙ Maintainability
Description
The device defconfig enables MediaTek MT7601U firmware even though this board uses the AltoBeam
ATBM6032 USB radio. This adds unrelated payload to an 8 MB image whose device-specific exclusions
already prune other unused WiFi stacks for space.
Code

devices/xm530_lite_anbiux-a8b-3mp/br-ext-chip-xiongmai/configs/xm530_lite_anbiux-a8b-3mp_defconfig[62]

+BR2_PACKAGE_LINUX_FIRMWARE_OPENIPC_MEDIATEK_MT7601U=y
Evidence
Compliance rule 6 permits only hardware-required device payload. The defconfig identifies the radio
as ATBM6032 and enables ATBM60XX_MODEL_603X with USB at lines 48-51, while line 62 separately
enables firmware for the unrelated MediaTek MT7601U chipset; the customizer confirms the runtime
profile is atbm603x-xm530-usb.

Rule 5: Device Overlay and Kernel Payload Must Be Minimal and Necessary
devices/xm530_lite_anbiux-a8b-3mp/br-ext-chip-xiongmai/configs/xm530_lite_anbiux-a8b-3mp_defconfig[48-51]
devices/xm530_lite_anbiux-a8b-3mp/br-ext-chip-xiongmai/configs/xm530_lite_anbiux-a8b-3mp_defconfig[61-62]
devices/xm530_lite_anbiux-a8b-3mp/general/overlay/usr/share/openipc/customizer.sh[10-12]

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

## Issue description
The device defconfig selects MT7601U firmware that is not used by the board's ATBM6032 radio.
## Issue Context
The device is configured for `atbm60xx` over USB and uses `atbm603x-xm530-usb`; the extra MediaTek firmware conflicts with the requirement to keep device payload minimal, especially for the configured 8 MB flash.
## Fix Focus Areas
- devices/xm530_lite_anbiux-a8b-3mp/br-ext-chip-xiongmai/configs/xm530_lite_anbiux-a8b-3mp_defconfig[61-62]

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


3. New vendor breaks CI 🐞 Bug ≡ Correctness
Description
Adding BR2_OPENIPC_SOC_VENDOR="xiongmai" creates a new build trait, but no Xiongmai target is
added to SMOKE_TARGETS; ci-matrix.py --self-test therefore reports the uncovered
vendor:xiongmai trait and exits before the build matrix is selected. Because every PR, nightly,
and manual run executes that self-test, this device will not be built or published and its
configured latest/...-nor.tgz upgrade URL will have no release artifact.
Code

devices/xm530_lite_anbiux-a8b-3mp/br-ext-chip-xiongmai/configs/xm530_lite_anbiux-a8b-3mp_defconfig[38]

+BR2_OPENIPC_SOC_VENDOR="xiongmai"
Evidence
The new defconfig is the repository's only Xiongmai target. The selector derives a vendor: trait
from every defconfig, requires every trait among built targets to be represented by SMOKE_TARGETS,
and the workflow runs this self-test unconditionally before selecting a matrix.

devices/xm530_lite_anbiux-a8b-3mp/br-ext-chip-xiongmai/configs/xm530_lite_anbiux-a8b-3mp_defconfig[38-40]
.github/scripts/ci-matrix.py[104-120]
.github/scripts/ci-matrix.py[146-174]
.github/scripts/ci-matrix.py[347-360]
.github/workflows/master.yml[48-55]

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

## Issue description
The new Xiongmai device introduces the `vendor:xiongmai` CI trait, but the smoke matrix contains no target with that trait. The mandatory matrix self-test consequently fails and prevents all builds from starting.
## Issue Context
Add `xm530_lite_anbiux-a8b-3mp` to `SMOKE_TARGETS` (or replace an existing smoke target only if all existing trait and shared-directory coverage remains intact), then run `python3 .github/scripts/ci-matrix.py --self-test`.
## Fix Focus Areas
- .github/scripts/ci-matrix.py[104-120]
- devices/xm530_lite_anbiux-a8b-3mp/br-ext-chip-xiongmai/configs/xm530_lite_anbiux-a8b-3mp_defconfig[38-38]

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


Grey Divider

Context sources
Review mode: ⚖️ Balanced: Downgraded extended -> standard: change is below the extended eligibility bar (hunks 8/18, lines 114/200; both must reach the floor). Router rationale: This PR spans device configuration, boot-time WiFi initialization, CI matrix/workflow inputs, and firmware repository selection, creating multiple independent behavior and build-path risks that benefit from redundant review.

Grey Divider

Tip of the day
💡 Did you know, you can copy the agent prompt from any finding and feed it to your IDE agent

More tips ↗ | Customize Qodo ↗ | Qodo docs ↗

Grey Divider

Previous reviews

Review updated until commit 826ab1d ⚖️ Balanced

Results up to commit 826ab1d


🐞 Bugs (1) 📘 Rule violations (1) 📜 Skill insights (0)


Action required
1. Remove unused MT7601U firmware 📘 Rule violation ⚙ Maintainability
Description
The device defconfig enables MediaTek MT7601U firmware even though this board uses the AltoBeam
ATBM6032 USB radio. This adds unrelated payload to an 8 MB image whose device-specific exclusions
already prune other unused WiFi stacks for space.
Code

devices/xm530_lite_anbiux-a8b-3mp/br-ext-chip-xiongmai/configs/xm530_lite_anbiux-a8b-3mp_defconfig[62]

+BR2_PACKAGE_LINUX_FIRMWARE_OPENIPC_MEDIATEK_MT7601U=y
Evidence
Compliance rule 6 permits only hardware-required device payload. The defconfig identifies the radio
as ATBM6032 and enables ATBM60XX_MODEL_603X with USB at lines 48-51, while line 62 separately
enables firmware for the unrelated MediaTek MT7601U chipset; the customizer confirms the runtime
profile is atbm603x-xm530-usb.

Rule 5: Device Overlay and Kernel Payload Must Be Minimal and Necessary
devices/xm530_lite_anbiux-a8b-3mp/br-ext-chip-xiongmai/configs/xm530_lite_anbiux-a8b-3mp_defconfig[48-51]
devices/xm530_lite_anbiux-a8b-3mp/br-ext-chip-xiongmai/configs/xm530_lite_anbiux-a8b-3mp_defconfig[61-62]
devices/xm530_lite_anbiux-a8b-3mp/general/overlay/usr/share/openipc/customizer.sh[10-12]

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

## Issue description
The device defconfig selects MT7601U firmware that is not used by the board's ATBM6032 radio.
## Issue Context
The device is configured for `atbm60xx` over USB and uses `atbm603x-xm530-usb`; the extra MediaTek firmware conflicts with the requirement to keep device payload minimal, especially for the configured 8 MB flash.
## Fix Focus Areas
- devices/xm530_lite_anbiux-a8b-3mp/br-ext-chip-xiongmai/configs/xm530_lite_anbiux-a8b-3mp_defconfig[61-62]

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


2. New vendor breaks CI 🐞 Bug ≡ Correctness
Description
Adding BR2_OPENIPC_SOC_VENDOR="xiongmai" creates a new build trait, but no Xiongmai target is
added to SMOKE_TARGETS; ci-matrix.py --self-test therefore reports the uncovered
vendor:xiongmai trait and exits before the build matrix is selected. Because every PR, nightly,
and manual run executes that self-test, this device will not be built or published and its
configured latest/...-nor.tgz upgrade URL will have no release artifact.
Code

devices/xm530_lite_anbiux-a8b-3mp/br-ext-chip-xiongmai/configs/xm530_lite_anbiux-a8b-3mp_defconfig[38]

+BR2_OPENIPC_SOC_VENDOR="xiongmai"
Evidence
The new defconfig is the repository's only Xiongmai target. The selector derives a vendor: trait
from every defconfig, requires every trait among built targets to be represented by SMOKE_TARGETS,
and the workflow runs this self-test unconditionally before selecting a matrix.

devices/xm530_lite_anbiux-a8b-3mp/br-ext-chip-xiongmai/configs/xm530_lite_anbiux-a8b-3mp_defconfig[38-40]
.github/scripts/ci-matrix.py[104-120]
.github/scripts/ci-matrix.py[146-174]
.github/scripts/ci-matrix.py[347-360]
.github/workflows/master.yml[48-55]

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

## Issue description
The new Xiongmai device introduces the `vendor:xiongmai` CI trait, but the smoke matrix contains no target with that trait. The mandatory matrix self-test consequently fails and prevents all builds from starting.
## Issue Context
Add `xm530_lite_anbiux-a8b-3mp` to `SMOKE_TARGETS` (or replace an existing smoke target only if all existing trait and shared-directory coverage remains intact), then run `python3 .github/scripts/ci-matrix.py --self-test`.
## Fix Focus Areas
- .github/scripts/ci-matrix.py[104-120]
- devices/xm530_lite_anbiux-a8b-3mp/br-ext-chip-xiongmai/configs/xm530_lite_anbiux-a8b-3mp_defconfig[38-38]

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


Context sources
Review mode: ⚖️ Balanced: This changes firmware build routing, CI inputs, device configuration, boot-time WiFi initialization, and artifact upgrade behavior across several independent paths, so it carries meaningful integration risk but not enough dense logic to warrant redundant extended review.
Results up to commit e8f06b6


🐞 Bugs (1) 📘 Rule violations (1) 📜 Skill insights (0)


Action required
1. Remove unused MT7601U firmware 📘 Rule violation ⚙ Maintainability
Description
The device defconfig enables MediaTek MT7601U firmware even though this board uses the AltoBeam
ATBM6032 USB radio. This adds unrelated payload to an 8 MB image whose device-specific exclusions
already prune other unused WiFi stacks for space.
Code

devices/xm530_lite_anbiux-a8b-3mp/br-ext-chip-xiongmai/configs/xm530_lite_anbiux-a8b-3mp_defconfig[62]

+BR2_PACKAGE_LINUX_FIRMWARE_OPENIPC_MEDIATEK_MT7601U=y
Evidence
Compliance rule 6 permits only hardware-required device payload. The defconfig identifies the radio
as ATBM6032 and enables ATBM60XX_MODEL_603X with USB at lines 48-51, while line 62 separately
enables firmware for the unrelated MediaTek MT7601U chipset; the customizer confirms the runtime
profile is atbm603x-xm530-usb.

Rule 5: Device Overlay and Kernel Payload Must Be Minimal and Necessary
devices/xm530_lite_anbiux-a8b-3mp/br-ext-chip-xiongmai/configs/xm530_lite_anbiux-a8b-3mp_defconfig[48-51]
devices/xm530_lite_anbiux-a8b-3mp/br-ext-chip-xiongmai/configs/xm530_lite_anbiux-a8b-3mp_defconfig[61-62]
devices/xm530_lite_anbiux-a8b-3mp/general/overlay/usr/share/openipc/customizer.sh[10-12]

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

## Issue description
The device defconfig selects MT7601U firmware that is not used by the board's ATBM6032 radio.
## Issue Context
The device is configured for `atbm60xx` over USB and uses `atbm603x-xm530-usb`; the extra MediaTek firmware conflicts with the requirement to keep device payload minimal, especially for the configured 8 MB flash.
## Fix Focus Areas
- devices/xm530_lite_anbiux-a8b-3mp/br-ext-chip-xiongmai/configs/xm530_lite_anbiux-a8b-3mp_defconfig[61-62]

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


2. New vendor breaks CI 🐞 Bug ≡ Correctness
Description
Adding BR2_OPENIPC_SOC_VENDOR="xiongmai" creates a new build trait, but no Xiongmai target is
added to SMOKE_TARGETS; ci-matrix.py --self-test therefore reports the uncovered
vendor:xiongmai trait and exits before the build matrix is selected. Because every PR, nightly,
and manual run executes that self-test, this device will not be built or published and its
configured latest/...-nor.tgz upgrade URL will have no release artifact.
Code

devices/xm530_lite_anbiux-a8b-3mp/br-ext-chip-xiongmai/configs/xm530_lite_anbiux-a8b-3mp_defconfig[38]

+BR2_OPENIPC_SOC_VENDOR="xiongmai"
Evidence
The new defconfig is the repository's only Xiongmai target. The selector derives a vendor: trait
from every defconfig, requires every trait among built targets to be represented by SMOKE_TARGETS,
and the workflow runs this self-test unconditionally before selecting a matrix.

devices/xm530_lite_anbiux-a8b-3mp/br-ext-chip-xiongmai/configs/xm530_lite_anbiux-a8b-3mp_defconfig[38-40]
.github/scripts/ci-matrix.py[104-120]
.github/scripts/ci-matrix.py[146-174]
.github/scripts/ci-matrix.py[347-360]
.github/workflows/master.yml[48-55]

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

## Issue description
The new Xiongmai device introduces the `vendor:xiongmai` CI trait, but the smoke matrix contains no target with that trait. The mandatory matrix self-test consequently fails and prevents all builds from starting.
## Issue Context
Add `xm530_lite_anbiux-a8b-3mp` to `SMOKE_TARGETS` (or replace an existing smoke target only if all existing trait and shared-directory coverage remains intact), then run `python3 .github/scripts/ci-matrix.py --self-test`.
## Fix Focus Areas
- .github/scripts/ci-matrix.py[104-120]
- devices/xm530_lite_anbiux-a8b-3mp/br-ext-chip-xiongmai/configs/xm530_lite_anbiux-a8b-3mp_defconfig[38-38]

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


Results up to commit adc174d


🐞 Bugs (1) 📘 Rule violations (1) 📜 Skill insights (0)


Action required
1. Remove unused MT7601U firmware 📘 Rule violation ⚙ Maintainability 5
Description
The device defconfig enables MediaTek MT7601U firmware even though this board uses the AltoBeam
ATBM6032 USB radio. This adds unrelated payload to an 8 MB image whose device-specific exclusions
already prune other unused WiFi stacks for space.
Code

devices/xm530_lite_anbiux-a8b-3mp/br-ext-chip-xiongmai/configs/xm530_lite_anbiux-a8b-3mp_defconfig[62]

+BR2_PACKAGE_LINUX_FIRMWARE_OPENIPC_MEDIATEK_MT7601U=y
Evidence
Compliance rule 6 permits only hardware-required device payload. The defconfig identifies the radio
as ATBM6032 and enables ATBM60XX_MODEL_603X with USB at lines 48-51, while line 62 separately
enables firmware for the unrelated MediaTek MT7601U chipset; the customizer confirms the runtime
profile is atbm603x-xm530-usb.

Rule 5: Device Overlay and Kernel Payload Must Be Minimal and Necessary
devices/xm530_lite_anbiux-a8b-3mp/br-ext-chip-xiongmai/configs/xm530_lite_anbiux-a8b-3mp_defconfig[48-51]
devices/xm530_lite_anbiux-a8b-3mp/br-ext-chip-xiongmai/configs/xm530_lite_anbiux-a8b-3mp_defconfig[61-62]
devices/xm530_lite_anbiux-a8b-3mp/general/overlay/usr/share/openipc/customizer.sh[10-12]

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

## Issue description
The device defconfig selects MT7601U firmware that is not used by the board's ATBM6032 radio.

## Issue Context
The device is configured for `atbm60xx` over USB and uses `atbm603x-xm530-usb`; the extra MediaTek firmware conflicts with the requirement to keep device payload minimal, especially for the configured 8 MB flash.

## Fix Focus Areas
- devices/xm530_lite_anbiux-a8b-3mp/br-ext-chip-xiongmai/configs/xm530_lite_anbiux-a8b-3mp_defconfig[61-62]

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


2. New vendor breaks CI 🐞 Bug ≡ Correctness
Description
Adding BR2_OPENIPC_SOC_VENDOR="xiongmai" creates a new build trait, but no Xiongmai target is
added to SMOKE_TARGETS; ci-matrix.py --self-test therefore reports the uncovered
vendor:xiongmai trait and exits before the build matrix is selected. Because every PR, nightly,
and manual run executes that self-test, this device will not be built or published and its
configured latest/...-nor.tgz upgrade URL will have no release artifact.
Code

devices/xm530_lite_anbiux-a8b-3mp/br-ext-chip-xiongmai/configs/xm530_lite_anbiux-a8b-3mp_defconfig[38]

+BR2_OPENIPC_SOC_VENDOR="xiongmai"
Evidence
The new defconfig is the repository's only Xiongmai target. The selector derives a vendor:<value>
trait from every defconfig, requires every trait among built targets to be represented by
SMOKE_TARGETS, and the workflow runs this self-test unconditionally before selecting a matrix.

devices/xm530_lite_anbiux-a8b-3mp/br-ext-chip-xiongmai/configs/xm530_lite_anbiux-a8b-3mp_defconfig[38-40]
.github/scripts/ci-matrix.py[104-120]
.github/scripts/ci-matrix.py[146-174]
.github/scripts/ci-matrix.py[347-360]
.github/workflows/master.yml[48-55]

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

## Issue description
The new Xiongmai device introduces the `vendor:xiongmai` CI trait, but the smoke matrix contains no target with that trait. The mandatory matrix self-test consequently fails and prevents all builds from starting.

## Issue Context
Add `xm530_lite_anbiux-a8b-3mp` to `SMOKE_TARGETS` (or replace an existing smoke target only if all existing trait and shared-directory coverage remains intact), then run `python3 .github/scripts/ci-matrix.py --self-test`.

## Fix Focus Areas
- .github/scripts/ci-matrix.py[104-120]
- devices/xm530_lite_anbiux-a8b-3mp/br-ext-chip-xiongmai/configs/xm530_lite_anbiux-a8b-3mp_defconfig[38-38]

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


Grey Divider

Qodo Logo

BR2_PACKAGE_LIBEVENT_OPENIPC=y
BR2_PACKAGE_LIBOGG_OPENIPC=y
BR2_PACKAGE_LINUX_FIRMWARE_OPENIPC=y
BR2_PACKAGE_LINUX_FIRMWARE_OPENIPC_MEDIATEK_MT7601U=y

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Action required

1. Remove unused mt7601u firmware 📘 Rule violation ⚙ Maintainability

5

The device defconfig enables MediaTek MT7601U firmware even though this board uses the AltoBeam
ATBM6032 USB radio. This adds unrelated payload to an 8 MB image whose device-specific exclusions
already prune other unused WiFi stacks for space.
Agent Prompt
## Issue description
The device defconfig selects MT7601U firmware that is not used by the board's ATBM6032 radio.

## Issue Context
The device is configured for `atbm60xx` over USB and uses `atbm603x-xm530-usb`; the extra MediaTek firmware conflicts with the requirement to keep device payload minimal, especially for the configured 8 MB flash.

## Fix Focus Areas
- devices/xm530_lite_anbiux-a8b-3mp/br-ext-chip-xiongmai/configs/xm530_lite_anbiux-a8b-3mp_defconfig[61-62]

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

@yatotoshka
yatotoshka force-pushed the xm530-lite-anbiux-a8b-3mp branch from adc174d to eb208b1 Compare August 26, 2026 14:44
The defconfig selects the atbm60xx driver (603x, USB) on top of
xm530_lite, and drops the MT7601U firmware this radio does not use.
The customizer sets wlandev to the atbm603x-xm530-usb case in
firmware's /etc/wireless/usb and wifipdn to the PDN gpio (after which
S40network applies the MAC and runs ifup), and points the upgrade url
at this device's builder release.

Depends on OpenIPC/firmware#2316: it provides the bring-up case, the
depmod pass that makes the driver stack resolvable by modprobe, and
the cfg80211 coexistence (the vendor rewrite ships as
cfg80211_xm711.ko, atbm60xx uses the in-tree module).

xm530_lite_anbiux-a8b-3mp joins SMOKE_TARGETS: the vendor:xiongmai
trait must be covered or ci-matrix.py's self-test refuses to select a
build matrix.
@yatotoshka
yatotoshka force-pushed the xm530-lite-anbiux-a8b-3mp branch from eb208b1 to e8f06b6 Compare August 26, 2026 14:50
@yatotoshka
yatotoshka marked this pull request as draft August 27, 2026 14:02
@yatotoshka
yatotoshka marked this pull request as ready for review August 27, 2026 14:02
@qodo-free-for-open-source-projects

Copy link
Copy Markdown

Code review by qodo was updated up to the latest commit e8f06b6

builder.sh hardcoded the OpenIPC/firmware clone URL, so a device could
never be built against a fork carrying unmerged changes (e.g. the
xiongmai ATBM6032 USB WiFi branch). Route the clone through
${OPENIPC_FW_REPO:-https://github.com/OpenIPC/firmware.git} and expose
it as the firmware_repo input of build-one, next to firmware_ref.
@yatotoshka
yatotoshka marked this pull request as draft September 6, 2026 20:59
@yatotoshka
yatotoshka marked this pull request as ready for review September 6, 2026 20:59
@qodo-free-for-open-source-projects

Copy link
Copy Markdown

Code review by qodo was updated up to the latest commit 826ab1d

@yatotoshka
yatotoshka marked this pull request as draft September 7, 2026 16:17
@yatotoshka
yatotoshka marked this pull request as ready for review September 7, 2026 16:17
Comment on lines +49 to +51
BR2_PACKAGE_ATBM60XX=y
BR2_PACKAGE_ATBM60XX_MODEL_603X=y
BR2_PACKAGE_ATBM60XX_INTERFACE_USB=y

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Action required

1. Nightly builders cannot make this image 📘 Rule violation ☼ Reliability

8

xm530_lite_anbiux-a8b-3mp_defconfig selects the ATBM60XX USB package supplied only by the stated
unmerged firmware dependency, while builder.sh defaults to upstream OpenIPC firmware. When
pull-request or nightly CI selects this target without OPENIPC_FW_REPO and OPENIPC_FW_REV, the
required XM530 driver and bring-up path are unavailable and no functional archive can be produced.
Agent Prompt
## Issue description
The new device requires firmware changes that are not present in the upstream repository cloned by automated builds.

## Issue Context
The manual `build-one` workflow exposes repository and revision overrides, but the regular PR and nightly workflow invokes `builder.sh` without them. Ensure the dependency is merged upstream before this device is registered, or provide a suitably pinned compatible firmware source for this target in automated CI.

## Fix Focus Areas
- devices/xm530_lite_anbiux-a8b-3mp/br-ext-chip-xiongmai/configs/xm530_lite_anbiux-a8b-3mp_defconfig[49-51]
- .github/workflows/master.yml[189-217]
- builder.sh[129-143]

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

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

Copy link
Copy Markdown

Code review by qodo was updated up to the latest commit 826ab1d

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.

2 participants