CANON LBP2900B wireless printing using Raspberry Pi

CANON LBP2900B is a fantastic rugged printer. Very low maintenance device with good printing quality. But with such great features comes a demerit – One cannot print wirelessly in the device. One solution is to hook this device up with a System that will act as a Server, keep that device always turned ON and share the printer in the network. Such an approach is not very practical when using the device at home. How can we address this issue ?

For using a device to act as a dedicated server we need a low power consuming, low cost yet powerful device that will do all the task of communicating with the printer hence act as a dedicated print server. Well one such device exists that fits all the specification required. It’s a Raspberry Pi – A very low power consuming cheap device which is powerful enough to get our task done. But this comes with one big problem. Canon LBP2900 doesn’t yet have a working driver for Linux devices and sadly Pi runs on Linux distros. So, is it the end of road? Nah, explorers always have their way around obstacles. So, here goes my method to make a Pi Print server for LBP 2900B.

Things needed :

  • Raspberry Pi ( 3 or above versions )
  • Good Memory card
  • Ubuntu MATE ( Raspbian OS never went past print test page )
  • Canon LBP 2900B ( In working condition )
  • Optional : RJ45 Cable

How to?

  1. First set up Ubuntu Mate on a good quality memory card and then do all the necessary settings. After setting up all basic things like VNC, SSH we can proceed further to next step.
  2. From here follow the instructions carefully :–
    • Open SSH terminal on your system and login to the Pi on which the Print server will be setup.
    • Install the drivers on the Pi using the following commands :
sudo apt-get install build-essential git autoconf libtool libcups2-dev libcupsimage2-dev
git clone https://github.com/agalakhov/captdriver.git
cd captdriver
autoreconf -i
./configure
make
sudo cp src/rastertocapt /usr/lib/cups/filter/
sudo cp Canon-LBP2900.ppd /usr/share/ppd/custom/
  • Follow the above commands and if any problem arises then follow this link for any further help : https://askubuntu.com/questions/1033566/canon-printer-problem-on-ubuntu-18-04
  • The next step is to add the printer to CUPS server. This is an easy but crucial step. Follow web tutorial if am not very clear. Here are the steps :-
    1. Access the CUPS server page and then navigate to Administration.
    2. Next click on Add Printers.
    3. Select the Local Printer – Canon LBP2900
    4. Select the Driver – The previous commands added the drivers, just select the appropriate driver from the list.
    5. Hit “ Share this printer “ and then do necessary setup and finalize the setup process.
    6. Copy the URL of the printer from the list of printers.
  • Now we have created a print server where our printer is available for other systems to print. At this point most of the the systems recognize the Wireless printer, if problem arises then go to next step.
  • Install SAMBA on Pi. It may solve the issue. I am sharing the link : https://linuxconfig.org/how-to-configure-samba-server-share-on-ubuntu-18-04-bionic-beaver-linux
  • If the previous step didn’t solve the issue then it might be a driver issue. Its an additional headache but can be solved easily by selecting the correct Driver.

Problems I encountered and my solutions :

  • Windows system didn’t recognize the printer :
    1. Go to devices and printers under settings tab and add printer.
    2. Copy the URL of the printer from the CUPS server page.
    3. Paste it in the add printer setup page.
    4. When asked for driver, be careful here. For me “Microsoft PS Class Driver” worked well without any issues. Maybe different for others.
  • Sometimes printer takes forever to print: Cancel the job on Server page and restart the printer.
  • Printer cannot print multiple pages : This problem was solved partially  recently. Simply connect your Pi to Router using a LAN RJ45 Cable. Surprisingly this worked for me.

Further advises :

It’s a simple yet complex hack that requires good amount of time. Here are some areas you can try to improve this hack:

  • Multiple copy of pages problem: More experiments are required to solve this issue. I made it work on some of my systems, yet I am still getting some errors.
  • Printer interface : The interface is quite difficult for someone new to understand. We need to build an interactive system to control the printer and inform the user about any errors faced.

Final Note :

Canon LBP2900B is a fantastic system and adding wireless capabilities makes life easy. Canon team can work on releasing official drivers for Raspberry Pi to make the printer a Wireless capable device, hence making life of the user easy.

For me, this technique works most of the time but I also get errors which are difficult to address. Others are welcome to work on this technique and suggest me anything I should try out to improve the reliability of the system. I have not made a video explanation for this but will surely do if required.

UPDATE 2022 – A new better way !

Using Raspberry Pi as a print server was a cool idea, but when using solutions for long term use, I needed something solid and trustworthy. The reason being – Pi was not able to handle large documents and the Driver support literally didn’t exist. Found some updated drivers for Linux on GitHub but the performance didn’t improve much.

To solve this I searched a system that can run Win 10 and is similar to Pi in terms of Size and Power consumption. The search ended with – Mini PCs.

Here is my solution :

Components/Systems used :

  • Mini PC – Asus PN40 Barebones
  • Canon LBP 2900B
  • Windows 10 Pro
ASUS PN 40 Series Mini PC

CANON LBP 2900B

How I did it ?

I used Asus PN 40 as it comes cheap and gets my task done flawlessly. Next I used Windows 10 because of its driver support. The prime reason for choosing them was low maintenance in long term and better software support.

Regarding the installation, here are the steps:

  • Install the OS (WIN 10 PRO) on the system.
  • Update the drivers – it will take time.
  • Install CANON LBP 2900B Drivers for Windows(Its available online).
  • Share the printer in your network ( You can get better tutorials on YouTube for this).
  • Go to another machine, connect to the network printer and print flawlessly.

Seems too easy but there is an issue which I resolved after some research. The issue is related to printing the documents from an Android device.

How to Print from an Android Device?

So, the default Print service on Android phones will not recognize Windows Printer (at least not in my case)  . So, I searched for solutions and got one.

Here are the steps :

  • Go to Play store.
  • Download Printer Share app.
  • On the app, click add printer
  • Click on Wi-Fi option, enter the IP of your Print Server manually.
  • It will detect your printer, select it and done!
  • Enjoy wireless printing from Android Device.
Printer Share App

I didn’t try it out on IOS device, but am optimistic that it will work.

Overall Performance :

All the previous issues I had on Pi were resolved and the performance is much better and reliable, as none of my print jobs failed. Whereas in case of Pi, I had to manually intervene and resolve print server issues. I would definitely recommend this new solution as its easy and reliable. Although the machine costs little more than a Pi, but its worth it, considering the reliability and performance.

Finally Final Note !

The Old Pi now has a better job as Retro Pi and believe me it works perfectly as a Retro Pi. And anyone doing such tinkering, please ensure you have good amount of Time. I think I cannot do much improvements further but will suggest others to explore and find out new problems. If someone is willing to do some improvements here are some areas :

  • How to make native android print service recognize the Windows Printer ?
  • Performance on Platforms other than Windows/Android  ( as I didn’t test it on Linux machine)
  • Any improvements or hacks I missed, or any better android print service – suggestions are welcome !

Thank You guys and Namaste !!

28 thoughts on “CANON LBP2900B wireless printing using Raspberry Pi”

  1. Hey,
    I have been trying to set this up on my Raspberry Pi 3B+ with the same printer, but i cant seem to get it to print anything. It gets perpetually stuck at “rendering completed”.
    I have tried restarting the printer and even redoing the whole setup.

    Any help on how to fix this would be highly appreciated.

    Like

    1. After I’ve selected the “Share the printer” function I see a list of Printer models. As LBP2900 is not in the list I added the PPD file in this interface and added the printer. The printer is also available in the network not but doesn’t print anything and all jobs are pending

      Like

      1. Is it Printing Locally ? First try a local Test Page, if it works then it might be Windows 10 creating a problem. Print a page from your Android Phone, if it doesn’t work,then maybe its not correctly configured.

        Like

  2. no its also not working local. also without any error message. it is just saying “rendering completed” and thats is. maybe related to the arm architecture in Pi4?

    Like

      1. yeah tried it several times. always with the same result. So I think there is not solution at the moment out there.

        Like

  3. Guys issue is that the printer when asked to print(locally on the same machine) it shows task completing and is stuck on that screen. please help urgent

    Like

  4. Hey when I enter the command ./configure then it gives me this error:
    configure: error: in ‘/home/pi/captdriver’:
    configure: error: CUPS library not found.
    Please help me urgentt

    Liked by 1 person

    1. Usually it shows in CUPS List. If not, I remove and re-install, worked for me every time. But believe me, this machine was difficult to maintain in the long run, hence had to switch to other platform !!

      Like

  5. Arm64 is the context.
    Just wondering (in a positive way) how you came to a solution to use a Microsoft (PS Class – whatever it is) driver instead of the printer’s original one from Canon on a Windows client machine? The first time ever I see it’s working i.e. printing. Or.. likely pretending so. Some sort of a tease, yes. Though it’s still slighly more than nothing. With a single page document it’s more or less.. erm… tolerably. It does what it has to then “prints” one more blank page for some reason. But when it comes to a multiple sheets doc your chance to get what you want would be equal to 0 or so. Best case scenario, you’ll get its first page printed follow by a blank one. Further goes nothing. Or it’s just me not enough patient. Either way, any real use doesn’t seem any possible.

    Like

    1. Well can’t comment on this anymore as am currently using a Windows server for remote printing. Believe me, the only reason to use a Windows machine is the awesome driver support windows has. And the performance has been flawless till now !!

      Like

      1. Thanks for reply.
        I have no reason not to believe you. But I consider replacing it with some same old and cheap HP LJ (not limited to, just an example) more simple and generally reasonble way to deal with that all in all after getting all those weird experience.
        It doesnt require from you pretty much anything though does its job just fine pretty much out-of-the-box. The matter of only $40-45 at most in where I am.

        Like

      2. if you’ll be that lucky to sell this canon rubbish (potential buyers – I’m sorry, just a business) this then wouldn’t cost you a penny

        Like

      3. whats more, if you’ll be that lucky to sell this canon rubbish (potential buyers – I’m sorry, just business) the whole thing then wouldn’t cost you a penny

        Like

  6. Actually the printer works just fine ! No comments on its engineering but the team must work on releasing printer drivers for Linux also! And I believe, this should become the norm as not everyone uses a Windows or Mac nowadays 😅!!

    Like

    1. One prolly last question on the topic, maybe you remember the way you managed to hook it up to printershare android app? Yep, I do see your directions on that matter right above but it never works for me.. Particularly, I stuck at the step no4 where you suggest to add the printer manually by printer server’s IP. Zero result in my case…(
      What do I do wrong?

      Like

      1. Probably a screen share can help lol😂!! Alright for doing that you must have assigned a static ip to your server and just use that static ip on Printer share. It will work ! That’s how I did !

        Like

  7. I surely did that right away. But the outcome is printershare error msg says it’s either wrong IP address or your printer isn’t supported by the app

    Like

Leave a comment