70 lines
2.4 KiB
Markdown
70 lines
2.4 KiB
Markdown
# LXST Client
|
|
|
|
Single-file Python application for managing LXST Channel connections via Reticulum Network (RNS) and LXMF protocols. Supports CLI and Whisplay HAT GUI modes.
|
|
|
|
## Running (CLI mode, default)
|
|
|
|
python client.py [-c CONFIGDIR] [-w WHITELIST]
|
|
|
|
Options:
|
|
-c, --config : config directory (default: ~/.lxst-client or /etc/lxst-client)
|
|
-w, --whitelist : path to bridge_whitelist.json
|
|
-v, --verbose : enable debug logging
|
|
--rnsconfig : alternative Reticulum config directory
|
|
--whisplay, -W : enable Whisplay HAT GUI mode
|
|
|
|
## Running (Whisplay GUI mode)
|
|
|
|
python client.py -W [-c CONFIGDIR] [-w WHITELIST]
|
|
|
|
## CLI Commands
|
|
|
|
Inside the interactive client:
|
|
d Discover channels from whitelist
|
|
l List discovered channels
|
|
<NUM> Connect to channel at index NUM (1-based)
|
|
h / ? Show help
|
|
q Quit
|
|
|
|
## Whisplay GUI Controls
|
|
|
|
### Channel list (STATE_READY)
|
|
|
|
Short press (<1s) Cycle to next channel in list
|
|
Long press (>=1s) Call the selected channel
|
|
|
|
### In call (STATE_IN_CALL) — Push-to-Talk mode (default)
|
|
|
|
Press & hold Talk (unmute microphone)
|
|
Release Stop talking (mute microphone)
|
|
Double-press Toggle to always-on mode
|
|
|
|
### In call — Always-on mode (toggled)
|
|
|
|
Press Hang up
|
|
Double-press Toggle to push-to-talk mode
|
|
|
|
### RGB LED indicates state:
|
|
Blue = ready, showing channels
|
|
Orange = calling
|
|
Green = in call
|
|
Yellow = transmitting (PTT mode, mic active)
|
|
|
|
## Initial Setup Order
|
|
|
|
1. Ensure ~/.lxst-client or /etc/lxst-client exists
|
|
2. Place bridge_whitelist.json in either directory (or pass with -w)
|
|
3. First run creates identity automatically at configdir/identity
|
|
4. In CLI mode: run `python client.py` then `d` to discover channels
|
|
5. In GUI mode: run `python client.py -W` — auto-discovers on startup
|
|
6. Messages appear in configdir/lxmf/
|
|
|
|
## Known quirks
|
|
|
|
- If bridge_whitelist.json is missing, client prints an error and returns.
|
|
- Identity is auto-generated on first run if not present.
|
|
- Use -v for RNS debug output (path discovery is verbose here).
|
|
- Path discovery waits up to 10s for relays; increase timeout in client code if needed.
|
|
- Whisplay mode requires Pillow and the Whisplay runtime (whisplay.py / whisplay_client.py).
|
|
- Falls back to CLI gracefully if Whisplay hardware or dependencies are unavailable.
|