Healthcare & medical devices
Shipping firmware to 6,000 imaging consoles without a truck roll
A signed, resumable, rollback-safe update channel for regulated ultrasound hardware sitting on hospital networks that block almost everything.
- Field engineer visits per release
- cut by roughly 90%
- Failed updates requiring intervention
- a small fraction of a percent
- Rollback time on a bad package
- a few minutes, automatic
- Sector
- Medical imaging OEM
- Fleet
- ~6,000 consoles, 40+ countries
- Engagement
- Sub-contracted to the prime systems integrator
- Duration
- 11 months, two release trains
Stack
- C++
- Python
- Yocto Linux
- TUF-style signing
- gRPC
- Azure IoT Hub
- PostgreSQL
- Grafana
Practices involved
Discuss a similar problemThe situation
Every software release for the console fleet meant scheduling a field engineer, carrying validated media to a hospital, negotiating a slot when the room was not in clinical use, and repeating that several thousand times. A security patch took two quarters to reach the whole fleet. That is a commercial problem and, increasingly, a regulatory one.
The constraint
Four constraints made this harder than a normal over-the-air update problem.
- The device is regulated. Any change to what runs on it must be traceable to an approved package, with evidence retained — and the update mechanism itself is part of the submitted design.
- Hospital networks are hostile by design: outbound proxies, deep packet inspection, no inbound access, and in several sites a bandwidth budget measured in kilobits during working hours.
- A console mid-examination cannot be interrupted, and a console that fails to boot after an update is a clinical incident, not a support ticket.
- The fleet is not homogeneous. Hardware revisions, regional configurations and optional modules produce hundreds of valid combinations.
What we built
A package format with provenance built in
Signed, versioned packages with a manifest declaring hardware compatibility, prerequisite versions and a post-install verification set. Signature verification happens on-device before anything is unpacked; key rotation was designed in from the start rather than deferred.
An A/B partition with an automatic fallback
Updates are written to the inactive partition and only become active after verification passes and a watchdog confirms a clean boot into a working clinical application. If it does not, the device returns to the previous partition on its own and reports why. Rollback is not a procedure someone has to run; it is the default behaviour on failure.
Delivery that survives the network it is on
Chunked, resumable transfer with checksum verification per chunk, bandwidth throttling by site policy, and a scheduling window so downloads happen overnight. Where a site allows only one egress path, a single on-premise cache serves the consoles behind it.
A campaign console for the release manager
Fleet segmentation by model, region, current version and site; staged rollout with automatic halt rules if the failure rate in a wave crosses a threshold; and a per-device history that produces the audit evidence a regulator or an internal quality team asks for, without anyone assembling a spreadsheet.
What changed
A security patch now reaches the addressable fleet in days rather than quarters, and the field engineering budget moved from routine updates to installation and clinical support work. The audit trail that used to be reconstructed after the fact is now a by-product of the mechanism.
What we would do differently
We modelled the fleet inventory from the manufacturing record. It disagreed with reality often enough — boards swapped in the field, options enabled post-sale — that we added an on-device capability report in the third month. That should have been the first thing built, before any campaign logic that depended on knowing what a device actually is.
Outcomes
- Field engineer visits per release
- cut by roughly 90%
- Failed updates requiring intervention
- a small fraction of a percent
- Rollback time on a bad package
- a few minutes, automatic
Client identity withheld under a mutual NDA. Figures are illustrative — rounded and directional, meant to show the shape of the change rather than an audited result. We will walk through the real numbers, and how they were measured, under NDA on a call.
More work
Other engagements.
Case studiesCutting stockouts across 240 stores with a forecast the buyers trust
A hierarchical demand forecast, a promo-aware feature store and a replenishment workflow the category team can override — because a model nobody overrides is a model nobody uses.
Read the case studyA reproducible pipeline for a diagnostics lab that had outgrown its scripts
Genomic and assay data moving from instruments to reportable results, with provenance for every derived value and a turnaround clock the lab director can see.
Read the case studyVisual inspection on a plastics line, and the OEE story underneath it
A camera-based defect check at the end of a moulding line, plus the line telemetry that showed the real losses were upstream of the defects.
Read the case studyNext step
Tell us what you're trying to ship.
Send the brief, the RFP, or three messy sentences about the problem. You get a written point of view from an architect within two working days — not a sales deck.