No description
Find a file
2026-07-10 10:21:19 +02:00
LICENSE Initial commit 2026-07-10 10:15:21 +02:00
README.md Revise README for LXMF Signal Echo Bot 2026-07-10 10:20:16 +02:00
README_ENG.txt Add files via upload 2026-07-10 10:21:19 +02:00
README_ITA.txt Add files via upload 2026-07-10 10:21:19 +02:00
rns_sig_bot.py Add files via upload 2026-07-10 10:21:19 +02:00

📡 LXMF Signal Echo Bot

LXMF Bot for Reticulum — Echo, Signal Stats & Network Info

Version Python Reticulum License

Author: F (Reticulum Italia) — Based on MeteoBot v1.0 GitHub: github.com/fr33n0w/meteobot


📖 Description

Signal Echo Bot is an LXMF bot for the Reticulum network offering:

Command Description
🔁 ECHO Echoes back the received message with latency and hops
📶 SIG Shows RSSI, SNR and Link Quality (with RNode LoRa)
📊 STATUS Full report with all available information
HELP Command guide

The bot automatically creates a persistent RNS identity (saved to disk) and listens on Reticulum as an LXMF peer reachable from any compatible client.


🧩 Requirements

  • 🐍 Python 3.7+
  • 📡 Reticulum Network Stack (RNS) already installed and configured
  • ✉️ LXMF (included with RNS or installable separately)

Install dependencies:

pip install rns

If LXMF is not included:

pip install lxmf

⚠️ Note: the bot requires Reticulum to be already configured on the system (config files in ~/.reticulum or /etc/reticulum). For RNode LoRa, configure the interface in the Reticulum configuration file.


⚙️ Installation

1. Create the directory and copy the file:

mkdir ~/rns_sig_bot
cd ~/rns_sig_bot
# copy rns_sig_bot.py here

2. Verify RNS is installed:

python3 -c "import RNS; print(RNS.__version__)"

3. Verify LXMF is available:

python3 -c "import LXMF; print('OK')"

🚀 Launch as User (Interactive Mode)

Launch the bot in interactive mode with guided setup:

cd ~/rns_sig_bot
python3 rns_sig_bot.py

The bot will show an intro screen and ask for:

  • 🏷️ Bot display name
  • ⏱️ Auto-announce interval (seconds)
  • 💰 Incoming message stamp cost (0 = free)

Finally it will display the bot's LXMF address, visible to all clients on the Reticulum network.

🛑 To exit: press Ctrl + C


🤖 Launch as User (Service Mode, No Prompts)

To launch the bot without interaction (e.g. from screen, tmux, or a script):

cd ~/rns_sig_bot
python3 rns_sig_bot.py --service --display_name "Signal Echo Bot" --announce_time 300 --stamp_cost 0

Available parameters

Parameter Description
--display_name "Bot Name" Display name on the network
--announce_time 300 Seconds between auto-announces
--stamp_cost 0 Stamp cost (0-256, 0 = disabled)
--identity ./rns_sig_bot_identity Path to persistent identity file
--storage ./tmp_rns_sig_bot LXMF storage path
--service Enable service mode (no prompts)

🖥️ Launch as systemd Service (Auto-Start on Boot)

1. Create the service file:

sudo nano /etc/systemd/system/rns_sigbot.service

2. Paste the following content (adjust User and WorkingDirectory):

[Unit]
Description=LXMF Signal Echo Bot
After=network.target

[Service]
Type=simple
User=pi
WorkingDirectory=/home/pi/rns_sig_bot
ExecStart=/usr/bin/python3 /home/pi/rns_sig_bot/rns_sig_bot.py --service --display_name "Signal Echo Bot" --announce_time 300 --stamp_cost 0
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target

3. Reload systemd and enable the service:

sudo systemctl daemon-reload
sudo systemctl enable rns_sigbot
sudo systemctl start rns_sigbot

4. Check status:

sudo systemctl status rns_sigbot
sudo journalctl -u rns_sigbot -f

5. Useful commands:

sudo systemctl stop rns_sigbot       # Stop the service
sudo systemctl restart rns_sigbot    # Restart the service
sudo systemctl disable rns_sigbot    # Disable auto-start

💬 Available Commands

From any LXMF client (Sideband, NomadNet, Terminal, etc.) send:

Command Alias Action
echo <text> e <text> 🔁 Echo the message
sig s 📶 Signal statistics
status st 📊 Full report
help h Command guide

Note: the remote client can be any LXMF-compatible application, not just Sideband. Works with NomadNet, custom LXMF clients, etc.


📶 Signal Stats (RSSI / SNR / Q)

Signal values are available ONLY when the bot is connected to Reticulum via an RNode LoRa interface. On TCP/IP, AutoInterface or other non-radio interfaces, values will be N/A.

The displayed signal is INBOUND to the bot: how the bot "hears" the remote node that sent the message.


📁 Generated Files

File / Directory Description
rns_sig_bot_identity Persistent identity private key
./tmp_rns_sig_bot/ LXMF storage (messages, cache, etc.)

🛠️ Troubleshooting

Issue Solution
ModuleNotFoundError: No module named 'RNS' ➡️ pip install rns
ModuleNotFoundError: No module named 'LXMF' ➡️ pip install lxmf
RSSI/SNR always N/A ➡️ Normal without RNode LoRa. Connect an RNode via USB/serial.
Hops = Unknown ➡️ Normal if sender is direct or no transport is active.
Bot does not appear in clients ➡️ Verify Reticulum is running (rnsd or master instance). Verify announce_time is > 0.

📜 License

Based on LXMF Meteo Bot v1.0 by F, Reticulum Italia. Open source code. Modify and distribute freely. 🆓


Made with ❤️ for the Reticulum network 📡