Code plugs for Tytera MD380/390 and Retevis RT3 or similar.

I have seen many requests for code plugs to be shared but to be frank there is nothing better than learning to do it yourself.

Both these radios are similar, but I find that there is a slight difference between my RT3 and the MD380G due to the different vocoders and the addition of the GPS.

You can run the software without the connection of the radio and build the code plug piece by piece, researching the various aspects as you go and saving from time to time.

 Absolutely essential will be your digital ID, so if you haven’t got it, do it now.

Let’s start the CPS. It should be blank and show the content of the first menu Basic Information.

Select your frequency range, I’m starting of in the 400-480 MHz range, and fill in the boxes that the software can permit.

Let’s go to General Settings, giving your radio a name and entering your Digital ID in the Radio ID box. In Alert Tone, I would suggest selecting Digital in the Talk Permit Tone, so that any repeater you access will cause your radio to respond with bleepity bloop if it is good to go.

I left everything else as standard except Intro Screen where you can select Char String, and have two friendly lines of texts greet you when you switch on.

Let’s pass straight on to Button Definitions.

I would suggest short press on button 2 to Manual Dial for Private and long press toggle High/Low Power.

That leaves you button 1 to do with what you will.

Now we’ll go to Digital Contacts.

It is important here to try and get some semblance of order. The contact name will be the convention used by the general populace. I have stuck to what is “normal”, such as TG9 for talk group 9, or what ever you deem practical, however the Call ID MUST be the numerical value of the Talkgroup or Reflector that you wish to reference to it. I chose to enter ALL the available talkgroups wherever they may be, in numerical order, followed by ALL the available Reflectors, as Group Calls, but then you can add any other Digital IDs as Private Calls, together with names and callsign as you need, but with Talk Alias, this may not be necessary. You may not think you need all the talkgroups or reflectors but it is best to add them now as it makes for a tidy database. The Call Receive Tone is at your discretion.

We can safely skip the rest of the menus for the moment and go straight to Channel Information.

Here is where your research is most important. For each repeater or hotspot, you will need to know the frequencies and the colour code, together with the talkgroups that are available on each of the repeaters and on which slots they are.

So GB7PK has its TX frequency 430.525 MHz and RX frequency 439.525 MHz. Colour code 1. There appear to be 4 operational talkgroups TG9 Slot1 TG235 Slot1, TG9 Slot2 and TG2350 on Slot2. So this means you will be creating 4 pages in Channel Information, so you will need to give each page a Channel Name, carefully selecting each of the drop down boxes. Digital in Channel Mode, Color code in Admit Criteria, RX ref and TX Ref as low, TOT (timeout timer) to whatever you prefer. Contact Name will be the Talkgroup, from your previously constructed table. Color Code and Repeater Slot are from your research.

Click Add and you will have saved your first page and created a new blank page. Now the time saver!

Click on the page you have already created in the menu and right click Copy. Highlight the new page in the list also in the menu, and click paste. In the new main page on the right you just need to create the Channel Name, select the new Contact Name, and Slot number. And repeat!

So for GB7PK we shall create four channels.

Next we go back up the menu list to Zone Information where we create a new zone and give it a name. This zone can contain up to the 16 positions on the channel switch, but for the moment we have only four channels programmed. From the available channel list we can add channel members.

In my case I have created many more channels that I would consider of use, like DMR simplex or PMR channels, so I can fill a zone of 16 channels so I don’t get the horrible squawk of a vacant channel.

Some repeaters may have more than 16 available talkgroups, so you can create more than one zone, like one containing all slot 1 channels and the other with slot 2.

As you build the CPS don’t forget to do frequent saves, so that if you have to go back you haven’t got to build from scratch.

Then upload the code plug to the radio. It’s that easy.

DRM Repeater Limousin – Indicatif à suivre

Si vous voulez faire les préparations au répéteur dans votre pocket numerique à DMR, suivre les instructions ci-dessous.

Les fréquences du répéteur:
TX 430.075 MHz RX 439.475 MHz
Colour-Code 1
Donc il faut faire la programmation de votre materiel au renvers dans le CPS TX 439.475 RX 430.075.

Les slots et Talkgroups:
Slot 1 – 9,208,937,235,9990
Slot 2 – 9,2080,2088,2350,2351,2352,2355,2358,9990
Talkgroup – 9 – locale autour du relais
Talkgroup – 9990 – Echotest pour assurer le déclanchement de votre Trx.
Talkgroup – 937 – Monde Francophone
Talkgroup – 208 – France Nationale
Talkgroup – 2080 – Ile de France
Talkgroup – 2088 – Region centre – Bavarder ici.
Talkgroup – 235,2350,2351,2352,2355,2358 for visiting British Amateurs to maintain their contacts in the community DMR.

Normallement le reflecteur 4300 se soit mis en place, mais avec des manipulations de votre transceiver vous pouvez faire le changement de reflecteur, le perroquet annocera le nouveau reflecteur.
Après 15 minute, sans utilisation, le reflecteur 4300 se rédemarrera et supprimera le reflecteur choisi.

Pourquoi pas programmer les canaux DMR simplex pour les contactes plus proches.

DMR 1 à 8 sont 438.5875 à 438.675, Colourcode 1 Talkgroup 9.

Pour l’instant le répéteur est en teste chez F5VMR.
DMR soit la seule possibilité dans le futur immédiat, mais s’il ya une demande, on peux essayer événtuellement les autres modes numériques.
Chris F5VMR

DV4MINI – A Further Update

There are many so called experts that know best, but quite frankly none of the expertise has produced a solution in my case.

I have run my DV4Mini from new for nearly 18 months and until the introduction of the”Talk Alias” protocol it was working 100%. I had been running it on Ubuntu Mate 16.04.01 and DV4MF2.exe very successfully on the Raspberry PI 3 and RealVNC from an android tablet, when I began to notice drops in received audio part way through a transmission by someone else. The squelch was open but the audio was not decoded.

My DV4Mini runs on 438.650 as measured by a frequency counter without need for correction, that’s channel DMR simplex channel 6, colour 1, slot 1, TG 9. It has done so for for all its time of operation and has worked impeccably. The latest firmware was 1.66.

I initially thought the Retevis RT 3 was dead or dying, but this was not the case as the newly purchased MD 380 proved. It too could not decode the DV4mini.

I upgraded the DV4mini with 1.77, and the latest drivers and software, and upgraded to mdTools in both radios but nothing changed in what was occurring with the DV4mini, until I went to Promiscuous Mode on the radios, when all the transmissions became audible again.


Error located and dealt with as follows.

Word from the wise!

When you updated your code plug, make sure you don’t get the talkgroups wrong. 

In my case follow your own advice! I had overwritten tg9 with tg4. That’s the solution.

SVXReflector – Connections between SVXLink installations

SVXServer developed by Adi Bier DL1HRC used the existing inbuilt logic of RemoteTrx within SVXLink. RemoteTrx was designed for for exactly what it says, for feeding remote installations to a central repeater using the voting strategy in the RepeaterLogic, so whilst it worked, it was hungry on resources.

Tobias SM0SVX has revisited the concept and has completely changed how independent repeaters or another nodal systems can communicate with each other. By creating a new logic module to make the possible connection, it makes a change in the way it works. This new SvxReflectorLogic is not referenced like the other logic modules in SvxLink, but requires a complete reload of all the software in the repeaters and the server that is to be used for the connection.

In any machine that has the current installation running the following instructions need to be followed.

In the current build on the computers in use (Raspberry, Linux etc) it will first be necessary to remove the existing build folder svxlink. (sudo rm -r svxlink in a terminal window will do the trick).

Next we need to introduce the new software build. You will need to watch the on as while the build is in development, there may be changes taking place on a daily basis.

In the same terminal window type

sudo git clone –branch svxreflector –single-branch

which will create a new svxlink folder in our computer. 

We need to go to the source folder to start. So we cd svxlink/src, and then we follow the instructions from the INSTALL.adoc folder from this page – that lists exactly the commands for the compilation. Always use the sudo command before each of the lines to allow correct permissions in file creation and this command for the cmake.

      -DLOCAL_STATE_DIR=/var ..

If you have an installation already then this compilation will only create updated files and not overwrite any config files that exist already.

We will need to add a section to the etc/svxlink/svxlink.conf to permit a repeater to communicate to the server also installed and compiled with the same software, and we will also need to modify its /etc/svxlink/svxreflector.conf to permit the communicate with the other nodes in the network.

So first we edit this in sudo nano /etc/svxlink/svxlink.conf and add this:



AUTH_KEY="The password"


In the server sudo nano /etc/svxlink/svxreflector.conf

AUTH_KEY=”Change this key now!”

is what you will see. You need to syncronise the passwords in the server and the repeaters.

We will all find the problems together at this point.

The one problem discovered was that compiling a new installation over an existing one fails to write the new library files over the old in the make install.

The solution is simple.

sudo cp -r -i svxlink/src/build/lib/* /usr/lib/arm-linux-gnueabhif (on the raspberry pi) 

sudo cp -r -i svxlink/src/build/lib/* /usr/lib/i386-linux-gnu (on the pc server)
F5ZGM-R and F5ZJE can communicate with each other.

DV4MF2 and the Raspberry PI3 -an update.

A while ago I published my efforts towards a solution for driving the DV4mini from a Raspberry PI 3.

The only problems I encountered was that there appears to be an inconsistency with Ubuntu MATE and Mono complete in its arm7 configuration and updating it on the go. So it was a with a heavy heart I ripped it out to start again. 

This time i decided to go for Ubuntu Mate 16.04.2, and fully updated it and upgraded it before introducing mono into the equation.

Another problem is that some of the original software for the DV4mini has disappeared, but sagely I maintain a terabyte back up drive with all the previously available software.

My first actions however were to ensure that x11vnc is correctly installed and is available from restart every time. I created a folder in my /home/username directory, and loaded the necessary files there. They are DV4MF2.exe, xref.ip, dv_serial and the image files, and a bash script to run the app.

So far I have been unable to launch the script from an icon on the desktop or the menus, but 100% via the script from a terminal window. I ‘cd’ to my folder and ‘sudo bash’ not forgetting to ‘sudo chmod +x’ before setting it to run.


sudo pkill mono

sudo pkill dv_serial

sudo mono DV4MF2.exe

So far the system has been running continuously for 48 hours.

It runs on a 5v power pack, which is on constant charge itself.

Still running ver. 1.66 on the DV4MINI and on the RT3. Very few failures and error rate in very low single figures. 0% Correction and on frequency since January 2016.


A new installation of SVXlink – the Do It Yourself method. Part 3 of 3

What I would term the “nitty-gritty”:


Without correct setting of the .conf files we won’t go far, but they are always user specific, so we have to play with them until we get the node how we want it, but then we always want more!

We have some deeper parameters to play with but first we will look at /etc/svxlink/svxlink.d/ModuleMetarInfo.conf.

Since there has been changes at NOAA, it was necessary to may a change in the compilation of this module to take into account a new source of the Airport Metar Data. This meant a bit of debian knowledge to incorporate this change. we can look at for the solution although the changes have already been incorporated if we have just installed SVXLink from the github. The .conf file just needs to have the local airport codes installed and suitable voice samples created for the airport. the voice samples need to be resident in /usr/share/svxlink/sounds/language/MetarInfo to be incorporated in the playback.

Logic Files:

These are located in /usr/share/svxlink/events.d, but before we can work on them we must cd to this directory then sudo mkdir local then sudo cp * local so that all the files are copied into the new directory. now we cd local to enter this directory. We type ls to view what’s here.

CW.tcl, Logic.tcl, and RepeaterLogic.tcl are the files that we need to look at.

CW.tcl needs an extra line so we can send VA when closing down the link or repeater. So let’s sudo nano CW.tcl and scroll down the file. We can see the CW translation table that we can create a new line near the bottom. so we type a new line and “_” “…-.-“ making use of the underscore character and the morse for VA. ctrl-o and cntl-x to exit.

Now we need to make use of this change. So we sudo nano RepeaterLogic.tcl and scroll down to proc repeater_down.  Just below set now [clock seconds]; are two lines that begin playTone. We place # in front of both of these commands to suppress the “bi-boop” we would hear on close down,  and place a new line:

CW::play ”  _”;

This now creates the VA after a short delay on close down.

We can change the roger_beep in the same way by sudo nano Logic.tcl. and find proc send_rgr_sound. There are two lines playTone here, the first for the on_air tone and the second for the internet linking tone. we can place # in front of either of both these lines. We create a new line after the first and type CW::play ”  K”; and CW::play ”  I”; after the second. This then gives a “K” tone on the air and a “bibip” for internet originated transmissions.

We must be careful not to mess with these files too much, but if there is an issue with time, then we can shorten the times on the playSilence commands.

If we are going to use two RepeaterLogics and use two repeaters in the same package, we can copy RepeaterLogic.tcl to an new RepeaterLogic2.tcl, but we must remember to change the name inside the file too in the top section.

Voice Samples

We can create new voices by using Dimio Free Speech, and any TTS installed voices. Most of the voice samples in En_US_Heather have text files inside to give a clear as to what is required. We save the .avi file but we cannot use it straight away, so we load it into Audacity to trim the blank spaces.Then highlight the remaining sample and “export” it to get the required format. I did this over 460 times to make the French samples, tedious but necessary.

More to follow as I read through the what’s published.

A new installation of SVXlink – the Do It Yourself method. Part 2 of 3

In part one, we installed Raspbian Jessie on an SD Card to install on a Raspbery PI. Because of the easy availability of these, let’s say it was a Raspberry PI 2. We carried out the necessary updates and upgrades, and installed the software SVXlink ready to commission into use for a Repeater Logic or Simplex Node, primarily for EchoLink but not necessarily so. We have the possibility of a Parrot repeater (one that repeats the last received transmission received by the node), a MetarInformation Node, A Mail Server for users of the Node, and a Propagation monitor.

Let’s log back in as user pi with the default password raspberry. Note for the purists here we are NOT using root here. We use sudo to carry out our root commands.


This is dependant on where you are, but the present en_US Heather is available via the website. I have the french language version that I can make available with over 460 samples in the repetoire, and can offer assistance on creating more if needed.

To download anything from a webpage, Raspbian has the following instruction with the example of introducing the voices below.

cd /usr/share/svxlink/sounds

sudo wget http://

sudo tar -xzvf svxlink-sounds-en_US-heather-16k-13.12.tar.bz2 

This creates a folder in which lie the default folders for all the sounds for svxlink. when unzipped, we can sudo rm svxlink-sounds-en_US-heather-16k-13.12.tar.bz2 which removes this folder completely.

To go back one directory we can type cd .. or we can go back to our home directory by typing simply cd just like that.

GPIO Configuration

Whatever we decide to do with this installation, it will need an interface. There are so many different methods but we will concentrate on the most useful, that of using the General Purpose Input Output or GPIO. We will address two pins of the GPIO strip on the Raspberry so that one becomes a PTT driver, and the other becomes a squelch or COS/COR detector. We must remember that the GPIO is restrictive in that 3V is the maximum voltage, so we must buffer these suitably to drive our devices. However to enable the GPIO we have to set up a script in order to do so. We will use the on-board text editor to do this.

We type sudo nano /etc/rc.local where we modify a hidden file rc.local in the home directory /etc.


#!/bin/sh -e
# rc.local
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will “exit 0” on success or any other
# value on error.
# In order to enable or disable this script just change the execution
# bits.
# By default this script does nothing.

# Print the IP address
_IP=$(hostname -I) || true
if [ “$_IP” ]; then
printf “My IP address is %s\n” “$_IP”

# GPIO 17 as PTT to TX2
echo 17 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio17/direction
sudo chmod 777 /sys/class/gpio/gpio17/value
# GPIO 18 as Squelch to RX2
echo 18 > /sys/class/gpio/export
echo in > /sys/class/gpio/gpio18/direction
sudo chmod 777 /sys/class/gpio/gpio18/value

#GPIO 24 as PTT to TX1
echo 24 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio24/direction
sudo chmod 777 /sys/class/gpio/gpio24/value
# GPIO 23 as Squelch to RX1
echo 23 > /sys/class/gpio/export
echo in > /sys/class/gpio/gpio23/direction
sudo chmod 777 /sys/class/gpio/gpio23/value

#end of GPIO
#Remove # at start of next line for permanent reboot on power loss.
#sudo svxlink –daemon –logfile=/var/log/svxlink.log
exit 0

This is a “Bash” script and needs a little explanation. Firstly #!/bin/bash at the beginning of the file designates it as a script. We will ignore the rest and start at the GPIO section.

This script has been written for driving two transceiver pairs with the same logic, thus giving the possibility of a UHF and VHF repeater working in double-duplex. The # character is a comment line (except for the first line). However we shall concentrate on GPIO 23 and 24, with GPIO 23 as the COS squelch and GPIO 24 as the PTT driver. “echo” simple writes a value to a variable and stores it, and sudo chmod 777 gives the program full permission to use it. This file is a script so has to be enabled as executable, so in nano we ctrl-o to save, then ctrl-x to exit nano, then sudo chmod +x /etc/rc.local for this to occur.

The line second for bottom needs editing later to remove the # to provide the svxlink service, but we leave it for now until it is fully tested.

Sound Configuration

I use a plug in USB sound card, as they are cheap and convenient, and they can be used for two sets of transceivers at the same time, by using the left and right channels. The first thing that has to be done is to turn off or blacklist the internal sound port on the Raspberry. So we create a file as follows: sudo nano /etc/modprobe.d/alsa-blacklist.conf and in the editor type the line “blacklist snd_bcm2835” (without the quotes) and ctrl-o to save the file and ctrl-x to exit the editor. now type sudo reboot. When the Raspberry returns we log back in and type sudo alsamixer. We now have a graphical representation of the sound controller and hopefully the USB Sound card listed in the header. Ideally we need to type ctrl-f5 to open all options. We should set the speaker audio around 55-60 by using the keyboard arrow keys. The next box (Mic) should be set at zero, and the next box (also Mic but Capture) set low to begin with, and Auto Gain Off. Now we type escape to exit the controller and the following command sudo alsactl store to lock these settings against change in the event of a restart.

Further changes to levels may need to be accomplished in the interface.


This file will be the main set up file for our node either as simplex or a repeater. For full details look at but here is the file from F5ZGM-R. This .conf file is found in /etc/svxlink/ and needs to be present.

# #
# Configuration file for the SvxLink server #
# #

LINKS=LinkToServer We have a link via a dummy sound card to the 6 metre repeater

[NetLogic] The logic that connects to the 6 Metre repeater
CALLSIGN=NONE we need no ident on this link
RGR_SOUND_DELAY=-1 nor any roger beep
DEFAULT_LANG=fr_FR Default language (french)
OPEN_SQL_FLANK=OPEN Opens for voice immediately
NO_REPEAT=1 We don’t need to repeat the audio here

[RepeaterLogic] The logic for the VHF Repeater, The alternative would be [SimplexLogic]
RX=Voter We are using two receivers, one local and one on the network 45 kms away.
TX=MultiTx We TX 130 watts on the main Tx1 and TX simultaneously to a stream
MODULES=ModuleHelp,ModuleMetarInfo,ModuleEchoLink,ModulePropagationMonitor only modules we need are listed here.
SHORT_IDENT_INTERVAL=15 1/4 past and 1/4 to the hour
LONG_IDENT_INTERVAL=30 on the hour and half hour
RGR_SOUND_DELAY=1 Beep is enabled in our case rewritten to “K”
REPORT_CTCSS=88.5 CTCSS included in the announcement
#TX_CTCSS=NONE The motorola GM350 transmits this so we don’t need it
MACROS=Macros points to our interpreted codes below
FX_GAIN_NORMAL=-3 Volume of the announcements
FX_GAIN_LOW=-15 reduced volume of the announcements when someone is talking
#QSO_RECORDER=8:QsoRecorder We don’t want to do this
IDLE_TIMEOUT=22 Period of repeater hanging after last received call.
#OPEN_ON_1750=400 we can enable this if we need
OPEN_ON_CTCSS=88:800 800 milliseconds of 88.5 and the repeater latches open
OPEN_SQL_FLANK=OPEN so we can talk straight away and be heard
IDLE_SOUND_INTERVAL=5000 Boing Boing Boing on the channel when not occupied
SQL_FLAP_SUP_MIN_TIME=500 Squelch interference trap
SQL_FLAP_SUP_MAX_COUNT=6 Counts the occurences of interference then shuts off
ONLINE_CMD=###### We have an engineering code to shut down the logic by DTMF
[LinkToServer] This connects to the 6 Metre repeater #900 is off #901 is on

[Macros] The macros for EchoLink with the repeater open DTMF D02# for example will open the first on the list F1ZFS-R instead of opening the EchoLink module by 2# then DTMF 284183# – Just a short cut
# Relais St Gobain F1ZFS-R
# Reseau FRN
# Reseau FON
# F6KCI Tours
# F5KIA-R Montargis

# Relais de Lille F1ZTK-R
# F5NTS-L Cambrai
# F1VJT 29 MHz
#Hubnet UK Allstar

[QsoRecorder]Not enabled on F5ZGM-R
#ENCODER_CMD=/usr/bin/oggenc -Q \”%f\” && rm \”%f\”

[Voter] This is the voting component between the The main receiver Rx1 and the distant receiver Net1Trx. The repeater constantly votes which is providing the best signal, ideal for black spots provided there is a network link.

[MultiTx] Main transmitter Tx1, Internet Stream TxStream

AUDIO_DEV=alsa:hw:Loopback,0,2 Dummy sound card

[Net1Trx] Receiving point for the remote receiver which has its own version of svxlink (remotetrx)

[Net1Tx]The link to the server that sends the received 145 Mhz to the 6 metre transmitter

[Net1Rx]The link from the server that brings the audio from the 6 metre receiver and mixes it to the 145 Mhz transmission.


[Rx1] The Main receiver
SQL_TAIL_ELIM=370 Reduces the kerchunk from users transmissions
PEAK_METER=0 Make this =1 to watch the input audio, so you can turn it down on the interface if the software complains
DTMF_MUTING=1 We don’t wont to rebroadcast the tones
1750_MUTING=1 We don’t want to rebroadcast the blippers either


[Tx1] The master transmitter
TIMEOUT=0 No we don’t want a timeout

[LocationInfo] APRS information


This file is found in /etc/svxlink/svxlink.d/ and needs information to run EchoLink succesfully. If we need more information we can look at this page at

[ModuleEchoLink] Our Module at F5ZGM-R
TIMEOUT=400 Timeout is 400 seconds for inactive connections Maybe an illegal line see below
REJECT_CONF=1 We do not allow conference rooms
SYSOPNAME=[Svx]Relais 145&51 MHz 87
LINK_IDLE_TIMEOUT=400 Not sure this isn’t a duplicate of TIMEOUT above
#AUTOCON_ECHOLINK_ID=282229 We can have a permanent connection here
DESCRIPTION=”Vous avez connecté au Répeteur avec SVXLink\n” Hates accented letters
“une service au Linux avec support à l’ECHOLINK\n”
“System disponible – F5ZGM Relais Limousin \n”
“Visitez pour plus d’info.\n”
“QTH: Peyrat le Chateau (87) JN05VS\n”
“QRG: 145.650 MHz\n”
“CTCSS: CTCSS 88.5 Hz\n”
“Trx: Motorola Repeater\n”
“Antenna: Coliniaire\n”