Skip to content

Kodak ScanMate i1120

The reference device for this project: a 2009-era desk scanner with no vendor Linux support, driven through the avision SANE backend.

USB ID 040a:6013
SANE backend avision
Compatibility level A — Reference
Verified 2026-04, re-verified 2026-04-30
Sources Flatbed, ADF simplex, ADF Duplex
Resolution 75–600 DPI
Speed (vendor spec) 20 ppm simplex, 10 ppm duplex over USB 2.0

Backend status

The avision backend has been marked unmaintained upstream since 2020, but it works reliably for this device on any modern Linux distribution with kernel 5.15 or newer. The 2026-04-30 verification run used Ubuntu Server 24.04 with the 6.8 kernel series; the result is not kernel-specific.

A USB 3.0 host port does not make the scanner faster — the device itself is USB 2.0.

Hardware buttons: partial support

This is the single most important thing to know about this device, and it directly shaped the project's architecture.

What works

The LCD function-indicator wheel (the 1–9 selector) generates SANE events on the read-only --message option, as strings of the form <n>:button1. These are reliably captured by scanbd's stock function_knob filter at 250 ms polling, verified across all nine positions.

What does not work

The hardware Start button generates no SANE-visible event. Not through the avision backend's options, not through direct enumeration with scanimage -A, not through scanbd polling. During a 60-second scanbd capture session, repeated Start-button presses produced zero events while indicator-wheel turns produced 21.

The ADF paper sensor is equally opaque. Inserting or removing paper changes neither the scanimage -A output nor the --message field — verified by snapshot diff and live scanbd polling. The only paper-related signal a caller can rely on is SANE_STATUS_NO_DOCS, returned as an error during an actual scan attempt.

No automatic 'paper in, scan starts'

The originally planned flow — insert paper, scanner starts by itself — is not achievable on this device through SANE. scanbd was dropped from the Phase 1.2 design as a direct result.

The captured logs, the negative evidence, and the open question of whether a USB-level signal exists that the backend simply does not decode are in docs/research/scanner-hardware-events.md. A USB-capture investigation is tracked in issue #7.

Practical consequence

Webhook triggering over HTTP and Zigbee remotes via Home Assistant are the primary trigger paths on this device. The indicator wheel works as a secondary hardware trigger through scanbd's function_knob mapping. The Start button does not work today.

Diagnostics via NVRAM

The avision backend exposes a read-only --nvram-values string containing the scanner model, firmware version, serial number, manufacturing date, first-scan date, and total pad/ADF scan counters. The monitoring stack reads this for operational dashboards — it is the cheapest way to answer "how many pages has this roller seen?".

Paper handling and maintenance

  • Deterministic with standard office paper weights, 60–105 g/m².
  • Heavier stock — cardboard, glossy photographs — needs manual feed through the front slot.
  • ADF capacity: 50 sheets nominal, 30 sheets reliable.
  • Clean the rollers monthly with a lint-free cloth and isopropyl alcohol.