Introduction: Turn Any Printer Into a Wireless Printer With a Raspberry Pi

Picture of Turn Any Printer Into a Wireless Printer With a Raspberry Pi

Once you've bought a wireless printer, you never want to go back to the dark days of having to plug in all the time. But good wireless printers are expensive, and many routers that let you make network printers out of USB ones don't necessarily do all the driver-work for you.

With a $25 RPi Model A, a $2 power supply, a $5 SD card and a $5 USB Wifi dongle (be sure to find one supported in Raspbian or other OSes) you can turn any printer from the CUPS printer list into a wireless network printer. A lot of added functionality for under $40!

If you look for a laser printer from the early 2000s on that list, chances are it will be heavily supported and very efficient with toner, not to mention cheap.

Step 1: Step 1: Set Up Your OS

This is pretty simple stuff if you know anything about the RPi, so I won't tell you much about it, but if not the foundation has made an awesome instructional page.
Any OS should do, but make sure it has WICD for easy setup!

If you can't find it on your OS, here is a good guide to setting it up from scratch.

(Check out this guide to installing Raspbian if you need help.)

Step 2: Step 2: Setting Up CUPS to Print

Picture of Step 2: Setting Up CUPS to Print

CUPS is a printer driver to make Linux work more like Windows with printers.

To install it, type this into terminal:

sudo apt-get install cups

After that add yourself to the CUPS admin files, with

sudo usermod -a -G lpadmin username

Since CUPS doesn't have a standalone GUI, you connect to it with a web browser. Find your IP address by typing in

ip addr show

Then enter into a web browser your ip address followed by a colon then CUPS default port number of 631.

Click the "printers" tab and find the driver for your printer model. Install it, then print a test page.

Step 3: Step 3: Sharing the Printer

Picture of Step 3: Sharing the Printer

Once you have the printer working with test pages, you need to go to the printer's profile then under administration set it to sharing.

Step 4: Finished!

Picture of Finished!

Your PiPrinter should be showing up from any other machine on the network as if it were a shared printer. (Note the @RaspberryPi)

Rename it and give it a location if you want! Use "Generic Postscript printer" on your connected machines since CUPS on the Pi is handling the printer-computer driver relations.

Comments

jonTW (author)2016-09-18

I tried to use CUPS (through Openmediavault) to act as a server for my Canon LBP6030W. Though it correctly identified the printer, there was no driver for it. I tried several different drivers but none worked.

I wonder if anyone could offer some suggestions that would help me run that printer though CUPs.

OlivierM4 (author)2016-08-30

I needed to install the drivers directly into the raspberry pi, here is the links that I used :

http://www.howtogeek.com/169679/how-to-add-a-print...

https://mark.zealey.org/2015/06/29/getting-hp-p100...

http://foo2xqx.rkkda.com

overseasr (author)2016-05-22

well i have done all the step but i can not open localhost:631

sudant (author)overseasr2016-08-01

If you have not figured out yet, try running the following commands to enable remote access to CUPS service and restart the cups service:

sudo cupsctl --remote-any
sudo /etc/init.d/cups restart

Now find the IP address of the RPi and access it from your browser as mentioned in the article (like 192.168.1.100:631).

vivek_chaudhary (author)2016-07-12

Well u can't "Turn Any Printer into a wireless printer with a Raspberry Pi" but only those which drivers are available for Linux in ARM architecture. Trust me there are more non supported then supported printers.

LouisC16 (author)vivek_chaudhary2016-07-17

Yes, my printer came only with i386 binary CUPS driver........ :(

Arnn (author)2016-03-11

Thanks a lot, was really helpful

AbD6 (author)2016-02-25

So can i still use this method even if the printer driver is not supported by ny windows operating system

crgeary (author)2015-12-20

You can use $(whoami) to automatically add your correct username.. Eg:

sudo usermod -a -G lpadmin $(whoami)

SwiftD1 (author)2015-11-28

...............................

SwiftD1 (author)2015-11-28

.........................

LierezT (author)2015-11-22

Hi
What should i write in the "username" in the line 'sudo usermod....'?
Thank you

LierezT (author)LierezT2015-11-23

I wrote pi as username and i think i works. (i'm not getting any error).
But i cant find my xerox workcenter pe120.
I searched for other printers and didnt found anything.
Maybe it have some connection to the fact that i cant get into cup with the ip address?
I enter the cup with localhost:631
Thank you!

IanJ18 (author)2015-11-03

Got as far as the cups gui by using localhost:631 as ip option would not work. Tried finding drivers on the printer tab but there aren't any trying sesrching many different models but nothing showing? Then tried adding the printer using the default user and password but this is not accepted....Help

hitechqueenqueen (author)2015-10-18

Hi, I find difficult to add myself to group "Ipadmin". When I try this "sudo usermod -a -G Ipadmin username", it returns "usermod: group 'Ipadmin' does not exist". I also try to get accessed to "Administration page" to add printers by browsing 127.0.0.1:631, after inputing my RaspberryPi's name and password, it returns "Add printer error - Unable to add printer - Forbidden, please help, thanks.

In case you're still stuck, or someone else gets this problem, its lower case L and not an uper case i. Writing LPADMIN in lower case is what it required basically, i.e. lpadmin.

It's supposed to mean line printer I think.

ref: https://www.raspberrypi.org/forums/viewtopic.php?t=40705&p=332288

qubodup (author)2015-10-22

I got fed up with the laser printer toner fumes and put the printer in the furthest part of my flat and used this guide to set it up with an RPI A with a stronge power source (wouldn't work with usb adaptor otherwise). Thanks!

I currently have an OKI B410 and a Brother HL-2030 connected. both work perfectly locally or from Windows or Mac but if I print from my 64bit Arch Linux, both print jobs fail:

OKI desktop-local message:

processing since Thu 22 Oct 2015 08:26:23 PM CEST "/usr/lib/cups/filter/foomatic-rip failed"

OKI rpi-local message:

stopped "/usr/lib/cups/filter/foomatic-rip failed"

Brother desktop local message:

processing since Thu 22 Oct 2015 08:32:46 PM CEST "Sending data to printer."

Brother rpi-local message:

stopped "/usr/lib/cups/filter/foomatic-rip failed"

I used Minibian-wifi https://sourceforge.net/projects/minibianwifi/ , so I could use a 2GB SD card. I just used the root user, so no dealing with permission...

hhrasmus (author)2014-10-02

Nice project. I have more or less the same setup.

Do you have any idea on how to add a relay so that the printer can automatically be turned on when there is a print job for it. The HW part if it is easy but how to make CUPS toggle the pin is not so obvious to me.

qubodup (author)hhrasmus2015-10-22

You could probably have a script running all 5 seconds or so that uses a command-line tool to check if there's a print job in some list (just some kind of "if `lprmagiclistpending | wc -l` > 1 then")

There are commands on https://www-uxsup.csx.cam.ac.uk/pub/doc/suse/suse9...

You might want to share your solution :)

WizziL (author)2015-10-11

Thanks for this HowTo but I want to add something more to it. I try all steps but as another user already say there are huge number of printers without drivers for ARM architecture. My printer is one of this printers - Canon MP2450 but I manage to make it work. That is how I do it:

1. Follow all steps from this article (only CUPS installation)

2. sudo apt-get install printer-driver-gutenprint

3. sudo apt-get install printer-driver-*

4. go to YourPiIpAddress:631

5. go to Administration -> Add Printer and select your printer, Manufacturer and Driver from the list (you can try to add PPD file or not)

6. Print test page

Craftcadet (author)2015-08-28

Is it possible to add more than 1 printer to the Raspberry Pi? and have a Wireless Print Station. i have couple i would like to use. many thanks

Rithvikv (author)Craftcadet2015-09-10

I dont know about Wireless Print Station, but its possible to connect multiple usb printers with CUPS

Craftcadet (author)Rithvikv2015-09-13

many thanks. Thats the answer I was looking for.

EvansM made it! (author)2015-07-21

Though i needed to do these steps to make the web interface accessible remotely http://www.howtogeek.com/169679/how-to-add-a-printer-to-your-raspberry-pi-or-other-linux-computer/

Pablo HenriqueP (author)2015-07-13

Eric Brouwer (author)2015-06-19

Thanks for sharing.. I will test this on my old HP 1600 Color Laser.

Thanks to your Instructable, I was able to connect my old HP Color Laser 1600 to my network.

jakefarran (author)2015-06-13

Do you think I can do this with a 3d printer?

malmgren (author)2014-10-07

I assume the printer has to have an USB port?

Bartboy (author)malmgren2014-10-09

Yes, that's the limiting factor and why I said 2000s, otherwise any 1990s workhorse would do well!

NathanS19 (author)Bartboy2015-05-27

Perhaps you could write a script for the gpio pins to simulate a parallel port and use older printers that way? Just throwing an idea out there. :)

kodybrown (author)NathanS192015-06-03

USB to Parallel (DB25 female) converter cable for less than $10.. I'm not sure how it works, but there are a LOT of options for that.

http://www.monoprice.com/Product?c_id=103&cp_id=10...

It does, however, sound like a fun diy project too!

NathanS19 (author)2015-05-27

Could this principle be used with an outdated android smartphone? I mean since it is linux based and has some usb capabilities, could someone hack one and use that in place of the Pi?

IamTheMomo (author)2015-05-19

I just avoided paying for anything to be able to print from my tablet by installing Google Cloud Print. My printer is not Bluetooth enabled, but by using a cloud server, the print command is sent from my tablet (or my PC) to the printer. But I'd love to be able to do that with my Silhouette vinyl/paper/fabric cutter. Got 'ible?

bananaLinux (author)2015-03-16

You cany exactly turn ANY printer into a wireless printer. There is a huge majority of printers which have no drivers for linux and if they do theyre i386 or amd64 drivers not armv6/v7 so dont go buying a Pi only to find out that it doesnt support your printer.

mtheb (author)2015-02-24

Hey! Great instructable. I have a friend that is looking for a way to do something like this with a vinyl cutter. Similar, I know, but a little different. Any thoughts on this?

kahht (author)2014-11-20

Amazing! I can't wait to try this out. My wired printer has frustrated me since day 1.... I can't believe I never thought of this.

kwhitacre (author)2014-10-08

I have kept my HP4M for 20 years. I love the printer. But it won't work with my newer Macs. I've looked through your instructable and it all seems to be for Windows OS. Could you tell me if Mac OS 10.9.4 will work with your scheme? I have used the CUPS dialog for years on my older Macs. So I know it will work on a Mac, but not sure about this whole thing. I am excited to think I could get a printer that I really like, was inexpensive to operate, and reliable, could work again.

Bartboy (author)kwhitacre2014-10-09

Well all the software runs on the Linux OS you put on the Raspberry Pi, after that it's a very basic Postscript print that works on any OS.

The whole guide was done using OSX 10.6.8, but would be the same on 10.9.4. Just follow the Raspberry Pi foundation guide on setting up the OS on your SD card.

richardli (author)2014-10-07

i love this , can i re-post it to my blog?

Bartboy (author)richardli2014-10-09

Sure thing, I doubt I'm the first to come up with this set of steps.

thegnnu (author)2014-10-07

I think you meant to use a Raspberry Pi Model B as the Model A has only 1 USB port as you did not mention the printer had to be plugged into a USB port as well as the WiFi dongle. nice article otherwise.

Bartboy (author)thegnnu2014-10-09

Correct you are!

Perhaps backpowering via a USB hub would be cheaper, though.

escondidocowgirl (author)2014-10-07

Great concise explanation. Thank you.

xcooling (author)2014-10-07

More advanced guide:


Ultimate Raspberry Pi : LAN Print , Scan and PDF Server : CUPS + AirPrint + IPP + cups-pdf + sanescan ( SaneTwain ) + phpSANE ( scanner webinterface ) + samba ( remote file access )

https://extremeshok.com/6138/ultimate-raspberry-pi-lan-print-scan-and-pdf-server-cups-airprint-ipp-cups-pdf-sanescan-sanetwain-phpsane-scanner-webinterface-samba-remote-file-access/

TrentF1 (author)2014-10-07

This same instructable can easily be expanded to include Apple's Airprint so that your iPad/iPhone can print to any usb printer - linux makes this easy. Rather than write up my own, here's a google search that will give you all of the necessary info: https://www.google.com/search?q=raspberry+pi+airpr...

Since I have done this very thing, I wanted to click the "I Made it!" button, however that requires me to upload an image. How many images of a raspberry pi do we need? lol

matt.e.jenkins (author)2014-10-07

Great idea! Thanks.

leiryll (author)2014-10-07

no detailed HW set up of a printer?

Raphango (author)2014-09-22

Great project!! Congratulations!!!

NotJimCarrey (author)2014-09-06

Nice walk through, detailed but concise.

About This Instructable

196,111views

917favorites

License:

Bio: I'm an inactive K'nexer, I used to be one of the most active ones, but I have a lot of other things to ... More »
More by Bartboy:Turn any printer into a wireless printer with a Raspberry PiFlaming K'nex Spinner (Of Death!)A host of Bacon Cheesecakes, with Maple-Bacon Ice cream
Add instructable to: