Skip to main content

Terminal debugger for Feetech STS3215 smart serial bus servos

Project description

sts-suite

Python License TUI Serial Platform

Terminal debugger for Feetech STS3215 smart serial bus servos.

screenshot

Requirements

  • Python 3.10 or newer
  • A USB-to-TTL adapter wired to the servo bus

Install

With uv:

uv tool install sts-suite

Or with pip:

pip install sts-suite

Run

sts

Pick a serial port and baud rate. The debugger opens. The last choice is saved to ~/.cache/sts-suite/last.json.

If no motors respond, hit Baud sweep in the port picker and it will try every preset and pick the one with the most motors.

Main screen

Left sidebar: motors on the bus. Toggle multi-select with ctrl+space; goal and nudge then drive the whole selection via sync_write in one packet.

Right side: a watch strip with the always-visible vitals, then the full register table. Enter on any RW row pops an edit modal with a description, range, units, and a dropdown for enum registers.

Screens

Key Screen
? Help overlay
o Oscilloscope: live plot of position / speed / load / current
w Waveform generator: sine, square, triangle, step
v Grid view: every motor on one screen
d Diff against a saved state snapshot
Ctrl+L Preset loader: apply a JSON of register values

Keybindings

Key Action
q Quit
r Rescan bus
t Toggle torque on selected (or all selected)
! E-STOP: broadcast torque off to every motor
space Full refresh
Ctrl+Space Toggle multi-select on highlighted motor
g Focus goal / speed input
k / j Nudge +5 / -5 (auto-scales per mode)
l / h Nudge +50 / -50
c Center: goal to 2048 or speed to 0
Enter Edit selected register (RW only)
x Movement test on selected motor
s Save JSON snapshot of every motor
Ctrl+R Reboot selected motor

Modes

The control bar adapts to the selected motor's mode register.

Mode Name Target Range Nudge scale
0 position (servo) goal_position 0 to 4095 1
1 wheel (continuous) goal_speed -4000 to 4000 10
2 PWM (open-loop) goal_speed -1000 to 1000 5
3 step goal_position -32768 to 32767 20

Status register

Bit flags decoded in the register table and watch strip.

Tag Meaning
VOLT voltage out of range
ANGLE angle limit exceeded
HOT overheat
CURR overcurrent
OVLD overload

Snapshot file

s writes sts-state-YYYYMMDD-HHMMSS.json in the current directory with every register value for every motor on the bus. Load one with d to diff against the current live readings.

Preset file

Presets live in any JSON file with a top-level registers map:

{
  "registers": {
    "p_coefficient": 32,
    "i_coefficient": 0,
    "d_coefficient": 0,
    "torque_limit": 800,
    "acceleration": 30,
    "max_temperature_limit": 70
  }
}

Ctrl+L applies every RW field to the selected motor; EEPROM fields are unlocked and re-locked automatically.

Performance

  • Live tick reads SRAM 40-70 in one read_raw_data call (single round trip per refresh).
  • Full refresh reads EEPROM 0-39 plus SRAM 40-70 as two bulk reads instead of 26.
  • Serial I/O runs in a worker thread; a stuck motor can't freeze the UI.
  • Multi-motor writes use sync_write_raw_data so N motors update in one packet.

Stack

License

Apache License 2.0. See LICENSE.

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

sts_suite-0.1.1.tar.gz (134.9 kB view details)

Uploaded Source

Built Distribution

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

sts_suite-0.1.1-py3-none-any.whl (31.6 kB view details)

Uploaded Python 3

File details

Details for the file sts_suite-0.1.1.tar.gz.

File metadata

  • Download URL: sts_suite-0.1.1.tar.gz
  • Upload date:
  • Size: 134.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sts_suite-0.1.1.tar.gz
Algorithm Hash digest
SHA256 29889f83588848f4b99cd092f0fa097a17690bfd87899fa81c6d895dbd423e29
MD5 ea75abba23ca22eeb35d23ab651b6b89
BLAKE2b-256 f50060ea2817ce4f3d01721bc0db6bcd12e92af3f964305d84025e4a6fd9f846

See more details on using hashes here.

Provenance

The following attestation bundles were made for sts_suite-0.1.1.tar.gz:

Publisher: publish.yml on pham-tuan-binh/sts-suite

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

File details

Details for the file sts_suite-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: sts_suite-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 31.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sts_suite-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 652705b66df1db40d154bc9132dcef26ef0847e482f38dbaeea7aa108f640e12
MD5 879dcee455acfc847e4bbf3a1cb1072c
BLAKE2b-256 cdc1efaf4c091858e499082c0dbef416940881fd8e8e8863f0e1d5499e72540b

See more details on using hashes here.

Provenance

The following attestation bundles were made for sts_suite-0.1.1-py3-none-any.whl:

Publisher: publish.yml on pham-tuan-binh/sts-suite

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