Skip to content

kc1wzq/Hush

Repository files navigation

Hush

A new HF digital ARQ/QSO mode.

Running

Start the control server (TCP JSON, newline-delimited) on 127.0.0.1:53421:

cargo run --release

If you're in an environment without audio devices, use dummy loopback mode:

cargo run --release -- --no-audio

Loopback test (2 modems)

Runs two in-process modems that connect and exchange messages, and writes an audible stereo WAV:

cargo run --release -- --loopback-test --seconds 8 --speed MEDIUM --wav loopback_test.wav

Live loopback (2 TNCs)

Runs two in-process TNCs bridged together. Control each side by setting tnc to 0 or 1 (the terminal does this with the tnc command):

cargo run --release -- --loopback-live --bind 127.0.0.1:53421 --out <output_id>
python hush_term.py --advanced 127.0.0.1 53421

Control protocol (quick)

  • {"cmd":"list_devices"}
  • {"cmd":"open","input":<id>,"output":<id>,"sr":48000}
  • {"cmd":"list_modes"} / {"cmd":"set_mode","mode":"mfsk|fsk2|fsk4|ofdm"}
  • {"cmd":"list_profiles"} / {"cmd":"set_profile","profile":"QRP2|MFSK3|OFDM5|..."}
  • {"cmd":"send_frame","mode":"mfsk","speed":"MEDIUM","payload_bits":"0101..."} (raw MFSK bits for quick testing)
  • {"cmd":"connect","my":"K1ABC","to":"K2XYZ"} / {"cmd":"disconnect"}
  • {"cmd":"send_data","text":"HELLO OVER HUSH"} (framed + CRC + FEC + stop-and-wait ARQ; requires connect)
  • {"cmd":"rx_pop","max":20} (fetch delivered payloads)
  • {"cmd":"status"} / {"cmd":"close"}

Terminal client

hush_term.py is a simple interactive terminal for the control port:

python hush_term.py 127.0.0.1 53421

Advanced terminal features:

python hush_term.py --advanced 127.0.0.1 53421

About

A new HF digital ARQ/QSO mode.

Topics

Resources

License

Stars

21 stars

Watchers

4 watching

Forks

Packages

 
 
 

Contributors