If you have questions or run in to any issues following these instructions, please be sure to ask on the Signal K mailing list and someone in the community will be sure to help you out.

Get Your Hardware (Connected)

While it is pretty likely that all of the Signal K software will run on Windows and OS X just as well as Linux, we have really only tested on Linux and the instructions below will assume that you are working on a Linux platform as well.

If you have a Raspberry Pi, both the Node.js Server and the Java Server have detailed Raspberry Pi “Getting Started” guides:

If you are not a technical person and do not feel ready to “dive in” to the world of DIY electronics and LINUX, then Digital Yacht’s new iKommunicate gateway might be a good solution. This little black box will interface with your existing NMEA0183 and NMEA2000 systems and allow you to run Signal K mobile and web apps, without building your own Signal K server. iKommunicate can also work with either the Signal K Node or Java Server, to connect the NMEA0183 and NMEA2000 data to the Raspberry Pi via Ethernet.

If you just want to see how Signal K works and aren’t interested in connecting to real hardware you can skip down to installing the server, otherwise continue on to learn how to interface your computer with your instrument system.

Connecting to NMEA 0183 Instruments

NMEA 0183 is specified as an RS-422 simplex network, however RS-232 (standard serial ports) work just as well for connecting to an NMEA 0183 network. It is recommended that you use an opto-isolated interface between your computer and the 0183 network to avoid damaging either your computer or instruments. A good option for this is the Actisense USG-1 as it provides 1500V of isolation to protect your equipment and proper differential signalling.

The USG-1 should be recognized as a serial device when it is connected to your computer and you should see a device called /dev/ttyUSB0 (the number could be different if there are multiple USB-to-serial adapters connected). Linux assigns these device names automatically when the device is connected, so it could change. If you want to ensure that the device always has the same name, you will need to write a UDEV rule to specify an alias. See creating UDEV rules for details.

To verify that you have a working connection, you can use picocom or another terminal emulator to see if you are receiving data. The default baud rate for NMEA 0183 is 4800.

$ picocom -b 4800 /dev/ttyUSB0

You should see NMEA 0183 sentences scrolling off the screen. To exit picocom press Ctrl-a followed by Ctrl-x.

Getting Started with NMEA 2000 Instruments

For NMEA 2000, you will need a NMEA 2000 gateway device such as the Actisense NGT-1 which connects your NMEA 2000 bus to your server’s USB port. Much like the USG-1, Linux should recognize the NGT-1 as a serial device and create the appropriate entry in /dev. However some distributions do not do this. You will need to create a UDEV rule and a simple startup script to get this device working. See creating UDEV rules for details. Important: currently, the Node.js server cannot natively parse NMEA 2000, you will need to install the CANboat suite of tools in order to read data from the NGT-1 and convert it to a format that the server can understand. This is not necessary for the Java server.

While Signal K data can be sent over any digital medium, it is designed primarily for Ethernet networks, so it makes sense to have a network on your boat, either wired or wireless. It is possible to set up your Linux computer as a WiFi access point, but that is outside the scope of this article. Here is an example of configuring a Raspberry Pi as a WiFi access point.

If you already have your instrument data available on your boat’s WiFi please drop us a note on the mailing list – we are always looking for new interfaces to support.

Install Signal K Server

There are two options currently for serving Signal K data. The first is signalk-server-node and the second is signalk-server-java.