Repo symbol

ublox_dgnss repository

gps ublox ubx gps-location gps-data ros2 high-precision ntripcaster dgnss ntripclient ntrip_client_node ublox_dgnss ublox_dgnss_node ublox_nav_sat_fix_hp_node ublox_ubx_interfaces ublox_ubx_msgs

Repository Summary

Description This usb based ROS2 driver is focused on UBLOX UBX messaging, for ZED-X20P, ZED-F9P and ZED-F9R devices. High precision data is available as well as moving base station configurations.
Checkout URI https://github.com/aussierobots/ublox_dgnss.git
VCS Type git
VCS Version main
Last Updated 2025-08-15
Dev Status MAINTAINED
Released RELEASED
Tags gps ublox ubx gps-location gps-data ros2 high-precision ntripcaster dgnss ntripclient
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

Presently have an issue with the apt packages which we are tring to resolve. Works if you build locally.

ublox-dgnss

This usb based driver is focused on UBLOX UBX messaging, for a DGNSS rover and base station. High precision data is available.

A moving base station configuration has been added. This package also supports a fixed base station and moving rover use case.

RTCM messages can be delivered externally. Alternately the ntrip_client_node can be utilised to retrieve RTCM messages from a castor to publish /ntrip_client/rtcm messages which will be received by the ublox_dgnss_node.

Work has started on SPARTN support - basic commands are available to enable it on the device and to confirm that the messages are being used (when delivered to the device).

This driver supports multiple u-blox device families including ZED-F9P, ZED-F9R, and X20P connected via USB, under Ubuntu 22.04/24.04. The driver uses libusb api 1.0 and automatically adapts to different USB architectures (CDC-ACM for F9 family, Vendor-Specific for X20P).

This release works with Rolling, Kilted, Jazzy and Humble.

You may need to create a udev rule as follows:

/etc/udev/rules.d/99-ublox-gnss.rules

# UBLOX ZED-F9P/F9R (CDC-ACM)
ATTRS{idVendor}=="1546", ATTRS{idProduct}=="01a9", MODE="0666", GROUP="plugdev"

# UBLOX ZED-X20P (CDC-ACM) - SUPPORTED
ATTRS{idVendor}=="1546", ATTRS{idProduct}=="01ab", MODE="0666", GROUP="plugdev"
# UBLOX X20P UART1 (Vendor-Specific) - NOT SUPPORTED
ATTRS{idVendor}=="1546", ATTRS{idProduct}=="050c", MODE="0666", GROUP="plugdev"
# UBLOX X20P UART2 (Vendor-Specific) - NOT SUPPORTED
ATTRS{idVendor}=="1546", ATTRS{idProduct}=="050d", MODE="0666", GROUP="plugdev"

This driver follows the UBX standards used for the ZED-X20P/F9P/F9R as documented in the X20P intergration manual and X20P interface description. Earlier manual versions are available on the u-blox website.

It implements a subset of the specification related to achieving high precision output as a rover and base station. U-center can be used to alter settings. Any configuration parameter changed by this driver, will be applied only in RAM. Upon a restart (hot, cold or warm) or after a hot plug usb attach event, the configuration stored in the driver will be sent to the device.

ZED-X20P support

The UBLOX ZED-X20P has only just been released. There are some differences between the F9P and X20P. On the whole the UBX messages are the same specification but there are some like /ubx_rxm_rtcm that have been deprecated, on the device, in the manual, in favor of the newer /ubx_rxm_cor.

⚠️ Important: X20P Interface Limitations

The X20P device presents multiple USB interfaces:

  • ✅ Main Interface (0x01ab): Fully supported with F9P/F9R compatibility
  • ❌ UART1 Interface (0x050c): Not currently supported
  • ❌ UART2 Interface (0x050d): Not currently supported

Use only the main X20P interface (0x01ab) for full functionality. See GitHub Issue #48 for technical details.

Two new launch files with 25 HZ output have been added specific for the X20P main interface:

ros2 launch ublox_dgnss ublox_x20p_rover_hpposllh.launch.py

ros2 launch ublox_dgnss ublox_x20p_rover_hpposllh_navsatfix.launch.py

otherwise all other launch files have been modified such that adding -- DEVICE_FAMILY:=x20p will enable the launch file and UBLOX NODE to connect to a ZED-X20P main interface. If not added the launch files default to the f9p device family.

Start commands

There are multiple ways to start the node. Its been built using composition. An executable is provider. An example follows which turns off NMEA output at startup.

ros2 run ublox_dgnss_node ublox_dgnss_node --ros-args -p CFG_USBOUTPROT_NMEA:=False

Parameters can be set at launch and some examples are provided to launch high precision pos ecef llh
ros2 launch ublox_dgnss ublox_rover_hpposecef.launch.py

ros2 launch ublox_dgnss ublox_rover_hpposllh.launch.py

Services

Four services are provided to reset odo, cold start, warm start and hot start.

ros2 service call /ublox_dgnss/reset_odo ublox_ubx_interfaces/srv/ResetODO

ros2 service call /ublox_dgnss/cold_start ublox_ubx_interfaces/srv/ColdStart '{reset_type: 1}'

ros2 service call /ublox_dgnss/warm_start ublox_ubx_interfaces/srv/WarmStart '{reset_type: 1}'

ros2 service call /ublox_dgnss/hot_start ublox_ubx_interfaces/srv/HotStart '{reset_type: 1}'

Parameters

File truncated at 100 lines see the full file

Repo symbol

ublox_dgnss repository

gps ublox ubx gps-location gps-data ros2 high-precision ntripcaster dgnss ntripclient ntrip_client_node ublox_dgnss ublox_dgnss_node ublox_nav_sat_fix_hp_node ublox_ubx_interfaces ublox_ubx_msgs

Repository Summary

Description This usb based ROS2 driver is focused on UBLOX UBX messaging, for ZED-X20P, ZED-F9P and ZED-F9R devices. High precision data is available as well as moving base station configurations.
Checkout URI https://github.com/aussierobots/ublox_dgnss.git
VCS Type git
VCS Version main
Last Updated 2025-08-15
Dev Status MAINTAINED
Released RELEASED
Tags gps ublox ubx gps-location gps-data ros2 high-precision ntripcaster dgnss ntripclient
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

Presently have an issue with the apt packages which we are tring to resolve. Works if you build locally.

ublox-dgnss

This usb based driver is focused on UBLOX UBX messaging, for a DGNSS rover and base station. High precision data is available.

A moving base station configuration has been added. This package also supports a fixed base station and moving rover use case.

RTCM messages can be delivered externally. Alternately the ntrip_client_node can be utilised to retrieve RTCM messages from a castor to publish /ntrip_client/rtcm messages which will be received by the ublox_dgnss_node.

Work has started on SPARTN support - basic commands are available to enable it on the device and to confirm that the messages are being used (when delivered to the device).

This driver supports multiple u-blox device families including ZED-F9P, ZED-F9R, and X20P connected via USB, under Ubuntu 22.04/24.04. The driver uses libusb api 1.0 and automatically adapts to different USB architectures (CDC-ACM for F9 family, Vendor-Specific for X20P).

This release works with Rolling, Kilted, Jazzy and Humble.

You may need to create a udev rule as follows:

/etc/udev/rules.d/99-ublox-gnss.rules

# UBLOX ZED-F9P/F9R (CDC-ACM)
ATTRS{idVendor}=="1546", ATTRS{idProduct}=="01a9", MODE="0666", GROUP="plugdev"

# UBLOX ZED-X20P (CDC-ACM) - SUPPORTED
ATTRS{idVendor}=="1546", ATTRS{idProduct}=="01ab", MODE="0666", GROUP="plugdev"
# UBLOX X20P UART1 (Vendor-Specific) - NOT SUPPORTED
ATTRS{idVendor}=="1546", ATTRS{idProduct}=="050c", MODE="0666", GROUP="plugdev"
# UBLOX X20P UART2 (Vendor-Specific) - NOT SUPPORTED
ATTRS{idVendor}=="1546", ATTRS{idProduct}=="050d", MODE="0666", GROUP="plugdev"

This driver follows the UBX standards used for the ZED-X20P/F9P/F9R as documented in the X20P intergration manual and X20P interface description. Earlier manual versions are available on the u-blox website.

It implements a subset of the specification related to achieving high precision output as a rover and base station. U-center can be used to alter settings. Any configuration parameter changed by this driver, will be applied only in RAM. Upon a restart (hot, cold or warm) or after a hot plug usb attach event, the configuration stored in the driver will be sent to the device.

ZED-X20P support

The UBLOX ZED-X20P has only just been released. There are some differences between the F9P and X20P. On the whole the UBX messages are the same specification but there are some like /ubx_rxm_rtcm that have been deprecated, on the device, in the manual, in favor of the newer /ubx_rxm_cor.

⚠️ Important: X20P Interface Limitations

The X20P device presents multiple USB interfaces:

  • ✅ Main Interface (0x01ab): Fully supported with F9P/F9R compatibility
  • ❌ UART1 Interface (0x050c): Not currently supported
  • ❌ UART2 Interface (0x050d): Not currently supported

Use only the main X20P interface (0x01ab) for full functionality. See GitHub Issue #48 for technical details.

Two new launch files with 25 HZ output have been added specific for the X20P main interface:

ros2 launch ublox_dgnss ublox_x20p_rover_hpposllh.launch.py

ros2 launch ublox_dgnss ublox_x20p_rover_hpposllh_navsatfix.launch.py

otherwise all other launch files have been modified such that adding -- DEVICE_FAMILY:=x20p will enable the launch file and UBLOX NODE to connect to a ZED-X20P main interface. If not added the launch files default to the f9p device family.

Start commands

There are multiple ways to start the node. Its been built using composition. An executable is provider. An example follows which turns off NMEA output at startup.

ros2 run ublox_dgnss_node ublox_dgnss_node --ros-args -p CFG_USBOUTPROT_NMEA:=False

Parameters can be set at launch and some examples are provided to launch high precision pos ecef llh
ros2 launch ublox_dgnss ublox_rover_hpposecef.launch.py

ros2 launch ublox_dgnss ublox_rover_hpposllh.launch.py

Services

Four services are provided to reset odo, cold start, warm start and hot start.

ros2 service call /ublox_dgnss/reset_odo ublox_ubx_interfaces/srv/ResetODO

ros2 service call /ublox_dgnss/cold_start ublox_ubx_interfaces/srv/ColdStart '{reset_type: 1}'

ros2 service call /ublox_dgnss/warm_start ublox_ubx_interfaces/srv/WarmStart '{reset_type: 1}'

ros2 service call /ublox_dgnss/hot_start ublox_ubx_interfaces/srv/HotStart '{reset_type: 1}'

Parameters

File truncated at 100 lines see the full file

Repo symbol

ublox_dgnss repository

gps ublox ubx gps-location gps-data ros2 high-precision ntripcaster dgnss ntripclient ntrip_client_node ublox_dgnss ublox_dgnss_node ublox_nav_sat_fix_hp_node ublox_ubx_interfaces ublox_ubx_msgs

Repository Summary

Description This usb based ROS2 driver is focused on UBLOX UBX messaging, for ZED-X20P, ZED-F9P and ZED-F9R devices. High precision data is available as well as moving base station configurations.
Checkout URI https://github.com/aussierobots/ublox_dgnss.git
VCS Type git
VCS Version main
Last Updated 2025-08-15
Dev Status MAINTAINED
Released RELEASED
Tags gps ublox ubx gps-location gps-data ros2 high-precision ntripcaster dgnss ntripclient
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

Presently have an issue with the apt packages which we are tring to resolve. Works if you build locally.

ublox-dgnss

This usb based driver is focused on UBLOX UBX messaging, for a DGNSS rover and base station. High precision data is available.

A moving base station configuration has been added. This package also supports a fixed base station and moving rover use case.

RTCM messages can be delivered externally. Alternately the ntrip_client_node can be utilised to retrieve RTCM messages from a castor to publish /ntrip_client/rtcm messages which will be received by the ublox_dgnss_node.

Work has started on SPARTN support - basic commands are available to enable it on the device and to confirm that the messages are being used (when delivered to the device).

This driver supports multiple u-blox device families including ZED-F9P, ZED-F9R, and X20P connected via USB, under Ubuntu 22.04/24.04. The driver uses libusb api 1.0 and automatically adapts to different USB architectures (CDC-ACM for F9 family, Vendor-Specific for X20P).

This release works with Rolling, Kilted, Jazzy and Humble.

You may need to create a udev rule as follows:

/etc/udev/rules.d/99-ublox-gnss.rules

# UBLOX ZED-F9P/F9R (CDC-ACM)
ATTRS{idVendor}=="1546", ATTRS{idProduct}=="01a9", MODE="0666", GROUP="plugdev"

# UBLOX ZED-X20P (CDC-ACM) - SUPPORTED
ATTRS{idVendor}=="1546", ATTRS{idProduct}=="01ab", MODE="0666", GROUP="plugdev"
# UBLOX X20P UART1 (Vendor-Specific) - NOT SUPPORTED
ATTRS{idVendor}=="1546", ATTRS{idProduct}=="050c", MODE="0666", GROUP="plugdev"
# UBLOX X20P UART2 (Vendor-Specific) - NOT SUPPORTED
ATTRS{idVendor}=="1546", ATTRS{idProduct}=="050d", MODE="0666", GROUP="plugdev"

This driver follows the UBX standards used for the ZED-X20P/F9P/F9R as documented in the X20P intergration manual and X20P interface description. Earlier manual versions are available on the u-blox website.

It implements a subset of the specification related to achieving high precision output as a rover and base station. U-center can be used to alter settings. Any configuration parameter changed by this driver, will be applied only in RAM. Upon a restart (hot, cold or warm) or after a hot plug usb attach event, the configuration stored in the driver will be sent to the device.

ZED-X20P support

The UBLOX ZED-X20P has only just been released. There are some differences between the F9P and X20P. On the whole the UBX messages are the same specification but there are some like /ubx_rxm_rtcm that have been deprecated, on the device, in the manual, in favor of the newer /ubx_rxm_cor.

⚠️ Important: X20P Interface Limitations

The X20P device presents multiple USB interfaces:

  • ✅ Main Interface (0x01ab): Fully supported with F9P/F9R compatibility
  • ❌ UART1 Interface (0x050c): Not currently supported
  • ❌ UART2 Interface (0x050d): Not currently supported

Use only the main X20P interface (0x01ab) for full functionality. See GitHub Issue #48 for technical details.

Two new launch files with 25 HZ output have been added specific for the X20P main interface:

ros2 launch ublox_dgnss ublox_x20p_rover_hpposllh.launch.py

ros2 launch ublox_dgnss ublox_x20p_rover_hpposllh_navsatfix.launch.py

otherwise all other launch files have been modified such that adding -- DEVICE_FAMILY:=x20p will enable the launch file and UBLOX NODE to connect to a ZED-X20P main interface. If not added the launch files default to the f9p device family.

Start commands

There are multiple ways to start the node. Its been built using composition. An executable is provider. An example follows which turns off NMEA output at startup.

ros2 run ublox_dgnss_node ublox_dgnss_node --ros-args -p CFG_USBOUTPROT_NMEA:=False

Parameters can be set at launch and some examples are provided to launch high precision pos ecef llh
ros2 launch ublox_dgnss ublox_rover_hpposecef.launch.py

ros2 launch ublox_dgnss ublox_rover_hpposllh.launch.py

Services

Four services are provided to reset odo, cold start, warm start and hot start.

ros2 service call /ublox_dgnss/reset_odo ublox_ubx_interfaces/srv/ResetODO

ros2 service call /ublox_dgnss/cold_start ublox_ubx_interfaces/srv/ColdStart '{reset_type: 1}'

ros2 service call /ublox_dgnss/warm_start ublox_ubx_interfaces/srv/WarmStart '{reset_type: 1}'

ros2 service call /ublox_dgnss/hot_start ublox_ubx_interfaces/srv/HotStart '{reset_type: 1}'

Parameters

File truncated at 100 lines see the full file

Repo symbol

ublox_dgnss repository

gps ublox ubx gps-location gps-data ros2 high-precision ntripcaster dgnss ntripclient ntrip_client_node ublox_dgnss ublox_dgnss_node ublox_nav_sat_fix_hp_node ublox_ubx_interfaces ublox_ubx_msgs

Repository Summary

Description This usb based ROS2 driver is focused on UBLOX UBX messaging, for ZED-X20P, ZED-F9P and ZED-F9R devices. High precision data is available as well as moving base station configurations.
Checkout URI https://github.com/aussierobots/ublox_dgnss.git
VCS Type git
VCS Version main
Last Updated 2025-08-15
Dev Status MAINTAINED
Released RELEASED
Tags gps ublox ubx gps-location gps-data ros2 high-precision ntripcaster dgnss ntripclient
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

Presently have an issue with the apt packages which we are tring to resolve. Works if you build locally.

ublox-dgnss

This usb based driver is focused on UBLOX UBX messaging, for a DGNSS rover and base station. High precision data is available.

A moving base station configuration has been added. This package also supports a fixed base station and moving rover use case.

RTCM messages can be delivered externally. Alternately the ntrip_client_node can be utilised to retrieve RTCM messages from a castor to publish /ntrip_client/rtcm messages which will be received by the ublox_dgnss_node.

Work has started on SPARTN support - basic commands are available to enable it on the device and to confirm that the messages are being used (when delivered to the device).

This driver supports multiple u-blox device families including ZED-F9P, ZED-F9R, and X20P connected via USB, under Ubuntu 22.04/24.04. The driver uses libusb api 1.0 and automatically adapts to different USB architectures (CDC-ACM for F9 family, Vendor-Specific for X20P).

This release works with Rolling, Kilted, Jazzy and Humble.

You may need to create a udev rule as follows:

/etc/udev/rules.d/99-ublox-gnss.rules

# UBLOX ZED-F9P/F9R (CDC-ACM)
ATTRS{idVendor}=="1546", ATTRS{idProduct}=="01a9", MODE="0666", GROUP="plugdev"

# UBLOX ZED-X20P (CDC-ACM) - SUPPORTED
ATTRS{idVendor}=="1546", ATTRS{idProduct}=="01ab", MODE="0666", GROUP="plugdev"
# UBLOX X20P UART1 (Vendor-Specific) - NOT SUPPORTED
ATTRS{idVendor}=="1546", ATTRS{idProduct}=="050c", MODE="0666", GROUP="plugdev"
# UBLOX X20P UART2 (Vendor-Specific) - NOT SUPPORTED
ATTRS{idVendor}=="1546", ATTRS{idProduct}=="050d", MODE="0666", GROUP="plugdev"

This driver follows the UBX standards used for the ZED-X20P/F9P/F9R as documented in the X20P intergration manual and X20P interface description. Earlier manual versions are available on the u-blox website.

It implements a subset of the specification related to achieving high precision output as a rover and base station. U-center can be used to alter settings. Any configuration parameter changed by this driver, will be applied only in RAM. Upon a restart (hot, cold or warm) or after a hot plug usb attach event, the configuration stored in the driver will be sent to the device.

ZED-X20P support

The UBLOX ZED-X20P has only just been released. There are some differences between the F9P and X20P. On the whole the UBX messages are the same specification but there are some like /ubx_rxm_rtcm that have been deprecated, on the device, in the manual, in favor of the newer /ubx_rxm_cor.

⚠️ Important: X20P Interface Limitations

The X20P device presents multiple USB interfaces:

  • ✅ Main Interface (0x01ab): Fully supported with F9P/F9R compatibility
  • ❌ UART1 Interface (0x050c): Not currently supported
  • ❌ UART2 Interface (0x050d): Not currently supported

Use only the main X20P interface (0x01ab) for full functionality. See GitHub Issue #48 for technical details.

Two new launch files with 25 HZ output have been added specific for the X20P main interface:

ros2 launch ublox_dgnss ublox_x20p_rover_hpposllh.launch.py

ros2 launch ublox_dgnss ublox_x20p_rover_hpposllh_navsatfix.launch.py

otherwise all other launch files have been modified such that adding -- DEVICE_FAMILY:=x20p will enable the launch file and UBLOX NODE to connect to a ZED-X20P main interface. If not added the launch files default to the f9p device family.

Start commands

There are multiple ways to start the node. Its been built using composition. An executable is provider. An example follows which turns off NMEA output at startup.

ros2 run ublox_dgnss_node ublox_dgnss_node --ros-args -p CFG_USBOUTPROT_NMEA:=False

Parameters can be set at launch and some examples are provided to launch high precision pos ecef llh
ros2 launch ublox_dgnss ublox_rover_hpposecef.launch.py

ros2 launch ublox_dgnss ublox_rover_hpposllh.launch.py

Services

Four services are provided to reset odo, cold start, warm start and hot start.

ros2 service call /ublox_dgnss/reset_odo ublox_ubx_interfaces/srv/ResetODO

ros2 service call /ublox_dgnss/cold_start ublox_ubx_interfaces/srv/ColdStart '{reset_type: 1}'

ros2 service call /ublox_dgnss/warm_start ublox_ubx_interfaces/srv/WarmStart '{reset_type: 1}'

ros2 service call /ublox_dgnss/hot_start ublox_ubx_interfaces/srv/HotStart '{reset_type: 1}'

Parameters

File truncated at 100 lines see the full file

Repo symbol

ublox_dgnss repository

gps ublox ubx gps-location gps-data ros2 high-precision ntripcaster dgnss ntripclient
Repo symbol

ublox_dgnss repository

gps ublox ubx gps-location gps-data ros2 high-precision ntripcaster dgnss ntripclient ntrip_client_node ublox_dgnss ublox_dgnss_node ublox_nav_sat_fix_hp_node ublox_ubx_interfaces ublox_ubx_msgs

Repository Summary

Description This usb based ROS2 driver is focused on UBLOX UBX messaging, for ZED-X20P, ZED-F9P and ZED-F9R devices. High precision data is available as well as moving base station configurations.
Checkout URI https://github.com/aussierobots/ublox_dgnss.git
VCS Type git
VCS Version main
Last Updated 2025-08-15
Dev Status MAINTAINED
Released RELEASED
Tags gps ublox ubx gps-location gps-data ros2 high-precision ntripcaster dgnss ntripclient
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

Presently have an issue with the apt packages which we are tring to resolve. Works if you build locally.

ublox-dgnss

This usb based driver is focused on UBLOX UBX messaging, for a DGNSS rover and base station. High precision data is available.

A moving base station configuration has been added. This package also supports a fixed base station and moving rover use case.

RTCM messages can be delivered externally. Alternately the ntrip_client_node can be utilised to retrieve RTCM messages from a castor to publish /ntrip_client/rtcm messages which will be received by the ublox_dgnss_node.

Work has started on SPARTN support - basic commands are available to enable it on the device and to confirm that the messages are being used (when delivered to the device).

This driver supports multiple u-blox device families including ZED-F9P, ZED-F9R, and X20P connected via USB, under Ubuntu 22.04/24.04. The driver uses libusb api 1.0 and automatically adapts to different USB architectures (CDC-ACM for F9 family, Vendor-Specific for X20P).

This release works with Rolling, Kilted, Jazzy and Humble.

You may need to create a udev rule as follows:

/etc/udev/rules.d/99-ublox-gnss.rules

# UBLOX ZED-F9P/F9R (CDC-ACM)
ATTRS{idVendor}=="1546", ATTRS{idProduct}=="01a9", MODE="0666", GROUP="plugdev"

# UBLOX ZED-X20P (CDC-ACM) - SUPPORTED
ATTRS{idVendor}=="1546", ATTRS{idProduct}=="01ab", MODE="0666", GROUP="plugdev"
# UBLOX X20P UART1 (Vendor-Specific) - NOT SUPPORTED
ATTRS{idVendor}=="1546", ATTRS{idProduct}=="050c", MODE="0666", GROUP="plugdev"
# UBLOX X20P UART2 (Vendor-Specific) - NOT SUPPORTED
ATTRS{idVendor}=="1546", ATTRS{idProduct}=="050d", MODE="0666", GROUP="plugdev"

This driver follows the UBX standards used for the ZED-X20P/F9P/F9R as documented in the X20P intergration manual and X20P interface description. Earlier manual versions are available on the u-blox website.

It implements a subset of the specification related to achieving high precision output as a rover and base station. U-center can be used to alter settings. Any configuration parameter changed by this driver, will be applied only in RAM. Upon a restart (hot, cold or warm) or after a hot plug usb attach event, the configuration stored in the driver will be sent to the device.

ZED-X20P support

The UBLOX ZED-X20P has only just been released. There are some differences between the F9P and X20P. On the whole the UBX messages are the same specification but there are some like /ubx_rxm_rtcm that have been deprecated, on the device, in the manual, in favor of the newer /ubx_rxm_cor.

⚠️ Important: X20P Interface Limitations

The X20P device presents multiple USB interfaces:

  • ✅ Main Interface (0x01ab): Fully supported with F9P/F9R compatibility
  • ❌ UART1 Interface (0x050c): Not currently supported
  • ❌ UART2 Interface (0x050d): Not currently supported

Use only the main X20P interface (0x01ab) for full functionality. See GitHub Issue #48 for technical details.

Two new launch files with 25 HZ output have been added specific for the X20P main interface:

ros2 launch ublox_dgnss ublox_x20p_rover_hpposllh.launch.py

ros2 launch ublox_dgnss ublox_x20p_rover_hpposllh_navsatfix.launch.py

otherwise all other launch files have been modified such that adding -- DEVICE_FAMILY:=x20p will enable the launch file and UBLOX NODE to connect to a ZED-X20P main interface. If not added the launch files default to the f9p device family.

Start commands

There are multiple ways to start the node. Its been built using composition. An executable is provider. An example follows which turns off NMEA output at startup.

ros2 run ublox_dgnss_node ublox_dgnss_node --ros-args -p CFG_USBOUTPROT_NMEA:=False

Parameters can be set at launch and some examples are provided to launch high precision pos ecef llh
ros2 launch ublox_dgnss ublox_rover_hpposecef.launch.py

ros2 launch ublox_dgnss ublox_rover_hpposllh.launch.py

Services

Four services are provided to reset odo, cold start, warm start and hot start.

ros2 service call /ublox_dgnss/reset_odo ublox_ubx_interfaces/srv/ResetODO

ros2 service call /ublox_dgnss/cold_start ublox_ubx_interfaces/srv/ColdStart '{reset_type: 1}'

ros2 service call /ublox_dgnss/warm_start ublox_ubx_interfaces/srv/WarmStart '{reset_type: 1}'

ros2 service call /ublox_dgnss/hot_start ublox_ubx_interfaces/srv/HotStart '{reset_type: 1}'

Parameters

File truncated at 100 lines see the full file

Repo symbol

ublox_dgnss repository

gps ublox ubx gps-location gps-data ros2 high-precision ntripcaster dgnss ntripclient ntrip_client_node ublox_dgnss ublox_dgnss_node ublox_nav_sat_fix_hp_node ublox_ubx_interfaces ublox_ubx_msgs

Repository Summary

Description This usb based ROS2 driver is focused on UBLOX UBX messaging, for ZED-X20P, ZED-F9P and ZED-F9R devices. High precision data is available as well as moving base station configurations.
Checkout URI https://github.com/aussierobots/ublox_dgnss.git
VCS Type git
VCS Version main
Last Updated 2025-08-15
Dev Status MAINTAINED
Released RELEASED
Tags gps ublox ubx gps-location gps-data ros2 high-precision ntripcaster dgnss ntripclient
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

Presently have an issue with the apt packages which we are tring to resolve. Works if you build locally.

ublox-dgnss

This usb based driver is focused on UBLOX UBX messaging, for a DGNSS rover and base station. High precision data is available.

A moving base station configuration has been added. This package also supports a fixed base station and moving rover use case.

RTCM messages can be delivered externally. Alternately the ntrip_client_node can be utilised to retrieve RTCM messages from a castor to publish /ntrip_client/rtcm messages which will be received by the ublox_dgnss_node.

Work has started on SPARTN support - basic commands are available to enable it on the device and to confirm that the messages are being used (when delivered to the device).

This driver supports multiple u-blox device families including ZED-F9P, ZED-F9R, and X20P connected via USB, under Ubuntu 22.04/24.04. The driver uses libusb api 1.0 and automatically adapts to different USB architectures (CDC-ACM for F9 family, Vendor-Specific for X20P).

This release works with Rolling, Kilted, Jazzy and Humble.

You may need to create a udev rule as follows:

/etc/udev/rules.d/99-ublox-gnss.rules

# UBLOX ZED-F9P/F9R (CDC-ACM)
ATTRS{idVendor}=="1546", ATTRS{idProduct}=="01a9", MODE="0666", GROUP="plugdev"

# UBLOX ZED-X20P (CDC-ACM) - SUPPORTED
ATTRS{idVendor}=="1546", ATTRS{idProduct}=="01ab", MODE="0666", GROUP="plugdev"
# UBLOX X20P UART1 (Vendor-Specific) - NOT SUPPORTED
ATTRS{idVendor}=="1546", ATTRS{idProduct}=="050c", MODE="0666", GROUP="plugdev"
# UBLOX X20P UART2 (Vendor-Specific) - NOT SUPPORTED
ATTRS{idVendor}=="1546", ATTRS{idProduct}=="050d", MODE="0666", GROUP="plugdev"

This driver follows the UBX standards used for the ZED-X20P/F9P/F9R as documented in the X20P intergration manual and X20P interface description. Earlier manual versions are available on the u-blox website.

It implements a subset of the specification related to achieving high precision output as a rover and base station. U-center can be used to alter settings. Any configuration parameter changed by this driver, will be applied only in RAM. Upon a restart (hot, cold or warm) or after a hot plug usb attach event, the configuration stored in the driver will be sent to the device.

ZED-X20P support

The UBLOX ZED-X20P has only just been released. There are some differences between the F9P and X20P. On the whole the UBX messages are the same specification but there are some like /ubx_rxm_rtcm that have been deprecated, on the device, in the manual, in favor of the newer /ubx_rxm_cor.

⚠️ Important: X20P Interface Limitations

The X20P device presents multiple USB interfaces:

  • ✅ Main Interface (0x01ab): Fully supported with F9P/F9R compatibility
  • ❌ UART1 Interface (0x050c): Not currently supported
  • ❌ UART2 Interface (0x050d): Not currently supported

Use only the main X20P interface (0x01ab) for full functionality. See GitHub Issue #48 for technical details.

Two new launch files with 25 HZ output have been added specific for the X20P main interface:

ros2 launch ublox_dgnss ublox_x20p_rover_hpposllh.launch.py

ros2 launch ublox_dgnss ublox_x20p_rover_hpposllh_navsatfix.launch.py

otherwise all other launch files have been modified such that adding -- DEVICE_FAMILY:=x20p will enable the launch file and UBLOX NODE to connect to a ZED-X20P main interface. If not added the launch files default to the f9p device family.

Start commands

There are multiple ways to start the node. Its been built using composition. An executable is provider. An example follows which turns off NMEA output at startup.

ros2 run ublox_dgnss_node ublox_dgnss_node --ros-args -p CFG_USBOUTPROT_NMEA:=False

Parameters can be set at launch and some examples are provided to launch high precision pos ecef llh
ros2 launch ublox_dgnss ublox_rover_hpposecef.launch.py

ros2 launch ublox_dgnss ublox_rover_hpposllh.launch.py

Services

Four services are provided to reset odo, cold start, warm start and hot start.

ros2 service call /ublox_dgnss/reset_odo ublox_ubx_interfaces/srv/ResetODO

ros2 service call /ublox_dgnss/cold_start ublox_ubx_interfaces/srv/ColdStart '{reset_type: 1}'

ros2 service call /ublox_dgnss/warm_start ublox_ubx_interfaces/srv/WarmStart '{reset_type: 1}'

ros2 service call /ublox_dgnss/hot_start ublox_ubx_interfaces/srv/HotStart '{reset_type: 1}'

Parameters

File truncated at 100 lines see the full file

Repo symbol

ublox_dgnss repository

gps ublox ubx gps-location gps-data ros2 high-precision ntripcaster dgnss ntripclient
Repo symbol

ublox_dgnss repository

gps ublox ubx gps-location gps-data ros2 high-precision ntripcaster dgnss ntripclient