Boat Remote

Boat remote is a way of getting boat related data (mostly NMEA) onto your Pebble smart watch. It has two parts – the server, which needs to be run on a server/laptop which will be on while you need to use the watch, and the watch app itself.

Please note that this is a personal project. While it works for us, we accept no responsibility for it working for you, although we’re happy to answer questions. Also, this project is no longer under development – watch this space for an apple watch equivalent!


  • Computer to use as a server
  • A Pebble Smartwatch
  • Python 2.7
  • Pynmea2
  • WiFi network
  • NMEA TCP feed

More information on the prerequisites is given in the appropriate section.

The Software

Boat Remote consists of two pieces of software.  The first is Boat Remote Server.  This is a set of python scripts that run on a machine with Python 2.7.  Most computers running Linux, Windows or Mac OS should be able to run Boat Remote Server, once the necessary prerequisites are installed.  We run this on a Raspberry Pi fitted to the boat.  Boat Remote Server takes a standard NMEA TCP feed and converts this into a format the Pebble watch can understand.

The second piece of software is Boat Remote, the Pebble application itself.  This is installed on your Pebble smart watch and connects to Boat Remote Server via the standard Pebble App on your smartphone.  Boat Remote displays the NMEA data on the watch.  No other applications need to be installed on your smartphone.

The Server


Boat Remote Server gathers NMEA data from a standard TCP feed.  All it needs is an IP address and port number for whatever device is providing the NMEA TCP data.

The data could be provided by a commercial NMEA multiplexer with an NMEA TCP output, or you can run your own NMEA multiplexer.

Our setup uses a Raspberry Pi as both the NMEA multiplexer and Boat Remote Server host.  We use Keith’s fantastic Kplex ( software as the multiplexer.  This can take a number of different NMEA inputs and can output them again in various different formats, including a TCP output that can be picked up by other devices, including Boat Remote Server.  Keith provides plenty of documentation on his website on how to install and configure Kplex.

The NMEA input to our Raspberry Pi is provided by a couple of serial to USB adapters using the FTDI FT232 chip (Such as this:  These work well on the Raspberry Pi as no extra drivers are required.  Some configuration is required to allow Kplex to listen to the inputs, however I suggest you read Keith’s documentation to work out how to configure this.

There are plenty of other products available that will link your NMEA data from your boat’s instruments to your network, so I will not cover every possible permutation.

Installing Boat Remote Server

The machine you plan to use as your server should already have python2.7 installed on it, along with Pynmea2. Pynmea2 can be found here or installed using pip or similar if available on your platform.

The Boat Remote Server code can be downloaded from here, or using git tools directly on your platform. Being python, no compilation is required.

Configuring Boat Remote Server

Once Boat Remote Server has been installed on your computer, there are a couple of quick settings that need to be configured.  The config file is located in ../ .  You need to open the config file using your favourite text editor and enter the appropriate settings for:

HTTP_HOST – This is the IP address for the network interface Boat Remote Server will output the formatted data on.  In most circumstances, this can be left at the default setting (which is blank).

HTTP_PORT – Here you can choose which port the formatted data will be served on.  You can leave this on the default port of 8082 unless you have another service using this port.

NMEA_HOST – This is the IP address of the device providing the NMEA TCP data.

NMEA_PORT – This is the port the NMEA TCP data is being provided on.

Running Boat Remote Server

To run Boat Remote Server, simply run If you want the script to run on startup, you’ll need to figure out how to do it for your specific platform. We have included the init script we use for the raspberry pi – we don’t recommend using this unless you know what you are doing.

Once Boat Remote Server is running, you can test it by opening the data output page in your favourite web browser.  Simply go to http://IP address of machine running Boat Remote Server:specified port/watch

For our personal configuration, we would open

This should bring up a simple page with various data labels hopefully with data next to them.  If a particular data label doesn’t have data, it will display a ~.  If all the labels show ~, either your NMEA TCP feed doesn’t have any of those particular bits of data, or there is a problem between Boat Remote Server and your NMEA TCP feed.  Check your settings in the config file, and test the NMEA TCP feed with a different device, such as a laptop running OpenCPN.

If the page doesn’t load at all, or you get a connection error, then confirm you are trying to open the correct IP and port, and ensure Boat Remote Server is running on the machine.

The Watch

Installing Boat Remote

Boat Remote is not yet available on the Pebble App Store, but it can be downloaded from here.

The code is available here.

Boat Remote uses PebbleKit JS, so depending on which smartphone platform you favour, there are slightly different installation procedures.


This one’s easy, just go to the above link on your device, or email the file to your device, then open it using the Pebble App.


Due to Apple’s limitations on running externally sourced code on iOS devices, there is an extra step to installing the app.  Open the Pebble App on your iOS device, go to Settings, then scroll down to “Developer Settings”.  Enable “Developer Mode”.  This will allow you to install PebbleKit JS apps that are not included in the Pebble App.  Once this is enabled, you can install Boat Remote just like any other Pebble application.

Configuring Boat Remote

Once Boat Remote is installed on your Pebble, you should get the configuration screen pop up on your smartphone.  There are three settings:

Server: – This is the IP address of the machine running Boat Remote Server.

Port: – This is the port you selected when configuring Boat Remote Server.  The default is 8082.

Use Phone GPS For Anchor Location: – If you use the anchor watch feature, you can select to record the GPS location of your smartphone (if this has a GPS chip) rather than your boat’s GPS.  This allows you to dinghy out to the position of your anchor and save that position, rather than where your boat is currently floating.  If phone GPS is not available, this will revert to boat GPS.

Running Boat Remote:

Once Boat Remote is installed and configured, you should be able to access it in your Pebble smart watch like any other application.

When you’re in the Boat Remote app, you will be presented with a list of “screens”.  Each screen shows a different set of data.  Press the middle button to enter a screen.  Press the back button to return to the menu.  When in a screen, you can use the up and down buttons to cycle between screens without returning to the menu.

In order for Boat Remote to work, Boat Remote Server will need to be correctly configured and running, and the Pebble App will need to be running on your smartphone.  Boat Remote will provide an error if it can’t connect to either the Pebble App or Boat Remote Server.  If either of these errors crop up, check your settings and ensure Boat Remote Server is working by opening up the data page in a web browser as discussed earlier.

When on a data screen, the Pebble will refresh data every second.  If left running, this will drain your Pebble’s battery more quickly.  If you go back into the Boat Remote menu, where the list of screens is, data will not be refreshed and battery consumption will be minimal.

Boat Remote will only display data that is up to 5 seconds old.  Any data that has not been refreshed for more than 5 seconds will not be displayed.

Creative Commons License
Boat Remote by Teresa Roberts is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.

1 Comment

Leave a Reply

Your email address will not be published. Required fields are marked *