diff --git a/Config.h b/Config.h index 6082fc1..79f26bf 100644 --- a/Config.h +++ b/Config.h @@ -30,7 +30,7 @@ // #define MMDVM_HS_DUAL_HAT_REV10 // 5) Nano hotSPOT (BI7JTA) // #define NANO_HOTSPOT -// 6) Nano DV revisions 1.0 (BG4TGO & BG5HHP) +// 6) NanoDV NPi or USB revisions 1.0 (BG4TGO & BG5HHP) // #define NANO_DV_REV10 // Enable ADF7021 support: diff --git a/configs/MMDVM_HS_Dual_Hat-12mhz.h b/configs/MMDVM_HS_Dual_Hat-12mhz.h index cebc1ba..10a56a8 100644 --- a/configs/MMDVM_HS_Dual_Hat-12mhz.h +++ b/configs/MMDVM_HS_Dual_Hat-12mhz.h @@ -30,7 +30,7 @@ #define MMDVM_HS_DUAL_HAT_REV10 // 5) Nano hotSPOT (BI7JTA) // #define NANO_HOTSPOT -// 6) Nano DV revisions 1.0 (BG4TGO & BG5HHP) +// 6) NanoDV NPi or USB revisions 1.0 (BG4TGO & BG5HHP) // #define NANO_DV_REV10 // Enable ADF7021 support: diff --git a/configs/MMDVM_HS_Dual_Hat.h b/configs/MMDVM_HS_Dual_Hat.h index 42f0c34..f2bc5cc 100644 --- a/configs/MMDVM_HS_Dual_Hat.h +++ b/configs/MMDVM_HS_Dual_Hat.h @@ -30,7 +30,7 @@ #define MMDVM_HS_DUAL_HAT_REV10 // 5) Nano hotSPOT (BI7JTA) // #define NANO_HOTSPOT -// 6) Nano DV revisions 1.0 (BG4TGO & BG5HHP) +// 6) NanoDV NPi or USB revisions 1.0 (BG4TGO & BG5HHP) // #define NANO_DV_REV10 // Enable ADF7021 support: diff --git a/configs/MMDVM_HS_Hat-12mhz.h b/configs/MMDVM_HS_Hat-12mhz.h index 7e4e8e9..024e90e 100644 --- a/configs/MMDVM_HS_Hat-12mhz.h +++ b/configs/MMDVM_HS_Hat-12mhz.h @@ -30,7 +30,7 @@ // #define MMDVM_HS_DUAL_HAT_REV10 // 5) Nano hotSPOT (BI7JTA) // #define NANO_HOTSPOT -// 6) Nano DV revisions 1.0 (BG4TGO & BG5HHP) +// 6) NanoDV NPi or USB revisions 1.0 (BG4TGO & BG5HHP) // #define NANO_DV_REV10 // Enable ADF7021 support: diff --git a/configs/MMDVM_HS_Hat.h b/configs/MMDVM_HS_Hat.h index 8df414f..db065ab 100644 --- a/configs/MMDVM_HS_Hat.h +++ b/configs/MMDVM_HS_Hat.h @@ -30,7 +30,7 @@ // #define MMDVM_HS_DUAL_HAT_REV10 // 5) Nano hotSPOT (BI7JTA) // #define NANO_HOTSPOT -// 6) Nano DV revisions 1.0 (BG4TGO & BG5HHP) +// 6) NanoDV NPi or USB revisions 1.0 (BG4TGO & BG5HHP) // #define NANO_DV_REV10 // Enable ADF7021 support: diff --git a/configs/NanoDV.h b/configs/NanoDV_NPI.h similarity index 96% rename from configs/NanoDV.h rename to configs/NanoDV_NPI.h index f7caf38..b0dab9a 100644 --- a/configs/NanoDV.h +++ b/configs/NanoDV_NPI.h @@ -30,7 +30,7 @@ // #define MMDVM_HS_DUAL_HAT_REV10 // 5) Nano hotSPOT (BI7JTA) // #define NANO_HOTSPOT -// 6) Nano DV revisions 1.0 (BG4TGO & BG5HHP) +// 6) NanoDV NPi or USB revisions 1.0 (BG4TGO & BG5HHP) #define NANO_DV_REV10 // Enable ADF7021 support: @@ -80,14 +80,14 @@ // Engage a constant or descreet Service LED mode once repeater is running // #define CONSTANT_SRV_LED // #define CONSTANT_SRV_LED_INVERTED -// #define DISCREET_SRV_LED +#define DISCREET_SRV_LED // #define DISCREET_SRV_LED_INVERTED // Use the YSF and P25 LEDs for NXDN // #define USE_ALTERNATE_NXDN_LEDS // Use the D-Star and DMR LEDs for POCSAG -// #define USE_ALTERNATE_POCSAG_LEDS +#define USE_ALTERNATE_POCSAG_LEDS // Enable modem debug messages // #define ENABLE_DEBUG diff --git a/configs/NanoDV_USB.h b/configs/NanoDV_USB.h new file mode 100644 index 0000000..716a0dc --- /dev/null +++ b/configs/NanoDV_USB.h @@ -0,0 +1,95 @@ +/* + * Copyright (C) 2018 by Andy Uribe CA6JAU + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#if !defined(CONFIG_H) +#define CONFIG_H + +// Select one board (STM32F103 based boards) +// 1) ZUMspot RPi or ZUMspot USB: +// #define ZUMSPOT_ADF7021 +// 2) Libre Kit board or any homebrew hotspot with modified RF7021SE and Blue Pill STM32F103: +// #define LIBRE_KIT_ADF7021 +// 3) MMDVM_HS_Hat revisions 1.1, 1.2 and 1.4 (DB9MAT & DF2ET) +// #define MMDVM_HS_HAT_REV12 +// 4) MMDVM_HS_Dual_Hat revisions 1.0 (DB9MAT & DF2ET & DO7EN) +// #define MMDVM_HS_DUAL_HAT_REV10 +// 5) Nano hotSPOT (BI7JTA) +// #define NANO_HOTSPOT +// 6) NanoDV NPi or USB revisions 1.0 (BG4TGO & BG5HHP) +#define NANO_DV_REV10 + +// Enable ADF7021 support: +#define ENABLE_ADF7021 + +// Enable full duplex support with dual ADF7021 (valid for homebrew hotspots only): +// #define DUPLEX + +// TCXO of the ADF7021 +// For 14.7456 MHz: +// #define ADF7021_14_7456 +// For 12.2880 MHz: +#define ADF7021_12_2880 + +// Configure receiver gain for ADF7021 +// AGC automatic, default settings: +#define AD7021_GAIN_AUTO +// AGC automatic with high LNA linearity: +// #define AD7021_GAIN_AUTO_LIN +// AGC OFF, lowest gain: +// #define AD7021_GAIN_LOW +// AGC OFF, highest gain: +// #define AD7021_GAIN_HIGH + +// Host communication selection: +// #define STM32_USART1_HOST +#define STM32_USB_HOST + +// Enable mode detection: +#define ENABLE_SCAN_MODE + +// Send RSSI value: +#define SEND_RSSI_DATA + +// Enable Nextion LCD serial port repeater on USART2 (ZUMspot Libre Kit and ZUMspot RPi): +#define SERIAL_REPEATER + +// Enable Nextion LCD serial port repeater on USART1 (Do not use with STM32_USART1_HOST enabled): +// #define SERIAL_REPEATER_USART1 + +// Enable P25 Wide modulation: +#define ENABLE_P25_WIDE + +// Disable mode LEDs blink during scan mode: +#define QUIET_MODE_LEDS + +// Engage a constant or descreet Service LED mode once repeater is running +// #define CONSTANT_SRV_LED +// #define CONSTANT_SRV_LED_INVERTED +#define DISCREET_SRV_LED +// #define DISCREET_SRV_LED_INVERTED + +// Use the YSF and P25 LEDs for NXDN +// #define USE_ALTERNATE_NXDN_LEDS + +// Use the D-Star and DMR LEDs for POCSAG +#define USE_ALTERNATE_POCSAG_LEDS + +// Enable modem debug messages +// #define ENABLE_DEBUG + +#endif diff --git a/configs/Nano_hotSPOT.h b/configs/Nano_hotSPOT.h index d13c134..c2620a1 100644 --- a/configs/Nano_hotSPOT.h +++ b/configs/Nano_hotSPOT.h @@ -30,7 +30,7 @@ // #define MMDVM_HS_DUAL_HAT_REV10 // 5) Nano hotSPOT (BI7JTA) #define NANO_HOTSPOT -// 6) Nano DV revisions 1.0 (BG4TGO & BG5HHP) +// 6) NanoDV NPi or USB revisions 1.0 (BG4TGO & BG5HHP) // #define NANO_DV_REV10 // Enable ADF7021 support: diff --git a/configs/ZUMspot_Libre.h b/configs/ZUMspot_Libre.h index 6082fc1..79f26bf 100644 --- a/configs/ZUMspot_Libre.h +++ b/configs/ZUMspot_Libre.h @@ -30,7 +30,7 @@ // #define MMDVM_HS_DUAL_HAT_REV10 // 5) Nano hotSPOT (BI7JTA) // #define NANO_HOTSPOT -// 6) Nano DV revisions 1.0 (BG4TGO & BG5HHP) +// 6) NanoDV NPi or USB revisions 1.0 (BG4TGO & BG5HHP) // #define NANO_DV_REV10 // Enable ADF7021 support: diff --git a/configs/ZUMspot_RPi.h b/configs/ZUMspot_RPi.h index 08db3f4..9d32502 100644 --- a/configs/ZUMspot_RPi.h +++ b/configs/ZUMspot_RPi.h @@ -30,7 +30,7 @@ // #define MMDVM_HS_DUAL_HAT_REV10 // 5) Nano hotSPOT (BI7JTA) // #define NANO_HOTSPOT -// 6) Nano DV revisions 1.0 (BG4TGO & BG5HHP) +// 6) NanoDV NPi or USB revisions 1.0 (BG4TGO & BG5HHP) // #define NANO_DV_REV10 // Enable ADF7021 support: diff --git a/configs/ZUMspot_USB.h b/configs/ZUMspot_USB.h index 230b8aa..9d5e239 100644 --- a/configs/ZUMspot_USB.h +++ b/configs/ZUMspot_USB.h @@ -30,7 +30,7 @@ // #define MMDVM_HS_DUAL_HAT_REV10 // 5) Nano hotSPOT (BI7JTA) // #define NANO_HOTSPOT -// 6) Nano DV revisions 1.0 (BG4TGO & BG5HHP) +// 6) NanoDV NPi or USB revisions 1.0 (BG4TGO & BG5HHP) // #define NANO_DV_REV10 // Enable ADF7021 support: diff --git a/configs/ZUMspot_duplex.h b/configs/ZUMspot_duplex.h index 7779981..e1bace7 100644 --- a/configs/ZUMspot_duplex.h +++ b/configs/ZUMspot_duplex.h @@ -30,7 +30,7 @@ // #define MMDVM_HS_DUAL_HAT_REV10 // 5) Nano hotSPOT (BI7JTA) // #define NANO_HOTSPOT -// 6) Nano DV revisions 1.0 (BG4TGO & BG5HHP) +// 6) NanoDV NPi or USB revisions 1.0 (BG4TGO & BG5HHP) // #define NANO_DV_REV10 // Enable ADF7021 support: diff --git a/configs/generic_duplex_gpio.h b/configs/generic_duplex_gpio.h index 0c1cf2d..b5b1364 100644 --- a/configs/generic_duplex_gpio.h +++ b/configs/generic_duplex_gpio.h @@ -30,7 +30,7 @@ // #define MMDVM_HS_DUAL_HAT_REV10 // 5) Nano hotSPOT (BI7JTA) // #define NANO_HOTSPOT -// 6) Nano DV revisions 1.0 (BG4TGO & BG5HHP) +// 6) NanoDV NPi or USB revisions 1.0 (BG4TGO & BG5HHP) // #define NANO_DV_REV10 // Enable ADF7021 support: diff --git a/configs/generic_gpio.h b/configs/generic_gpio.h index 10332c0..3f6813a 100644 --- a/configs/generic_gpio.h +++ b/configs/generic_gpio.h @@ -30,7 +30,7 @@ // #define MMDVM_HS_DUAL_HAT_REV10 // 5) Nano hotSPOT (BI7JTA) // #define NANO_HOTSPOT -// 6) Nano DV revisions 1.0 (BG4TGO & BG5HHP) +// 6) NanoDV NPi or USB revisions 1.0 (BG4TGO & BG5HHP) // #define NANO_DV_REV10 // Enable ADF7021 support: diff --git a/scripts/build_fw.sh b/scripts/build_fw.sh index c13ebfb..1bae995 100755 --- a/scripts/build_fw.sh +++ b/scripts/build_fw.sh @@ -74,10 +74,16 @@ make mv ~/MMDVM_HS/bin/mmdvm_f1.bin ~/MMDVM_HS/bin/nano_hotspot_fw.bin make clean -# Building Nano DV -cp ~/MMDVM_HS/configs/NanoDV.h ~/MMDVM_HS/Config.h +# Building NanoDV NPi +cp ~/MMDVM_HS/configs/NanoDV_NPi.h ~/MMDVM_HS/Config.h make -mv ~/MMDVM_HS/bin/mmdvm_f1.bin ~/MMDVM_HS/bin/nano_dv_fw.bin +mv ~/MMDVM_HS/bin/mmdvm_f1.bin ~/MMDVM_HS/bin/nanodv_npi_fw.bin +make clean + +# Building NanoDV USB +cp ~/MMDVM_HS/configs/NanoDV_USB.h ~/MMDVM_HS/Config.h +make bl +mv ~/MMDVM_HS/bin/mmdvm_f1bl.bin ~/MMDVM_HS/bin/nanodv_usb_fw.bin make clean # Building Generic Simplex GPIO diff --git a/scripts/install_fw_nanodv.sh b/scripts/install_fw_nanodv_npi.sh similarity index 98% rename from scripts/install_fw_nanodv.sh rename to scripts/install_fw_nanodv_npi.sh index 87ed420..3436a79 100755 --- a/scripts/install_fw_nanodv.sh +++ b/scripts/install_fw_nanodv_npi.sh @@ -23,7 +23,7 @@ FW_VERSION="v1.4.3" MAC_DEV_USB_SER="/dev/cu.usbmodem1441" # Download latest firmware for Nano DV -curl -OL https://github.com/juribeparada/MMDVM_HS/releases/download/$FW_VERSION/nano_dv_fw.bin +curl -OL https://github.com/juribeparada/MMDVM_HS/releases/download/$FW_VERSION/nanodv_npi_fw.bin # Download STM32F10X_Lib (only for binary tools) if [ ! -d "./STM32F10X_Lib/utils" ]; then diff --git a/scripts/install_fw_nanodv_usb.sh b/scripts/install_fw_nanodv_usb.sh new file mode 100644 index 0000000..2fe8149 --- /dev/null +++ b/scripts/install_fw_nanodv_usb.sh @@ -0,0 +1,83 @@ +#!/bin/bash + +# Copyright (C) 2017,2018 by Andy Uribe CA6JAU + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +# Configure latest version +FW_VERSION="v1.4.3" + +# Change USB-serial port name ONLY in macOS +MAC_DEV_USB_SER="/dev/cu.usbmodem1441" + +# Download latest firmware for ZUMspot USB +curl -OL https://github.com/juribeparada/MMDVM_HS/releases/download/$FW_VERSION/nanodv_usb_fw.bin + +# Download STM32F10X_Lib (only for binary tools) +if [ ! -d "./STM32F10X_Lib/utils" ]; then + git clone https://github.com/juribeparada/STM32F10X_Lib +fi + +# Configure vars depending on OS +if [ $(uname -s) == "Linux" ]; then + DEV_USB_SER="/dev/ttyACM0" + if [ $(uname -m) == "x86_64" ]; then + echo "Linux 64-bit detected" + DFU_RST="./STM32F10X_Lib/utils/linux64/upload-reset" + DFU_UTIL="./STM32F10X_Lib/utils/linux64/dfu-util" + ST_FLASH="./STM32F10X_Lib/utils/linux64/st-flash" + STM32FLASH="./STM32F10X_Lib/utils/linux64/stm32flash" + elif [ $(uname -m) == "armv7l" ]; then + echo "Raspberry Pi 3 detected" + DFU_RST="./STM32F10X_Lib/utils/rpi32/upload-reset" + DFU_UTIL="./STM32F10X_Lib/utils/rpi32/dfu-util" + ST_FLASH="./STM32F10X_Lib/utils/rpi32/st-flash" + STM32FLASH="./STM32F10X_Lib/utils/rpi32/stm32flash" + elif [ $(uname -m) == "armv6l" ]; then + echo "Raspberry Pi 2 or Pi Zero W detected" + DFU_RST="./STM32F10X_Lib/utils/rpi32/upload-reset" + DFU_UTIL="./STM32F10X_Lib/utils/rpi32/dfu-util" + ST_FLASH="./STM32F10X_Lib/utils/rpi32/st-flash" + STM32FLASH="./STM32F10X_Lib/utils/rpi32/stm32flash" + else + echo "Linux 32-bit detected" + DFU_RST="./STM32F10X_Lib/utils/linux/upload-reset" + DFU_UTIL="./STM32F10X_Lib/utils/linux/dfu-util" + ST_FLASH="./STM32F10X_Lib/utils/linux/st-flash" + STM32FLASH="./STM32F10X_Lib/utils/linux/stm32flash" + fi +fi + +if [ $(uname -s) == "Darwin" ]; then + echo "macOS detected" + DEV_USB_SER=$MAC_DEV_USB_SER + DFU_RST="./STM32F10X_Lib/utils/macosx/upload-reset" + DFU_UTIL="./STM32F10X_Lib/utils/macosx/dfu-util" + ST_FLASH="./STM32F10X_Lib/utils/macosx/st-flash" + STM32FLASH="./STM32F10X_Lib/utils/macosx/stm32flash" +fi + +# Stop MMDVMHost process to free serial port +sudo killall MMDVMHost >/dev/null 2>&1 + +# Reset ZUMspot to enter bootloader mode +eval sudo $DFU_RST $DEV_USB_SER 750 + +# Upload the firmware +eval sudo $DFU_UTIL -D nanodv_usb_fw.bin -d 1eaf:0003 -a 2 -R -R + +echo +echo "Please RESET your Nano DV !" +echo