Files
RadioControl/common/kmod/README.md
sssnake bb8f2aae2a RadioControl v1.0.0 — KernelSU-Next module for radio engineering
Shannon 5400 AT command terminal, BCM4390 WiFi mode switching,
carrier config override, debugfs browser, RF thermal monitoring,
CP debug, Thread/Wonder radio, satellite/NTN test support.

Verified on Pixel 10 Pro Fold (Tensor G5 / laguna).
2026-03-31 04:27:24 -07:00

1.7 KiB

RadioControl Kernel Modules

Out-of-tree kernel modules for enabling hardware features that are compiled out of production Android kernels.

Build Requirements

  • Matching kernel headers for target device
  • ARM64 cross-compiler (aarch64-linux-gnu-gcc)
  • Device-specific kernel config

Modules

rc_wifi_mon.ko

Patches the WiFi driver's nl80211 ops table at runtime to allow monitor mode and packet injection on chipsets that have the capability but disable it in their cfg80211 change_virtual_intf handler.

Supports:

  • Samsung SCSC/SLSI (slsi_set_monitor_mode — re-enables compiled-out path)
  • Broadcom bcmdhd (patches cfg80211_ops to allow NL80211_IFTYPE_MONITOR)
  • Qualcomm ath11k/ath12k/cnss (typically already supports monitor, but this bypasses vendor restrictions)

rc_diag_bridge.ko

Creates /dev/rc_diag — a simplified userspace interface to the Qualcomm DIAG subsystem that bypasses the standard diag driver's filtering. Allows reading/writing NV items and sending FTM commands from userspace.

rc_shannon_cmd.ko

Creates /dev/rc_shannon — direct command interface to Samsung Shannon modem bypassing RIL. Allows raw AT command passthrough and IPC message injection for band locking, NR mode control, and diagnostic readout.

Building

# Set up cross-compilation
export ARCH=arm64
export CROSS_COMPILE=aarch64-linux-gnu-
export KERNEL_DIR=/path/to/kernel/source

# Build all modules
make -C $KERNEL_DIR M=$(pwd) modules

# Or build individually
make -C $KERNEL_DIR M=$(pwd) CONFIG_RC_WIFI_MON=m modules

Runtime Loading

Modules are loaded by the RadioControl service.sh based on detected chipset. KernelSU module overlay places them in /vendor/lib/modules/ or loads directly via insmod.