TWAIN SANE



TWAIN, WIA, ISIS and SANE, are all scanning drivers that support acquiring physical images from scanners and storing the digital images on a computer. Although they are trying to achieve the same task basically, a popularity search shows that TWAIN is leading the game. TWAIN, WIA, ISIS and SANE, are all scanning drivers that support acquiring physical images from scanners and storing the digital images on a computer. Although they are trying to achieve the same task basically, a popularity research I did recently shows that TWAIN is leading in the game (you can open an interactive view by clicking the image).

Sharing a scanner over the network using SANE isfairly straightforward. Here's how I shared a scanner on a server (runningDebian jessie) with a client (running Ubuntu trusty).

The packages you need on both the client and the server are:

You should check whether or your scanner issupported by the latest stable release orby thelatest development version.

In my case, I needed to get aCanon LiDE 220working so I had to grab the libsane 1.0.25+git20150528-1 package from Debian experimental.

Once you have SANE installed, you can test it out locally to confirm that itdetects your scanner:

Note that you may need to be root for this to work. We'll fix that inthe next section.

This should give you output similar to this:

If that doesn't work, make sure that the scanner is actually detected by theUSB stack:

and that its USB ID shows up in the SANE backend it needs:

To do a test scan, simply run:

Twain sane windows

and then take a look at the (greyscale) image it produced (test.pnm).

In order for users to be able to see the scanner, they will need to be inthe scanner group:

with the second one being for remote users.

Next, you'll need to put this in /etc/udev/rules.d/55-libsane.rules:

and then restart udev:

That 04a9 ID is the first part of what you saw in lsusb, but you canalso see it in the output of sane-find-scanner.

Finally, test the scanner as your normal user:

to confirm that everything is working.

With the scanner working locally, it's time to expose it to network clientsby adding the client IP addresses to /etc/sane.d/saned.conf:

and then opening the appropriate ports on your firewall(typically /etc/network/iptables in Debian):

Then you need to ensure that the SANE server is running by setting thefollowing in /etc/default/saned:

if you're using the sysv init system, or by running this command:

if using systemd.

I actually had to reboot to make saned visible to systemd, so if you stillrun into these errors:

you're probably just one reboot away from getting it to work.

On the client, all you need to do is add the following to/etc/sane.d/net.conf:

where myserver is the hostname or IP address of the server running saned.

If you have a firewall runnning on the client, make sure you allowSANE traffic from the server:

With everything in place, you should be able to see the scanner from theclient computer:

and successfully perform a test scan using this command:

If you see the following error in your logs (systemctl status saned.socket):

Twain Sane Drivers

then you can work around this bug in the systemdunit byoverriding the systemd unit that comes with thepackage:

then replace:

with:

before finally restarting the service:

Twain sane mojave

Sharing a scanner over the network using SANE isfairly straightforward. Here's how I shared a scanner on a server (runningDebian jessie) with a client (running Ubuntu trusty).

The packages you need on both the client and the server are:

You should check whether or your scanner issupported by the latest stable release orby thelatest development version.

In my case, I needed to get aCanon LiDE 220working so I had to grab the libsane 1.0.25+git20150528-1 package from Debian experimental.

Once you have SANE installed, you can test it out locally to confirm that itdetects your scanner:

Twain sane download

Note that you may need to be root for this to work. We'll fix that inthe next section.

This should give you output similar to this:

If that doesn't work, make sure that the scanner is actually detected by theUSB stack:

and that its USB ID shows up in the SANE backend it needs:

To do a test scan, simply run:

and then take a look at the (greyscale) image it produced (test.pnm).

In order for users to be able to see the scanner, they will need to be inthe scanner group:

with the second one being for remote users.

Next, you'll need to put this in /etc/udev/rules.d/55-libsane.rules:

and then restart udev:

That 04a9 ID is the first part of what you saw in lsusb, but you canalso see it in the output of sane-find-scanner.

Finally, test the scanner as your normal user:

to confirm that everything is working.

With the scanner working locally, it's time to expose it to network clientsby adding the client IP addresses to /etc/sane.d/saned.conf:

and then opening the appropriate ports on your firewall(typically /etc/network/iptables in Debian):

Then you need to ensure that the SANE server is running by setting thefollowing in /etc/default/saned:

if you're using the sysv init system, or by running this command:

if using systemd.

Twain sane windows

I actually had to reboot to make saned visible to systemd, so if you stillrun into these errors:

you're probably just one reboot away from getting it to work.

On the client, all you need to do is add the following to/etc/sane.d/net.conf:

where myserver is the hostname or IP address of the server running saned.

If you have a firewall runnning on the client, make sure you allowSANE traffic from the server:

Twain Vs Sane

With everything in place, you should be able to see the scanner from theclient computer:

and successfully perform a test scan using this command:

If you see the following error in your logs (systemctl status saned.socket):

then you can work around this bug in the systemdunit byoverriding the systemd unit that comes with thepackage:

then replace:

Sane twain windows 10

with:

Twain Sane Download

before finally restarting the service: