MM8108 - Driver V1.17.8 - AP CRASH

Hi Team,

We are integrating mm8108 in our OpenWRT-based router. We are facing a crash issue when we configure the AP in the HaLow radio.

The details are below

SoC: MT7981
HaLow: MM8108
Software: Openwrt-23.05.4
Kernel Version: 5.15.162

DTS:


        gpio-export {
                compatible = "gpio-export";
                #size-cells = <0>;

                halowrst {
                        gpio-export,name = "MM_RESET";
                        gpio-export,output = <1>;
                        gpios = <&pio 8 GPIO_ACTIVE_HIGH>;
                };

&spi2 {
        pinctrl-names = "default";
        pinctrl-0 = <&spi2_flash_pins>;
        status = "okay";
        mm8108: mm8108@0 {
                compatible = "morse,mm810x-spi";
                reg = <0>;      /* CE0 */
                spi-max-frequency = <50000000>;
                spi-irq-gpios = <&pio 30 0>;
                reset-gpios = <&pio 8 0>;
                power-gpios = <&pio 31 0>,<&pio 6 0>; /*wake,busy*/
        };
};

Wireless Configuration:

config wifi-device 'radio3'
        option type 'morse'
        option path 'platform/11009000.spi/spi_master/spi1/spi1.0'
        option band 's1g'
        option hwmode '11ah'
        option reconf '0'
        option channel '12'
        option country 'US'
        option bcf 'bcf_mf15457.bin'

config wifi-iface 'AP3'
        option device 'radio3'
        option ifname 'wlan2'
        option wds '1'
        option mode 'ap'
        option ssid 'Wireless1'
        option encryption 'sae'
        option key '12345678'
        option network 'VLAN1'

Morse Driver Information

The sources are from GitHub - MorseMicro/morse-feed at 2.11-dev · GitHub
We are using only essentials

morse_1.17.8/
├── hostapd_s1g
├── mm-board-config
├── morse-fw
├── morse-regdb
├── morse_driver
├── morsecli
└── netifd-morse

[  102.404827] Morse Micro Dot11ah driver registration. Version 0-rel_1_17_8_2026_Mar_24
[  102.412715] channelization_scheme = 3 (IEEE802.11-REVmf)
[  102.419108] kmodloader: done loading kernel modules from /etc/modules.d/dot11ah*
[  102.440572] kmodloader: loading kernel modules from /etc/modules.d/morse*
[  102.454210] morse micro driver registration. Version 0-rel_1_17_8_2026_Mar_24
[  102.462166] morse_spi spi1.0: morse_of_probe: Reading gpio pins configuration from device tree
[  102.470866] uaccess char driver major number is 249
[  102.475884] morse_io: Device node '/dev/morse_io' created successfully
[  102.486622] morse_spi spi1.0: Loaded firmware from morse/mm8108b2-rl.bin, size 479624, crc32 0x1ae9ad6d
[  102.516705] morse_spi spi1.0: Loaded BCF from morse/bcf_mf15457.bin, size 2124, crc32 0x80459e55
[  103.758734] morse_spi spi1.0: Driver loaded with kernel module parameters
[  103.765524] morse_spi spi1.0:     enable_pre_assoc_ps                     : N
[  103.772682] morse_spi spi1.0:     slow_clock_mode                         : 0

Steps to reproduce the issue:

  1. Configure the AP in wireless config .(attached config in the above).
  2. WiFi restart

Expected Behaviour: AP mode needs to work
Observed Behaviour: AP SSID broadcast for a few seconds and crash logs flooding, then the AP went down.

Crash Logs:

[  326.778012] morse_spi_cmd53_write failed
[  326.781942] morse_spi spi1.0: spi: cmd53_write fn=2 0x00000000:68 r=0x00000002 b=0x00170002 (ret:-71)
[  326.791171] morse_spi spi1.0: morse_spi_dm_write failed -71
[  326.796868] morse_spi_cmd53_read failed
[  326.800724] morse_spi spi1.0: spi: cmd53_read fn=1 0x00003c50:4 r=0x00000002 b=0x00170002 (ret:-71)
[  326.809772] morse_spi spi1.0: morse_spi_reg32_read failed (errno=-71)
[  326.816306] morse_spi_cmd53_write failed
[  326.820234] morse_spi spi1.0: spi: cmd53_write fn=1 0x00003c58:4 r=0x00000002 b=0x00170002 (ret:-71)
[  326.829372] morse_spi spi1.0: morse_spi_reg32_write failed (errno=-71)
[  326.836018] morse_spi_cmd53_read failed
[  326.839866] morse_spi spi1.0: spi: cmd53_read fn=1 0x00003c50:4 r=0x00000002 b=0x00170002 (ret:-71)
[  326.848917] morse_spi spi1.0: morse_spi_reg32_read failed (errno=-71)
[  326.855460] morse_spi_cmd53_write failed

Please help us to resolve this issue as quickly as possible.

Thanks

HI @sankarganesh

The error shown is EPROTO = 71. This shows up on SPI devices when command reads/writes fail or the R1 response is never sent by our chip.

There are a few reasons this could fail:

  1. Something has gone wrong with respect to the communication over the SPI bus. Hard to say exactly what this might be without seeing a logic analyzer trace. Would you be able to capture one?
  2. Our chip may have crashed. Do you have access to the UART pins of the MM8108 module you are using? If you can attach a UART to these pins we’d like to know if the module is throwing any log information.
  3. If possible, can you collect a “coredump” from our device? To do this you will need to have included the morse-copy-coredump package from our feed into your image. When you call morse_cli coredump a coredump file will be created in /var/log/mmcd.core/. Unfortunately it the bus has failed completely, this won’t work.

Hi @ajudge ,

We added the package as you suggested, but unfortunately the morse_cli command was also not working

root@PIAP:~# ls /etc/hotplug.d/devcoredump/10-morse-copy-coredump
/etc/hotplug.d/devcoredump/10-morse-copy-coredump
root@PIAP:~# morse_cli coredump
NL80211, code -95: Error callback called
NL80211, code -10: Failed to rcvmsgs
Command ‘morse_cli coredump’ failed with error code -10

root@PIAP:~# morse_cli -d health
Transport set to default: nl80211
Using wlan0 interface
Calling: health -d health
– Debug: Sent Message:
-------------------------- BEGIN NETLINK MESSAGE ---------------------------
[NETLINK HEADER] 16 octets
.nlmsg_len = 60
.type = 24 <0x18>
.flags = 5 <REQUEST,ACK>
.seq = 1782122348
.port = 947928844
[GENERIC NETLINK HEADER] 4 octets
.cmd = 103
.version = 0
.unused = 0
[PAYLOAD] 40 octets
08 00 c3 00 74 bf 0c 00 08 00 03 00 10 00 00 00 …t…
08 00 c4 00 00 00 00 00 10 00 c5 00 01 00 19 00 …
00 00 00 00 00 00 00 00 …
--------------------------- END NETLINK MESSAGE ---------------------------
NL80211, code -95: Error callback called
NL80211, code -10: Failed to rcvmsgs
Message failed -10
health check: failed
Command ‘morse_cli -d health’ failed with error code -10

That would indicate the host cannot communicate to the Morse chip over the bus.

Have you been able to get UART output from the MM8108?

HI @ajudge

I could not see any uart pins in mm8108.

Could you advise how to get the console of mm8108.

Also I see this

Ah, that’s not helpful.

Connect your UART RX to GPIO1 of our module. 115200 baud.
If that doesn’t show anything try GPIO0 - they may be labelled from the other perspective in our reference design schematics. I’ll share these reference designs with you when our website is back online.

Thanks, kindly share that. It will help us better

What about Tx

Host Tx (chip rx) will be GPIO0 if GPIO1 is your Host RX (chip TX).

However, the chip only outputs some errors to the uart. Normal firmware does not accept input.