It is easy to find simple depth sounders that are interoperable and have open-ish interfaces, but you would be hard-pressed to find a low cost device that gives the full water column and provides an open interface to do so.
This is a reference implementation to communicate with Vexilar SonarPhone fish finders (http://sonarphone.mobi/).
This project, and its author(s), are in no way affiliated with Vexilar. This was created for educational purposes only to increase interoperability of the device, and is released without any warranty whatsoever.
I've only built this on Linux, but it will probably work in Windows.
Requires Qt 6.
$ git clone https://github.com/scherererer/SonarPhony.git
$ cd SonarPhony
$ cmake .
$ make% Install cmake and build-essential
sudo apt install -y git cmake build-essential
% Install required Qt6 libraries
sudo apt install -y qt6-base-dev qt6-base-dev-tools libqt6network6
% clone SonorPhony directory and use cmake to build
git clone https://github.com/scherererer/SonarPhony.git
cd SonarPhony
mkdir build
cd build
cmake ..
% Specific to the Raspberry Pi 3 or other ram/core limited devices
make -j2To run, put your device in the water to turn it on, or shove a bit of wet paper cloth across the metal contacts for an in-air test (I don't recommend you do this too much, my experience has said running these in air isn't a good thing but it is for the consumer so it's probably fairly hardy). From your computer, a wifi network should appear (in my case it is T-POD-37A) and enter your wifi password as the manufacturer instructs. Then, start the program and hit the "run" button. The screen should start filling up with data.
A daemon is also distributed to run in a headless mode. It has options for sending NMEA0183 depth and sea temperature data over UDP to a chosen host. It can also be used to log to a local directory. Log files can later be visualzed by the GUI.
Tested on T-POD / SP100, SP200, and SP300.
One of the things I have not fully experimented with is how the "master" password protocol works, and so I strictly used the default password. If you're having trouble controlling the device or getting pings back and you changed the password, that may be why (although I haven't attempted that specific edge case yet).


