Giter VIP home page Giter VIP logo

sh123 / codec2_talkie Goto Github PK

View Code? Open in Web Editor NEW
212.0 20.0 38.0 28.14 MB

Turn your Android phone into Amateur Radio Codec2/OPUS APRS enabled DV handheld transceiver (Bluetooth/BLE/USB/TCPIP KISS/Sound modem client for DV digital voice communication)

Home Page: https://github.com/sh123/codec2_talkie

License: GNU General Public License v2.0

Java 100.00%
codec2 kiss freedv amateur-radio amateurradio ham-radio digital-voice vocoder bluetooth vhf

codec2_talkie's Introduction

CI APK

Introduction

Turn your Android phone into real Amateur Radio HF/VHF/UHF APRS enabled Codec2/OPUS DV (digital voice) and/or FreeDV handheld transceiver.

Requires additional hardware (e.g. AFSK/LoRa), software (e.g. Direwolf) radio modem or analog transceiver with USB audio + VOX/USB CAT PTT control, such as MCHF or ICOM

For more information about FreeDV and Codec2 visit https://github.com/drowe67/codec2

For more information about OPUS codec visit https://opus-codec.org/

For detailed information about project Wiki

alt text

alt text alt text

Short Description

What you can do with this app:

  • Voice communication:
    • Send and receive Codec2 voice over FreeDV modes
    • Send and receive Codec2/OPUS voice over KISS
    • Send and receive Codec2/OPUS voice encapsulated into APRS UI frames
  • Data communication
    • Use APRS over FSK 300 (HF, TX only), AFSK1200 (VHF), FreeDV OFDM (HF) or APRS-IS (Internet)
    • Send and receive APRS position reports
    • Send and receive APRS messages
    • APRS log with raw APRS data
    • APRS station hub with stations grouped by callsign and their log
    • APRS map with ability to see station info, station track with information about each geo position
    • Use application as APRS digirepeater
    • Use application as APRS-IS RX/TX iGate to forward packets to/from APRS-IS (Internet)
    • Use application as APRS-IS internet tracker to send/receive APRS data over Internet
    • Send and receive text packets in lora-aprs format over KISS
  • Integrate with hardware/software
    • Use it with your KISS Bluetooth/BLE/USB/TCPIP hardware modem, such as LoRa/FSK/AFSK/etc, control its parameters by using "set hardware" KISS command
    • Use it with KISS software modem using TCPIP, such as Direwolf
    • Use it with your HF/VHF/UHF transceiver as a sound modem
    • Use your phone as a software sound modem by using external USB OTG audio adapter (voice + data) or built-in phone speaker and mic (only data)
    • Use your phone for FreeDV protocol voice communication together with HF transceiver, which supports USB OTG audio
    • Control your external transceiver PTT by using USB serial CAT (or VOX if CAT PTT is not supported)

Requirements

  • Android 7.0 (API 24) or higher
    • Application could also be used with your Android network radio, such as Inrico TM-7, apk just needs to be installed over USB, see Discussion
  • Modem, radio module or transceiver which supports KISS protocol or can process KISS or raw Codec2 audio frames over serial Bluetooth, BLE, USB or TCP/IP
  • Analog transceiver with built-in or external USB audio adapter and VOX or USB CAT PTT control (such as MCHF or iCom IC-7x00 series)

Dependencies

Other similar or related projects

Prototypes used with this application

alt text

codec2_talkie's People

Contributors

sh123 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

codec2_talkie's Issues

Implement APRS tracker

As AX.25 support is added need to implement APRS position tracking and messaging capability. Implement APRS protocol and add UI elements for APRS:

  • Single position sending button
  • Start tracking (enables TX periodic position sending based on tracker option from settings), RX should always be enabled
  • Stop tracking
  • View for raw send/receive log

Little bit advancement in app

IMG_20231229_222111
Please give a side option in app for chatting with kiss protocol and an option for photo, pdf and audio message sending and receiving , I think this could possible with kiss protocol i mean this could really be helpful in many situations, I. Hope you may like this idea too.

LORA Uart modules support

Can you please add an additional feature in the app like those uart modules, I do have, it uses first 3 bytes of sending data in something as 2 bytes of data as address and 3rd byte as channel afterwards following data transmit to the particular address module, please give an additional option in setting for typing 2 byte address in hex code as (A1CF) and 1 byte for channel in hex code as (01) finally a place where user can. Input 3 bytes hex code as A2CF01 which includes all 3 bytes as header of streaming data. Please introduce this option because in market, all lora uart module work like this.
So that other users could also benefit this

Please introduce codec2 higher quality mode

I mean, I do have a higher serial speed connection so however I do have a better bandwith like upto 80kbps so do something I couldn't hear a good quality voice also if possible can you buddy please implement something like serial xmodem, zmodem or kermit file transferring option and an option for chatting option and one more codec can be introduce in app like opus upto 32kbps rate

ninja error:missing and no known rule to make it

I was trying to make your project on my Android Sudio and I had this error. I don't know why there isn't a folder named imported-lib,did I miss sth? please help me, thank u.
ninja: error: 'E:/Android/codec2_talkie-master/libcodec2-android/build/imported-lib/arm64-v8a/libcodec2.so', needed by 'E:/Android/codec2_talkie-master/libcodec2-android/build/intermediates/cxx/Debug/4gx1kb3u/obj/arm64-v8a/libCodec2JNI.so', missing and no known rule to make it

Add remote reboot to app

Sometimes we need to deploy the board in a place without easy access, and if, for some reason the board stay stuck and don't work with new configuration, it becomes easy to reboot without the need to go there and click the button or off on the power.

Peer to peer walkie talkie

Like what is there now in app, it's nice, but can we include an identification system for more privacy and encryption too, like in app, there should be an option for making user profile, or randomly assign identity to every app that could be use in verifying the user and only to talk to those whom we are calling too

Desktop Version

is there any version codec2 talkie for desktop version (Linux or Windows), it would be cool..

M17 support

Hi -- I am working with the M17 project. M17 is based around Codec2 -- it's an open alternative to all the AMBE-based VHF/UHF digital modes. My goal is to get an M17 transceiver working using an FM radio, Mobilinkd TNC3 and Android app. I was about to embark on the process of writing what you have already written. I have the RX side working in the TNC3 and expect have TX done this week. I am still working on how to best implement the KISS interface for this as we need to send & receive link setup information.

I am reaching out to see if you would be interested in accepting PRs for this. You are welcome to join us on IRC to see what we are all working on. https://m17project.org/irc/#

If you would like to test this with a Mobilinkd TNC3, please let me know. I'd be happy to send one out to you.

The transmit-capable iGate needs to be implemented according the spec

The transmit-capable iGate does not seem to implement two required features:

  • an algorithm to select which packets are transmitted to RF (this is not done by the APRS-IS server, it must be done by the iGate)
  • conversion of packets to the 3rd party format

As a result packets transmitted by this iGate to RF will be injected back from RF to APRS-IS by other iGates. All those iGates will also assume the source callsigns of these packets are reachable locally over RF, and the correctly working iGates will then start transmitting APRS text messages destined to those stations to the local RF channel (like they should, according to the specification).

Recently the CG Antennas GW-1000 caused a rather noticeable worldwide loop with this bug:

https://blog.aprs.fi/2023/06/cg-antenna-gw-1000-aprs-igate-has.html

https://groups.io/g/APRS/topic/packets_messages_looping_from/96251214?p=Created%2C%2C%2C20%2C1%2C80%2C0&jump=1

Please also read through https://github.com/hessu/aprsc/blob/main/doc/IGATE-HINTS.md to see if other classes of common iGate bugs are relevant. This particular issue is found under the headline Transmit-capable iGates causing packet loops (added just now).

The iGate spec can be found here:
https://aprs-is.net/IGating.aspx
https://aprs-is.net/IGateDetails.aspx

Questions: Using Codec2_talkie with TTGo TBeams

I am trying to figure out how I could use Codec2_talkie Android app with TTGO TBeams. Do I load your esp32_loraprs with Arduino IDE to TBeams? Will meshtastic TBeam firmware works?

Thanks

Implement APRS-IS RX/TX iGating

Implement APRS RX/TX iGate, so android can forward packets to/from APRS-IS and digirepeat them, add required settings under APRS section, so can use old Android phone as APRS-IS iGate.

Add next settings:

Serial connection HC-12 module

Hi!

Great app! I was wondering is it possible to use this app somehow without kiss protocol capsulation? I was thinking to try out ie. HC-12 serial rxtx ?

This would make possible ultra low cost DV walkie talkie.

Thanks again for you great work!

Br, Jarno / OH3GAI

edited because I ment HC12 usb serial module.

Question: Decode codec2talkie with c2dec

Hi!

Sorry to bother again..

I've been trying to decode codec2talkie transmission(HC12) via ubuntu c2dec, but without success. Audio is not understandable.

"sudo cat /dev/ttyUSB0 | c2dec 700 - - | play -t raw -r 8000 -e signed-integer -b 16 -c 1 -"
image

Have you tried that? Could it be the kiss encapsulation? I tried to understand the code but unfortunately my competence was not enough.. :)

Thanks for you're help!

Br, Jarno

Feature Request: KISS over TCP/IP

Great tool - I'd love to be able to use this with Direwolf or other IP-based TNC's in addition to my Bluetooth ones - I haven't got an Android toolchain up but I can try this weekend!

Can't install on android 6.0.1 device

I wanted to test with my android 10 phone, and an android 6 phone. App installed fine on the newer model, but on the 6 device I get the error "App not installed", and when I try to install over adb I get:

pkg: /data/local/tmp/codec2talkie-release.apk
Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]

Any pointers?

Sparkfun Pro micro not detected

The Sparkfun pro micro based tnc works ok. USB serial console on Android detects the serial port. Codec2_talkie no. Both versions do the same.

Suspected APRS-IS data loopback issue

Hi,

Yesterday someone noticed that an APRS-IS client has kind of heard roughly all the other stations around the world on APRS-IS and retransmitted the packets back. Take a look at the rather lengthy "heard directly by" list of this iGate, and hover your mouse cursor on top of the "longest at" timestamps to see the respective packets:

https://aprs.fi/info/a/EA3HCP-7

Apparently the igate has sent out two packets back-to-back with a "<0xd" string between the two packets. There are also a lot of brandmeister-originated DMR packets with a ,qAS,EA3HCP-7 construct. I sent a mail to the callsign owner asking which software it was running at the time, and he reported he was running the codec2_talkie app on his Android device at the time.

I didn't really step through the code properly, and I'm not much of a java programmer, but I wonder if AprsIs.java receive() will be called with received APRS-IS data, and and will it call sendData which, if _isSelfEnabled, will put the received data back to the APRS-IS txQueue ? This is just a rough guess based on a cursory look.

https://github.com/sh123/codec2_talkie/blob/master/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/AprsIs.java#L124

Perhaps during the implementation of #40 such a bug crept in?

Add Google Lyra Support

Google's made some impressive progress with their AI-based Lyra vocoder.

Link to Google Lyra Github

Integrating this codec into codec2 walkie talkie would make for an amazing walkie-talkie app in terms of voice quality!

Mic gain

Testing the app between two phones, one with Android 5.0 (legacy) and the other with Android 10 there is a huge difference in the mic gain. In the legacy app the mic gain seems very low. I did not find how to adjust it.

PTT button support.

Hi!

I have inrico tm7 (android 7.0) network mobile radio which have mic and real ptt button. It would be great to see support for PTT button.

It would make full featured real Digital Voice radio for it with quite slight modifications. Just add radio modem of your choice with otg cable.

Codec2Talkie apk was easy to install to inrico tm7. Just copied apk over usb cable and everything works out of the box via HC12 radio module.

image

Below is picture of Inrico TM7 keycode event 230 when PTT is pressed and released
image

You have created great app with lot of possibilities!!

Br, Jarno

please increase versionCode

Please remember to increase versionCode before you make the next release: it is still set to 1 despite of many versions already having been released. For background: Android uses versionCode to tell which APK is newer and offer it to the user for updating. If it wasn't changed, Android assumes this is the very same version, making it more difficult to update (and especially not sending update notifications). Thanks!

PS: I've just added your app to my F-Droid repository (it will become available here with the next sync around 6 pm UTC). New versions will be fetched within 24h of your tagging a new release and attaching the APK to it. Users of my repo will receive update notifications for new versions – provided you have increased versionCode 😉

If you like to link to your app's new presence, be welcome to pick a badge for visualization 😃

Can we get the same app with opus encoding

Can we really get this app wth different audio encoding I mean a seperate app but same functionalities just with different encoding, I love this app but i want to see opus encoding upto 64kbps speed, I really loved codec 2 but opus should once be tried

TX Delay Broken

        startKissPacket(KISS_CMD_TX_DELAY);
        sendKissByte(_tncTxTail);
        completeKissPacket();

This code is sending the _tncTxTail value as KISS_CMD_TX_DELAY. It should be sending _tncTxDelay here.

TX Tail is a deprecated KISS feature used by very few TNCs. Per the KISS spec:

This command is obsolete, and is included here only for compatibility with some existing implementations.

It does not improve packet transmission. It simply increases the odds of packet collisions.

The chance of errors is reduced by simply removing support for TX Tail entirely.

Wrong android API requirements

You defines "Android 7.0 (API 24) or higher" in system requirements, but this code requires API 28 (or higher) really.
This makes old phones unusable.....

Superframe length and transmission bitrate do not match settings

When choosing codec2 450bps, If I set superframe = 30 bytes, then in reality the transmission occurs in packets of 27 bytes. Since a regular frame is 3 bytes, I can assume that probably one frame is lost, but this is just my guess. These 27 byte superframes follow with a period of 360 milliseconds, which gives a bit rate of 600bps (but not 450). Are there any explanations?

App crash then try choose aprs symbol

Good day.
First thanks for this great aplication and firmware for LoRa APRS modem.
Second Then i trying choose diferent APRS symbol aplication is crash. i am using Android 12 and Poco X3 Pro, version of codec2_talkie, latest from your release page, other functions working perfect, exept coosing aprs symbol.
Thanks and sorry for my English =)

BUILD FAILED

I ask for your help
In Android Studio Electric Eel | 2022.1.1 Patch 2
Build #AI-221.6008.13.2211.9619390, built on February 17, 2023
Runtime version: 11.0.15+0-b2043.56-9505619 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.
I can't fix error for a few days

1: Task failed with an exception.

  • What went wrong:
    Execution failed for task ':libcodec2-android:compileCodec2'.

A problem occurred starting process 'command '/usr/bin/cmake''

2: Task failed with an exception.

  • What went wrong:
    Execution failed for task ':libopus-android:compileOpus'.

A problem occurred starting process 'command '/usr/bin/cmake''

Caused by: java.io.IOException: Cannot run program "/usr/bin/cmake" (in directory "C:\ct2\libcodec2-android\build\codec2_build_linux"): CreateProcess error=2, �� ������� ����� ��������� ����
at net.rubygrapefruit.platform.internal.DefaultProcessLauncher.start(DefaultProcessLauncher.java:25)

Thanks for the cool project

Implement own position tracking into APRS-IS

Implement own position tracking into APRS-IS.

Should be able to select next options in settings:

  • Mode of operation
    • Send to both modem and APRS-IS (replication)
    • Send to modem
    • Send to APRS-IS
  • APRS passcode to login into APRS-IS

Problem with compiling to apk on ubuntu 22.04

I have a custom modem that I would like to use with custom data transfer protocol through the usb, and hence I am trying to compile the project and build an apk.
This is my first time touching any java project, and I am a complete noob XD.

prerequisites

running on ubuntu 22.04, this was my setup:

sudo apt update
sudo apt install openjdk-11-jdk sdkmanager

following with:

sdkmanager --licenses #accepts all licenses
sudo update-alternatives --config java #---> choose java11
#exported ANDROID_SDK_ROOT to the root of the project
export ANDROID_SDK_ROOT=$(pwd) #---ensure correct folder
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64

Compiling to apk

./gradlew assemble OR ./gradlew build
This didnt work. please see below what I did to "fix" problems, and where I ended up.

changes

in ./build.gradle I changed classpath from 3.5.0 to 4.1.1 to avoid:

Execution failed for task ':libcodec2-android:stripDebugDebugSymbols'.
> No toolchains found in the NDK toolchains folder for ABI with prefix: arm-linux-androideabi

in ./codec2talkie/build.gradle I changed the compileSdkVersion to 31 from 30 to avoid:

* What went wrong:
Execution failed for task ':codec2talkie:checkDebugAarMetadata'.
> Multiple task action failures occurred:
   > A failure occurred while executing com.android.build.gradle.internal.tasks.CheckAarMetadataWorkAction
      > The minCompileSdk (31) specified in a
        dependency's AAR metadata (META-INF/com/android/build/gradle/aar-metadata.properties)
        is greater than this module's compileSdkVersion (android-30).
        Dependency: androidx.preference:preference:1.2.0.
        AAR metadata file: /home/alon/.gradle/caches/transforms-2/files-2.1/ac9da05f86a847f6bc2d750040f5f454/preference-1.2.0/META-INF/com/android/build/gradle/aar-metadata.properties.
   > A failure occurred while executing com.android.build.gradle.internal.tasks.CheckAarMetadataWorkAction
      > The minCompileSdk (31) specified in a
        dependency's AAR metadata (META-INF/com/android/build/gradle/aar-metadata.properties)
        is greater than this module's compileSdkVersion (android-30).
        Dependency: androidx.lifecycle:lifecycle-livedata:2.5.1.
        AAR metadata file: /home/alon/.gradle/caches/transforms-2/files-2.1/d3cf9c06a879226a8ed322c5fd6bb964/lifecycle-livedata-2.5.1/META-INF/com/android/build/gradle/aar-metadata.properties.
        ...

after which I got the following error:

* What went wrong:
Execution failed for task ':libcodec2-android:mergeDebugNativeLibs'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
   > More than one file was found with OS independent path 'lib/x86_64/libcodec2.so'. If you are using jniLibs and CMake IMPORTED targets, see https://developer.android.com/studio/preview/features#automatic_packaging_of_prebuilt_dependencies_used_by_cmake

searching for where all the libcodec2.so with find . -name libcodec2.so yielded:

./libcodec2-android/build/codec2_build_android_x86_64/src/libcodec2.so
./libcodec2-android/build/codec2_build_android_x86/src/libcodec2.so
./libcodec2-android/build/codec2_build_android_arm64-v8a/src/libcodec2.so
./libcodec2-android/build/intermediates/cmake/debug/obj/arm64-v8a/libcodec2.so
./libcodec2-android/build/intermediates/cmake/debug/obj/armeabi-v7a/libcodec2.so
./libcodec2-android/build/intermediates/cmake/debug/obj/x86_64/libcodec2.so
./libcodec2-android/build/intermediates/cmake/debug/obj/x86/libcodec2.so
./libcodec2-android/build/intermediates/merged_jni_libs/debug/out/arm64-v8a/libcodec2.so
./libcodec2-android/build/intermediates/merged_jni_libs/debug/out/armeabi-v7a/libcodec2.so
./libcodec2-android/build/intermediates/merged_jni_libs/debug/out/x86_64/libcodec2.so
./libcodec2-android/build/intermediates/merged_jni_libs/debug/out/x86/libcodec2.so
./libcodec2-android/build/codec2_build_linux/src/libcodec2.so
./libcodec2-android/build/imported-lib/arm64-v8a/libcodec2.so
./libcodec2-android/build/imported-lib/armeabi-v7a/libcodec2.so
./libcodec2-android/build/imported-lib/x86_64/libcodec2.so
./libcodec2-android/build/imported-lib/x86/libcodec2.so
./libcodec2-android/build/codec2_build_android_armeabi-v7a/src/libcodec2.so

Unfortunately, now I am stuck, because from what I see, libcodec2.so was compiled for each architecture correctly, with no overlaping

Request for prefix of Bluetooth

Thank you so much for the update but as I am using hc05 with uart lora and your update is limited to UART TNC, so my lora tx-rx of hc05 and lora rx-tx of hc05, wouldn't work here so please try to implement on Bluetooth too, it's a request

Dual Channel / Repeater Mode

It would be really cool if we could specify different channels / spreading factors for transmit and receive. If these could be changed on the LoRa TNC using KISS extensions when the PTT button is pressed, you could create a low-power repeater using two TNC's wired together over their serial ports.

A friend and I are going to fly some LoRa TNC's on high altitude balloons, and would love this feature.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.