v1.1.0: Complete kernel modules, fix WebUI bugs

Kernel modules fully implemented for kernel 6.6/Tensor G5:
- rc_wifi_mon: kprobes kallsyms, bcmdhd iovar monitor/promisc/allmulti,
  sysfs status at /sys/kernel/rc_wifi_mon/, clean unpatch on unload
- rc_shannon_cmd: ioctl interface (AT_CMD, GET_URC, SET_TIMEOUT,
  GET_STATUS, FLUSH), URC ring buffer (64 entries), modem probe on init
- rc_diag_bridge: HDLC decode with CRC-16 validation, FTM ioctl,
  EFS read/write/stat/unlink, version query, subsystem dispatch
- rc_ioctl.h: shared userspace header for all ioctl definitions
- All modules handle class_create() API change in kernel 6.4+

WebUI fixes:
- Fix malformed WiFi firmware JSON output
- Add vonr/vt/apn/nradv to carrier config read endpoint
- Fix carrier toggle state loading in frontend
- Fix redundant replace in kmod toggle logic

Makefile: single-module build (MOD=), make package target
uninstall.sh: unload kernel modules before cleanup
This commit is contained in:
sssnake
2026-03-31 20:25:44 -07:00
parent bb8f2aae2a
commit db07b4f7ef
10 changed files with 1656 additions and 204 deletions

View File

@@ -1,16 +1,35 @@
# RadioControl out-of-tree kernel modules
# Build: make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- KERNEL_DIR=/path/to/kernel
#
# Build all:
# make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- KERNEL_DIR=/path/to/kernel
#
# Build specific module:
# make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- KERNEL_DIR=/path/to/kernel MOD=rc_wifi_mon
#
# Target: Pixel 10 Pro Fold (rango), Tensor G5, kernel 6.6.102
KERNEL_DIR ?= /lib/modules/$(shell uname -r)/build
obj-$(CONFIG_RC_WIFI_MON) += rc_wifi_mon.o
obj-$(CONFIG_RC_DIAG_BRIDGE) += rc_diag_bridge.o
obj-$(CONFIG_RC_SHANNON_CMD) += rc_shannon_cmd.o
obj-$(CONFIG_RC_DIAG_BRIDGE) += rc_diag_bridge.o
# Default: build all
CONFIG_RC_WIFI_MON ?= m
CONFIG_RC_DIAG_BRIDGE ?= m
CONFIG_RC_SHANNON_CMD ?= m
CONFIG_RC_DIAG_BRIDGE ?= m
# Allow building a single module via MOD=name
ifdef MOD
CONFIG_RC_WIFI_MON = n
CONFIG_RC_SHANNON_CMD = n
CONFIG_RC_DIAG_BRIDGE = n
CONFIG_$(shell echo $(MOD) | tr a-z A-Z) = m
endif
# Extra compiler flags for Android/ARM64
ccflags-y += -Wno-unused-function
ccflags-y += -DCONFIG_RADIOCONTROL
all:
$(MAKE) -C $(KERNEL_DIR) M=$(CURDIR) modules
@@ -20,3 +39,15 @@ clean:
install:
$(MAKE) -C $(KERNEL_DIR) M=$(CURDIR) modules_install
# Copy built modules to the module package directory
package:
@mkdir -p ../../common/kmod_out
@for ko in *.ko; do \
if [ -f "$$ko" ]; then \
cp "$$ko" ../../common/kmod_out/; \
echo "Packaged: $$ko"; \
fi; \
done
.PHONY: all clean install package