Install Fujitsu ScanSnap S1300i

Unfortunately, this is not PnP…
I followed instruction on NixOS Wiki
Got the devicedriver from josharcher’s blog (you have to decide for yourself if you trust that source…)
The rebuild works and sane-find-scanner detects the device correctly:

[root@nixos:~]# sane-find-scanner 

  # sane-find-scanner will now attempt to detect your scanner. If the
  # result is different from what you expected, first make sure your
  # scanner is powered up and properly connected to your computer.

  # No SCSI scanners found. If you expected something different, make sure that
  # you have loaded a kernel SCSI driver for your SCSI adapter.
  # Also you need support for SCSI Generic (sg) in your operating system.
  # If using Linux, try "modprobe sg".

found USB scanner (vendor=0x04c5 [FUJITSU], product=0x128d [ScanSnap S1300i]) at libusb:003:005
  # Your USB scanner was (probably) detected. It may or may not be supported by
  # SANE. Try scanimage -L and read the backend's manpage.

  # Not checking for parallel port scanners.

  # Most Scanners connected to the parallel port or other proprietary ports
  # can't be detected by this program.

But scanimage -L did not bring up anything. Increasing verbosity a bit by using an enviroment variable reveals the problem:

[root@nixos:~]# SANE_DEBUG_EPJITSU=15 scanimage -L
[04:22:08.911396] [sanei_debug] Setting debug level of epjitsu to 15.
[04:22:08.911426] [epjitsu] sane_init: start
[04:22:08.911431] [epjitsu] sane_init: epjitsu backend 1.0.31, from sane-backends 1.0.30
[04:22:08.911435] [epjitsu] sane_init: finish
[04:22:08.911441] [epjitsu] sane_get_devices: start
[04:22:09.037650] [epjitsu] sane_get_devices: reading config file epjitsu.conf
[04:22:09.037736] [epjitsu] sane_get_devices: firmware '/nix/store/9birysiz3mcqg5yxcl1mqp1ann8gnd23-sane-backends-1.0.30/share/sane/epjitsu/1300i_0D12.nal'
[04:22:09.037740] [epjitsu] sane_get_devices: looking for 'usb 0x04c5 0x128d'
[04:22:09.037745] [epjitsu] attach_one: start 'libusb:003:005'
[04:22:09.037749] [epjitsu] attach_one: init struct
[04:22:09.037754] [epjitsu] attach_one: connect fd
[04:22:09.037758] [epjitsu] connect_fd: start
[04:22:09.037762] [epjitsu] connect_fd: opening USB device
[04:22:09.037787] [epjitsu] connect_fd: finish
[04:22:09.037792] [epjitsu] load_fw: start
[04:22:09.037797] [epjitsu] get_stat: start
[04:22:09.037801] [epjitsu] do_cmd: start
[04:22:09.038030] [epjitsu] do_cmd: finish
[04:22:09.038039] [epjitsu] load_fw: failed to lseek file /nix/store/9birysiz3mcqg5yxcl1mqp1ann8gnd23-sane-backends-1.0.30/share/sane/epjitsu/1300i_0D12.nal
[04:22:09.038044] [epjitsu] destroy: start
[04:22:09.038047] [epjitsu] teardown_buffers: start
[04:22:09.038051] [epjitsu] teardown_buffers: finish
[04:22:09.038055] [epjitsu] destroy: finish
[04:22:09.038059] [epjitsu] attach_one: firmware load failed
[04:22:09.038073] [epjitsu] sane_get_devices: found 0 scanner(s)
[04:22:09.038078] [epjitsu] sane_get_devices: finish

No scanners were identified. If you were expecting something different,
check that the scanner is plugged in, turned on and detected by the
sane-find-scanner tool (if appropriate). Please read the documentation
which came with this software (README, FAQ, manpages).
[04:22:10.232991] [epjitsu] sane_exit: start
[04:22:10.233007] [epjitsu] sane_exit: finish

It seems, something in config.nix is not as supposed…the relevant part looks like:

  # Add sane scanner support
  hardware.sane.enable = true;
  nixpkgs.config.sane.snapscanFirmware = pkgs.fetchurl {
#    url = ""; # Fujitsu ScanSnap S1300i
    url = "/home/uniq/Downloads/1300i_0D12.nal"; # Fujitsu ScanSnap S1300i
    sha256 = "cbea48c6cee675c2ea970944b49b805d665ee659f753a50b83c176973f507591";

(the referenced file in the download directory is copied from an arch-based system, which works well with the scanner)
The lseek failure is mentioned in this conversation on and apparently solvable by copying a file to the correct place, but copying files around is not nixOS style, so what is the next step here?

In case someone is looking for a solution the following settings worked for me.

hardware.sane.enable = true;
hardware.sane.drivers.scanSnap.enable = true;

After that it really was just pnp.


can confirm, this works!

1 Like