Skip to content

thde/ix500

Repository files navigation

ix500

Go Reference test Go Report Card

A Linux driver and scan daemon for the Fujitsu ScanSnap iX500 document scanner based on the stapelberg/scan2drive implementation. Supports custom DPI, simplex/duplex scanning.

Implements the SCSI-2 scanner command set over Linux's usbdevfs bulk transfer interface. No SANE, libusb, or kernel module required.

Requirements

  • Linux
  • Fujitsu ScanSnap iX500
  • Read/write access to the USB device node (see Permissions)

Library

The thde.io/ix500 package can be used independently:

dev, err := ix500.FindDevice()
scn := ix500.New(dev, &ix500.Options{
    Resolution: ix500.DPI300,
    ScanMode:   ix500.Duplex,
})
defer scn.Close()

_ = scn.Initialize(ctx)
_ = scn.WaitForButton(ctx)

for page, err := range scn.Scan(ctx) {
    // page.Image implements image.Image
    // page.Sheet, page.Side identify position
}

Check out the CLI tool ix500 for an example of how to use the library.

CLI

Install

go install thde.io/ix500/cmd/ix500@latest

Usage

ix500 --help

The daemon waits for the scan button to be pressed, scans all pages from the ADF, and writes them as JPEG files named scan-<timestamp>-page-<NNN>.jpg. Pages are yielded in hardware scan order (last sheet first); use Page.Sheet and Page.Side to reorder if needed.

Permissions

The daemon opens the USB device node directly (e.g. /dev/bus/usb/001/005). To run without root, add a udev rule:

SUBSYSTEM=="usb", ATTRS{idVendor}=="04c5", ATTRS{idProduct}=="132b", MODE="0664", GROUP="scanner"

References

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages