opencpn-radar-pi / radar_pi

Radar plugin for OpenCPN with support for Navico and some Garmin and Raymarine radars
GNU General Public License v2.0
69 stars 40 forks source link

FURUNO DRS4DL+ recorded wireshark packets for analysis #246

Open bc38 opened 10 months ago

bc38 commented 10 months ago

Recorded Furuno's radar performance with wireshark The radar is connected directly to the rg45 connector of the laptop The radar was controlled in the TimeZero Pro software Written on Windows 10 The network card is set to IP address: 172.31.3.10

I hope that this data will help implement support for the FURUNO radar. Radar still available until Monday

https://mega.nz/file/kFRHlYQJ#59mdq1uQ8gVpaofnhgKTGl9im65WK6asP5F17QiEMAQ

Hakansv commented 10 months ago

I do hope these WS captures can be used as a start to develop Furuno. There's a friend of mine with a Furuno scanner and TimeZero not so far from here and we where discussing to meet and do similar captures. Now I can await analysis of these data and arrange it if more are needed. Thanks.

keesverruijt commented 10 months ago

Thanks. I don't think work will be started by the core team yet. We have too much to do elsewhere, and our self-interest in adding this is not high. It would be great if someone would step up and add support for Furuno though, in which case I'm sure this dump is of (some) value.

RobertWatchful commented 7 months ago

I am happy to start work on Furuno Radar. I have a DRS4DL and TimeZero. I just had a look using wireshark this afternoon at the controlling of the radar and can start, stop and change range from TCP Commands. I receive what I assume to be the spoke data over UDP. I do have some development experience and may be able to start a project to read the spoke data and make a port for the DRS4DL at least, and I also have a DRS-6A-NXT, although this is on my boat, so I would only look at that if I am successful with the smaller radar.

keesverruijt commented 7 months ago

Hi Robert, that is great news. If you need help with adapting the source code, let us know. Basically you can copy one of the existing radar brand subdirectories and adapt for Furuno. I think that for now you can assume that, like Navico radars, all Furuno radars will be 99% similar, so a single furuno directory should be enough.

If the radar supports dual range, the question is how is this done. The Navico radars do this by using different IP (multicast) addresses + ports for each range. YMMV...

Again, let us know if you need any help, we are happy to!

douwefokkema commented 7 months ago

A good point to start is to add your radar in RadarType.h. Take the last set of includes and add #include "furuno/Furunotype.h" Above you will have to add all Furuno specific files. Then make all missing files in analogy with the ones for existing radars. For the real hacking you go into the control and receive files. These steps will add Furuno to the radar selection list in preferences.

RobertWatchful commented 7 months ago

This is very helpful, Thank you for your advice. I will probably start work over the Christmas period.

basau74 commented 1 month ago

Is there any Progress on this? I want to be able to get scanline pixels from network packets of a Furuno radar and would love to help here. I think I am able to differentiate parts that might be the scanlines in each packet, but the data does not make much sense. The scanlines are variable length and contain some recognizable byte patterns:

8 Scanlines from a packet Copied from packet 5,608 of the `02 TX, STB.pcapng` file. - Angle(?)\ Data 1. 7c 1a 00 00\ 00 d1 14 28 3c 50 11 3c 28 14 00 81 08 10 18 20 11 38 54 6c 88 11 78 6c 5c 50 51 3c 28 14 00 fd 00 fd 00 fd 00 fd 00 85 2. 86 1a 00 00\ fe 14 c6 21 78 6c 5c fe 00 fe 00 fe 00 fe 00 ca 3. 90 1a 00 00\ fe 14 86 21 20 44 64 fe 00 fe 00 fe 00 fe 00 fe 00 0a 00 fe 4. 9a 1a 00 00\ fe 14 fe 50 06 44 38 2c 20 11 18 10 08 fe 00 fe 00 fe 00 fe 00 8a 00 fe 5. a4 1a 00 00\ d6 08 10 18 20 11 18 10 08 a6 14 28 3c 50 11 5c 6c 78 fe 00 fe 00 fe 00 fe 00 ea 00 6. ae 1a 00 00\ fe 08 e6 6c 54 38 20 1d fe 00 fe 00 fe 00 fe 00 aa 00 fe 00 7. b8 1a 00 00\ fe 08 a6 08 10 18 20 11 38 54 6c fe 00 fe 00 fe 00 fe 00 ea 8. c3 1a 00 00\ d6 14 28 3c 50 11 3c 28 14 fe 20 fe 00 fe 00 fe 00 fe 00 ba Note that the angle information are in big-endian byte order.

I can imagine that they use some form of compression but I have no experience in this field. Any suggestions which one I should test or which ones are common for radar systems?