pyopticfilm uses PyUSB and libusb to talk to the scanner directly. On Windows, the Plustek vendor driver (installed with SilverFast, VueScan, or Plustek utilities) normally owns the device. You must bind WinUSB (or libusbK) on the scanner’s USB interface so libusb can open and claim it.
This guide applies to all supported OpticFilm models (07b3:…). Scanning is validated on the OpticFilm 8200i SE (07b3:1825), OpticFilm 8100 (V2) (07b3:1824), OpticFilm 8300i SE (07b3:181f), OpticFilm 7600i v1 (07b3:0c3b, bcdDevice 4.00), and OpticFilm 7600i v2 (07b3:0c3b, bcdDevice 6.05); other models may open for status and register probes only.
-
Install pyopticfilm (bundled libusb on Windows):
pip install pyopticfilm
-
Connect the scanner with USB and power it on.
-
Download Zadig (portable, no installer required).
-
Run Zadig as Administrator (right-click → Run as administrator).
-
Enable Options → List All Devices so the Plustek scanner appears even when another driver is loaded.
-
In the device dropdown, select your film scanner. Typical entries:
Product USB ID Notes OpticFilm 8200i SE 07B3 1825GL128 — scan-ready OpticFilm 8100 (V2) 07B3 1824GL128 — scan-ready (no IR) OpticFilm 8300i SE 07B3 181FGL128 — scan-ready (IR capable) OpticFilm 7600i v1 07B3 0C3BGL843 — scan-ready (bcdDevice 4.00; IR capable) OpticFilm 7600i v2 07B3 0C3BGL845 — scan-ready (bcdDevice 6.05; IR capable) OpticFilm 8200i 07B3 130DGL845 — probe only Other OpticFilm 07B3 0Cxx/07B3 130CSee README hardware table Match USB ID (
07B3vendor, product ID as above), not only the friendly name. The GL845 OpticFilm 8100 (07B3 130C) is not the same device as 8100 (V2). -
Confirm the USB ID field shows
07B3and the correct product ID. -
Set the target driver to WinUSB (recommended). libusbK also works with PyUSB’s libusb backend.
-
Click Replace Driver (or Install Driver if no driver is present). Wait until Zadig reports success.
-
Unplug and replug the scanner, or power-cycle it.
You only need to do this once per Windows installation for that device. Windows Update may occasionally revert the binding; repeat Zadig if access errors return after an update.
from pyopticfilm.usb.device import find_devices
for d in find_devices():
print(d.device_id, f"pid=0x{d.product_id:04x}", d.asic_hint)Then open the scanner:
from pyopticfilm import Scanner
with Scanner.open() as s:
print(s.model.model, s.status())If Scanner.open() works, WinUSB binding is correct.
The Plustek vendor driver still owns the interface. Run Zadig again as Administrator, select the correct 07B3:… device, and replace the driver with WinUSB.
Close SilverFast, VueScan, and Plustek utilities before binding or opening the device—they can hold the handle and block claim.
- Check USB cable and power; wait for the scanner to finish booting.
- Confirm the device appears in Zadig with
07B3vendor ID. - For scanning, you need an 8200i SE (
07b3:1825), 8100 (V2) (07b3:1824), 8300i SE (07b3:181f), 7600i v1 (07b3:0c3b, bcdDevice 4.00), or 7600i v2 (07b3:0c3b, bcdDevice 6.05). Other OpticFilm PIDs are listed but not scan-validated. - Run
find_devices()as above to see what libusb enumerates.
Reinstall so libusb-package is present:
pip install --force-reinstall pyopticfilmEnsure libusb-1.0.dll is loadable (pip’s libusb-package places it where PyUSB expects on Windows).
pyopticfilm avoids reading USB string descriptors during normal listing because get_string can block on Windows when WinUSB is not bound or another program holds the device. Use VID/PID from Zadig or find_devices() without read_strings=True.
Two identical scanners on one PC require opening by explicit device_id from find_devices():
Scanner.open(device_id="plustek:usb:07b3:1825:001:002")To restore the Plustek driver:
- Open Device Manager.
- Find the scanner under Universal Serial Bus devices or libusb-win32 devices / WinUsb Device.
- Right-click → Update driver → Browse → let Windows reinstall the manufacturer driver, or use Plustek/SilverFast installer repair.
Alternatively, use Zadig to replace WinUSB back to the original driver if it is still listed in the driver dropdown.
Switching drivers is safe for the hardware; you are only changing which software stack owns the USB interface.
WinUSB binding allows any user-level program to access the scanner USB interface. That is required for libusb and is normal for developer tooling. Only bind devices you trust and only on machines where that exposure is acceptable.