Files
RadioControl/common/kmod/README.md

55 lines
1.7 KiB
Markdown
Raw Normal View History

# 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
```bash
# 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.