MMDVM HotSpot: firmware for ZUMspot or MMDVM_HS based boards (D-Star, DMR, YSF, P25, NXDN and POCSAG)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
Go to file
Andy CA6JAU 851a7141a2
Reducing ring buffers for duplex mode fix
8 years ago
STM32F10X_Lib@f57ebc35af Add STM32F10X_Lib as submodule 8 years ago
configs Update NanoDV.h 8 years ago
scripts Preparing for next release 8 years ago
.gitignore Add STM32F10X_Lib as submodule 8 years ago
.gitmodules Add STM32F10X_Lib as submodule 8 years ago
ADF7021.cpp Optional debug messages at compile time to save FLASH space 8 years ago
ADF7021.h Preliminary register values for NXDN with TCXO = 12.2880 MHz 8 years ago
BUILD.md Update docs 8 years ago
BitRB.cpp Fix Copyright infos 8 years ago
BitRB.h Merge branch 'master' into devel 8 years ago
CWIdTX.cpp Adding CW ID support based on original Jonathan G4KLX CW ID 8 years ago
CWIdTX.h Adding CW ID support based on original Jonathan G4KLX CW ID 8 years ago
CalDMR.cpp Fix some bugs in MMDVMCal mode 8 years ago
CalDMR.h Support for MMDVMCal and external deviation adjustment by MMDVM.ini 8 years ago
CalRSSI.cpp Adding RSSI calibration mode support 8 years ago
CalRSSI.h Adding RSSI calibration mode support 8 years ago
Config.h Add support for Nano DV board (BG4TGO & BG5HHP) 8 years ago
DMRDMORX.cpp Fix Copyright infos 8 years ago
DMRDMORX.h Fix Copyright infos 8 years ago
DMRDMOTX.cpp Fix typo 8 years ago
DMRDMOTX.h Support for MMDVMCal and external deviation adjustment by MMDVM.ini 8 years ago
DMRDefines.h First commit 9 years ago
DMRIdleRX.cpp Optional debug messages at compile time to save FLASH space 8 years ago
DMRIdleRX.h Adapting original duplex DMR code to MMDVM_HS 9 years ago
DMRRX.cpp Changing 2 slot RX to 1 slot RX only in DMR duplex mode 9 years ago
DMRRX.h Changing 2 slot RX to 1 slot RX only in DMR duplex mode 9 years ago
DMRSlotRX.cpp Updating Copyright dates 8 years ago
DMRSlotRX.h Updating Copyright dates 8 years ago
DMRSlotType.cpp First commit 9 years ago
DMRSlotType.h First commit 9 years ago
DMRTX.cpp Adding run-time debugging for duplex mode 9 years ago
DMRTX.h Adapting original duplex DMR code to MMDVM_HS 9 years ago
DStarDefines.h First commit 9 years ago
DStarRX.cpp Optional debug messages at compile time to save FLASH space 8 years ago
DStarRX.h Fix Copyright infos 8 years ago
DStarTX.cpp Fix Copyright infos 8 years ago
DStarTX.h Fix Copyright infos 8 years ago
Debug.h Optional debug messages at compile time to save FLASH space 8 years ago
Globals.h Adding RSSI calibration mode support 8 years ago
IO.cpp Fixing some signed / unsigned 8 years ago
IO.h Optional debug messages at compile time to save FLASH space 8 years ago
IOArduino.cpp Add support for Nano DV board (BG4TGO & BG5HHP) 8 years ago
IOSTM.cpp Add support for Nano DV board (BG4TGO & BG5HHP) 8 years ago
LICENCE First commit 9 years ago
MMDVM_HS.cpp Adding RSSI calibration mode support 8 years ago
MMDVM_HS.ino Adding RSSI calibration mode support 8 years ago
Makefile Update Makefile 8 years ago
NXDNDefines.h Add NXDN, first commit 8 years ago
NXDNRX.cpp Restoring FSW run errors number for NXDN 8 years ago
NXDNRX.h Add NXDN, first commit 8 years ago
NXDNTX.cpp Reducing ring buffers for duplex mode fix 8 years ago
NXDNTX.h Adding NXDN TX preamble 8 years ago
P25Defines.h First commit 9 years ago
P25RX.cpp Fix Copyright infos 8 years ago
P25RX.h Fix Copyright infos 8 years ago
P25TX.cpp Reducing ring buffers for duplex mode fix 8 years ago
P25TX.h Fix Copyright infos 8 years ago
README.md Update docs 8 years ago
SerialArduino.cpp Fix Copyright infos 8 years ago
SerialPort.cpp Fix for NAK error using MMDVMCal with simplex firmware 8 years ago
SerialPort.h Adding RSSI calibration mode support 8 years ago
SerialRB.cpp First commit 9 years ago
SerialRB.h Reducing ring buffers for duplex mode fix 8 years ago
SerialSTM.cpp Add additional check for Config.h options 8 years ago
Utils.cpp Optional debug messages at compile time to save FLASH space 8 years ago
Utils.h Optional debug messages at compile time to save FLASH space 8 years ago
YSFDefines.h First commit 9 years ago
YSFRX.cpp Fix Copyright infos 8 years ago
YSFRX.h Fix Copyright infos 8 years ago
YSFTX.cpp Reducing ring buffers for duplex mode fix 8 years ago
YSFTX.h Fix Copyright infos 8 years ago
bootloader.ld Extend FLASH size for 128 KB parts 8 years ago
normal.ld Extend FLASH size for 128 KB parts 8 years ago
stm32f4xx_link.ld Adding support for STM32F4 and STM32F7 (first part…) 8 years ago
stm32f7xx_link.ld Adding support for STM32F4 and STM32F7 (first part…) 8 years ago
stm32f10x_link.ld Adding USB bootloader support 9 years ago
version.h Updating version 8 years ago

README.md

Introduction

This is the source code of ZUMspot/MMDVM_HS, personal hotspot (ADF7021 version of the MMDVM firmware), based on Jonathan G4KLX's MMDVM software. This firmware supports D-Star, DMR, System Fusion, P25 and NXDN digital modes.

This software is intended to be run on STM32F103 microcontroller. Also, Arduino with 3.3 V I/O (Arduino Due and Zero) and Teensy (3.1, 3.2, 3.5 or 3.6) are supported. You can build this code using Arduino IDE with Roger Clark's STM32duino package, or using command line tools with ARM GCC tools. The preferred method under Windows is using STM32duino, and under Linux or macOS (command line) is using STM32F10X_Lib.

This software is licenced under the GPL v2 and is intended for amateur and educational use only. Use of this software for commercial purposes is strictly forbidden.

Features

  • Supported modes: D-Star, DMR, Yaesu Fusion, P25 Phase 1 and NXDN
  • Automatic mode detection (scanning)
  • G4KLX software suite: MMDVMHost, ircDDBGateway, YSFGateway, P25Gateway, DMRGateway, NXDNGateway and MMDVMCal
  • Bands: 144, 220, 430 and 900 MHz (VHF requires external inductor)
  • Status LEDs (PTT, COR and digital modes)
  • Serial repeater port for Nextion displays
  • Support for native USB port in STM32F103 CPU
  • RSSI support
  • CW ID support
  • Full duplex support with two ADF7021

Important notes

The ADF7021 (or RF7021SE module) must operate with a 14.7456 MHz TCXO and with at least 2 ppm of frequency stability. You could use also 12.2880 MHz TCXO, but this frequency configuration has less testing. Any other TCXO frequency is not supported.

Please set TXLevel=50 in MMDVM.ini to configure default deviation levels for all modes. You could modify this value and other TXLevel paramenters to change deviation levels. Use MMDVMCal to check DMR deviation level and TX frequency offset with calibrated test equipment.

The jumper wire to CLKOUT in RF7021SE module is not longer required for lastest MMDVM_HS firmware. But CE pin connection of ADF7021 is required for proper operation of ZUMspot.

Be aware that some Blue Pill STM32F103 board are defectives. If you have trouble with USB, please check this link.

VHF (144-148 MHz) support for ZUMSpot is added by an external 18 nH inductor between L1 and L2 pins of ADF7021. This will enable dual band (VHF/UHF) operation.

Dual ADF7021 for full duplex operation (#define DUPLEX in Config.h) will work only with a big RX/TX frequency separation (5 MHz or more in UHF band for example) and proper antenna filtering. At the moment #define LIBRE_KIT_ADF7021 (Config.h) with STM32F103 platform is supported. Please see BUILD.md for pinout details.

If you can't decode any 4FSK modulation (DMR, YSF, P25 or NXDN) with your ZUMspot, the common solution is to adjust RX frequency offset (RXOffset) in your MMDVM.ini file. Please try with steps of +-100 Hz until you get low BER. If you don't have test equipment, the procedure is trial and error. In some cases TXOffset adjustment is also required for proper radio decoding. If you have test equipment, please use MMDVMCal.

If you have problems updating firmware using USB bootloader (DFU mode) on Orange Pi or any other system different from RPi, you could compile the dfu tool directly. You could get the source code of a dfu tool here.

Quick start

Please see BUILD.md for more details, and also MMDVM Yahoo Groups. You also can check at MMDVM_HS/scripts folder for some automatic tasks.

Binary firmware installation

Please check the latest firmware here.

Pi-Star binary firmware installation

You could use some pi-star commands under SSH console:

  • sudo pistar-zumspotflash rpi: ZUMspot RPi board
  • sudo pistar-zumspotflash rpi_duplex: ZUMSpot duplex board conected to GPIO
  • sudo pistar-zumspotflash usb: ZUMspot USB dongle
  • sudo pistar-zumspotflash libre: ZUMspot Libre Kit or generic MMDVM_HS board with USB
  • sudo pistar-mmdvmhshatflash hs_hat: MMDVM_HS_Hat board conected to GPIO
  • sudo pistar-mmdvmhshatflash hs_dual_hat: HS_DUAL_HAT board conected to GPIO
  • sudo pistar-nanohsflash nano_hs: Nano hotSPOT board

Windows

Download the ZUMspotFW firmware upgrade utility (ZUMspotFW_setup.exe) from the releases section.

This utility includes firmwares binaries and USB drivers for Windows 7/8/10. If you have problems with the installer, you can download ZUMspotFW.zip for a manual installation.

Linux or macOS

Download the script (*.sh) that matches with your ZUMspot/MMDVM_HS board:

  • install_fw_rpi.sh: only for ZUMspot RPi board (KI6ZUM & VE2GZI)
  • install_fw_hshat.sh: only for MMDVM_HS_Hat board (DB9MAT & DF2ET)
  • install_fw_nanohs.sh: only for Nano hotSPOT board (BI7JTA)
  • install_fw_nanodv.sh: only for Nano DV board (BG4TGO & BG5HHP)
  • install_fw_hsdualhat.sh: only for MMDVM_HS_Dual_Hat board (DB9MAT & DF2ET & DO7EN)
  • install_fw_librekit.sh: only for ZUMspot Libre Kit board (KI6ZUM & VE2GZI) or generic MMDVM_HS board
  • install_fw_usb.sh: only for ZUMspot USB dongle (KI6ZUM & VE2GZI)
  • install_fw_duplex.sh: only for MMDVM_HS with dual ADF7021 (EA7GIB) or generic dual ADF7021 board

For example, download the ZUMspot RPi upgrade script:

cd ~
curl -OL https://raw.github.com/juribeparada/MMDVM_HS/master/scripts/install_fw_rpi.sh

make the script executable:

chmod +x install_fw_rpi.sh

stop your MMDVMHost process and run (you will need the root password):

./install_fw_rpi.sh

and wait to complete the upgrading process.

Build from the sources

You could check at MMDVM_HS/configs for common Config.h examples, using different ZUMspot boards.

MMDVM_HS_Hat

Please visit Mathis Schmieder GitHub here for detailed instructions.

ZUMspot Libre Kit (under Linux Raspbian)

If you are using Pi-Star, expand filesystem (if you haven't done before):

sudo pistar-expand
sudo reboot

Enable RW filesystem if you are using Pi-Star:

rpi-rw

Install the necessary software tools:

sudo apt-get update
sudo apt-get install gcc-arm-none-eabi gdb-arm-none-eabi libstdc++-arm-none-eabi-newlib libnewlib-arm-none-eabi

Download the sources:

cd ~
git clone https://github.com/juribeparada/MMDVM_HS
cd MMDVM_HS/
git submodule init
git submodule update

Build the firmware with USB bootloader support (the default Config.h is OK for Libre Kit):

make bl

If you are using Pi-Star, stop services:

sudo pistar-watchdog.service stop
sudo systemctl stop mmdvmhost.timer
sudo systemctl stop mmdvmhost.service

Upload the firmware to ZUMspot Libre Kit using the USB port (your Libre Kit has the bootloader already installed):

sudo make dfu devser=/dev/ttyACM0

ZUMspot RPi

Enable serial port in Raspberry Pi 3 or Pi Zero W

This this necessary only if you are installing a fresh copy of Raspbian OS.

Edit /boot/cmdline.txt:

sudo nano /boot/cmdline.txt
(remove the text: console=serial0,115200)

Disable services:

sudo systemctl disable serial-getty@ttyAMA0.service
sudo systemctl disable bluetooth.service

Edit /boot/config.txt

sudo nano /boot/config.txt

and add the following lines at the end of /boot/config.txt:

enable_uart=1
dtoverlay=pi3-disable-bt

Reboot your RPi:

sudo reboot

Build the firmware and upload to ZUMspot RPi

If you are using Pi-Star, expand filesystem (if you haven't done before):

sudo pistar-expand
sudo reboot

Enable RW filesystem if you are using Pi-Star:

rpi-rw

Install the necessary software tools:

sudo apt-get update
sudo apt-get install gcc-arm-none-eabi gdb-arm-none-eabi libstdc++-arm-none-eabi-newlib libnewlib-arm-none-eabi

cd ~
git clone https://git.code.sf.net/p/stm32flash/code stm32flash
cd stm32flash
make
sudo make install

Download the firmware sources:

cd ~
git clone https://github.com/juribeparada/MMDVM_HS
cd MMDVM_HS/
git submodule init
git submodule update

Edit Config.h

nano Config.h

and enable:

#define ZUMSPOT_ADF7021
#define ENABLE_ADF7021
#define ADF7021_14_7456
#define STM32_USART1_HOST
#define ENABLE_SCAN_MODE

Build the firmware:

make

If you are using Pi-Star, stop services:

sudo pistar-watchdog.service stop
sudo systemctl stop mmdvmhost.timer
sudo systemctl stop mmdvmhost.service

Upload the firmware to ZUMspot RPi board:

sudo make zumspot-pi

Powered by TurnKey Linux.