IC-705 Json for Wireless or Wired Connection

40 views
Skip to first unread message

Joe Spears AF1E

unread,
Jun 9, 2026, 2:35:48 PMJun 9
to SkyRoof
I was having trouble with the available json for the IC-705 when I tried to connect wirelessly through the Icom Remote Utility.  I came up with a single json that works for either connection.  I had to set  CI-V Echo back to "on" in the radio and make sure baud rates were 19200.  I have 2 desktop files one to connect Wireless (com 15 from Remote Utility) and another to connect Wired (assigned com port).  Let me know if anyone has a more elegant solution.
The Problem: The core issue is how the two connection methods handle "CI-V Echo Back."
  • The Icom Remote Utility's virtual serial port (wireless) always forces an echo. It echoes the command bytes right back to the software.

  • If your IC-705.json file is set to "echo": false, Skycat reads its own echoed command instead of the radio's FB (OK) acknowledgment. This triggers a "Reply mismatch" error, and the connection fails.

  • Additionally, the Icom Remote Utility locks its virtual COM port to 19200 baud, while Skycat often defaults to 115200, causing immediate timeouts. Finally, sending initialization commands (like forcing split/transceive off) over the virtual port can cause it to hang, but completely removing the "setup" block from the JSON causes Skycat to crash on startup.

The Solution: To use a single JSON file for both wired and wireless operations, you need to make the physical USB connection behave exactly like the wireless virtual port, and tell Skycat what to expect.

1. Radio Hardware Setting: On the physical IC-705, navigate to MENU » SET » Connectors » CI-V and turn CI-V USB Echo Back to ON. Now, both your USB cable and your wireless connection will send an echo.

2. JSON File Updates:

  • "echo": true: This tells Skycat to expect the echo and absorb it before looking for the radio's reply.

  • "default_baud_rate": 19200: This matches the locked speed of the Icom Remote Utility so you don't have to force it via command line.

  • Empty Setup Block: Skycat requires the "setup" block to exist, or it crashes. By leaving the messages array empty ("messages": []), it satisfies Skycat's startup check without sending initialization commands that choke the virtual port.


{
  "id": 3085,
  "echo": true,
  "default_baud_rate": 19200,
  "cross_band_split": false,
  "bad_reply": ["FE", "FE", "E0", "A4", "FA", "FD"],

  "split": {
    "setup": {
      "messages": [
        { "command": ["FE", "FE", "A4", "E0", "1A", "05", "01", "31", "00", "FD"], "reply": ["FE", "FE", "E0", "A4", "FB", "FD"], "comment": "transceive off" },
        { "command": ["FE", "FE", "A4", "E0", "0F", "01", "FD"], "reply": [ "FE", "FE", "E0", "A4", "FB", "FD"], "comment": "split on" }
      ],
      "restriction": "when_setting_up"
    },

    "read_rx_frequency": {
      "messages": [
        {
          "command": ["FE", "FE", "A4", "E0", "25", "00", "FD"],
          "reply": ["FE", "FE", "E0", "A4", "25", "00", null, null, null, null, null, "FD"],
          "reply_param": {"format": "BCD_LE"}
        }
      ]
    },

    "read_tx_frequency": {
      "messages": [
        {
          "command": ["FE", "FE", "A4", "E0", "25", "01", "FD"],
          "reply": ["FE", "FE", "E0", "A4", "25", "01", null, null, null, null, null, "FD"],
          "reply_param": {"format": "BCD_LE"}
        }
      ]
    },

    "read_rx_mode": {
      "messages": [
        {
          "command": ["FE", "FE", "A4", "E0", "26", "00", "FD"],
          "reply_param": {
            "format": "Enum", "values": {
              "LSB": [ "00", "00", "00" ], "LSB-D": [ "00", "01", "00" ], "USB": [ "01", "00", "00" ], "USB-D": [ "01", "01", "00" ],
              "AM": [ "02", "00", "00" ], "CW": [ "03", "00", "00" ], "CW-R": [ "07", "00", "00" ],
              "RTTY": [ "04", "00", "00" ], "RTTY-R": [ "08", "00", "00" ], "FM": [ "05", "00", "00" ], "FM-D": [ "05", "01", "00" ],
              "DV": [ "17", "00", "00" ]
            },
          "mask":  ["FF", "FF", "00"]
          },
          "reply": ["FE", "FE", "E0", "A4", "26", "00", null, null, null, "FD"]
        }
      ]
    },

    "read_tx_mode": {
      "messages": [
        {
          "command": ["FE", "FE", "A4", "E0", "26", "01", "FD"],
          "reply_param": {
            "format": "Enum", "values": {
              "LSB": [ "00", "00", "00" ], "LSB-D": [ "00", "01", "00" ], "USB": [ "01", "00", "00" ], "USB-D": [ "01", "01", "00" ],
              "AM": [ "02", "00", "00" ], "CW": [ "03", "00", "00" ], "CW-R": [ "07", "00", "00" ],
              "RTTY": [ "04", "00", "00" ], "RTTY-R": [ "08", "00", "00" ], "FM": [ "05", "00", "00" ], "FM-D": [ "05", "01", "00" ],
              "DV": [ "17", "00", "00" ]
            },
          "mask":  ["FF", "FF", "00"]
          },
          "reply": ["FE", "FE", "E0", "A4",  "26", "01", null, null, null, "FD"]
        }
      ]
    },

    "read_ptt": {
      "messages": [
        {
          "command": ["FE", "FE", "A4", "E0", "1C", "00", "FD"],
          "reply": ["FE", "FE", "E0", "A4", "1C", "00", null, "FD"],
          "reply_param": { "format": "Enum", "values": { "ON": [ "01" ], "OFF": [ "00" ] }}
        }
      ]
    },

    "write_rx_frequency":  {
      "messages": [
        {
          "command": ["FE", "FE", "A4", "E0", "25", "00", null, null, null, null, null, "FD"],
          "reply": ["FE", "FE", "E0", "A4", "FB", "FD"],
          "command_param": {"format": "BCD_LE"}
        },
        { "command": ["FE", "FE", "A4", "E0", "0f", "01", "FD"], "reply": [ "FE", "FE", "E0", "A4", "FB", "FD"], "comment": "split on" }
      ]
    },

    "write_tx_frequency": {
      "messages": [
        {
          "command": ["FE", "FE", "A4", "E0", "25", "01", null, null, null, null, null, "FD"],
          "reply": ["FE", "FE", "E0", "A4", "FB", "FD"],
          "command_param": {"format": "BCD_LE"}
        },
        { "command": ["FE", "FE", "A4", "E0", "0f", "01", "FD"], "reply": [ "FE", "FE", "E0", "A4", "FB", "FD"], "comment": "split on" }
      ]
    },

    "write_rx_mode": {
      "messages": [
        {
          "command": ["FE", "FE", "A4", "E0", "26", "00", null, null, "01", "FD"],
          "command_param": {
            "format": "Enum",
            "values": {
              "LSB": [ "00", "00" ], "USB": [ "01", "00" ], "AM": [ "02", "00" ], "CW": [ "03", "00" ], "RTTY": [ "04", "00" ],
              "FM": [ "05", "00" ], "CW-R": [ "07", "00" ], "RTTY-R": [ "08", "00" ], "DV": [ "17", "00" ],
              "LSB-D": [ "00", "01" ], "USB-D": [ "01", "01" ], "FM-D": [ "05", "01" ]}
          },
          "reply": ["FE", "FE", "E0", "A4", "FB", "FD"]
        }
      ]
    },

    "write_tx_mode": {
      "messages": [
        {
          "command": ["FE", "FE", "A4", "E0", "26", "01", null, null, "01", "FD"],
          "command_param": {
            "format": "Enum",
            "values": {
              "LSB": [ "00", "00" ], "USB": [ "01", "00" ], "AM": [ "02", "00" ], "CW": [ "03", "00" ], "RTTY": [ "04", "00" ],
              "FM": [ "05", "00" ], "CW-R": [ "07", "00" ], "RTTY-R": [ "08", "00" ], "DV": [ "17", "00" ],
              "LSB-D": [ "00", "01" ], "USB-D": [ "01", "01" ], "FM-D": [ "05", "01" ]}
          },
          "reply": ["FE", "FE", "E0", "A4", "FB", "FD"]
        }
      ]
    },

    "write_ptt_off": {
      "messages": [
        { "command": ["FE", "FE", "A4", "E0", "1C", "00", "00", "FD"], "reply": ["FE", "FE", "E0", "A4",  "FB", "FD"] }
      ]
    },

    "write_ptt_on": {
      "messages": [
        { "command": ["FE", "FE", "A4", "E0", "1C", "00", "01", "FD"], "reply": ["FE", "FE", "E0", "A4",  "FB", "FD"] }
      ]
    }
  },

  "simplex": {
    "setup": {
      "messages": [
        { "command": ["FE", "FE", "A4", "E0", "1A", "05", "01", "31", "00", "FD"], "reply": ["FE", "FE", "E0", "A4", "FB", "FD"], "comment": "transceive off" },
        { "command": ["FE", "FE", "A4", "E0", "0F", "00", "FD"], "reply": [ "FE", "FE", "E0", "A4", "FB", "FD"], "comment": "split off" }
      ],
      "restriction": "when_setting_up"
    },

    "read_rx_frequency":  {
      "messages": [
        {
          "command": ["FE", "FE", "A4", "E0", "25", "00", "FD"],
          "reply": ["FE", "FE", "E0", "A4", "25", "00", null, null, null, null, null, "FD"],
          "reply_param": {"format": "BCD_LE"}
        }
      ],
      "restriction": "when_receiving"
    },

    "read_tx_frequency":  {
      "messages": [
        {
          "command": ["FE", "FE", "A4", "E0", "25", "00", "FD"],
          "reply": ["FE", "FE", "E0", "A4", "25", "00", null, null, null, null, null, "FD"],
          "reply_param": {"format": "BCD_LE"}
        }
      ],
      "restriction": "when_transmitting"
    },

    "read_rx_mode":  {
      "messages": [
        {
          "command": ["FE", "FE", "A4", "E0", "26", "00", "FD"],
          "reply_param": {
            "format": "Enum", "values": {
              "LSB": [ "00", "00", "00" ], "LSB-D": [ "00", "01", "00" ], "USB": [ "01", "00", "00" ], "USB-D": [ "01", "01", "00" ],
              "AM": [ "02", "00", "00" ], "CW": [ "03", "00", "00" ], "CW-R": [ "07", "00", "00" ],
              "RTTY": [ "04", "00", "00" ], "RTTY-R": [ "08", "00", "00" ], "FM": [ "05", "00", "00" ], "FM-D": [ "05", "01", "00" ],
              "DV": [ "17", "00", "00" ]
            },
          "mask":  ["FF", "FF", "00"]
          },
          "reply": ["FE", "FE", "E0", "A4", "26", "00", null, null, null, "FD"]
        }
      ],
      "restriction": "when_receiving"
    },

    "read_tx_mode": {
      "messages": [
        {
          "command": ["FE", "FE", "A4", "E0", "26", "00", "FD"],
          "reply_param": {
            "format": "Enum", "values": {
              "LSB": [ "00", "00", "00" ], "LSB-D": [ "00", "01", "00" ], "USB": [ "01", "00", "00" ], "USB-D": [ "01", "01", "00" ],
              "AM": [ "02", "00", "00" ], "CW": [ "03", "00", "00" ], "CW-R": [ "07", "00", "00" ],
              "RTTY": [ "04", "00", "00" ], "RTTY-R": [ "08", "00", "00" ], "FM": [ "05", "00", "00" ], "FM-D": [ "05", "01", "00" ],
              "DV": [ "17", "00", "00" ]
            },
          "mask":  ["FF", "FF", "00"]
          },
          "reply": ["FE", "FE", "E0", "A4", "26", "00", null, null, null, "FD"]
        }
      ],
      "restriction": "when_transmitting"
    },

    "read_ptt":  {
      "messages": [
        {
          "command": ["FE", "FE", "A4", "E0", "1C", "00", "FD"],
          "reply": ["FE", "FE", "E0", "A4", "1C", "00", null, "FD"],
          "reply_param": { "format": "Enum", "length": 1, "values": { "ON": [ "01" ], "OFF": [ "00" ] }}
        }
      ]
    },

    "write_rx_frequency":  {
      "messages": [
        {
          "command": ["FE", "FE", "A4", "E0", "25", "00", null, null, null, null, null, "FD"],
          "reply": ["FE", "FE", "E0", "A4", "FB", "FD"],
          "command_param": {"format": "BCD_LE"}
        },
        { "command": ["FE", "FE", "A4", "E0", "0f", "00", "FD"], "reply": [ "FE", "FE", "E0", "A4", "FB", "FD"], "comment": "split off" }
      ],
      "restriction": "when_receiving"
    },

    "write_tx_frequency":  {
      "messages": [
        {
          "command": ["FE", "FE", "A4", "E0", "25", "00", null, null, null, null, null, "FD"],
          "reply": ["FE", "FE", "E0", "A4", "FB", "FD"],
          "command_param": {"format": "BCD_LE"}
        },
        { "command": ["FE", "FE", "A4", "E0", "0f", "00", "FD"], "reply": [ "FE", "FE", "E0", "A4", "FB", "FD"], "comment": "split off" }
      ],
      "restriction": "when_transmitting"
    },

    "write_rx_mode": {
      "messages": [
        {
          "command": ["FE", "FE", "A4", "E0", "26", "00", null, null, "01", "FD"],
          "command_param": {
            "format": "Enum",
            "values": {
              "LSB": [ "00", "00" ], "USB": [ "01", "00" ], "AM": [ "02", "00" ], "CW": [ "03", "00" ], "RTTY": [ "04", "00" ],
              "FM": [ "05", "00" ], "CW-R": [ "07", "00" ], "RTTY-R": [ "08", "00" ], "DV": [ "17", "00" ],
              "LSB-D": [ "00", "01" ], "USB-D": [ "01", "01" ], "FM-D": [ "05", "01" ]}
          },
          "reply": ["FE", "FE", "E0", "A4", "FB", "FD"]
        }
      ],
      "restriction": "when_receiving"
    },

    "write_tx_mode": {
      "messages": [
        {
          "command": ["FE", "FE", "A4", "E0", "26", "00", null, null, "01", "FD"],
          "command_param": {
            "format": "Enum",
            "values": {
              "LSB": [ "00", "00" ], "USB": [ "01", "00" ], "AM": [ "02", "00" ], "CW": [ "03", "00" ], "RTTY": [ "04", "00" ],
              "FM": [ "05", "00" ], "CW-R": [ "07", "00" ], "RTTY-R": [ "08", "00" ], "DV": [ "17", "00" ],
              "LSB-D": [ "00", "01" ], "USB-D": [ "01", "01" ], "FM-D": [ "05", "01" ]}
          },
          "reply": ["FE", "FE", "E0", "A4", "FB", "FD"]
        }
      ],
      "restriction": "when_transmitting"
    },

    "write_ptt_off": {
      "messages": [
        { "command": ["FE", "FE", "A4", "E0", "1C", "00", "00", "FD"], "reply": ["FE", "FE", "E0", "A4",  "FB", "FD"] }
      ]
    },

    "write_ptt_on": {
      "messages": [
        { "command": ["FE", "FE", "A4", "E0", "1C", "00", "01", "FD"], "reply": ["FE", "FE", "E0", "A4",  "FB", "FD"] }
      ]
    }
  }
}

Alex VE3NEA

unread,
Jun 9, 2026, 2:55:49 PMJun 9
to SkyRoof
Excellent analysis! IMHO, it would make sense to have two separate json files for this radio, standard and wireless. Echo consumes almost half of the connection bandwidth. Combined with a lower Baud rate, this may hurt  Doppler correction accuracy, and will certainly make dial knob tuning less responsive. If the file you posted is fully optimised for the wireless scenario, let me add it to the file set as IC-705-wireless.json and keep the existing file as is.

Joe Spears AF1E

unread,
Jun 9, 2026, 3:52:19 PMJun 9
to SkyRoof
That's fine.  Wish it were easier but I wanted the flexibility without having to swap them back and forth.

Joe

Alex VE3NEA

unread,
Jun 9, 2026, 7:42:36 PMJun 9
to SkyRoof
You mentioned the wireless file needed an empty setup list, but the file you posted has setup commands. May I ask you to verify your file one last time before I upload it to the SkyCAT repository.

Joe Spears AF1E

unread,
Jun 10, 2026, 3:43:55 PMJun 10
to SkyRoof

Alex, Great catch, and thanks for reviewing the file! You are completely right to call out that contradiction.

When I was first troubleshooting the timeouts over the wireless virtual COM port, I initially thought the initialization commands themselves were hanging the port, so my first workaround was to empty the setup list. However, I soon discovered the true root cause: a CI-V Echo mismatch. The Icom Remote Utility always forces an echo, so SkyCAT was reading its own commands out of the buffer and throwing a 'Reply mismatch' error.

By setting "echo": true in the JSON, SkyCAT knows to properly absorb that echoed command and wait for the actual FB (OK) acknowledgment from the radio. Because of this global echo fix, the original setup commands (transceive off, split on/off) actually execute perfectly over the wireless connection now without timing out. I left them in the final file so the radio initializes correctly, and it works flawlessly on both my wired and wireless setups.  i have two desktop startup commands to point skycat to the proper com port for each environment.

Joe AF1E

Alex VE3NEA

unread,
Jun 10, 2026, 9:23:06 PMJun 10
to SkyRoof
Thank you very much, John! Your file is now in the SkyCAT repository on GitHub.
Reply all
Reply to author
Forward
0 new messages