Skip to content

xiongmai: the Wi-Fi driver for each V200-series board - #2712

Merged
dimerr merged 6 commits into
masterfrom
xiongmai-v200-wifi
Oct 28, 2026
Merged

dimerr merged 6 commits into
masterfrom
xiongmai-v200-wifi

Conversation

@dimerr

@dimerr dimerr commented Oct 28, 2026 •

Copy link
Copy Markdown
Collaborator

Problem

Each V200-series board from #2709 now selects the Wi-Fi driver for the one chip its camera ships with. These boards come from one manufacturer, and each chip variant has one Wi-Fi part:

Board Wi-Fi ID Package Driver source
xm530v200_lite AltoBeam ATBM6012B-X (X6C-WEQ); "XM713G" (X2-WQ2), AsmLite firmware USB 007a:888b / 007a:8888 atbm603x-comb-openipc OpenIPC/atbm_60xx#6
xm533_lite "SSV6158M" = iComm SSV6020B/C SDIO 5653:2060 ssv6020-openipc OpenIPC/ssv6x5x#2
xm535d1_lite AltoBeam ATBM6012B-X USB 007a:888b atbm603x-comb-openipc OpenIPC/atbm_60xx#6
xm535d2_lite AltoBeam ATBM6132CU (Wi-Fi 6) USB 007a:6052/6055/6162 atbm606x-openipc OpenIPC/atbm_60xx#5
xm535w1_lite AltoBeam ATBM6012B-X USB 007a:888b atbm603x-comb-openipc OpenIPC/atbm_60xx#6

None of the existing packages covers these chips:

  • ssv615x/ssv635x are SSV6006/SSV6030.
  • atbm60xx predates AsmLite and has only Ares-B firmware.
  • atbm-wifi and atbm60xx have no Wi-Fi 6 parts.

What the three packages do:

  • atbm603x-comb-openipc: AltoBeam's apollo driver (DRIVER_VER 2874, as Khadas ships it), with the AsmLite and Ares-B firmware built in. It uses the kernel's cfg80211, and the directory's own .config.
  • ssv6020-openipc: iComm's L.SMAC trunk r170 with the SSV6020 HAL, as Allwinner's BSP ships it, made to build as an external module on 3.10. It installs ssv6x5x.ko, ssv6x5x-sw.bin in /lib/firmware, and /etc/ssv6x5x-wifi.cfg.
  • atbm606x-openipc: AltoBeam's Wi-Fi 6 driver as Ingenic's SDK ships it (DRIVER_VER 4327). It brings its own cfg80211, as the vendor firmware does, so the xm535d2 kernel config turns the kernel's CFG80211 and MAC80211 off.

All three pin full commit SHAs from the source PRs above. Those SHAs already download from the openipc/ archive URLs; if the source PRs are squash-merged, the pins should move to the merged commits.

Hardware tested on

Not run on a camera; qemu-bench only. qemu-bench emulates the AltoBeam Ares-B/AresLite dongle at the WSM protocol level, so atbm603x-comb-openipc goes as far as a DHCP lease over Wi-Fi there. It has no model of the SSV6020 or the Cronus chips, so those two only load. No radio has been tested.

Evidence

QEMU, xm530v200 (PID 8888) and xm535d1 (PID 888b), with qemu-bench's atbm-wifi dongle:

[atbm_log]:atbm_get_chiptype, chipver=0x49, g_wifi_chip_type[10]      <- xm535d1: chipver=0x4a, [12]
usbcore: registered new interface driver atbm_wlan
# ls /sys/class/net
eth0 lo p2p0 wlan0
# wpa_supplicant -B -i wlan0 -c /tmp/w.conf      (ssid "OpenIPC", key_mgmt=NONE)
# udhcpc -i wlan0 -n -q -t 5 -s /usr/sbin/udhcpc.script
udhcpc: lease of 192.168.50.15 obtained from 192.168.50.2, lease time 86400
0          <- dmesg lines matching oops|unable to handle|BUG:

QEMU, xm533 (OpenIPC U-Boot, kernel and rootfs):

# modprobe ssv6x5x stacfgpath=/etc/ssv6x5x-wifi.cfg; echo rc=$?
rc=0
ssv6x5x               456972  0
mac80211              181016  1 ssv6x5x
cfg80211              121336  2 ssv6x5x,mac80211
*** _import_default_cfg, /etc/ssv6x5x-wifi.cfg ***
ssv6xxx_hci_init() start
ssv6xxx_sdio_init

QEMU, xm535d2 (a clean build):

# grep -E "atbm606x|cfg80211" /lib/modules/3.10.103+/modules.dep
extra/wireless/cfg80211.ko:
extra/hal_apollo/atbm606x_wifi_usb.ko: extra/wireless/cfg80211.ko
# modprobe atbm606x_wifi_usb; echo rc=$?
rc=0
atbm606x_wifi_usb    1128412  0
cfg80211              237168  1 atbm606x_wifi_usb
0          <- dmesg lines matching unknown symbol|disagrees|oops|unable to handle|BUG:
[atbm_log]:SVN_VER=4327,DPLL_CLOCK=1,BUILD_TIME=[2026-10-28_10:48:24]
usbcore: registered new interface driver atbm_wlan

Image sizes:

Image rootfs.squashfs Before Notes
xm533 2.49 MB of 5 MB 2.16 MB
xm535d2 2.66 MB of 5 MB 2.21 MB the kernel's cfg80211/mac80211 are gone
xm530v200 2.54 MB of 5 MB 2.17 MB
xm535d1, xm535w1 2.52 MB of 5 MB 2.16 MB

ci-matrix.py --self-test: ok (112 boards, 161 packages).

Scope

  • No kernel patches under general/package/all-patches/linux/ (those go to OpenIPC/linux)
  • No files specific to a single retail camera model (those go to OpenIPC/builder)
  • No probing or bring-up tooling (that goes to OpenIPC/ipctool)
  • Nothing under general/overlay/ or in a shared load_<vendor> script hardcodes a value specific to my board
  • Package sources come from an OpenIPC repository, and any version bump keeps at least the specificity of the pin it replaces (a new package should pin a full 40-character SHA)
  • No LD_PRELOAD, and no binaries that cannot be rebuilt from source
  • New code is selected by a defconfig, so CI actually builds it

The Wi-Fi on Xiongmai XM533 boards (X3-WQ-B, "SSV6158M") is an iComm
SSV6020B/C on SDIO, 5653:2060. Neither ssv615x-openipc (SSV6006,
3030:3030) nor ssv635x-openipc (SSV6030, 5356:6030) binds it.

The source is the ssv6020/ directory of OpenIPC/ssv6x5x
(OpenIPC/ssv6x5x#2): iComm's L.SMAC trunk
r170 with the SSV6020 HAL, as Allwinner's BSP ships it for the SSV6158,
made to build as an external module on 3.10. The package installs the
module, its ssv6x5x-sw.bin firmware in /lib/firmware (it calls
request_firmware without a firmware_path) and a default
/etc/ssv6x5x-wifi.cfg. xm533_lite selects it.

On the xm533 image in qemu-bench, `modprobe ssv6x5x
stacfgpath=/etc/ssv6x5x-wifi.cfg` loads cfg80211, mac80211 and the
driver, which reads the cfg and registers its SDIO driver with no unknown
symbol. qemu-bench has no SSV6020, so the card itself needs a camera.
…BM6132CU

The Wi-Fi on Xiongmai XM535D2 boards (X9-WE2Q) is an AltoBeam ATBM6132CU,
USB 007a:6052/6055/6162. Neither atbm-wifi nor atbm60xx carries
AltoBeam's Wi-Fi 6 parts or their firmware.

The source is the atbm606x/ directory of OpenIPC/atbm_60xx
(OpenIPC/atbm_60xx#5): AltoBeam's 606x
driver as Ingenic's SDK ships it (DRIVER_VER 4327). It covers the
ATBM6062, 6062-C, 6162 and 6132-C, with the Cronus, Oceanus and Cronus
Lite firmware built in and chosen at run time. Its USB table matches the
vendor 6132cu.ko's exactly. It needs no changes, only settings: those
are passed as make variables, as for atbm60xx, since the tree has no
.config.

It brings its own cfg80211 (a backport) and mac80211, as the vendor
firmware does, so the xm535d2 kernel config turns the kernel's
CFG80211 and MAC80211 off. Otherwise two cfg80211.ko would ship and
depmod could bind the driver to the wrong one. xm535d2_lite selects
the package.

On a clean xm535d2 build in qemu-bench:
  - modules.dep binds atbm606x_wifi_usb.ko to the bundled cfg80211.ko;
  - modprobe loads both and the driver registers atbm_wlan
    (SVN_VER=4327), with no unknown symbol or Oops.
The rootfs is 2.66 MB of 5 MB. qemu-bench's ATBM model is Ares-B only,
so the dongle itself needs a camera.
…D1 and XM535W1

Each V200-series board now selects the Wi-Fi driver for the chip its
camera ships with:

| Board | Wi-Fi | Package |
|---|---|---|
| xm530v200_lite | ATBM6012B-X (X6C-WEQ, 007a:888b); XM713G (X2-WQ2, 007a:8888, AsmLite firmware) | atbm603x-comb-openipc |
| xm533_lite | iComm SSV6020 | ssv6020-openipc |
| xm535d1_lite | ATBM6012B-X | atbm603x-comb-openipc |
| xm535d2_lite | ATBM6132CU | atbm606x-openipc |
| xm535w1_lite | ATBM6012B-X | atbm603x-comb-openipc |

The source is the atbm603x_comb/ directory of OpenIPC/atbm_60xx
(OpenIPC/atbm_60xx#6): AltoBeam's apollo driver (DRIVER_VER 2874), as
Khadas ships it, with the AsmLite and Ares-B firmware built in. The chip
type is picked at run time. It binds 007a:888b and 007a:8888, and uses
the kernel's cfg80211. The directory's own .config is used, through
ATBM_BUILD_IN_KERNEL=n and WIFI_PROJ_DIR.

In qemu-bench, with its emulated AltoBeam dongle:
  - xm530v200 (PID 8888, chip 0x49) and xm535d1 (PID 888b, chip 0x4a):
    modprobe identifies the chip and brings up wlan0;
  - wpa_supplicant associates with the model's open AP;
  - udhcpc gets a lease over Wi-Fi (192.168.50.15);
  - no Oops.
rootfs: xm530v200 2.54 MB, xm535d1/w1 2.52 MB, of 5 MB.
@dimerr dimerr changed the title xiongmai: Wi-Fi for the XM533 (SSV6020) and XM535D2 (ATBM6132CU) xiongmai: the Wi-Fi driver for each V200-series board Oct 28, 2026
@dimerr
dimerr marked this pull request as ready for review October 28, 2026 11:17
@qodo-free-for-open-source-projects

Copy link
Copy Markdown

PR Summary by Qodo

Add board-specific Wi-Fi drivers for Xiongmai V200 cameras

✨ Enhancement ⚙️ Configuration changes 🕐 40+ Minutes

Grey Divider

AI Description

• Add three pinned Wi-Fi driver packages for the V200 boards’ USB and SDIO chipsets.
• Select the matching driver in each of five board defconfigs.
• Disable XM535D2’s kernel wireless stack to avoid conflicting with its vendor driver.
Diagram

graph TD
  A["XM530 D1 W1"] --> D["ATBM603x package"] --> G["Kernel cfg80211"]
  B["XM533"] --> E["SSV6020 package"] --> G
  C["XM535D2"] --> F["ATBM606x package"] --> H["Bundled cfg80211"]
Loading
High-Level Assessment

Keep separate packages for the three upstream driver trees and select them per board. Extending the existing AltoBeam or SSV packages would couple distinct chipset sources and wireless-stack requirements without covering these devices as shipped.

Files changed (13) +146 / -33

Enhancement (6) +128 / -0
Config.inDefine the ATBM603x combination driver option +7/-0

Define the ATBM603x combination driver option

• Adds a kernel-dependent package option documenting the supported AltoBeam USB chips, built-in firmware and kernel cfg80211 requirement.

general/package/atbm603x-comb-openipc/Config.in

atbm603x-comb-openipc.mkBuild the pinned ATBM603x USB kernel module +23/-0

Build the pinned ATBM603x USB kernel module

• Pins the OpenIPC driver source and builds its atbm603x_comb subtree as an external kernel module using the subtree’s own configuration.

general/package/atbm603x-comb-openipc/atbm603x-comb-openipc.mk

Config.inDefine the ATBM606x Wi-Fi 6 driver option +8/-0

Define the ATBM606x Wi-Fi 6 driver option

• Adds a kernel-dependent package option describing the supported Wi-Fi 6 chips and the requirement to disable the kernel’s cfg80211 and mac80211.

general/package/atbm606x-openipc/Config.in

atbm606x-openipc.mkBuild the pinned ATBM606x driver and wireless stack +58/-0

Build the pinned ATBM606x driver and wireless stack

• Pins the OpenIPC source and supplies the Wi-Fi 6 build settings for the USB driver and its bundled cfg80211. Enables the software encryption option required by the vendor code on older kernels.

general/package/atbm606x-openipc/atbm606x-openipc.mk

Config.inDefine the SSV6020 SDIO driver option +7/-0

Define the SSV6020 SDIO driver option

• Adds a kernel-dependent package option identifying the SSV6020 SDIO device and its required firmware.

general/package/ssv6020-openipc/Config.in

ssv6020-openipc.mkBuild SSV6020 and install its firmware and config +25/-0

Build SSV6020 and install its firmware and config

• Pins the OpenIPC SSV6020 source and builds it as an external kernel module. Installs its firmware under /lib/firmware and its default configuration under /etc.

general/package/ssv6020-openipc/ssv6020-openipc.mk

Other (7) +18 / -33
xm535d2.generic.configDisable XM535D2’s kernel cfg80211 and mac80211 +5/-33

Disable XM535D2’s kernel cfg80211 and mac80211

• Turns off the kernel’s cfg80211 and, consequently, mac80211 for XM535D2. This leaves the wireless stack supplied by the ATBM606x driver as the board’s sole cfg80211 implementation.

br-ext-chip-xiongmai/board/xm530/xm535d2.generic.config

xm530v200_lite_defconfigSelect ATBM603x for XM530V200 +2/-0

Select ATBM603x for XM530V200

• Selects the ATBM603x combination driver for the board’s ATBM6012B-X and XM713G USB Wi-Fi variants.

br-ext-chip-xiongmai/configs/xm530v200_lite_defconfig

xm533_lite_defconfigSelect SSV6020 for XM533 +2/-0

Select SSV6020 for XM533

• Selects the SSV6020 SDIO driver for the XM533’s SSV6158M-labelled Wi-Fi chip.

br-ext-chip-xiongmai/configs/xm533_lite_defconfig

xm535d1_lite_defconfigSelect ATBM603x for XM535D1 +2/-0

Select ATBM603x for XM535D1

• Selects the ATBM603x combination driver for the board’s ATBM6012B-X USB Wi-Fi chip.

br-ext-chip-xiongmai/configs/xm535d1_lite_defconfig

xm535d2_lite_defconfigSelect ATBM606x for XM535D2 +2/-0

Select ATBM606x for XM535D2

• Selects the ATBM606x Wi-Fi 6 USB driver for the board’s ATBM6132CU chip.

br-ext-chip-xiongmai/configs/xm535d2_lite_defconfig

xm535w1_lite_defconfigSelect ATBM603x for XM535W1 +2/-0

Select ATBM603x for XM535W1

• Selects the ATBM603x combination driver for the board’s ATBM6012B-X USB Wi-Fi chip.

br-ext-chip-xiongmai/configs/xm535w1_lite_defconfig

Config.inExpose three new Wi-Fi packages +3/-0

Expose three new Wi-Fi packages

• Adds the ATBM603x, ATBM606x and SSV6020 package menus to the general Buildroot package configuration.

general/package/Config.in

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

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

Copy link
Copy Markdown

Code Review by Qodo

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

Grey Divider


Action required

1. Affected cameras have untested Wi-Fi 📘 Rule violation ☼ Reliability
Description
The five Xiongmai defconfigs select three new Wi-Fi drivers, and the xm535d2 configuration also
changes the kernel wireless stack. Because the PR reports only QEMU validation, which cannot model
the SSV6020 or Cronus radios, boot and wireless operation remain unverified on the affected camera
boards.
Code

br-ext-chip-xiongmai/configs/xm535d2_lite_defconfig[R67-68]

+# Wi-Fi: the X9-WE2Q's AltoBeam ATBM6132CU, USB, with its own cfg80211
+BR2_PACKAGE_ATBM606X_OPENIPC=y
Evidence
The cited defconfig changes add Wi-Fi package selections across five camera images, while xm535d2
also changes the kernel wireless configuration for a driver that supplies its own cfg80211 and
mac80211. The PR states that no camera was tested and that qemu-bench cannot model the SSV6020 or
Cronus radios, so its reported validation does not establish how the changed images behave on
physical hardware.

Rule 3: Hardware evidence is present and honest
br-ext-chip-xiongmai/configs/xm530v200_lite_defconfig[66-67]
br-ext-chip-xiongmai/configs/xm533_lite_defconfig[67-68]
br-ext-chip-xiongmai/configs/xm535d2_lite_defconfig[67-68]
general/package/atbm606x-openipc/atbm606x-openipc.mk[9-17]
Best Practice: Repository guidelines

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 PR changes Wi-Fi drivers and kernel wireless configuration in five camera images, but validation was limited to QEMU and did not exercise the affected physical boards.
## Fix Focus Areas
- br-ext-chip-xiongmai/configs/xm530v200_lite_defconfig[66-67]
- br-ext-chip-xiongmai/configs/xm533_lite_defconfig[67-68]
- br-ext-chip-xiongmai/configs/xm535d1_lite_defconfig[67-68]
- br-ext-chip-xiongmai/configs/xm535d2_lite_defconfig[67-68]
- br-ext-chip-xiongmai/configs/xm535w1_lite_defconfig[67-68]
## Recommended Fix
Test each affected Wi-Fi variant on its corresponding physical camera board. Add before/after evidence for driver loading and module output, dmesg, interface discovery, association, DHCP and network connectivity, and streaming; name each tested board and check only the test or verification checkboxes supported by the results.

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


2. Three boards cannot load their Wi-Fi driver ✓ Resolved
Description
The new atbm603x-comb-openipc package builds atbm603x_comb_wifi_usb, but the existing
atbm603x-generic-usb loader requests atbm603x_wifi_usb. When that wireless profile is used on
any of the three boards selecting the new package, startup requests the old module instead of the
installed one.
Code

general/package/atbm603x-comb-openipc/atbm603x-comb-openipc.mk[R15-17]

+# atbm603x_comb_wifi_usb). ATBM_BUILD_IN_KERNEL=n makes its Makefiles
+# read it from WIFI_PROJ_DIR.
+ATBM603X_COMB_OPENIPC_MODULE_SUBDIRS = atbm603x_comb
Evidence
The recipe names the new module, while the profile invoked by network startup names a different
module. The three changed defconfigs select the new package.

general/package/atbm603x-comb-openipc/atbm603x-comb-openipc.mk[14-20]
general/overlay/etc/wireless/usb[42-48]
general/overlay/etc/init.d/S40network[26-38]
br-ext-chip-xiongmai/configs/xm530v200_lite_defconfig[66-67]
br-ext-chip-xiongmai/configs/xm535d1_lite_defconfig[67-68]
br-ext-chip-xiongmai/configs/xm535w1_lite_defconfig[67-68]

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 package builds a different module name from the one requested by the existing USB wireless profile.
## Fix Focus Areas
- general/package/atbm603x-comb-openipc/atbm603x-comb-openipc.mk[14-20]
- general/overlay/etc/wireless/usb[42-48]
## Recommended Fix
Give the new boards a USB wireless profile that loads `atbm603x_comb_wifi_usb`, without changing the existing profile for boards that still install `atbm603x_wifi_usb`.

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


3. The Wi-Fi 6 board leaves its radio unloaded ✓ Resolved
Description
atbm606x-openipc builds atbm606x_wifi_usb without adding a matching wireless-loader profile or
another boot-time load path. When the XM535D2 network startup uses its configured wireless device,
neither wireless dispatcher loads this module, so startup cannot bring up wlan0.
Code

general/package/atbm606x-openipc/atbm606x-openipc.mk[47]

+	CONFIG_ATBM_MODULE_NAME_WIFI6=atbm606x_wifi_usb \
Evidence
Network startup delegates loading to the USB and SDIO dispatchers; the USB dispatcher has an
ATBM603x case but no case for the newly named Wi-Fi 6 module. The boot module list does not provide
an alternative load path.

br-ext-chip-xiongmai/configs/xm535d2_lite_defconfig[67-68]
general/package/atbm606x-openipc/atbm606x-openipc.mk[44-49]
general/overlay/etc/init.d/S40network[26-46]
general/overlay/etc/wireless/usb[42-48]
general/overlay/etc/modules[1-2]
general/overlay/etc/init.d/S35modules[5-17]

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 XM535D2 image contains the Wi-Fi 6 module but normal wireless startup does not request it.
## Fix Focus Areas
- general/package/atbm606x-openipc/atbm606x-openipc.mk[44-49]
- general/overlay/etc/wireless/usb[42-48]
## Recommended Fix
Add a USB wireless profile that runs `modprobe atbm606x_wifi_usb`, and ensure the XM535D2 wireless device setting uses that profile.

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


View action required (1)
4. The SDIO board leaves its radio unloaded ✓ Resolved
Description
ssv6020-openipc installs ssv6x5x.ko and its firmware and configuration, but does not arrange for
the module to load after the XM533 SDIO host starts. At boot, the XM533 vendor loader loads
xm_v200_sd without loading ssv6x5x, and neither the boot module list nor the SDIO wireless
dispatcher supplies the missing step.
Code

general/package/ssv6020-openipc/ssv6020-openipc.mk[R22-25]

+SSV6020_OPENIPC_POST_INSTALL_TARGET_HOOKS += SSV6020_OPENIPC_INSTALL_FIRMWARE
+
+$(eval $(kernel-module))
+$(eval $(generic-package))
Evidence
The recipe installs the new package’s files, but the XM533 loader stops at the SDIO host. The boot
module list and SDIO dispatcher contain no SSV6020 load command, and mdev has no SDIO modalias
autoload rule.

general/package/ssv6020-openipc/ssv6020-openipc.mk[15-25]
general/package/xiongmai-osdrv-xm530v200/files/xm533/load_xiongmai[64-70]
general/overlay/etc/modules[1-2]
general/overlay/etc/init.d/S35modules[5-17]
general/overlay/etc/wireless/sdio[1-20]
general/overlay/etc/mdev.conf[21-28]

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 XM533 image installs the SSV6020 driver but its normal startup never loads it.
## Fix Focus Areas
- general/package/ssv6020-openipc/ssv6020-openipc.mk[15-25]
- general/package/xiongmai-osdrv-xm530v200/files/xm533/load_xiongmai[64-70]
- general/overlay/etc/wireless/sdio[1-20]
## Recommended Fix
Provide an XM533-appropriate boot or wireless-loader path that loads `ssv6x5x` after its SDIO host, passing the installed configuration path if the driver needs it. Do not reuse a profile that changes another board’s GPIO.

ⓘ 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 turn on the rule miner and Qodo learns your standards from review history

More tips ↗ | Customize Qodo ↗ | Qodo docs ↗

Grey Divider

Qodo Logo

Comment thread br-ext-chip-xiongmai/configs/xm535d2_lite_defconfig
Comment thread general/package/atbm603x-comb-openipc/atbm603x-comb-openipc.mk
Comment thread general/package/atbm606x-openipc/atbm606x-openipc.mk
Comment thread general/package/ssv6020-openipc/ssv6020-openipc.mk
…safety fixes

Both source PRs gained a commit from review: OpenIPC/ssv6x5x#2 bounds its
debug interfaces' input and fixes a module-load crash on a missing
stacfgpath (1d5db46); OpenIPC/atbm_60xx#5 bounds its USB endpoint and RX
header reads and the private ioctls' input (5379d2a). Both rebuilt images
load the drivers in qemu-bench without an Oops.
From review on #2712: the drivers were in the images, but no wlandev
profile loaded them. S40network runs the profile named by wlandev.

USB (/etc/wireless/usb):
  - atbm603x-xm530v200-x6c-weq (pad 87)
  - atbm603x-xm530v200-x2-wq2 (pad 82)
  - atbm603x-xm535d1-x6e-weq (pad 11)
  - atbm603x-xm535w1-x2w-wng (pad 163)
  - atbm606x-xm535d2-x9-we2q (no pad; its vendor loadpublic passes 255)
Each loads the USB host, which load_xiongmai would only load after
S40network: the vendor's dwc2 and xm_usb0. It then cycles the dongle's
power pad as the vendor wifi_pdn.ko does (output high, 2 s, low, 2 s;
the pads are its loadpublic's), loads the driver and waits for wlan0.
load_xiongmai now modprobes dwc2 and xm_usb0, so a host the profile
loaded is not loaded twice.

atbm603x-generic-usb also takes atbm603x-comb-openipc's module when
atbm-wifi's is not there, and atbm606x-generic-usb loads atbm606x's.

SDIO (/etc/wireless/sdio): ssv6020-xm533-x3-wq-b loads
xm_v200_sdio_wifi (OpenIPC/linux#156), which registers the XM533's SDIO0
Wi-Fi slot with power pad 166 and clock phase 0x170, then ssv6x5x with
its cfg. The xm533 kernel config builds xm_v200_sdio_wifi.

In qemu-bench:
  - xm530v200, wlandev=atbm603x-xm530v200-x6c-weq and wlanssid=OpenIPC,
    with its emulated AltoBeam dongle: at boot wlan0 joins, gets
    192.168.50.15 by DHCP and takes the default route.
  - xm533, wlandev=ssv6020-xm533-x3-wq-b: the slot comes up as mmc0
    (25 MHz from the 1.2 GHz PLL) and ssv6x5x binds it, beside the card
    slot's mmc1, which mounts its card. qemu-bench has no SSV6020, so
    there is no wlan0 there.
@dimerr
dimerr merged commit ac8798c into master Oct 28, 2026
19 checks passed
@dimerr
dimerr deleted the xiongmai-v200-wifi branch October 28, 2026 12:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant