Fuji Xerox Printers on 64 bit linux

Printing and Linux is (at least to me) often like an Office Space frustration. I was pleasantly surprised when the printer at work (Fuji Xerox ApeosPort-IV C2270 - a name of pure marketing genius) worked with barely any pain on Ubuntu 13.10 64 bit.

When I upgraded to 14.04 it was a sad story that the old drivers I was using no longer worked.

Here is my recollection of the rabbit-hole and eventual compromise/solution.

1) Drivers come from
http://www.fujixerox.co.jp/download/apeosport/download/c4300series/linux/
at the bottom of the page work - they’re a .rpm file but will open with archive manager and can be extracted to the appropriate locations easily (you’ll have to be root). The main thing is to get the filters in the right spot.

2) Add the printer via the settings panel, but manually select the ppd file just extracted rather than automatically look for drivers.

3) Print something! On Ubuntu 13.10 it worked, but on 14.04 it failed. The relevant lines from the error log at /var/log/cups/error_log are

Fuji-Xerox-C2270: error while loading shared libraries: libcups.so.2: cannot open shared object file: No such file or directory

PID 2360 (/usr/lib/cups/filter/pstopdffx) stopped with status 127 (File too large)

printer-state-message="Filter failed"

Job stopped due to filter errors; please consult the error_log file for details.

The problem seemed to lie with the filter pstopdffx which is one of the extracted files from the .rpm

4) Search the web for libcups.so and discover something about needing 32 bit fallback.

http://ubuntuforums.org/showthread.php?p=10540039

“…libcups.so.2 is a 32 bit library. So one needs to install ia32-libs for the 32 bits library that are essential for a 64 bit machine.”

But the package ia32-libs is no longer available for Ubuntu 14.04

http://ubuntuforums.org/showthread.php?t=2183444

“ia32-libs was removed in 13.10. ia32-libs pulled many 32-bit libs on a otherwise 64-bit system and was a huge hack.”

5) There’s a way to find print shared library dependencies using the command ldd.

I ran it on the printer filter in question with ldd /usr/lib/cups/filter/pstopdffx and got

linux-gate.so.1 =>  (0xf772c000)
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf76cc000)
libcups.so.2 => not found
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf751c000)
/lib/ld-linux.so.2 (0xf772d000)

6) The only thing of real interest there was libcups not found. I tried installing libcups2 - I just thought ‘why not see what packages start with libcups’ and came across libcups2 package which was not installed.

However this did not fix the problem. Also, it should be said, this is not a good way to solve problems. Curiosity is great but random installing is not.

7) Ongoing and waiting… I suspect without specific 64 bit drivers from Step 1 this will not work. I did come across this post about running 32 bit binaries in 64 bit environments but did not follow it - http://askubuntu.com/questions/454253/64bit-ubuntu-14-04-running-32bit-binaries

8) I installed 32 bit Ubuntu 14.04 in a virtualbox virtual machine (inside my 64 bit Ubuntu). Following step 1 and 2 inside the VM and printing works as expected.

Conclusion #

The printer does not work in 64 bit Ubuntu 14.04 because 32 bit fallback has been removed. The way to get it working short-term is to install a 32 bit Ubuntu VM and print from the VM.

 
11
Kudos
 
11
Kudos

Now read this

Cross-compiling to aarch64

Some info about cross-compiling libsodium and safe_vault from x64 (ubuntu 16.04 64 bit) to aarch64 (pine64 soc running debian 64 bit) Install dependencies # $ sudo apt-get install gcc-aarch64-linux-gnu Compile libsodium (v1.0.9) # No... Continue →