Skip to content

X20P UART1/UART2 interfaces (0x050c/0x050d) not supported - use main interface (0x01ab) #48

@hortovanyi

Description

@hortovanyi

Problem

X20P devices present multiple USB interfaces:

  • 0x01ab - Main interface (working)
  • 0x050c - UART1 interface (not working)
  • 0x050d - UART2 interface (not working)

Users may attempt to connect to UART1/UART2 interfaces expecting them to work like the main interface,
but these require different USB-to-UART bridge protocols that are not currently implemented.

Investigation Summary

We attempted several approaches to support UART1/UART2:

  1. USB packet analysis: Discovered that these interfaces use 2-byte status headers per 64-byte USB
    packet
  2. Status header stripping: Successfully removed headers but received all zeros (no UART data)
  3. Vendor-specific USB control transfers: Tried various initialization sequences (baud rate, line
    format, bridge enable)
  4. CDC control transfers: Failed with LIBUSB_ERROR_PIPE as expected for vendor-specific interfaces

Root Cause

Despite UBX being enabled by default on UART1, the USB-to-UART bridge initialization is incomplete. The
specific vendor control sequence required for this chip is unknown.

Current Solution

  • Added explicit error message when attempting to connect to UART1/UART2 interfaces
  • Users are directed to use the main interface (0x01ab) which works reliably
  • Error message: "X20P UART1/UART2 interface (0x050c/0x050d) is not currently supported. Please use the main X20P interface (0x01ab) instead."

Code Changes

  • usb.cpp:418-431 - Added error check and exception for UART interfaces
  • ublox_dgnss_node.cpp:1282-1310 - Commented out header stripping code (preserved for future reference)

Future Work

To support these interfaces, we would need:

  1. Reverse engineering of the USB-to-UART bridge chip's control protocol
  2. Proper vendor-specific initialization sequence
  3. Understanding of the exact status header format and UART data extraction

Workaround

Use the main X20P interface (0x01ab) which provides full functionality for all GNSS operations.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requesthelp wantedExtra attention is needed

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions