ZPTTLink is an open-source, cross-platform application that bridges Zello (running inside BlueStacks or Waydroid) with radio gateway hardware like the AIOC (All-In-One Cable). It enables seamless Push-to-Talk (PTT) control and audio routing, allowing users to link RF radios to Zello using only a computer.
This tool is ideal for GMRS and ham radio operators, emergency communications volunteers, and hobbyists who want to build a software-based radio gateway.
- Compatible with AIOC, CM108-based, and other USB serial/audio radio cables
- Detects PTT signals via USB serial
- Simulates keypresses or mouse events to trigger Zello’s Push-to-Talk
- Cross-platform support for Windows, macOS, and Linux
- Minimal and simple (KISS — no GUI required)
- Audio routing via VB-Cable (Windows), BlackHole (macOS), or ALSA Loopback (Linux)
- AIOC or compatible USB PTT/audio interface
- Python 3.8 or newer
- Zello installed inside BlueStacks or Waydroid
Install all dependencies with:
pip install -r requirements.txt
- Core: pyserial, pynput, sounddevice, numpy, loguru, platformdirs
- Windows: pycaw
- macOS: pyobjc
- Linux: pulsectl, pyalsa
- ZPTTLink works with both ALSA and PulseAudio.
- If your system uses PipeWire, make sure the PulseAudio compatibility layer is enabled so
pulsectl
can function correctly. - ALSA Loopback must be enabled for audio routing. See: ALSA Loopback Device.
- Install Python:
- Windows
- macOS: Use Homebrew:
brew install python
- Linux: Use your package manager (example for Debian/Ubuntu):
sudo apt install python3 python3-venv
- Install virtual audio driver (choose your OS above).
- Clone the repository:
git clone https://github.com/maxhayim/ZPTTLink.git cd ZPTTLink
- Create and activate a virtual environment:
- Windows:
python -m venv venv venv\Scripts\activate
- macOS/Linux:
python3 -m venv venv source venv/bin/activate
- Windows:
- Install dependencies:
pip install -r requirements.txt
- Activate your virtual environment:
source venv/bin/activate
- Run ZPTTLink:
python -m zpttlink
- Available commands:
help
— Displays available commands and usage infoq
orquit
— Safely exits the program
- Launch Zello inside BlueStacks or Waydroid:
- Assign the same hotkey in Zello (e.g., F8 or F9)
- Select the virtual audio driver as the microphone input
- Press the PTT button on your radio cable (e.g., AIOC). ZPTTLink will detect it, simulate a keypress, and Zello will transmit your audio.
ZPTTLink listens to the USB serial signal from your radio cable. When activated, it simulates a keypress or mouse event to trigger Zello in BlueStacks or Waydroid. Audio from your radio is routed using the virtual audio driver, creating a seamless RF-to-Zello link.
MIT License
Pull requests are welcome. Open an issue first to discuss ideas or report bugs.
- AIOC – All-In-One Cable
- BlackHole (macOS)
- ALSA Utils / Loopback (Linux)
- BlueStacks
- Waydroid
- VB-Audio (VB-Cable)
Portions of this project are based on or inspired by the AIOC (All-in-one-Cable).
Zello® for Android is a trademark of Zello Inc., Android™ is a trademark of Google LLC, and both are used here solely for interoperability purposes.
All other trademarks are the property of their respective owners.