Bridge family · serial

OpenMHS family: serial

Serial line instruments as SerialDriver command maps

Recipe published58 packageshardwaresimulated
On this page 9 sections
  1. Launch
  2. Registry coverage
  3. Applicability
  4. Capability mapping
  5. Safety
  6. Fidelity
  7. Pitfalls
  8. First task cards
  9. Sources

Serial line instruments as SerialDriver command maps

Generated by MHS/registry/build_registry.py on 2026-10-20T00:00:00Z from 58 registry records and their task cards. A plan, not a conformance claim.

  • bridge_status: available
  • helper: SerialDriver
  • exemplar: MHS/drivers/labs/thinksrs__srsinst.sr860

Launch

Every driver package starts the same way; per-repo configuration (environment id, model path, port, baud rate, VISA resource) lives in the package's driver.py, never in launch flags:

text
mhs serve <driver-dir>

A package is done when python3 -m mhs.driver check <driver-dir> --backend fake exits 0 (evidence contract_checked; a fake never yields an MHS-Device level).

Registry coverage

  • Repos: 58
  • Decisions: bridge-runtime 1, direct-driver 33, family-config 3, reference 4, skip 17
  • Waves: 1: 6, 3: 28, 5: 2, 9: 22
  • Dispatchable now: 0
  • Modes: hardware 37, simulated 10

Applicability

The repo imports pyserial (or an equivalent) and has no strong Python device class: triage rule 9, family:serial. It copies the command-map structure of the sr860 exemplar.

Capability mapping

native callOpenMHS targetnotes
serial port settings (port, baud, parity)lifecycle: transport configuration in driver.pynever launch flags; a fake or a transcript replaces the port
query command (for example IN_PV_00)reads: the measure class that fits, else cap.sensing.read.v1parse the reply; the unit comes from the manual
set command (for example OUT_SP_00 25.0)writes: cap.device.configure.v1, or a write class that fitsevery limit cites its source
a raw write(command)only as a named command-map entrynever cap.actuation.gpio.v1 for an arbitrary command
stop or output-off commandsafety_bindings: e-stop and safe statewritten under the short write lock; it aborts a pending reply wait

Class ids come from python3 -m mhs.driver catalog search <words>. The deprecated classes cap.device.describe.v1, cap.world.state.v1, cap.world.snapshot.v1 and cap.world.restore.v1 are replaced by the protocol methods mhs.devices.get, mhs.resource.read, mhs.snapshot and mhs.restore.

Safety

The risk floor of a device is the highest catalogue risk_class of its classes (CAP-017); a driver may declare a higher risk, never a lower one. Hardware at R1 or above needs an @estop and a non-empty safe state. A serial line can drive pumps, heaters and motors. Port names and baud rates are deployment-specific and are never guessed at run time.

Fidelity

A transcript fake proves the framing and the command map, not the physics.

Pitfalls

Line endings and checksums vary; unbounded reads hang; USB re-enumeration renames ports; error replies are vendor-specific.

First task cards

  • gh.amsikking/thorlabs_mcm3000: direct-driver, wave 1, rank 39, MHS/registry/tasks/labs/amsikking__thorlabs_mcm3000.json
  • gh.amsikking/asi_ms_2000_500_cp: direct-driver, wave 1, rank 41, MHS/registry/tasks/labs/amsikking__asi_ms_2000_500_cp.json
  • gh.fretchen/synqs_devices: direct-driver, wave 1, rank 45, MHS/registry/tasks/labs/fretchen__synqs_devices.json
  • gh.mattgbiz/velmex-xyz-stagecontrol-python: direct-driver, wave 1, rank 46, MHS/registry/tasks/labs/mattgbiz__velmex-xyz-stagecontrol-python.json
  • gh.amsikking/zaber_x_adr130: direct-driver, wave 1, rank 49, MHS/registry/tasks/labs/amsikking__zaber_x_adr130.json

Sources

  • Task cards: MHS/registry/tasks/<track>/<owner>__<repo>.json (schema/taskcard.schema.json).
  • Triage rules and the helper table: MHS/registry/triage.py; curated decisions: MHS/registry/overrides/.
  • Driver API and gate: MHS/sdk/docs/driver-authoring.md; exemplars: MHS/drivers/.

Packages

Top 24 of 58 by stars. Filter the full list.

PackageTierRingEvidenceStars
petoicamp/opencat-quadruped-robot
petoicamp/opencat-quadruped-robot: device backend for legged robots (robotics track). OpenMHS plan: direct-driver with S
Tier B1contract checked5,433
nate711/stanforddoggoproject
nate711/stanforddoggoproject: model assets for legged robots (robotics track). OpenMHS plan: not integrated (override:re
Tier D3static scan2,563
serhmarch/modbustools
serhmarch/modbustools: protocol implementation/bridge for electronic measurement (lab instrumentation track). OpenMHS pl
Tier D3static scan544
robodk/robodk-api
robodk/robodk-api: device backend for robot arm manipulation (robotics track). OpenMHS plan: SDK bridge runtime, not a p
Tier B3static scan313
scifidryer/modbusmechanic
scifidryer/modbusmechanic: auxiliary tooling for electronic measurement (lab instrumentation track). OpenMHS plan: not i
Tier D3static scan212
pymodbus-dev/modbus-simulator
pymodbus-dev/modbus-simulator: protocol implementation/bridge for electronic measurement (lab instrumentation track). Op
Tier D3static scan191
ploxc/modbux
ploxc/modbux: auxiliary tooling for electronic measurement (lab instrumentation track). OpenMHS plan: not integrated (sk
Tier D3static scan110
ortegahernandes/scanbus-br-simulator-modbus
ortegahernandes/scanbus-br-simulator-modbus: auxiliary tooling for electronic measurement (lab instrumentation track). O
Tier D3static scan78
alongl/modbusplcsimulator
alongl/modbusplcsimulator: protocol implementation/bridge for electronic measurement (lab instrumentation track). OpenMH
Tier D3static scan69
afrl-ares/ares_os
afrl-ares/ares_os: orchestration/scheduling for general (lab instrumentation track). OpenMHS plan: reference only (host)
Tier D3static scan45
unine-chyn/thorpy
unine-chyn/thorpy: protocol implementation/bridge for optics (lab instrumentation track). OpenMHS plan: direct-driver wi
Tier B1contract checked45
zeelos/modbuspal
zeelos/modbuspal: protocol implementation/bridge for electronic measurement (lab instrumentation track). OpenMHS plan: n
Tier D3static scan40
drmcnelson/linear-ccd-with-ltspice-kicad-firmware-and-python-library
drmcnelson/linear-ccd-with-ltspice-kicad-firmware-and-python-library: device backend for optics (lab instrumentation tra
Tier B1contract checked36
opentrons/opentrons-modules
opentrons/opentrons-modules: device backend for liquid handling (lab instrumentation track). OpenMHS plan: direct-driver
Tier B1contract checked33
soso7885/modbus_simulator
soso7885/modbus_simulator: protocol implementation/bridge for electronic measurement (lab instrumentation track). OpenMH
Tier D3static scan30
adaptyvbio/automancer
adaptyvbio/automancer: orchestration/scheduling for biology (lab instrumentation track). OpenMHS plan: reference only (h
Tier D3static scan27
idc-milab/openlh
idc-milab/openlh: device backend for liquid handling (lab instrumentation track). OpenMHS plan: direct-driver with Seria
Tier B1contract checked27
starnight/modbus-server
starnight/modbus-server: protocol implementation/bridge for electronic measurement (lab instrumentation track). OpenMHS
Tier D3static scan18
gehelem/indi_cam86_ccd
gehelem/indi_cam86_ccd: device backend for optics (lab instrumentation track). OpenMHS plan: not integrated (override:re
Tier D3static scan14
freespace/pysmc100
freespace/pysmc100: device backend for optics (lab instrumentation track). OpenMHS plan: direct-driver with SerialDriver
Tier B1contract checked13
bi2air/advanced-bioreactor
bi2air/advanced-bioreactor: device backend for biology (lab instrumentation track). OpenMHS plan: not integrated (skip:p
Tier D3static scan8
clarklabucb/newerapumps_python3
clarklabucb/newerapumps_python3: device backend for liquid handling (lab instrumentation track). OpenMHS plan: direct-dr
Tier B1contract checked7
hrosiak/esp301
hrosiak/esp301: device backend for optics (lab instrumentation track). OpenMHS plan: direct-driver with SerialDriver, wa
Tier B1contract checked7
knerlab/sim_control_software
knerlab/sim_control_software: device backend for microscopy imaging (lab instrumentation track). OpenMHS plan: direct-dr
Tier B1contract checked7