Import agricultural machine data straight into QGIS.
Yield, as-applied, as-planted and field boundaries — from the card, into a map.
A QGIS plugin that reads the data cards your machinery writes — the kind of import Ag Leader SMS does — and turns them into styled QGIS layers, with every logged sensor channel kept as an attribute.
It uses the AgGateway ADAPT plugin suite — the same import engine SMS itself uses — plus readers written here for formats ADAPT does not cover, so one plugin spans many manufacturers.
Internal tool — not for public distribution. Built for Olds College Center For Innovation, Smart Farm. John Deere, ISOXML (incl. New Holland and AGCO), Raven and field boundaries all import real data today, confirmed in QGIS — see Format support.
QGIS is already excellent at maps, styling, analysis and layout. The one thing it cannot do is read proprietary agricultural machine formats. SMSLIBRE fills exactly that gap and gets out of the way — no separate desktop app, no re-implementation of GIS features that QGIS already does better.
Internal distribution only. Get smslibre_import.zip from the
latest release (private
repo), then in QGIS:
Plugins ▸ Manage and Install Plugins… ▸ Install from ZIP → select the file → enable SMSLIBRE Machine Data Import.
The build bundles a self-contained .NET sidecar, so there is nothing else to
install. Windows x64 today; Linux builds from source with
python qgis_plugin/build_plugin.py --runtime linux-x64.
- Toolbar ▸ Import machine data…
- Choose the card folder — a USB/SD card as written by the display, or an
ISOXML
TASKDATAfolder. - Detect format — confirms which reader applies.
- Import, tick the layers you want, Add selected to map.
Layers arrive styled: the meaningful channel (yield volume, yield mass, moisture, applied rate…) rendered with a quantile red→green ramp, classified on non-zero readings so headland zeros don't flatten the map. Boundaries come in as labelled outlines.
Point at the original card or export, not at SMS's internal Vault — SMS reorganises data into a private store the vendor readers don't recognise.
| Format | Status |
|---|---|
| John Deere GS2 / GS3 / GS4 | ✅ Working — licensed SDK, verified in QGIS on real cards |
ISO 11783 / ISOXML (TASKDATA) |
✅ Working — verified on real cards |
| Field boundaries (any ADAPT source) | ✅ Working — verified on real cards |
Raven Slingshot (.jdp) |
✅ Working — own reader, no licence needed |
| AgGateway ADM | ⚪ loads; untested on data |
| Climate FieldView | ⚪ loads; untested on data |
| Precision Planting (2020) | ⚪ loads; untested on data |
| Trimble AgData | 🔒 vendor licence required |
About vendor licensing. The John Deere and Trimble ADAPT plugins refuse to initialise without a vendor-issued application id. Olds College holds John Deere's SDK License for Display Plugins for ADAPT, so John Deere import works here. Trimble still needs its own licence.
Two consequences of that licence, both already reflected in the design:
- It forbids contributing the licensed materials into an open-source project and restricts end users to internal purposes — hence internal distribution, and vendor plugins loaded from a licensed folder rather than redistributed.
- It prohibits reverse-engineering the licensed components, so the exploratory
work in
notes/JOHNDEERE_FORMAT.mdis retained only as a record of a path not taken.
Note John Deere's current plugins target .NET 10 and must come from Deere's own release — the older copies bundled inside SMS are Ag Leader's build and this licence does not cover them.
Real numbers from real cards:
- AGCO ISOXML harvest card — 45 layers, 550,219 points, 46 channels: yield mass & volume, harvest moisture, feeder throughput, rotor speed, header height & engaged state, working width, processor loss, crop type, timestamps…
- John Deere GS3 2630 card — 34 layers, 157,583 points, 41 channels: wet yield mass, harvest moisture, vehicle speed, fuel rate, heading, distance travelled, plus recorded weather (humidity, air/soil temperature, wind).
- John Deere Gen4 seeding card — 127 layers, 143,567 points, up to 598 channels; operation types beyond harvest (SowingAndPlanting, Fertilizing).
- New Holland ISOXML — 59 layers, 544,167 points.
- Raven Slingshot seeding/spraying — 36 layers, 445,293 points, 27 channels including per-section application rates.
Imported GeoPackages land in ~/Documents/SMSLIBRE (configurable), not a temp
folder, so saved QGIS projects keep working.
Everything lands in a GeoPackage (EPSG:4326), so it is ordinary QGIS data: filter it, join it, run it through Processing, style it however you like.
QGIS plugin (Python) ──subprocess──► smsimport (.NET sidecar)
dialog · layer load · styling ADAPT plugins → GeoPackage
The vendor importers are .NET assemblies. Loading a CLR inside QGIS's bundled Python is fragile and a crash would take QGIS with it, so the import runs in a separate process that speaks JSON. It is also how the plugin stays cross-platform.
| Path | Contents |
|---|---|
qgis_plugin/ |
the QGIS plugin (Python) + build_plugin.py packager |
sidecar/ |
the .NET sidecar: domain model, ADAPT host, GeoPackage writer, tests |
notes/ |
current analysis: feasibility, real-card testing, format notes |
notes/archive/ |
earlier phase, when the goal was porting all of SMS |
tools/ |
reverse-engineering utilities used to get here |
# Core + tests (no SMS install needed)
dotnet test sidecar/tests/SmsLibre.Core.Tests -c Release
# Internal build: bundles the licensed vendor SDK, works with no configuration
python qgis_plugin/build_plugin.py --runtime win-x64 --internal --install
# Public build: excludes all licensed material
python qgis_plugin/build_plugin.py --runtime win-x64 # or linux-x64Internal tool for Olds College Center For Innovation, Smart Farm — not for public distribution. It reads data files the institution already owns.
"SMS" and "Ag Leader" are trademarks of Ag Leader Technology; ADAPT is an AgGateway project; the manufacturer formats belong to their respective owners. No vendor software or licence key is redistributed here — the proprietary ADAPT plugins are loaded from each user's own licensed installation, as the vendor SDK licence requires.