Partyline is een applicatie voor versleutelde groepsspraak die gebruikmaakt van het Reticulum-netwerk en LXST, sterk geïnspireerd door Mumble. De software is ontworpen om audio te transporteren over diverse Reticulum-transporten, mits deze een doorvoer van minimaal 6 kbps hebben.
Belangrijkste functionaliteiten:
- Client-opties: Beschikbaar als zowel GUI- als terminalclient met ondersteuning voor meerdere talen.
- Serverbeheer: Lichtgewicht servers die snel opgestart kunnen worden, met uitgebreide opties voor toegangsbeheer via wachtwoorden, identiteits-hashes en toelatingslijsten.
- Codecs: Ondersteuning voor Opus (voor hoge kwaliteit/snelheid) en Codec2 (voor zeer trage verbindingen tot 700 bps).
- Specialistische kamers:
- Broadcastkamers: Voor hoogwaardige muziek- en audiostreams.
- PTT-kamers (Slow Link): Specifiek geoptimaliseerd voor verbindingen met hoge latentie en lage bandbreedte, zoals LoRa en packet radio.
De applicatie vereist Python 3.11 of nieuwer en kan worden geïnstalleerd via pip of vanuit de broncode. Voor serverbeheerders is er tevens de mogelijkheid om de server als een systemd unit te configureren voor automatische opstart.
Partyline: Groepsspraakapplicatie voor Reticulum
Kenmerken
- Versleutelde realtime groepsspraak: Audio over elk Reticulum-transport dat in staat is tot meer dan 6 kbps.
- Lichtgewicht server en protocol: Eenvoudig te hosten; een Partyline-server kan in minder dan 30 seconden worden opgestart.
- Toegangs- en kanaalbeheer per kamer: Opties voor open toegang, alleen geïdentificeerde gebruikers, toelatingslijsten van identiteits-hashes of een wachtwoord. Servers kunnen daarnaast een algemeen wachtwoord of een toelatingslijst vereisen.
- Dial-in: Wanneer ingeschakeld, kunnen rnphone en andere LXST-clients (zoals Sideband en MeshChatX) de server bellen en direct in een kamer terechtkomen.
- Configureerbare codecs: Elke kamer kan een eigen LXST-codec hebben, configureerbaar door de server. Gebruik Opus voor snelle verbindingen en Codec2 (tot 700 bps) voor langzame verbindingen.
- Clients: Beschikbaar als GUI- en terminalclient met ondersteuning voor meerdere talen.
Installatie
Vereisten: Python 3.11 of nieuwer.
Via pip
Installeer de basisversie:
pip install partyline
Voor een systeembrede 'push-to-talk'-toets, voeg de optionele extra toe:
pip install "partyline[hotkeys]"
De grafische client maakt gebruik van Tk. Pip kan dit niet installeren. Op de meeste besturingssystemen is dit reeds geïnstalleerd. Zo niet, gebruik dan:
- Debian of Ubuntu:
sudo apt install python3-tk
- Fedora:
sudo dnf install python3-tkinter
Installeren vanuit broncode
Vereist Python 3.11 of nieuwer, Reticulum en LXST.
git clone https://github.com/RFnexus/partyline
cd partyline
pip install .
Of installeer via rngit:
git clone rns://4cf8a0651c4d73cacd0f93ac1d95e80a/public/partyline
Voor de systeembrede push-to-talk-toets:
pip install ".[hotkeys]"
Deze installatie voegt drie commando's toe: partyline, partyline-server en partyline-client.
Gebruik
Client
GUI-client starten:
partyline
Via 'Connect' wordt de serverbrowser geopend. Voeg een server toe via de hash of gebruik de browser om ontdekte servers te vinden. Dubbelklik op een kamer om deze te betreden. Onder 'Settings' kunnen audio-apparaten, verzendmodus, de push-to-talk-toets en UI-uiterlijk worden aangepast.
Terminal-client starten:
partyline-client HASH --name Bob --room Lobby
Beschikbare commando's: /join, /say, /poke, /who, /mute, /deaf. Typ /ptt om push-to-talk te schakelen. Operators hebben daarnaast toegang tot: /kick, /ban, /smute, /op en /move.
Server
Een server starten:
partyline-server --name "My server" --profile opus-high
De server toont de destination hash voor clients. Indien dial-in is ingeschakeld, wordt ook het nummer getoond dat rnphone-gebruikers kunnen bellen.
Voor configuraties van kamers, toelatingslijsten, operators, serverwachtwoorden en dial-in: kopieer server_example.json en start de server als volgt:
partyline-server --config server.json
Beschikbare --profile codecs voor kamers:
Voor spraak:
opus-high: Opus voice, 16 kbps
opus-med: Opus voice, 8 kbps
opus-low: Opus voice, 6 kbps
c2-3200: Codec2, 3200 bps
c2-2400: Codec2, 2400 bps
c2-1200: Codec2, 1200 bps
c2-700: Codec2, 700 bps
Voor muziek/streaming:
music-low: Opus music, 14 kbps
music-med: Opus music, 28 kbps
music-high: Opus music, 56 kbps
Richtlijn: Gebruik de hoogste bitrate die uw verbinding aankan. Zie server_example.json voor de volledige lijst met opties.
Installatie als systemd unit
Om de server als systemd unit te installeren, bepaal eerst het servercommando en maak vervolgens het bestand /etc/systemd/system/partyline.service aan:
[Unit]
Description=Partyline voice server
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=partyline
ExecStart=/usr/local/bin/partyline-server --config /home/partyline/server.json
Restart=on-failure
[Install]
WantedBy=multi-user.target
Activeer de service met:
sudo systemctl daemon-reload
sudo systemctl enable --now partyline
Muziek-, Broadcastkamers & Bots
Serveroperators kunnen broadcast-only kamers configureren voor hoogwaardige muziek en audio met behulp van de Opus CELT-profielen van LXST (music-high, music-med, music-low). In deze kamers kunnen alleen specifiek vermelde identiteiten audio verzenden. Voeg hun identiteits-hashes (gescheiden door komma's) toe in het music veld:
{"name": "Broadcast", "profile": "music-med", "music": ["0123456789abcdef0123456789abcdef"], "description": "Music/broadcast room. Only listed identities may talk. Uses LXSTs Opus CELT profile"}
Een voorbeeld van een Music Bot is te vinden onder bots/music_bot.py. Wanneer Partyline via pip is geïnstalleerd, kan deze worden uitgevoerd met:
python3 -m partyline.bots.music_bot
Push-to-Talk (Slow Link) Kamers
PTT-kamers (slow-mode) zijn ontworpen voor langzame verbindingen zoals LoRa, bare copper wire bitbashing en packet radio. Elke verbinding met een stabiele doorvoer van meer dan ~3,5 kbps kan een PTT-kamer gebruiken. Deze kunnen naast reguliere kamers bestaan op één Partyline-server.
In tegenstelling tot reguliere kamers is er bij PTT-kamers sprake van enige latentie. De audio wordt gepakt om de MTU van de verbinding te vullen (minder, maar voller pakketten in plaats van één frame per pakket). Daarnaast krijgen luisteraars een grotere receive jitter buffer om de onregelmatige aankomst van pakketten over radio-media zoals LoRa op te vangen.
Markeer een kamer als push-to-talk met "ptt": true. Optioneel kan "pttjitterms" worden ingesteld om de bufferdiepte aan te passen. Het wordt aangeraden PTT-kamers te gebruiken met de Codec2-profielen.
Voorbeelden:
{"name": "LoRa 1200", "profile": "c2-1200", "ptt": true, "description": "Slow-link push to talk"}
{"name": "Packet Radio Net 700", "profile": "c2-700", "ptt": true, "ptt_jitter_ms": 9000}
LLM-Disclosure Notice
De third-party hosted API van Kimi K3 (https://www.kimi.com/en) is gebruikt voor de volgende taken:
- I18N lokalisatie en UI
gettext() implementatie.
- Vertaling van UI-elementen en van de eo, es, nl en ru PO-bestanden.
- Divers debuggen en het creëren van
rnsconfig.py RNS helper utilities.
UI Vertaling
De .po bestanden bevinden zich in partyline/locale/.
- Om een vertaling bij te werken: wijzig de
msgstr regel onder de Engelse msgid.
- Om een taal toe te voegen: kopieer
partyline.pot naar een nieuw .po bestand en voeg dit toe aan LANGUAGES in partyline/i18n.py.
Voer python partyline/locale/compile.py uit en dien vervolgens een pull request in of stuur de wijzigingen naar het LXMF-adres.
Credits
- Reticulum en LXST: Mark Qvist
- Mumble: Inspiratie voor de UI.
- Iconen: Tree, toolbar en applicatie-iconen van Tabler Icons.
- Geluidsfragmenten: Kenney interface sounds.
- Logo: Tekening van een bliktelefoon via openclipart.org.
Partyline: Groepsspraakapplicatie voor Reticulum
Kenmerken
- Versleutelde realtime groepsspraak: Audio over elk Reticulum-transport dat in staat is tot meer dan 6 kbps.
- Lichtgewicht server en protocol: Eenvoudig te hosten; een Partyline-server kan in minder dan 30 seconden worden opgestart.
- Toegangs- en kanaalbeheer per kamer: Opties voor open toegang, alleen geïdentificeerde gebruikers, toelatingslijsten van identiteits-hashes of een wachtwoord. Servers kunnen daarnaast een algemeen wachtwoord of een toelatingslijst vereisen.
- Dial-in: Wanneer ingeschakeld, kunnen rnphone en andere LXST-clients (zoals Sideband en MeshChatX) de server bellen en direct in een kamer terechtkomen.
- Configureerbare codecs: Elke kamer kan een eigen LXST-codec hebben, configureerbaar door de server. Gebruik Opus voor snelle verbindingen en Codec2 (tot 700 bps) voor langzame verbindingen.
- Clients: Beschikbaar als GUI- en terminalclient met ondersteuning voor meerdere talen.
Installatie
Vereisten: Python 3.11 of nieuwer.
Via pip
Installeer de basisversie:
pip install partyline
Voor een systeembrede 'push-to-talk'-toets, voeg de optionele extra toe:
pip install "partyline[hotkeys]"
De grafische client maakt gebruik van Tk. Pip kan dit niet installeren. Op de meeste besturingssystemen is dit reeds geïnstalleerd. Zo niet, gebruik dan:
- Debian of Ubuntu:
sudo apt install python3-tk
- Fedora:
sudo dnf install python3-tkinter
Installeren vanuit broncode
Vereist Python 3.11 of nieuwer, Reticulum en LXST.
git clone https://github.com/RFnexus/partyline
cd partyline
pip install .
Of installeer via rngit:
git clone rns://4cf8a0651c4d73cacd0f93ac1d95e80a/public/partyline
Voor de systeembrede push-to-talk-toets:
pip install ".[hotkeys]"
Deze installatie voegt drie commando's toe: partyline, partyline-server en partyline-client.
Gebruik
Client
GUI-client starten:
partyline
Via 'Connect' wordt de serverbrowser geopend. Voeg een server toe via de hash of gebruik de browser om ontdekte servers te vinden. Dubbelklik op een kamer om deze te betreden. Onder 'Settings' kunnen audio-apparaten, verzendmodus, de push-to-talk-toets en UI-uiterlijk worden aangepast.
Terminal-client starten:
partyline-client HASH --name Bob --room Lobby
Beschikbare commando's: /join, /say, /poke, /who, /mute, /deaf. Typ /ptt om push-to-talk te schakelen. Operators hebben daarnaast toegang tot: /kick, /ban, /smute, /op en /move.
Server
Een server starten:
partyline-server --name "My server" --profile opus-high
De server toont de destination hash voor clients. Indien dial-in is ingeschakeld, wordt ook het nummer getoond dat rnphone-gebruikers kunnen bellen.
Voor configuraties van kamers, toelatingslijsten, operators, serverwachtwoorden en dial-in: kopieer server_example.json en start de server als volgt:
partyline-server --config server.json
Beschikbare --profile codecs voor kamers:
Voor spraak:
opus-high: Opus voice, 16 kbps
opus-med: Opus voice, 8 kbps
opus-low: Opus voice, 6 kbps
c2-3200: Codec2, 3200 bps
c2-2400: Codec2, 2400 bps
c2-1200: Codec2, 1200 bps
c2-700: Codec2, 700 bps
Voor muziek/streaming:
music-low: Opus music, 14 kbps
music-med: Opus music, 28 kbps
music-high: Opus music, 56 kbps
Richtlijn: Gebruik de hoogste bitrate die uw verbinding aankan. Zie server_example.json voor de volledige lijst met opties.
Installatie als systemd unit
Om de server als systemd unit te installeren, bepaal eerst het servercommando en maak vervolgens het bestand /etc/systemd/system/partyline.service aan:
[Unit]
Description=Partyline voice server
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=partyline
ExecStart=/usr/local/bin/partyline-server --config /home/partyline/server.json
Restart=on-failure
[Install]
WantedBy=multi-user.target
Activeer de service met:
sudo systemctl daemon-reload
sudo systemctl enable --now partyline
Muziek-, Broadcastkamers & Bots
Serveroperators kunnen broadcast-only kamers configureren voor hoogwaardige muziek en audio met behulp van de Opus CELT-profielen van LXST (music-high, music-med, music-low). In deze kamers kunnen alleen specifiek vermelde identiteiten audio verzenden. Voeg hun identiteits-hashes (gescheiden door komma's) toe in het music veld:
{"name": "Broadcast", "profile": "music-med", "music": ["0123456789abcdef0123456789abcdef"], "description": "Music/broadcast room. Only listed identities may talk. Uses LXSTs Opus CELT profile"}
Een voorbeeld van een Music Bot is te vinden onder bots/music_bot.py. Wanneer Partyline via pip is geïnstalleerd, kan deze worden uitgevoerd met:
python3 -m partyline.bots.music_bot
Push-to-Talk (Slow Link) Kamers
PTT-kamers (slow-mode) zijn ontworpen voor langzame verbindingen zoals LoRa, bare copper wire bitbashing en packet radio. Elke verbinding met een stabiele doorvoer van meer dan ~3,5 kbps kan een PTT-kamer gebruiken. Deze kunnen naast reguliere kamers bestaan op één Partyline-server.
In tegenstelling tot reguliere kamers is er bij PTT-kamers sprake van enige latentie. De audio wordt gepakt om de MTU van de verbinding te vullen (minder, maar voller pakketten in plaats van één frame per pakket). Daarnaast krijgen luisteraars een grotere receive jitter buffer om de onregelmatige aankomst van pakketten over radio-media zoals LoRa op te vangen.
Markeer een kamer als push-to-talk met "ptt": true. Optioneel kan "pttjitterms" worden ingesteld om de bufferdiepte aan te passen. Het wordt aangeraden PTT-kamers te gebruiken met de Codec2-profielen.
Voorbeelden:
{"name": "LoRa 1200", "profile": "c2-1200", "ptt": true, "description": "Slow-link push to talk"}
{"name": "Packet Radio Net 700", "profile": "c2-700", "ptt": true, "ptt_jitter_ms": 9000}
LLM-Disclosure Notice
De third-party hosted API van Kimi K3 (https://www.kimi.com/en) is gebruikt voor de volgende taken:
- I18N lokalisatie en UI
gettext() implementatie.
- Vertaling van UI-elementen en van de eo, es, nl en ru PO-bestanden.
- Divers debuggen en het creëren van
rnsconfig.py RNS helper utilities.
UI Vertaling
De .po bestanden bevinden zich in partyline/locale/.
- Om een vertaling bij te werken: wijzig de
msgstr regel onder de Engelse msgid.
- Om een taal toe te voegen: kopieer
partyline.pot naar een nieuw .po bestand en voeg dit toe aan LANGUAGES in partyline/i18n.py.
Voer python partyline/locale/compile.py uit en dien vervolgens een pull request in of stuur de wijzigingen naar het LXMF-adres.
Credits
- Reticulum en LXST: Mark Qvist
- Mumble: Inspiratie voor de UI.
- Iconen: Tree, toolbar en applicatie-iconen van Tabler Icons.
- Geluidsfragmenten: Kenney interface sounds.
- Logo: Tekening van een bliktelefoon via openclipart.org.