Skip to content

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

Open
yatotoshka wants to merge 1 commit 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 1 commit into
OpenIPC:masterfrom
yatotoshka:xm530-lite-anbiux-a8b-3mp

Conversation

@yatotoshka

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

  • xm530_lite_anbiux-a8b-3mp_defconfigxm530_lite_defconfig plus
    atbm60xx (603x, USB), the same three-line pattern as the gk7205v300
    g6s-w profile.
  • customizer.sh — sets wlandev=atbm603x-xm530-usb (the bring-up case in
    firmware's /etc/wireless/usb, provided by xm530: bring up the AltoBeam ATBM6032 USB WiFi chip firmware#2316) and the
    upgrade url to this device's builder release, so the Web UI update keeps
    pulling this device's image.
  • xm530_lite.list — prunes the wifi stacks this radio does not use
    (xm711, xm712-compat, 8188fu) to leave room for the atbm60xx module in the
    5M rootfs.

Dependency

OpenIPC/firmware#2316
(cfg80211 guard): without it, xiongmai-osdrv-xm530 installs the vendor
cfg80211 rewrite over the in-tree one the atbm driver is built against, and
the radio will not load in the built image. That PR also enables atbm60xx in
the shared xm530_lite defconfig (with the bring-up case and the guard);
this profile keeps the selection explicit in its defconfig snapshot and adds
the per-device parts: first-boot wlandev, the device upgrade url, and the
prune list.

Hardware tested on

XM530AI (marking 30WX1), board IPC-RB-BLK530AI-0235P-AB0 V1.03.

Evidence

The chip, PDN gpio 96 and the load order (dwc → wifi_pdn → atbm603x) are
proven on this camera — it is currently associated:

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

Status: the camera runs the driver from a prebuilt blob + local init script
today

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

@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 XM530 Anbiux A8B-3MP device profile

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

Grey Divider

AI Description

• Adds an XM530 Lite profile with ATBM6032 USB WiFi support.
• Configures first-boot WiFi power, device-specific upgrades, and rootfs pruning.
• Documents the camera and covers its Xiongmai build path in smoke CI.
Diagram

graph TD
  P["Device profile"] --> B["Buildroot config"] --> I["Firmware image"] --> C["First-boot customizer"] --> E["Boot environment"] --> W["Wireless init"] --> R["ATBM6032 radio"]
  X["Module exclusions"] --> I
Loading
High-Level Assessment

The following are alternative approaches to this PR:

1. Rely only on shared XM530 configuration
  • ➕ Avoids explicitly repeating the ATBM60XX selections in the device defconfig
  • ➕ Reduces future configuration drift
  • ➖ Makes the device profile less self-contained
  • ➖ Couples hardware support more tightly to the exact shared firmware revision
2. Keep all WiFi stacks in the image
  • ➕ Preserves broader radio compatibility
  • ➕ Avoids device-specific module exclusions
  • ➖ Risks exceeding the constrained 5 MB rootfs
  • ➖ Ships unused drivers for fixed camera hardware

Recommendation: Keep the device-specific profile, explicit ATBM603X selection, customizer, and exclusion list. The profile remains auditable while the exclusions are justified by the rootfs limit; shared cfg80211 coexistence and bring-up logic should remain centralized in the declared firmware dependency.

Files changed (5) +97 / -0

Enhancement (1) +71 / -0
xm530_lite_anbiux-a8b-3mp_defconfigDefine the XM530 Lite ATBM6032 build profile +71/-0

Define the XM530 Lite ATBM6032 build profile

• Adds the complete XM530 Lite Buildroot configuration for the A8B-3MP. It selects the ATBM60XX 603X USB driver, omits unused MT7601U firmware, and targets the Xiongmai XM530 8 MB platform.

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

Tests (1) +1 / -0
ci-matrix.pyCover the Xiongmai profile in smoke CI +1/-0

Cover the Xiongmai profile in smoke CI

• Adds the Anbiux XM530 target to SMOKE_TARGETS so Xiongmai-specific build traits remain represented and matrix self-validation succeeds.

.github/scripts/ci-matrix.py

Documentation (1) +1 / -0
README.mdList the Anbiux A8B-3MP as supported hardware +1/-0

List the Anbiux A8B-3MP as supported hardware

• Documents the XM530AI camera, SC3335 sensor, ATBM603X USB radio, 8 MB NOR flash, and current support status.

README.md

Other (2) +24 / -0
customizer.shConfigure device-specific WiFi startup and upgrades +19/-0

Configure device-specific WiFi startup and upgrades

• Sets the builder release URL, chooses the atbm603x-xm530-usb bring-up path, and records GPIO 96 as WiFi power-down control. It schedules a reboot so the persisted boot settings take effect.

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

xm530_lite.listPrune unused Xiongmai WiFi modules +5/-0

Prune unused Xiongmai WiFi modules

• Excludes XM711, compatibility, and RTL8188FU modules from this device image to reserve rootfs space for the ATBM60XX driver.

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 (1) 📜 Skill insights (0)

Grey Divider


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


Grey Divider

Tip of the day
💡 Did you know, you can ask Qodo to dismiss a finding you disagree with, with your reason on record

More tips ↗ | Customize Qodo ↗ | Qodo docs ↗

Grey Divider

Previous reviews

Review updated until commit e8f06b6 ⚖️ Balanced

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

BR2_TARGET_ROOTFS_SQUASHFS4_XZ=y

# OpenIPC
BR2_OPENIPC_SOC_VENDOR="xiongmai"

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

2. New vendor breaks ci 🐞 Bug ≡ Correctness

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.
Agent Prompt
## 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

@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

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