Table of supported commands as described by Easycomm standard. Note that the Easycomm standard is weakly described. This table makes some assumptions in all conscience.
- ❗ ... not implemented
- ❓ ... clarification needed
| Item | Description | Command/ Response |
Perameter | Structure | Example | Easycomm Standard |
Hamlib Config Token |
|---|---|---|---|---|---|---|---|
| Std. 1 | set AZ/EL, UP/DN frequency, UP/DN-mode |
command | AZ/EL: ufloat, 1 decimal UP/DN: uint32 UUU/DDD: word, 1 to 3 char |
AZ\d{1,3}\.\d EL\d{1,3}\.\d UP\d{1,10} \S{1,3} DN\d{1,10} \S{1,3} |
AZ123.1 EL123.1 UP1231231231 LSB DN1231231231 USB |
1 | |
| post current AZ/EL, UP/DN frequency, UP/DN-mode | response | same as Standard 1 command | same as Easycomm 1 command | same as Easycomm 1 command | 1 | ||
| AZ | get/set azimuth | command | ufloat, 1 decimal, [deg] | AZ(\d{1,3}\.\d)? |
set AZ123.1, get AZ |
2 | |
| azimuth | response | same as AZ command | AZ\d{1,3}\.\d |
AZ123.1 |
2 | ||
| EL | set/get elevation | command | ufloat, 1 decimal, [deg] | EL(\d{1,3}\.\d)? |
set EL123.1, get EL |
2 | |
| elevation | response | same as EL command | EL(\d{1,3}\.\d) |
EL123.1 |
2 | ||
| UP | set/get uplink freq | command | uint32, [Hz] | UP(\d{1,10})? |
set UP1231231231, get UR |
2 | |
| uplink freq | response | same as UP command | UP(\d{1,10}) |
UP1231231231 |
2 | ||
| DN | set/get downlink freq | command | uint32, [Hz] | DN(\d{1,10})? |
set DN1231231231, get DN |
2 | |
| downlink freq | response | same as DN command | DN\d{1,10} |
DN1231231231 |
2 | ||
| DM | set/get downlink mode | command | word, 1 to 3 char | DM(\S{1,3})? |
set DMLSB, DMAM, DM-; get DM |
2 | |
| downlink mode | response | same as DM command | DM\S{1,3} |
DMLSB |
2 | ||
| UM | set/get uplink mode | command | word, 1 to 3 char | UM(\S{1,3})? |
set UMUSB, UMCW, UM-; get UM |
2 | |
| uplink mode | response | same as UM command | UM\S{1,3} |
UMUSB |
2 | ||
| DR | set/get downlink radio | command | uint8 | DR(\d{1,3})? |
set DR999, get DR |
2 | |
| downlink radio | response | same as DR command | DR\d{1,3} |
DR999 |
2 | ||
| UR | set/get uplink radio | command | uint8 | UR(\d{1,3})? |
set UR999, get UR |
2 | |
| uplink radio | response | same as UR command | UR\d{1,3} |
UR999 |
2 | ||
| ML | move left until max or SA | command | - | ML |
ML |
2 | |
| MR | move right until max or SA | command | - | MR |
MR |
2 | |
| MU | move up until max or SE | command | - | MU |
MU |
2 | |
| MD | move down until max or SE | command | - | MD |
MD |
2 | |
| SA | stop azimuth moving | command | - | SA |
SA |
2 | |
| SE | stop elevation moving | command | - | SE |
SE |
2 | |
| AO | ❓ AOS (acquisition of signal) | command | -:question: | AO❓ |
❓ | 2 | |
| AOS | ❗response | ❓ | ❓ | ❓ | 2 | ||
| LO | ❓ LOS (loss of signal) | ❓command | -:question: | LO❓ |
❓ | 2 | |
| LOS | ❗response | ❓ | ❓ | ❓ | 2 | ||
| OP | set output | command | uint16 number, bool value | OP\d{1,3},[01] |
OP0,1, OP999,0 |
2, 3 | |
| IP | read an input Register | command | uint16 register | IP\d{1,3} |
IP0, IP1, IP2, IP3, IP999 |
2, 3 | |
| read an input Register | response | uint16 register, Register value | IP\d{1,3},[\S]+ |
IP0,0, IP1,1, IP2,1.141, IP3,-, IP999,asdf |
2, 3 | ||
| AN | read analogue input | command | uint16 input | AN\d{1,3} |
AN0, AN999 |
2, 3 | |
| read analogue input | response | uint16 input, uint16 value | AN\d{1,3},\d{1,5} |
AN0,65535, AN999,0 |
2, 3 | ||
| ST | set/get set time | command | YY:MM:DD:HH:mm:SS | ST(\d{2}:\d{2}:\d{2}:\d{2}:\d{2}:\d{2})? |
ST22:01:19:02:30:16 |
2 | |
| ST | current time | response | YY:MM:DD:HH:mm:SS | ST\d{2}:\d{2}:\d{2}:\d{2}:\d{2}:\d{2} |
ST22:01:19:02:30:16 |
2 | |
| VE | request version | command | - | VE |
VE |
2, 3 | |
| version | response | uint8 major, uint8t minor | VE\d{1,3}.\d{1,3} |
VE0.123 |
2 | ||
| VL | set/get velocity left | command | uint16, [mdeg/s] | VL(\d{1,3})? |
set VL123, get VL |
3 | |
| velocity Left | response | uint16, [mdeg/s] | VL\d{1,3} |
VL123 |
3 | ||
| VR | set/get velocity right | command | uint16, [mdeg/s] | VR(\d{1,3})? |
set VR123, get VR |
3 | |
| velocity right | response | uint16, [mdeg/s] | VR\d{1,3} |
VR123 |
3 | ||
| VU | set/get velocity up | command | uint16, [mdeg/s] | VU(\d{1,3})? |
set VU123, get VU |
3 | |
| velocity Up | response | uint16, [mdeg/s] | VU\d{1,3} |
VU123 |
3 | ||
| VD | set/get velocity down | command | uint16, [mdeg/s] | VD(\d{1,3})? |
set VD123, get VD |
3 | |
| velocity down | response | uint16, [mdeg/s] | VD\d{1,3} |
VD123 |
3 | ||
| CR | read config register | command | uint16 register | CR\d{1,5} |
CR1 |
3 | 1 |
| config value | response | uint16 register, word, 1 to 28 char | CR\d{1,5},[\S]{1,28} |
CR1,0, CR1,123.1, CR2,adsf |
3 | 1 | |
| CW | write config | command | uint16 register, word, 1 to 28 char | CW\d{1,5},[\S]{1,28} |
CW1,0, CW1,123.1, CW2,adsf |
3 | 2 |
| GS | get Status register | command | - | GS |
GS |
3 | 3 |
| get Status register | response | uint8 status flags | GS\d{1,3} |
GS1, GS9 |
3 | 3 | |
| GE | get Error register | command | - | GE |
GE |
3 | 4 |
| get Error register | response | uint8 error flags | GE\d{1,3} |
GE1, GE5 |
3 | 4 |
| Status | Meaning |
|---|---|
| 1 | Idle |
| 2 | Moving |
| 4 | Pointing |
| 8 | Error |
| Error | Meaning |
|---|---|
| 1 | Sensor Error |
| 2 | Jam |
| 4 | Homing Error |
❓ Proposed mapping of configuration registers:
| Register | Meaning | Value |
|---|---|---|
| 0 | MaxSpeed | number |
| a | Overshoot | 0/1/- |
| b | Jamming | 0/1/- |
| c | Endpoints | 0/1/- |
| d | Unstick | 0/1/- |
Notes
- Commands are separated by ' ' (space) or multiple spaces
- Lines are terminated by '\r', '\n' or '\r\n'
- In commands and responses:
- integer number
- has no fixed width
- is not padded
- float number
- has no fixed width
- is not padded
- has one decimal digit
- word
- has no fixed length
- contains no whitespace
- strings
- containing whitespaces are not supported
- integer number
References
- Hamlib protocol description (easycomm.txt)
- Hamlib protocol source (easycomm.c)
- Unit tests
- Easycomm protocol
rotctl --listrotctl --model=204 --dump-caps