# hw-harness: scanner USB protocol investigation

> Documents an author-reported scanner investigation comparing vendor-driver USB control transfers with Linux-driver traces to infer initialization, timing and resolution parameters. The released harness organizes reference capture and comparison; it does not automatically recover a complete protocol specification.

- Type: Case study
- Targets: Protocol
- Category: Independent reconstruction cases
- Relationship: Independent reconstruction project
- Sources reviewed: 2026-10-17
- Added to the catalog: 2026-10-17
- Original resource: <https://github.com/cschalle/hw-harness>
- Primary source: <https://github.com/cschalle/hw-harness/blob/093afc5c576c200f29b771d01624a327d0ff1806/examples/plustek-film-scanner/README.md>
- Catalog page: <https://awesomerea.org/resources/hw-harness-reference-case/>
- Record JSON: <https://awesomerea.org/resources/hw-harness-reference-case/record.json>
- Chinese version: [简体中文](https://awesomerea.org/zh/resources/hw-harness-reference-case/index.md)

## Requirements & limits

- **Prerequisites:** Developed on Fedora with libvirt/KVM and a Windows 11 Pro guest running the vendor driver. The documented USB case uses a Plustek scanner with device ID 07b3:1825; physical hardware is required.
- **Prerequisites:** USB passthrough, host-side usbmon capture, appropriate host privileges and a matching Linux-side operation are needed for comparable traces. The harness supplies capture/control tooling rather than an automatic protocol decoder.
- **Scope:** The generic harness was published after the original bespoke investigation. Its separate MIPI camera example inspects configuration, ACPI and calibration data rather than using the scanner’s USB capture path.
- **Testing evidence:** Hardware outcomes and Claude involvement are author-reported.
- **License:** The pinned harness code is MIT-licensed. Vendor software and driver dependencies remain separate inputs.

## Primary sources

1. <https://github.com/cschalle/hw-harness/blob/093afc5c576c200f29b771d01624a327d0ff1806/examples/plustek-film-scanner/README.md>
2. <https://github.com/cschalle/hw-harness/blob/093afc5c576c200f29b771d01624a327d0ff1806/README.md>
3. <https://github.com/cschalle/hw-harness/blob/093afc5c576c200f29b771d01624a327d0ff1806/doc/method.md>
4. <https://github.com/cschalle/hw-harness/blob/093afc5c576c200f29b771d01624a327d0ff1806/examples/ipu7-imx471/README.md>
5. <https://github.com/cschalle/hw-harness/blob/093afc5c576c200f29b771d01624a327d0ff1806/LICENSE>
6. <https://blogs.gnome.org/uraeus/2026/10/15/aiandreverseengineerhardware/>

## More in Protocols

- [Roborock Local Server: a self-hosted stand-in for Roborock’s vacuum cloud](https://awesomerea.org/resources/roborock-local-server-cloud-case/index.md) · Case study
- [pypush: a Python client for Apple’s push protocol](https://awesomerea.org/resources/pypush-apns-protocol-case/index.md) · Case study
- [PixMob IR reverse engineering: controlling event wristbands at home](https://awesomerea.org/resources/pixmob-ir-protocol-case/index.md) · Case study
- [OpenDrop: an open reimplementation of Apple AirDrop](https://awesomerea.org/resources/opendrop-airdrop-reimplementation-case/index.md) · Case study
- [bluefluff: reverse engineering Furby Connect's Bluetooth LE protocol](https://awesomerea.org/resources/bluefluff-furby-connect-ble-case/index.md) · Case study
- [pyatv: a reverse-engineered client for Apple TV and AirPlay protocols](https://awesomerea.org/resources/pyatv-apple-tv-airplay-protocols-case/index.md) · Case study

## About this entry

The description was reviewed against primary sources.
Original editorial content: MIT. Linked projects, papers and assets retain their own rights and licenses.
