# OpticFilm 135i: reconstructing native USB scanning on Linux

> OpticFilm 135i reconstructs USB control of the Plustek OpticFilm 135i film scanner for Linux. Its Python driver handles calibration, film movement and 16-bit image capture at five resolutions, while a separate SANE backend exposes scanning to standard frontends; research notes record protocol and calibration findings.

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

## Requirements & limits

- **Prerequisites:** Requires a Plustek OpticFilm 135i scanner and Linux; the Python CLI requires Python 3.10 or later, pyusb and numpy.
- **Testing evidence:** The author reports CLI testing on one development unit and scans on two other units, with cross-unit compatibility still under study.
- **Scope:** The SANE backend is installed from this repository's build while its upstream submission is under review.
- **License:** Driver code is licensed GPL-2.0-or-later or MIT; documentation is CC BY 4.0.

## Primary sources

1. <https://github.com/cgillinger/opticfilm135i-linux/blob/b3451525616b9429b4accfbc535bd5256a41601d/README.md>
2. <https://github.com/cgillinger/opticfilm135i-linux/blob/b3451525616b9429b4accfbc535bd5256a41601d/docs/cal-analysis.md>

## More in Protocols

- [Martian Notifier: reconstructing smartwatch Bluetooth commands](https://awesomerea.org/resources/martian-notifier-toolkit-case/index.md) · Case study
- [E88 / E99 Drone: reconstructing Wi-Fi flight control and video access](https://awesomerea.org/resources/e88-e99-drone-pc-control-case/index.md) · Case study
- [Samsung Washer Monitor: reconstructing a washer panel UART feed](https://awesomerea.org/resources/samsung-washer-monitor-esphome-case/index.md) · Case study
- [Fluval Connect light: reconstructing local Bluetooth control for aquarium lights](https://awesomerea.org/resources/hass-fluval-connect-case/index.md) · Case study
- [Citroën Connected Camera: reconstructing the ConnectedCAM local API](https://awesomerea.org/resources/citroen-connected-camera-ios-case/index.md) · Case study
- [Canon GM2080: reconstructing IVEC/PWG printing for macOS](https://awesomerea.org/resources/canon-gm2080-macos-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.
