Skip to content
English
  • There are no suggestions because the search field is empty.

Zello Hardware Partner Technical Integration

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

Many Zello users are driving, working in noisy environments, or need to communicate discreetly. Finding the right hardware, whether that means a hands-free headset, a rugged device, or something discreet, can make a real difference.

Zello works with manufacturers to test and certify hardware that works reliably with our app. Certified hardware has passed Zello's internal testing and is fully supported. Other hardware may work with Zello, but functionality isn't guaranteed and Zello cannot provide technical support for it.

If you have hardware that could help people push to talk in any of the scenarios mentioned above, getting it Zello-certified is worth it. Certified hardware is listed on the Zello website, making it easy for users to find and trust.

How to get your hardware Zello-certified and listed on our website

  1. Ensure at least one button on your hardware works as true PTT (press-talk-release).
  2. Follow the integration guide below for handheld devices, Bluetooth accessories, and wired accessories.
  3. Email us at [email protected] with the necessary information (see instructions depending on hardware type below), along with:
    • Images of your hardware
    • Price
    • Purchase link
    • Speaker loudness (in dB)
    • Ratings (e.g., IP68, IP67, waterproof, etc.)
    • Battery life
    • Any other relevant information
  4. We'll send you a validation checklist for you to test your hardware. Once you've completed the checklist, send the results back to us.
  5. Send 2-3 samples to Zello headquarters for verification:
    • Address: 1717 West 6th St. Suite 450, Austin, TX 78703
  6. If your hardware passes verification, we'll certify it and add it to the Zello website.
  7. List Zello compatibility on your website with a link back to ours so that Zello users can confirm compatibility.

Handheld devices

Integrating hardware devices 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.

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

iOS: MFI

Zello's custom MFi protocol enables low-latency, secure PTT control for iOS accessories, including press/release events, channel switching, emergency triggering, and more. To request access to the MFi protocol documentation or discuss integration for your use case, please reach out to our team at [email protected].

Android: USB-C CDC

Adding support for a new USB-C device will require at least Zello v6.13. The below spec assumes the device already conforms to the relevant hardware platform requirements for general data transmission, audio in/out, and to control system functionality e.g. volume.

Whitelisting and certification

To add support for a new USB-C accessory, the device must be whitelisted by Zello. Manufacturers are required to provide the following information:

  • Vendor ID (VID): May be shared across all accessories produced by the same organization.
  • Product ID (PID): Must be unique for each individual product.

To begin the integration process, please submit the VID and PID details to [email protected] . Zello will provide a sample application build for testing and debugging the accessory.

Once the accessory has successfully completed certification, it will be whitelisted in the production version of the Zello app, allowing the device to be automatically recognized without user configuration. 

USB interface requirements

Zello expects USB-C accessories to expose a CDC-DATA class interface.

  • Zello opens a connection to this interface over a USB endpoint.
  • This interface is used exclusively for serial communication related to accessory control events.

Note: Additional interfaces (for example, HID or Audio) may be implemented as required by the manufacturer’s hardware design. These interfaces must conform to their respective specifications, but are outside the scope of the CDC-DATA interface described here. 

PTT button press and release handling

Once connected, the accessory is expected to send button events as two-byte messages:

  • First byte: Identifies the button or function (keycode)
  • Second byte: Indicates the button state
    • Odd value: Button pressed
    • Even value: Button released 

Primary keycodes:

Keycode Functionality
0x42 Replay last message
0x43 Selection next/up
0x44 Selection previous/down
0x45 SOS/Emergency Key
0x46 Primary PTT
0x4D Multi-function Key
0x66 Secondary PTT Key
0x67 Toggle Zello status (busy/available/solo)
0x68 Change selection mode (recents/contacts/channels/ indexed contacts)

Reserved keycodes:

0x56 Volume Up/Down


Volume controls may be implemented per the USB-IF audio class 3.0 and HID specifications found on , but doing so results in Zello receiving a signal of 0x56 when the volume is adjusted. Zello will ignore this signal and it won’t be used for other functionality.

Legacy

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.
Value Duration Comments

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).