My old printer died. It was manufactured in 2006-2007, the height of the rash of bad capacitors, and I'll bet if I tore it apart I might find green slime oozing over the motherboard. (In reality, a capacitor with the end seal bulging out.) The symptom was that it would function mostly normally, including copying, and it would be recognized on the USB bus, but occasionally when you try to print it would make the data transfer hang. This would persist for hours or days, then mysteriously self-heal coincident with the intervention du jour. When the outage extended to a week and the time approached to file taxes, I bought a new printer.
The majority of documents are USA letter size monochrome text. 300 DPI resolution is adequate for this.
We often print web pages with color accents, and would like to reduce this to grayscale, for economy and speed.
We sometimes print photos, e.g. Christmas cards, and for this we would like a choice of 600 or 1200 DPI high quality color.
The old printer does 4 pages/minute (monochrome), which is adequate for us. A faster printer would be a welcome luxury.
This printer is connected by USB to our server, a Koolu with an AMD Geode at 500MHz (equivalent to a modern Intel chip at 300 MHz). Mandatory high resolution is definitely a burden on the server.
The server's operating system is Linux: openSuSE 11.2 currently, with CUPS as the print server software. We are not going to provide Windows on the server. But it is necessary that a Windows client machine be able to print, via the server.
Autonomous wireless print service is not useful.
The scanner is most often used for autonomous copying. The documents are mostly USA letter size, but an important subset is a montage of odd-size items such as checks and their transaction vouchers, or ID cards. This means that a bill feeder for the scanner is acceptable, but the scanner must also be able to take items placed by hand onto the glass.
We need to actually scan documents occasionally. We use SANE as the server and client software, the client being on a trans-net Linux box.
300 DPI is plenty of resolution for monochrome text. For occasionally scanning photos, the choice of a higher resolution is hoped for.
Speed is not an important requirement for the scanner.
Since we have our own FAX software, Hylafax, on the server, an autonomous FAX capability would be wasted. (With Hylafax you scan the document first, then send the image file.)
The first step was to qualify vendors. We prefer orders fulfilled by Amazon, and they sell Brother, Canon, Epson, HP, Lexmark, Samsung, and a very few items from other vendors. My judgment on these vendors went like this:
Brother: While others may have good experiences with this brand, I have never had any experience with it and I'm reluctant to start now.
Canon: Brand name product. Long history in the printer business. Complete product line from desktop to small business printers. I've had good experience with Canon cameras.
Epson: A co-worker pointed out the bad capacitor issue, but after I had picked my printer. Likely Epson and every other vendor have the same problem with capacitors and the same fix for it (disqualify the low-bid vendor). Nonetheless, at the time I felt that buying another instance of a brand that had failed on me was imprudent.
Hewlett-Packard: I'm boycotting HP because, first, I got a scanner
from them once that was completely impossible to support in Linux, and
second, I'm angry about a bitter political campaign in which their former
CEO tried to use her wealth to buy
political office.
Lexmark: This is a non-brand-name product which has a high sales volume. I don't think I'm going to invest my time and energy in it.
Samsung: Ignoring political issues, Samsung gets respect from me, but I have absolutely no experience with their printers, and I'm reluctant to start now.
Conclusion: start by looking at Canon printers supported on Linux.
Openprinting.org has a list of printers supported by Gutenprint and/or Foomatic (the old name). Of the printers sold on Amazon I found entries for:
Brother MFCJ615w Wireless Color Photo Printer ($120): partial user contributed PPD file.
Canon PIXMA MP250 Inkjet Photo All-in-one ($68): User contributed (hacked) PPD file in conjunction with Canon's cnijfilter-mp250series driver package. Works perfectly up to 4800x1200 DPI, so he says.
Canon PIXMA MP480 All-in-one Photo Printer ($70): similar driver issues to the MP250. This model is old (2002); the MP495 replaces it (2010).
HP Deskjet 3050, Deskjet 1055, Photosmart C4795 ($59 - $79): No Linux drivers known.
Of these, the Canon MP495 looks to be the most promising, if the driver issue can be dealt with.
Characteristics of this printer:
Sold by Amazon itself, price $60. First sold at Amazon: 2010-07-20.
Print resolution: up to 4800x1200 DPI, minimum 2e-12 liter drops. Scan resolution up to 1200x2400 DPI.
Printing speed: 8.8 page/min for monochrome text, 41 secs for a 4x6 borderless photo, on particular test images.
Can print borderless 4x6in photos (and possibly borderless 8.5x11in as well?)
Ink cartridges: black, color. High capacity variants are available.
Sales pack includes PG-210 (black ink), CL-211 (color), PP-201 (sample photo paper), power cord, USB cable (missing from other vendors' offerings).
Hardware extensions:
Physical size: 13.2 x 17.8 x 6in, 12.2lb. Fits in our niche; available space is 15.5 x 19 x 9in.
The exit door serves as a paper tray; it clanks open automatically if you forget to open it.
It is often bought and reviewed. Reviewers generally like it. 51 x 5 stars, 53 x 4 stars, 21 lower.
Ink consumption (from Eric Olstad's review): The E.U. site has numbers: 220 text pages from the standard black cartridge and 401 pages from high capacity. 86 photos (4x6in borderless?) per color cartridge. The latter works out to $0.19 per photo. Jimc says: both the cartridge life and the printing speed depend on what's printed. Also, for complex or high-resolution images the CPU can be the bottleneck. We hope without conviction that the standard test procedures alluded to are reasonable.
I found this HOWTO: Get the Canon PIXMA MP495 Working in Ubuntu 10.10 (dated 2010-10-21 by Modsybus). Topics in this HOWTO:
How to get it to connect wirelessly. We aren't doing wireless.
http://support-au.canon.com.au/contents/AU/EN/0100301501.html, Canon Australia's download page for the Debian version of the driver, cnijfilter-mp495series-3.40-1-deb.tar.gz They also have RPMs and manuals.
Driver includes an install script. Configure for network or USB, not both.
Hand-edit /etc/cups/ppd/Canon-MP495.ppd which is set for 600dpi. Make same changes in /usr/share/ppd/canonmp495.ppd Resolution choice list: 600x600, 1200x1200, 2400x2400, 2400x4800, 2400x9600 He sets the default to 4800. Jimc says: this is going to put the host CPU to a lot of work, and the wireless net will have to transfer all those bytes. This resolution should only be used for the highest quality photos.
http://support-au.canon.com.au/contents/AU/EN/0100302801.html to snarf scangearmp-mp495series-1.60-1-deb.tar.gz This is the scanner driver. You need to execute scangearmp to use the scanner (a daemon?)
So I ordered the Canon PIXMA MP495.
On the Canon Australia site I found the advertised Debian packages but I could not find RPM packages for the MP495, so I installed the RPMs for the MP490. Big mistake: the software knows the model number for which it was compiled, and will not recognize the existence of other models. When I eventually uninstalled, a lingering item gave me a lot of grief -- CUPS copies the PPD file into /etc/cups/ppd under the name of the print queue. The package manager does not know to remove this file, and I forgot that it would have to be replaced.
On the Canon USA site there is no Linux support at all (for this printer). Hiss, boo! It looks like Firefox is required on this site; Opera's Javascript got stuck.
Trying on the European Union site: Canon Europe. Having seen what the MP490 driver did, I expected to have to hack the spec file and compile the driver myself. Here is the path through the maze to obtain the packages:
Open the Canon Europe front page.
Go to Download Software (shortcut in left nav bar) - "For You" / Country = United Kingdom; Product = Multifunction; Model = MP495 / Go.
This is the product page for the MP495. Click on Downloads / Software (list of software opens up, Javascript required).
Operating System = Linux ; Language = English / Search.
This is the download page. Download both the Linux IJ scanner and printer. I did download both the package and source for each, but I did not actually use the precompiled packages, which were for Red Hat, so I could have omitted them.
For each of them, click on the link, accept the license terms,
and hit download
.
This printer driver gives Linux support for a product family including the ip4800 mg5100 mg5200 mg6100 mg8100 mp250 mp280 mp495 . Model names are specified in lower case. The procedure should be essentially identical for any of these, but the resulting program is fixated on the model number for which it was compiled and will not touch any other one.
While the precompiled RPMs for Red Hat should be fairly broadly applicable, there are issues specific to OpenSuSE 11.2 and to my particular configuration, so I needed to hack the spec file. In theory you don't need to un-tar the sources; the rpmbuild command will take care of that. However, you do need to see the README file and to work on the spec file, so pick a containing directory (I created /home/src/canon-printer), rename the downloaded tar file (because otherwise you would overwrite it later) and do (adjust version numbers according to possible future improvements):
tar xzf cnijfilter-source-3.40-1.tar.gz.orig
cd cnijfilter-source-3.40-1
Now look in the README file for the table of model names and model IDs. The mp495 is represented by ID 369.
I also needed these hacks in the spec file, cnijfilter-common.spec in the toplevel directory. Download my patch to alter the spec file.
They commented out the BuildRequires line and omitted several important devel packages, which I added. Without these packages the source code cannot compile because header files are missing.
BuildRequires: cups-devel popt-devel libxml2-devel gtk-devel libtiff-devel libpng-devel
Installing the driver (about 5 Mbytes) in /usr/local really messes up my package management, so I changed the prefix to /usr. Typical users could probably omit this hack.
%define _prefix /usr
The package title was lameass; years later when I ask what is
this package doing on my machine
I would have to guess what it
was for.
Summary: Canon Inkjet Printer Driver Ver.%{VERSION} for Linux
To apply the patch, assuming you're in the directory containing the spec file:
patch -p0 < cnijfilter-common.spec.pat
My Bahasa Indonesia is kind of rusty but I was able to fix a message translation file that wouldn't compile. Here's the patch to fix this, called id.po.pat . Apply it with the same command line as the previous one, being in the toplevel source directory as before.
Now to compile the package, change to the containing directory, create a tar file with the hacked files, and use rpmbuild to compile it. Change version numbers to match the actual version that you downloaded. Specify the model and model number for the printer you actually have. You will probably want to capture the output, which is rather long; I have included a suitable redirection using Bourne shell syntax (modify if you use C-shell). On my Koolu (AMD Geode at 500MHz, serving streaming media at the time) the compilation took 50 minutes; it would go a lot faster on an Intel desktop power pig, but this program is large. In the rpmbuild command your web browser will probably wrap it; don't be faked out; it belongs on one line.
cd ..
tar czf cnijfilter-source-3.40-1.tar.gz cnijfilter-source-3.40-1
rpmbuild -tb cnijfilter-source-3.40-1.tar.gz --define="MODEL mp495" --define="MODEL_NUM 369" --with build_common_package > /tmp/cnijfilter.make.log 2>&1
The result ends up in:
Install the packages by this RPM command line, or use your particular package management method:
rpm -U -v /usr/src/packages/RPMS/i586/cnijfilter-mp495series-3.40-1.i586.rpm /usr/src/packages/RPMS/i586/cnijfilter-common-3.40-1.i586.rpm
A short list showing where it installs files:
The source directory (and the precompiled packages) includes an installation script: scripts/install.sh . I executed it to register the printer with CUPS, but it was not able to recognize the printer, probably because of Australian MP490 files. Give it a try, but here is the procedure I actually followed.
Connect the USB cable and turn on the printer. The device file must exist before the install script (or hacks shown below) can find the printer.
Look in /proc/modules and verify that the usblp module is there. Look in /var/log/syslog (or wherever messages of this kind come out on your system) and verify that the USB setup messages are reasonable. I see the following:
Apr 12 17:03:05 jacinth kernel: usb 1-2.3: new high speed USB device using ehci_hcd and address 15 Apr 12 17:03:05 jacinth kernel: usb 1-2.3: New USB device found, idVendor=04a9, idProduct=1747 Apr 12 17:03:05 jacinth kernel: usb 1-2.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3 Apr 12 17:03:05 jacinth kernel: usb 1-2.3: Product: MP495 series Apr 12 17:03:05 jacinth kernel: usb 1-2.3: Manufacturer: Canon Apr 12 17:03:05 jacinth kernel: usb 1-2.3: SerialNumber: 3095E1 Apr 12 17:03:05 jacinth kernel: usb 1-2.3: configuration #1 chosen from 1 choice Apr 12 17:03:06 jacinth kernel: usblp0: USB Bidirectional printer dev 15 if 1 alt 0 proto 2 vid 0x04A9 pid 0x1747
Note the Manufacturer
and Product
; you'll need it
later. (Case sensitive.) Alternatively, do lsusb -v | less
and search for the word Canon
. Note the values (text only, not
the leading digit) for iManufacturer and iProduct. If there are
several printers, make sure to get the correct one; use iSerial
to distinguish identical printers.
Identify your printer: ls /sys/class/usb
. You should see
lp0, lp1, etc., telling you the minor device number of your printer.
If there are several printers, dig around in /sys. I was hoping
to find the serial number, but I didn't get a good procedure to
identify which of multiple printers is the right one.
Alternatively, the last line of the syslog output identifies the
printer as usblp0 etc.
Verify that the device file(s) exist. You should find /dev/usb/lp0 and a symlink to it called /dev/usblp0 (substitute the correct minor number).
Now decide which backend you are going to use, and create an appropriate device URI for it. Backends are found in /usr/lib/cups/backend and the first word of the device URI tells which program CUPS should use. Here are the choices; they all work, but have different idiosyncracies.
usb -- URI is usb://Canon/MP495%20series -- These are the iManufacturer and iProduct values discovered previously, case sensitive, and URL encoded, i.e. with blanks changed to %20. The usb backend is best if there are several printers or if some evil influence makes the printer's minor number change randomly. I haven't figured out how to distinguish two otherwise identical printers.
canon -- URI is canon:/dev/usb/lp0 , i.e. the device filename
after canon:
. If the minor number changes randomly this
will work poorly. The canon backend is part of the gutenprint
package. I don't know what special features it has that make it
a better choice than the generic USB backend.
cnijusb -- URI is cnijusb:/dev/usb/lp0 , similar to the canon backend. This is part of the cnijfilter-common package. Likely it provides even more unknown special features. Actually I think the only magic is that it spawns the lgmonmp495 program which monitors the printer. But this program doesn't exit when the job is over, preventing CUPS from going on to the next job.
The device URI apparently is provided as argv[0], which could not be faked by a normal shell. Perl can do it, though.
If the device URI does not begin cnijusb:/dev
,
the program reports Illegal backend
and exits.
It is possible in the device URI to follow the device name with ?options (using the syntax of a query-string). However, I don't see any place where they are used.
It looks like lgmonmp495 collects information returning from the printer about the ink level, paper jams, etc.
If the user executes cngpijmonmp495 MP495
, it will
connect to lgmonmp495, receive status reports, and show them
on a GUI.
Since I had trouble with the lgmonmp495 monitor program failing to exit, I used the USB backend, and didn't try out the cngpijmonmp495 status display GUI.
If you execute one of the backends with no command line arguments,
it prints out line(s) giving the protocol family (direct
for
USB and parallel printers), the device URI, the product name, and
a description. This description is what appears in CUPS' web GUI
for installing printers. lpinfo -v
will do this for every
backend. (Be patient, several of them search the local net for
printers.)
It would be a good idea to hack the provided PPD file, which is
installed as /usr/share/cups/model/canonmp495.ppd . I have a
patch
to improve
this file, plus the
complete hacked PPD file. The hacks I made were:
I added 300, 1200 and 2400 DPI resolutions, following the procedure described in the HOWTO by Modsybus (see above). I left the default resolution alone.
The original file offers only a color model of RGB. I copied the color model section from another Canon printer. Specifically I wanted the Grayscale color model. (However, this model is not honored, at least not yet.)
To register the new printer you can use the web GUI, or the
lpadmin command, which is a lot more convenient if you're hacking.
You can set both the device URI and the PPD file at once, but I'm
showing them separately here. lp2
is the queue name of my
printer; replace with yours. For the PPD file, if you've renamed
it for hacking purposes, be sure to use that filename.
lpadmin -p lp2 -v usb://Canon/MP495%20series
lpadmin -p lp2 -m /usr/share/cups/model/canonmp495.ppd
You will want to use the web GUI's Set Printer Options
dialog. I altered:
There is one confusing feature
: after a minute or two of non-use,
the printer enters nap
state, with only the power button's lamp on.
This saves a lot of power, and the printer will wake automatically when the
host sends a print job. But pressing the power button wakes the printer.
If you want to turn off power, you need to wake it first,, then
press the power button again, and it will turn off in a few seconds.
Similarly, if you want to make an autonomous copy you need to wake it first.
How much power does the printer draw?
Watts | Status |
---|---|
0 | Power off |
7 - 14 | Initialization |
5 | Ready (not printing) |
14 | Printing |
0 | Nap |
It takes 21 seconds for power-on initialization. My test page, which was pretty minimal, took 10 seconds to print. The advertised speed of 8.8 pages per minute corresponds to 7 seconds per page, but this was at 600 DPI, and the CPU (Koolu, AMD Geode at 500MHz) could have been the bottleneck.
As for resolution, I compared the same document printed at 300 DPI and 600 DPI. I could just barely see that the glyphs were slightly crisper and curved edges were slightly less ragged at the higher resolution. If you have the CPU power (and most non-tree-huggers will), it's probably worthwhile to go with the default 600 DPI, but 300 DPI is perfectly readable and is completely satisfactory for printing tax forms and the like. For photo printing, on the other hand, you will certainly want to invest in the higher resolution, or even 1200 DPI.
I'm using the SANE package for scanning. Many (possibly all?) of the Canon
PIXMA scanners are served by the pixma
backend found as
/usr/lib/sane/libsane-pixma.so.1.0.22 . While other backends can be induced to
work with an arbitrary product by a line such as usb 0x04a9 0x1747
(USB
vendor and product codes for MP495) in the configuration file (here,
/etc/sane.d/pixma.conf), the pixma backend only looks for wireless network
printers here and only if the normal broadcast scan is ineffective. Therefore
I had to recompile the backend.
I obtained the source RPM for the sane-backends package from the SuSE Build Service. At this writing the version for OpenSuSE 11.2 is sane-backends-1.0.22-10.2.src.rpm . It should be possible to hack contained files and reassemble an acceptable (but unsigned) source RPM, but I used a hybrid approach of installing the source RPM, unpacking the source tar file, generating a new patch, and hacking the spec file to apply it. Adjust version numbers according to what you actually have.
First install the srpm: rpm -i sane-backends-1.0.22-10.2.src.rpm
Pick a containing directory for the source files to be hacked: mkdir containing_dir; cd containing_dir
tar xjf /usr/src/packages/SOURCES/sane-backends-1.0.22.tar.bz2
cd sane-backends-1.0.22/backend
In the backend directory look for pixma* . There are three device-specific files: pixma_mp150.c pixma_mp730.c pixma_mp750.c . The first of these serves the most product variants. Since the MP495 is an upgraded version of the MP480, I picked the file mentioning the MP480: pixma_mp150.c . Make a copy of it now called pixma_mp150.c.orig . You will need it to create a patch file. I have a pre-made patch file to add the MP495, which goes in /usr/src/packages/SOURCES/add-mp495.patch , but you will have to use the procedure below if you are adding a different printer-scanner model.
Near the beginning of the file you will find PID codes defined; these are
the USB product codes as integers (invariably hex literals). Use lsusb
to discover the code for your scanner. The vendor code is always 0x04a9 for
Canon. Insert this new one:
#define MP495_PID 0x1747
At the end you will find a table of type pixma_config_t. The rows are macros like this, which is what you insert for the MP495 (with ending comma):
DEVICE ("Canon PIXMA MP495", "MP495", MP495_PID, 1200, 638, 877, PIXMA_CAP_CIS),
The fields are:
Finally, create the patch file. You need to be in the toplevel directory.
cd ..
diff -u backend/pixma_mp150.c.orig backend/pixma_mp150.c > /usr/src/packages/SOURCES/add-mp495.patch
Now hack the spec file, /usr/src/packages/SPECS/sane-backends.spec Here is my complete spec file for version 1.0.22-10.2 (incrementing version to 1.0.22-10.3), but beware, the versions must match exactly and if you have a different version you should hack the spec file that came with your source RPM.
Look for Release: and increment the eentsy release version number. This is needed so when you install the finished product, the package manager will prefer it over the distro's version.
Look for the patch declarations. For me, Patch17 was an unoccupied number whereas Patch10 was the highest numbered one actually used; many others were commented out because they had been merged into the upstream source. Add the following:
# Patch17 adds support for the Canon PIXMA MP495 (by jimc)
Patch17: add-mp495.patch
Look for where the patches are actually applied; in my case I looked for %patch10 (lower case). Then insert:
# Patch17 adds support for the Canon PIXMA MP495 (by jimc)
%patch17
To build the package:
rpmbuild -bb /usr/src/packages/SPECS/sane-backends.spec> /tmp/make.log 2>&1
Be very patient; it thrashes for a long time building a description file for the HP scanners that you don't have. The package comes out in /usr/src/packages/RPMS/i586/sane-backends-1.0.22-10.3.i586.rpm (or substitute x86_64, 2 places, if that's your architecture). Check the log file; almost at the end it gives the filename(s) where it's writing the RPMs. Install the package by
rpm -U -v /usr/src/packages/RPMS/i586/sane-backends-1.0.22-10.3.i586.rpm(-U means to remove the unhacked version, if installed. The reason you increment the eentsy version number is to make rpm prefer your newer version.)
On the server you need the sane-backends package, and xsane (plus sane-backends) on the client, which could be the same or a different host. KDE's kooka, and xscanimage, can also use a SANE server. I'm describing a network connection for the client, even if on localhost, to keep the description simpler. You first need to set up the infrastructure for SANE:
/etc/services needs to have the SANE ports assigned. I inserted these lines. Order is not important but keeping the items in order helps the sysop to maintain the file. (Server and client.)
sane-port 6566/tcp # SANE Control Port sane-port 6566/udp # SANE Control Port sane-data 6567/tcp # SANE Data Port sane-data 6567/udp # SANE Data Port
xinetd (or some substitute) needs to be running on the server and
needs a configuration file like this. As with most xinetd service
files I'm naming it after the port: /etc/xinetd.d/sane-port . In my
/etc/xinetd.conf I set log options and only_from
(for security)
in the defaults section; if you don't do this you will need to put such
items into the individual configuration file.
# description: The saned provides scanner service via the network. \ # Applications like kooka, xsane or xscanimage can use the remote \ # scanner. service sane-port { socket_type = stream port = 6566 wait = no user = root group = root server = /usr/sbin/saned disable = no }
/etc/sane.d/net.conf lists the host(s) which have physical
scanners. localhost
may be listed on the host with the
scanner, though if you list its own name you can use the same file
on the server as you have on the clients.
The server also needs /etc/sane.d/saned.conf which governs which remote clients (by IP address) may use the scanner. The non-commented lines are hostnames, IP addresses, or subnets using CIDR notation. Addresses may be IPv4 (four dotted decimals) or IPv6 (in square brackets). My file says (excluding comments) (IP addresses changed to protect the guilty):
192.168.0.0/24 [fe80::]/64
If you have a firewall you need to let the two SANE ports through
(on the server), and you also need to load module nf_conntrack_sane
(client and server), because SANE makes connections on generic
ports and the firewall would reject them otherwise. (The firewall
needs to accept related
connections.)
The official way to set up a new scanner on SANE goes like this. The programs mentioned are from the sane-backends package.
Execute sane-find-scanner (no arguments) on the server. See its man page for details. It does find my scanner. But this is only to see if it's talking to the USB.
Execute scanimage -L on the server first. This determines if any backend is willing to serve the scanner. The network backend does a broadcast on the net, so it takes a few seconds. If all the above hacking went well, it will recognize the scanner, reporting the SANE device name (in quotes) and a description.
If the client is a different host, execute scanimage -L there too. If your network and firewall are cooperating, it will report the scanner with the network variant of the device name.
If you have gotten this far, you are ready to scan something.
This is a very quick overview of scanning with xsane. There are lots of features not covered, but this will get you started.
Execute xsane from your desktop's menu (in the Graphics section) or from a command line. No argument is needed if there is only one scanner. If there are several, presumably it will let you choose, but I've never used it in this mode. To preselect a particular scanner give its network device name as the command line argument to xsane.
Once it identifies the scanner it will open several windows.
The one with the Xsane logo is for a preview; the one whose title
is xsane
is the main control window. In the latter make these
settings:
Top row, right side: scan disposition. The most useful choices
are Save
or Viewer
. Save
saves the result
directly to a file; Viewer
displays it and can do minor editing,
before you save.
Second row: Filename. You can type a name in the entry widget, or you can use the file browser accessible by clicking the disc icon at the left end.
Third row, right side: file type (format). Click on it to see the available formats, but normally the type is set implicitly from the extension of the filename.
Seventh row, icon of a cloud of dots: resolution. Do not overdo the resolution except for really high quality artwork, because the files tend to be large. ITU T.4 includes 300 DPI as one of the higher native FAX resolutions (100 or 200 DPI are alternatives.)
Now shift over to the preview window and hit Acquire Preview
.
Low resolution is used and it comes in pretty quickly, under 10 secs.
The whole scannable area is shown.
Optional but recommended: Hold down the left mouse button on one corner of the payload region, and drag out a rectangle to the opposite corner. There are grips that appear when the mouse crosses the outline, so you can adjust the edges. Only the content inside the rectangle will be included in the final image.
Back in the main window, hit Scan
. In the box Receiving
RGB Data
a progress bar will go across, once the client has
set up the connection to the server. If you selected a disposition
of Save
, the image will be saved in the preselected filename.
This completes the scanning. Unless you have another image to do, close xsane (main window File menu, or window manager close signal in the main window).