Config protocol between PC application and ID-RP2C controller From several packet captures; PC software Revision 2.0, (c) 2004-2007, RP2C "Revision1.2"/"V0301"x4/V0200" Last update 3-02-11 /kb8zqz Spoken on the RP2C jack which normally talks to the gateway pc. UDP packets, source port 20319, dest port 20319 (source doesn't matter, but that's what the Icom configurator does). Packets consist of a command followed by a carriage return Commands consist of four letters naming the operation, a colon, and arguments. Arguments appear to consist of a register id, and for sets, an equal sign, and a value. Hex values are zero-filled to 8 positions. Decimal values are not filled. String values are quoted. (EXCEPTION: password strings in log in and password change commands are not quoted.) Register ids appear to consist of a single letter followed by three digits, except for a set where the letter is 'i' that only have one digit. Operations begin with a lowercase letter 'f' indicating the origin of the packet is the PC, a lowercase letter indicating the class of operation, and two uppercase letters which appear to indicate the class of data to be affected. Responses largely echo operations. They always begin with "br". The data class of a response is the same as the data class of the command. A colon follows, as in the command. The argument is generally of the form register=value. Origin b RP2C f Config app on pc Op class d Display r Response s Set Data class EX Execute? (used with the set op class) FL Flash? level LI Log in (arg is the password, generally PASSWORD) PC Password change (arg is oldpw,newpw) PW May be a "rescue" password change that takes only newpw RD Routing data? (examples contain ips, masks, port #s, etc) ST Status? (of what? Response x001 may be a bitmap) SV Save config to non-volatile storage VS Firmware version (takes empty arg) Responses (brXX:ARG) FL Flash? level (format is iD=VALUE, D=1-5, VALUE is quoted string) LI Log in result (arg OK for good; no response for bad) PC Password change result (ACK if good) PW Echoes command args RD Current register value (format is XDDD=VALUE) ST Current register value (format is XDDD=VALUE) SV Save result (arg ACK for good, unknown for bad) VS Version (a string, probably like Revision1.2) Semantics fsLI: results in no response Successful login is remembered in the controller by client IP address, and is retained for about 5 minutes; a login attempt (successful or otherwise) from another IP address resets the cached login fsPC:oldpw,newpw results in fsPC:ACK if good Changed variables don't stick unless saved with an fsSV: Variable sets seem to come as a full group Password changes seem to come alone Values in responses to set commands of the RD set registers beginning with d and x appear to get transliterated to lower case; or perhaps it's all hex values The config app does not appear to send a logout of any sort The config app is the "master" in the conversation EX (execute) "registers" x000 Reboot FL (flash? level) registers seen so far start with i. No sets seen. i1 ??? version (ex i1="V0301 ") i2 ??? version (ex i2="V0301 ") i3 ??? version (ex i3="V0301 ") i4 ??? version (ex i4="V0301 ") i5 ??? version (ex i5="V0200 ") Perhaps something about the four radio ports and the gateway port? RD (routing data?) registers seen so far start with d, s or x. d001 Controller config? port (20319) d100 Repeater id (integer) d101 Repeater slot config Voice/Data 1=VVVV 2=DVVV 3=DDVV 4=DDDV 5=DDDD d102 Repeater slot 1 config d103 Repeater slot 2 config d104 Repeater slot 3 config d105 Repeater slot 4 config First two digits of repeater slot config always "32" Last digit is callsign suffix ABCD, represented as 1234 d106 Microwave link function bitmap 1=assist2 2=assist1 4=alwaystx d107 Use local server if 1, not if 0 d108 Use gateway if 1, not if 0 d110 Gateway port (20000) s000 ??? (ex s000="XXXXXXXX", no sets seen) s001 Repeater callsign (ex s001="RPT001 ") x000 RP2C ip address in hex (ac100001) x002 RP2C netmask in hex (ex ffffff00) x003 Gateway IP address in hex (ex ac100014) x004 RP2C mac address in hex, upper 3 octets* x005 RP2C mac address in hex, lower 3 octets* x109 Gateway ip address in hex (172.16.0.20) x111 ??? mac address in hex, upper 3 octets* (for maintech GmbH device) x112 ??? mac address in hex, lower 3 octets* x113 ??? mac address in hex, upper 3 octets+ (for DVSI device) x114 ??? mac address in hex, lower 3 octets+ x115 ??? in hex x116 ??? in hex No sets seen for x111-x116. * Mac address split into two registers, 3 octets each, in the lower 3 octets of the register, top octet of each register 00 + Mac address? as above, except top octet 01 ST (status?) registers seen so far start with x. No sets seen. x001 ??? (only value seen is 00000002) Possible response arguments NAK OK ACK register=value How to do small settings changes by hand Netcat can be used to talk to the controller. Assuming the RP2C is at IP address 172.16.0.1, the callsign is set to RPT001, and the password is PASSWORD (the defaults): nc -u 172.16.0.1 20319 Then enter a login command and press enter: fsLI:PASSWORD This results in brLI:OK if the password is correct. Then enter the commands to view or set a value. For example, to view, then change the callsign of the system: fdRD:s001 fsRD:s001="KB1XXX " which should produce responses like: brRD:s001="RPT001 " brRD:s001="KB1XXX " After making changes, to make them permanent, send: fsSV: To reboot the controller, send: fsEX:x000 Sample data First session - read fsLI:PASSWORD brLI:OK fdST:x001 brST:x001=00000002 fdFL:i1 brFL:i1="V0301 " fdFL:i2 brFL:i2="V0301 " fdFL:i3 brFL:i3="V0301 " fdFL:i4 brFL:i4="V0301 " fdFL:i5 brFL:i5="V0200 " fdVS: brVS:Revision1.2 fdRD:s001 brRD:s001="RPT000 " fdRD:d100 brRD:d100=1 fdRD:x000 brRD:x000=ac100001 fdRD:d001 brRD:d001=20319 fdRD:x002 brRD:x002=ffffff00 fdRD:x003 brRD:x003=00000000 fdRD:d101 brRD:d101=3 fdRD:d102 brRD:d102=321 fdRD:d103 brRD:d103=0 fdRD:d104 brRD:d104=0 fdRD:d105 brRD:d105=321 fdRD:d106 brRD:d106=0 fdRD:d107 brRD:d107=0 fdRD:d108 brRD:d108=0 fdRD:x109 brRD:x109=ac100014 fdRD:d110 brRD:d110=20000 fdRD:x004 brRD:x004=000090c7 fdRD:x005 brRD:x005=00a004e7 fdRD:s000 brRD:s000="XXXXXXXX" fdRD:x111 brRD:x111=0000222e fdRD:x112 brRD:x112=00000005 fdRD:x113 brRD:x113=010001fd fdRD:x114 brRD:x114=0100080e fdRD:x115 brRD:x115=ff010000 fdRD:x116 brRD:x116=ff050000 Second session (read) fsLI:PASSWORD brLI:OK fdST:x001 brST:x001=00000002 fdFL:i1 brFL:i1="V0301 " fdFL:i2 brFL:i2="V0301 " fdFL:i3 brFL:i3="V0301 " fdFL:i4 brFL:i4="V0301 " fdFL:i5 brFL:i5="V0200 " fdVS: brVS:Revision1.2 fdRD:s001 brRD:s001="RPT000 " fdRD:d100 brRD:d100=1 fdRD:x000 brRD:x000=ac100001 fdRD:d001 brRD:d001=20319 fdRD:x002 brRD:x002=ffffff00 fdRD:x003 brRD:x003=00000000 fdRD:d101 brRD:d101=3 fdRD:d102 brRD:d102=321 fdRD:d103 brRD:d103=0 fdRD:d104 brRD:d104=0 fdRD:d105 brRD:d105=321 fdRD:d106 brRD:d106=0 fdRD:d107 brRD:d107=0 fdRD:d108 brRD:d108=0 fdRD:x109 brRD:x109=ac100014 fdRD:d110 brRD:d110=20000 fdRD:x004 brRD:x004=000090c7 fdRD:x005 brRD:x005=00a004e7 fdRD:s000 brRD:s000="XXXXXXXX" fdRD:x111 brRD:x111=0000222e fdRD:x112 brRD:x112=00000005 fdRD:x113 brRD:x113=010001fd fdRD:x114 brRD:x114=0100080e fdRD:x115 brRD:x115=ff010000 fdRD:x116 brRD:x116=ff050000 Third session - write fsLI:PASSWORD brLI:OK fsRD:s001="RPT002 " brRD:s001="RPT002 " fsRD:x000=ac100001 brRD:x000=ac100001 fsRD:d001=20319 brRD:d001=20319 fsRD:x002=ffffff00 brRD:x002=ffffff00 fsRD:x003=00000000 brRD:x003=00000000 fsRD:d100=1 brRD:d100=1 fsRD:d101=1 brRD:d101=1 fsRD:d102=323 brRD:d102=323 fsRD:d103=322 brRD:d103=322 fsRD:d104=0 brRD:d104=0 fsRD:d105=321 brRD:d105=321 fsRD:d106=0 brRD:d106=0 fsRD:d107=0 brRD:d107=0 fsRD:d108=1 brRD:d108=1 fsRD:x109=ac100014 brRD:x109=ac100014 fsRD:d110=20000 brRD:d110=20000 fsRD:x111=0000222E brRD:x111=0000222e fsSV: brSV:ACK Fourth session - reboot fsEX:x000 Fifth session - read fsLI:PASSWORD brLI:OK fdST:x001 brST:x001=00000002 fdFL:i1 brFL:i1="V0301 " fdFL:i2 brFL:i2="V0301 " fdFL:i3 brFL:i3="V0301 " fdFL:i4 brFL:i4="V0301 " fdFL:i5 brFL:i5="V0200 " fdVS: brVS:Revision1.2 fdRD:s001 brRD:s001="RPT002 " fdRD:d100 brRD:d100=1 fdRD:x000 brRD:x000=ac100001 fdRD:d001 brRD:d001=20319 fdRD:x002 brRD:x002=ffffff00 fdRD:x003 brRD:x003=00000000 fdRD:d101 brRD:d101=1 fdRD:d102 brRD:d102=323 fdRD:d103 brRD:d103=322 fdRD:d104 brRD:d104=0 fdRD:d105 brRD:d105=321 fdRD:d106 brRD:d106=0 fdRD:d107 brRD:d107=0 fdRD:d108 brRD:d108=1 fdRD:x109 brRD:x109=ac100014 fdRD:d110 brRD:d110=20000 fdRD:x004 brRD:x004=000090c7 fdRD:x005 brRD:x005=00a004e7 fdRD:s000 brRD:s000="XXXXXXXX" fdRD:x111 brRD:x111=0000222e fdRD:x112 brRD:x112=00000005 fdRD:x113 brRD:x113=010001fd fdRD:x114 brRD:x114=0100080e fdRD:x115 brRD:x115=ff010000 fdRD:x116 brRD:x116=ff050000