# Command Line Options Wsprry Pi normally runs as a `systemd` service, but you can also work with it directly from the shell for testing, calibration, and one-off transmissions. :::{note} Only one instance of Wsprry Pi may run on the system at the same time. ::: --- ## `systemd` Service The `wsprrypi` executable is managed by Linux `systemd`. It runs in the background after boot, and only one instance is allowed at a time. Stop the daemon before running manual CLI commands. Useful commands: - `sudo systemctl status wsprrypi` Show current status and recent logs. - `sudo systemctl restart wsprrypi` Restart the daemon and reload configuration. - `sudo systemctl stop wsprrypi` Stop the daemon. It will start again on reboot unless disabled. - `sudo systemctl start wsprrypi` Start the daemon manually. - `sudo systemctl disable wsprrypi` Prevent daemon startup on boot. - `sudo systemctl enable wsprrypi` Enable daemon startup on boot. --- ## Command Line Overview The CLI supports two primary modes: - **Direct CLI mode** Run WSPR or CW-based transmissions directly. - **INI (daemon-style) mode** Use `-i` to load and monitor a configuration file. ### Usage ```text (sudo) wsprrypi [options] CALLSIGN GRID POWER FREQ [FREQ...] (sudo) wsprrypi -i /path/to/wsprrypi.ini (sudo) wsprrypi --test-tone RF_FREQ [backend/options] (sudo) wsprrypi --mode QRSS --cw-message TEXT --cw-base-frequency FREQ ``` --- ## Common Examples - `wsprrypi --help` Display help text. - `sudo wsprrypi --test-tone 780e3` Transmit a constant RF tone at 780 kHz. - `sudo wsprrypi N9NNN EM10 33 20m` Transmit a single WSPR message. - `sudo wsprrypi --use-ntp N9NNN EM10 33 20m` Use NTP calibration before transmission. - `sudo wsprrypi --repeat --offset --use-ntp N9NNN EM10 33 40m` Continuous transmissions with offset randomization. --- ## Positional Arguments These are required for direct WSPR transmission unless provided via INI: - **CALLSIGN** Your callsign or supported WSPR identity form. Standard Type 1 WSPR messages use a normal callsign that fits the classic WSPR field. When the supplied identity cannot be represented as a single Type 1 message, the planner can use paired WSPR message planning where supported. This allows Type 2 and Type 3 message forms for extended callsign/grid combinations rather than requiring every direct CLI transmission to fit the older six-character Type 1-only form. - **GRID** Maidenhead grid square or locator value used by the WSPR planner. Standard Type 1 messages use the normal four-character Maidenhead grid square. For identities that require paired planning, the grid and callsign are evaluated together so the planner can select the appropriate Type 2/Type 3-capable message strategy when available. - **POWER** Transmit power in dBm. The value is rounded to valid WSPR steps and included in the transmitted WSPR message where the selected message type supports it. - **FREQ** One or more frequencies or band aliases. Examples: `20m`, `14097100`, `0` (skip slot) --- ## General Options - `-h`, `--help` Display help text and exit. This is processed early and does not require root. - `-v`, `--version` Print version information and exit. - `-i`, `--ini-file ` Load configuration from an INI file. When used, CLI transmission options are disabled or restricted, and the program runs in daemon-style mode. - `-r`, `--repeat` Repeat transmissions indefinitely in direct CLI mode. - `-x`, `--terminate ` Stop after a specified number of transmissions. - `-J`, `--journald` Send logs to the systemd journal instead of stdout. - `-D`, `--date-time-log` Prefix log lines with UTC timestamps. - `--debug-logging`, `--no-debug-logging` Enable or disable debug-level logging output. --- ## WSPR Behavior - `--planner-preference ` Controls WSPR message planning. The default `auto` mode uses a normal single WSPR frame when possible and allows the planner to choose paired handling when needed. `prefer_paired` asks the planner to use paired handling when it is available. `require_paired` rejects a transmission if the supplied identity cannot be represented with the paired-message strategy. - `-o`, `--offset` Apply a small random frequency offset to reduce collisions. - `--no-offset` Disable random offset. ### WSPR Message Types The CLI is no longer limited to classic Type 1-only callsign handling. Direct CLI WSPR input is passed through the same WSPR planning path used by the rest of the application. - **Type 1** is the normal single-frame WSPR message form for standard callsign, grid, and power combinations. - **Type 2** supports compound or extended identity cases by transmitting a callsign-hash-oriented frame as part of a paired strategy. - **Type 3** supports the complementary extended identity information needed for paired decoding. For ordinary callsigns and four-character grid squares, no special option is usually needed. For identities that require Type 2/Type 3 handling, use `--planner-preference` when you want to prefer or require paired planning. --- ## Backend Selection - `--backend ` Select RF output method. - `gpio`: Direct RF from Raspberry Pi GPIO (limited models). - `si5351`: External clock generator via I2C. - `--power-level ` Set transmit power for the active backend: - GPIO: 0–7 - Si5351: 1–4 - `--gpio-power-level <0-7>` Explicitly set GPIO drive strength. - `--si5351-power-level <1-4>` Set Si5351 output drive strength. --- ## GPIO Backend - `--transmit-gpio <4\|20>` Select GPIO pin used for RF output. - `--transmit-pin <4\|20>` Legacy alias for transmit GPIO. - `-n`, `--use-ntp` Enable NTP-based frequency calibration. - `--no-use-ntp` Disable NTP calibration and use manual PPM. - `-p`, `--ppm ` Apply manual frequency correction (-200 to 200 ppm). --- ## Si5351 Backend - `--si5351-i2c-bus ` Select I2C bus (default: 1). - `--si5351-i2c-address ` Set device address (decimal or hex). - `--si5351-reference-frequency ` Define reference oscillator frequency. - `--si5351-tx-output ` Select output clock. This option is not exposed in the Web UI. --- ## CW / QRSS / FSKCW / DFCW Modes - `--mode ` Select transmission mode. - `--cw-message ` Message to transmit in CW-based modes. - `--cw-base-frequency ` Base RF frequency. Supports Hz, kHz, MHz, GHz suffixes. - `--cw-shift-hz ` Frequency shift for FSK-based modes. - `--cw-dot-seconds ` Length of a Morse "dot". ### Timing - `--cw-start-minute <0-59>` Start minute for scheduled transmissions. - `--cw-repeat-minutes ` Interval between transmissions. ### Spacing - `--cw-intra-element-gap ` Gap between elements of a character. - `--cw-inter-character-gap ` Gap between characters. - `--cw-inter-word-gap ` Gap between words. ### Envelope Control - `--cw-fade-shape ` Shape of amplitude transitions. - `--cw-fade-in-ms ` Fade-in duration. - `--cw-fade-out-ms ` Fade-out duration. - `--cw-fade-slice-ms ` Resolution of fade steps. --- ## Service and GPIO Controls - `--no-web` Disable Web UI and WebSocket server. - `-w`, `--web-port ` HTTP REST API port (default: 31415). - `-k`, `--socket-port ` WebSocket port (default: 31416). - `-l`, `--led_pin ` Set TX LED GPIO. - `--led-pin ` Alias for LED pin. - `--use-led`, `--no-led` Enable or disable LED. - `-s`, `--shutdown_button ` Set shutdown button GPIO. - `--shutdown-button ` Alias. - `--use-shutdown`, `--no-shutdown` Enable or disable shutdown monitoring. --- ## Test Tone - `-t`, `--test-tone ` Generate a continuous RF tone. Useful for calibration and testing. --- ## Notes - CLI options override INI values unless restricted. - Some advanced features are CLI-only. - Root privileges (`sudo`) are required for RF output.