u-blox make some incredible GNSS receivers covering everything from low-cost, highly configurable modules such as the MAX-M10S all the way up to the surveyor grade ZED-X20P with precision of the diameter of a dime. This library supports configuration and control of u-blox devices over I2C (called DDC by u-blox), Serial and SPI. This version uses the u-blox Configuration Interface to: detect the module; configure message intervals; etc.. We wrote it for the most recent u-blox modules which no longer support messages like UBX-CFG-PRT or UBX-CFG-MSG.
This library is the new and improved version of the very popular SparkFun u-blox GNSS Arduino Library. v4 contains some big changes and improvements:
- Written by AI, directed by SparkFun
- We used Claude to rewrite this library, giving it careful direction using v3 as the starting point
- It was quite the journey, taking around eight working days from start to highly polished finish
- If you want to see how we did it, the files are in the AGENTS folder
- v4 is a fresh start
- It avoids the repetitive coding style of v3
- Each UBX message type is supported by its own code Class
- Each NMEA message type is also supported by its own code Class
- Unneeded UBX and NMEA message classes can be commented - to save both RAM and program memory
- Message fields (both UBX and NMEA) can be found and extracted by name
- Both Polling and Periodic messages are supported - with Callbacks for Periodic messages
- v4 is not backward-compatible with v3
- But we have included many helper methods to make migrating to v4 as easy as possible
- Please see PollingExample1_PositionVelocityTime for details
v4 of the library provides support for generation X20, F9 and M10 u-blox GNSS modules, which support the Configuration Interface
- examples - Example sketches for the library (.ino). Run these from the Arduino IDE.
- src - Source files for the library (.cpp, .h).
- keywords.txt - Keywords from this library that will be highlighted in the Arduino IDE.
- library.properties - General library properties for the Arduino package manager.
- keys - The u-blox Configuration Interface Key IDs extracted from multiple Interface Descriptions
- Utils - Python utilities we wrote to help analyze UBX/NMEA/RTC data and UBX format log files
API documentation is generated with Doxygen and published to GitHub Pages from the main branch.
This library is open source!
Please see LICENSE.md for full details.
- Your friends at SparkFun.