Running AgOpenGPS 6.8.1 on Ubuntu Linux

I had a go with AgOpenGPS and AgIO on Ubuntu for my Surface Pro.
I got most working, but AgOpenGPS dit not get the WAS signal. (AgIO did)

Not sure if all steps are needed, but this is what I did.

Please add info if someone fixed the was-problem

Wrapup by Claude:


Running AgOpenGPS 6.8.1 on Ubuntu Linux – Complete Guide

This guide documents how to run AgOpenGPS on Ubuntu Linux using Wine. It took considerable effort to get working, and the key findings are documented here to help others.

Prerequisites

  • Ubuntu 24 (x86-64)
  • AOG board connected via ethernet (192.168.5.x subnet)
  • WiFi used separately for NTRIP/RTK

Wine Installation

Do not use Ubuntu’s own wine package. Install WineHQ’s official version:

sudo dpkg --add-architecture i386
sudo mkdir -pm755 /etc/apt/keyrings
sudo wget -O /etc/apt/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key
sudo wget -NP /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/$(lsb_release -sc)/winehq-ubuntu.list
sudo apt update
sudo apt install --install-recommends winehq-stable

Wine Prefix and dotnet

AgOpenGPS.exe is 64-bit, AgIO.exe is 32-bit. AOG launches AgIO automatically, so you only need one 64-bit prefix:

WINEPREFIX=~/aog64 WINEARCH=win64 wineboot
WINEPREFIX=~/aog64 WINEARCH=win64 winetricks dotnet48 corefonts

Network Permissions for Wine

Wine needs capabilities to open UDP sockets. Without this, AgIO will fail with “Access denied” on socket bind and UDP will not work:

sudo setcap cap_net_raw,cap_net_bind_service,cap_net_admin+eip $(find /opt/wine-stable -name "wine-preloader" | grep x86_64)
sudo setcap cap_net_raw,cap_net_bind_service,cap_net_admin+eip /opt/wine-stable/bin/wine

Note: Wine may be installed in a different location. Check with:

find /opt -name "wine-preloader" 2>/dev/null
which wine

Wine Hosts File

Wine has its own hosts file that needs to be updated with your hostname. Without this, AgIO will repeatedly try to resolve the hostname via DNS and may fail to communicate internally:

HOSTNAME=$(hostname)
echo "127.0.0.1   localhost" >> ~/aog64/drive_c/windows/system32/drivers/etc/hosts
echo "127.0.0.1   ${HOSTNAME}.home" >> ~/aog64/drive_c/windows/system32/drivers/etc/hosts
echo "127.0.0.1   ${HOSTNAME}" >> ~/aog64/drive_c/windows/system32/drivers/etc/hosts

Starting AOG

WINEPREFIX=~/aog64 WINEARCH=win64 wine /path/to/AgOpenGPS.exe

AOG will automatically launch AgIO. You do not need to start AgIO manually.


Critical AgIO Setting – The Key Fix

This is the single most important setting for Linux. Without it, GPS data flows correctly between the board and AgIO, but nothing reaches AOG.

In AgIO, find the Linux loopback address setting and set it to:

127.0.0.1

The default value 127.255.255.255 does not work on Linux. Here is why:

AOG listens for incoming data on 127.0.0.1:15555. AgIO by default sends to the broadcast address 127.255.255.255. On Linux, the loopback interface does not deliver broadcast packets to a unicast socket. This was verified with tcpdump – packets were clearly flowing from AgIO (127.0.0.1:17777) to 127.255.255.255:15555, but AOG never received them.

Setting the loopback address to 127.0.0.1 makes AgIO send directly to AOG’s unicast address, and everything works.

This explains the well-known symptom on Linux where AgIO shows GPS data (lat/lon visible, green modules) but AOG shows “No GPS Warning – Lost GPS” continuously.


What Works

  • :white_check_mark: AOG launches and runs
  • :white_check_mark: AgIO launches automatically from AOG
  • :white_check_mark: UDP communication with AIO/PANDA board over ethernet
  • :white_check_mark: GPS fix and position in AOG
  • :white_check_mark: Tractor moves on the map

Known Issues (as of version 6.8.1)

  • :cross_mark: WAS/steering angle does not reach AOG – likely the same loopback broadcast issue affecting steer packets. Brian confirmed this behavior in an earlier forum post but it remains unsolved.
  • :cross_mark: RateController cannot find AOG
  • :cross_mark: ScanNetwork() gives Access denied errors in AgIO log – harmless, does not affect operation

Notes

  • The ScanNetwork() Access denied errors appear periodically in the AgIO log. These are harmless – AgIO communicates fine with the board despite these errors.
  • Tested on WineHQ stable 9.x with dotnet48 on Ubuntu 24.
  • If anyone finds a fix for WAS/steering angle not reaching AOG, please post it here.
4 Likes