Hello,
I’m starting developing Wi-Fi HaLow related products by using the MM6108.
I’m using the MMECH06V6 (EKH01’s hat) and the RPi Zero 2W.
I’ve confirmed it works well on the default board configuration and the Raspbian OS (kernel ported by using your manual).
As you know that the RPi Zero 2W does not have an ethernet port, I’m trying to enable both 2.4GHz and Sub-1GHz Wi-Fi interfaces.
I modified the jumper resistors from SDIOs to SPIs.
I also commented out sdio
, and mm_wlan
overlays from the device tree overlay configurations.
After reboot, I found two wlan interfaces enabled as I expected.
[ 14.067929] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43430-sdio for chip BCM43430/1
[ 14.068994] usbcore: registered new interface driver brcmfmac
[ 14.156492] vc4-drm soc:gpu: [drm] fb0: vc4drmfb frame buffer device
[ 14.316493] brcmfmac: brcmf_c_process_txcap_blob: no txcap_blob available (err=-2)
[ 14.317365] brcmfmac: brcmf_c_preinit_dcmds: Firmware: BCM43430/1 wl0: Jun 14 2023 07:27:45 version 7.45.96.s1 (gf031a129) FWID 01-70bd2af7 es7
[ 14.923691] Adding 524284k swap on /var/swap. Priority:-2 extents:14 across:3874816k SS
[ 16.389144] Morse Micro Dot11ah driver registration. Version 0-rel_1_12_4_2024_Jun_11-6-g63cd0768
[ 17.019130] brcmfmac: brcmf_cfg80211_set_power_mgmt: power save enabled
[ 17.689574] morse micro driver registration. Version 0-rel_1_12_4_2024_Jun_11-6-g63cd0768
[ 17.690196] morse_spi spi0.0: Reading gpio pins configuration from device tree
[ 17.690407] uaccess char driver major number is 236
[ 17.690735] morse_io: Device node '/dev/morse_io' created successfully
[ 17.715421] morse_spi spi0.0: Loaded firmware from morse/mm6108.bin, size 433044, crc32 0x436ba524
[ 17.718809] morse_spi spi0.0: Loaded BCF from morse/bcf_boardtype_0801.bin, size 1003, crc32 0xaf924dcf
[ 18.354269] ieee80211 phy1: Selected rate control algorithm 'minstrel_ht'
[ 18.361724] morse_spi spi0.0: Driver loaded with kernel module parameters
[ 18.361760] morse_spi spi0.0: enable_1mhz_probes : Y
[ 18.361774] morse_spi spi0.0: enable_hw_scan : Y
[ 18.361785] morse_spi spi0.0: enable_pv1 : N
[ 18.361797] morse_spi spi0.0: enable_page_slicing : N
[ 18.361808] morse_spi spi0.0: log_modparams_on_boot : Y
[ 18.361820] morse_spi spi0.0: enable_mcast_at_op_bw : N
[ 18.361833] morse_spi spi0.0: enable_mcast_whitelist : Y
[ 18.361850] morse_spi spi0.0: ocs_type : 1
[ 18.361862] morse_spi spi0.0: enable_auto_mpsw : Y
[ 18.361875] morse_spi spi0.0: duty_cycle_probe_retry_threshold : 2500
[ 18.361887] morse_spi spi0.0: duty_cycle_mode : 0
[ 18.361899] morse_spi spi0.0: enable_auto_duty_cycle : Y
[ 18.361913] morse_spi spi0.0: dhcpc_lease_update_script : /morse/scripts/dhcpc_update.sh
[ 18.361925] morse_spi spi0.0: enable_ibss_probe_filtering : Y
[ 18.361938] morse_spi spi0.0: enable_dhcpc_offload : N
[ 18.361951] morse_spi spi0.0: enable_arp_offload : N
[ 18.361963] morse_spi spi0.0: enable_bcn_change_seq_monitor : 0
[ 18.361975] morse_spi spi0.0: enable_cac : 0
[ 18.361988] morse_spi spi0.0: max_mc_frames : 10
[ 18.362001] morse_spi spi0.0: tx_max_power_mbm : 2200
[ 18.362013] morse_spi spi0.0: enable_twt : Y
[ 18.362024] morse_spi spi0.0: enable_mac80211_connection_monitor : N
[ 18.362036] morse_spi spi0.0: enable_airtime_fairness : N
[ 18.362048] morse_spi spi0.0: enable_raw : Y
[ 18.362059] morse_spi spi0.0: max_aggregation_count : 0
[ 18.362071] morse_spi spi0.0: max_rate_tries : 1
[ 18.362083] morse_spi spi0.0: max_rates : 3
[ 18.362095] morse_spi spi0.0: enable_watchdog_reset : N
[ 18.362107] morse_spi spi0.0: watchdog_interval_secs : 30
[ 18.362118] morse_spi spi0.0: enable_watchdog : N
[ 18.362131] morse_spi spi0.0: country : US
[ 18.362144] morse_spi spi0.0: enable_cts_to_self : N
[ 18.362155] morse_spi spi0.0: enable_rts_8mhz : N
[ 18.362167] morse_spi spi0.0: enable_trav_pilot : Y
[ 18.362178] morse_spi spi0.0: enable_sgi_rc : Y
[ 18.362190] morse_spi spi0.0: enable_mbssid_ie : N
[ 18.362202] morse_spi spi0.0: virtual_sta_max : 0
[ 18.362214] morse_spi spi0.0: thin_lmac : 0
[ 18.362226] morse_spi spi0.0: enable_dynamic_ps_offload : Y
[ 18.362238] morse_spi spi0.0: enable_ps : 2
[ 18.362249] morse_spi spi0.0: enable_subbands : 2
[ 18.362261] morse_spi spi0.0: enable_survey : Y
[ 18.362273] morse_spi spi0.0: mcs10_mode : 0
[ 18.362285] morse_spi spi0.0: mcs_mask : 1023
[ 18.362297] morse_spi spi0.0: no_hwcrypt : 0
[ 18.362309] morse_spi spi0.0: enable_ext_xtal_init : N
[ 18.362323] morse_spi spi0.0: enable_otp_check : 1
[ 18.362336] morse_spi spi0.0: bcf :
[ 18.362348] morse_spi spi0.0: serial : default
[ 18.362360] morse_spi spi0.0: debug_mask : 8
[ 18.362373] morse_spi spi0.0: tx_status_lifetime_ms : 15000
[ 18.362386] morse_spi spi0.0: tx_queued_lifetime_ms : 1000
[ 18.362398] morse_spi spi0.0: max_txq_len : 32
[ 18.362410] morse_spi spi0.0: default_cmd_timeout_ms : 600
[ 18.362422] morse_spi spi0.0: enable_short_bcn_as_dtim_override : -1
[ 18.362435] morse_spi spi0.0: fw_bin_file :
[ 18.362447] morse_spi spi0.0: sdio_reset_time : 400
[ 18.362459] morse_spi spi0.0: macaddr_suffix : 00:00:00
[ 18.362472] morse_spi spi0.0: macaddr_octet : 255
[ 18.362485] morse_spi spi0.0: max_total_vendor_ie_bytes : 514
[ 18.362500] morse_spi spi0.0: coredump_include : 1
[ 18.362512] morse_spi spi0.0: coredump_method : 1
[ 18.362524] morse_spi spi0.0: enable_coredump : Y
[ 18.362537] morse_spi spi0.0: sdio_clk_debugfs :
[ 18.362549] morse_spi spi0.0: spi_use_edge_irq : N
[ 18.362561] morse_spi spi0.0: spi_clock_speed : 50000000
[ 18.362574] morse_spi spi0.0: enable_mm_vendor_ie : Y
[ 21.640457] morse_spi spi0.0: Morse SPI device removed
[ 21.640510] Resetting Morse Chip
[ 21.660545] Done
[ 21.822380] Remove /driver
[ 21.837461] Perform reset with gpiod: gpiochip0 5
[ 22.443130] Morse Micro Dot11ah driver registration. Version 0-rel_1_12_4_2024_Jun_11-6-g63cd0768
[ 23.667899] morse micro driver registration. Version 0-rel_1_12_4_2024_Jun_11-6-g63cd0768
[ 23.668505] morse_spi spi0.0: Reading gpio pins configuration from device tree
[ 23.668738] uaccess char driver major number is 236
[ 23.669051] morse_io: Device node '/dev/morse_io' created successfully
[ 23.670396] morse_spi spi0.0: Loaded firmware from morse/mm6108.bin, size 433044, crc32 0x436ba524
[ 23.670545] morse_spi spi0.0: Loaded BCF from morse/bcf_boardtype_0801.bin, size 1003, crc32 0xaf924dcf
[ 24.263641] ieee80211 phy2: Selected rate control algorithm 'minstrel_ht'
[ 24.269645] morse_spi spi0.0: Driver loaded with kernel module parameters
[ 24.269679] morse_spi spi0.0: enable_1mhz_probes : Y
[ 24.269689] morse_spi spi0.0: enable_hw_scan : Y
[ 24.269699] morse_spi spi0.0: enable_pv1 : N
[ 24.269707] morse_spi spi0.0: enable_page_slicing : N
[ 24.269717] morse_spi spi0.0: log_modparams_on_boot : Y
[ 24.269725] morse_spi spi0.0: enable_mcast_at_op_bw : N
[ 24.269734] morse_spi spi0.0: enable_mcast_whitelist : Y
[ 24.269747] morse_spi spi0.0: ocs_type : 1
[ 24.269756] morse_spi spi0.0: enable_auto_mpsw : Y
[ 24.269765] morse_spi spi0.0: duty_cycle_probe_retry_threshold : 2500
[ 24.269774] morse_spi spi0.0: duty_cycle_mode : 0
[ 24.269782] morse_spi spi0.0: enable_auto_duty_cycle : Y
[ 24.269792] morse_spi spi0.0: dhcpc_lease_update_script : /morse/scripts/dhcpc_update.sh
[ 24.269801] morse_spi spi0.0: enable_ibss_probe_filtering : Y
[ 24.269809] morse_spi spi0.0: enable_dhcpc_offload : N
[ 24.269817] morse_spi spi0.0: enable_arp_offload : N
[ 24.269826] morse_spi spi0.0: enable_bcn_change_seq_monitor : 0
[ 24.269835] morse_spi spi0.0: enable_cac : 0
[ 24.269844] morse_spi spi0.0: max_mc_frames : 10
[ 24.269853] morse_spi spi0.0: tx_max_power_mbm : 2200
[ 24.269862] morse_spi spi0.0: enable_twt : Y
[ 24.269870] morse_spi spi0.0: enable_mac80211_connection_monitor : N
[ 24.269879] morse_spi spi0.0: enable_airtime_fairness : N
[ 24.269887] morse_spi spi0.0: enable_raw : Y
[ 24.269896] morse_spi spi0.0: max_aggregation_count : 0
[ 24.269905] morse_spi spi0.0: max_rate_tries : 1
[ 24.269913] morse_spi spi0.0: max_rates : 3
[ 24.269921] morse_spi spi0.0: enable_watchdog_reset : N
[ 24.269930] morse_spi spi0.0: watchdog_interval_secs : 30
[ 24.269939] morse_spi spi0.0: enable_watchdog : N
[ 24.269948] morse_spi spi0.0: country : US
[ 24.269956] morse_spi spi0.0: enable_cts_to_self : N
[ 24.269965] morse_spi spi0.0: enable_rts_8mhz : N
[ 24.269973] morse_spi spi0.0: enable_trav_pilot : Y
[ 24.269981] morse_spi spi0.0: enable_sgi_rc : Y
[ 24.269989] morse_spi spi0.0: enable_mbssid_ie : N
[ 24.269998] morse_spi spi0.0: virtual_sta_max : 0
[ 24.270006] morse_spi spi0.0: thin_lmac : 0
[ 24.270015] morse_spi spi0.0: enable_dynamic_ps_offload : Y
[ 24.270023] morse_spi spi0.0: enable_ps : 2
[ 24.270031] morse_spi spi0.0: enable_subbands : 2
[ 24.270040] morse_spi spi0.0: enable_survey : Y
[ 24.270048] morse_spi spi0.0: mcs10_mode : 0
[ 24.270056] morse_spi spi0.0: mcs_mask : 1023
[ 24.270065] morse_spi spi0.0: no_hwcrypt : 0
[ 24.270074] morse_spi spi0.0: enable_ext_xtal_init : N
[ 24.270085] morse_spi spi0.0: enable_otp_check : 1
[ 24.270094] morse_spi spi0.0: bcf :
[ 24.270102] morse_spi spi0.0: serial : default
[ 24.270110] morse_spi spi0.0: debug_mask : 8
[ 24.270119] morse_spi spi0.0: tx_status_lifetime_ms : 15000
[ 24.270127] morse_spi spi0.0: tx_queued_lifetime_ms : 1000
[ 24.270136] morse_spi spi0.0: max_txq_len : 32
[ 24.270145] morse_spi spi0.0: default_cmd_timeout_ms : 600
[ 24.270154] morse_spi spi0.0: enable_short_bcn_as_dtim_override : -1
[ 24.270163] morse_spi spi0.0: fw_bin_file :
[ 24.270172] morse_spi spi0.0: sdio_reset_time : 400
[ 24.270180] morse_spi spi0.0: macaddr_suffix : 00:00:00
[ 24.270189] morse_spi spi0.0: macaddr_octet : 255
[ 24.270197] morse_spi spi0.0: max_total_vendor_ie_bytes : 514
[ 24.270207] morse_spi spi0.0: coredump_include : 1
[ 24.270215] morse_spi spi0.0: coredump_method : 1
[ 24.270224] morse_spi spi0.0: enable_coredump : Y
[ 24.270232] morse_spi spi0.0: sdio_clk_debugfs :
[ 24.270261] morse_spi spi0.0: spi_use_edge_irq : N
[ 24.270272] morse_spi spi0.0: spi_clock_speed : 50000000
[ 24.270281] morse_spi spi0.0: enable_mm_vendor_ie : Y
[ 29.041892] systemd[895]: memfd_create() called without MFD_EXEC or MFD_NOEXEC_SEAL set
[ 29.614274] systemd-journald[232]: File /var/log/journal/a6915c01b824498abe35002f60af7be7/user-1000.journal corrupted or uncleanly shut down, renaming and replacing.
iotown@cg4-dev:~ $ ifconfig
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 11 bytes 1633 (1.5 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 11 bytes 1633 (1.5 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 2001:470:24:199:f119:241d:6cba:1ac0 prefixlen 64 scopeid 0x0<global>
inet6 fe80::dc51:7aa1:e523:953 prefixlen 64 scopeid 0x20<link>
ether 2c:cf:67:ee:c1:34 txqueuelen 1000 (Ethernet)
RX packets 157 bytes 14554 (14.2 KiB)
RX errors 0 dropped 34 overruns 0 frame 0
TX packets 220 bytes 80555 (78.6 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
wlan1: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether 0c:bf:74:00:0a:90 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
iotown@cg4-dev:~ $
But the MM6108 interface frequently failed every reboot the board.
[ 13.862412] brcmfmac: F1 signature read @0x18000000=0x1541a9a6
[ 13.874273] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43430-sdio for chip BCM43430/1
[ 13.875258] usbcore: registered new interface driver brcmfmac
[ 14.166263] brcmfmac: brcmf_c_process_txcap_blob: no txcap_blob available (err=-2)
[ 14.167688] brcmfmac: brcmf_c_preinit_dcmds: Firmware: BCM43430/1 wl0: Jun 14 2023 07:27:45 version 7.45.96.s1 (gf031a129) FWID 01-70bd2af7 es7
[ 14.657884] Adding 524284k swap on /var/swap. Priority:-2 extents:14 across:3874816k SS
[ 16.278931] Morse Micro Dot11ah driver registration. Version 0-rel_1_12_4_2024_Jun_11-6-g63cd0768
[ 16.683174] brcmfmac: brcmf_cfg80211_set_power_mgmt: power save enabled
[ 17.588245] morse micro driver registration. Version 0-rel_1_12_4_2024_Jun_11-6-g63cd0768
[ 17.588928] morse_spi spi0.0: Reading gpio pins configuration from device tree
[ 17.589167] uaccess char driver major number is 236
[ 17.589612] morse_io: Device node '/dev/morse_io' created successfully
[ 17.614035] morse_spi spi0.0: Loaded firmware from morse/mm6108.bin, size 433044, crc32 0x436ba524
[ 17.621454] morse_spi spi0.0: Loaded BCF from morse/bcf_boardtype_0801.bin, size 1003, crc32 0xaf924dcf
[ 18.092439] Remove /driver
[ 18.107356] Perform reset with gpiod: gpiochip0 5
[ 18.116273] morse_spi_find_data_ack failed
[ 18.116293] morse_spi_cmd53_write failed
[ 18.116303] morse_spi spi0.0: morse_spi_mem_write failed (errno=-71)
[ 18.116316] morse_spi spi0.0: morse_spi_dm_write failed -71
[ 18.116475] morse_spi_cmd53_write failed
[ 18.116484] morse_spi spi0.0: morse_spi_mem_write failed (errno=-71)
[ 18.116494] morse_spi spi0.0: morse_spi_reg32_write failed (errno=-71)
[ 18.525352] morse_spi spi0.0: morse_spi_set_func_address_base failed (errno=-61)
[ 18.525383] morse_spi spi0.0: morse_spi_get_func failed
[ 18.525392] morse_spi spi0.0: morse_spi_mem_write failed (errno=-95)
[ 18.525402] morse_spi spi0.0: morse_spi_reg32_write failed (errno=-95)
[ 18.525420] morse_spi spi0.0: morse_spi_set_func_address_base failed (errno=-61)
[ 18.525430] morse_spi spi0.0: morse_spi_get_func failed
[ 18.525438] morse_spi spi0.0: morse_spi_mem_write failed (errno=-95)
[ 18.525446] morse_spi spi0.0: morse_spi_reg32_write failed (errno=-95)
[ 18.525463] morse_spi spi0.0: morse_spi_set_func_address_base failed (errno=-61)
[ 18.525472] morse_spi spi0.0: morse_spi_get_func failed
[ 18.525479] morse_spi spi0.0: morse_spi_mem_write failed (errno=-95)
[ 18.525488] morse_spi spi0.0: morse_spi_reg32_write failed (errno=-95)
[ 18.943935] morse_spi spi0.0: morse_spi_set_func_address_base failed (errno=-61)
[ 18.943975] morse_spi spi0.0: morse_spi_get_func failed
[ 18.943984] morse_spi spi0.0: morse_spi_mem_write failed (errno=-95)
[ 18.943993] morse_spi spi0.0: morse_spi_reg32_write failed (errno=-95)
[ 18.944025] morse_spi spi0.0: morse_spi_set_func_address_base failed (errno=-61)
[ 18.944034] morse_spi spi0.0: morse_spi_get_func failed
[ 18.944042] morse_spi spi0.0: morse_spi_mem_write failed (errno=-95)
[ 18.944051] morse_spi spi0.0: morse_spi_reg32_write failed (errno=-95)
[ 18.944139] morse_spi spi0.0: morse_firmware_init failed: -5
[ 18.944496] morse_spi_probe failed. The driver has not been loaded!
[ 18.944534] morse_spi: probe of spi0.0 failed with error -5
[ 23.897866] systemd[869]: memfd_create() called without MFD_EXEC or MFD_NOEXEC_SEAL set
Could you suggest any way to solve this problem, please?