I’m new to kernel driver development, so this might be just me not understanding the internals.
I’m trying to compile the morse_driver v1.15.3 targeting Rockchip RV1106 kernel (specifically Luckfox Pico Pro board) and I’m following the steps in Linux Porting Guide App Note.
I’m able to:
Apply morse kernel patches (mm/linux-5.10.11/1.15.x) to RV1106 android-based kernel
Compile the patched kernel
However, when I tried to compile the morse_driver it always gave me mmrc_osal.h: No such file or directory error. I’ve confirmed that the file exists and make did include the path to there.
I also tried passing CONFIG_ANDROID=y but error are still the same.
The following is the complete output of error
morse_driver$ make ARCH=arm CROSS_COMPILE=arm-rockchip830-linux-uclibcgnueabihf- KERNEL_SRC=../linux CONFIG_WLAN_VENDOR_MORSE=m CONFIG_MORSE_USER_ACCESS=y CONFIG_MORSE_VENDOR_COMMAND=y CONFIG_MORSE_SPI=y
make MORSE_VERSION="0-rel_1_15_3_2025_Apr_16" -C ../linux M=/home/test/developments/morse_driver
make[1]: Entering directory '/home/test/developments/linux'
CC [M] /home/test/developments/morse_driver/dot11ah/main.o
In file included from /home/test/developments/morse_driver/dot11ah/../rc.h:12,
from /home/test/developments/morse_driver/dot11ah/../morse.h:37,
from /home/test/developments/morse_driver/dot11ah/main.c:17:
/home/test/developments/morse_driver/dot11ah/../mmrc-submodule/src/core/mmrc.h:11:10: fatal error: mmrc_osal.h: No such file or directory
#include "mmrc_osal.h"
^~~~~~~~~~~~~
compilation terminated.
make[3]: *** [scripts/Makefile.build:273: /home/test/developments/morse_driver/dot11ah/main.o] Error 1
make[2]: *** [scripts/Makefile.build:516: /home/test/developments/morse_driver/dot11ah] Error 2
make[1]: *** [Makefile:1935: /home/test/developments/morse_driver] Error 2
make[1]: Leaving directory '/home/test/developments/linux'
make: *** [Makefile:179: all] Error 2
Just to add, compiling the driver for an upstream Android Kernel also shows the same issue. So, maybe there’s a different method to compile the driver for android kernel?
Ok, copying the “mmrc_osal.h” file to mmrc-submodule/src/core fixes the issue.
So, it seems like there’s an issue with Makefile not able to include that.
Which HaLow module are you connecting to the Luckfox Pico board? I encountered a similar issue with the Seeed WiFi Module (Quectel FGH100M-H). I managed to compile and flash the firmware to the board successfully, but it always fails when loading the driver—specifically when the board tries to send the firmware binary and BCF to the module. However, it can still detect the chip ID. Hopefully, I can get some insight from you as well.
I’m using the Xiao version of the Seeed WiFi Module (Quectel FGH100M-H). I just got the pico board, so need sometime to understand the flashing process and I still need to modify the dts.
But I’ll let you know how it goes.
I’m able to connect to the Xiao module with the FGH100M-H BCF file and SPI speef of 50MHz. I have some authentication issue, but right now I have Luckfox Pico Pro + Xiao Halow and RPi Zero 2W + Xiao Halow sending ping and iperf3 test. What issues are you seeing in your setup?
assuming you’re just building the module that should be fine, right?
I’m not too confident here, but my understanding is since you’re building against/with the kernel that has that config set already it will propagate if you don’t actively set CONFIG_ANDROID=n in the make flags.
in nix I just build the kernel separately with the morse patches and pass it into the derivation that builds the morse module. I have seen no negative effects from doing so.