RIGCTL(1)

πŸ“¦
version 4.7.2 Β· 5 versions
, in alpine 3.24, arch rolling, nixos 26.05, nixpkgs unstable, opensuse-leap 16.0, ubuntu stonking

🌸 RIGCTL β€” the rigctl page, bestie edition 🌸

okay so you're looking at rigctl, part of the Hamlib utilities, and I'm gonna walk you through the entire thing like we're texting at 2am. grab a snack πŸ“


✨ NAME ✨

rigctl β€” control radio transceivers and receivers πŸ‘‘


✨ SYNOPSIS ✨

rigctl [-hiIlLnouV] [-m id] [-r device] [-p device] [-d device]
       [-P type] [-D type] [-s baud] [-c id] [-t char] [-C parm=val] -Y
       [-v[-Z]] [command|-]

✨ DESCRIPTION ✨

So basically: you use this to control radio transceivers and receivers. rigctl will happily take commands straight from the command line, or it'll drop into interactive mode if you didn't hand it any commands. both vibes are valid πŸ’…

Important reality check though, bestie: Hamlib is BETA level software. no cap. a lot of the backend libraries don't have complete rig support, but the basic functions are usually well supported, so it's giving "works, mostly, don't come for me." 😭

Please report bugs and send feedback to the e-mail address in the BUGS section below. and if you've got patches or code enhancements? send those to the same address, they're literally welcome 🫢


✨ OPTIONS ✨

This program follows the usual GNU command line syntax. so: short options that take an argument can have the value follow immediately, or you can separate them with a space. Long options that start with two dashes (β€˜-’) require an β€˜=’ between the option and any argument. yes, it's that serious about the equal sign.

Here's the rundown of everything it supports:

  • -m, --model=id β€” pick your radio model number. defaults to the dummy rig.

Peep the model list with β€œrigctl -l”.

Note: rigctl (or third party software using the C API) will use radio model 2 for NET rigctl (i.e. when it's communicating with rigctld).

  • -r, --rig-file=device β€” use device as the file name of the port that's connected to the radio.

Typically things like /dev/ttyS0, /dev/ttyS1, /dev/ttyUSB0, etc. on Linux, or COM1, COM2, etc. on MS Windows. The BSD flavors and Mac OS/X have their own designations β€” go read your system's documentation, iykyk.

It can also be a network address:port, e.g. 127.0.0.1:12345 🌐

There's a special string β€œuh-rig” you can pass in to enable micro-ham device support. cute.

  • -p, --ptt-file=device β€” use device as the file name of the Push-To-Talk device, using a device file exactly like described above.
  • -d, --dcd-file=device β€” use device as the file name of the Data Carrier Detect device, again using a device file like described above.
  • -P, --ptt-type=type β€” set the type of Push-To-Talk device.

Supported types are β€˜RIG’ (CAT command), β€˜DTR’, β€˜RTS’, β€˜PARALLEL’, β€˜CM108’, β€˜GPIO’, β€˜GPION’, β€˜NONE’ β€” and this overrides the PTT type defined in the rig's backend.

Some side effects, and you need to know these: when the type is set to DTR, reading PTT state comes from the Hamlib frontend, not from the radio. And when it's set to NONE, PTT state cannot be read or set at all β€” even if the rig backend supports reading/setting PTT status from the rig. πŸ’€

  • -D, --dcd-type=type β€” set the type of Data Carrier Detect device.

Supported types are β€˜RIG’ (CAT command), β€˜DSR’, β€˜CTS’, β€˜CD’, β€˜PARALLEL’, β€˜CM108’, β€˜GPIO’, β€˜GPION’, β€˜NONE’.

  • -s, --serial-speed=baud β€” set serial speed to baud rate.

It uses the maximum serial speed from the radio backend capabilities (the ones set by -m above) as the default.

  • -c, --civaddr=id β€” use id as the CI-V address to communicate with the rig.

Only useful for Icom and some Ten-Tec rigs. very specific queen behavior πŸ‘‘

Note: the id is in decimal notation, unless you prefix it with 0x, in which case it's hexadecimal.

  • -t, --send-cmd-term=char β€” change the termination char for text protocol when using the send_cmd command.

The default value is ASCII CR (β€˜0x0D’). ASCII non-printing characters can be given as the ASCII number in hexadecimal format prepended with β€œ0x”. You may pass an empty string for no termination char at all. And the string β€œ-1” tells rigctl to switch to binary protocol. See the send_cmd command for further explanation.

For example, to specify a command terminator for Kenwood style text commands, pass β€œ-t ';'” to rigctl. See EXAMPLE below. ✨

  • -L, --show-conf β€” list all config parameters for the radio you defined with -m above.
  • -C, --set-conf=parm=val[,parm=val] β€” set configuration parameter(s). some common ones are:
    • async:True enables asynchronous data transfer for backends that support it. This allows use of transceive and spectrum data.
    • auto_power_on:True enables compatible rigs to be powered up on open
    • auto_power_off:True enables compatible rigs to be powered down on close
    • auto_disable_screensaver:True enables compatible rigs to have their screen saver disabled on open
    • dcd_type β€” Data Carrier Detect (or squelch) interface type override
    • dcd_pathname β€” Path name to the device file of the Data Carrier Detect (or squelch)
    • disable_yaesu_bandselect:True disables the automatic band select on band change for Yaesu rigs
    • dtr_state:ON turns on DTR, OFF turns it off, Unset disables it
    • freq_skip:!=0 skips setting freq on TX_VFO when in RX and on RX_VFO when in TX β€” for use with gpredict and rigs that do not have TARGETABLE_VFO
    • lo_freq β€” Frequency to add to the VFO frequency for use with a transverter
    • post_write_delay β€” Delay in ms between each command sent out
    • ptt_share:True enables ptt port to be shared with other apps
    • ptt_type β€” Push-To-Talk interface type override
    • ptt_pathname β€” Path name to the device file of the Push-To-Talk
    • ptt_bitnum β€” Push-To-Talk GPIO bit number
    • retry β€” Max number of retry
    • rts_state:ON turns on DTR, OFF turns it off, Unset disables it
    • twiddle_timeout β€” For satellite ops when VFOB is twiddled will pause VFOB commands until timeout
    • twiddle_rit β€” Suppress get_freq on VFOB for RIT tuning satellites
    • timeout β€” Timeout in ms
    • write_delay β€” Delay in ms between each byte sent out
    • tuner_control_pathname β€” Path name to a script/program to control a tuner with 1 argument of 0/1 for Tuner Off/On

Use the -L option above to get a list of configuration parameters for a given model number. πŸ”

  • -u, --dump-caps β€” dump capabilities for the radio you defined with -m above, then exit.
  • -l, --list β€” list all model numbers defined in Hamlib, then exit.

The list is sorted by model number. organized queen πŸ“‹

Note: In Linux the list can be scrolled back using Shift+PageUp/Shift+PageDown, or using the scrollbars of a virtual terminal in X or the cmd window in Windows. The output can be piped to more(1) or less(1), e.g. β€œrigctl -l | more”.

  • -o, --vfo β€” enable vfo mode.

An extra VFO argument will be required in front of each appropriate command (except set_vfo). Otherwise, when this option isn't set and an extra VFO argument isn't used, β€˜currVFO’ is used instead.

  • -n, --no-restore-ai β€” on exit, rigctl restores the state of auto information (AI) on the controlled rig.

If you don't want that β€” like, say, if you're using rigctl to turn AI mode on or off β€” pass this option.

  • -i, --read-history β€” read previously saved command and argument history from a file (default $HOME/.rigctl_history) for the current session.

Available when rigctl is built with Readline support (see READLINE below).

Note: to read a history file stored in another directory, set the RIGCTL_HIST_DIR environment variable, e.g. β€œRIGCTL_HIST_DIR=~/tmp rigctl -i”. When RIGCTL_HIST_DIR is not set, the value of HOME is used.

  • -I, --save-history β€” write current session (and previous session(s), if the -i option is given) command and argument history to a file (default $HOME/.rigctl_history) at the end of the current session.

Complete commands with arguments are saved as a single line, so you can recall them and use or edit them. Available when rigctl is built with Readline support (see READLINE below).

Note: to write a history file in another directory, set the RIGCTL_HIST_DIR environment variable, e.g. β€œRIGCTL_HIST_DIR=~/tmp rigctl -IRq. When RIGCTL_HIST_DIR is not set, the value of HOME is used.

  • -v, --verbose β€” set verbose mode, cumulative (see DIAGNOSTICS below).
  • -Y,--ignore-err β€” ignores rig open errors πŸ™ˆ
  • -Z, --debug-time-stamps β€” enable time stamps for the debug messages.

Use only in combination with the -v option, because on its own it generates no output at all.

  • -h, --help β€” show a summary of these options and exit.
  • -V, --version β€” show version of rigctl and exit.
  • -!, --cookie β€” sets the cookie to be used for remote access security πŸͺ
  • -#, --skip_init β€” skips most startup initialization.
  • - β€” stop option processing and read commands from standard input.

See Standard Input below.

Note: Some options may not be implemented by a given backend and will return an error. This is most likely to occur with the --set-conf and --show-conf options.

Also please note that the backend for the radio you're controlling β€” or the radio itself β€” may not support some commands. In that case, the operation will fail with a Hamlib error code. that's just how it is bestie 😭


✨ COMMANDS ✨

Commands can be entered either as a single char, or as a long command name. They are not prefixed with a dash, unlike the options. You can type them in when you're in interactive mode, or pass them as argument(s) in command line interface mode. In interactive mode, commands and their arguments may be entered on a single line:

M LSB 2400

Since most of the Hamlib operations have a set and a get method, a single upper case letter is used for set methods, whereas the corresponding single lower case letter refers to the get method. Each operation also has a long name; in interactive mode, prepend a backslash, β€˜\’, to enter a long command name all lower case.

Example: use β€œ\dump_caps” to see what capabilities this radio and backend support. iconic.

Note: The backend for the radio to be controlled, or the radio itself may not support some commands. In that case, the operation will fail with a Hamlib error message.

✨ Standard Input ✨

As an alternative to the READLINE interactive command entry, or doing a single command per run, rigctl has a special option where a single dash (β€˜-’) may be used to read commands from standard input (stdin). Commands must be separated by whitespace, similar to the commands you'd give on the command line. Comments may be added using the β€˜#’ character β€” all text up until the end of the current line, including the β€˜#’ character itself, is ignored. 🧚

A simple example (typed text is in bold):

ok so here's how that plays out irl bestie</p> πŸ’–

$ cat <<.EOF. >cmds.txt
> # File of commands
> v f m   # query rig
> V VFOB F 14200000 M CW 500  # set rig
> v f m   # query rig
> .EOF.

$ rigctl -m1 - <cmds.txt

v VFOA

f 145000000

m FM
15000

V VFOB
F 14200000
M CW 500
v VFOB

f 14200000

m CW
500

$

🌈 rigctl Commands 🌈

here's the full rundown of every command, no gatekeeping: in set commands the quoted italicized string gets swapped for the actual value you wanna feed it, and in get commands that quoted italicized string is literally the key name of the value that comes back to you. πŸŽ€

  • Q, q, exit rigctl β€” dips out of rigctl when you're in interactive mode. ✌️ When rigctl is driving the rig itself, it closes the rig backend and the port. But when rigctl is hooked up to rigctld (that's radio model 2), it just closes the TCP/IP connection to rigctld β€” and rigctld keeps on living, ready and available for another TCP/IP network connection. iconic behavior honestly.
  • F, set_freq 'Frequency' β€” sets 'Frequency', in Hz. Frequency can be a floating point or an integer value, ur call bestie. πŸ’…
  • f, get_freq β€” gets 'Frequency', in Hz. Returns an integer value and the VFO hamlib thinks is active. ⚠️ lowkey important: some rigs (like, all the Icoms) cannot track the current VFO, so hamlib can get out of sync with the rig if the user goes and presses rig buttons like the VFO. rigctld clients should make sure they set the intended VFO or use vfo mode. no cap.
  • M, set_mode 'Mode' 'Passband' β€” sets 'Mode' and 'Passband'. Mode is a token: USB, LSB, CW, CWR, RTTY, RTTYR, AM, FM, WFM, AMS, PKTLSB, PKTUSB, PKTFM, ECSSUSB, ECSSLSB, FA, SAM, SAL, SAH, DSB. Passband is in Hz as an integer, -1 for no change, or 0 for the radio backend default. FYI the IC7300 can use 1,2,3 to pick which filter to use. πŸ‘€ Note note note: passing a ? (query) as the first argument instead of a Mode token returns a space separated list of radio backend supported Modes β€” use this to figure out which Modes a given radio backend actually supports. πŸ¦‹
  • m, get_mode β€” gets 'Mode' and 'Passband'. Comes back with Mode as a token and Passband in Hz, same as in set_mode above. ✨
  • V, set_vfo 'VFO' β€” sets 'VFO'. VFO is a token: VFOA, VFOB, VFOC, currVFO, VFO, MEM, Main, Sub, TX, RX, MainA, MainB, MainC, SubA, SubB SubC. In VFO mode (that's the --vfo option above πŸ‘†) you only need a single VFO parameter, like this:
$ rigctl -m 2029 -r /dev/rig -o

Rig command: V
VFO: VFOB

Rig command:
  • v, get_vfo β€” gets the current 'VFO'. Returns VFO as a token, same as in set_vfo above. πŸ’œ
  • J, set_rit 'RIT' β€” sets 'RIT'. RIT is in Hz and can be + or -. A value of 0 resets RIT (that's Receiver Incremental Tuning, slay) to match the VFO frequency. Note: RIT needs to be explicitly activated or deactivated with the set_func command β€” this lets you set the RIT offset independently of its activation, and lets RIT stay active while you set the offset to 0. 🌸
  • j, get_rit β€” gets 'RIT' in Hz. The value returned is an integer.
  • Z, set_xit 'XIT' β€” sets 'XIT'. XIT is in Hz and can be + or -. A value of 0 resets XIT (Transmitter Incremental Tuning) to match the VFO frequency. Note: XIT needs to be explicitly activated or deactivated with the set_func command β€” this lets you set the XIT offset independently of its activation, and lets XIT stay active while you set the offset to 0. 🌸
  • z, get_xit β€” gets 'XIT' in Hz. The value returned is an integer.
  • T, set_ptt 'PTT' β€” sets 'PTT'. PTT is a value: 0 (RX), 1 (TX), 2 (TX mic), or 3 (TX data). πŸ”₯
  • t, get_ptt β€” gets 'PTT' status. Returns PTT as a value, same as in set_ptt above.
  • S, set_split_vfo 'Split' 'TX VFO' β€” sets 'Split' mode. Split is either 0 = Normal or 1 = Split. Also sets 'TX VFO'. TX VFO is a token: VFOA, VFOB, VFOC, currVFO, VFO, MEM, Main, Sub, TX, RX.
  • s, get_split_vfo β€” gets 'Split' mode. Split is either 0 = Normal or 1 = Split. Also gets 'TX VFO'. TX VFO is a token, same as in set_split_vfo above.
  • I, set_split_freq 'Tx Frequency' β€” sets 'TX Frequency', in Hz. Frequency can be a floating point or an integer value. πŸ’«
  • i, get_split_freq β€” gets 'TX Frequency', in Hz. Returns an integer value.
  • K, set_split_freq_mode 'TX Frequency' 'TX Mode' 'TX Passband' β€” sets 'TX Frequency', 'TX Mode' and 'TX Passband'. Peep set_split_mode for more info. πŸ‘‘
  • k, get_split_freq_mode β€” gets the current split settings.
  • X, set_split_mode 'TX Mode' 'TX Passband' β€” sets 'TX Mode' and 'TX Passband'. TX Mode is a token: USB, LSB, CW, CWR, RTTY, RTTYR, AM, FM, WFM, AMS, PKTLSB, PKTUSB, PKTFM, ECSSUSB, ECSSLSB, FA, SAM, SAL, SAH, DSB. TX Passband is in Hz as an integer, or 0 for the radio backend default. Note: passing a ? (query) as the first argument instead of a TX Mode token returns a space separated list of radio backend supported TX Modes β€” use this to figure out the supported TX Modes of a given radio backend. πŸ¦‹
  • x, get_split_mode β€” gets 'TX Mode' and 'TX Passband'. Returns TX Mode as a token and TX Passband in Hz, same as in set_split_mode above. ✨
  • Y, set_ant 'Antenna' 'Option' β€” sets 'Antenna' and 'Option'. Number is 1-based antenna# (1, 2, 3, ...). Option depends on the rig. For Icom it probably sets the Tx & Rx antennas like on the IC-7851. See your manual for rig specific option values β€” most rigs don't care about the option at all. For the IC-7851, FTDX3000 (and maybe others) it means this:
1 = TX/RX = ANT1  FTDX3000=ANT1/ANT3
2 = TX/RX = ANT2  FTDX3000=ANT2/ANT3
3 = TX/RX = ANT3  FTDX3000=ANT3
4 = TX/RX = ANT1/ANT4
5 = TX/RX = ANT2/ANT4
6 = TX/RX = ANT3/ANT4
  • y, get_ant 'Antenna' β€” gets 'Antenna'. A value of 0 for Antenna returns the current TX antenna.
> 0 is 1-based antenna# (1, 2, 3, ...). 🫢

The Option that comes back depends on the rig. For Icom it's likely the RX only flag.

  • b, send_morse 'Morse' β€” sends 'Morse' symbols. For Yaesu rigs use memory# (1-5 for most rigs) or up to a 50 char message (which will use memory#1). Example from the command line:
rigctl -m 3073 -r /dev/ttyUSB0 b "CQ CQ DE ME"

Yaesu example to send message#1:

rigctl -m 1035 -r /dev/ttyUSB0 b 1
  • 0xbb, stop_morse β€” stops sending the current morse code. πŸ›‘
  • 0xbc, wait_morse β€” waits for morse to finish β€” only works on full break-in.
  • 0x94, send_voice_mem 'Msgnum' β€” has the rig transmit internal message 'Msgnum'. πŸŽ™οΈ
  • 0xab, stop_voice_mem β€” stops transmission of the internal message.
  • 0x8b, get_dcd β€” gets 'DCD' (squelch) status: 0 (Closed) or 1 (Open).
  • 0x8d, set_twiddle 'Timeout' β€” sets the twiddle 'Timeout' in seconds. ⏱️
  • 0x8e, get_twiddle β€” gets the twiddle 'Timeout' in seconds.
  • R, set_rptr_shift 'Rptr Shift' β€” sets 'Rptr Shift'. Rptr Shift is one of: +, -, or something else for None. 🌈
  • r, get_rptr_shift β€” gets 'Rptr Shift'. Returns +, -, or None.
  • O, set_rptr_offs 'Rptr Offset' β€” sets 'Rptr Offset', in Hz.
  • o, get_rptr_offs β€” gets 'Rptr Offset', in Hz.
  • C, set_ctcss_tone 'CTCSS Tone' β€” sets 'CTCSS Tone', in tenths of Hz.
  • c, get_ctcss_tone β€” gets 'CTCSS Tone', in tenths of Hz.
  • D, set_dcs_code 'DCS Code' β€” sets 'DCS Code'.
  • d, get_dcs_code β€” gets 'DCS Code'.
  • 0x90, set_ctcss_sql 'CTCSS Sql' β€” sets 'CTCSS Sql' tone, in tenths of Hz.
  • 0x91, get_ctcss_sql β€” gets 'CTCSS Sql' tone, in tenths of Hz.
  • 0x92, set_dcs_sql 'DCS Sql' β€” sets 'DCS Sql' code.
  • 0x93, get_dcs_sql β€” gets 'DCS Sql' code.
  • 0x95, set_cache 'Timeout' β€” sets cache timeout in ms. πŸ’…
  • 0x96, get_cache β€” gets cache timeout in ms.
  • 0x97, uplink 'Uplink' β€” sets the uplink VFO to 'Uplink' (1=Sub, 2=Main).
  • N, set_ts 'Tuning Step' β€” sets 'Tuning Step', in Hz.
  • n, get_ts β€” gets 'Tuning Step', in Hz.
  • U, set_func 'Func' 'Func Status' β€” sets 'Func' and 'Func Status'. Func is a token: ABM, AFC, AFLT, AIP, ANF, ANL, APF, ARO, BC2, BC, COMP, CSQL, DIVERSITY, DSQL, DUAL_WATCH, FAGC, FBKIN, LOCK, MBC, MN, MON, MUTE, NB2, NB, NR, OVF_STATUS, RESUME, REV, RF, RIT, SATMODE, SBKIN, SCEN, SCOPE, SEND_MORSE, SEND_VOICE_MEM, SPECTRUM, SPECTRUM_HOLD, SQL, SYNC, TBURST, TONE, TRANSCEIVE, TSQL, TUNER, VOX, VSC, XIT. πŸ’…

Okay so the rest of the Func tokens? Say less, bestie. Here’s the whole vibe check list:

  • ABM β€” Auto Band Mode
  • AFC β€” Auto Frequency Control ON/OFF
  • AFLT β€” AF Filter setting
  • AIP β€” RF pre-amp (AIP on Kenwood, IPO on Yaesu, etc.)
  • ANF β€” Automatic Notch Filter (DSP)
  • ANL β€” Noise limiter setting
  • APF β€” Audio Peak Filter
  • ARO β€” Auto Repeater Offset
  • BC β€” Beat Canceller
  • BC2 β€” 2nd Beat Cancel
  • COMP β€” Speech Compression
  • CSQL β€” DCS Squelch setting
  • DIVERSITY β€” Diversity receive
  • DSQL β€” Digital modes squelch
  • DUAL_WATCH β€” Dual Watch / Sub Receiver
  • FAGC β€” Fast AGC
  • FBKIN β€” Full Break-in (CW mode)
  • LOCK β€” Lock
  • MBC β€” Manual Beat Canceller
  • MN β€” Manual Notch
  • MON β€” Monitor transmitted signal
  • MUTE β€” Mute
  • NB β€” Noise Blanker
  • NB2 β€” 2nd Noise Blanker
  • NR β€” Noise Reduction (DSP)
  • OVF_STATUS β€” Read overflow status 0=Off, 1=On
  • RESUME β€” Scan auto-resume
  • REV β€” Reverse transmit and receive frequencies
  • RF β€” RTTY Filter
  • RIT β€” Receiver Incremental Tuning
  • SATMODE β€” Satellite mode ON/OFF
  • SBKIN β€” Semi Break-in (CW mode)
  • SCEN β€” scrambler/encryption
  • SCOPE β€” Simple bandscope ON/OFF
  • SEND_MORSE β€” Send specified characters using CW
  • SEND_VOICE_MEM β€” Transmit in SSB message stored in memory
  • SPECTRUM β€” Spectrum scope data output ON/OFF
  • SPECTRUM_HOLD β€” Pause spectrum scope updates ON/OFF
  • SQL β€” Turn Squelch Monitor on/off
  • SYNC β€” Synchronize VFOs
  • TBURST β€” 1750 Hz tone burst
  • TONE β€” CTCSS Tone TX
  • TRANSCEIVE β€” Send radio state changes automatically ON/OFF
  • TSQL β€” CTCSS Activate/De-activate RX
  • TUNER β€” Enable automatic tuner
  • VOX β€” Voice Operated Relay
  • VSC β€” Voice Scan Control
  • XIT β€” Transmitter Incremental Tuning

Func Status is a non null value for β€œactivate” or β€œde-activate” otherwise, much as TRUE/FALSE definitions in the C language (true is non-zero and false is zero, <code>β€˜0’</code>). 🫢

✨ Note: Passing a <code>β€˜?’</code> (query) as the first argument instead of a Func token will return a space separated list of radio backend supported set function tokens. Use this to determine the supported functions of a given radio backend.

u, get_func 'Func' πŸ’…

Get <code>β€˜Func Status’</code>.

Returns Func Status as a non null value for the Func token given as in set_func above.

✨ Note: Passing a <code>β€˜?’</code> (query) as the first argument instead of a Func token will return a space separated list of radio backend supported get function tokens. Use this to determine the supported functions of a given radio backend.

L, set_level 'Level' 'Level Value' πŸ‘‘

Set <code>β€˜Level’</code> and <code>β€˜Level Value’</code>.

Level is a token: AF, AGC, AGC_TIME, ALC, ANTIVOX, APF, ATT, BAL, BAND_SELECT, BKINDL, BKIN_DLYMS, COMP, COMP_METER, CWPITCH, ID_METER, IF, KEYSPD, METER, MGC, MGF, MGL, MICGAIN, MONITOR_GAIN, NB, NOTCHF, NOTCHF_RAW, NR, PBT_IN, PBT_OUT, PREAMP, RAWSTR, RF, RFPOWER, RFPOWER_METER, RFPOWER_METER_WATTS, SLOPE_HIGH, SLOPE_LOW, SPECTRUM_ATT, SPECTRUM_AVG, SPECTRUM_EDGE_HIGH, SPECTRUM_EDGE_LOW, SPECTRUM_MODE, SPECTRUM_REF, SPECTRUM_SPAN, SPECTRUM_SPEED, SQL, STRENGTH, SWR, TEMP_METER, USB_AF, USB_AF_INPUT, VD_METER, VOXDELAY, VOXGAIN.

The Level Value can be a float or an integer value. For the AGC token the value is one of 0 = OFF, 1 = SUPERFAST, 2 = FAST, 3 = SLOW, 4 = USER, 5 = MEDIUM, 6 = AUTO. Note that not all values work on all rigs. To list usable values do

rigctl -m MODEL_ID -u | grep "AGC levels"

or for Windows

rigctl -m MODEL_ID -u | find "AGC levels"

Level units 🌈

  • 0.0-1.0 where 0=0% and 1.0=100% (except for BAL where 50% is center)
    • AF, ALC, ANTIVOX, BAL, COMP, MICGAIN, MONITOR_GAIN, NOTCHF_RAW, NR, RF, RFPOWER, RFPOWER_METER, USB_AF, VOXGAIN
  • Amps
    • ID_METER(A)
  • dB
    • NL, COMP_METER, PREAMP, ATT, SLOPE_LOW, SLOPE_HIGH, SPECTRUM_REF, SPECTRUM_ATT, STRENGTH
  • Degrees(temperature)
    • TEMP_METER(C)
  • Hz
    • CWPITCH, IF, NOTCHF, PBT_IN, PBT_OUT, SPECTRUM_EDGE_LOW, SPECTRUM_EDGE_HIGH, SPECTRUM_SPAN
  • Seconds
    • VOXDELAY(ds), BKINDL(ms), BKIN_DLYMS(ms)
  • Raw info from rig
    • RAWSTR, BANDSELECT (subject to change -- index right now but may convert to band name)
  • SWR
    • SWR
  • Volts
    • VD_METER
  • Lookup - if level shows 0/0/0 then it's probably a lookup value
    • METER RIG_METER_XXXX 1=SWR, 2=COMP, 4=ALC, 8=IC, 16=DB, 32=PO, 64=VDD, 128=Temp
    • AGC 0=None, 1=SuperFast, 2=Fast, 3=Slow, 4=User, 5=Medium, 6=Auto
      • Note: Not all AGC values may be available -- see AGC Level in dumpcaps (e.g. rigctl -m 1035 -u | grep AGC)
    • SPECTRUM_MODE 0=None, 1=Center, 2=Fixed, 3=Center Scroll, 4=Fixed Scroll
    • SPECTRUM_AVG rig specific
  • METER -- SWR,COMP,ALC,IC/ID,DB,PO,VDD,TEMP or can use the numbers above in Lookup l METER returns the meter number=name
  • Watts
    • RFPOWER_METER_WATTS
  • WPM
    • KEYSPD
✨ Note: Passing a <code>β€˜?’</code> (query) as the first argument instead of a Level token will return a space separated list of radio backend supported set level tokens. Use this to determine the supported levels of a given radio backend.

l, get_level 'Level' πŸ¦‹

Get <code>β€˜Level Value’</code>.

Returns Level Value as a float or integer for the Level token given as in set_level above.

✨ Note: Passing a <code>β€˜?’</code> (query) as the first argument instead of a Level token will return a space separated list of radio backend supported get level tokens. Use this to determine the supported levels of a given radio backend.

P, set_parm 'Parm' 'Parm Value' πŸŽ€

Set <code>β€˜Parm’</code> and <code>β€˜Parm Value’</code>.

Parm is a token: AFIF, AFIF_ACC, AFIF_LAN, AFIF_WLAN, ANN, APO, BACKLIGHT, BANDSELECT, BAT, BEEP, KEYERTYPE, KEYLIGHT, SCREENSAVER, TIME.

✨ Note: Passing a <code>β€˜?’</code> (query) as the first argument instead of a Parm token will return a space separated list of radio backend supported set parameter tokens. Use this to determine the supported parameters of a given radio backend.
  • ANN -- "Announce" level, see ann_t
  • APO -- Auto power off, int in minute
  • BACKLIGHT -- LCD light, float [0.0 ... 1.0]
  • BEEP -- Beep on keypressed, int (0,1)
  • TIME -- hh:mm:ss, int in seconds from 00:00:00
  • BAT -- battery level, float [0.0 ... 1.0]
  • KEYLIGHT -- Button backlight, on/off
  • SCREENSAVER -- rig specific timeouts
  • AFIF -- 0=AF audio, 1=IF audio -- see IC-7300/9700/705
  • BANDSELECT -- band name, e.g. BAND160M, BAND80M.... a ? instead of band will show band possibilities
  • KEYERTYPE -- Icom keyer type 0,1,2 or STRAIGHT,BUG,PADDLE

p, get_parm 'Parm' πŸ’–

Get <code>β€˜Parm Value’</code>.

Returns Parm Value as a float or integer for the Parm token given as in set_parm above.

✨ Note: Passing a <code>β€˜?’</code> (query) as the first argument instead of a Parm token will return a space separated list of radio backend supported get parameter tokens. Use this to determine the supported parameters of a given radio backend.

B, set_bank 'Bank' 🏦

Set <code>β€˜Bank’</code>.

Sets the current memory bank number.

E, set_mem 'Memory#' πŸ“

Set <code>β€˜Memory#’</code> channel number.

e, get_mem 🧠

Get <code>β€˜Memory#’</code> channel number.

G, vfo_op 'Mem/VFO Op' πŸ”

Perform a <code>β€˜Mem/VFO Op’</code>.

Mem/VFO Operation is a token: CPY, XCHG, FROM_VFO, TO_VFO, MCL, UP, DOWN, BAND_UP, BAND_DOWN, LEFT, RIGHT, TUNE, TOGGLE.

✨ Note: Passing a <code>β€˜?’</code> (query) as the first argument instead of a Mem/VFO Op token will return a space separated list of radio backend supported Set Mem/VFO Op tokens. Use this to determine the supported Mem/VFO Ops of a given radio backend.

g, scan 'Scan Function' 'Scan Channel' πŸ”

Perform a <code>β€˜Scan Function’</code> on a <code>β€˜Scan Option’</code>.

Scan Function is a token: DELTA, MEM, PLT, PRIO, PROG, SLCT, STOP, VFO.

Scan Option is an integer.

Scan Option for Yaesu rigs 0=STOP, 1=UP, 2=DOWN.

Scan Option for Icom rigs is a channel number to program with G otherwise not used.

Scan Option for Kenwood rigs is not used.

✨ Note: Passing a <code>β€˜?’</code> (query) as the first argument instead of a Scan Fct token will return a space separated list of radio backend supported Scan Function tokens. Use this to determine the supported Scan Functions of a given radio backend.

H, set_channel 'Channel' πŸ“Ί

Set memory <code>β€˜Channel’</code> data.

Sets memory channel information

h, get_channel 'Channel' 'readonly' πŸ‘€

Get channel memory.

If readonly!=0 then only channel data is returned and rig remains on the current channel. If readonly=0 then rig will be set to the channel requested.

A, set_trn 'Transceive' πŸ“‘

Set <code>β€˜Transceive’</code> mode.

Transceive is a token: OFF, RIG, POLL.

Transceive is a mechanism for radios to report events without a specific call for information.

✨ Note: Passing a <code>β€˜?’</code> (query) as the first argument instead of a Transceive token will return a space separated list of radio backend supported Transceive mode tokens. Use this to determine the supported Transceive modes of a given radio backend.

a, get_trn πŸ“»

Get <code>β€˜Transceive’</code> mode.

Transceive mode (reporting event) as in set_trn above.

  • *, reset 'Reset' β€” Do a rig Reset ✨

Reset is a value: β€˜0’ = None, β€˜1’ = Software reset, β€˜2’ = VFO reset, β€˜4’ = Memory Clear reset, β€˜8’ = Master reset.

Since these values are defined as a bitmask in include/hamlib/rig.h, it should be possible to OR these values together to do multiple resets at once, if the backend supports it or supports a reset action via rig control at all. πŸ’…

  • 0x87, set_powerstat 'Power Status' β€” Set Power Status ⚑

Power Status is a value: β€˜0’ = Power Off, β€˜1’ = Power On, β€˜2’ = Power Standby (enter standby), β€˜4’ = Power Operate (leave standby).

  • 0x88, get_powerstat β€” Grab the Power Status, same values as in set_powerstat up above πŸ‘†
  • 0x89, send_dtmf 'Digits' β€” Set the DTMF Digits πŸ“ž
  • 0x8a, recv_dtmf β€” Get the DTMF Digits πŸ“ž
  • 0xac, set_conf 'Token' 'Value' β€” Set Token to Value 🎚️
  • 0xad, get_conf 'Token' β€” Get the value of Token 🎚️
  • _, get_info β€” Get misc information about the rig 🧐
  • 0xf5, get_rig_info β€” Get misc information about the rig vfo status and other info 🧐
  • 0xf1, halt β€” When issued inside rigctl it quits it; when issued by another client it quits rigctld instead πŸ›‘
  • 0xf3, get_vfo_info 'VFO' β€” Get misc information about a specific vfo πŸ”
  • 0xf4, get_vfo_list β€” Get the names of the available VFOs πŸ“‹
  • 0xf6, get_modes β€” Get all supported bandwidths for all modes 🌈
  • 0xf7, get_mode_bandwidths 'Mode' β€” Get bandwidths of 'Mode'. See also get_modes πŸ‘€
  • dump_state β€” Return certain state information about the radio backend πŸ“¦
  • 1, dump_caps β€” Not a real rig remote command, it just dumps capabilities, i.e. what the backend knows about this model, and what it can do πŸ’β€β™€οΈ

TODO: Ensure this is in a consistent format so it can be read into a hash, dictionary, etc. Bug reports requested πŸ™

Note: This command will produce many lines of output so be very careful if using a fixed length array! For example, running this command against the Dummy backend results in over 5kB of text output 😭

VFO parameter is not used in 'VFO mode'.

  • 2, power2mW 'Power [0.0..1.0]' 'Frequency' 'Mode' β€” Returns 'Power mW' πŸ”‹

Converts a Power value in a range of 0.0...1.0 to the real transmit power in milli-Watts (integer).

'Frequency' and 'Mode' also need to be provided as output power may vary according to these values.

VFO parameter is not used in VFO mode.

  • 3, dump_conf β€” Not a real rig remote command, it just dumps the current configuration with allowed ranges of values πŸ“„
  • 4, mW2power 'Power mW' 'Frequency' 'Mode' β€” Returns 'Power [0.0..1.0]' πŸ”‹

Converts the real transmit power in milli-Watts (integer) to a Power value in a range of 0.0 ... 1.0.

'Frequency' and 'Mode' also need to be provided as output power may vary according to these values.

VFO parameter is not used in VFO mode.

  • w, send_cmd 'Cmd' β€” Send a raw command string to the radio πŸ“‘

This is useful for testing and troubleshooting radio commands and responses when developing a backend.

For binary protocols enter values as \0xAA\0xBB. Expect a 'Reply' from the radio which will likely be a binary block or an ASCII string depending on the radio's protocol (see your radio's computer control documentation). If you are testing a protocol like SmartSDR where there are spaces in the commands use quote, e.g. w "C0|set slice 0 tx=1"

The command terminator, set by the send-cmd-term option above, will terminate each command string sent to the radio. This character should not be a part of the input string.

  • W, send_cmd_rx 'Cmd' nbytes_or_terminator_char β€” Send a raw command string to the radio and expect nbytes returned or the terminator char (e.g. ;) πŸ“‘

This is useful for testing and troubleshooting radio commands and responses when developing a backend. If the # of bytes requested is <= the number actually returned no timeout will occur. If a char is provided it will be used to terminate reading the string so ; is popular for Kenwood/Yaesu commands for example.

The command argument can have no spaces in it. For binary protocols enter values as \0xAA\0xBB. Expect a 'Reply' from the radio which will likely be a binary block or an ASCII string depending on the radio's protocol (see your radio's computer control documentation).

The command terminator, set by the send-cmd-term option above, will terminate each command string sent to the radio. This character should not be a part of the input string.

  • set_clock 'DateTime' β€” Set 'DateTime' ⏰

Sets rig clock -- note that some rigs do not handle seconds or milliseconds. If you try to set sec/msec and rig does not support it you will get a debug warning message. Format is ISO8601. Formats accepted allow for 2-digit or 4-digit time zone:

  • YYYY-MM-DDTHH:MM:SS.SSS+ZZ (where +ZZ is either -/+ UTC offset HH)
  • YYYY-MM-DDTHH:MM:SS.SSS+ZZZZ (where +ZZZZ is either -/+ UTC offset HHMM)
  • YYYY-MM-DDTHH:MM:SS+ZZ
  • YYYY-MM-DDTHH:MM:SS+ZZZZ
  • YYYY-MM-DDTHH:MM+ZZ
  • YYYY-MM-DDTHH:MM+ZZZZ
  • YYYY-MM-DD (sets date only)
  • local (sets both clocks to local time)
  • utc (sets both clocks to utc time)

Note: Icom rigs expect you to set local time and the hours off to UTC. So...4PM EST example would be 2021-12-01T16:00:00-0500 But...if you want to display GMT you must set the clock for GMT with zero UTC offset. Hopefully Icom will allow displaying either clock in the future πŸ™ˆ

Note: Kenwood rigs only allow setting local clock, and then only if not autoset by NTP. Trying to set clock when NTP is in use will set the offset, but not the time - and no error status will be returned. Time displayed on the auxiliary clock is solely determined by UTC and the aux offset.

  • get_clock β€” Get 'RigTime' ⏰

Gets rig clock -- note that some rigs do not handle seconds or milliseconds. Format is ISO8601 YYYY-MM-DDTHH:MM:SS.sss+ZZ where +ZZ is either -/+ UTC offset

  • chk_vfo β€” Get 'Status' πŸ‘€

Returns Status as 1 if vfo option is on and 0 if vfo option is off. This command reflects the -o switch for rigctl and rigctld and can be dynamically changed by set_vfo_opt.

  • set_vfo_opt 'Status' β€” Set 'Status' πŸ‘‘

Set vfo option Status 1=on or 0=off. This is the same as using the -o switch for rigctl and rigctld. This can be dynamically changed while running.

  • set_separator 'SeparatorChar' β€” Set 'SeparatorChar' πŸŽ€

Change rigctld response to use a special char instead of newline (recommend #). Handy for node-red's tcprequest node. This can be dynamically changed while running.

  • get_separator β€” Get 'SeparatorChar' πŸŽ€

Shows the current SeparatorChar.

  • pause 'Seconds' β€” Pause for the given whole (integer) number of 'Seconds' before sending the next command to the radio ⏸️
  • password 'Password' β€” Sends password to rigctld when rigctld has been secured with -A. Must use the 32-char shared secret from rigctld. (NOT IMPLEMENTED) πŸ”
  • set_lock_mode 'Locked' β€” Turns mode lock on(1) or off(0) (only when using rigctld). Turning on will prevent all clients from changing the rig mode πŸ”’

For example this is useful when running CW Skimmer in FM mode on an IC-7300. Clicking spots in a spotting program will not change the VFOA mode when lock is on. So "set_lock_mode 1" when CW Skimmer is started and "set_lock_mode 0" when CW Skimmer is stopped.

  • get_lock_mode β€” Returns current lock mode status 1=On, 2=Off (only useful when using rigctld) πŸ”“
  • send_raw 'Terminator' 'String' β€” Can send ASCII string or 0xnn values or xnn values -- there can be no spaces in the command string. Possible terminator values are CR, LF, ;, ICOM, 1-100 (bytes to read), or 0 meaning no reply and -1 meaning unknown (will timeout on read). Examples (note that a ; must be escaped in Unix/Linux or enclosed in single or double quotes) πŸ“»

For Windows & Unix/Linux we have a new colon-separated format for hex digits:

send_raw icom 0xFE:0xFE:0x94:0x03:0xFD
send_raw -1 0xFE:0xFE:0x94:0x03:0xFD
send_raw 14 0xFE:0xFE:0x94:0x03:0xFD

Note: colon-separated does not have to be escaped on Unix/Linux.

Note that ASCII commands still require escaping the semicolon on Unix/Linux:

send_raw \; FA\;MD\;

For Windows:

send_raw ; FA;MD;
send_raw icom 0xFE;0xFE;0x94;0x03;0xFD
send_raw -1 0xFE;0xFE;0x94;0x03;0xFD
send_raw 14 0xFE;0xFE;0x94;0x03;0xFD

For Unix/Linux:

send_raw icom 0xFE;0xFE;0x94;0x03;0xFD
send_raw \; FA\;MD\;
send_raw -1 0xFE;0xFE;0x94;0x03;0xFD
send_raw 14 0xFE;0xFE;0x94;0x03;0xFD
  • client_version 'String' β€” Client can send its version to rigctld and get feedback on compatibility, deprecation, and alternatives πŸ’Œ
  • hamlib_version β€” Returns Hamlib version with ISO8601 date/time 🏷️
  • test β€” Performs test routines. Under development 🚧
  • set_gpio 'GPIO#' '0/1' β€” Sets GPIO1, GPIO2, GPIO3, GPIO4 on the GPIO ptt port. Can also use 1,2,3,4 πŸ”Œ
  • get_gpio 'GPIO#' β€” Reads GPIO1, GPIO2, GPIO3, GPIO4 on the GPIO ptt port. Can also use 1,2,3,4 πŸ”Œ
  • skip_init β€” Skips rig initialization -- useful when executing commands with rigctl to speed up things ⚑

🌈 READLINE 🌈

Okay so this is the part where things get customizable. If the Readline library development files are found when the thing gets configured (configure time, bestie), then rigctl gets conditionally built with Readline support for entering commands and arguments. The Readline command key bindings are at their defaults, exactly like the Readline manual says. And rigctl sets the name β€œrigctl”, which you can use in Conditional Init Constructs in the Readline Init File ($HOME/.inputrc by default) so you can make custom keybindings that are unique to rigctl. Custom keybinds just for your rig, it's giving main character energy fr. πŸ‘‘

Command history? Available with Readline support, as described in the Readline History manual. Command and argument strings are stored as single lines even when arguments get prompted for input one by one. And heads up β€” commands and arguments are not validated, they're stored exactly as typed, with values separated by a single space. No autofix, no glow-up, just vibes as-is. πŸ’…

Normally session history is not saved. BUT ✨ if you use either the -i/--read-history or -I/--save-history options when you start rigctl, then any previously saved history gets read in and/or the current plus any previous session history gets written out when rigctl closes (that's assuming -i and -I are given together). Each option is mutually exclusive, i.e. either may be given separately or in combination. This is useful to save a set of commands and then read them later, but not write the modified history β€” for a consistent set of test commands in interactive mode, for example. Chef's kiss use case honestly. πŸŽ€

History lives in $HOME/.rigctl_history by default, although the destination directory can be changed by setting the RIGCTL_HIST_DIR environment variable. When RIGCTL_HIST_DIR is unset, the value of the HOME environment variable is used instead. Only the destination directory may be changed at this time β€” that's the whole scope, don't come for me. πŸ’€

If Readline support is not found at configure time, the original internal command handler is used instead. And ngl, Readline is not used for rigctl commands entered on the command line, regardless of whether Readline support is built in or not.

Note: Readline support is not included in the MS Windows 32 or 64 bit binary builds supplied by the Hamlib Project. Running rigctl on the MS Windows platform in the β€˜cmd’ shell does give session command line history, however, it is not saved to disk between sessions. 😭

πŸ” DIAGNOSTICS πŸ”

The -v, --verbose option lets you pick different levels of diagnostics to be output to stderr, and they map like this:

  • -v β†’ BUG
  • -vv β†’ ERR
  • -vvv β†’ WARN
  • -vvvv β†’ VERBOSE
  • -vvvvv β†’ TRACE

A given verbose level is useful for providing needed debugging information to the email address below (squad, it's the Hamlib Developer mailing list, it's in BUGS, we'll get there 🫢). For example, TRACE output shows all of the values sent to and received from the radio, which is very useful for radio backend library development and may be requested by the developers. So if a dev asks for TRACE, you already know what to do. go off. πŸ”₯


πŸšͺ EXIT STATUS πŸšͺ

rigctl exits with:

  • 0 β€” if all operations completed normally;
  • 1 β€” if there was an invalid command line option or argument;
  • 2 β€” if an error was returned by Hamlib.

✨ EXAMPLES ✨

Start rigctl for a Yaesu FT-920 using a USB to serial adapter on Linux in interactive mode:

$ rigctl -m 1014 -r /dev/ttyUSB1

Start rigctl for a Yaesu FT-920 using COM1 on MS Windows while generating TRACE output to stderr:

> rigctl -m 1014 -r COM1 -vvvvv

Start rigctl for a Yaesu FT-920 using a USB to serial adapter while setting baud rate and stop bits:

$ rigctl -m 1014 -r /dev/ttyUSB1 -s 4800 -C stop_bits=2

Start rigctl for an Elecraft K3 using a USB to serial adapter while specifying a command terminator for the w command:

$ rigctl -m 2029 -r /dev/ttyUSB0 -t';'

Connect to a running rigctld with radio model 2 (β€œNET rigctl”) on the local host and specifying the TCP port, setting frequency and mode:

$ rigctl -m 2 -r localhost:4532 F 7253500 M LSB 0

Look at those. Slayed, every single one. πŸ˜ŒπŸ’–


πŸ’€ BUGS πŸ’€

set_chan has no entry method as of yet, hence left unimplemented. It's just out here existing with no door to walk through, tragic honestly. 🫠

This almost empty section...

Report bugs to:

Hamlib Developer mailing list


πŸ‘‘ COPYING πŸ‘‘

This file is part of Hamlib, a project to develop a library that simplifies radio, rotator, and amplifier control functions for developers of software primarily of interest to radio amateurs and those interested in radio communications. (Iconic mission statement, no notes. 🌸)

  • Copyright Β© 2000-2011 Stephane Fillod
  • Copyright Β© 2000-2018 the Hamlib Group (various contributors)
  • Copyright Β© 2010-2020 Nate Bargmann

This is free software; see the file COPYING for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

NO WARRANTY. Not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Bestie that's the whole energy, respect it. πŸ™ˆ

πŸ”— SEE ALSO πŸ”—


πŸ¦‹ COLOPHON πŸ¦‹

Links to the Hamlib Wiki, Git repository, release archives, and daily snapshot archives are available via hamlib.org.


And that's the whole page, bestie!! πŸŽ‰ This is Hamlib, dated 2026-01-06, and it's the RIGCTL(1) manual page β€” you made it all the way to the end of the manpage, which is genuinely a flex, so go tune something and be great. πŸ’œβœ¨πŸŽ€