Skip to content

SaneDev.snap() raises SANE_STATUS_INVAL on Epson epsonscan2 backend at any depth — works with scanimage #107

Description

@carygravel

Environment

  • python-sane: 2.9.2 (both the distro package and a fresh pip install . from this repo)
  • Python 3.13.13, openSUSE Leap 16.0
  • SANE backend: epsonscan2:Perfection V39/GT-S650:esci2:usb:ES010D:317
  • Scanner: EPSON Perfection V39 / GT-S650 (USB)

Summary

SaneDev.snap() fails with _sane.error: Invalid argument (SANE_STATUS_INVAL) on every scan through the Epson epsonscan2 backend. The failure is independent of scan mode and depth — reproduced at 1-bit lineart and 8-bit grayscale. The same device scans cleanly with scanimage at both depths, so hardware, USB permissions and the backend itself are all functional.

Minimal reproducer

import sane

sane.init()
dev = sane.open("epsonscan2:Perfection V39/GT-S650:esci2:usb:ES010D:317")
dev.mode = "Grayscale"
dev.resolution = 300
dev.start()
print(dev.get_parameters())   # ('gray', 1, (2280, 2280), 8, 2280)
img = dev.snap()              # raises _sane.error: Invalid argument

start() and get_parameters() return GOOD; the INVAL is raised inside SaneDev_snap's sane_read() loop. Cross-check: scanimage --mode Grayscale --resolution 300 > test.pnm completes and yields a valid 8-bit PGM.

Please see this issue in scantpaper for more details.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions