So for Christmas I bought myself Unclutter Your Life in One Week by Erin Doland of unclutterer.com. One of the things she suggests in the book is to create a personal digital library of documents, scanning in (most of) the papers you’ve got lying around and shredding and recycling the paper copies. Actually, I think it’s a pretty awesome idea – I had a neatly-bundled, chronologically-ordered stack of SprintPCS phone bills from 1999. I’m now on my 3rd phone carrier since Sprint – so why was I letting that useless junk take up my space?
One complication Erin’s advice introduces is that scanning a couple filing cabinets’ worth of papers you do want to keep some record of with a typical flatbed scanner is time-consuming and not exactly fun. Erin suggests using an ADF (Auto-Document Feeder) scanner like the Fujitsu ScanSnap – problem is, for $1100+ I’d be substantially towards my way at buying another car. Does the ScanSnap work in Linux? No idea.
Then I started to notice that many $200 and under multi-function inkjet printers had ADFs built-in. I have a non-color laser jet which is really great, but I can’t print in color or print photos or do crafts or any of that sort of thing. Also, it is not a network printer, wired or wireless, so it is in my living room so the USB cable is reachable. The Canon MX860 seemed a good answer to all of this, and searching around on the internet seemed to indicate a basic level of Linux compatibility, so I decided to give it a shot.
When I got my MX860, I plugged its power cord in and turned it on. Nothing. I went through the menu, saw it has a wireless access point called BJNPSETUP, and tried to connect to it – nothing. I was a little afraid that I needed a Windows or Mac to run a setup program just to tell the printer my access point’s name and key.
Now I don’t own a single Windows or Mac machine. I have an old Mac G3, the smooth, forgiving curves of which cradle my feet under my desk at work (I think it was last booted in 2006.) I didn’t want to have to bring the MX860 (a behemoth compared to my laser printer) into work just to do the initial setup The instructions that come with the MX860 are non-existent for Linux, but I think it’s equal-opportunity suckage because the instructions that come for Windows and Mac are really terrible.
No worries, though. You don’t need a Mac or Windows to complete initial setup of the MX860. But you will need an ethernet cable:
Canon MX860 Initial Setup
- Connect your MX860 directly to your wireless access point via an ethernet cable. If the MX860’s front ‘Canon’ logo is facing you, the ethernet jack is in the rear on the right side – there’s a white pull tab in it.
- Turn the MX860 on. Once it boots up:
- hit the ‘Menu’ button
- navigate 3 icons over using the right arrow button to the ‘Settings’ icon and hit the ‘OK’ button
- now navigate 2 icons ove rusing the right arrow button to the ‘Device Settings’ icon and hit ‘OK’
- Navigate four items down to select ‘LAN Settings’ and hit ‘OK’
- Select the first item in the next menu, ‘Change WLAN/LAN’, and hit ‘OK’
- Turn on the wired ethernet by selecting the second button ‘Wired LAN Acive’ on the screen.
- Turn the MX860 off and back on again. You might not need to, but it’s a reliable way to get the MX860 to pick up an IP address.
- Now that the MX860 is back on, you need to get the IP address:
- hit the ‘Menu’ button
- select the ‘Settings’ icon and hit the ‘OK’ button
- select the ‘Device Settings’ icon and hit ‘OK’
- select ‘LAN Settings’ and hit ‘OK’
- select ‘LAN Settings List’ and hit ‘OK’. The IP address of the MX860 should be listed there – write it down.
- Go to the IP address in your browser’s URL bar. You’ll see a ‘Network Configuration’ UI as shown below:
- Click the ‘Advanced’ button in the lower right of the screen. Go to the ‘Wireless LAN Setting’ button on the left navbar and fill out the details of your wireless network:
- If you have a MAC address filter on your access point, make sure you add the MX860’s (WIRELESS, not wired) mac addy to your mac filter. I was halfway there – but by accident copied down the wired MAC instead of the wireless MAC and had a very confusing 10-15 minutes following that.
- Go back through the LAN settings menu as detailed above, and turn the wireless LAN on.
- Turn the MX860 off, then back on. Check your access point’s DHCP clients list – you should see it there.
- On your Fedora machine, download the Canon linux drivers from Canon EU – download the RPM version labeled ‘Printer Driver for Linux (rpm)’.
- Install the drivers. You’ll get a tar.gz, so in a terminal in the directory you downloaded it to, run tar -zxvf cnijfilter-mx860series-3.10-1-i386-rpm.tar.gz. Then, cd into the cnijfilter* directory, and run the install.sh script inside by running ./install.sh.
- The MX860 has a USB cable. Plug that USB cable into your Fedora machine. The drivers will automatically be detected (you’ll see a pop-up message telling you as much.)
- In a terminal, run the following command as root to verify your Fedora computer can see the printer over wireless: /usr/lib/cups/backend/cnijnet
- Go to your Fedora computer’s CUPS setup by visiting http://localhost:631 in a browser and adding the MX860. It should already be in all the menus:
- Plug out the USB cable. You should be ready to print wirelessly.
- Connect to the printer via USB. Yeh, it defeats the point of wireless. But it works. Here’s the Canon MX860 PPD file, extracted from the drivers, if you care to set it up this way.
- Make your x86_64 machine multilib and install the x86 drivers on it.
Okay now your MX860 is on your wireless network.
Setting up a 32-bit client
Now you’ve got the MX860 on the wireless network, but what good is that if you can’t connect to it from your Fedora laptop or desktop? The Canon drivers are 32-bit only, so getting them to work on a 32-bit machine is obviously a lot cleaner and nicer than on a 64-bit machine.
Setting up a 64-bit client
So as previously mentioned, the Canon drivers are 32-bit only. The license posted on Canon Australia seems to claim they are GPL – well, I tried to build them for x86_64 using source download which handily included the spec and SRPM, but, unfortunately the sources include a binary library with no included source so it’s not possible to build the driver for x86_64. (I’ve been meaning to write Canon a note about that….)
So, you have a couple of options if your machine is x86_64:
Since I only use the MX860 for scanning with my x86_64 machine, I simply use a USB key plugged into the MX860 to save the scans to, then I transfer them to my x86_64 machine by plugging the USB key into it.
Anyway I hope this guide has been helpful. If anyone has better ideas on getting the drivers to work on x86_64 or convincing Canon to fix their source I’d love to hear them.
Update 17 Apr 2010
One option I totally forgot to mention that I’ve been using with my Fedora 12 laptop:
- Use the wired ethernet connection on the MX860. Make sure you turn off wireless and turn on wired in the settings menu on the MX860’s screen. Note the wired IP address.
- Install the Fedora ‘cups-bjnp’ package. (sudo yum install cups-bjnp -y)
- Go to System > Administration > Printing (you’ll need to enter your root password)
- Hit the ‘New’ button in the upper right corner. If you click on the ‘Network Printer’ disclosure triangle in the left side of the dialog, wait 30 seconds or so the printer should just show up, or you can opt to instead search for the printer at the IP address you noted in step 1 above.
- Pick the printer via manufacturer/model on the screens that follow. Tell it that your printer is the Canon Pixma iP4600.
- Finish. Print a test page. Yay it should work.