I tried to escape from the Windows dependency problem. Wishing that all my devices can work without problem with Linux. But one of the greatest problems is that Canon PIXMA iP1600 does not have driver for Linux, except using iP2200 which is compatible.
Previously, I solved this problem with the virtualisation. This work perfectly to do my printing. However, it is still depending on Windows. Without Windows, the virtualisation is almost useless.
Looking for several internet solutions, I found that iP2200 driver is mentioned to be compatible with iP1600. I tried it before, but it didn’t work in Arch Linux. Furthermore, the Linux driver for iP2200 is in the RPM (Red Hat Package Manager) format. As a result, I decided to use virtualisation with Linux distro based on Red Hat and installing iP2200 driver, hoping that the driver will work without error.
RPM based Linux distro
There are several RPM based Linux distros. Based on lifehacker.com, I chose OpenSUSE instead of Fedora, though Fedora is more popular than OpenSUSE. This is because Fedora is cutting edge distro, and support for free and open source software, thus no proprietary license is supported. Therefore, I chose OpenSUSE which I think it is more stable and general.
Booted into OpenSUSE through VirtualBox, then I downloaded the driver. When I wanted to install it, it showed some errors with missing package dependency, “libxml”. I tried to search “libxml” in the repository, it was not found in OpenSUSE. This made me feel a little disappointed to OpenSUSE.
Then I was looking for other repositories which may contain “libxml”. I expected there is something like Arch Linux AUR. Yet I found none, maybe I am too new to OpenSUSE, don’t know how to get the old library.
Back to Arch Linux
As a result, I tried to solve it again with Arch Linux. Based on some forums (such as this one), in order to install iP2200 driver, there are two packages needed: cnijfilter-common and cnijfilter-ip2200. cnijfilter-common can be found in AUR. But there is no cnijfilter-ip2200. So, I made one.
However, after the installation (not the current one in the AUR), I failed to print anything as usual. This is because I didn’t have libxml. Yet it can be found in AUR as well. After installing libxml, the printer still could not work. So, I think there might be some missing libraries like libxml. So, I used the following commands to find out what are those libraries.
for i in `pacman -Ql cnijfilter-ip2200|cut -d ' ' -f 2|grep bin` ; do ldd "$i" |grep 'not found' ; done
(This is why I like command-line.) This command lets me check what shared objects (shared libraries) which are not found. By this, I added all the packages that are missing into the PKGBUILD dependencies.
Re-installed the package, and tried to print again. Yeah! Now it can print.
Now, I can do the Canon iP1600 printing using Linux without any Windows. But it is not yet perfect. The Linux driver of iP2200 does not have grayscale printing. I failed to print the the light colour document. It is always black and white.
I tried adding the grayscale option based on other PPD files, yet it does not work also. Though I can get the option to choose grayscale printing after modifying PPD, the result is still the same.
May be I will try using printuiip2200 command next time. But I don’t think it will work well.