Why doesn’t the plugin support Furuno / Raymarine / Garmin Fantom ….

Well, simply because no owner of such a radar bothered to implement it.

In our experience, to implement a new radar you need to have three items at the the same time and place:

  1. A radar of the desired type with the means to control it such as a chart-plotter.

  2. A software developer with at least some C++ skills. They don’t need to be huge, as long as (s)he has the willingness to learn.

  3. Lots of time to test, learn, adapt, recycle of #2.

We did the first implementation for the Navico Halo (very similar to the 4G) without the radar immediately available, with someone very helpful and responsive. But still, it is a slow and difficult process, also for the tester with the radar. He is loading version after version, returning log files and wireshark files time after time. As a developer you have a turnaround time of hours or days, instead of minutes for a single test. And remember that we are not programming from a specification, there is a lot of trial and error to specify the interface with the radar on the fly.

How do I go about this then?

Well, if you’ve done any software development in the last 15 years, you should be able to contribute. We’re here to help you with tips and support.

Once you’ve got the hardware running with a computer running OpenCPN, you will start by analysing the commands that your chartplotter produces and the data that comes from your radar. Luckily, all radars seem to send out spokes in the same sort of format, unencrypted and un-authenticated. To do the analysis you will need tools such as tcpdump and wireshark. Focus on simple things first: starting transmission, stopping transmission. Receiving spoke data.

Once you’ve got some idea what data goes back and forth, clone the radar_pi project and add files for your own radar type. It’s probably easiest to assess which existing radar looks the most like yours in terms of functionality, and then copy the files for that radar and modify them to your radar. In principle you only need to implement the actual sending of commands and the actual reception of radar data, and even those you don’t need to start from scratch but can probably copy an existing one. You will also need to extend the list of radars and the type of commands it supports, again see how this is done for existing radars.

You do not need to code the difficult bits, such as programming the PPI displays, overlay, menu entries, menu boxes, guard zones, target trails, etc. This is all generic code that you will just get for `free'.

Once you’ve started you should start sending us pull requests so that we can share your work with others with the same radar.