Files
venus/dbus-no-foreign-land
Paul G dd566f6975 Apply Venus OS best practices across all services
- Standardize multilog to s25000 n4 (~100KB cap) to prevent filling /data
- Use VeDbusService register=False + deferred register() in dbus-generator-ramp and dbus-vrm-history
- Add @exit_on_error decorator to template GLib callback
- Document best practices in README and template README

Made-with: Cursor
2026-03-16 18:40:54 +00:00
..

NFL Tracking for Venus OS

A Venus OS addon that sends boat position and track data to noforeignland.com without requiring Signal K.

Features

  • Reads GPS position from Venus OS D-Bus (uses built-in dbus-python, no extra downloads)
  • Sends track data to the NFL API
  • Configurable via Settings menu (Settings → GPS → NFL Tracking)
  • 24h keepalive when boat is stationary
  • Runs as a daemon with automatic restart

Requirements

  • Venus OS device (Cerbo GX, Venus GX, etc.) with root access
  • Python 3 with dbus-python (built into Venus OS)
  • GPS connected to Venus OS (USB/serial GPS or router GPS)
  • noforeignland.com account and Boat API Key (Account > Settings > Boat tracking > API Key)
  • Internet connection for API uploads

Installation

From built package

# On your computer - build the package:
cd dbus-no-foreign-land
./build-package.sh --version 1.0.0

# Copy to Venus OS device:
scp dbus-no-foreign-land-1.0.0.tar.gz root@<device-ip>:/data/

# SSH to device and install:
ssh root@<device-ip>
cd /data && tar -xzf dbus-no-foreign-land-1.0.0.tar.gz
mv dbus-no-foreign-land /data/dbus-no-foreign-land
bash /data/dbus-no-foreign-land/install.sh
bash /data/dbus-no-foreign-land/install_gui.sh   # Add to Settings menu
# Configure via Settings → GPS → NFL Tracking (API key, boat name, intervals)

Manual install (from source)

  1. Copy the project folder to /data/dbus-no-foreign-land on your Venus OS device
  2. Run bash /data/dbus-no-foreign-land/install.sh
  3. Run bash /data/dbus-no-foreign-land/install_gui.sh to add NFL Tracking to Settings → GPS
  4. Configure via Settings → GPS → NFL Tracking (API key, boat name, intervals)

Configuration

All settings are configured via the Venus GUI: Settings → GPS → NFL Tracking

  • Boat API Key Get from noforeignland.com: Account > Settings > Boat tracking > API Key
  • Boat name Optional display name
  • Enable tracking Master on/off switch
  • Track interval Minimum seconds between points (103600s)
  • Min distance Meters moved before logging new point (110000m)
  • Send interval Minutes between API uploads (11440min)
  • 24h keepalive Send a point every 24h when stationary

Settings are stored in Venus localsettings (D-Bus) and persist across reboots.

Alternative: Configure via MQTT: N/<vrm-id>/nfltracking/0/Settings/BoatApiKey, etc.

GUI Settings

After install.sh, run install_gui.sh to add NFL Tracking to Settings → GPS:

bash /data/dbus-no-foreign-land/install_gui.sh

If the GUI goes blank, run install_gui.sh --remove to restore.

GPS Data Source

The addon reads GPS from Venus OS D-Bus:

  1. Reads com.victronenergy.system/GpsService to get the best GPS service name (e.g. com.victronenergy.gps.ve_ttyUSB0)
  2. Reads position from that GPS service:
    • Prefers /Latitude and /Longitude (numeric)
    • Fallback: /Position (string "lat,lon")
  3. Requires /Fix = 1 (GPS fix) before using position

If GPS data is not received:

  • Ensure GPS is connected and has a fix (Device List > Boat > GPS)
  • Run dbus -y on the device and inspect com.victronenergy.gps.* to verify paths
  • Some GPS sources (e.g. router NMEA) may use different path names

Debugging

# View logs
tail -F /var/log/dbus-no-foreign-land/current | tai64nlocal

# Restart service
/data/dbus-no-foreign-land/restart.sh

# Check status
svstat /service/dbus-no-foreign-land

Troubleshooting

"MemoryError" or "Cannot allocate memory" Python may fail to start on very low-RAM devices. Check free memory: free -m

Uninstall

bash /data/dbus-no-foreign-land/uninstall.sh

License

MIT