A free, open-source, multi-platform application for sending files and messages, using the codec2 HF modems
Go to file
2021-02-19 09:58:12 +01:00
arq.py TNC_STATE machine 2021-02-19 09:50:04 +01:00
helpers.py TNC_STATE machine 2021-02-19 09:50:04 +01:00
install_jate.sh Add files via upload 2021-01-17 12:53:44 +01:00
LICENSE Initial commit 2020-12-12 19:57:27 +01:00
main.py add del rx_buffer via sock 2021-02-18 15:11:37 +01:00
modem.py PTT_STATE 2021-02-19 09:58:12 +01:00
readfromsocket.py new socket handler 2021-02-16 19:39:08 +01:00
README.md Merge branch 'main' into dev 2021-02-18 16:54:21 +01:00
sock.py PTT_STATE 2021-02-19 09:58:12 +01:00
socketclient.py new socket handler 2021-02-16 19:39:08 +01:00
static.py PTT_STATE 2021-02-19 09:58:12 +01:00

FreeDV-JATE

FreeDV- Just Another TNC Experiment

My first attempt to learn more about FreeDV and how to create a TNC which gets data from a TCP/IP socket

ToDo

  • ARQ: Stop-And-Wait
  • ARQ: Go-Back-N
  • ARQ: Selective repeating of lost arq frames
  • ARQ: Dynamic number of frames per burst
  • ARQ: Set frames per burst automatically by channel quality
  • SOCKET: Run commands via TCP/IP socket
  • TRX: Control radio via hamlib
  • MODE: Beacon
  • MODE: Broadcast
  • MODE: ARQ AX25
  • MODE: Gear shifting ARQ
  • TNC: CLI GUI for basic settings
  • TNC: Multicore support
  • MODEM: Sample rate conversion

Setup

Install FreeDV-Socket-TNC directly to home folder and compile codec2 automatically

sudo apt install portaudio19-dev build-essential cmake
wget https://raw.githubusercontent.com/DJ2LS/FreeDV-Socket-TNC/dev/install_socket_tnc.sh -O ~/install_socket_tnc.sh
chmod +x ~/install_socket_tnc.sh
./install_socket_tnc.sh

Usage main program

./main.py --port 3000 --tx 1 --rx 1 --mode 12

Usage TCP/IP socket client

python3 readfromsocket.py --port 3000 --data "GET:RX_BUFFER:0

Socket Commands

SOCKETTEST

Message for testing purposes which repeats:

SOCKETTEST

"WELL DONE! YOU ARE ABLE TO COMMUNICATE WITH THE TNC"

TRANSMIT ARQ MESSAGE 'HELLO!'

ARQ:HELLO!

SET NEW CALLSIGN

SET:MYCALLSIGN:AA1AA

GET CALLSIGN

GET:MYCALLSIGN

GET CALLSIGN CRC8

GET:MYCALLSIGN_CRC8

GET DX CALLSIGN

GET:DXCALLSIGN

GET ARQ STATE

GET:ARQ_STATE

GET RX BUFFER LENGTH / SIZE

GET:RX_BUFFER_LENGTH

GET RX BUFFER

GET:RX_BUFFER:POSITION

Position = 0 --> Latest Data Position 1-N --> Buffer positions

DELETE RX BUFFER

DEL:RX_BUFFER

Other stuff

Audio sinkhole

Send real audio without external devices or sound cards

sudo modprobe snd-aloop index=1,2 enable=1,1 pcm_substreams=1,1 id=CHAT1,CHAT2 

TNC 1

./main.py --port 3000 --tx 1 --rx 1

TNC 2

./main.py --port 3001 --tx 2 --rx 2

Credits

David Rowe and the FreeDV team for developing the modem and libraries FreeDV Codec 2 : https://github.com/drowe67/codec2

This software has been inspired by https://github.com/xssfox/freedv-tnc/