Xerox Phaser 3100MFP

From ArchWiki
Revision as of 07:34, 20 September 2010 by Lx (talk | contribs)
Jump to: navigation, search


This article describes setup of Xerox Phaser 3100MFP on Arch Linux x86_64. For this device Xerox provides only 32bit version of drivers and no open-source drivers are available, it makes setup a bit tricky. On x86 you should just install drivers from official site and configure as usual.


Plug in your device and turn it of. You should see something like this:

$ lsusb -v
Bus 001 Device 006: ID 0924:3cef Xerox 
Device Descriptor:
  idVendor           0x0924 Xerox
  idProduct          0x3cef 
  bcdDevice            1.00
  iManufacturer           1 XEROX
  iProduct                2  Phaser 3100MFP
  iSerial                 3 L508104LE514587

Grabbing drivers

It's easy, you can download drivers from official Xerox website using you browser or just do the following:

# mkdir scanner
# mkdir printer
# wget
# wget
# tar -xf XeroxPhaser3100-1.0-linux-2.6Debian-intel.tar.gz -C printer/
# tar -xf XeroxPhaser3100sc-1.0-linux-2.6Debian-intel.tar.gz -C scanner/

On my system i use drivers for Debian, but i think there is really no differences which drivers to download.

Note: I use direct links for drivers and packages downloads, but they may change, so if you can't download something, first what you should is to try to correct link or find new version of package.


OK, first of all we need to install CUPS:

# pacman -S cups

Since 1.4.x version CUPS requires usblp kernel module to be unloaded, so next step is to remove module:

# rmmod usblp

If you don't want to do it any time you boot, just blacklist kernel module: Template:File Execute driver installer and accept licence:

# cd printer
# ./XeroxPhaser3100.install

Start CUPS:

# /etc/rc.d/cups start
:: Starting CUPS Daemon                                                  [DONE]

Now open http://localhost:631 in your browser, add printer, and try to print test page. If it's ok, they you are really lucky, but most likely you see this error message:

/usr/lib/cups/filter/rastertoprinter failed

Identifying printer problem

Well, let's debug a little. Change CUPS debug level Template:File and restart CUPS

# /etc/rc.d/cups restart
:: Stopping CUPS Daemon                                                                                           [DONE] 
:: Starting CUPS Daemon                                                                                           [DONE]

Then restart last job and take a look at error log again, you'll see something like this:

[Job 1] /usr/lib/cups/filter/rastertoprinter: line 14: /usr/lib/cups/filter/rastertoprinterbin: No such file or directory

As you remember, Xerox told us, that drivers are 32bit only, so we have to install necessary libraries. Use this see, what libraries are missed:

# readelf -d  /usr/lib/cups/filter/rastertoprinterbin 

Dynamic section at offset 0x10314 contains 25 entries:
  Tag        Type                         Name/Value
 0x00000001 (NEEDED)                     Shared library: []
 0x00000001 (NEEDED)                     Shared library: []
 0x00000001 (NEEDED)                     Shared library: []
 0x00000001 (NEEDED)                     Shared library: []
 0x00000001 (NEEDED)                     Shared library: []
 0x00000001 (NEEDED)                     Shared library: []

Let's install libraries:

# pacman -S lib32-libcups lib32-libstdc++5 lib32-libtiff lib32-libpng
# ln -s /usr/lib32/ /usr/lib32/
Note: If you driver binary is linked against other libraries you need to install them and create proper symlinks.

For example, when rastertoprinterbin fails to load shared library in CUPS error log it looks like:

[Job 1] /usr/lib/cups/filter/watermarkfilter: error while loading shared libraries: cannot open shared object file: No such file or directory

So now try to print, it should work properly.