Zello PTT Button Partner Technical Integration

  • Updated

This article is written for: Zello Work Zello Friends & Family.

Integrating Hardware Device with Zello

Zello wants to support as many hardware devices as possible, but this becomes quite challenging since there are so many great OEMs. Here are the requirements for making sure your device works with Zello:

 

  • If the device is a phone or network radio, it must have an additional key that can be used for PTT (not volume or wake up keys).
  • The button should launch Zello when it is in the background. 
  • The button should trigger PTT when pressed.
  • The button should unlock the phone when pressed. This functionality needs to be added to the button in addition to the firmware changes below which will only launch Zello and use it as a PTT button.

Firmware changes

Zello simply does not have the capacity to respond to every request for integration and certification. However, we have developed a standard set of intents and APIs that would allow you to update your device firmware to ensure it works with Zello. Updating your firmware is the fastest way to ensure that Zello works in the event we do not have the engineering cycles to do the integration ourselves.

 

The hardware button must send the commands below to work as a PTT button and launch Zello. If a hardware button is assigned these commands, the button will trigger PTT if Zello is in the foreground and if Zello is in the background it will launch Zello before triggering PTT.

 

  When the button is pressed:

     context.sendBroadcast(new Intent("com.zello.ptt.down"));

   

  When the button is released:

     context.sendBroadcast(new Intent("com.zello.ptt.up"));

 

See more button commands in the section below.

   

Once the firmware changes have been made, test the button with Zello by mapping it in the Push-to-talk button settings.

 

Button and Knob Intents - Mobile Devices

PTT Button

PTT buttons should broadcast an intent when they are pressed and released. Extra buttons can also function as additional PTT buttons which can be mapped to contacts or channels within Zello push to talk button options. 

 

Button

Intent

PTT

com.zello.ptt.down

com.zello.ptt.up

PTT2

com.zello.intent.buttonExtra1.down

com.zello.intent.buttonExtra1.up

...

...

 

Emergency Button (SOS)

The emergency event (SOS) sends an SOS call alert to the most recent contact. In future updates, it will be available for mapping to a contact or channel. 

 

Button

Intent

SOS

com.zello.intent.buttonSOS.down

com.zello.intent.buttonSOS.up

 

Channel Knob

The continuous knob implementation can be used to scroll up and down channels.

 

Button

Intent

Continuous Knob

com.zello.intent.channelUp

com.zello.intent.channelDown

 

Channel Button

For devices with fixed positions (i.e. Channel 01-10), you will need to map each knob position inside of Zello as an individual button. Your channels and contacts must have a two-digit numerical prefix indicating it's position on the knob before you begin mapping to the radio. As an example, "01 Station HQ" would be the first knob selection, while "02 EMS" would be the second knob selection, and so on.

 

Button

Intent

Fixed Position Knob

com.zello.intent.setChannel


The Intent's extras Bundle should include an Integer value with the key com.zello.extra.channel that specifies the channel knob position.

 

Bluetooth Accessories

If you are developing a Bluetooth accessory that needs to work with Zello, the best option is to adhere to our standards below for recognizing your device. If you don’t follow our standards, you will need to be added to our development queue but we cannot guarantee when we can deliver the integration.

BLE (Bluetooth Low Energy) 

For BLE, please send us the following information so we can add it to our device whitelist:

 

  • Advertised Name
  • Service UUID
  • Characteristics UUID

 

Zello will add this to our whitelist within 3-5 days. You do not need the latest version of Zello once added. You simply need to log out and log back in to retrieve the latest device list.

 

Button

Value bitmask

PTT

0x01 - primary PTT button

0x04 - secondary PTT button

Channel Down

0x08

Channel Up

0x10

SOS

0x02

 

SPP (Serial Port Profile)

For SPP, please add “PTT” (case-sensitive) to your advertised device name and Zello will  automatically show it in the device list for pairing.

 

Button

Intent

PTT

“+PTTS=P” for button going down & “+PTTS=R” for button coming up

Channel Down

“+PTTB1=P” for button going down & “+PTTB1=R” for button coming up

Channel Up

“+PTTB2=P” for button going down & “+PTTB2=R” for button coming up

SOS

“+PTTE=P” for button going down & “+PTTE=R” for button coming up

 

Wired Accessories

Android

For wired Android accessories, an analog signal must be sent to the device to trigger the Zello PTT function. The pulse width (On = A) and the duration between pulses (Off = C) will vary per device and should be tested by your engineers.

 

The number of pulse sequences will distinguish between the press (1 pulse) and release (2 pulses) signals. This helps avoid confusion within the Zello app when the PTT button is pressed multiple times quickly and aids in eliminating open mic issues.

 

PTT Button Press & Release

 

This is the pulse sequence for ‘Press and Hold’ where the user presses the button and holds it while talking and then releases the button when done.



The suggested values are:



Value

Duration

Comments

A

150 ms

Simulates the single press of a headset hook.

B

700 ms (min)

The minimum amount of transmission/talk time.

C

200 ms

The duration between consecutive headset hook presses.

D

250 ms (min)

The minimum amount of time before the next pulse.



For Toggle Mode, the button is pressed and released, then the user talks and when they have completed their transmission, they press and release the button again. Toggle Mode is a setting inside of the Zello app (default is Press and Hold).