RIGCTL(1)
πΈ 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 thesend_cmdcommand.
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-mabove.-C,--set-conf=parm=val[,parm=val]β set configuration parameter(s). some common ones are:async:Trueenables asynchronous data transfer for backends that support it. This allows use of transceive and spectrum data.auto_power_on:Trueenables compatible rigs to be powered up on openauto_power_off:Trueenables compatible rigs to be powered down on closeauto_disable_screensaver:Trueenables compatible rigs to have their screen saver disabled on opendcd_typeβ Data Carrier Detect (or squelch) interface type overridedcd_pathnameβ Path name to the device file of the Data Carrier Detect (or squelch)disable_yaesu_bandselect:Truedisables the automatic band select on band change for Yaesu rigsdtr_state:ONturns on DTR,OFFturns it off,Unsetdisables itfreq_skip:!=0skips 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_VFOlo_freqβ Frequency to add to the VFO frequency for use with a transverterpost_write_delayβ Delay in ms between each command sent outptt_share:Trueenables ptt port to be shared with other appsptt_typeβ Push-To-Talk interface type overrideptt_pathnameβ Path name to the device file of the Push-To-Talkptt_bitnumβ Push-To-Talk GPIO bit numberretryβ Max number of retryrts_state:ONturns on DTR,OFFturns it off,Unsetdisables ittwiddle_timeoutβ For satellite ops when VFOB is twiddled will pause VFOB commands until timeouttwiddle_ritβ Suppressget_freqon VFOB for RIT tuning satellitestimeoutβ Timeout in mswrite_delayβ Delay in ms between each byte sent outtuner_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-mabove, 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,rigctlrestores 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-ioption 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 ofrigctland 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-confand--show-confoptions.
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 ofrigctlwhen you're in interactive mode. βοΈ Whenrigctlis driving the rig itself, it closes the rig backend and the port. But whenrigctlis hooked up torigctld(that's radio model 2), it just closes the TCP/IP connection torigctldβ andrigctldkeeps 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.rigctldclients 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,-1for no change, or0for the radio backend default. FYI theIC7300can use1,2,3to 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 inset_modeabove. β¨V,set_vfo'VFO' β sets 'VFO'. VFO is a token:VFOA,VFOB,VFOC,currVFO,VFO,MEM,Main,Sub,TX,RX,MainA,MainB,MainC,SubA,SubBSubC. In VFO mode (that's the--vfooption 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 inset_vfoabove. πJ,set_rit'RIT' β sets 'RIT'. RIT is in Hz and can be+or-. A value of0resets RIT (that's Receiver Incremental Tuning, slay) to match the VFO frequency. Note: RIT needs to be explicitly activated or deactivated with theset_funccommand β this lets you set the RIT offset independently of its activation, and lets RIT stay active while you set the offset to0. πΈ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 of0resets XIT (Transmitter Incremental Tuning) to match the VFO frequency. Note: XIT needs to be explicitly activated or deactivated with theset_funccommand β this lets you set the XIT offset independently of its activation, and lets XIT stay active while you set the offset to0. πΈ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), or3(TX data). π₯t,get_pttβ gets 'PTT' status. Returns PTT as a value, same as inset_pttabove.S,set_split_vfo'Split' 'TX VFO' β sets 'Split' mode. Split is either0= Normal or1= 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 either0= Normal or1= Split. Also gets 'TX VFO'. TX VFO is a token, same as inset_split_vfoabove.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'. Peepset_split_modefor 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, or0for 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 inset_split_modeabove. β¨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 theIC-7851. See your manual for rig specific option values β most rigs don't care about the option at all. For theIC-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 of0for Antenna returns the current TX antenna.
> 0is 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-5for 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) or1(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 forNone. πr,get_rptr_shiftβ gets 'Rptr Shift'. Returns+,-, orNone.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 ModeAFCβ Auto Frequency Control ON/OFFAFLTβ AF Filter settingAIPβ RF pre-amp (AIP on Kenwood, IPO on Yaesu, etc.)ANFβ Automatic Notch Filter (DSP)ANLβ Noise limiter settingAPFβ Audio Peak FilterAROβ Auto Repeater OffsetBCβ Beat CancellerBC2β 2nd Beat CancelCOMPβ Speech CompressionCSQLβ DCS Squelch settingDIVERSITYβ Diversity receiveDSQLβ Digital modes squelchDUAL_WATCHβ Dual Watch / Sub ReceiverFAGCβ Fast AGCFBKINβ Full Break-in (CW mode)LOCKβ LockMBCβ Manual Beat CancellerMNβ Manual NotchMONβ Monitor transmitted signalMUTEβ MuteNBβ Noise BlankerNB2β 2nd Noise BlankerNRβ Noise Reduction (DSP)OVF_STATUSβ Read overflow status0=Off,1=OnRESUMEβ Scan auto-resumeREVβ Reverse transmit and receive frequenciesRFβ RTTY FilterRITβ Receiver Incremental TuningSATMODEβ Satellite mode ON/OFFSBKINβ Semi Break-in (CW mode)SCENβ scrambler/encryptionSCOPEβ Simple bandscope ON/OFFSEND_MORSEβ Send specified characters using CWSEND_VOICE_MEMβ Transmit in SSB message stored in memorySPECTRUMβ Spectrum scope data output ON/OFFSPECTRUM_HOLDβ Pause spectrum scope updates ON/OFFSQLβ Turn Squelch Monitor on/offSYNCβ Synchronize VFOsTBURSTβ 1750 Hz tone burstTONEβ CTCSS Tone TXTRANSCEIVEβ Send radio state changes automatically ON/OFFTSQLβ CTCSS Activate/De-activate RXTUNERβ Enable automatic tunerVOXβ Voice Operated RelayVSCβ Voice Scan ControlXITβ 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.0where0=0%and1.0=100%(except forBALwhere50%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/0then it's probably a lookup valueMETERRIG_METER_XXXX1=SWR,2=COMP,4=ALC,8=IC,16=DB,32=PO,64=VDD,128=TempAGC0=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)
- Note: Not all AGC values may be available -- see AGC Level in dumpcaps (e.g.
SPECTRUM_MODE0=None,1=Center,2=Fixed,3=Center Scroll,4=Fixed ScrollSPECTRUM_AVGrig specific
METER--SWR,COMP,ALC,IC/ID,DB,PO,VDD,TEMPor can use the numbers above in Lookupl METERreturns 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, seeann_tAPO-- Auto power off, int in minuteBACKLIGHT-- LCD light, float[0.0 ... 1.0]BEEP-- Beep on keypressed, int(0,1)TIME--hh:mm:ss, int in seconds from00:00:00BAT-- battery level, float[0.0 ... 1.0]KEYLIGHT-- Button backlight, on/offSCREENSAVER-- rig specific timeoutsAFIF--0=AF audio,1=IF audio-- seeIC-7300/9700/705BANDSELECT-- band name, e.g.BAND160M,BAND80M.... a?instead of band will show band possibilitiesKEYERTYPE-- Icom keyer type0,1,2orSTRAIGHT,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 rigResetβ¨
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' β SetPower 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 thePower Status, same values as inset_powerstatup above π0x89,send_dtmf'Digits' β Set the DTMFDigitsπ0x8a,recv_dtmfβ Get the DTMFDigitsπ0xac,set_conf'Token' 'Value' β SetTokentoValueποΈ0xad,get_conf'Token' β Get the value ofTokenποΈ_,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 insiderigctlit quits it; when issued by another client it quitsrigctldinstead π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 alsoget_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+ZZis either -/+ UTC offset HH)YYYY-MM-DDTHH:MM:SS.SSS+ZZZZ(where+ZZZZis either -/+ UTC offset HHMM)YYYY-MM-DDTHH:MM:SS+ZZYYYY-MM-DDTHH:MM:SS+ZZZZYYYY-MM-DDTHH:MM+ZZYYYY-MM-DDTHH:MM+ZZZZYYYY-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 torigctldwhenrigctldhas been secured with-A. Must use the 32-char shared secret fromrigctld. (NOT IMPLEMENTED) πset_lock_mode'Locked' β Turns mode lock on(1) or off(0) (only when usingrigctld). 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 status1=On,2=Off (only useful when usingrigctld) πsend_raw'Terminator' 'String' β Can send ASCII string or0xnnvalues orxnnvalues -- there can be no spaces in the command string. Possible terminator values areCR,LF,;,ICOM,1-100(bytes to read), or0meaning no reply and-1meaning 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 torigctldand 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' β SetsGPIO1,GPIO2,GPIO3,GPIO4on the GPIO ptt port. Can also use1,2,3,4πget_gpio'GPIO#' β ReadsGPIO1,GPIO2,GPIO3,GPIO4on the GPIO ptt port. Can also use1,2,3,4πskip_initβ Skips rig initialization -- useful when executing commands withrigctlto 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. Runningrigctlon 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. πβ¨π
π¦ where this page comes from
- alpine 3.24: hamlib-doc 4.7.1-r0 Β· LGPL-2.0-or-later
- arch rolling: hamlib 4.7.2-2 Β· GPL-2.0-or-later AND LGPL-2.0-or-later
- nixos 26.05: hamlib 4.7.2
- nixpkgs unstable: hamlib 4.7.2
- opensuse-leap 16.0: hamlib 4.7.2-bp160.1.1 Β· LGPL-2.1-only
- opensuse-leap 16.0: hamlib 4.7.2-bp160.1.1 Β· LGPL-2.1-only
- opensuse-leap 16.0: hamlib 4.7.2-bp160.1.1 Β· LGPL-2.1-only
- opensuse-leap 16.0: hamlib 4.7.2-bp160.1.1 Β· LGPL-2.1-only
- ubuntu stonking: libhamlib-utils 4.7.2-2 Β· LGPL-2.1-or-later AND GPL-2.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms