sane-coolscan3(5)
πΈ sane-coolscan3 πΈ
okay so welcome to sane-coolscan3(5), bestie β this is the SANE backend manual for Nikon Coolscan film scanners, and we're gonna get through it together π
β¨ NAME β¨
sane-coolscan3 β the SANE backend for Nikon Coolscan film scanners. that's it, that's the whole vibe of the name π
π¦ DESCRIPTION π¦
So the sane-coolscan3 library implements a SANE (Scanner Access Now Easy) backend, and it gives you access to Nikon Coolscan film scanners. Now β and I need you to hear me on this β some functions of this backend should be considered beta-quality software π. Like, most functions have been stable for a long time, no cap, but obviously new development cannot and will not work perfectly from the very first day. that's just how it is π«Ά
At present, these scanners are known to work with this backend:
- LS-30 (Coolscan III) β SCSI
- LS-40 ED (Coolscan IV) β USB
- LS-50 ED (Coolscan V) β USB
- LS-2000 β SCSI
- LS-4000 ED β IEEE 1394
- LS-8000 ED β IEEE 1394
Please send mail to sane-devel@alioth-lists.debian.net to report successes or failures π (yes, they genuinely want to hear from you β wins and losses, we support each other here)
π OPTIONS π
The options this backend supports can be selected either through command line options to programs like scanimage(1), or through GUI elements in xscanimage(1) or xsane(1). pick your fighter β
You can list all the valid command line options and their syntax by running:
scanimage --help -d coolscan3:<interface>:<device>
where <interface> and <device> specify the device in question, exactly like in the configuration file (next section, keep scrolling bestie). The -d parameter and its argument can be omitted to get info on the first scanner identified. And use this command:
scanimage -L
to list all devices recognized by your SANE installation π
The options should be fully described by the description or tooltips given by the frontend. But here's a rundown of some of the most important options, written in the syntax you gotta supply them to scanimage(1):
--frame <n>β specifies which frame to operate on, if a motorized film strip feeder or APS adapter are used. The frame number<n>ranges from1to the number of frames available, which is sensed each time the backend is initialized (usually each time you start the frontend). it literally counts for you, iconic--subframe <x>β shifts the scan window by the specified amount (default unit is mm)--infrared=yes/noβ if set toyes, the scanner will read the infrared channel, letting software do defect removal β¨. The infrared image is read during a second scan, with no options altered. The backend must not be restarted between the scans. If you're usingscanimage(1), perform a batch scan with--batch-count=2to obtain the IR information β that's the whole trick, iykyk--depth <n>β here<n>can either be8or the maximum number of bits supported by the scanner (10,12, or14). It specifies whether or not the scanner reduces the scanned data to 8 bits before sending it to the backend. If 8 bits are used, some information and thus image quality is lost π, but the amount of data is smaller compared to higher depths. Also, many imaging programs and image formats cannot handle depths greater than 8 bits. trade-offs, bestie, trade-offs--autofocusβ performs the autofocus operation. Unless otherwise specified by the other options (--focus-on-centreand friends), focusing is performed on the centre of the selected scan area--ae-wb--aeβ perform a pre-scan to calculate exposure values automatically.--ae-wbwill maintain the white balance, while--aewill adjust each channel separately π--exposureβ multiply all exposure times with this value. This allows exposure correction without modifying white balance π--loadβ load the next slide when using the slide loader (SF-200 bulk loader only)--ejectβ eject the film strip or mounted slide when using the slide loader--resetβ reset scanner. The scanner will perform the same action as when power is turned on: it will eject the slide (with the SF-200 bulk loader) and calibrate itself. Use this whenever the scanner refuses to load a slide properly, as a result of which--ejectdoes not work. it's the "have you tried turning it off and on again" of film scanners, fr fr
π CONFIGURATION FILE π
The configuration file /etc/sane.d/coolscan3.conf specifies the device(s) that the backend will use. Owing to the nature of the supported connection types β SCSI, USB, and IEEE 1394 β the default configuration file supplied with the SANE distribution should work without being edited π
Each line in the configuration file is either of the following, where all entries are case-sensitive (yes, seriously, watch your caps):
- blank, or starting with a
#character β these lines are ignored, so#can be used to include comments π¬ - containing only the word
"auto"β this instructs the backend to probe for a scanner by scanning the buses for devices with known identifiers. This is the default action when no configuration file is present - a line of the form
<interface>:<device>β here<interface>can be one of"scsi"or"usb", and<device>is the device file of the scanner. Note that IEEE 1394 devices are handled by the SBP-2 module in the kernel and appear to SANE as SCSI devices π
π FILES π
/usr/lib64/sane/libsane-coolscan3.aβ the static library implementing this backend/usr/lib64/sane/libsane-coolscan3.soβ the shared library implementing this backend (present on systems that support dynamic loading)/etc/sane.d/coolscan3.confβ configuration file for this backend, read each time the backend is initialized
π§ ENVIRONMENT π§
SANE_DEBUG_COOLSCAN3β if the library was compiled with debug support enabled, this environment variable controls the debug level for this backend. E.g., a value of128requests all debug output to be printed. Smaller levels reduce verbosity. set it to128and prepare to be flooded π
β SEE ALSO β
sane-scsi(5), sane-usb(5), scanimage(1), xscanimage(1), xsane(1)
go read those too, they're the supporting cast and they ate π
π BUGS π
Currently, the SANE protocol does not allow automatically updating options whenever the hardware changes. Thus the number of choices for the --frame option will be fixed when the backend is initialized (usually when the user runs the frontend). In particular, if there is no film strip in the automatic film strip feeder when the backend is initialized, the --frame option will not appear at all π. Also, restarting the frontend after swapping film adapters is strongly recommended.
Linux kernels prior to2.4.19had a patch that truncated INQUIRY data from IEEE 1394 scanners to 36 bytes, discarding vital information about the scanner. The IEEE 1394 models therefore only work with2.4.19or later π¨
No real bugs currently known β please report any to the SANE developers' list π«Ά
π AUTHORS π
coolscan3 written by A. Zummo <a.zummo@towertech.it>, based heavily on coolscan2 written by AndrΓ‘s Major <andras@users.sourceforge.net>.
and that's the page, bestie π this was sane-coolscan3(5) from the SANE Scanner Access Now Easy crew β this build is dated 11 Jul 2008, so yeah, it's vintage, and it's still slaying β¨π
π¦ where this page comes from
- fedora 43: sane-backends 1.4.0-4.fc43 Β· GPL-2.0-or-later WITH SANE-exception AND GPL-2.0-or-later AND GPL-2.0-only AND LGPL-2.0-or-later AND LGPL-2.1-or-later AND LicenseRef-Fedora-Public-Domain AND IJG AND MIT
- fedora 44: sane-backends 1.4.0-6.fc44 Β· GPL-2.0-or-later WITH SANE-exception AND GPL-2.0-or-later AND GPL-2.0-only AND LGPL-2.0-or-later AND LGPL-2.1-or-later AND LicenseRef-Fedora-Public-Domain AND IJG AND MIT
- opensuse-leap 16.0: sane-backends 1.3.0-bp160.1.14 Β· GPL-2.0-or-later AND SUSE-GPL-2.0+-with-sane-exception AND SUSE-Public-Domain
- opensuse-leap 16.0: sane-backends 1.3.0-bp160.1.14 Β· GPL-2.0-or-later AND SUSE-GPL-2.0+-with-sane-exception AND SUSE-Public-Domain
- opensuse-leap 16.0: sane-backends 1.3.0-bp160.1.14 Β· GPL-2.0-or-later AND SUSE-GPL-2.0+-with-sane-exception AND SUSE-Public-Domain
- opensuse-leap 16.0: sane-backends 1.3.0-bp160.1.14 Β· GPL-2.0-or-later AND SUSE-GPL-2.0+-with-sane-exception AND SUSE-Public-Domain
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms