codec2_talkie/README.md

57 wiersze
4.4 KiB
Markdown
Czysty Zwykły widok Historia

2020-12-10 11:44:49 +00:00
![CI](https://github.com/sh123/codec2_talkie/workflows/CI/badge.svg)
2020-12-06 09:27:58 +00:00
# Android Codec2 Walkie-Talkie
2020-12-08 20:40:40 +00:00
Minimalistic Android KISS Bluetooth/USB modem client for Amateur Radio DV (digital voice) communication by using open source [Codec2](https://github.com/drowe67/codec2).
2020-12-06 09:44:20 +00:00
2020-12-06 10:21:21 +00:00
![alt text](images/screenshot.png)
2020-12-06 10:13:29 +00:00
2020-12-06 09:44:20 +00:00
# Introduction
2020-12-08 20:41:26 +00:00
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.
2020-12-06 09:44:20 +00:00
2020-12-06 09:56:08 +00:00
# Requirements
2020-12-06 14:16:58 +00:00
- Android 6.0 (API 23) or higher
2020-12-08 11:25:28 +00:00
- Modem or transceiver which supports [KISS protocol](https://en.wikipedia.org/wiki/KISS_(TNC)) over Bluetooth or USB
2020-12-06 09:56:08 +00:00
2020-12-06 09:44:20 +00:00
# Features
2020-12-09 11:38:57 +00:00
- **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
2020-12-12 10:35:30 +00:00
- **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
2020-12-09 11:38:57 +00:00
- **Codec2 loopback mode**, which records and plays your recorded voice back to test and evaluate different Codec2 modes and speech quality
2020-12-06 09:44:20 +00:00
2020-12-09 11:57:54 +00:00
# Suitable radios and modems
2020-12-08 11:34:50 +00:00
- Tested, works:
2020-12-15 07:23:37 +00:00
- (BT) LoRa modem 450/700 @ approx. 1300 bps: https://github.com/sh123/esp32_loraprs
2021-01-07 11:19:35 +00:00
- (BT) custom AFSK1200 LibAPRS based modem with increased TXTail parameter: 450 works fine, 700 works with small gaps, probably LibAPRS needs some tweaks: https://github.com/markqvist/LibAPRS
2021-01-07 11:18:02 +00:00
- (USB) HC-12 modules: works, need to configure module separately for 115200,8,1 serial speed before using with the application
2020-12-15 08:26:24 +00:00
- Tested, works, but not too stable, probably needs TXTail tuning:
2020-12-14 17:04:30 +00:00
- (USB) AFSK1200 PicoAPRS: http://www.db1nto.de/index_en.html
- (BT) AFSK1200/GMSK9600 Kenwood TH-D74A: https://dl1gkk.com/kenwood-th-d74-bluetooth-packet-radio-setup/
2020-12-06 14:15:24 +00:00
- Could work, needs testing:
2020-12-14 17:04:30 +00:00
- (USB) AFSK1200 MicroModem: https://unsigned.io/micromodem
- (BT/USB) AFSK1200/GMSK9600 Mobilinkd TNC3: https://store.mobilinkd.com/products/mobilinkd-tnc3
- (USB) nRF2401L01 2.4 GHz: https://github.com/sh123/nrf24l01_arduino_kiss_modem
2020-12-06 09:53:20 +00:00
2020-12-06 09:44:20 +00:00
# Related Projects
- Codec2 codec: https://github.com/drowe67/codec2
- Android Codec2 wrapper code: https://github.com/UstadMobile/Codec2-Android
2020-12-07 12:41:42 +00:00
- Android USB serial: https://github.com/mik3y/usb-serial-for-android
2020-12-06 14:24:35 +00:00
- iOS Codec2 wrapper: https://github.com/Beartooth/codec2-ios
2020-12-06 14:36:47 +00:00
2020-12-11 15:31:04 +00:00
# FAQ
2020-12-14 16:41:07 +00:00
- Gaps in received audio, indicator often changes between RX/IDLE on the receiver side when sender and recipient are close by then
2020-12-14 16:46:44 +00:00
- 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
2020-12-14 16:49:04 +00:00
- 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
2020-12-14 16:47:59 +00:00
- 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
2020-12-11 15:31:04 +00:00
2020-12-06 14:36:47 +00:00
# TODO
2020-12-08 20:40:09 +00:00
- Parrot mode, so speech coming from aether will be transmitted back (testing or digirepeating)
2020-12-06 14:39:33 +00:00
- QSO log, voicemail style recording of incoming speech so that incoming transmissions are not missed
2020-12-08 20:40:09 +00:00
- Separate settings to avoid repeated operations
2020-12-09 10:16:56 +00:00
- 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
2020-12-12 10:34:06 +00:00
- 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.