Sail Buddy
Sail Buddy is a light-weight sailing app designed to do a few things well. When it comes to sailing I’m mostly a day sailor or a short-trip cruiser. I wanted a light-weight app that would show course, speed, and wind data from my SailTimer wind instrument without a lot of fuss, and without tripping around other features which 90% of the time I don’t use or want.
Sail Buddy is not a navigation app. There are many other apps that are better at navigation than Sail Buddy could ever be. No sense reinventing the wheel.
Here’s what Sail Buddy does:
- Displays course and speed in a large, easily read display
- Displays NMEA data the same way: TCP and UDP connections are supported
- Route tracking with full capture of GPS and NMEA data (a feature I couldn’t find in other apps). Saved trips can be viewed on a map or exported in CSV, KML (for Google maps), GPX/XML, JSON or GeoJSON formats
- Monitors and displays all “raw” NMEA data on a separate tab. You can filter by NMEA code or export the raw data to assist in troubleshooting your setup.
- Saved trips can be transferred between iOS devices that support AirDrop. Click the Share icon and choose “JSON (native)” format to transfer the trip to Sail Buddy running on a different device. This feature is nice for sharing trips with a friend, or viewing a trip on an iPad or larger display.
- iPhone, iPad and Apple Watch are all supported (Android is not, sorry)
Tell me what you think!
Sail Buddy is a work in progress with lots of room for new ideas. I am very interested in making it more useful so long as I can keep it fast and light. If you have ideas or are experiencing issues, please contact me.
NMEA Operation
Sail Buddy can read and display instrument data transmitted in NMEA 0183 format over a TCP or UDP connection. Here are some typical setups:
WiFi
WiFi-based hardware such as the Brookhouse iMux multiplexer, the SailTimer AirLink or the SailTimer wind vane (discontinued in 2013) create their own WiFi networks.
- Go to iPhone settings and choose the wifi network created by your hardware
- Tap the Settings icon in Sail Buddy, then tap the NMEA Configuration button and enter the network settings for your hardware
- Also enable the appropriate options under Hardware Support for your hardware
- Tap the NMEA button in Sail Buddy’s Instruments tab
SailTimer Wind Instrument
The SailTimer wind instrument connects directly to your iPhone via Bluetooth using a custom app.
- Download the SailTimer API from the App Store
- Launch the SailTimer API, connect to the wind instrument, and confirm it is receiving data
- Launch Sail Buddy, tap the Settings icon, then tap the NMEA Configuration button and enter these settings:
- Connection Type: UDP
- Port: 55554
- Displayed Data Types: Wind Speed & Direction
- Hardware Support: SailTimer Wind Instrument
- Tap the NMEA button in Sail Buddy’s Instruments tab
Sail Buddy supports the following NMEA sentences:
Category | Identifier | Definition |
---|---|---|
Location | ??GGA | GPS Location (if location source is set to “NMEA Data”) |
Location | ??RMC | Recommended Minimum Navigation Information (if location source is set to “NMEA Data”) |
Wind | ??MWV | Wind speed and angle |
Wind | ??MWD | Wind direction and speed (relative to true and magnetic north) |
Wind | ??VWR | Relative wind speed and angle |
Wind | PSTW | Wind direction and speed (relative to current heading). See SailTimer wind instrument |
Wind | WIBAT | Battery level (for SailTimer wind vane) |
Depth | ??DBT | Depth below transducer |
Depth | ??DBK | Depth below keel |
Depth | ??DBS | Depth below surface |
Depth | ??DPT | Depth (below surface or keel) |
If your device is not supported, please contact me and we can try to work something out.
Notes:
- Sail Buddy can obtain your location either from your iPhone/iPad’s built-in GPS (i.e., Location Services) or from your NMEA devices. The switch is in Settings/NMEA Configuration.
- NMEA mode works best if GPS mode is also enabled. Otherwise, data may not be monitored correctly if the app is running in the background. Also be sure to enable “Background Location Services” in your iOS settings.
Apple Watch
Sail Buddy for Apple Watch displays the same information as the iOS app. Swipe left or right to switch between information types.
You can also control Sail Buddy via the watch, for instance, start/stop route tracking. Force-press the display to access the menu.
Troubleshooting
Sail Buddy doesn’t display NMEA data
Check the following:
- Your NMEA device is turned on, sending data, and hasn’t crashed
- Your iPhone is connected to your NMEA device’s wifi network (if your device creates its own network), or your iPhone and your NMEA device are connected to the same network
- The NMEA button is “on” in the upper right corner of the Instruments tab in Sail Buddy
- Turn on the Monitor tab and confirm that NMEA sentences are coming through correctly (the green-coded ones are those that Sail Buddy understands). If some sentences are orange that indicates checksum failure (the 2-character code after the asterisk at the end of each sentence). If your devices don’t include checksums, you can disable this check in Settings > Sail Buddy
- Use the Status Log feature to save your session data to a log. If you’re seeing mysterious errors here, send me the logs.
- Try receiving data in another NMEA app, or the device’s native app if any. It’s possible your devices aren’t connected, aren’t sending data, or the network settings are not correct in Sail Buddy’s Settings tab.
I get a network error when I turn on NMEA data
- Your iPhone is not connected to your NMEA device’s wifi network (if your device creates its own network), or your iPhone and your NMEA device are connected to the same network
- Check to make sure your iPhone is not in airplane mode
- Try turning off “Monitor Network Status” in Settings > Sail Buddy (from your home screen). This disables Sail Buddy’s default check for network availability, which may be incompatible with the custom hardware of some networks.
I’m receiving some NMEA data, but not wind angle
Some devices transmit wind data relative to compass north, while others trasmit relative to your current heading. An option in the Settings tab lets you specify which reference point to use, and uses your current heading to convert one to the other if necessary. But if you’re not moving, Sail Buddy can’t make this calculation. To correct for this, your boat should be moving, or you should change the option in Settings to match the native data sent by your device.
Nope, none of that solves my problem
Use the monitor and status log features described in the next sections to send me your data, and I’ll try to help you out.
NMEA Data Monitoring
The Monitor tab shows a running display of all valid incoming NMEA messages, even those that Sail Buddy otherwise ignores. Use the button in the top left to turn the monitor on or off. In the Settings tab, click the Monitor button to include timestamps, or filter the monitor to just certain messages of interest.
The display is color-coded by message status. Invalid messages appear in red while messages that failed checksum confirmation appear in orange. (You can disable checksum verification in Settings > Sail Buddy). The codes for NMEA sentences that Sail Buddy handles appear in green while those it doesn’t appear in blue.
You can export the NMEA monitor (the most recent 500 sentences) with the Share button in the upper right. Note the extra “Mail to Publisher” option, which lets you email the data directly to me in case you are having technical issues.
Status Logs
In addition to the NMEA monitor, Sail Buddy has an option to separately log low-level network events. This can be helpful if you aren’t getting any data whatsoever (i.e. the Instrument display is blank, and the NMEA monitor is very sparse or empty), which might indicate a network connection issue or data parsing error.
Go to Settings > Sail Buddy (from your home screen), scroll down a bit, and turn on the “Log Messages” option. Sail Buddy will now log subsequent log NMEA sessions, which you start and finish in the Instruments tab, keeping a log going back a day or two at any given time. Then go to the Settings tab in Sail Buddy and click the “Share Logs” button to email me the log. If you just want to view the log data, follow the same steps but don’t click Send.
Privacy Policy
All personal information collected by Sail Buddy, including your location, data logs, and any metadata you enter yourself, is only stored on your iOS device. Sail Buddy does not interact with a data server (other than your own devices) and does not access or store information remotely.