Tutorial complet de l’installation du firmware MMDVM

Introduction, installation de la carte Arduino Due

Le logiciel MMDVM est un fabuleux développement réalisé par Jonathan G4KLX qui permet de construit un relais radioamateur numérique multimode. Effectivement, il sait gérer aussi bien le DSTAR que le DMR et le C4FM.

Le logiciel MMDVM est composé de deux parties.

  1. La partie de décodage encodage des modes numériques : MMDVM. Ce logiciel s’installe sur un Arduino Due
  2. La partie d’interface réseau internet, qui se connecte aux réflecteurs, Talk Group Brandmeister ou YSF Reflector : MMDVM Host, qui s’installe notamment sur un nano ordinateur Raspberry Pi.
Synoptique d'un relais utilisant le "MultiMode Digital Voice Modem" (MMDVM)

Synoptique d’un relais utilisant le “MultiMode Digital Voice Modem” (MMDVM)

En plus d’être accessibles aux bricoleurs ayant la fibre informatique… il s’agit de réalisation à coût faible. Je vous propose de suivre étape par étape toute la mise en œuvre. L’objectif est simple : Disposer d’un relais numérique UHF interconnecté via internet.

Le tutoriel est à lire sur plusieurs pages. Utiliser le sommaire et la navigation proposée en bas d’article pour vous faciliter la navigation.

Installation de la carte Arduino

Vous avez acheté votre carte Arduino DUE, et la première chose à faire est d’installer le logiciel d’édition IDE Arduino. Télécharger le fichier d’installation (86Mo pour la version 1.6.0 de l’IDE) sur la page https://www.arduino.cc/en/Main/Software
Installer le logiciel. Toutes les cases sont cochées notamment Install USB Driver.

 

Plusieurs questions de sécurité d’installation du Driver USB sont posées. Bien sûr, nous répondons Installer.

Le message Completed est affichée, l’installation est terminée, Cliquer sur Close.

Brancher la carte Arduino DUE sur le port USB de programmation (coté connecteur d’alimentation externe), le Gestionnaire de périphérique ajoute un Ports série COM. Dans mon cas, un port COM11 (Arduino DUE Programming Port).

Depuis le menu démarré, vous pouvez lancer le logiciel Arduino

Choisissez le port série correspondant à votre liaison avec l’Arduino DUE, (ici COM11) dans le menu Outils / Ports.

Puis choisir Outils / Gestionnaire de carte. Le gestionnaire télécharge les définitions des cartes Arduino sur internet.

 

Dans le champ Filtrez la recherche, tapez due. Sélectionner la ligne Arduino SAM Boards (32-bits ARM Cortex-M3), et cliquer Installer.

Sélectionner à présent en bas du menu Outils / Type de carte : “Arduino Due (Programming Port)”

Avant de programmer l’arduino avec le logiciel MMDVM, nous allons injecter un petit programme de test, pour vérifier que tout est correctement paramétré.


If you would be interested to participate in a possible future new grouped order (MMDVM board, SvxLink Card), leave your email below to be reported!

11 réflexions au sujet de « Tutorial complet de l’installation du firmware MMDVM »

  1. Merci F5UII pour toutes ces explications et votre travail sur le sujet. Une question à propos de ce relais MMDVM à base de ARDUINO DUE.
    Est-il possible de la faire fonctionner ce relais en DMR autonome sans Rapberry PI ?
    Cette question car nous avons un projet à MARSEILLE sur un site dépourvu de connection à Internet.
    Merci pour votre retour

    (Traduction)
    Thank you F5UII for all these explanations and your work on the subject. A question about this MMDVM repeater based on ARDUINO DUE.
    Is it possible to operate this repeater in standalone DMR without Raspebrry PI?
    This question because we have a project in MARSEILLE on a site devoid of connection to Internet.
    Thanks for your feedback

    1. Merci Laurent,

      Il faudra toujours un Raspberry Pi qui assure la fonction de logique du relais. Sans internet, le relais fonctionnera en local comme un relais analogique, en local, en utilisant le canal (TalkGroup) TG 9.
      Dans ce cas, et même si cela ne semble pas nécessaire, il serait peut être nécessaire d’assurer une mise à l’heure du Raspberry Pi par une source externe (GPS ou RTC), afin qu’il ne dérive pas trop. Le Raspberry Pi se met à l’heure automatiquement par internet.

      (Traduction)
      Thank you Larry,

      It will always require a Raspberry Pi that provides the repeater controler function of the repeater. Without the internet, the relay will operate locally as an analog relay, locally, when users connecting it by using the TG 9 (TalkGroup) channel.
      In this case, and even if this does not seem necessary, i will advise to ensure that the Raspberry Pi is set to an external source (GPS or RTC) so that it does not drift too much. The Raspberry Pi automatically sets itself on the Internet.

  2. Bonjour a tous je me permet de copier l’échange par mails avec Christian au sujet de mon souci pour que tous le monde en profite.

    Tous d’abord merci du travaille effectuer pour la carte MMDVM… ainsi que SVXLink que j’ai aussi.

    J’ai un souci sur la carte MMDVM : au branchement de l’Arduino la LED L clignote doucement , puis des le démarrage de MMDVM elle clignote rapidement ainsi que TX/RX qui clignote synchro.

    Le logiciel ne reçois rien , j’ai bien fait la procédure de réglage du niveau sur la broche A0 suivant votre tuto, mais pas le moindre affichage de réception ni de LED SQUELCH allumer lors de la réception d’une émission.

    Cela fait plus d’une semaine que je cherche sans n’avoir rien trouver de probant.

    Si vous avez une idee ?

    73 QRO

    Romain Lepron F4HTU

    Reponse de Christian :

    Cela pourrait être résolu par la piste indiquée ici.
    https://www.f5uii.net/compilation-installation-configuration-mmdvm-stm32f4xx/#comment-13080

    Moi :
    Merci de la réponse rapide

    Donc le souci serait peut être que le TCXO n’envoie pas les bon niveau a l’Arduino.
    Il a besoin de sa pour se verrouiller, si cela n’est pas fait aucune réception ne peut être lancer si j’ai bien compris ?

    Je vais voir sa des maintenant

    Je viens de court-circuiter C22

    Effectivement javais 3v de niveau , maintenant j’ai bien 3.3V. Je vous joints la photos de l’oscilloscope, cela vous parait t-il correct ?

    Par contre toujours ces LED TXRX qui clignote ensemble , c’est normal ?

    Christian :
    OK pour le trace temporelle du TCXO.

    Concernant les LED : vérifier votre fichier config.h MMDVM

    La frequence normalement fourni par Shopchip est 12.288
    #define EXTERNAL_OSC 12288000
    #define ARDUINO_DUE_NTH

    (Translation)
    Hello all I can copy the exchange by mails with Christian about my concern so that everyone benefits.

    First of all thank you for the work done for the MMDVM card … as well as SVXLink that I also have.

    I have a problem with the MMDVM card: when the Arduino is connected, the LED L flashes slowly, then the MMDVM start flashes quickly and TX / RX flashes sync.

    The software does not receive anything, I did well the procedure of adjusting the level on pin A0 according to your tuto, but not the slightest reception display nor LED SQUELCH turn on when receiving a program.

    I have been searching for more than a week without having found anything convincing.

    If you have an idea ?

    73 QRO

    Romain Lepron F4HTU

    Answer by Christian:

    This could be solved by the track shown here.
    https://www.f5uii.net/compilation-installation-configuration-mmdvm-stm32f4xx/#comment-13080

    Me :
     Thanks for the quick reply

    So the worry may be that the TCXO does not send the right level to the Arduino.
        He needs his to lock himself, if that is not done no reception can be thrown if I understand correctly?

    I’ll see her now

    I just shortcut C22

    Actually I had 3v level, now I have 3.3V well. I attach you the photos of the oscilloscope, it seems to you correct?

    By cons always those TXRX LEDs that blink together, is it normal?

    Christian:
    OK for the time trace of the TCXO.

    About LEDs: check your config.h file MMDVM

    The frequency normally provided by Shopchip is 12,288
    #define EXTERNAL_OSC 12288000
    #define ARDUINO_DUE_NTH

  3. Voila , je viens de paramétrer l’Arduino sur define EXTERNAL_OSC 12288000

    Maintenant il faudra attendre ce soir pour voir si il reçois mon émission.

    Petite question : la LED SQUELCH est commander par l’arduino a travers la detection RADIO-SQL quand le transistor mets la borne A7 au plus 3V ?

    Que même quand le poste reçois une émission et qu’il passe le SQL a 5V , rien ne s’allume sur la carte.

    Le clignotement frénétique et synchro des LED TX/RX est donc normal.

    73 QRO

    (Translation)
    So, I just set the Arduino on define EXTERNAL_OSC 12288000

    Now he’ll have to wait until tonight to see if he gets my show.

    Small question: the LED SQUELCH is controlled by the arduino through the RADIO-SQL detection when the transistor puts terminal A7 at most 3V?

    That even when the station receive a broadcast and it passes the SQL to 5V, nothing lights up on the card.

    The frenzy and sync flashing of the TX / RX LEDs is therefore normal.

    73 QRO

    1. La LED Squelch est pilotée par l’arduino et sera allumée uniquement au décodage de signaux réceptionnés par MMDVM. Elle reste éteinte en effet pour tout autre signal non décodé par MMVDM (indépendant de RADIO-SQL et je crois bien non exploité en réalité).

      Les LEDs TX et RX sur la platine Arduino clignotent et indiquent qu’il y a communication entre le modem MMDVM (arduino) et MMDVMHost. Ce dialogue série est initialisé par MMDVMHost. C’est donc bon signe…

      La LED L clignote à une fréquence plus élevé lors que MMDMV tourne.
      Il ne vous reste plus qu’à faire des essais avec émetteur et récepteur.

      Bons essais !

      (Translation)
      The Squelch LED is controlled by the arduino and will only be lit when decoding signals received by MMDVM. It remains off for any other signal not decoded by MMVDM (independent of RADIO-SQL and I believe not really exploited in fact).

      The TX and RX LEDs on the Arduino board blink and indicate that there is communication between the MMDVM modem (arduino) and MMDVMHost. This serial dialog is initialized by MMDVMHost. So it’s a good sign …

      The LED L flashes at a higher frequency when MMDMV is running.
      All you have to do now is test with transmitter and receiver.

      Good trials!

  4. Ok je teste ca ce soir
    En espérant que le fait d’avoir le même ID sur le relais et dans le MD380 ne pose pas de souci…( juste le temps des test )
    Par contre , ayant qu’un seul des deux poste radio FT-7800 , cela ne pose t-il pas de problème que je le raccorde seulement a RECEIVER pour mes test de réception ?

    La carte peut elle juste recevoir sans émettre ou le portatif attend une confirmation du relais sur sa voie de réception ?

    Merci beaucoup

    (Translation)
    Ok I test it tonight
    Hoping that having the same ID on the relay and in the MD380 does not matter … (just test time)
    On the other hand, having only one of the two FT-7800 radio sets, does not it matter that I only connect it to RECEIVER for my reception test?

    Can the card just receive without transmitting or the handset waits for confirmation of the relay on its receiving channel?

    thank you very much

    1. Si vous connectez MMDVMHost à un master du réseau Brandmeister, normalement, l’ID du relais n’a pas besoin d’être forcément enregistré. Prenez tout de même un ID libre en consultant la base http://ham-digital.org/dmr-rptrreg.php#FRA
      Il vaut mieux que les ID soient distincts, je suppose que cela poserait problématique.

      Le relais doit être full-duplex. Cela n’ira pas si vous n’avez pas les deux postes. La section [General] de MMDVM.ini précise Duplex =1 pour un relais.

      Pour le réglage de MMDVMHost vous aurez certainement déjà découvert mon article
      https://www.f5uii.net/installation-calibration-adjustment-tunning-mmdvm-mmdvmhost-raspberry-motorola-gm360/

      Si vous ne branché que le RX, vous pourriez avoir par chance quelques traces dans le log de MMDVMHost, mais le réglage de la partie réception sera impossible tant qu’une liaison Fullduplex ne soit établi. A l’inverse le poste unique peut servir au réglage de la chaine d’émission, par utilisation de MMDVMCal.

      (Translation)
      If you connect MMDVMHost to a Brandmeister network master, normally the repeater ID does not need to be a register one. Please take a free ID – have a look on http://ham-digital.org/dmr-rptrreg.php#FRA
      It is better that the IDs are distinct, I suppose that would be problematic.

      The repeater must be full-duplex. This will not happen if you do not have both transceivers. The [General] section of MMDVM.ini specifies Duplex = 1 for a repeater.

      For the MMDVMHost setting you may have already discovered my post :
      https://www.f5uii.net/en/installation-calibration-adjustment-tunning-mmdvm-mmdvmhost-raspberry-motorola-gm360/

      If you only connect the RX, you may have a few log lines in the MMDVMHost log, but you can not set the receive part until a full-duplex connection is established. Conversely, the single station can be used to adjust the transmission way, using MMDVMCal.

  5. Ok
    Je vais prendre l’ID d’un ami pour mon MD-380 histoire que cela ne pose pas de souci.

    Je vais mettre le 7800 sur la chaine émission et un autres poste sur la chaine réception, c’est bien la dessus que je ne savais pas si il fallait une vrai liaison FULL-DUPLEX…

    Je préférer poser la question pour mettre toute les chances de mon coté 🙂

    Je vous donne des nouvelles ce soir , et peut être en DMR qui sais…

    73 QRO++

    OK
    I will take a friend’s ID for my MD-380 so that it does not matter.

    I’m going to put the 7800 on the transmission chain and another station on the reception chain, it is the subject, I did not know if it needed a real FULL-DUPLEX link …

    I prefer to ask the question to put the odds of my side 🙂

    I give you news tonight, and can be QRV in DMR who knows …

    73 QRO ++

  6. Hi.
    I try to compile the program for the arduino due. Linux mint
    My arduino ide (1.6.12) and Arduino SAM Boards (1.6.11).
    The file to be edited, indicated in BUILD.txt, does not exist the directory that indicates.
    I have modified the files in:
    User /arduino/hardware/platform.txt
    also
    User /arduino/hardware/avr/platform.txt
    There is no subdirectory / sam
    The following errors appear
    --------------------------------------------
    Arduino:1.6.12 (Linux), Tarjeta:"Arduino Due (Programming Port)"

    sketch/DMRDMOTX.cpp.o: In function CDMRDMOTX::writeByte(unsigned char)':
    sketch/DMRDMOTX.cpp:139: undefined reference to
    arm_fir_interpolate_q15'
    sketch/DMRTX.cpp.o: In function CDMRTX::writeByte(unsigned char, unsigned char)':
    sketch/DMRTX.cpp:268: undefined reference to
    arm_fir_interpolate_q15'
    sketch/DStarRX.cpp.o: In function CDStarRX::samples(short*, unsigned short const*, unsigned char)':
    sketch/DStarRX.cpp:294: undefined reference to
    arm_q15_to_q31'
    sketch/DStarRX.cpp:295: undefined reference to arm_biquad_cascade_df1_q31'
    sketch/DStarTX.cpp.o: In function
    CDStarTX::writeByte(unsigned char)':
    sketch/DStarTX.cpp:428: undefined reference to arm_fir_interpolate_q15'
    sketch/IO.cpp.o: In function
    CIO::process()':
    sketch/IO.cpp:163: undefined reference to arm_fir_fast_q15'
    sketch/IO.cpp:170: undefined reference to
    arm_fir_fast_q15'
    sketch/IO.cpp:177: undefined reference to arm_fir_fast_q15'
    sketch/IO.cpp:192: undefined reference to
    arm_fir_fast_q15'
    sketch/IO.cpp:199: undefined reference to arm_fir_fast_q15'
    sketch/IO.cpp.o:sketch/IO.cpp:214: more undefined references to
    arm_fir_fast_q15' follow
    sketch/P25RX.cpp.o: In function CP25RX::samples(short*, unsigned short*, unsigned char)':
    sketch/P25RX.cpp:107: undefined reference to
    arm_q15_to_q31'
    sketch/P25RX.cpp:108: undefined reference to arm_biquad_cascade_df1_q31'
    sketch/P25TX.cpp.o: In function
    CP25TX::writeByte(unsigned char)':
    sketch/P25TX.cpp:150: undefined reference to arm_fir_interpolate_q15'
    sketch/P25TX.cpp:152: undefined reference to
    arm_fir_fast_q15'
    sketch/YSFRX.cpp.o: In function CYSFRX::samples(short*, unsigned short*, unsigned char)':
    sketch/YSFRX.cpp:103: undefined reference to
    arm_q15_to_q31'
    sketch/YSFRX.cpp:104: undefined reference to arm_biquad_cascade_df1_q31'
    sketch/YSFTX.cpp.o: In function
    CYSFTX::writeByte(unsigned char)':
    sketch/YSFTX.cpp:139: undefined reference to `arm_fir_interpolate_q15'
    collect2: error: ld returned 1 exit status
    exit status 1
    Error compilación en tarjeta Arduino Due (Programming Port).
    -------------------------------

    Any ideas?
    regards

    1. Hello,

      It is as if you did not install the Arduino SAM Boards package.
      Have you follow the advices given by M1GEO ? (https://github.com/g4klx/MMDVM/blob/master/BUILD.txt) :

      I (M1GEO) found it was necessary to download SAM-1.6.6 outside of the Arduino IDE, and manually extract the files.
      The Board Manager didn’t seem to install the SAM files correctly. Here’s how I did it:

      a) wget http://downloads.arduino.cc/cores/sam-1.6.6.tar.bz2 -O /tmp/sam-1.6.6.tar.bz2 (download and save in /tmp)
      b) cd arduino-1.6.7/hardware/arduino/ (Arduino root, here, in my home directory)
      c) tar xvfj /tmp/sam-1.6.6.tar.bz2

      Regards
      Christian F5UII

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *