```html
Linux NMEA 2000 Autopilot Control for Yamaha HARMO
Linux Autopilot Control for Yamaha HARMO
Your Setup: Boat with Starlink + Linux computer → Reverse SSH tunnel → Fixed IP server → Your location
Goal: Control Yamaha HARMO autopilot from Linux via NMEA 2000
Understanding the Solution
To control your Yamaha HARMO's autopilot from Linux, you need to bridge the NMEA 2000 network to your Linux computer and run software that can send autopilot commands. Here's what you need:
Starlink
→
Linux Computer
→
NMEA 2000 Adapter
→
Yamaha HARMO
Hardware Options (NMEA 2000 to USB)
The most affordable option. Canboat is an open-source project that lets you build your own NMEA 2000 adapter using a CAN bus module.
- Parts needed: Canable/Cantact Pro USB adapter (~£35-50 or $50-70) or MCP2515 + Raspberry Pi
- NMEA 2000 connector: DeviceNet connector (available at marine stores)
- Pros: Cheapest, open source, well-documented
- Cons: Requires some DIY assembly
A popular marine-grade NMEA 2000 gateway that works well with Linux.
- Connection: USB or Ethernet (useful for networked boats)
- Linux support: Excellent, with Signal K plugin available
- Pros: Professional grade, reliable, good Linux support
- Cons: Pricier than DIY
The gold-standard NMEA 2000 interface, used by many professional marine systems.
- Connection: USB
- Linux support: Yes, via Actisense drivers or Signal K
- Pros: Very reliable, excellent driver support
- Cons: Most expensive option
A commercial version of the Canboat design - ready to use.
- Connection: USB
- Linux support: Yes, using Canboat software
- Pros: No assembly required, open source based
- Cons: Limited availability
Software Stack
You'll need to run marine navigation software on your Linux system that can interface with NMEA 2000 and control the autopilot.
The modern open-source marine data protocol. It converts NMEA 2000 data to a unified JSON format over HTTP/WebSocket.
- Install:
curl -fsSL https://signalk.org/install.sh | sudo sh
- NMEA 2000 plugins: Built-in support for many interfaces
- Autopilot integration: Works with OpenCPN, PyPilot, and many others
Full-featured chart plotter with autopilot control capabilities.
- Autopilot control: Can send NMEA 2000 autopilot commands
- Plugins: Extensive plugin ecosystem including Signal K
- Install: Available in most Linux package managers or from opencpn.org
Open-source autopilot software primarily designed for motor boats.
- Control: Can interface with NMEA 2000 heading and rudder data
- APIs: REST API for remote control
- Note: May need additional configuration for Yamaha HARMO specific commands
Recommended Solution (Cheapest + Reliable)
Total Cost: ~$80-150
Hardware:
- Canable USB adapter (~$50) from Canable.io or similar
- NMEA 2000 DeviceNet cable/connector (~$20-30)
- Or: Digital Yacht iKonvert (~£180) if you want plug-and-play
Software Installation:
- Install Signal K on your Linux boat computer
- Configure the NMEA 2000 adapter in Signal K
- Install OpenCPN for chart plotting and autopilot control
- Connect Signal K to OpenCPN via plugin
Remote Access (via your existing Starlink setup):
- Signal K exposes a local web server (port 3000)
- You can access it through your existing reverse SSH tunnel
- Use a browser or the Signal K mobile app to control
Specific Yamaha HARMO Considerations
Important: The Yamaha HARMO has electric steering and supports NMEA 2000 autopilot commands. However:
- NMEA 2000 PGNs needed: The autopilot uses standard PGNs like 129284 (Navigation - Route), 129285 (Navigation - Waypoint), and 127245 (Rudder). Make sure your software can send these.
- Yamaha outboard specific: Some HARMO models may require proprietary NMEA 2000 messages for full control. Check Yamaha documentation.
- Test first: Before relying on it, test all autopilot functions (auto, heading hold, waypoint navigation) in safe waters.
Setup Commands (Ubuntu/Debian)
Step 1: Install Signal K
curl -fsSL https://signalk.org/install.sh | sudo sh
After installation, access at http://localhost:3000
Step 2: Configure NMEA 2000 in Signal K
- Open Signal K admin panel
- Go to Server → Data Connections
- Add a new NMEA 2000 connection
- Select your USB device (or configure Canboat)
- Set baud rate to 115200 for NMEA 2000
Step 3: Install OpenCPN
sudo apt-get install opencpn # or download from opencpn.org
Step 4: Connect OpenCPN to Signal K
- Open OpenCPN → Options → Connections
- Add new connection → Network
- Protocol: GPSD
- Address: localhost:10110
Testing Checklist
- ✅ NMEA 2000 adapter shows up in Linux (
lsusb or ip link show)
- ✅ Signal K sees NMEA 2000 data (check Data Browser)
- ✅ OpenCPN receives heading and position data
- ✅ Autopilot control appears in OpenCPN toolbar
- ✅ Test autopilot functions while docked first
- ✅ Test in open water with someone at helm
Troubleshooting
Adapter not recognized
Check permissions: sudo usermod -a -G dialout $USER then log out/in
No NMEA 2000 data
- Verify terminators are on both ends of NMEA 2000 network
- Check power to NMEA 2000 network (usually 12V from battery)
- Try different USB ports
Autopilot won't respond
- Check Yamaha HARMO NMEA 2000 settings
- Verify autopilot is enabled in outboard settings
- Some functions may require the boat to be in gear
Note: Prices are approximate and may vary by location. Always test your setup in safe conditions before relying on it for navigation. Consider having a secondary backup (handheld VHF, paper charts) available.
```