This tool is included in the SERVER install.
BotWave Server is a program designed to manage multiple BotWave clients, allowing for the upload and broadcast of audio files over FM radio using Raspberry Pi devices.
- Python >= 3.9
Warning
Warning: Using BotWave involves broadcasting signals which may be subject to local regulations and laws. It is your responsibility to ensure that your use of BotWave complies with all applicable legal requirements and regulations in your area. Unauthorized use of broadcasting equipment may result in legal consequences, including fines or penalties.
Safety Note: To minimize interference and stay within your intended frequency range, it is strongly recommended to use a band-pass filter when operating BotWave.
Liability: The author of BotWave is not responsible for any damage, loss, or legal issues that may arise from the use of this software. By using BotWave, you agree to accept all risks and liabilities associated with its operation and broadcasting capabilities.
Please exercise caution and ensure you have the proper permissions, equipment, and knowledge of regulations before using BotWave for broadcasting purposes.
We highly recommend using the official installer (Check the main README). If you don't want to or are not using a Linux distribution, find how to install it yourself. (Tip: on Windows, use WSL.)
To start the BotWave Server, use the following command:
bw-server [-h] [--host HOST] [--port PORT] [--fport FPORT] [--pk PK] [--handlers-dir HANDLERS_DIR] [--start-asap | --no-start-asap] [--skip-checks | --no-skip-checks] [--rc RC] [--config CONFIG] [--daemon | --no-daemon]--host: The host address to bind the server to (default:0.0.0.0).--port: The port on which the server will listen (default:9938).--fport: The port on which the file transfer server will listen (default:9921).--pk: Optional passkey for client authentication.--handlers-dir: The directory to retrieves_handlers from (default:/opt/BotWave/handlers/).--start-asap: Start broadcasting as soon as possible. Can cause desync between clients.--skip-checks: Skip checking for protocol updates.--rc: Port for the remote CLI. You can connect remotely to your websocket server via botwave.dpip.lol. For an API documentation, check misc_doc/websocket.md.--config: Path to a config file to load into environment.--daemon: Run in daemon mode (non-interactive).
bw-server --host 0.0.0.0 --port 9938 --pk mypasskeytargets: Specifies the target clients. Can be 'all', a client ID, a hostname, or a comma-separated list of clients (client1,client2,etc).
| Command | Usage | Description |
|---|---|---|
start |
botwave> start <targets> <file> [freq] [loop] [ps] [rt] [pi] |
Starts broadcasting on specified client(s). |
stop |
botwave> stop <targets> |
Stops broadcasting on specified client(s). |
live |
botwave> live <targets> [frequency] [ps] [rt] [pi] |
Start a live broadcast to client(s). |
queue |
botwave> queue ? |
Manages the queue. |
sstv |
botwave> sstv <targets> <image path> [mode] [output wav name] [freq] [loop] [ps] [rt] [pi] |
Start broadcasting an image converted to SSTV (requires pysstv, numpy, pillow). |
morse |
botwave> morse <targets> <text|file path> [wpm] [freq] [loop] [ps] [rt] [pi] |
Start broadcasting text converted to Morse code. |
list |
botwave> list |
Lists all connected clients. |
upload |
botwave> upload <targets> <path/of/file.wav|path/of/folder/> |
Upload a file or a folder's files to specified client(s) (Experimental). |
sync |
botwave> sync <targets|path/of/folder/> <source_target|path/of/folder/> |
Synchronize files across systems from a source (Experimental). |
dl |
botwave> dl <targets> <url> |
Downloads a file from an external URL. |
lf |
botwave> lf <targets> |
Lists broadcastable files on clients. |
rm |
botwave> rm <targets> <filename|all> |
Removes a file from client(s). |
kick |
botwave> kick <targets> [reason] |
Kicks specified client(s) from the server. |
update |
botwave> update <targets> [latest|<version>] |
Request client(s) to update and restart. |
handlers |
botwave> handlers [filename] |
List all handlers or commands in a specific handler file. |
< |
botwave> < <command> |
Run a shell command on the main OS. |
| |
botwave> | <command> |
Run a shell command and pipe each output line as a BotWave command. |
get |
botwave> get <keys|*> |
Get one or more environment variable(s). |
set |
botwave> set <key> <value> [immutable] |
Set an environment variable. |
status |
botwave> status [targets] |
Show server status, and optionally the broadcast status of client(s). |
exit |
botwave> exit |
Stops and exits the BotWave server. |
help |
botwave> help |
Shows the help. |
Warning
upload/synccommand support is experimental. Your client / server connection may crash or act strangely.sstvandmorsecommand modules are not installed by default. Install them with[sudo /opt/BotWave/venv/bin/]pip install pysstv numpy pillow
s_onready: When the server is ready (on startup).s_onstart: When a broadcast has been started.s_onstop: When a broadcast has been stopped (manually).s_onconnect: When a client connects to the server.s_ondisconnect: When a client disconnects from the server.s_onwsjoin: When a remote CLI client connects.s_onwsleave: When a remote CLI client disconnects.s_onexit: When the server exits.
Check misc_doc/handlers.md for a better documentation.