Skip to content

A user-friendly Python tool to connect, stream, and log data from u-blox GPS modules via a simple command-line interface. Works with built-in and USB devices on Windows, macOS, and Linux.

Notifications You must be signed in to change notification settings

opsecfreak/UbloxGPS_DataInterpreter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 

Repository files navigation

u-blox GPS Tool

A user-friendly, cross-platform Python script to connect to, stream, and log data from u-blox GPS modules. This tool is designed to work with various connection types, including built-in modules (e.g., in Dell Laptops) and external USB-to-UART devices (e.g., u-blox M8N, Radiolink SE100).

Features

  • Simple Menu Interface: An interactive command-line menu for easy connection setup.
  • Device Presets: Pre-configured settings for common devices and a custom option for flexibility.
  • Live Data Streaming: Displays real-time GPS information (coordinates, status, altitude, speed, etc.) directly in your console.
  • Organized Data Logging: Automatically saves different data streams into separate, timestamped text files for easy analysis.
  • Cross-Platform: Works on Windows, macOS, and Linux.
  • Lightweight: Depends only on pyserial and pynmea2.

Requirements

  • Python 3.x
  • pyserial library
  • pynmea2 library

Installation

  1. Clone or download the repository:

    git clone <your-repo-url> cd <your-repo-directory>
  2. Install the required Python libraries using pip:

    pip install pyserial pynmea2

How to Use

  1. Connect Your GPS Device:

    • USB Devices (M8N, SE100, etc.): Plug the device into a USB port. Your operating system should automatically assign it a serial (COM) port.
    • Built-in Devices (Dell Latitude): Ensure the GPS/GNSS device is enabled in your system's BIOS/UEFI settings and that the necessary drivers are installed.
  2. Find the Serial Port Name:

    • Windows: Open Device Manager, look under "Ports (COM & LPT)". Your device will be listed as COM followed by a number (e.g., COM3).
    • Linux: The device will likely appear as /dev/ttyUSB0 or /dev/ttyACM0. You can run dmesg | grep tty after plugging in the device to see the assigned name.
    • macOS: The device will likely appear as /dev/cu.usbserial-XXXX. You can list available ports with ls /dev/cu.*.
  3. Run the Script:

    • Open your terminal or command prompt and navigate to the directory containing the script.
    • Execute the script using Python:
      python ublox_gps_tool.py
  4. Follow the Menu:

    • The script will prompt you to select a connection type. Enter the number corresponding to your setup.
    • If prompted, enter the serial port name you identified in the previous step.
  5. Stop the Script:

    • To stop the data stream and exit the program, press Ctrl+C. The script will safely close the serial port and terminate.

Expected Output

Console Live Stream

Once connected, your terminal will display a continuously updating screen with the latest GPS data:

 \--- u-blox GPS Live Data Stream --- Press Ctrl+C to stop. ## Timestamp: 2025-09-22 20:12:07 UTC Status: GPS Fix ## Latitude: 43.3095° Longitude: -73.6427° Altitude: 102.1 meters Satellites Used: 8 HDOP: 1.1 Speed (knots): 0.50 Course (true): 125.0° Logging data to 'gps\_logs' directory. ``` ### Log Files The script will create a `gps_logs` directory and populate it with the following files: **`latitude_longitude.txt`** ``` 2025-09-22T20:12:07.123456+00:00, Latitude: 43.309510, Longitude: -73.642700 2025-09-22T20:12:08.123456+00:00, Latitude: 43.309512, Longitude: -73.642702 ``` **`gps_status.txt`** ``` 2025-09-22T20:12:07.123456+00:00, Status: GPS Fix, Satellites: 8, HDOP: 1.1 2025-09-22T20:12:08.123456+00:00, Status: GPS Fix, Satellites: 8, HDOP: 1.1 ``` **`altitude.txt`** ``` 2025-09-22T20:12:07.123456+00:00, Altitude: 102.1 meters 2025-09-22T20:12:08.123456+00:00, Altitude: 102.2 meters ``` **`raw_nmea.txt`** ``` 2025-09-22T20:12:07.123456+00:00: $GPGGA,201207.00,4318.5706,N,07338.5620,W,1,08,1.1,102.1,M,-34.2,M,,*5C 2025-09-22T20:12:07.123456+00:00: $GPRMC,201207.00,A,4318.5706,N,07338.5620,W,0.5,125.0,220925,,,A*7B ``` ## Troubleshooting - **"Error: Could not open port..."**: - Verify that you have selected the correct port name. - Ensure the GPS device is powered on and securely connected. - On Linux/macOS, you may need permissions to access the port. Add your user to the `dialout` group: `sudo usermod -a -G dialout $USER`. Log out and back in for the change to take effect. - Confirm that no other application (e.g., u-blox u-center, Arduino IDE) is currently using the same port. - **No Data is Displayed ("Waiting for GPS data..."):** - Your GPS may be using a different baud rate. Try the "Custom Connection" option with other common rates like 4800, 38400, or 115200. - The GPS receiver needs a clear view of the sky to get a satellite fix. If you are indoors, it may not be able to acquire a signal. The `Status` will change from "No Fix" to "GPS Fix" once it has a lock. ``` 

About

A user-friendly Python tool to connect, stream, and log data from u-blox GPS modules via a simple command-line interface. Works with built-in and USB devices on Windows, macOS, and Linux.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages