From e4d2230a578d35da6723fd71157165cabc82f109 Mon Sep 17 00:00:00 2001 From: MangaValk Date: Mon, 12 Oct 2026 18:03:18 +0200 Subject: [PATCH] bdwidth_status: keep a bdwidth USB dropout from shutting down Klipper bdwidth reads its CH340 from a reactor timer without error handling, so "write failed: [Errno 5] Input/output error" shut down Klipper mid print. bdwidth_status now wraps the sensor's Read_bdwidth (bdwidth.py itself unchanged): on a USB error it closes the port, reports once and returns False, so bdwidth retries every 10 s; the port is reopened when the device is back. New status fields usb_ok and usb_errors. Co-Authored-By: Claude Opus 5.5 --- README.md | 2 +- .../bdwidth_status.cpython-312.pyc | Bin 0 -> 4982 bytes extras/bdwidth_status.py | 56 ++++++++++++++++++ 3 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 extras/__pycache__/bdwidth_status.cpython-312.pyc diff --git a/README.md b/README.md index 697e895..cf939ee 100644 --- a/README.md +++ b/README.md @@ -50,7 +50,7 @@ everything below, grouped by topic. Comment out what you do not use there. | File | For | |---|---| | `xy_drift.py` | `AFC_XY_SAFETY_CHECK`: measures lost XY steps from the stepper step counts at the endstop triggers (CoreXY). The toolhead position after homing cannot show lost steps. | -| `bdwidth_status.py` | exposes bdwidth's motion counter and width to macros | +| `bdwidth_status.py` | exposes bdwidth's motion counter and width to macros, and keeps a USB dropout of bdwidth (port: usb) from shutting down Klipper: the read is retried every 10 s and the port reopened | | `bdpressure_check.py` | bd_pressure load check (`BDP_CHECK_START/STOP/QUERY`). Needs the load-check firmware from the bd_pressure `load-check-extension` branch; on stock firmware it reports "not available" and does nothing. | ### Scripts (`scripts/`) diff --git a/extras/__pycache__/bdwidth_status.cpython-312.pyc b/extras/__pycache__/bdwidth_status.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..398442788b988cf088ee0e772af7a20f08eadaf5 GIT binary patch literal 4982 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