Network protocol

I’m continuing to use the WFView source code to try and implement an Apple Swift version of the client. I’m part way there, but stuck. I’m also using Wireshark to analyze the traffic between a Mac and the IC-7610.

Using the labels from the WFView source code:

This is all on the control (50001) port
The Mac sends an Are you there? request to the radio.
When the radio responds I am here, the Mac sends an Are you ready? request.
When the radio responds with I am here, the Mac sends a login request.
The radio responds with an login response indicating success.
The Mac sends a Token ack message, but doesn’t instead of getting a token response, it appears that the radio sends a capabilities message, followed by a conninfo message.
The Mac responds with what appears to be an appropriate conninfo response based Wireshark monitoring.

The Mac and the radio exchange ping packets and each periodically send Idle packets. I’m not seeing any requests from the radio for retransmission.

I can’t get the LAN indicator on the radio to come on and I can’t get the radio to respond to any Token renew or Token remove requests. The radio does respond to a control packet with a disconnect request in that it stops sending pings and idles, but then the radio doesn’t seem to respond to Are you there requests to reestablish connection.

Currently, I’m not doing anything on ports 50002 (serial) or 50003 (audio).

As near as I can tell from Wireshark the data the Mac is sending is very similar to data sent by RS-BA1.

Any suggestions?

73,
Mark, N8ME

I’m making progress. I think I have the communication working on the control port (50001). At least I can log in and log out and see the expected network traffic on Wireshark.

Now I need to figure out the other two ports.

73,
Mark

I’m still working on my program. I now have a program that can (most of the time) successfully connect to the radio and log in on the control (50001) port and enable and receive CI-V data on the serial (50002) port (it reliably receives CI-V data originated by the radio - such as frequency changes), but I’m having trouble getting the radio to respond to CI-V commands set to it. Most of the time, the radio seems to ignore my command, but every once in a while it does respond (and responds as expected). However, if I repeat the exact same test, the radio will more often or not fail to respond, so I suspect that I’m still missing something. One thing in my testing, I’m not cycling the power on the radio, so it’s possible that something from one run is leaving the radio in a different state.

I’ve compared the output of my program to that of other programs (WFView and RS-BA1) that work using Wireshark and I can’t figure out what those programs are doing differently. I’ve also looked at the WFView source code.

Any suggestions?
73,
Mark

Hi Mark,

The network protocol is filled with subtle details that have to be just right. We are still refining our work on this. There is work on this several times a week. Some radios are more picky than others too.

What are your goals with what you are exploring?

Thanks,

–E
de W6EL

Thanks for the reply. My goals are just to figure out the protocol details and learn programming and network programming using the Swift language on the Mac and iOS. It’s really just a puzzle I want to solve. FWIW, I working with an IC-7610.

Hi Mark,

It should be a fascinating journey.

When you feel like you’ve got it to a good spot, post your code on gitlab or github, I’d love to see it. I have no personal experience with swift at all!

It is only by working together that we become more; code is a perfect example.

–E
de W6EL

I’m eager to share my findings and welcome feedback. I just set up a GitHub repo. It’s my first attempt at that. Hopefully, it is set up so others can view it. It’s just a copy of the local Git repository created by XCode (the Apple development IDE I use).

My analysis of the Icom protocol is in the file RS-BA1 Analysis under Background Information. It’s just my analysis of packets monitored with Wireshark and insights from the WFView codebase.

1 Like

Ooh hey this is cool, I will definitely check it out!

Have a good weekend!

–E
de W6EL

Those of you who have already cloned my repository (I see at least three), I just uploaded a readme.md file that is kind of a brain dump of what I have learned so far.

we always keep a copy of the stuff if it ever gets lost :wink: (and pull the original off git as well)