Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
This branch is 857 commits behind sh123:master.

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


Android Codec2 Walkie-Talkie

Minimalistic Android KISS Bluetooth/USB modem client for Amateur Radio DV (digital voice) communication by using open source Codec2.

alt text


This minimalistic Android application is a digital voice frontend for your radio. It connects to your radio KISS Bluetooth/USB modem, sends and receives Codec2 audio frames, which are encapsulated inside KISS frames. It does not deal with radio management, modulation, etc, it is up to your modem and radio, it could be just AFSK1200, GMSK 9600, LoRa, FSK, FreeDV or any other modulation scheme. Radio just needs to expose KISS Bluetooth interface for speech frames.


  • Android 6.0 (API 23) or higher
  • Modem or transceiver which supports KISS protocol over Bluetooth or USB


  • PTT button, push and talk, Codec2 speech frames will be transmitted to the modem
  • USB serial connectivity (115200 bps, 8 data bits, 1 stop bit, no parity), just select this app after connecting to USB and it will use given connection
  • Bluetooth connectivity on startup, lists paired devices, so you can choose your modem and connect, you need to pair with your Bluetooth device first from Android Bluetooth Settings
  • Voice codec2 mode selection, which allows you to select various codec2 modes from 450 up to 3200 bps on the fly, sender and receiver should agree on the codec mode and use the same codec mode on both ends
  • Codec2 loopback mode, which records and plays your recorded voice back to test and evaluate different Codec2 modes and speech quality

Suitable radios and modems

Related Projects


  • Gaps in received audio, indicator often changes between RX/IDLE on the receiver side when sender and recipient are close by then
    • most likely you do not have enough bandwidth, use higher throughput modem mode, for LoRa modems you need approximately 170% of data rate for the given codec2 bitrate, AFSK1200 modems should work at 450 bps codec2 mode, 700 bps might work, but not on all modems, higher speed codec2 modes won't work on AFSK1200
    • modem goes into RX state too fast after sending first packet, increase TxTail parameter for your modem if it does not handle corresponding KISS command, so it will stay longer in TX before switching to RX
      • if you are using LibAPRS based modem, set TxTail and TxPreamble programatically by using APRS_setPreamble and APRS_setTail methods as it does not seem to set these values from CMD_TXDELAY and CMD_TXTAIL KISS commands


  • Parrot mode, so speech coming from aether will be transmitted back (testing or digirepeating)
  • QSO log, voicemail style recording of incoming speech so that incoming transmissions are not missed
  • Separate settings to avoid repeated operations
    • Override default USB serial parameters
    • Default Bluetooth device name to connect upon startup
    • Default codec2 bitrate on startup
    • Settings for parrot mode
    • Settings for QSO log
  • Modem profiles, so different modems could be controlled from the UI with KISS command extensions, so that user can change frequency, modulation scheme or other modem parameters on the fly.


Android KISS Bluetooth/USB modem client for Codec2 amateur radio digital voice communication







No packages published


  • C 48.3%
  • Objective-C 18.8%
  • Makefile 13.7%
  • MATLAB 11.4%
  • CMake 3.6%
  • Python 2.2%
  • Other 2.0%