Fix MMDVM Hotspot "Modem Locked" Error: Complete Firmware Update Guide (Simplex & Duplex)
Aktie
This guide covers simplex and both duplex board versions, with step-by-step commands to get your firmware updated successfully.
Why the "Modem Locked" Error Happens
Before we start, here is the key clarification: The "modem locked" message does not mean your board is bricked or permanently restricted. It appears when the flashing tool cannot communicate with the STM32 controller on the hotspot board.
The top 3 causes:
The modem is not in DFU (Device Firmware Upgrade) boot mode
The MMDVMHost service is still running and occupying the serial port /dev/ttyAMA0
You have selected an incompatible modem profile in WPSD, so the upgrade tool fails to recognize the board
Before you begin
Use a stable 5V power supply for your Raspberry Pi / hotspot
Prepare a small jumper wire (for non-USB duplex boards)
Access SSH via: Advanced > SSH Access
Default SSH credentials:
Username: pi-star
Password: raspberry
Simplex MMDVM_HS Hotspot: Upgrade to v1.6.1, Just run the command to upgrade directly

advanced->SSH Access
login pi-star raspberry
pi-star@pi-star:~$ cd /tmp
pi-star@pi-star:tmp$ wget https://wpsd-swd.w0chp.net/WPSD-SWD/MMDVM_HS-Firmware_Latest-Compiled/raw/tag/v1.6.1/mmdvm_hs_hat_fw.bin
--2024-03-22 08:18:11-- https://wpsd-swd.w0chp.net/WPSD-SWD/MMDVM_HS-Firmware_Latest-Compiled/raw/tag/v1.6.1/mmdvm_hs_hat_fw.bin
Resolving wpsd-swd.w0chp.net (wpsd-swd.w0chp.net)... 74.208.60.144
Connecting to wpsd-swd.w0chp.net (wpsd-swd.w0chp.net)|74.208.60.144|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 55904 (55K) [application/octet-stream]
Saving to: ‘mmdvm_hs_hat_fw.bin’
mmdvm_hs_hat_fw.bin 100%[========================================================================================================================================>] 54.59K 238KB/s in 0.2s
2024-03-22 08:18:12 (238 KB/s) - ‘mmdvm_hs_hat_fw.bin’ saved [55904/55904]
pi-star@pi-star:~$sudo killall MMDVMHost
pi-star@pi-star:tmp$ sudo stm32flash -R -w mmdvm_hs_hat_fw.bin /dev/ttyAMA0
stm32flash 0.5
http://stm32flash.sourceforge.net/
Using Parser : Raw BINARY
Interface serial_posix: 57600 8E1
Version : 0x22
Option 1 : 0x00
Option 2 : 0x00
Device ID : 0x0410 (STM32F10xxx Medium-density)
- RAM : Up to 20KiB (512b reserved by bootloader)
- Flash : Up to 128KiB (size first sector: 4x1024)
- Option RAM : 16b
- System RAM : 2KiB
Write to memory
Erasing memory
Wrote address 0x0800da60 (100.00%) Done.
pi-star@pi-star:tmp$ sudo wpsd-detectmodem
Detected MMDVM_HS Port: /dev/ttyAMA0 (GPIO) Baud: 115200 Protocol: V1
Modem Data: MMDVM_HS_Hat-v1.6.1 20231115_WPSD 14.7456MHz dual ADF7021 FW by CA6JAU, G4KLX, W0CHP. GitID #7e16099FF36066C3041383043023933
^C
Duplex MMDVM Dual Hotspot
Version A: Duplex board with USB port
Simply hold down the BOOT button on the board when powering it up; this will force‑boot into DFU mode so you can flash the firmware.

Method Two:

advanced->SSH Access
login pi-star raspberry
pi-star@pi-star:~$ cd /tmp
pi-star@pi-star:tmp$ wget https://wpsd-swd.w0chp.net/WPSD-SWD/WPSD-Binaries/raw/branch/master/firmware/mmdvm_hs_dual_hat_fw.bin
--2024-03-22 08:18:11-- https://wpsd-swd.w0chp.net/WPSD-SWD/WPSD-Binaries/src/branch/master/firmware/mmdvm_hs_dual_hat_fw.bin
Resolving wpsd-swd.w0chp.net (wpsd-swd.w0chp.net)... 74.208.60.144
Connecting to wpsd-swd.w0chp.net (wpsd-swd.w0chp.net)|74.208.60.144|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 55904 (55K) [application/octet-stream]
Saving to: ‘mmdvm_hs_dual_hat_fw.bin’
mmdvm_hs_dual_hat_fw.bin 100%[========================================================================================================================================>] 54.59K 238KB/s in 0.2s
2024-03-22 08:18:12 (238 KB/s) - ‘mmdvm_hs_dual_hat_fw.bin’ saved [55904/55904]
pi-star@pi-star:~$sudo killall MMDVMHost
sudo stm32flash -R -w mmdvm_hs_hat_fw.bin /dev/ttyAMA0
pi-star@pi-star:tmp$ sudo stm32flash -R -w mmdvm_hs_dual_hat_fw.bin /dev/ttyAMA0
stm32flash 0.5
http://stm32flash.sourceforge.net/
Using Parser : Raw BINARY
Interface serial_posix: 57600 8E1
Version : 0x22
Option 1 : 0x00
Option 2 : 0x00
Device ID : 0x0410 (STM32F10xxx Medium-density)
- RAM : Up to 20KiB (512b reserved by bootloader)
- Flash : Up to 128KiB (size first sector: 4x1024)
- Option RAM : 16b
- System RAM : 2KiB
Write to memory
Erasing memory
Wrote address 0x0800da60 (100.00%) Done.
pi-star@pi-star:tmp$ sudo wpsd-detectmodem
Detected MMDVM_HS Port: /dev/ttyAMA0 (GPIO) Baud: 115200 Protocol: V1
Modem Data: MMDVM_HS_Dual_Hat-v1.6.1 20231115_WPSD 14.7456MHz dual ADF7021 FW by CA6JAU, G4KLX, W0CHP. GitID #7e16099FF36066C3041383043023933
^C
Version B: Duplex board WITHOUT USB port (no BOOT button)

Directly short‑circuit pin 20 and pin 21 on the right side, power it on, then execute the upgrade command.
Command:
advanced->SSH Access
login pi-star raspberry
pi-star@pi-star:~$ cd /tmp
pi-star@pi-star:tmp$ wget https://wpsd-swd.w0chp.net/WPSD-SWD/WPSD-Binaries/raw/branch/master/firmware/mmdvm_hs_dual_hat_fw.bin
--2024-03-22 08:18:11-- https://wpsd-swd.w0chp.net/WPSD-SWD/WPSD-Binaries/src/branch/master/firmware/mmdvm_hs_dual_hat_fw.bin
Resolving wpsd-swd.w0chp.net (wpsd-swd.w0chp.net)... 74.208.60.144
Connecting to wpsd-swd.w0chp.net (wpsd-swd.w0chp.net)|74.208.60.144|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 55904 (55K) [application/octet-stream]
Saving to: ‘mmdvm_hs_dual_hat_fw.bin’
mmdvm_hs_dual_hat_fw.bin 100%[========================================================================================================================================>] 54.59K 238KB/s in 0.2s
2024-03-22 08:18:12 (238 KB/s) - ‘mmdvm_hs_dual_hat_fw.bin’ saved [55904/55904]
pi-star@pi-star:~$sudo killall MMDVMHost
sudo stm32flash -R -w mmdvm_hs_hat_fw.bin /dev/ttyAMA0
pi-star@pi-star:tmp$ sudo stm32flash -R -w mmdvm_hs_dual_hat_fw.bin /dev/ttyAMA0
stm32flash 0.5
http://stm32flash.sourceforge.net/
Using Parser : Raw BINARY
Interface serial_posix: 57600 8E1
Version : 0x22
Option 1 : 0x00
Option 2 : 0x00
Device ID : 0x0410 (STM32F10xxx Medium-density)
- RAM : Up to 20KiB (512b reserved by bootloader)
- Flash : Up to 128KiB (size first sector: 4x1024)
- Option RAM : 16b
- System RAM : 2KiB
Write to memory
Erasing memory
Wrote address 0x0800da60 (100.00%) Done.
pi-star@pi-star:tmp$ sudo wpsd-detectmodem
Detected MMDVM_HS Port: /dev/ttyAMA0 (GPIO) Baud: 115200 Protocol: V1
Modem Data: MMDVM_HS_Dual_Hat-v1.6.1 20231115_WPSD 14.7456MHz dual ADF7021 FW by CA6JAU, G4KLX, W0CHP. GitID #7e16099FF36066C3041383043023933
^C
Version C: Mini Duplex board

Simply hold down the BOOT button on the board when powering it up; this will force‑boot into DFU mode so you can flash the firmware.