Introduction: 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

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

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!

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

author
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.

author
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

author
overseasr (author)2016-05-22

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

author
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).

author
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.

author
LouisC16 (author)vivek_chaudhary2016-07-17

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

author
Arnn (author)2016-03-11

Thanks a lot, was really helpful

author
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

author
crgeary (author)2015-12-20

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

sudo usermod -a -G lpadmin $(whoami)

author
SwiftD1 (author)2015-11-28

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

author
SwiftD1 (author)2015-11-28

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

author
LierezT (author)2015-11-22

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

author
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!

author
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

author
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.

author

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

author
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...

author
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.

author
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 :)

author
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

author
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

author
Rithvikv (author)Craftcadet2015-09-10

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

author
Craftcadet (author)Rithvikv2015-09-13

many thanks. Thats the answer I was looking for.

author
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/

Screen Shot 2015-07-21 at 10.21.32 AM.png
author
Pablo HenriqueP (author)2015-07-13

author
Eric Brouwer (author)2015-06-19

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

author

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

author
jakefarran (author)2015-06-13

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

author
malmgren (author)2014-10-07

I assume the printer has to have an USB port?

author
Bartboy (author)malmgren2014-10-09

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

author
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. :)

author
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!

author
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?

author
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?

author
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.

author
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?

author
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.

author
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.

author
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.

author
richardli (author)2014-10-07

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

author
Bartboy (author)richardli2014-10-09

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

author
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.

author
Bartboy (author)thegnnu2014-10-09

Correct you are!

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

author
escondidocowgirl (author)2014-10-07

Great concise explanation. Thank you.

author
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/

author
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

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

Great idea! Thanks.

author
leiryll (author)2014-10-07

no detailed HW set up of a printer?

author
Raphango (author)2014-09-22

Great project!! Congratulations!!!

author
NotJimCarrey (author)2014-09-06

Nice walk through, detailed but concise.

temp_71167160.jpg

About This Instructable

193,479views

916favorites

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: