Use a Fujitsu ScanSnap Scanner With Linux
I used to rely heavily for my Fujitsu ScanSnap S510M scanner, but by 2023, I almost never use it. I use scanning apps on my Android phone to scan documents, and since I don’t scan long documents (more than a few pages), this suffices for my needs. As a result, I was surprised when I received an email from a concerned reader who told me that they couldn’t follow these instructions to install XSane. I hadn’t used XSane for about two years, but I remembered using it and it worked fine.
What Happened?
I don’t know. It appears that XSane has entered some kind of in-between state as a project.
If you don’t know—and I barely know—XSane provides a graphical application for using the sane
libraries to drive scanners, such as the S510M. In typical programmer style, the community refers to these applications as “front ends”, so if you see that term, simply substitute the term “applications” (or even “apps”) that typical, everyday people would tend to understand. It’s enough to know that computers use sane
to talk to your scanner and that applications such as XSane make it easier for humans to use sane
.
Somewhere along the way, XSane’s web site began to refer to a German-language site at ubuntuusers.de’s Wiki. Fortunately, I read just enough German not to be frightened by this, and when I scrolled down to the bottom of the page, I found a link to an English-language snapshot of the documentation along with the simple comment “The original site is no longer online”. I also found a link to the source code, which shows no new commits for approximately 1 year. From what I’ve been able to understand so far, XSane continues to work, but there are no more friendly instructions for installing it.
Maybe this means that the following instructions are the only English-friendly ones on the web right now. How nice! And as far as I can tell, they still work, so if you try them, please let me know if you notice anything that I need to change in what follows.
The biggest difference in my own practice is that I use nala
instead of apt
as my day-to-day package manager on Pop!__OS; otherwise, if I reinstalled XSane now, I’d expect it to go something like…
The Original Instructions from 2019
I love my Fujitsu ScanSnap S510M scanner, mostly because it just always works. It almost never jams. I find it very easy to operate. It makes scanning longer documents very easy. Even though I always have the backup option of photographing pages and processing them with Mobile Doc Scanner for Android, I still occasionally receive full-page mail and the ScanSnap scanner makes processing those pages really easy.
I originally bought the S510M to work with my MacOS machines, but now that I’m trying to move entirely off MacOS, I’d like to make my scanner work on Linux. After some light web searching, this seems possible with some combination of the built-in SANE scanning software and with a custom package called VueScan (not FOSS). How do we get these things to work?
Software Included In Pop!_OS/Ubuntu
I start at https://help.ubuntu.com/community/Scanners and look at the scanners that SANE (Scanner Access Now Easy) supports. According to http://www.sane-project.org/sane-mfgs.html, SANE supports the Fujitsu ScanSnap S510M “completely” (I don’t yet know how they’re judging “completeness” here, but it sounds promising). This table provides some information that I will need later, so I make a note of it:
- USB ID: 0x04c5/0x116f
- Backend: fujitsu (133)
Now, how do I try this?
Basic Setup
I follow the instructions at https://help.ubuntu.com/community/sane and do the following.
Interlude: Something is Wrong as of June 2023
The instructions above don’t work, because they suggest installing the package libsane-extras
, which is not found in the standard Ubuntu/Pop!_OS package repository. I’ve posted a question at the Unix & Linux StackExchange, hoping for a useful suggestion. Maybe you’ll find a useful answer by now!
Returning to Basic Setup
[As of June 2023, this command fails, because the package libsane-extras
is not found. I don’t know how to fix this problem. Good luck.]
$ sudo apt-get install sane sane-utils libsane-extras xsane
A Detour Into Gimp Configuration Files
When installing these packages, apt
asks me about changing some configuration files related to Gimp. Since I don’t qualify as a Gimp power user, I probably don’t care too much about the contents of these configuration files, but I might learn something by reviewing these changes, so I look at them one by one. This also gives me a chance to learn a little bit more about the details of installing packages with apt
.
First, comes the configuration file /etc/gimp/2.0/controllerrc
. All the changes in this file appear to relate to keyboard shortcuts that I don’t rely on, so I feel safe in accepting the changes. I have no muscle memory with Gimp to interfere with.
/etc/gimp/2.0/controllerrc
<
represents the configuration file “as is” and >
represents the proposed changes to the configuration file. I’m no expert in Lisp, but even I can read this.
8,17c8,17
< (map "scroll-up-alt" "tools-value-1-increase-skip")
< (map "scroll-down-alt" "tools-value-1-decrease-skip")
< (map "scroll-up-control-alt" "context-gradient-select-next")
< (map "scroll-down-control-alt" "context-gradient-select-previous")
< (map "scroll-up-shift-alt" "context-pattern-select-next")
< (map "scroll-down-shift-alt" "context-pattern-select-previous")
< (map "scroll-up-shift-control" "context-brush-select-next")
< (map "scroll-down-shift-control" "context-brush-select-previous")
< (map "scroll-up-shift-control-alt" "context-font-select-next")
< (map "scroll-down-shift-control-alt" "context-font-select-previous")))
---
> (map "scroll-up-alt" "tools-opacity-increase")
> (map "scroll-down-alt" "tools-opacity-decrease")
> (map "scroll-up-shift-primary" "tools-aspect-increase")
> (map "scroll-down-shift-primary" "tools-aspect-decrease")
> (map "scroll-up-shift-alt" "tools-angle-increase")
> (map "scroll-down-shift-alt" "tools-angle-decrease")
> (map "scroll-up-primary-alt" "tools-size-increase")
> (map "scroll-down-primary-alt" "tools-size-decrease")
> (map "scroll-up-shift-primary-alt" "tools-spacing-increase")
> (map "scroll-down-shift-primary-alt" "tools-spacing-decrease")))
28,35c28,35
< (map "cursor-up-control" "view-scroll-top-border")
< (map "cursor-down-control" "view-scroll-bottom-border")
< (map "cursor-left-control" "view-scroll-left-border")
< (map "cursor-right-control" "view-scroll-right-border")
< (map "cursor-up-alt" "tools-value-1-increase-skip")
< (map "cursor-down-alt" "tools-value-1-decrease-skip")
< (map "cursor-left-alt" "tools-value-1-decrease")
< (map "cursor-right-alt" "tools-value-1-increase")))
---
> (map "cursor-up-primary" "view-scroll-top-border")
> (map "cursor-down-primary" "view-scroll-bottom-border")
> (map "cursor-left-primary" "view-scroll-left-border")
> (map "cursor-right-primary" "view-scroll-right-border")
> (map "cursor-up-alt" "tools-size-increase-skip")
> (map "cursor-down-alt" "tools-size-decrease-skip")
> (map "cursor-left-alt" "tools-size-decrease")
> (map "cursor-right-alt" "tools-size-increase")))
Back to my terminal session:
Configuration file '/etc/gimp/2.0/controllerrc'
==> File on system created by you or by a script.
==> File also in package provided by package maintainer.
What would you like to do about it ? Your options are:
Y or I : install the package maintainer's version
N or O : keep your currently-installed version
D : show the differences between the versions
Z : start a shell to examine the situation
The default action is to keep your current version.
*** controllerrc (Y/I/N/O/D/Z) [default=N] ? Y
Now the same for /etc/gimp/2.0/gimprc
. I see a large number of changes, but every single one involves a comment, so I see no harm in accepting the new version, so I do that by answering “Y” again.
Next, /etc/gimp/2.0/sessionrc
. By reading the preamble comment, I feel comfortable just accepting the new version, so I do that by answering “Y” again.
/etc/gimp/2.0/sessionrc
# GIMP sessionrc
#
# This file takes session-specific info (that is info, you want to keep
# between two GIMP sessions). You are not supposed to edit it manually, but
# of course you can do. The sessionrc will be entirely rewritten every time
# you quit GIMP. If this file isn't found, defaults are used.
[... session settings that you don't need to see here...]
Next, /etc/gimp/2.0/templaterc
. This appears to have a list of templates of some kind. Since I don’t use Gimp templates (yet?), I see no harm in accepting the new version.
This appears to conclude the configuration-file surgery portion of this installation.
Back To Installing SANE
When installing completes, I see evidence that apt
has installed all the packages, as well as that etckeeper
has committed and pushed the changes to /etc
. Unfortunately, then I see this:
W: Operation was interrupted before it could finish
After reading a few Stack Overflow answers and forum posts, W
means “warning” and the message seems likely harmless. Just to check, I re-install the packages, and this operates without any warnings. I wonder whether, somehow, my exploring the configuration file differences resulted in this warning. I suppose I’ll never know.
All this merely completed step 1 at https://help.ubuntu.com/community/sane.
On to step 2: I connect my scanner by USB, then launch XSane, and XSane detects the scanner as “ScanSnap S510M”! This might just work!
Scanning A Page
I put a page into the scanner, then press the button Acquire preview on XSane. I haven’t changed any configuration settings yet. XSane scans the page and I see a preview image, which doesn’t look great, but shows evidence that I can scan a page. Unfortunately, when I try to press the Scan button on the main XSane window, I get an error: “Failed to start scanner: Invalid argument”.
So I can acquire a preview image, but I can’t scan a page “for real”? What does that even mean?!
When In Doubt, Try It Again
I put the page back into the scanner, then pressed Acquire preview again. After that, I pressed Scan and got a different error telling me that the document feeder was out of pages, so I put the page back into the scanner, then pressed Scan, then I get a scanned document as PDF!
Well… sort of. When I open the PDF, it looks awful. It definitely doesn’t look like the crisp, sharp scans that I’d grown accustomed to when scanning a page on MacOS. Clearly, I have change some settings in order to improve the scan quality, but of course, I don’t know which settings to change, so I get to learn more about scanning quality than I ever wanted to know.
Changing Scanning Settings
I see that the scan resolution is set to 50. I assume that’s 50 dots per inch (DPI). That seems really low. I look at the resulting PDF file, which has a size of 82 kB, and these two observations together seem to match. Let me try 300 DPI, which seems like overkill, but at least would show me a stark difference between the two scans, if it behaved as I expect. I set the scan resolution to 300, then scan again.
When I scan the page at 300 DPI, I notice two things:
- XSane shows me “2550*3300*8 (8.0 MB)”, which I interpret as 2550 pixels by 3300 pixels by 8 bits of color for a total page size of about 8.0 MB. This sounds like overkill and should look much sharper.
- When I scan the page, it takes a lot longer to scan. This seems to correspond to the ScanSnap Manager’s various scanning settings of “Better, Best, Fastest” and so on. This setting seems to correspond to something like “Better” or even “Best”.
The resulting PDF has a size of 2.2 MB, and not 8.0 MB, but that seems like it would look sharper. When I open it in my PDF viewer, it indeed looks very sharp! I imagine that I could now just resample it to lower resolution if I wanted to. Perhaps it has become time to learn how to use Gimp “for real”.
Save The Settings!
Before I play around with the various scan settings to find what I really want, I save the device settings so that I don’t lose them, using the XSane menu Preferences > Settings (Ctrl+P
).
Now I can safely play around with the scanning settings and save them as various profiles. Nice!