I’m really happy to share that I finally managed to port the SV6256P (SSV6X5X) SDIO Wi-Fi driver from the legacy Linux 4.4 kernel to modern kernels.
This repository contains my working port for Linux kernel 6.12 and newer, with updated mac80211/cfg80211 integration so the driver can build and run on recent Armbian systems.
The chipset is commonly used in many low-cost TV boxes and embedded devices, but the original driver only supported legacy kernels (4.4).
Now it’s functional again on modern systems, at least on my tested hardware (Allwinner H616 / X96 Q via SDIO).
Repository link:
https://github.com/cdhigh/armbian_sv6256p
I’m quite excited to finally see this old Wi-Fi chip working on a 6.x kernel 🙂
[ 4.774151] ssv6x5x: importing configuration from /lib/firmware/ssv6x5x-wifi.cfg
[ 4.778281] tu_ssv6xxx_sdio_init, probe @(____ptrval____)
[ 4.779483] TU_SSV6XXX_SDIO mmc3:0001:1: Probing SDIO bus
[ 4.779513] ssv6xxx_set_sdio_clk: set sdio clk 25000000Hz
[ 4.799668] TU_SSV6XXX_SDIO mmc3:0001:1: vendor = 0x3030 device = 0x3030
[ 4.825421] TU_SSV6XXX_SDIO mmc3:0001:1: dataIOPort 0x10000 regIOPort 0x10020
[ 4.849181] TU_SSV6XXX_SDIO mmc3:0001:1: dataIOPort 0x10000 regIOPort 0x10020
[ 4.849530] TU_SSV6XXX_SDIO mmc3:0001:1: CHIP ID: SSV6006C0
[ 4.850373] ssv6x5x ops chk: tx=1 start=1 stop=1 config=1 add_if=1 rm_if=1 conf_filter=1 wake_txq=1
[ 4.850402] ssv6x5x chanctx chk: any=1 all=0 emulate=1 add=1 rm=1 chg=1 assign=0 unassign=0
[ 4.850409] ssv6x5x chanctx ops set but not complete
[ 4.850424] Attach SSV6006 family HAL function
[ 4.858285] MAC address from e-fuse
[ 4.858311] EFUSE configuration
[ 4.858315] Read efuse chip identity[79000000]
ip link show:
6: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DORMANT group default qlen 1000
link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff