Zello feed from a Raspberry Pi

DC31

Member
Feed Provider
Joined
Feb 19, 2011
Messages
1,250
Location
Massachusetts
I set up a Zello channel about six months ago using an older Windows laptop and found that it worked well. However, I am a Pi tinkerer and kept searching for a means to set up a Zello feed from a pi. Zello does not support Linux software, thus the disconnect. I tried using an Android phone as the feed source but found reliability to be lacking:

I then found that the raspberry pi can run the AndroidOS and loaded emteria (emteria.com) on a pi3. Once this was running, the Zello Android app was loaded. The audio was recognized as soon as the usb sound card was plugged in. Set up VOX and the feed was on-line. The free Evaluation Version of emteria reboots every 8 hours. Licenses are available at about $20 per device. Not too bad if you want to run one feed but adds up if you want several.

Further research found a couple free pi-compatible Android OS’s. These are not as well-developed or documented as emteria. I tried two of them and was successful using one called LineageOS to set up the Zello app on my pi3. It has been streaming for 24 hours now.

Briefly, how it goes:

1. Download v16 to your computer. LineageOS 16.0 (Android 9)
2. Unzip the download and flash to an SD card (instructions are in the above link).
3. Insert the card into the pi3, connect keyboard/mouse/hdmi monitor, then power it up. The first time starting may take a few minutes (5).
4. Once loaded, finish the configuration (time zone, wifi, etc.)
5. I had issues with the display running off the edges of the monitor, making it difficult to check options. After much fooling around, i discovered that it was a TV display setting rather than a pi setting that corrected this.
6. Read the FAQ section on the LineageOS page linked above.
7. From your computer, go to Zello for Android - Zello and download the Zello.apk. Save it to a usb stick. (If you are good with Android, you might be able to do this from the pi)
8. Put the usb stick into the pi. Go to the Files or Downloads app and find the drive just inserted. Navigate to zello.apk and double click to install.
9. Remove that stick and insert your usb sound card.
9. Open the app and sign in to your Zello account.
10. Connect to your chosen Zello channel.
11. Click the Settings button upper right then choose Options/Buttons/VOX button. Check both boxes, Show and Keep. Set Sensitivity high and Tailor low. You will want to adjust these as desired later.
12. The VOX button should now be on your main Zello screen lower left. Click this to start voice activation.
13. Adjust volume levels/sensitivity etc. to levels that work.
14. Go through the Zello options and also the Developer Options (lineage) to pick the ones that you may need for your setup. Things like autostart Zello, automatically connect to wifi, don’t sleep, etc.

One advantage that I found to the emteriaOS was the ability to enable VNC allowing remote access. I haven’t yet figured out if this is possible with lineageOS. Maybe something like install the teamviewer app?

Give it a try and good luck!
 

dlnorth

Member
Joined
Apr 24, 2004
Messages
95
What did you not like about using an Android phone? I'm experimenting with that now and it seems to be working fine with an old HTC 10 running Android 6 connected to a Motorola Minitor V amplified charger or a 996 XT. I did have to mess with the VOX settings a bit to keep the 1st part of each transmission from being cut off, but once I got that issue resolved, it's been working fine.
 

DC31

Member
Feed Provider
Joined
Feb 19, 2011
Messages
1,250
Location
Massachusetts
The phone that I was using was acting flaky. When left plugged into power constantly it would give some overheating message. And the zello feed would drop out for no apparent reason occasionally. It could be that it was the cheap, no-brand phone that I was using.

My zello feed is now from a raspberry pi running the LineageOS version of Android. That has been fairly stable but still occasionally has the VOX quit. The pi and the Zello app keep running. All I do to fix it is to click on the VOX button. Sometimes it goes a day, sometimes a week before this happens.
 

DC31

Member
Feed Provider
Joined
Feb 19, 2011
Messages
1,250
Location
Massachusetts
I agree. I am not the one...

I gave up on LineageOS. Never got the VOX to be stable. I sprung ($) for Emteria OS and so far that has performed solidly.
 

wgbecks

Member
Joined
Jan 17, 2005
Messages
208
Location
Porterfield, Wisconsin
Do you specifically require the PTT functionality of Zello or are you using their service to operate a private stream from scanner?
If the latter is the case then you can use a Raspberry Pi as a complete standalone streaming server using Liquidsoap with Icecast2
running. Audio source can be op25 or from an external audio source using an inexpensive USB sound device.

I regularly use this configuration to listen to my own private feeds using op25, liquidsoap, and icecast all running on a RPi that I can access from anywhere on the Internet with a phone, tablet, or a PC.
 

DC31

Member
Feed Provider
Joined
Feb 19, 2011
Messages
1,250
Location
Massachusetts
There are two reasons that I am using Zello:

1. The audio latency is in milliseconds rather than minutes.

2. Only active transmissions are streamed. (this is where the VOX figures in) Other conventional streams stream continuously resulting in much greater data usage and power drain on mobile devices.
 

kb9mwr

Member
Joined
Apr 8, 2003
Messages
167
Location
Green Bay, WI
There is always freelancer.com, otherwise I am not sure where one posts to try and find a proficient coder for such a project. If you find someone, perhaps I'd throw a few bucks at it too. I have possible private use cases as well.
 

dlnorth

Member
Joined
Apr 24, 2004
Messages
95
I set up a Zello channel about six months ago using an older Windows laptop and found that it worked well. However, I am a Pi tinkerer and kept searching for a means to set up a Zello feed from a pi. Zello does not support Linux software, thus the disconnect. I tried using an Android phone as the feed source but found reliability to be lacking:

I then found that the raspberry pi can run the AndroidOS and loaded emteria (emteria.com) on a pi3. Once this was running, the Zello Android app was loaded. The audio was recognized as soon as the usb sound card was plugged in. Set up VOX and the feed was on-line. The free Evaluation Version of emteria reboots every 8 hours. Licenses are available at about $20 per device. Not too bad if you want to run one feed but adds up if you want several.

Further research found a couple free pi-compatible Android OS’s. These are not as well-developed or documented as emteria. I tried two of them and was successful using one called LineageOS to set up the Zello app on my pi3. It has been streaming for 24 hours now.

Briefly, how it goes:

1. Download v16 to your computer. LineageOS 16.0 (Android 9)
2. Unzip the download and flash to an SD card (instructions are in the above link).
3. Insert the card into the pi3, connect keyboard/mouse/hdmi monitor, then power it up. The first time starting may take a few minutes (5).
4. Once loaded, finish the configuration (time zone, wifi, etc.)
5. I had issues with the display running off the edges of the monitor, making it difficult to check options. After much fooling around, i discovered that it was a TV display setting rather than a pi setting that corrected this.
6. Read the FAQ section on the LineageOS page linked above.
7. From your computer, go to Zello for Android - Zello and download the Zello.apk. Save it to a usb stick. (If you are good with Android, you might be able to do this from the pi)
8. Put the usb stick into the pi. Go to the Files or Downloads app and find the drive just inserted. Navigate to zello.apk and double click to install.
9. Remove that stick and insert your usb sound card.
9. Open the app and sign in to your Zello account.
10. Connect to your chosen Zello channel.
11. Click the Settings button upper right then choose Options/Buttons/VOX button. Check both boxes, Show and Keep. Set Sensitivity high and Tailor low. You will want to adjust these as desired later.
12. The VOX button should now be on your main Zello screen lower left. Click this to start voice activation.
13. Adjust volume levels/sensitivity etc. to levels that work.
14. Go through the Zello options and also the Developer Options (lineage) to pick the ones that you may need for your setup. Things like autostart Zello, automatically connect to wifi, don’t sleep, etc.

One advantage that I found to the emteriaOS was the ability to enable VNC allowing remote access. I haven’t yet figured out if this is possible with lineageOS. Maybe something like install the teamviewer app?

Give it a try and good luck!

I tried emteriaOS yesterday and it was a disaster. Initially, I couldn't see anything on the screen after the initial boot process. Swapped out monitors...same thing. I then set the OS resolution to the native resolution of the monitor, tried it again and got it to boot. However, once I got the OS loaded, everything started crashing. I couldn't open any app without it crashing. I got the apk for Zello onto a USB stick and tried to install that and that install process also crashed. I was using a Sandisk 64 GB class 10 card. I'm going to give it another shot with a different microSD card before totally giving up on this.

Thanks for the update on LineageOS. I was going to try that next until I saw your results.
 

DC31

Member
Feed Provider
Joined
Feb 19, 2011
Messages
1,250
Location
Massachusetts
You are using a pi3B? That is what Emteria says their OS runs on. I find it rather clunky also but have attributed that to having never owned an Android phone. I gave also had the occasional crash. Never figured out what caused that. However, the pi3B currently running Zello on the licensed Emteria has proven to be stable.

You aren’t experiencing power problems? Any blinking of the red power LED on the pi is bad news.

As an experiment yesterday and today, I set up another pi3b with the free trial Emteria. On this one, I set up SDRtouch app (sdrtouch.com) with an sdr dongle. For some reason I struggle awfully with those little things. I couldn’t get sound out of the on-board jack but was successful in getting it out of a usb sound card. Taking things a step at a time, I next installed the Zello app on this same pi. On the usb sound card, I have run an audio cable from the output to the input jack and now the Zello app is hearing it. This is only in the last couple hours so still hasn’t seen much of a test. My hope is to have a single pi that receives radio via the sdr and broadcasts it thru Zello. Good activities while practicing social distancing.
 

dlnorth

Member
Joined
Apr 24, 2004
Messages
95
Correct on Pi3 B and no detectable power issues.

I also have a Pi 3 B+ that I haven't taken out of the box yet. I may try it on that next time and see if I have better results.
 

unmaintained

Member
Joined
Apr 30, 2020
Messages
7
Should someone still be interested in building an embedded Pi-Zello project without relying on Android:
I'm writing a Zello app for a SailfishOS mobile phone which has basically the same processor as the Pi.
In fact the underlying engine (minus the GUI) should be able to easily work on any Raspberry Pi running a compatible OS (e.g. Raspbian).
 

aaknitt

Member
Feed Provider
Joined
Aug 27, 2005
Messages
1,208
Should someone still be interested in building an embedded Pi-Zello project without relying on Android:
I'm writing a Zello app for a SailfishOS mobile phone which has basically the same processor as the Pi.
In fact the underlying engine (minus the GUI) should be able to easily work on any Raspberry Pi running a compatible OS (e.g. Raspbian).
How are you handling their authentication requirements outside of a development environment? I've been able to stream to Zello from a Pi using a development credential but those are only good for 30 days and then you have to get a new one. Not a great solution for most people. Production credentials require that you run your own server to create credentials for your apps that are out in the wild. That's fine for a company but not sure how to address that for these types of situations where there's no central "owner" of the system/application....everyone has their own.

Andy
 

unmaintained

Member
Joined
Apr 30, 2020
Messages
7
How are you handling their authentication requirements outside of a development environment?
When you register with Zello you get your development token plus a private key and "issuer" string which you can use to generate a production token.
I've played around with it and the longest I could make the token to be valid is for max. about 460 seconds so you have to basically generate it every time you're trying to log in. Zello are discouraging people from putting their private keys inside any app which is available to the public so what I endet up doing was an online token generator on my web page the app is contacting when it needs a new token.
But I also have an token generator which should work on the Pi so when you're just building a gateway/repeater of some sort for yourself you should be fine to just save the private key on the Raspberry and generate the token locally I guess.
 

unmaintained

Member
Joined
Apr 30, 2020
Messages
7
There are some API limitations, though. You can monitor only one channel at a time, no password protected channels are currently supported and you can't create any new account or channel. But you can use accounts and channels previously created, of course.
Also, in theory, just could create one instance of the program with a dedicated username + password for every channel if you have to transmit to or receive from multiple channels at once.
 

unmaintained

Member
Joined
Apr 30, 2020
Messages
7
Please feel free to contact me on twitter for details, should it take too long for me to answer here.
You can search for NRad on twitter which should lead to the app and to my account.
The RPM package NRad | OpenRepos.net — Community Repository System contains a nrad binary (/usr/bin/nrad) which should work out of the box on the Raspberry Pi 4 but you would need the libopusfile decoder library and a running Pulseaudio deamon for sound (both can be easily apt-installed on Raspbian).

It can be either started with the following command-line arguments:

nrad --token "<your token goes here>" --user <zello user name> --password <zello password> --channel <zello channel name>

and/or controlled by writing JSON directly into the keyboard input (stdin) of the process e.g.

{"command": "logon", "channel": "nrad", "username": "some_name", "password": "some_password", "auth_token": "some long token string"}

{"command": "start_stream"}

{"command": "stop_stream"}

{"command": "exit"}
 

aaknitt

Member
Feed Provider
Joined
Aug 27, 2005
Messages
1,208
But I also have an token generator which should work on the Pi so when you're just building a gateway/repeater of some sort for yourself you should be fine to just save the private key on the Raspberry and generate the token locally I guess.
Yeah that's kind of what I've been thinking...having some issues generating the token with PyJWT but hopefully can get that resolved...it's working fine with the dev token.

Andy
 
Top