diff --git a/rigs/icom/frame.c b/rigs/icom/frame.c index 57e2614f3..40e2d6f69 100644 --- a/rigs/icom/frame.c +++ b/rigs/icom/frame.c @@ -183,6 +183,7 @@ collision_retry: * up to rs->retry times. */ +again1: retval = read_icom_frame(rp, buf, sizeof(buf)); if (retval == -RIG_ETIMEOUT || retval == 0) @@ -209,6 +210,11 @@ collision_retry: rig_debug(RIG_DEBUG_TRACE, "%s: DEBUG retval=%d, frm_len=%d, cmd=0x%02x\n", __func__, retval, frm_len, cmd); + if (buf[1] == 0x00) // then this is a transceive frame so ignore it + { + goto again1; + } + if (retval != frm_len && cmd == C_SET_PWR) { rig_debug(RIG_DEBUG_TRACE, "%s: removing 0xfe power up echo, len=%d", __func__, @@ -289,6 +295,7 @@ read_another_frame: * FIXME: handle padding/collisions * ACKFRMLEN is the smallest frame we can expect from the rig */ +again2: buf[0] = 0; frm_len = read_icom_frame(rp, buf, sizeof(buf)); @@ -297,6 +304,11 @@ read_another_frame: priv->serial_USB_echo_off = 0; } + if (buf[1] == 0x00) // then it's a transceive frame so ignore it + { + goto again2; + } + #if 0 // this was causing rigctld to fail on IC706 and WSJT-X