The MM6108 HaLow module on a Raspberry Pi 4 using the APIM2 adapter board. My goal is to start with UART or SDIO bring-up, since the APIM2 M.2 E-Key slot does not support SPI, only SDIO and UART.
Here is the context of my setup:
Hardware:
-
Raspberry Pi 4B
-
APIM2 adapter board
-
MM6108 HaLow module (AHMB6108S / AHM26108D)
Bus support:
-
mikroBUS socket: SPI, I2C, UART
-
M.2 E-Key slot: SDIO, UART
Steps attempted so far:
-
Compiled
morse
anddot11ah
drivers from your repository. -
Tried loading modules:
sudo insmod /home/bot/morse_driver/dot11ah/dot11ah.ko # succeeds
sudo insmod /home/bot/morse_driver/morse.ko country=AU # fails with unknown symbols
lsmod
shows modules partially loaded:
morse
crc7
mac80211
libarc4
dot11ah
cfg80211
dmesg
shows many unresolved symbols frommac80211
:
morse: Unknown symbol ieee80211_txq_schedule_start (err -2)
morse: Unknown symbol ieee80211_register_hw (err -2)
...
morse micro driver registration. Version 0-rel_1_15_3_2025_Apr_16
- Checked UART devices:
ls -l /dev/serial*
serial0 -> ttyS0
serial1 -> ttyAMA0
I am currently stuck at bringing up the module, due to driver unresolved symbols when loading the morse
module.
bot@bot:~$ lsmod | grep -E "morse|mac80211|cfg80211|dot11ah"
morse 417792 0
crc7 16384 1 morse
mac80211 1232896 1 morse
libarc4 16384 1 mac80211
dot11ah 106496 1 morse
cfg80211 970752 4 dot11ah,brcmfmac,mac80211,morse
bot@bot:~$ grep ieee80211 /proc/kallsyms | grep -E "txq_schedule_start|register_hw|alloc_hw_nm" | head -20
0000000000000000 r __kstrtab_ieee80211_alloc_hw_nm [mac80211]
0000000000000000 r __kstrtabns_ieee80211_alloc_hw_nm [mac80211]
0000000000000000 r __ksymtab_ieee80211_alloc_hw_nm [mac80211]
0000000000000000 r __kstrtab_ieee80211_register_hw [mac80211]
0000000000000000 r __kstrtabns_ieee80211_register_hw [mac80211]
0000000000000000 r __ksymtab_ieee80211_register_hw [mac80211]
0000000000000000 r __kstrtab_ieee80211_unregister_hw [mac80211]
0000000000000000 r __kstrtabns_ieee80211_unregister_hw [mac80211]
0000000000000000 r __ksymtab_ieee80211_unregister_hw [mac80211]
0000000000000000 r __kstrtab_ieee80211_txq_schedule_start [mac80211]
0000000000000000 r __kstrtabns_ieee80211_txq_schedule_start [mac80211]
0000000000000000 r __ksymtab_ieee80211_txq_schedule_start [mac80211]
0000000000000000 T ieee80211_txq_schedule_start [mac80211]
0000000000000000 T ieee80211_register_hw [mac80211]
0000000000000000 T ieee80211_alloc_hw_nm [mac80211]
0000000000000000 T ieee80211_unregister_hw [mac80211]
bot@bot:~$ uname -r
5.15.0-1085-raspi
bot@bot:~$ ls -l /lib/modules/5.15.0-1085-raspi/build
lrwxrwxrwx 1 root root 40 Aug 20 03:45 /lib/modules/5.15.0-1085-raspi/build → /usr/src/linux-headers-5.15.0-1085-raspi
bot@bot:~$ dmesg | grep -i morse
dmesg | grep -i ah
dmesg: read kernel buffer failed: Operation not permitted
dmesg: read kernel buffer failed: Operation not permitted
bot@bot:~$ sudo dmesg | grep -i morse
[ 611.389002] Morse Micro Dot11ah driver registration. Version 0-rel_1_15_3_2025_Apr_16
[ 636.273214] morse: Unknown symbol ieee80211_queue_stopped (err -2)
[ 636.273288] morse: Unknown symbol ieee80211_stop_tx_ba_session (err -2)
[ 636.273400] morse: Unknown symbol ieee80211_start_tx_ba_cb_irqsafe (err -2)
[ 636.273456] morse: Unknown symbol ieee80211_connection_loss (err -2)
[ 636.273564] morse: Unknown symbol ieee80211_sched_scan_stopped (err -2)
[ 636.273736] morse: Unknown symbol crc7_be_syndrome_table (err -2)
[ 636.273863] morse: Unknown symbol ieee80211_free_hw (err -2)
[ 636.273977] morse: Unknown symbol ieee80211_probereq_get (err -2)
[ 636.274007] morse: Unknown symbol ieee80211_txq_schedule_start (err -2)
[ 636.274061] morse: Unknown symbol ieee80211_iterate_stations_atomic (err -2)
[ 636.274106] morse: Unknown symbol ieee80211_ap_probereq_get (err -2)
[ 636.274145] morse: Unknown symbol ieee80211_start_tx_ba_session (err -2)
[ 636.274176] morse: Unknown symbol ieee80211_beacon_loss (err -2)
[ 636.274225] morse: Unknown symbol ieee80211_register_hw (err -2)
[ 636.274274] morse: Unknown symbol ieee80211_restart_hw (err -2)
[ 636.274316] morse: Unknown symbol ieee80211_sta_eosp (err -2)
[ 636.274353] morse: Unknown symbol __ieee80211_get_radio_led_name (err -2)
[ 636.274417] morse: Unknown symbol ieee80211_stop_rx_ba_session (err -2)
[ 636.274449] morse: Unknown symbol ieee80211_wake_queue (err -2)
[ 636.274524] morse: Unknown symbol __ieee80211_get_tx_led_name (err -2)
[ 636.274576] morse: Unknown symbol ieee80211_get_buffered_bc (err -2)
[ 636.274617] morse: Unknown symbol ieee80211_find_sta (err -2)
[ 636.274813] morse: Unknown symbol __ieee80211_get_rx_led_name (err -2)
[ 636.274884] morse: Unknown symbol ieee80211_stop_tx_ba_cb_irqsafe (err -2)
[ 636.274939] morse: Unknown symbol wiphy_to_ieee80211_hw (err -2)
[ 636.274991] morse: Unknown symbol ieee80211_queue_delayed_work (err -2)
[ 636.275021] morse: Unknown symbol ieee80211_proberesp_get (err -2)
[ 636.275143] morse: Unknown symbol ieee80211_find_sta_by_ifaddr (err -2)
[ 636.275171] morse: Unknown symbol ieee80211_next_txq (err -2)
[ 636.275226] morse: Unknown symbol ieee80211_beacon_cntdwn_is_complete (err -2)
[ 636.275286] morse: Unknown symbol ieee80211_wake_queues (err -2)
[ 636.275335] morse: Unknown symbol ieee80211_free_txskb (err -2)
[ 636.275381] morse: Unknown symbol ieee80211_alloc_hw_nm (err -2)
[ 636.275435] morse: Unknown symbol ieee80211_tx_dequeue (err -2)
[ 636.275514] morse: Unknown symbol ieee80211_tx_status (err -2)
[ 636.275538] morse: Unknown symbol ieee80211_stop_queue (err -2)
[ 636.275578] morse: Unknown symbol wdev_to_ieee80211_vif (err -2)
[ 636.275602] morse: Unknown symbol ieee80211_stop_queues (err -2)
[ 636.275645] morse: Unknown symbol ieee80211_vif_to_wdev (err -2)
[ 636.275670] morse: Unknown symbol __ieee80211_get_assoc_led_name (err -2)
[ 636.275715] morse: Unknown symbol ieee80211_sched_scan_results (err -2)
[ 636.275739] morse: Unknown symbol ieee80211_scan_completed (err -2)
[ 636.275790] morse: Unknown symbol ieee80211_unregister_hw (err -2)
[ 636.275834] morse: Unknown symbol ieee80211_beacon_get_tim (err -2)
[ 636.275949] morse: Unknown symbol ieee80211_return_txq (err -2)
[ 636.276055] morse: Unknown symbol ieee80211_csa_finish (err -2)
[ 636.276081] morse: Unknown symbol ieee80211_rx_irqsafe (err -2)
[ 741.244612] morse micro driver registration. Version 0-rel_1_15_3_2025_Apr_16
bot@bot:~$ sudo dmesg | grep -i ah
[ 611.385081] dot11ah: loading out-of-tree module taints kernel.
[ 611.389002] Morse Micro Dot11ah driver registration. Version 0-rel_1_15_3_2025_Apr_16
bot@bot:~$ dmesg | grep -i morse
dmesg: read kernel buffer failed: Operation not permitted
bot@bot:~$ sudo dmesg | grep morse
[sudo] password for bot:
[ 636.273214] morse: Unknown symbol ieee80211_queue_stopped (err -2)
[ 636.273288] morse: Unknown symbol ieee80211_stop_tx_ba_session (err -2)
[ 636.273400] morse: Unknown symbol ieee80211_start_tx_ba_cb_irqsafe (err -2)
[ 636.273456] morse: Unknown symbol ieee80211_connection_loss (err -2)
[ 636.273564] morse: Unknown symbol ieee80211_sched_scan_stopped (err -2)
[ 636.273736] morse: Unknown symbol crc7_be_syndrome_table (err -2)
[ 636.273863] morse: Unknown symbol ieee80211_free_hw (err -2)
[ 636.273977] morse: Unknown symbol ieee80211_probereq_get (err -2)
[ 636.274007] morse: Unknown symbol ieee80211_txq_schedule_start (err -2)
[ 636.274061] morse: Unknown symbol ieee80211_iterate_stations_atomic (err -2)
[ 636.274106] morse: Unknown symbol ieee80211_ap_probereq_get (err -2)
[ 636.274145] morse: Unknown symbol ieee80211_start_tx_ba_session (err -2)
[ 636.274176] morse: Unknown symbol ieee80211_beacon_loss (err -2)
[ 636.274225] morse: Unknown symbol ieee80211_register_hw (err -2)
[ 636.274274] morse: Unknown symbol ieee80211_restart_hw (err -2)
[ 636.274316] morse: Unknown symbol ieee80211_sta_eosp (err -2)
[ 636.274353] morse: Unknown symbol __ieee80211_get_radio_led_name (err -2)
[ 636.274417] morse: Unknown symbol ieee80211_stop_rx_ba_session (err -2)
[ 636.274449] morse: Unknown symbol ieee80211_wake_queue (err -2)
[ 636.274524] morse: Unknown symbol __ieee80211_get_tx_led_name (err -2)
[ 636.274576] morse: Unknown symbol ieee80211_get_buffered_bc (err -2)
[ 636.274617] morse: Unknown symbol ieee80211_find_sta (err -2)
[ 636.274813] morse: Unknown symbol __ieee80211_get_rx_led_name (err -2)
[ 636.274884] morse: Unknown symbol ieee80211_stop_tx_ba_cb_irqsafe (err -2)
[ 636.274939] morse: Unknown symbol wiphy_to_ieee80211_hw (err -2)
[ 636.274991] morse: Unknown symbol ieee80211_queue_delayed_work (err -2)
[ 636.275021] morse: Unknown symbol ieee80211_proberesp_get (err -2)
[ 636.275143] morse: Unknown symbol ieee80211_find_sta_by_ifaddr (err -2)
[ 636.275171] morse: Unknown symbol ieee80211_next_txq (err -2)
[ 636.275226] morse: Unknown symbol ieee80211_beacon_cntdwn_is_complete (err -2)
[ 636.275286] morse: Unknown symbol ieee80211_wake_queues (err -2)
[ 636.275335] morse: Unknown symbol ieee80211_free_txskb (err -2)
[ 636.275381] morse: Unknown symbol ieee80211_alloc_hw_nm (err -2)
[ 636.275435] morse: Unknown symbol ieee80211_tx_dequeue (err -2)
[ 636.275514] morse: Unknown symbol ieee80211_tx_status (err -2)
[ 636.275538] morse: Unknown symbol ieee80211_stop_queue (err -2)
[ 636.275578] morse: Unknown symbol wdev_to_ieee80211_vif (err -2)
[ 636.275602] morse: Unknown symbol ieee80211_stop_queues (err -2)
[ 636.275645] morse: Unknown symbol ieee80211_vif_to_wdev (err -2)
[ 636.275670] morse: Unknown symbol __ieee80211_get_assoc_led_name (err -2)
[ 636.275715] morse: Unknown symbol ieee80211_sched_scan_results (err -2)
[ 636.275739] morse: Unknown symbol ieee80211_scan_completed (err -2)
[ 636.275790] morse: Unknown symbol ieee80211_unregister_hw (err -2)
[ 636.275834] morse: Unknown symbol ieee80211_beacon_get_tim (err -2)
[ 636.275949] morse: Unknown symbol ieee80211_return_txq (err -2)
[ 636.276055] morse: Unknown symbol ieee80211_csa_finish (err -2)
[ 636.276081] morse: Unknown symbol ieee80211_rx_irqsafe (err -2)
[ 741.244612] morse micro driver registration. Version 0-rel_1_15_3_2025_Apr_16
bot@bot:~$ lsmod | grep morse
morse 417792 0
crc7 16384 1 morse
mac80211 1232896 1 morse
dot11ah 106496 1 morse
cfg80211 970752 4 dot11ah,brcmfmac,mac80211,morse
bot@bot:~$
Could you please provide a step-by-step setup guide for Raspberry Pi 4 using APIM2, including:
-
Required kernel version and configuration for Raspberry Pi 4
-
Driver compilation and module loading sequence
-
Firmware or device tree overlay requirements
-
Recommended bring-up procedure for UART or SDIO, considering M.2 E-Key slot does not support SPI