27 lines
1.7 KiB
Markdown
27 lines
1.7 KiB
Markdown
# myscan
|
|
|
|
Linux driver tools for the Hama myScan (00052343) scanner mouse, a Dacuda design
|
|
(USB 274f:c001: UVC MJPEG camera + HID mouse).
|
|
|
|
- `myscan/xu.py` — UVC extension-unit access: switch between mouse and scan mode, LEDs, exposure
|
|
- `myscan/frame.py` — fix the lying JPEG header and decode the per-frame sensor record (laser dx/dy)
|
|
- `myscan/calib.py` — per-device calibration from the mouse's EEPROM: colour gains, flat field, lens undistortion
|
|
- `myscan/pagegraph.py` — assemble a page from all frames at once: frame-to-frame registration, loop closures
|
|
between passes, pose-graph optimisation (used by `scan.py` and `stitch.py`)
|
|
- `myscan/stitch.py` — the older live, frame-by-frame stitcher (`stitch.py --live`) and shared helpers
|
|
- `tools/scan.py` — scan with the button: `python tools/scan.py` (press to start, press again to stop)
|
|
- `tools/record.py` — record a scan session: `python tools/record.py -d 25 -o scan_text`
|
|
- `tools/stitch.py` — stitch a recording: `python tools/stitch.py scan_text` -> `scan_text/page.png`
|
|
- `tools/probe.py` — log raw frames and HID reports side by side
|
|
- `tools/scantest.py` — minimal scan-mode test: grab frames, decode records, restore mouse mode
|
|
|
|
See [FINDINGS.md](FINDINGS.md) for the protocol and calibration notes, and [EEPROM.md](EEPROM.md) for the
|
|
calibration blob.
|
|
|
|
Setup: `python -m venv .venv && .venv/bin/pip install -r requirements.txt`
|
|
|
|
**Calibration cache:** `calib/eeprom_3000.bin` in this repo is the EEPROM dump of one specific mouse.
|
|
`myscan/calib.py` uses that file whenever it exists and only reads the mouse when it is missing. With a
|
|
different mouse, delete it first (`rm calib/eeprom_3000.bin`), so the next scan reads and caches your own
|
|
unit's calibration (about 15 s).
|