Skip to content

anyka: RTL8188FU, RDA5995 and the USB host on every Anyka image, no load_anyka error - #2640

Merged
dimerr merged 6 commits into
masterfrom
anyka-tc100
Oct 20, 2026
Merged

dimerr merged 6 commits into
masterfrom
anyka-tc100

Conversation

@dimerr

@dimerr dimerr commented Oct 20, 2026 •

Copy link
Copy Markdown
Collaborator

Problem

#2639: an AK3918EV300 camera (chip ID 0x20160100, RTL8188FU Wi-Fi, no Ethernet) boots ak3918ev300_lite from RAM but has no network:

  • The USB host didn't come up at boot. otg-hs (CONFIG_USB_AKOTG_HS_HCD) was a module that nothing loaded; the reporter needed a manual modprobe otg-hs.
  • Wi-Fi didn't work. The image ships only r8188eu. Bound to 0bda:f179 through new_id, it creates wlan0 but finds no APs.
  • Every boot printed load_anyka: not found. The AK39 boards build their sensor, ISP and encoder drivers into the kernel and ship no load script.

Changes

Where Change
every Anyka defconfig BR2_PACKAGE_RTL8188FU_OPENIPC=y
general/package/rda5995-openipc new: Rdamicro's rdawfmac for the RDA5995 (USB 1e04:8888), the other USB Wi-Fi chip common on Ethernet-less Anyka cameras; firmware compiled into the module. Source is OpenIPC/rda-wlan: drivers/net/wireless/rdaw80211 of realme's open TechLife Robot Vacuum kernel, imported unmodified, then built for USB by default. Pinned to 593c3184ae3f84c563b1704f6ad24879f122634b; enabled on every Anyka defconfig
every AK39 kernel config (not AV130, which uses the vendor's ak_hcd) CONFIG_USB_AKOTG_HS_HCD=y; olddefconfig leaves each config otherwise unchanged
general/overlay/etc/wireless/usb new rda5995-generic profile: modprobe rdawfmac, exiting with its status (the driver fails to load when no chip attaches)
general/overlay/etc/init.d/S70vendor when the vendor has no load_<vendor>, prints No load_<vendor> on this image, nothing to load instead of failing; families with a script run it exactly as before

The S70vendor change is in the shared overlay, so it reaches every image and widens the CI matrix to all boards. It's a separate commit, so it can be dropped if a per-family fix is preferred.

The kernel side of #2639 (the gpio_keys_init hang, 1-bit SD) is OpenIPC/linux#112. This PR doesn't depend on it. fw_env.config from the issue isn't addressed here: the env had never been saved on that board.

Hardware tested on

No camera. Built locally and booted in the qemu-hisilicon emulator (ak3918ev300 machine) only. The reporter can test RAM-booted images over UART; the Wi-Fi association itself is untested.

Evidence

Local build of ak3918ev300_lite against OpenIPC/linux#112:

Before (nightly-20261019 build of master):

- uImage: [1594KB/2048KB]
- rootfs.squashfs: [2804KB/5120KB]

After (RTL8188FU and RDA5995):

- uImage: [1598KB/2048KB]
- rootfs.squashfs: [3304KB/5120KB]

Emulator boot of the built image:

usb-host 20200000.usb: Anyka usb host controller
usb-host 20200000.usb: new USB bus registered, assigned bus number 1
hub 1-0:1.0: USB hub found
Usb otg-hs controller driver initialized
...
Loading vendor modules...
No load_anyka on this image, nothing to load
...
root@openipc-ak3918ev300:~# modprobe 8188fu; echo rc=$?
rc=0
root@openipc-ak3918ev300:~# lsmod
Module                  Size  Used by    Tainted: G
8188fu               1090545  0
cfg80211              200907  1 8188fu
root@openipc-ak3918ev300:~# modprobe rdawfmac; echo rc=$?
modprobe: can't load module rdawfmac (extra/rdawfmac.ko): No such device
rc=1

rdawfmac resolves and runs its init, but with no RDA chip on the emulated bus it waits 9 s for a device to register and unloads with -ENODEV, by the driver's design. Attaching to a real RDA5995 is untested.

test_shell_parse.sh and STRICT=1 test_strip_shell_comments.sh pass.

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 TECKIN TC100 (AK3918EV300, no Ethernet) carries an RTL8188FU
(0bda:f179). The image shipped only r8188eu, which binds it through
new_id but never tunes, so the camera had no network at all.

The Anyka USB host (otg-hs) was a module that nothing loaded: USB, and
so the Wi-Fi dongle, came up only after a manual modprobe. It is now
built in on every AK39 board; AV130 keeps the vendor's ak_hcd.

Reported in #2639.
The AK39 boards build their sensor, ISP and encoder drivers into the
kernel and ship no load_anyka, so every boot printed
"load_anyka: not found" (#2639). Families with a load script run it
exactly as before.
Ethernet-less Anyka cameras on any of the AK39 parts carry the same
USB RTL8188FU as the TC100 (#2639), not only EV300.
Rdamicro's rdawfmac (USB 1e04:8888) with its firmware compiled in, from
OpenIPC/rda-wlan: drivers/net/wireless/rdaw80211 of realme's open
TechLife Robot Vacuum kernel, imported unmodified, then built for USB
by default. RDA5995 is the other USB Wi-Fi chip common on Ethernet-less
Anyka cameras.
@dimerr dimerr changed the title anyka: RTL8188FU and USB host on ak3918ev300_lite, no load_anyka error anyka: RTL8188FU and the USB host on every Anyka image, no load_anyka error Oct 20, 2026
@dimerr dimerr changed the title anyka: RTL8188FU and the USB host on every Anyka image, no load_anyka error anyka: RTL8188FU, RDA5995 and the USB host on every Anyka image, no load_anyka error Oct 20, 2026
@dimerr
dimerr marked this pull request as ready for review October 20, 2026 08:14
@qodo-free-for-open-source-projects

Copy link
Copy Markdown

PR Summary by Qodo

Enable USB Wi-Fi and built-in USB hosts across Anyka images

🐞 Bug fix ✨ Enhancement 🕐 20-40 Minutes

Grey Divider

AI Description

• Build AK39 USB host support into the kernel so USB devices work without manual module loading.
• Include RTL8188FU and RDA5995 Wi-Fi drivers in every Anyka image for supported USB adapters.
• Avoid a missing-script error when an image has no vendor module loader.
Diagram

graph TD
  A["Anyka defconfigs"] --> B["Wi-Fi packages"] --> C["Driver modules"] --> D["USB Wi-Fi"]
  A --> E["AK39 kernel configs"] --> F["Built-in USB host"] --> D
  G["Vendor init"] --> H{"Loader present?"}
Loading
High-Level Assessment

The following are alternative approaches to this PR:

1. Load the USB host module during startup
  • ➕ Keeps the USB host out of the kernel image.
  • ➖ Requires a reliable AK39 boot-time module-loading path, which these images currently lack.

Recommendation: Keep the AK39 host built in: it removes the boot-order dependency that prevented USB Wi-Fi from appearing. Shipping both drivers across Anyka images accommodates the two reported adapter types, though association and RDA5995 attachment still need real-hardware validation.

Files changed (19) +68 / -8

Enhancement (10) +51 / -0
ak3910_lite_defconfigInclude both USB Wi-Fi drivers on AK3910 +3/-0

Include both USB Wi-Fi drivers on AK3910

• Selects the RTL8188FU and RDA5995 packages for this lite image.

br-ext-chip-anyka/configs/ak3910_lite_defconfig

ak3916ev300_lite_defconfigInclude both USB Wi-Fi drivers on AK3916EV300 +3/-0

Include both USB Wi-Fi drivers on AK3916EV300

• Selects the RTL8188FU and RDA5995 packages for this lite image.

br-ext-chip-anyka/configs/ak3916ev300_lite_defconfig

ak3918_lite_defconfigInclude both USB Wi-Fi drivers on AK3918 +3/-0

Include both USB Wi-Fi drivers on AK3918

• Selects the RTL8188FU and RDA5995 packages for this lite image.

br-ext-chip-anyka/configs/ak3918_lite_defconfig

ak3918av130_lite_defconfigInclude both USB Wi-Fi drivers on AK3918AV130 +3/-0

Include both USB Wi-Fi drivers on AK3918AV130

• Selects both wireless packages while leaving this board's vendor USB host configuration unchanged.

br-ext-chip-anyka/configs/ak3918av130_lite_defconfig

ak3918ev200_lite_defconfigInclude both USB Wi-Fi drivers on AK3918EV200 +3/-0

Include both USB Wi-Fi drivers on AK3918EV200

• Selects the RTL8188FU and RDA5995 packages for this lite image.

br-ext-chip-anyka/configs/ak3918ev200_lite_defconfig

ak3918ev330_lite_defconfigInclude both USB Wi-Fi drivers on AK3918EV330 +3/-0

Include both USB Wi-Fi drivers on AK3918EV330

• Selects the RTL8188FU and RDA5995 packages for this lite image.

br-ext-chip-anyka/configs/ak3918ev330_lite_defconfig

ak3918ev331_lite_defconfigInclude both USB Wi-Fi drivers on AK3918EV331 +3/-0

Include both USB Wi-Fi drivers on AK3918EV331

• Selects the RTL8188FU and RDA5995 packages for this lite image.

br-ext-chip-anyka/configs/ak3918ev331_lite_defconfig

Config.inRegister the RDA5995 package +1/-0

Register the RDA5995 package

• Sources the new RDA5995 Kconfig entry so defconfigs can select it.

general/package/Config.in

Config.inDefine the RDA5995 wireless package option +8/-0

Define the RDA5995 wireless package option

• Adds a Linux-kernel-dependent option describing the USB rdawfmac driver and its compiled-in firmware.

general/package/rda5995-openipc/Config.in

rda5995-openipc.mkBuild the pinned RDA5995 USB kernel module +21/-0

Build the pinned RDA5995 USB kernel module

• Adds a kernel-module package pinned to an OpenIPC/rda-wlan commit. It builds the rdawlan subdirectory with USB enabled and SDIO disabled, and declares its licenses.

general/package/rda5995-openipc/rda5995-openipc.mk

Bug fix (9) +17 / -8
ak3910.generic.configBuild the AK3910 USB host into the kernel +1/-1

Build the AK3910 USB host into the kernel

• Changes CONFIG_USB_AKOTG_HS_HCD from a module to built-in so the USB host starts without manual loading.

br-ext-chip-anyka/board/ak3918ev300/ak3910.generic.config

ak3916ev300.generic.configBuild the AK3916EV300 USB host into the kernel +1/-1

Build the AK3916EV300 USB host into the kernel

• Makes the Anyka USB host built-in rather than a module.

br-ext-chip-anyka/board/ak3918ev300/ak3916ev300.generic.config

ak3918.generic.configBuild the AK3918 USB host into the kernel +1/-1

Build the AK3918 USB host into the kernel

• Makes the Anyka USB host available at boot without loading otg-hs.

br-ext-chip-anyka/board/ak3918ev300/ak3918.generic.config

ak3918ev200.generic.configBuild the AK3918EV200 USB host into the kernel +1/-1

Build the AK3918EV200 USB host into the kernel

• Changes the USB host driver from a module to built-in.

br-ext-chip-anyka/board/ak3918ev300/ak3918ev200.generic.config

ak3918ev300.generic.configBuild the AK3918EV300 USB host into the kernel +1/-1

Build the AK3918EV300 USB host into the kernel

• Enables the USB host at boot, addressing the manual-modprobe requirement reported for this board.

br-ext-chip-anyka/board/ak3918ev300/ak3918ev300.generic.config

ak3918ev330.generic.configBuild the AK3918EV330 USB host into the kernel +1/-1

Build the AK3918EV330 USB host into the kernel

• Changes the Anyka USB host driver from modular to built-in.

br-ext-chip-anyka/board/ak3918ev300/ak3918ev330.generic.config

ak3918ev331.generic.configBuild the AK3918EV331 USB host into the kernel +1/-1

Build the AK3918EV331 USB host into the kernel

• Changes the Anyka USB host driver from modular to built-in.

br-ext-chip-anyka/board/ak3918ev300/ak3918ev331.generic.config

ak3918ev300_lite_defconfigInclude both USB Wi-Fi drivers on AK3918EV300 +3/-0

Include both USB Wi-Fi drivers on AK3918EV300

• Adds the RTL8188FU driver needed by the reported adapter and selects RDA5995 support.

br-ext-chip-anyka/configs/ak3918ev300_lite_defconfig

S70vendorHandle images without a vendor load script +7/-1

Handle images without a vendor load script

• Checks whether load_<vendor> exists before invoking it. Images without one log an informational message; existing scripts still run with -i.

general/overlay/etc/init.d/S70vendor

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

qodo-free-for-open-source-projects Bot commented Oct 20, 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. Anyka camera changes lack hardware proof 📘 Rule violation ☼ Reliability
Description
The Anyka defconfigs newly select two wireless drivers and build the USB host into the kernel
without evidence from a real camera. The PR reports only a QEMU boot and explicitly says no camera
was tested, so the changed firmware behavior on every Anyka image remains unverified on affected
hardware.
Code

br-ext-chip-anyka/configs/ak3918ev300_lite_defconfig[R66-68]

+# USB RTL8188FU (0bda:f179), which r8188eu binds but cannot tune.
+BR2_PACKAGE_RTL8188FU_OPENIPC=y
+BR2_PACKAGE_RDA5995_OPENIPC=y
Evidence
The checklist requires hardware evidence for any PR that can change firmware behavior and treats an
explicit statement that no hardware was tested as a failure. The diff changes the image by selecting
both wireless packages in an Anyka defconfig, while the PR description says testing was limited to
QEMU and that Wi-Fi association was untested.

Rule 3: Hardware evidence is present and honest
br-ext-chip-anyka/configs/ak3918ev300_lite_defconfig[66-68]
general/overlay/etc/init.d/S70vendor[7-13]

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 firmware behavior across Anyka images but provides no real-camera verification; the only reported boot evidence comes from QEMU, and Wi-Fi association is explicitly untested.
## Fix Focus Areas
- br-ext-chip-anyka/configs/ak3918ev300_lite_defconfig[66-68]
- general/overlay/etc/init.d/S70vendor[7-13]
## Recommended Fix
Test an affected Anyka camera with the changed image, recording boot logs, USB host initialization, driver loading, Wi-Fi behavior, and the vendor-module startup message. Add the before/after hardware output to the PR description, or narrow the change to code that does not alter camera firmware behavior.

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


2. RDA cameras cannot connect to Wi-Fi ✓ Resolved
Description
The new RDA5995 package installs rdawfmac, but neither the boot module list nor the USB wireless
dispatcher loads it. On an Anyka camera configured to use the RDA adapter, S40network reaches the
dispatcher's failure path instead of bringing up wlan0, leaving an Ethernet-less camera without
network access.
Code

br-ext-chip-anyka/configs/ak3918ev300_lite_defconfig[68]

+BR2_PACKAGE_RDA5995_OPENIPC=y
Evidence
The package defines only kernel-module build wiring, while the boot module list excludes rdawfmac.
Network startup relies on the USB dispatcher for a configured wireless device; that dispatcher has
no RDA branch and ends in failure.

general/package/rda5995-openipc/rda5995-openipc.mk[15-21]
general/overlay/etc/init.d/S35modules[5-14]
general/overlay/etc/modules[1-2]
general/overlay/etc/init.d/S40network[27-56]
general/overlay/etc/wireless/usb[1-23]
general/overlay/etc/wireless/usb[285-327]

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 RDA driver is included in Anyka images but is never loaded by the normal wireless startup path.
## Fix Focus Areas
- general/overlay/etc/wireless/usb[1-23]
- general/overlay/etc/wireless/usb[324-327]
- general/overlay/etc/init.d/S40network[27-47]
## Recommended Fix
Add an RDA5995 profile to the shared USB dispatcher that loads `rdawfmac` and succeeds only when the module loads, so `S40network` can continue to wireless interface setup. Avoid loading the driver unconditionally on cameras without the RDA device.

ⓘ 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 open the rule or relationship behind a finding in one click

More tips ↗ | Customize Qodo ↗ | Qodo docs ↗

Grey Divider

Qodo Logo

Comment on lines +66 to +68
# USB RTL8188FU (0bda:f179), which r8188eu binds but cannot tune.
BR2_PACKAGE_RTL8188FU_OPENIPC=y
BR2_PACKAGE_RDA5995_OPENIPC=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. Anyka camera changes lack hardware proof 📘 Rule violation ☼ Reliability

The Anyka defconfigs newly select two wireless drivers and build the USB host into the kernel
without evidence from a real camera. The PR reports only a QEMU boot and explicitly says no camera
was tested, so the changed firmware behavior on every Anyka image remains unverified on affected
hardware.
Agent Prompt
## Issue description
The PR changes firmware behavior across Anyka images but provides no real-camera verification; the only reported boot evidence comes from QEMU, and Wi-Fi association is explicitly untested.

## Fix Focus Areas
- br-ext-chip-anyka/configs/ak3918ev300_lite_defconfig[66-68]
- general/overlay/etc/init.d/S70vendor[7-13]

## Recommended Fix
Test an affected Anyka camera with the changed image, recording boot logs, USB host initialization, driver loading, Wi-Fi behavior, and the vendor-module startup message. Add the before/after hardware output to the PR description, or narrow the change to code that does not alter camera firmware behavior.

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

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Agreed, and the PR stays a draft for that reason. Everything here has run only in the emulator; no Anyka camera has booted it. The reporter in #2639 can RAM-boot images over UART, and the hardware output will go in the description once they have. Until then the open questions are the ones listed there: RTL8188FU association, and whether rdawfmac attaches to a real RDA5995.

Comment thread br-ext-chip-anyka/configs/ak3918ev300_lite_defconfig
rda5995-openipc installed rdawfmac but no wlandev profile loaded it, so a
camera set to its RDA adapter took S40network's failure path. The
profile reports the module's status: rdawfmac fails to load when no chip
attaches, and then there is no wlan0 to bring up.
@dimerr
dimerr merged commit ef421c8 into master Oct 20, 2026
138 of 143 checks passed
@dimerr
dimerr deleted the anyka-tc100 branch October 20, 2026 16:06
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