AgOpenGPS Knowledge Patch
Use this skill when designing, extending, deploying, or diagnosing AgOpenGPS,
AgIO, AgValoniaGPS, AgOpenWeb, GNSS correction paths, autosteer hardware, or
machine-control hardware. Start by identifying the exact application release,
codebase, board revision, firmware source commit, and operating mode.
Treat application behavior, field data, profiles, wire protocols, and hardware
pinouts as separate compatibility surfaces. Shared ancestry or a familiar board
name does not make any of those surfaces interchangeable.
Reference index
| Reference |
Topics |
| references/architecture-profiles-and-releases.md |
WinForms modernization, profiles, section timing, Task Controller, Easy Drive, release selection, field-data fixes |
| references/desktop-operation-and-networking.md |
Safety, portable installation, section capacity, layered AgIO diagnosis, Ethernet conventions |
| references/cross-platform-hosts.md |
AgValoniaGPS archival, AgOpenWeb architecture, execution modes, artifacts, migration boundaries |
| references/ntrip-and-correction-routing.md |
AgIO NTRIP requests, GGA, correction outputs, Serial NTRIP, caster pinning |
| references/rtcm-base-and-rtkbase.md |
F9P base messages, MSM coherence, correction freshness, RTKBase relays, receiver profiles |
| references/nmea-and-application-protocol.md |
Active sentence dispatch, checksum exception, NMEA/RTCM/custom-PGN boundaries |
| references/autosteer-hardware.md |
Hardware levels, AIO revisions, Teensy requirements, steering interfaces, antennas, IMU and WAS setup |
| references/machine-and-rate-control.md |
Machine firmware identity, PGNs, rate-controller families, ISOBUS ownership |
Breaking architecture and deployment changes
Identify the product line first
- Keep classic WinForms AgOpenGPS plus AgIO distinct from AgValoniaGPS and
AgOpenWeb.
- Use an official unprefixed tag for classic deployments, not a moving branch.
- Do not compare date-like AgValoniaGPS or AgOpenWeb versions as if they were
classic
6.8.x releases.
- Revalidate profiles, field files, custom PGNs, ports, GNSS sentences, and
board firmware whenever crossing codebases.
Account for the classic project-layout transition
- The classic 6.7 line remains WinForms and retains the AgIO/application split.
- Its projects use SDK style, no longer build for x86, move shared facilities
into
AgLibrary, and centralize logging.
- Review extensions that depend on 6.6.x project paths or internals.
- Prefer 6.7.1 over 6.7.0 when a deployment must remain on the 6.7 line.
- Treat 6.8 as 64-bit only.
Do not assume one combined vehicle file
- From 6.8.2, select vehicle and implement profiles independently.
- Store steering, IMU, GPS, and hardware-brand settings in the vehicle profile.
- Store sections, tramlines, relays, Arduino Machine settings, and nudge step in
the tool profile.
- Keep display, sound, and window-position settings in the environment profile.
- Legacy conversion reads
Vehicles/ and may proceed without a tool profile.
- Profile switching saves the current profile before loading another profile.
Update section-control assumptions
- Section control is switch-based in the 6.7 architecture.
- Machine nudge uses custom PGN 222.
- From 6.8.1, section processing runs at a fixed 10 Hz; never derive its timing
or diagnosis from render-frame rate.
- The desktop application can model either 16 individually sized sections or
64 equal sections, but controller output counts remain hardware-dependent.
Respect maintenance and successor status
- Classic WinForms became maintenance-only after feature work moved toward the
cross-platform rewrite, but critical fixes still landed after that shift.
- Prefer 6.8.5 for a classic 6.8 deployment.
- AgValoniaGPS is archived read-only and points to AgOpenWeb.
- AgOpenWeb is an independent fork and its browser UI does not prove that GNSS,
corrections, hardware UDP, or control output works.
Safety boundary
AgOpenGPS is described as a demonstration/simulator system and supplies no
built-in safety limits. Provide an independent means to stop automatic control,
keep people clear, and validate the complete physical system. RTK fix, coverage
painting, GNSS reception, and a responsive steering loop are not safety proof.
High-value operator workflows
Install a classic desktop release
- Unblock the Windows ZIP if required.
- Extract the complete archive to a normal writable directory.
- Run
AgOpenGPS.exe from the extracted tree, never from inside the archive.
- Launch AgIO separately when isolating communications from guidance behavior.
Diagnose AgIO from upstream to downstream
- Confirm incoming NMEA and inspect position and fix status.
- Confirm the NTRIP session and that correction bytes are moving.
- Check the chosen serial or UDP correction output.
- Check module status and the traffic reaching the hardware.
- Only then investigate application guidance or steering.
Use AgIO's serial and UDP monitors to filter and log traffic. A working browser,
Wi-Fi connection, caster session, or receiver detection proves only that one
stage is alive.
Keep the three navigation transports separate
receiver -> ASCII NMEA/proprietary sentences -> AgIO
caster -> binary RTCM corrections -> receiver
AgIO -> binary custom PGN 0xD6 -> application/modules
The final frame is AgOpenGPS protocol, not ASCII NMEA and not SAE J1939.
Configure NTRIP deliberately
- Select HTTP/1.0 or HTTP/1.1 request form and Basic authorization as required.
- Use Verify for reachability and Get Source Table to discover the real
mountpoint.
- Choose fixed or live GGA; interval
0 disables GGA transmission.
- Route received RTCM to serial, UDP, or use Serial NTRIP for locally
received corrections.
- Pin AgOpen Ntripcaster by commit or image and test source upload syntax.
Build a coherent F9P correction stream
- Emit
1005, MSM4 1074/1084/1094/1124, and 1230 for the documented
default-constellation stationary base setup.
- Use one MSM class and one observation rate for every constellation.
- Make the
1005 or 1006 station ID match every MSM station ID.
- Replace MSM4 with MSM7 when choosing MSM7; do not emit both families.
- Monitor correction age because an open link does not imply fresh corrections.
Diagnose RTKBase hop by hop
Start with the main RTKLIB str2str receiver input and local TCP stream. Then
inspect each NTRIP, TCP, serial, conversion, or file service independently.
Surveyed or fixed base coordinates are a separate requirement from receiver
detection and caster connectivity.
Hardware compatibility checkpoints
Record immutable identities
For an installation, record:
- exact application tag and product line;
- PCB family, revision, and population options;
- schematic or Gerber commit;
Boards commit and firmware folder;
- generated Config-O-Matic configuration;
- receiver role, hardware, profile, and firmware;
- host platform, browser-client platform, execution mode, and architecture.
Names such as AIO v4.5, Machine v5, or “latest firmware” are not enough to
reproduce a system.
Keep control levels and output owners distinct
- Lightbar guidance needs a Windows tablet and GNSS, not steering hardware.
- Autosteer additionally needs a controller, actuator, feedback, switching, and
suitable power or CAN integration.
- Section and rate control use a separate machine-control firmware path.
- Do not let ISOBUS Task Controller and a relay controller command the same
physical outputs.
Match the AIO design, actuator, and feedback chain
- Current AIO designs specifically require Teensy 4.1; 3.2 and 4.0 are not
drop-in substitutes.
- Select the correct steer-ready CAN, Keya, DIY motor, PWM hydraulic, or Danfoss
path; vehicle CAN messages, drivers, pinouts, and output modes differ.
- A PWM motor or valve commonly uses AIO 4.x, Cytron, WAS, and BNO085; Keya does
not need the separate Cytron.
- Verify BNO085 orientation and inversion, then WAS sign, center, range,
smoothness, and full travel before steering output is enabled.
Treat board pinouts as revision-specific
On AIO v2, pins 18/19 are a second CAN channel. On v4, pin 18 is Cytron supply
input and pin 19 is unconnected. Fuse battery input, limit the 12 V auxiliary
output to 1 A, and treat direct Teensy A12-A14 connections as unprotected.
Data and feature semantics
Easy Drive is temporary
Easy Drive provides quick guidance with a rigid single-section tool and no
field creation. It disables field-dependent features, writes no session data,
and restores the original vehicle and tool settings on exit.
Task Controller uses the existing AgIO path
The ISOBUS Task Controller launches through AgIO and uses the existing UDP and
custom-PGN channel to communicate with the application. Follow the repository's
protocol; do not invent a separate application transport.
Preserve local field state
AgShare downloads preserve local sections, flags, headland, and contour data.
Cancelling an already-triggered U-turn restores the original path, and Drive In
distance accepts comma-decimal locales.
Validation discipline
- Verify the active NMEA dispatch set rather than assuming parser presence means
a sentence is accepted; an RMC-only feed is insufficient.
- Treat the
$KS checksum exception as release-specific compatibility behavior,
not a general parser rule.
- Match custom-PGN framing, offsets, byte order, scaling, and checksum to both
application and controller firmware.
- Match rate-controller configuration and pin meanings to RC11-2, RC12-3, or
RC15; never transpose them between families.
- Test physical stop behavior and output ownership before field operation.
1---2name: agopengps-knowledge-patch-23description: AgOpenGPS4license: MIT5---678# AgOpenGPS Knowledge Patch910Use this skill when designing, extending, deploying, or diagnosing AgOpenGPS,11AgIO, AgValoniaGPS, AgOpenWeb, GNSS correction paths, autosteer hardware, or12machine-control hardware. Start by identifying the exact application release,13codebase, board revision, firmware source commit, and operating mode.1415Treat application behavior, field data, profiles, wire protocols, and hardware16pinouts as separate compatibility surfaces. Shared ancestry or a familiar board17name does not make any of those surfaces interchangeable.1819## Reference index2021| Reference | Topics |22| --- | --- |23| [references/architecture-profiles-and-releases.md](references/architecture-profiles-and-releases.md) | WinForms modernization, profiles, section timing, Task Controller, Easy Drive, release selection, field-data fixes |24| [references/desktop-operation-and-networking.md](references/desktop-operation-and-networking.md) | Safety, portable installation, section capacity, layered AgIO diagnosis, Ethernet conventions |25| [references/cross-platform-hosts.md](references/cross-platform-hosts.md) | AgValoniaGPS archival, AgOpenWeb architecture, execution modes, artifacts, migration boundaries |26| [references/ntrip-and-correction-routing.md](references/ntrip-and-correction-routing.md) | AgIO NTRIP requests, GGA, correction outputs, Serial NTRIP, caster pinning |27| [references/rtcm-base-and-rtkbase.md](references/rtcm-base-and-rtkbase.md) | F9P base messages, MSM coherence, correction freshness, RTKBase relays, receiver profiles |28| [references/nmea-and-application-protocol.md](references/nmea-and-application-protocol.md) | Active sentence dispatch, checksum exception, NMEA/RTCM/custom-PGN boundaries |29| [references/autosteer-hardware.md](references/autosteer-hardware.md) | Hardware levels, AIO revisions, Teensy requirements, steering interfaces, antennas, IMU and WAS setup |30| [references/machine-and-rate-control.md](references/machine-and-rate-control.md) | Machine firmware identity, PGNs, rate-controller families, ISOBUS ownership |3132## Breaking architecture and deployment changes3334### Identify the product line first3536- Keep classic WinForms AgOpenGPS plus AgIO distinct from AgValoniaGPS and37 AgOpenWeb.38- Use an official unprefixed tag for classic deployments, not a moving branch.39- Do not compare date-like AgValoniaGPS or AgOpenWeb versions as if they were40 classic `6.8.x` releases.41- Revalidate profiles, field files, custom PGNs, ports, GNSS sentences, and42 board firmware whenever crossing codebases.4344### Account for the classic project-layout transition4546- The classic 6.7 line remains WinForms and retains the AgIO/application split.47- Its projects use SDK style, no longer build for x86, move shared facilities48 into `AgLibrary`, and centralize logging.49- Review extensions that depend on 6.6.x project paths or internals.50- Prefer 6.7.1 over 6.7.0 when a deployment must remain on the 6.7 line.51- Treat 6.8 as 64-bit only.5253### Do not assume one combined vehicle file5455- From 6.8.2, select vehicle and implement profiles independently.56- Store steering, IMU, GPS, and hardware-brand settings in the vehicle profile.57- Store sections, tramlines, relays, Arduino Machine settings, and nudge step in58 the tool profile.59- Keep display, sound, and window-position settings in the environment profile.60- Legacy conversion reads `Vehicles/` and may proceed without a tool profile.61- Profile switching saves the current profile before loading another profile.6263### Update section-control assumptions6465- Section control is switch-based in the 6.7 architecture.66- Machine nudge uses custom PGN 222.67- From 6.8.1, section processing runs at a fixed 10 Hz; never derive its timing68 or diagnosis from render-frame rate.69- The desktop application can model either 16 individually sized sections or70 64 equal sections, but controller output counts remain hardware-dependent.7172### Respect maintenance and successor status7374- Classic WinForms became maintenance-only after feature work moved toward the75 cross-platform rewrite, but critical fixes still landed after that shift.76- Prefer 6.8.5 for a classic 6.8 deployment.77- AgValoniaGPS is archived read-only and points to AgOpenWeb.78- AgOpenWeb is an independent fork and its browser UI does not prove that GNSS,79 corrections, hardware UDP, or control output works.8081## Safety boundary8283AgOpenGPS is described as a demonstration/simulator system and supplies no84built-in safety limits. Provide an independent means to stop automatic control,85keep people clear, and validate the complete physical system. RTK fix, coverage86painting, GNSS reception, and a responsive steering loop are not safety proof.8788## High-value operator workflows8990### Install a classic desktop release91921. Unblock the Windows ZIP if required.932. Extract the complete archive to a normal writable directory.943. Run `AgOpenGPS.exe` from the extracted tree, never from inside the archive.954. Launch AgIO separately when isolating communications from guidance behavior.9697### Diagnose AgIO from upstream to downstream98991. Confirm incoming NMEA and inspect position and fix status.1002. Confirm the NTRIP session and that correction bytes are moving.1013. Check the chosen serial or UDP correction output.1024. Check module status and the traffic reaching the hardware.1035. Only then investigate application guidance or steering.104105Use AgIO's serial and UDP monitors to filter and log traffic. A working browser,106Wi-Fi connection, caster session, or receiver detection proves only that one107stage is alive.108109### Keep the three navigation transports separate110111```text112receiver -> ASCII NMEA/proprietary sentences -> AgIO113caster -> binary RTCM corrections -> receiver114AgIO -> binary custom PGN 0xD6 -> application/modules115```116117The final frame is AgOpenGPS protocol, not ASCII NMEA and not SAE J1939.118119### Configure NTRIP deliberately120121- Select HTTP/1.0 or HTTP/1.1 request form and Basic authorization as required.122- Use **Verify** for reachability and **Get Source Table** to discover the real123 mountpoint.124- Choose fixed or live GGA; interval `0` disables GGA transmission.125- Route received RTCM to serial, UDP, or use **Serial NTRIP** for locally126 received corrections.127- Pin AgOpen Ntripcaster by commit or image and test source upload syntax.128129### Build a coherent F9P correction stream130131- Emit `1005`, MSM4 `1074/1084/1094/1124`, and `1230` for the documented132 default-constellation stationary base setup.133- Use one MSM class and one observation rate for every constellation.134- Make the `1005` or `1006` station ID match every MSM station ID.135- Replace MSM4 with MSM7 when choosing MSM7; do not emit both families.136- Monitor correction age because an open link does not imply fresh corrections.137138### Diagnose RTKBase hop by hop139140Start with the main RTKLIB `str2str` receiver input and local TCP stream. Then141inspect each NTRIP, TCP, serial, conversion, or file service independently.142Surveyed or fixed base coordinates are a separate requirement from receiver143detection and caster connectivity.144145## Hardware compatibility checkpoints146147### Record immutable identities148149For an installation, record:150151- exact application tag and product line;152- PCB family, revision, and population options;153- schematic or Gerber commit;154- `Boards` commit and firmware folder;155- generated Config-O-Matic configuration;156- receiver role, hardware, profile, and firmware;157- host platform, browser-client platform, execution mode, and architecture.158159Names such as AIO v4.5, Machine v5, or “latest firmware” are not enough to160reproduce a system.161162### Keep control levels and output owners distinct163164- Lightbar guidance needs a Windows tablet and GNSS, not steering hardware.165- Autosteer additionally needs a controller, actuator, feedback, switching, and166 suitable power or CAN integration.167- Section and rate control use a separate machine-control firmware path.168- Do not let ISOBUS Task Controller and a relay controller command the same169 physical outputs.170171### Match the AIO design, actuator, and feedback chain172173- Current AIO designs specifically require Teensy 4.1; 3.2 and 4.0 are not174 drop-in substitutes.175- Select the correct steer-ready CAN, Keya, DIY motor, PWM hydraulic, or Danfoss176 path; vehicle CAN messages, drivers, pinouts, and output modes differ.177- A PWM motor or valve commonly uses AIO 4.x, Cytron, WAS, and BNO085; Keya does178 not need the separate Cytron.179- Verify BNO085 orientation and inversion, then WAS sign, center, range,180 smoothness, and full travel before steering output is enabled.181182### Treat board pinouts as revision-specific183184On AIO v2, pins 18/19 are a second CAN channel. On v4, pin 18 is Cytron supply185input and pin 19 is unconnected. Fuse battery input, limit the 12 V auxiliary186output to 1 A, and treat direct Teensy A12-A14 connections as unprotected.187188## Data and feature semantics189190### Easy Drive is temporary191192Easy Drive provides quick guidance with a rigid single-section tool and no193field creation. It disables field-dependent features, writes no session data,194and restores the original vehicle and tool settings on exit.195196### Task Controller uses the existing AgIO path197198The ISOBUS Task Controller launches through AgIO and uses the existing UDP and199custom-PGN channel to communicate with the application. Follow the repository's200protocol; do not invent a separate application transport.201202### Preserve local field state203204AgShare downloads preserve local sections, flags, headland, and contour data.205Cancelling an already-triggered U-turn restores the original path, and Drive In206distance accepts comma-decimal locales.207208## Validation discipline209210- Verify the active NMEA dispatch set rather than assuming parser presence means211 a sentence is accepted; an RMC-only feed is insufficient.212- Treat the `$KS` checksum exception as release-specific compatibility behavior,213 not a general parser rule.214- Match custom-PGN framing, offsets, byte order, scaling, and checksum to both215 application and controller firmware.216- Match rate-controller configuration and pin meanings to RC11-2, RC12-3, or217 RC15; never transpose them between families.218- Test physical stop behavior and output ownership before field operation.219