This tool allows Zello Free or Zello Work channels to be connected to USRP, enabling bridging of amateur radio networks to the Zello network.
Tested with:
- Allstarlink
chan_usrp
- DVSwitch
Analog_Bridge
- MMDVM_CM
USRP2DMR
andUSRP2YSF
- SvxLink via a third-party USRP module
The original inspiration for this project was the work done by Rob G4ZWH to build a public Zello bridge to the FreeSTAR network using SIP softphones and the Zello Windows client. This was extremely well received by users of the network, however it was not an ideal solution and had some shortcomings. Matt G4IYT later rebuilt the bridge as a dedicated service based on the Zello Channels API.
Current users of the bridge include
The bridge does not require a lot of resources. The FreeSTAR bridge runs on a small VPS with 1 VCPU and 1GB RAM, and runs well on AMD64 and ARM platforms.
These instructions were tested with Debian 12, and may need adaptation for other systems. There are 2 installation methods:
pip
+venv
: A modern method to install Python, ensures isolated environment that will not interfere with system packagessetup.py
: An older method used with early versions of the bridge, can break your system if not wielded carefully.
Please note that the setup.py
method is deprecated in favor of pip
+ venv
. Multiple users have reported issues with setup.py
on Debian 12 and Ubuntu 24. If you originally installed your bridge with setup.py
, we recommend that you upgrade, however for now things will still work.
apt-get install libogg-dev libopusenc-dev libflac-dev libopusfile-dev libopus-dev libvorbis-dev libopus0
apt-get install python3-venv python3-pip
mkdir -p /opt/asl-zello-bridge/venv
python3 -m venv /opt/asl-zello-bridge/venv
Current version of pyogg available through pip is not up to date, so install from git.
git clone https://github.com/TeamPyOgg/PyOgg.git
cd PyOgg
/opt/asl-zello-bridge/venv/bin/python setup.py install
git clone https://github.com/mattmelling/asl-zello-bridge.git
cd asl-zello-bridge
/opt/asl-zello-bridge/venv/bin/pip3 install .
git clone https://github.com/TeamPyOgg/PyOgg.git
cd PyOgg
sudo python setup.py install
Some early installations of the bridge used setup.py
, this has now been replaced with pip.
git clone https://github.com/mattmelling/asl-zello-bridge.git
cd asl-zello-bridge
sudo python3 setup.py install
Now asl_zello_bridge
should be on your $PATH
.
Please note: if you installed with setup.py
you will need to modify the asl-zello-bridge.service
to point to where the script is installed.
sudo cp asl-zello-bridge.service /etc/systemd/system/
sudo systemctl edit asl-zello-bridge.service
Update environment variables by setting this in the editor that pops up:
[Service]
# Bind host for USRP RX
Environment=USRP_BIND=
# Destination host for USRP TX
Environment=USRP_HOST=
# Port we receive USRP stream on
Environment=USRP_RXPORT=
# Port we transmit USRP stream on
Environment=USRP_TXPORT=
Environment=ZELLO_USERNAME=
Environment=ZELLO_PASSWORD=
Environment=ZELLO_CHANNEL=
# Change this for different Zello flavor, see below
Environment=ZELLO_WS_ENDPOINT=wss://zello.io/ws
For Zello Free accounts, also set the following:
ZELLO_PRIVATE_KEY
should be a path to your PKCS#8 format private key, from the Zello Developers Console.ZELLO_ISSUER
should be set to the issuer, also from the Zello Developers Console.
For Zello Work accounts, set the following additional configuration:
ZELLO_API_ENDPOINT
should be set to your Zello network, e.g.https://mynetwork.zellowork.com
ZELLO_WS_ENDPOINT
should be your network's websocket endpoint, e.g.ws://zellowork.io/ws/mynetwork
These extra environment variables are entirely optional, shown with their defaults
# Specify format for log messages, see https://docs.python.org/3/library/logging.html#logrecord-attributes
LOG_FORMAT="%(levelname)s:%(name)s:%(message)s"
# Gain applied at USRP interface in dB, defaults to 0dB
Environment=USRP_GAIN_RX_DB=0
# TX = USRP stream output to ASL, RX = USRP stream from ASL
Environment=USRP_GAIN_TX_DB=0
Finally, enable the service
sudo systemctl enable asl-zello-bridge.service
sudo systemctl start asl-zello-bridge.service
Set up a USRP channel in ASL:
rpt.conf:
[1001]
rxchannel = USRP/127.0.0.1:7070:7071
asl-zello-bridge
is built and maintained by Matt G4IYT
Special thanks to:
- Rob G4ZWH for inspiration with the original "janky" bridge, hosting the FreeSTAR bridge, and continued support
- Shane M0VUB for his continued support on behalf of the FreeSTAR network
- Lee M0LLC for early adoption and testing with the CumbriaCQ network
- Piotr G0TWP for testing with SvxLink and unearthing some tricky bugs