rev V2.2: Wi-Fi working — the NV firmware needs two symlinks
I have a K2B rev V2.2 (DDR3, 4 GB) running Debian 13 with working Wi-Fi, and
since this thread lists networking as the remaining blocker, here is what was
missing. The DRAM side is already solved by pyavitz's kickpik2b-v2 target, so I
will not repeat it — this is only about the Wi-Fi/BT firmware.
WI-FI: THE DRIVER ASKS FOR FILENAMES NOBODY SHIPS
The SWT6621S driver requests two files that are not in any firmware package, so
request_firmware returns -2 and the interface never appears. Both requested
names are aliases of files that ARE shipped:
cd /lib/firmware
ln -sfn SWT6621S_NV_SDIO_SHARE.bin SWT6621S_NV_SDIO.bin
ln -sfn SWT6621S_SEEKWAVE_R00000.bin SEEKWAVE_NV_SWT6621S.bin
That is the entire fix. wlan0 comes up after a reboot.
Why SHARE and not ALONE — worth stating, because picking wrong here is silent.
The two files differ by exactly one byte, at offset 0x20: 01 vs 00.
SWT6621S_NV_SDIO.ini documents what it means:
;[bit0]0-share,1-stand alone -> BT_ANTENNA_TYPE
And the kernel independently reports bt_antenna=0 at boot on this board, i.e. a
shared antenna. So SHARE is the match — confirmed twice, not guessed.
BLUETOOTH: WORKS, BUT WITH A BORROWED IDENTITY
sv6160lite.nvbin is shipped by nobody — not the image, not the builder, not the
driver sources. It does exist in armbian/firmware, added for the sibling board
K3B, which uses the same SV6160LITE:
curl -sfL -o /lib/firmware/sv6160lite.nvbin \
"https://raw.githubusercontent.com/armbian/firmware/master/seekwave/sv6160lite.kickpi%2Ck3b.nvbin"
48 bytes, magic NVDS. The controller then comes up:
hci0: BD Address: 60:48:9C:41:28:F1 ACL MTU: 1021:6 SCO MTU: 255:4
UP RUNNING
[SKWBT_INFO] btseekwave_download_nv / chip version:0x5302
Two caveats, please read before using this:
1. The BD address comes from K3B's NV file. On one board that is harmless. If
several people apply this, every one of those boards ends up with the SAME
Bluetooth address — which will collide in the same room. I have not worked
out how to generate a per-board NV; if anyone knows the format well enough,
that is the missing piece.
2. BR/EDR works, BLE does not. hcitool lescan fails with "Set scan parameters
failed: Input/output error". Probably the K3B NV not matching this board
exactly. I did not chase it because Bluetooth is not needed for my use case.
WI-FI MAC IS NOT IN THE NV FILE
Worth knowing since it looks like a firmware problem but is not: the NV file
contains no MAC at all — 220 bytes of register pairs, and the .ini has no mac
or addr field. So the driver generates a random MAC per boot. If you need a
stable one, pin it with a systemd .link file rather than expecting firmware to
supply it.
ONE THING NOT TO DO
Do NOT modprobe -r this driver to reload firmware. The SDIO device is
non-removable and the module does not come back — it took a reboot to recover.
Reboot instead.
SETUP SUMMARY
- Board: KICKPI K2B rev V2.2 (label on the PCB), Allwinner H618, 4 GB DDR3
- Built with pyavitz/debian-image-builder, make all board=kickpik2b-v2
- Debian 13 trixie, kernel 6.12.103, u-boot 2026.01
- Running from eMMC, stable under load, Wi-Fi and BR/EDR Bluetooth working