Making Network Printer with Raspberry Pi

There are hundreds of articles on-line on how to configure CUPS on Raspbian. Why making one more? First, none of the articles worked for me. Second, I want to share my successful experience.

This article might be useful for those who have Samsung CL* printers. Mine one, Samsung CLX-3185, got working after I have done the following.

Things You Would Need

Here is my setup:

  • Raspberry Pi 2 Model B (others might work too)
  • Samsung CLX-3185 multi-functional printer
  • Connection to Pi: I used SSH

Raspberry Pi 2 Model B

Configuring CUPS

We will write "cups" instead of "CUPS" later on.

First of all let's install cups.

Disclaimer On this web site you might read about or get access to various kinds of software and technology, including but not limited to libraries, operating systems, software for communications, mobile phones and tablets, Android software and Linux, even cars and motorcycles, security and penetration testing software, software used in security research and forensics, some samples of software which can be used (elsewhere) for malicious or illegal purposes. You will read about or be provided with the ways to change it, to operate it and to use it. You might find advice and recommendations, which are only an opinion, and not a legal advice or commercial recommendation..
Bear in mind, please, that everything you do, you do solely at your own risk and responsibility. In no way the author of this web site, information, graphics and other materials presented here or related to it can be made liable or anyhow else responsible for your own actions as well as actions of any third party and their direct or indirect results or consequences with or without the use of this information as well as the software, technology and systems mentioned and/or presented here, no matter if developed by the author or by any third party.
In no way it is guaranteed that you will meet any suitability for any particular purpose, safety, security, legality or even simply functioning of the software and systems described here. You have to make sure each time yourself, whether what you do, is really what you intend to do, and that you are ready to be yourself responsible for. All the recommendations and experiences described here are the opinions of corresponding authors and are to be taken with care and own full responsibility.
The software provided on or through this web site, linked to from this web site or anyhow else related to this web site is provided by the corresponding authors on their own terms. We provide all the software here as is without any guarantees to you. You are responsible for deciding whether it is suitable for you or not. You are also responsible for all direct or indirect consequences of using this software.
Other web sites linked to from the current one are out of the author's control, we can not guarantee anything about their content, its quality or even legality. We can not be liable for any use of the linked to web sites or of the information presented there.
We reasonably try to keep this website running smoothly and to deliver information to the best of our knowledge corresponding to the state of the art at the times when the information is composed, usually presented together with the information, and out of good intents. We can not however guarantee and can not be liable for this website being temporarily or permanently unavailable, presenting unreliable information or software, or any other similar or not malfunctioning or functioning not up to your expectations as well as any consequences which might result from this site's operation.

sudo apt-get update
sudo apt-get install cups

Next, make cups listen to all network interfaces.

sudo nano /etc/cups/cupsd.conf

Edit there the line "Listen localhost:631" to be

Listen 631

Afterwards allow remote administration of cups:

<Location />
  Order allow,deny
  Allow @local
<Location /admin>
  Order allow,deny
  Allow @local
<Location /admin/conf>
& nbsp; AuthType Default
  Require user @SYSTEM
  Order allow,deny
  Allow @local

Restart the service

sudo service cups restart

Make pi user admin, so that you could login and tune cups.

sudo usermod -a -G lpadmin pi

Now you should be able to connect from you regular machine to cups server in Raspberry Pi: http://address_of_your_pi:631/

Use the login name pi and the password you have for this account in Raspbian.

Make sure your printer is connected to Pi and login into the cups interface.

Following the UI you could add a printer now. Make sure that you check the "Share this printer" check box.

After that computers on the same network should locate your printer connected to Pi and you should be able to print.

When selecting the driver, make sure you have the exact model of your printer listed and pick it. It can also be, that you do not have the driver. It was my case exactly. read further on it.

Installing Drivers for Samsung CL* Family

Samsung CLX 3185

Once you have one of these printers:

Samsung CLP-300,
Samsung CLP-310 / 310W,
Samsung CLP-315 / 315W,
Samsung CLP-325 / 325W,
Samsung CLP-360 / 365W,
Samsung CLP-600,
Samsung CLP-610ND,
Samsung CLP-620ND,
Samsung CLX-2160,
Samsung CLX-3160,
Samsung CLX-3175,
Samsung CLX-3185,
Xerox Phaser 6110 or 
Xerox Phaser 6110MFP
- you would probably need to install a driver first.

There is a great driver on-line, which worked for me as a charm.


wget -O foo2zjs.tar.gz
tar zxf foo2zjs.tar.gz
cd foo2zjs
# Get color profiles
# Place you model number instead of 3185
# Reference:
./ 3185
make cups
sudo make install

This page contains more details and plenty of useful information on this driver and other drivers as well:

You have to add printer in cups after you have installed the driver.

To check that your printer is installed run:

lpstat -a

You should see your printer name in the output.

Now everything must work! Congrats!

Hardening the Setup

A few short security-related remarks.

  1. Create another user instead of "pi" to not to use sudoer pi to tune cups.
  2. Disable access to cups admin panel after your settings are ready.

Thanks for reading my blog!
Created: 12/06/2015
Last edited on: 12/06/2015
Your comment: