posted by 433 Spaceman, 6/12/2020

Channel Beacon (How Spaceman Does it)

I'm not going to go into great detail, but it will be just enough info for anyone somewhat tech savvy to be able to set up a beacon like mine (or at least similar).


Hardware and set up:

So the first thing I needed was a device. And it had to run Android so I could use Tasker as the main "brain" behind the beacon. I did not want to use a PC because I wanted the device to be as small and portable as possible. So I happened to have some left over phones that I use from time to time as wi-fi devices:

  • Samsung Galaxy S7 - I think this phone would would have worked as far as programming and performance goes, but it did not work with the audio splitter I mention below - so this one was immediately out.

  • Samsung Galaxy S8 - This one was the winner.. This one worked with the audio splitter, so I rolled with it.


Next, Android is unable to capture internal audio, unless it's through an open mic, so I knew I was going to need to get clever. Either I would need to use 2 devices linked to one another and set Zello to be voice activated (VOX), *** or I would need to somehow route the outgoing audio to the Mic Input of the phone.

I was able to do just that using this splitter:

Picture of Audio Splitter

(Red = right audio out, White = left audio out, Yellow = Mic/Line Input)

  1. Using a patch cable, I routed the left audio out into the mic/line in (white to yellow).

  2. The red (right audio) doesn't need to be hooked up. Or, it can be hooked up to some sort of monitor so you can hear what's going on locally.

  3. in Settings/Accessibility/Hearing Enhancements, I turned Mono Audio = On. Reason: One of the beacons I run uses stereo wav files. Because I'm only routing one of the audio channels into the line input, I want to be sure I capture all audio.

  4. Install Zello and log in using another account - separate from my own user account

  5. Install Tasker (it's only a couple bucks)

Programming the Beacon using Tasker

First I would create the different tasks that would randomly run every hour:

(for this example: 3 different messages that are randomly picked and played once per hour. The example below demonstrates as if the name of the channel is "My Channel Name", with an abbreviation of "MCN")

Task 1 Name: MCN Hourly 1

  1. Say Text: "Launching Beacon" -- This won't transmit. I only do this to load Text to Speech because sometimes there's a delay loading it

  2. Wait: 5 Seconds -- this gives the voice engine a chance to load

  3. Launch App: Zello -- brings up Zello

  4. Wait: 1 second -- this gives the zello app a chance to load successfully

  5. Shortcut: zello://My%20Channel%20Name?add_channel -- brings up the channel you wish to run the beacon on

  6. Wait: 1 second -- this gives the channel a chance to load successfully

  7. Send Intent: com.zello.ptt.down -- this forces Zello to start transmitting

  8. Say: "This is My Channel Name, Channel 1" -- Note: commas in the text do leave a slight pause in the speech.

  9. Morse Text: "MCN", Frequency 3020, Speed 90 -- (Yes, Tasker even does morse code!!)

  10. Wait: 1 second -- this gives a slight delay between the end of the morse code and the un-key.

  11. Send Intent: com.zello.ptt.up -- this stops the transmission (un-keys Zello)


Task 2 Name: MCN Hourly 2

  1. Say Text: "Launching Beacon" -- This won't transmit. I only do this to load Text to Speech because sometimes there's a delay loading it

  2. Wait: 5 Seconds -- this gives the voice engine a chance to load

  3. Launch App: Zello -- brings up Zello

  4. Wait: 1 second -- this gives the zello app a chance to load successfully

  5. Shortcut: zello://My%20Channel%20Name?add_channel -- brings up the channel you wish to run the beacon on

  6. Wait: 1 second -- this gives the channel a chance to load successfully

  7. Send Intent: com.zello.ptt.down -- this forces Zello to start transmitting

  8. Say: "This is MCN. We're somewhere on the Zello dial between CB Radio and Ham. In other words, we're just right. " -- Note: commas in the text do leave a slight pause in the speech.

  9. Morse Text: "MCN", Frequency 3020, Speed 90 -- (Yes, Tasker even does morse code!!)

  10. Wait: 1 second -- this gives a slight delay between the end of the morse code and the un-key.

  11. Send Intent: com.zello.ptt.up -- this stops the transmission (un-keys Zello)


Task 3 Name: MCN Hourly 3

  1. Say Text: "Launching Beacon" -- This won't transmit. I only do this to load Text to Speech because sometimes there's a delay loading it

  2. Wait: 5 Seconds -- this gives the voice engine a chance to load

  3. Launch App: Zello -- brings up Zello

  4. Wait: 1 second -- this gives the zello app a chance to load successfully

  5. Shortcut: zello://My%20Channel%20Name?add_channel -- brings up the channel you wish to run the beacon on

  6. Wait: 1 second -- this gives the channel a chance to load successfully

  7. Send Intent: com.zello.ptt.down -- this forces Zello to start transmitting

  8. Say: "Welcome to My Channel Name. " -- Note: commas in the text do leave a slight pause in the speech.

  9. Morse Text: "MCN", Frequency 3020, Speed 90 -- (Yes, Tasker even does morse code!!)

  10. Wait: 1 second -- this gives a slight delay between the end of the morse code and the un-key.

  11. Send Intent: com.zello.ptt.up -- this stops the transmission (un-keys Zello)


Task 4 Name: MCN Hourly Randomizer

(This task randomly chooses and runs one of the 3 tasks above)

  1. Media Volume Level: 10 -- This will make sure the random task chosen will always use the same volume. I had it set at 13 originally, but it was a bit over driven. 10 works pretty well for my needs.

  2. Variable Randomize Name: %taskNumber Min: 1 Max: 3 -- As I add more station ids, I will need to increase the Max

  3. If %taskNumber: ~1

  4. Perform Task Name: MCN Hourly 1

  5. Else If %taskNumber: ~2

  6. Perform Task Name: MCN Hourly 2

  7. Else If %taskNumber: ~3

  8. Perform Task Name: MCN Hourly 3 -- I will need to add more Else If and Perform Task lines as I add more station ids

  9. End If


Note: Once the tasks are set up, I then scheduled the randomizer task to run hourly:

Tasker Profile:

  1. From 12:00 AM to 11:59 PM, every 1 hour





Additional Notes:

  • I also have another beacon that run every hour on the half hour. It's only doing morse code. So that only takes 1 task and 1 profile to do. The profile is set up to run 12:30 AM to 11:59 PM, every hour.


You could also turn the 4 tasks above into one task. It would look something like this:

  1. Media Volume Level: 10

  2. Say Text: "Launching Beacon"

  3. Wait: 5 Seconds

  4. Launch App: Zello

  5. Wait: 1 second

  6. Shortcut: zello://My%20Channel%20Name?add_channel

  7. Wait: 1 second

  8. Send Intent: com.zello.ptt.down

  9. Variable Randomize Name: %taskNumber Min: 1 Max: 3

  10. If %taskNumber: ~1

  11. Say: "This is My Channel Name, Channel 1"

  12. Else If %taskNumber: ~2

  13. Say: "This is MCN.... We're somewhere on the Zello dial between CB Radio and Ham. In other words, we're just right. "

  14. Else If %taskNumber: ~3

  15. Say: "Welcome to My Channel Name."

  16. End If

  17. Morse Text: "MCN", Frequency 3020, Speed 90

  18. Wait: 1 second

  19. Send Intent: com.zello.ptt.up



10/16/2020 update:

How I set up the Beacon for THE ROAR.

  • The ROAR has over 100 .wav files that play every hour.

  • Each wav file is named with a number (i.e. 1.wav, 2.wav, 3.wav, and so on).

Here's how the task is set up in Tasker

1) Media Volume: Level 8



Note: The "104" number will have to increase each time a new wav file is added.

Basically what's happening in this IF statement is the %roarTask variable will keep adding up by 1 until the task starts off at 104, in which it then resets to 0.



2) If %roarTask ~ 104

3) Variable Clear: %roarTask

4) Variable Set: %roarTask to 0

5) End If



Note: Each time this task runs, the %roarTask variable adds 1 to the existing number it starts off with. The variable will also flash on the screen to show which wav file will play. Zello will then launch, Select the ROAR channel, and key up.



6) Variable Add: %roarTask value: 1

7) Flash Text: %roarTask

8) Wait: 2 seconds

9) Launch App: Package/App Name Zello

10) Wait 1 Second

11) Shortcut: zello://roar?add_channel

12) Wait: 1 Second

13) Send Intent, Action: com.zello.ptt.com

14) Wait: 1 Second



Note: The following IF statement basically says: if it's 7:30 PM Arizona Time, then play the "it's 12 midnight Newfoundland Time" wav file... Else, play whichever wav file is supposed to play next



15) If %TIME ~ 19.30

16) Music Play File: tasker/roar/0.wav

17) Variable Subtract: %roarTask Value 1

18) Else

19) Music Play File: tasker/roar/%roarTask.wav

20) End IF



Note: The following if statement is simply adding Morse code after 40.wav stops playing. All others have the Morse code within the wav file. But it was forgotten in 40.wav, so I'm manually adding it when it is its turn to play.



21) If %roarTask ~ 40

22) Morse Text: ROAR, Frequency: 2757, Speed: 90%, Amplitude: 50%

23) Wait: 1 second

24) End If



Note: the following un-keys Zello, and goes to the home screen.



25) Send Intent, Action: com.zello.ptt.up

26) Wait: 1 second

27) Go Home, Page 0

28) Wait: 1 second



Note: all the wait commands are needed to wait for Zello or the Android system to react.