Skip to main content

No project description provided

Project description

Tools for the Duro GNSS receiver

Python tools for the Duro GNSS receiver. This repository includes a variety of command line utilities (firmware bootloader, serial port data logging, etc.).

Versioning

duro_tools versioning scheme is guided by the supported version of libsbp. The following major version schemes map to the supported versions of libsbp:

duro_tools version libsbp version
v2.x.x libsbp v4.1.1
v1.x.x libsbp v2.7.4

Building and Installing

duro_toolsuses poetry to organize dependencies and generate distributions. You can find more information on using potery has a packaging and dependency manager at https://python-poetry.org/.

Installing Poetry

project version: 1.8.3

installation: poetry installation docs

Building and Installing

It is advised to install duro_tools inside a virtual environment to avoid modifying system packages.

$ poetry build # build distributions
$ poetry install # install into local environment

Usage

Settings

For reading, writing and saving Duro settings/configuration

usage: python -m duro_tools.settings [-h] [-p PORT] [-b BAUD] [--rtscts] [-t] [-f] [--file] [--json] [--playback] [-v] [--timeout TIMEOUT] [-s] {save,reset,read,all,write,read_to_file,write_from_file} ...

Duro Settings Tool

positional arguments:
  {save,reset,read,all,write,read_to_file,write_from_file}
    save                save all the current settings to flash
    reset               reset settings to factory defaults
    read                read the current setting
    all                 read all the settings
    write               write the current setting
    read_to_file        read the current settings file from device
    write_from_file     write settings file to device

options:
  -h, --help            show this help message and exit
  -p PORT, --port PORT  specify the serial port to use
  -b BAUD, --baud BAUD  specify the baud rate to use
  --rtscts              enable Hardware Flow Control (RTS/CTS)
  -t, --tcp             use a TCP connection instead of a local serial port (if TCP is selected, the port is interpreted as host:port)
  -f, --ftdi            use pylibftdi instead of pyserial.
  --file                read with a filedriver rather than pyserial.
  --json                input is SBP JSON
  --playback            emulate real input
  -v, --verbose         print extra debugging information.
  --timeout TIMEOUT     timeout for settings calls in seconds (default: 0.5)
  -s, --save_after_write
                        save settings to flash after successful write or write_from_file

Returns:
  0: Upon success
  1: Runtime error or invalid settings request.
  2: Improper usage

File IO

For transferring files to and from the Duro

usage: python -m duro_tools.fileio [-h] [-w SOURCE DEST] [-r SOURCE [DEST ...]] [-l LIST] [-d DELETE] [-p PORT] [-b BAUD] [-t] [-v] [-x] [-f]

Duro File I/O Utility

options:
  -h, --help            show this help message and exit
  -w SOURCE DEST, --write SOURCE DEST
                        write a file from local SOURCE to remote destination DEST
  -r SOURCE [DEST ...], --read SOURCE [DEST ...]
                        read a file from remote SOURCE to local DEST. If no DEST is provided, file is read to stdout.
  -l LIST, --list LIST  list a directory
  -d DELETE, --delete DELETE
                        delete a file
  -p PORT, --port PORT  specify the serial port to use
  -b BAUD, --baud BAUD  specify the baud rate to use
  -t, --tcp             use a TCP connection instead of a local serial port (if TCP is selected, the port is interpreted as host:port)
  -v, --verbose         print extra debugging information
  -x, --hex             output in hex dump format
  -f, --ftdi            use pylibftdi instead of pyserial

Bootload

For updating Duro firmware

usage: python -m duro_tools.bootload_v3 [-h] [-p PORT] [-b BAUD] [--rtscts] [-t] [-f] [--file] [--json] [--playback] [-v] firmware

Duro Bootloader

positional arguments:
  firmware              the image set file to write to flash

options:
  -h, --help            show this help message and exit
  -p PORT, --port PORT  specify the serial port to use
  -b BAUD, --baud BAUD  specify the baud rate to use
  --rtscts              enable Hardware Flow Control (RTS/CTS)
  -t, --tcp             use a TCP connection instead of a local serial port (if TCP is selected, the port is interpreted as host:port)
  -f, --ftdi            use pylibftdi instead of pyserial
  --file                read with a filedriver rather than pyserial
  --json                input is SBP JSON
  --playback            emulate real input
  -v, --verbose         print extra debugging information

USB issues on OS X

The ftdi USB drivers are finicky on some versions of OS X. See their docs <http://pylibftdi.readthedocs.io/en/latest/troubleshooting.html#where-did-my-ttyusb-devices-go>__ for help debugging (tl;dr if you try to plug in multiple USB devices to the same port, the subsequent ones may not appear through ftdi even if they appear in the result of sudo dmesg. Only restarting your machine will fix this.)

License

Copyright (C) 2025 Carnegie Robotics LLC.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

duro_tools-2.0.0.dev1.tar.gz (32.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

duro_tools-2.0.0.dev1-py3-none-any.whl (43.4 kB view details)

Uploaded Python 3

File details

Details for the file duro_tools-2.0.0.dev1.tar.gz.

File metadata

  • Download URL: duro_tools-2.0.0.dev1.tar.gz
  • Upload date:
  • Size: 32.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for duro_tools-2.0.0.dev1.tar.gz
Algorithm Hash digest
SHA256 c87c81cef2f335c35a8e477f211d896542d52cab9d96bef465815fbc461aa9c6
MD5 318d14c7dd39769ea0a5c6c897e112a4
BLAKE2b-256 074059688fe42f76b753cbb629a00ea3483bd5ffe9b363e9b698911e88ef91ca

See more details on using hashes here.

Provenance

The following attestation bundles were made for duro_tools-2.0.0.dev1.tar.gz:

Publisher: workflow.yaml on carnegierobotics/duro_tools

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file duro_tools-2.0.0.dev1-py3-none-any.whl.

File metadata

File hashes

Hashes for duro_tools-2.0.0.dev1-py3-none-any.whl
Algorithm Hash digest
SHA256 a92adb8eb6d2f3ad6d596763fcaccb8e547e91a7347cb9dd359d52774da0f326
MD5 5bc1adadaf1bbe8e23eae053141fbba9
BLAKE2b-256 2ae2a9f3ae62779749f66e595d63bcceebd3f41ae26c5398ad51f0f4289b2ee4

See more details on using hashes here.

Provenance

The following attestation bundles were made for duro_tools-2.0.0.dev1-py3-none-any.whl:

Publisher: workflow.yaml on carnegierobotics/duro_tools

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page