Connecting SignalK to GPS NMEA0183 TCP Stream
Hi, I'm doing something similar, but I'm getting an error. First, I wrote a multiplexer that takes the GPS stream in from the USB port and makes it available as a TCP Stream.
OpenCPN reads the data (which is in NMEA0183 format) just fine and is displaying location, tracks, etc. However, SignalK server is giving me a constant stream of messages:
Aug 03 14:02:17 Are you sure you are using the correct line terminator? Not going to handle lines longer than 2048 chars.
Here are the settings for the data connection:
Data Type: NMEA0183
Enabled: YES
Data Logging: YES
ID: GPS
NMEA 0182 Source: TCP Client
Host: Localhost
Port: 10220
Output Events: nmea0183,nmea0183out
No data timeout: [blank]
Suppress nmea0183 event: NO
Input event: [blank]
Validate checksum: YES
Append Checksum: NO
Remove NULL characters: NO
Ignored Sentences: [blank]
Override timestamps: NO
I've done a submit and a restart. No change.
When I go to the dashboard, the incoming status indicator is not lit.
Is there a way to see what is streaming in that data connection? I do have debug logging enabled on the signalk-to-nmea183 plugin,
Additionally, mymultiplexer shows that it is sending data to two consumers. When I restart the SignalK server, for a short time the multiplexer shows sending data to one consumer, and then jumps back up to 2 consumers.
This is on a Windows 11 box at the moment. (Yes, I intend to run this on a Raspberry Pi, it's just that my windows box is a better development environment)
I'll be making the multiplexer available inboth compiled (Windows, Linux, Raspberry Pi) and source (Rust) formats.
And, yes, I do plan on connecting OpenCPN to the signalK server, directly, but first I have to get SignalK reading the [censored] GPS data.
17 Replies
With Wireshark, can you take a short capture of the TCP stream between your multiplexer and Signal K and post it here ?
I'll give that a try. never used wireshark, but I'll see if there's a version for Windows. One moment @Christian MOTELET
try turning on debug for
signalk-server:interfaces:tcp:nmea0183
that's done on the "Server Log" page
it will show what's coming in over TCPThanks @Scott Bender that helps:
$GLGSV,3,1,12,65,12,081,20,66,46,038,32,67,38,316,24,68,02,284,216E$GLGSV,3,2,12,75,09,026,20,76,43,078,30,77,36,143,21,81,26,223,266A
Aug 03 16:07:44 2025-08-03T20:07:44.175Z signalk:streams:tcp-data $GLGSV,3,3,12,82,37,280,25,83,13,330,,89,12,081,,94,46,038,63$GPGLL,3540.40659,N,07603.57444,W,200745.00,A,A77
Aug 03 16:07:44 2025-08-03T20:07:44.175Z signalk:streams:tcp-data $GPGRS,200745.00,1,1.8,1.4,1.5,1.7,2.9,0.7,-2.4,-1.9,-5.2,,,42$GPGRS,200745.00,1,1.4,2.3,2.9,-1.9,-8.9,0.4,0.7,-2.9,,,,69
Aug 03 16:07:44 2025-08-03T20:07:44.175Z signalk:streams:tcp-data $GPGST,200745.00,40,,,,4.2,2.8,1175
Aug 03 16:07:44 2025-08-03T20:07:44.176Z signalk:streams:tcp-data $GPZDA,200745.00,03,08,2025,00,006C
Aug 03 16:07:44 2025-08-03T20:07:44.176Z signalk:streams:tcp-data $GPGBS,200745.00,4.2,2.8,11.2,,,,*7B
Aug 03 16:07:44 Are you sure you are using the correct line terminator? Not going to handle lines longer than 2048 chars.
So the data is definitely there...
@Christian MOTELET Wireshark is showing good data. Neat tool, thank you for turning me onto it.
And there are indeed 0x0D and 0x0A at the end of each NMEA frame ?
Our parsing is definitely not decoding these
And *XX (checksum) just before ?
Some don't have checksums
One moment. Looking through the Wireshark data. It might well be missing the 0x0D and 0x0A.... One moment...
In fact none of them - to OpewnCPN or SignalK - seem to have the terminating 0x0D/0x0A. How odd.
But they do all have checksums.
we don't support GRS or GRV
only GSV, and it looks mangled
Ok, in wireshark, it's not mangled to either OpenCPN or SignalK - but it IS missing the CR/LF terminator. Not sure why that's happening, but I'll add that to my multiplexer.
There's a data dump from signalK
And tra la! SignalK server is showing data incomming from the GPS!
(It just took it a while)
it should not "take a while"
depending on how you are looking
It might have taken a little bit to re-establish the connection to the multiplexer since I had to take the multiplexer down to fix the code and then put it back up.
But things seems to be working - Freeboard knows where my ship is, etc. So all is right with the world!
@Scott Bender Sorry to bother you again, but I'm trying an experiment. I've tried to define a data source for SignalK server that directly reads the com port that has the GPS information without the use of the multiplexer and once again I am not seeing data go through. Obviously data IS flowing since if i remove SignalK and start up OpenCPN (or my multiplexer) I can see the data flowing. Here is the set up for the serial data stream:
I went looking for a signalk-server:interfaces:__ log file that might be useful, but couldn't find one that seemed to fit.
I do have data logging enabled.

Please do not post the same message in two different threads !!!!