# panelbeater: reconstructing ScanSnap iX1500 panel control

> panelbeater lets a Linux host respond to the Scan button on a ScanSnap iX1500 over Wi-Fi or USB. Over Wi-Fi it registers the host with the scanner; over USB it scans without registration. Its protocol notes document discovery, registration, document transfer and USB behavior, while the client assembles scanned pages into PDFs and can add an OCR text layer when ocrmypdf is installed.

- Type: Case study
- Targets: Protocol
- Category: Independent reconstruction cases
- Relationship: Independent reconstruction project
- Sources reviewed: 2026-11-08
- Added to the catalog: 2026-11-08
- Original resource: <https://github.com/appositeit/panelbeater>
- Primary source: <https://github.com/appositeit/panelbeater/blob/a7b99e05e9efa84ddb600d9ac241e5a0fb4d6168/docs/PROTOCOL.md>
- Catalog page: <https://awesomerea.org/resources/panelbeater-case/>
- Record JSON: <https://awesomerea.org/resources/panelbeater-case/record.json>
- Chinese version: [简体中文](https://awesomerea.org/zh/resources/panelbeater-case/index.md)

## Requirements & limits

- **Prerequisites:** Python 3.9 or newer and a ScanSnap iX1500; Wi-Fi operation requires configuration on the scanner panel.
- **Prerequisites:** USB scanning requires pyusb, Pillow and numpy; PDF assembly and OCR use optional packages.
- **Limits:** Network scanning is fixed at 300 dpi colour; USB scanning and SANE cannot claim the scanner simultaneously.
- **License:** GPL-2.0-or-later license.

## Primary sources

1. <https://github.com/appositeit/panelbeater/blob/a7b99e05e9efa84ddb600d9ac241e5a0fb4d6168/docs/PROTOCOL.md>
2. <https://github.com/appositeit/panelbeater/blob/a7b99e05e9efa84ddb600d9ac241e5a0fb4d6168/README.md>
3. <https://github.com/appositeit/panelbeater/blob/a7b99e05e9efa84ddb600d9ac241e5a0fb4d6168/LICENSE>

## More in Protocols

- [VT-Ragnaros: reconstructing Redragon SS552 USB control](https://awesomerea.org/resources/vt-ragnaros-case/index.md) · Case study
- [PixMob Wave2: reconstructing RF wristband commands for Flipper Zero](https://awesomerea.org/resources/pixmob-wave2-flipper-zero-case/index.md) · Case study
- [Goodix 55a4: reconstructing a Linux fingerprint driver](https://awesomerea.org/resources/goodix-27c6-55a4-fingerprint-case/index.md) · Case study
- [allmiibo-sync: reconstructing Pixl.js Bluetooth file synchronization](https://awesomerea.org/resources/allmiibo-sync-case/index.md) · Case study
- [EBO for Home Assistant: reconstructing Enabot cloud control](https://awesomerea.org/resources/ha-enabot-case/index.md) · Case study
- [iM.Master SDK: reconstructing the robot's BLE control protocol](https://awesomerea.org/resources/im-master-sdk-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.
