Back to Resources

Create Your Own P25 to DMR Bridge

This guide will help you set up a P25 to DMR bridge using readily available software and tools. Follow the steps below, and use the code snippets provided to ease the process.

Step 1: Gather Your Materials

Step 2: Download the Raspberry Pi OS

Visit the official Raspberry Pi website and download the latest version of Raspberry Pi OS.

Step 3: Flash the OS to the MicroSD Card

Use a tool like Balena Etcher to flash the Raspberry Pi OS image to your MicroSD card.

Step 4: Set Up the Raspberry Pi

Insert the MicroSD card into the Raspberry Pi, connect it to a monitor, and power it on. Complete the on-screen setup process, which includes connecting to WiFi and updating the software.

FAQ

Q: How do I connect to WiFi?

A: During the setup process, you'll be prompted to select your WiFi network and enter the password.

Q: What if I encounter a problem?

A: You can find troubleshooting tips and solutions on the Raspberry Pi forums.

Step 1: Download Debian 11/12 Image

Download the appropriate Debian image for your Raspberry Pi from the official Debian website.

Step 2: Prepare the MicroSD Card

Once you've downloaded the Debian image, write it to a MicroSD card using Balena Etcher.

Step 3: Boot and Setup Debian

Insert the MicroSD card into the Raspberry Pi, connect it to a monitor and peripherals, and power it on. Complete the setup process on-screen.

Step 4: Basic Configuration

FAQ

Q: How do I install additional software?

A: Use the Debian package manager with sudo apt-get install [package_name] to install new software.

Q: Can I use a desktop environment?

A: Yes, you can install a desktop environment using sudo apt-get install [desktop_environment], such as XFCE or GNOME.

Configuring Operating System

In this tutorial we are using Debian 11, running on a Raspberry Pi4.

# Default login for Debian images

login: root
password: <none>

# Activate WiFi

nano /etc/network/interfaces.d/wlan0

# Reboot the System

reboot -h now

# Update and Upgrade the System

apt update && apt upgrade -y

# Add a User

adduser <username>

# Change the Password

passwd

# Switch to Root

su - root

# Install Sudo and Other Tools

apt install sudo
sudo usermod -aG sudo <username>

# Update Again

sudo apt update && sudo apt upgrade -y

# Install Networking Tools

sudo apt-get install build-essential git net-tools wget -y

# Add p25reflector User

sudo adduser p25reflector

# Grant the New User Sudo Privileges

sudo usermod -aG sudo p25reflector

# Switch to the New p25reflector User

su - p25reflector

# Create Downloads Directory

mkdir Downloads

# Change to Downloads Directory.

cd Downloads

# Clone P25Clients

sudo git clone https://github.com/g4klx/P25Clients.git

# Change Into P25Clients.

cd P25Clients

# Clone DVReflectors while in P25Clients

sudo git clone https://github.com/g4klx/P25Clients.git

# Change into DVReflectors

cd DVReflectors

# Copy the P25Reflector.ini File from /opt to /etc

sudo cp P25Reflector.ini /etc

# Change into the /etc Directory

cd /etc

# Edit the P25Reflector.ini File with Nano

sudo nano P25Reflector.ini

# Change Daemon=1 to Daemon=0 in the P25Reflector.ini File


# Save and Close by Pressing CTRL + O then CTRL + X

Build The P25Gateway

# Switch to the p25reflector User

su - p25reflector

# Change into the P25Gateway Directory

cd Downloads/P25Clients/P25Gateway

# Copy P25Hosts.txt to /etc

sudo cp P25Hosts.txt /etc

# Copy P25Gateway.ini to /etc

sudo cp P25Gateway.ini /etc

# Compile Files

sudo make

# Copy P25Gateway to /opt

sudo cp P25Gateway /opt/P25Gateway

Installing DVSwitch

# Change to /tmp Directory

cd /tmp

# Download DVSwitch

sudo wget http://dvswitch.org/buster

# Make the file executable

sudo chmod +x buster

# Execute the script

sudo ./buster

# Update your system

sudo apt-get update

# Install the DVSwitch Server

sudo apt-get install dvswitch-server -y

Editing P25Gateway

# Edit P25Gateway.ini

sudo nano /etc/P25Gateway.ini

This is what your P25Gateway.ini file will look like:

[General]
Callsign=YOURCALLSIGN
RptAddress=127.0.0.1
RptPort=32010
LocalPort=42020
Debug=0
Daemon=0

[Id Lookup]
Name=DMRIds.dat
Time=24

[Voice]
Enabled=1
Language=en_US
Directory=./Audio

[Log]
DisplayLevel=1
FileLevel=1
FilePath=/var/log/P25Gateway/
FileRoot=P25Gateway
FileRotate=1

[Network]
Port=42010
HostsFile1=/etc/P25Hosts.txt
ReloadTime=60
ParrotAddress=127.0.0.1
ParrotPort=42011
P252DMRAddress=127.0.0.1
P252DMRPort=42012
Static=YOUR_P25_TG
RFHangTime=120
NetHangTime=60
Debug=0

[Remote Commands]
Enable=0
Port=6074

Editing Analog_Bridge_P25 and Analog_Bridge_DMR

# Edit Analog_Bridge_P25.ini

sudo nano /etc/Analog_Bridge_P25.ini

This is what your Analog_Bridge_P25.ini and Analog_Bridge_DMR.ini files will look like:

[AMBE_AUDIO]
address=127.0.0.1
txPort=34103
rxPort=34100
ambeMode=P25
gatewayDmrId=YOUR_DMR_ID
repeaterID=YOUR_DMR_ID + 2 Digits
txTg=YOUR_P25_TG
txTs=2
colorCode=1

[USRP]
address=127.0.0.1
txPort=34001
rxPort=32001



[AMBE_AUDIO]
address=127.0.0.1
txPort=31103
rxPort=31100
ambeMode=DMR
gatewayDmrId=YOUR_DMR_ID
repeaterID=YOUR_DMR_ID + 2 Digits
txTg=YOUR_DMR_TG
txTs=2
colorCode=1

[USRP]
address=127.0.0.1
txPort=32001
rxPort=34001

Editing MMDVM_Bridge.ini

# Edit MMDVM_Bridge.ini

sudo nano /etc/MMDVM_Bridge.ini

This is what your MMDVM_Bridge.ini will look like:

[General]
Callsign=YOURCALLSIGN
Id=YOUR_DMR_ID + 2 Digits
Timeout=180
Duplex=0

[DMR]
Enable=0 #Change to 1
ColorCode=1
EmbeddedLCOnly=1
DumpTAData=0

[P25]
Enable=0 #Change to 1
NAC=293

[DMR Network]
Enable=0 #Change to 1
Address=BRANDMEISTER_SERVER
Port=62031
Password=YOUR_PASSWORD

[P25 Network]
Enable=0 #Change to 1
GatewayAddress=127.0.0.1
GatewayPort=42020
LocalPort=32010

Running the DMR to P25 Bridge

# Start the Components, run each command in a new window for testing

cd /usr/local/bin/ && ./P25Reflector.sh start /etc/P25Gateway.ini
cd /opt/P25Gateway && ./P25Gateway /etc/P25Gateway.ini
cd /opt/Analog_Bridge && ./Analog_Bridge_DMR /etc/Analog_Bridge_DMR.ini
cd /opt/Analog_Bridge && ./Analog_Bridge_P25 /etc/Analog_Bridge_P25.ini
sudo systemctl stop mmdvm_bridge.service && cd /opt/MMDVM_Bridge && ./MMDVM_Bridge /etc/MMDVM_Bridge.ini