This article provides troubleshooting guidance for Linux systems where UART interfaces are not automatically exposed for u-blox F20 and X20 products. These steps may be required before performing firmware updates using the Linux Firmware Update Tool.
Symptoms
The X20 or F20 receiver is detected over USB, but the UART interfaces are not available under:
/dev/ttyUSB*
Firmware updates performed over the native USB GNSS receiver interface may fail during USB re-enumeration. In these cases, updating over UART1 is recommended.
Verify Available UART Interfaces
Check whether the UART interfaces are already available:
ls -l /dev/serial/by-id/
Example output:
/dev/serial/by-id/usb-u-blox_AG_X20P_UART1_-if00-port0
/dev/serial/by-id/usb-u-blox_AG_X20P_UART2_-if00-port0Alternatively:
ls /dev/ttyUSB*
If the UART interfaces are already visible, no additional configuration is required.
Identify the Device Attributes
If the UART interfaces are not available, identify the USB device attributes:
udevadm info --attribute-walk --name=/dev/ttyUSB3
Replace /dev/ttyUSB3 with the appropriate device on your system.
Create the Registration Script
Create the following script:
sudo nano /usr/local/bin/register-ftdi-uart.sh
Add the following contents:
#!/bin/bash # Load the FTDI driver modprobe ftdi_sio # Register the custom u-blox VID/PID echo 1546 050c /sys/bus/usb-serial/drivers/ftdi_sio/new_id # Trigger udev to bind the device udevadm trigger --subsystem-match=usb-serial
Make the script executable:
sudo chmod +x /usr/local/bin/register-ftdi-uart.sh
Create the Systemd Service
Create the following service:
sudo nano /etc/systemd/system/FTDI_UART.service
Add the following contents:
[Unit] Description=Register custom FTDI VID/PID for GNSS EVK DefaultDependencies=no Before=systemd-udevd.service After=systemd-modules-load.service [Service] Type=oneshot ExecStart=/usr/local/bin/register-ftdi-uart.sh RemainAfterExit=true [Install] WantedBy=sysinit.target
Enable the Service
sudo systemctl daemon-reload sudo systemctl enable FTDI_UART.service sudo systemctl start FTDI_UART.service
Verify UART Availability
Confirm that the UART interfaces are now available:
ls -l /dev/serial/by-id/
Example output:
/dev/serial/by-id/usb-u-blox_AG_X20P_UART1_-if00-port0
/dev/serial/by-id/usb-u-blox_AG_X20P_UART2_-if00-port0Once UART1 is available, return to the Firmware Update Tool Guide and perform the firmware update using the UART1 interface.