Flashing The DVM-V1 Modem
- The DVM V-1 Modem is a dedicated piece of hardware designed by W3AXL for use with the DVMProject. Flashing the firmware can be performed in various ways. Per the firmware repository.
Some devices can be used on top on a RPi attached via the GPIO port or
standalone and others are connected via USB. Both variants require different
handling of compiling and uploading the firmware, examples on flashing devices
are mostly not included here because the methods to flash vary from device to
device.
This guide will cover the following methods to enter the bootloader (DFU):
- From
dvmhostNatively - Jumping
BOOT0Pins - Writing via a STLink v2
Note: A firmware upgrade will not require re-calibration of the modem.
From dvmhost Natively
-
Power up the DVM-V1 modem and connect it to your host device. This guide will be using a Raspberry Pi 5 and the modem will be attached via USB cable (
/dev/ttyUSB0). -
Ensure
dvmhostis not running. Stop any and all services that may be configured. You can verify that there are nodvmhostprocesses active viaps aux | grep dvmhost. -
Download the latest firmware from the
dvmfirmwarerepository. As of this writing the latest firmware is 2026-05-13:dvm-firmware_f4-dvmv1.bin -
Ensure that
stm32flashis installed. The command below will install the package on a Debian based Linux distribution.sudo apt install stm32flash -y -
You can enter the bootloader menu in one of two ways: via the calibration menu or directly via command.
-
To enter the bootloader menu via the calibration menu perform the following steps:
-
Execute the following:
./dvmhost -c /path/to/config.yml --cal -
Press
!during the calibration loading prompt. You will see the following output (truncated):I: . . 8 888888888o. `8.`888b ,8' ,8. ,8. 8 8888 `^888. `8.`888b ,8' ,888. ,888. 8 8888 `88.`8.`888b ,8' .`8888. .`8888. 8 8888 `88 `8.`888b ,8' ,8.`8888. ,8.`8888. 8 8888 88 `8.`888b ,8' ,8'8.`8888,8^8.`8888. 8 8888 88 `8.`888b ,8' ,8' `8.`8888' `8.`8888. 8 8888 ,88 `8.`888b8' ,8' `8.`88' `8.`8888. 8 8888 ,88' `8.`888' ,8' `8.`' `8.`8888. 8 8888 ,o88P' `8.`8' ,8' `8 `8.`8888. 8 888888888P' `8.` ,8' ` `8.`8888. Digital Voice Modem (DVM) Host 05.04A (R05A04 d40b8332) (built Mar 6 2026 17:31:48 DEBUG_FACTORY_LABTOOL) Copyright (c) 2017-2026 Bryan Biedenkapp, N2PLL and DVMProject (https://github.com/dvmproject) Authors. Portions Copyright (c) 2015-2021 by Jonathan Naylor, G4KLX and others >> Modem Calibration --- OUTPUT OMITTED --- I: (CAL) Rebooting modem into ST bootloader mode... I: (MODEM) Closing the modem -
Enter the following command to start the flashing process.
sudo stm32flash -v -w /home/pi/dvm-firmware_f4-dvmv1.bin -R /dev/ttyUSB0 -
You will see the following output.
stm32flash 0.7 http://stm32flash.sourceforge.net/ Using Parser : Raw BINARY Size : 63128 Interface serial_posix: 57600 8E1 Version : 0x31 Option 1 : 0x00 Option 2 : 0x00 Device ID : 0x0421 (STM32F446xx) - RAM : Up to 128KiB (12288b reserved by bootloader) - Flash : Up to 512KiB (size first sector: 1x16384) - Option RAM : 16b - System RAM : 30KiB Write to memory Erasing memory Wrote and verified address 0x0800f698 (100.00%) Done. Resetting device... Reset done. -
The flashing process is complete. You may now restart the
dvmhostservice. -
To enter the bootloader menu directly via command perform the following steps:
-
Execute the following:
sudo ./dvmhost -c /path/to/config.yml --boot -
Perform the steps as outlined in step 9.
-
The flashing process is complete. You may now restart the
dvmhostservice.
-
Jumping BOOT0 Pins
- Coming Soon™
Writing via a STLink v2
- Coming Soon™ (Lower priority as I do not own a STLink v2 at the moment.)