view · edit · print · history

Adding a Printer to Unslung (CUPS)

Place user notes and potential issues below in the "Notes & Potential Problems" area. If you place them "inline", we end up with a page that is nonsensical and almost worthless due to the conflicting and/or repeated information.


Before you attempt to start printing from the NSLU2, hop on over to both http://www.linuxprinting.org/ and http://www.cups.org/ and do some reading about CUPS and the type of printer you are attempting to install.

In order to print graphics, some printers may require you to install additional code, such as the Foomatic-rip (http://www.linuxprinting.org/foomatic.html), up-to-date .PPD "device drivers" (http://www.linuxprinting.org/printer_list.cgi) and/or compile device-specific code (like HPIJS, http://hpinkjet.sf.net/).

CUPS documentation also suggests a specific version of Ghostscript called ESP Ghostscript (http://www.cups.org/espgs/index.php) be installed to convert Postscript to raster-based data via filters. The current Unslung IPKG Ghostscript package is not the same package, although this one does also work. Additionally, you have to add your ghostscript fonts to /opt/share/ghostscript/fonts. You can find the fonts e.g. at http://ftp.debian.org/debian/pool/main/g/gsfonts/gsfonts_8.14+v8.11+urw.orig.tar.gz

The software

Getting it

CUPS comes in several packages. Those who want English only should download the cups and cups-doc (optional) packages. The former of these install together with the printer driver, and will set up local "raw" printing (that is - no printer driver is installed). Integration with the Linksys Samba package is not included. See section below for how to integrate CUPS so that you can print from Windows. The CUPS system wil automatically install the web CUPS interface on port 631 with access from the 192.168.1.* network if cups-doc is installed. Note that the documentation part of CUPS is quite large due to PDF files that can be accessed through the web interface. If you don't mind having broken links to the PDF files from the online help system, you may delete them and save 80% of the space occupied by CUPS.

Ensure ipkg is up to date and then install the needed packages:

  1. ipkg update
  2. ipkg install cups
  3. ipkg install cups-doc
    • Note that the CUPS web interface is part of the cups-doc package.
    • For those wanting German, French, Spanish or Belarussian documentation, install one or more of the packages cups-doc-de, cups-doc-fr, cups-doc-es and cups-doc-be. These have not yet been tested, so beware.

Post-installation things to do:

  1. Edit /opt/etc/cups/cupsd.conf for your network and environment.
    • Pay particular attention to the allow/deny access privileges near the bottom of the file (by default only 192.168.0.x clients are granted access).*Go down for more info on editing*
    • Add DefaultEncryption Never to your /opt/etc/cups/cupsd.conf file, then restart cups # /opt/etc/init.d/S88cups restart. To access the CUPS webserver username-root, password-whatever password you gave root when setting up Unslung. Otherwise you will get a '426 Upgrade Required' message when you try to edit anything in the CUPS webserver.
    • Back up your /opt/etc/cups/cupsd.conf file because the web interface likes to overwrite it sometimes, causing '403 forbidden' web interface problems.
  2. Edit /opt/etc/cups/printers.conf for your printer.
    • In CUPS you can use the default HP990c. It works for most USB raw printers because it specifies the HP Deskjet Series 1.3 printer language. It is just the default name for inkjet printers in CUPS, there is nothing otherwise special about it. Notice that when you install the printer in Windows you may NOT use the HP990c? printer driver, unless that is really what you have. Otherwise the printer will do nothing.
    • Change permissions of /dev/lp0 with chmod 777 /dev/lp0.
  3. Copy cups startup file for automatic start on bootup.
    • cp /opt/doc/cups/S88cups /opt/etc/init.d (assuming /opt/etc/init.d exists) NOTE: Check first if init.d exist by cd /opt/etc/init.d if you get an error create init.d by mkdir /opt/etc/init.d then use de copy command cp /opt/doc/cups/S88cups /opt/etc/init.d
    • Either start cups with /opt/etc/init.d/S88cups start or restart the slug.
  4. Test cups web interface.
    • Interface is located at http://slug.ip.address:631
    • Example: Slug IP address is, then cups interface is
  5. Ensure administration webpage access.
    • The administration webpages require SSL but SSL certificates are not automatically generated.
    • Correct this by:
      1. Creating the SSL certificates:
        • openssl req -new -x509 -keyout /opt/etc/cups/ssl/server.key -out /opt/etc/cups/ssl/server.crt -days 365 -nodes. You may have to use /opt/bin/openssl if openssl is not in the path.
        • You will be prompted for information to be placed in the certificate.
        • Restart cups [with /opt/etc/init.d/S88cups restart].
      • Pls help! ran above line for ssl. filled in certificate information, it all seems to instal fine, then restart cups. adminstration webpage giving me a 403 error. rebooted, still 403 error. my ssl works fine, i ssl into my slug with putty, and the printer webpage homepage comes up fine. What am I missing? when i get this fixed, i will update with additional info in case others run into similar prob.
        • Its possible that the web interface can mess up cupsd.conf, if all else fails you can overwrite this with the original cp /opt/etc/cups/cupsd.conf.O /opt/etc/cups/cupsd.conf
          • Check the cupsd.conf file. There are two places that you need to change ip address. If you miss one, then you will get the 403 error. Look towards the bottom of the file.
          • Also inspect your slug's system clock from the NSLU2 web interface. The SSL certificates are good for one year, and if created in 1970 will no longer be valid.
        • It is also possible that you need to add your external IP for cups to be listened on, i.e., in cupsd.conf add/modify:
          • "Listen" (your external slug IP, by default it only listens to localhost)
          • "Allow" (in "<Location />" section, or you can be more specific, stating only one computer that will manage cups)
          • "Allow" (in "<Location /admin>" - same as above)
          • You may want to disable https requirement for "/admin" if you have problems with openssl (SlugOS 5.3) - comment "# Encryption Required" in "<Location /admin>" section, and you are OK with security issues that this is causing


  1. When you install cups for the first time, or upgrade it, you will want to make sure you have the most recent openldap (ipkg upgrade openldap). You will also want to make sure you have the most recent version of samba (ipkg upgrade samba). If you are running Unslung this will update you from Samba 2 to Samba 3. You will have to rebuild your conf file. This is a pretty obtuse activity. If you get it wrong, you will lose your NSLU2 shares, which is it's reason for existing. Proceed with caution!
  2. The default settings for the cups web interface allow browsing only from 192.168.1.* network. If your slug is not on this network, you need to modify the /opt/etc/cups/cupsd.conf file and then restart cups.
  3. Though the /opt/etc/cups/printers.conf references a HP990c, any USB printer should work via Windows printing (assuming you followed the above directions.) You may add additional printers using a USB hub, just add new printer devices using mknod /dev/lp1 c 180 1 for the second printer, etc.
  4. In cups, typing lpc status will give you some status information for your printer. For printing to work it should look like this:
# lpc status
printer is on device 'usb' speed -1
queuing is enabled
printing is enabled
no entries
daemon present

I ran in to similar problem as mentioned above (access to admin web page causing 403 error page). Solution (although temporary) was to comment out lines "# AuthType? Basic" and "AuthClass? System" in "<Location /admin>" section (end of the cupsd.conf file). However, when I try to add or modify printer through web interface, after entering all parameters and hitting Modify Printer or Add Printer button, I get Error message forbidden. (Roman)

I followed the above guide and it worked for my Epson SX105? allinone I have just a few remarks: (Maurice)

1) The best way to do this is not through telnet, but with openssh follow the guide http://www.nslu2-linux.org/wiki/HowTo/UseOpenSSHForRemoteAccess . The advantage with openssh is that you can install nano (ipkg update; ipkg install nano) for editing the config files if needed. I didn't get nano to work in a telnet window.

2) When after finishing the above guide do enter the following command at the commandline: tail -f /var/log/messages Then connect or reconnect your printer and look at the messages. You should see something like this:

Mar  1 18:13:06 (none) user.info kernel: usb.c: registered new driver usblp
Mar  1 18:13:06 (none) user.info kernel: printer.c: v0.11: USB Printer Device Class driver
Mar  1 18:13:40 (none) user.info kernel: printer.c: usblp0: USB Bidirectional printer dev 2 if 1 alt 0 proto 2 vid 0x04B8 pid 0x0841

Press Ctr C to exit the tail. Very important is that you get something like the last line I mentioned, because if you don't your printer is not recognized. I had some troubles with this, because I first connected my printer through a (powered) usb hub on disk1, because on disk2 I have a 2Gb flashdisk for unslung and on the hub I had two usb hd (750Gb and 400Gb). I noticed that if I connected the printer directly to disk1. It was getting recognized as above and not like before I only got the first two lines. Now I only had the problem where I could connect my 2 hd disks. Luckily if you have some soldering skills like I you can expand the slug with three extra usb ports. Look at the guide http://www.nslu2-linux.org/wiki/HowTo/EnableExtraUSBPorts . So I did that and added the three extra ports. Now I have connected my printer to port 5 of the slug.

3) Check by entering /opt/lib/cups/backend/parallel at the commandline if your printer is recognized at the usbport You should get something like this:

direct parallel:/dev/lp0 "EPSON Stylus SX100" "EPSON Stylus SX100 LPT #1" "MFG:EPSON;CMD:ESCPL2,BDC,D4,D4PX;MDL:Stylus SX100;CLS:PRINTER;DES:
EPSON Stylus SX100;"

4) Because I only need to print from windows I just added a network printer in windows like mentioned below. I also didn't change anything in the printers.conf so just leaving the deviceuri on parallel: /dev/lp0

Printing from Windows clients

To print from Windows, you may configure Samba as print server as described below. Recent versions of Windows are also able to access CUPS without Samba. (This includes even Win98, if you add the code supplied at http://www.microsoft.com/Windows98/downloads/contents/WUPreviews/IPP/). You just add a new network printer and enter your printer URL (e.g. in the provided "URL" edit field. When prompted for the driver installation, simply select the appropriate driver for your printer. This is the easiest way for you to print from Windows.

Printing from UBUNTU

To easy print from UBUNTU (tested on 8.04) select System>Administration>Printing and then add a new printer. Then select "Windows Printer via Samba" and give your printer's URL as above (e.g. When finish with the guide, ensure that the "Device URl?" displays correctly. If not, reenter it and you are done. You can now print the test page.

Configuring Samba printing

The CUPS support will be built into the Samba 3 package so it should be plug and play. When it comes to integrating with Samba 2 (the one found as standard in the Linksys firmware and Unslung 2.x/3.x), this has to be done manually. The steps are as follows (note that there is a scripts at the end of this section that does all the steps - the spelling out here is to show what is going on):

(The script does NOT handle step 1. Make the spool directory yourself. I got it working with chmod 777, as 755 gave me an Access Denied error when trying to print from Windows.)

1. Create Samba spool directory and verify the permissions

mkdir -p /opt/var/spool/Samba
chmod 755 /opt/var/spool
chmod 755 /opt/var/spool/Samba (note: This is too weak. Will be tested with 770)

2. Add CUPS printer support to the global section in /etc/samba/smb.conf

Change the lines:

printcap name = /etc/cups/printcap
security = user


printcap name = /etc/printcap
security = share

and add:

printing = cups

3. Add a printer section to /etc/samba/smb.conf

comment = All Printers
path = /opt/var/spool/Samba
read only = yes
printable = yes
use client driver = yes
browseable = yes
print command = lpr -P %p -o raw %s -r
lpq command = lpstat -o %p
lprm command = cancel %j %p

4. Restart smbd (reboot or send HUP signals to all running smbd instances)

Note that all these settings will probably be deleted by the Linksys SW on reboot. Garry has provided the following diversion script /unslung/rc.samba to make sure that smb.conf has the correct contents on Samba startup (this script will be found in /opt/doc/cups starting version 1.1.23-4):

# Diversion script: customize before starting crond
# Reason: alter samba to include cups
# Make sure we have a backup copy of /etc/samba/smb.conf
if [ ! -e /etc/samba/smb.conf.orig ]; then
cp -p /etc/samba/smb.conf /etc/samba/smb.conf.orig
# Modify two lines in smb.conf that are always present.
sed -i -e 's/printcap name = .*$/printcap name = \/etc\/printcap\nprinting = cups/' /etc/samba/smb.conf
sed -i -e 's/security = .*$/security = share/' /etc/samba/smb.conf

# If there is no [printers] section (it is normally not), append that section
if ( !(grep "\[printers\]" /etc/samba/smb.conf -q) ) then

cat << EOF >> /etc/samba/smb.conf
comment = All Printers
path = /opt/var/spool/Samba
read only = yes
printable = yes
use client driver = yes
browseable = yes
print command = lpr -P %p -o raw %s -r
lpq command = lpstat -o %p
lprm command = cancel %j %p

# Continue to start samba
return 1
# EOF - include this line

Printing to other SMB servers

The normal way of doing this is using the Samba utility smbspool. Unfortunately Linksys decided not to include it in the NSLU2 firmware, so unless one installs the Samba 3 package, this seems to be a difficult task.

Local printing

The basic CUPS installation does not as yet install its own printer drivers, but relies on the applications formatting the output correctly for the printer. We expect printer definitions for some popular printers to be tested real soon.

Defining the printer in the CUPS web interface lets you choose between a limited set of printer definitions. Note that CUPS is hardcoded to use /dev/usb/lp0 rather than /dev/lp0 as the first USB printer, so you will, until the next version of CUPS for Unslung, need to edit /opt/etc/cups/printers.conf to afterwards use the correct device. Starting version 1.1.23-6, the device name will match the value hardcoded in the web interface.

12/12/2013 Currently have local printing, scanning, and print server on my NSLU2 running SlugOS. I've had to do some strange things to get my setup functional. For scanning, using the guides here to set up my scanner worked well. This is using hplip since I have a psc all in one printer. Ive set up my printer with the hplip hpcup driver not for printing, which I couldn't get to work, but so the hplip utilities can be used. I can use the hp-level and other commands to interrogate my printer to get status and ink levels. I created my own webpage to give me ink status. HPLIP does not work for printing, seems to have some problems, probably related to the optware conversion or building setup. For example, HPLIP still looks for it's configuration on /usr/etc than /opt/etc.

I could only get local printing to work with HPIJS and the usblp module with a lot of work. By the way, if you use any hplip function such as scanning or checking ink, this knocks out the usblp module so I have a script to check this and remove and restore the module so I can print again. Most of the problems were related again to not quite being optware conformant. I had to edit foomatic-rip to make use of /opt instead of /usr locations. Ghostscript also does not conform to the /opt standard so in /etc/profile, I had to place export GS_OPTIONS=-sGenericResourceDir="/opt/share/ghostscript/8.71/Resource/" to get the filters to work. This should have worked for every ghostscript call but I had to manually edit the PPDs? in /opt/etc/cups/ppd and place -sGenericResourceDir=/opt/share/ghostscript/8.71/Resource/ after -dBatch at the gs call entry. The pdftops filter in /opt/lib/cups/filter is too restrictive and fails a lot so I had to do a google search and get an alternate from here https://launchpadlibrarian.net/27756565/pdftops(approve sites) . I had to modify this script for optware and fix its permission. I also had to install bc for calculations. To get the corresponding pdftops utility, I first installed xpdf. This did not turn out well since manually converting a pdf file to ps and sending it directly to the printer device would lock up the printer. I therefor humbly request that somebody test these XPDF utilites and fix the package. The pdf2ps does a good job of translating, although rather intensive and creates large files, but I actually needed pdftops so I downloaded poppler and built it. This worked pretty well so I have my hpij foomatic driver for printing locally.

It's good enough for local stuff but since my slug is a print server also, I use the hp990c raw printer driver, which uses the usblp module for really fast network printing. As before, I have a regular scheduled script to fix the usblp module after any hplip functions such as scanning or interrogating status. So, I basically have three printers setup. One for status, another one for local printing, and another for network raw printing. This could be cut down if somebody fixed the Ghostscipt, XPDF, and HPLIP packages. You could also supplement XPDF with a properly working poppler. This setup has worked well for me for a while.

lpd printing from other clients

Starting version 1.1.23-4, startup scripts for cups-lpd will be provided for xinetd, Linksys inetd and inetutils inetd. Standalone server is not supported. Since it runs from an inet daemon, it does not take up memory when not active.

There are some things one should be aware of when running lpd:

  1. The default spool directory is /var/tmp, which has limited access. This means that you must run cups-lpd as root if you want to continue using this spool directory.
  2. The default spool directy /var/tmp is located on a RAM disk. If you print huge documents (with lots of graphics), this may crash the NSLU2.
  3. In order to change the default spool directory, the environment variable TMPDIR must be set to point to the wanted location whenever cups-lpd is started.

lpd printing to other servers

This is easily done using the CUPS web interface. Just define the printer as using the lpd protocol and specify the type, printer name and the name of the remote host as prompted.

Printing from MAC OS X

Mac OS X uses CUPS to manage printer applications. The standard Mac 'Add Printer' dialogs may not pick up the correct path of your network printer. Instead, open your browser and enter http://localhost:631/admin(approve sites). This will bring up the standard CUPS admin screen, from which you select 'Add Printer' and follow the same procedure for configuring CUPS above. Select 'Internet Printing' and 'http:'. Enter your printer URL when prompted (e.g. and select the appropriate driver for your printer.


  1. The startup file S88cups gives me lots of errrors.
    • Yes, this is a bug in version 1.1.23-2. Upgrade to get the correct one.
  2. When trying to connect to the web interface I get the error "403 Forbidden"
    • Make sure that the IP address of the client you are connecting from is covered by the Allow From statements in /opt/etc/cups/cupsd.conf
    • The web interface likes to replace your /opt/etc/cupsd.conf with a file that is formatted differently. If this happens, either restore your backup copy or restore the file from the original /opt/etc/cupsd.conf.O file.
  3. I can't get cups-lpd to work as standalone server (get the log entry Unknown LPD command 0x00! when trying to start it).
    • It doesn't support it yet. Only inetd/xinetd is supported.
  4. CUPS doesn't see my printer device.
    • Make sure that the driver, printer.o or printer.c, is loaded by typing lsmod.
    • Try to print directly to the device as is descibed under point 4 in the "can't print from Samba"-section.
    • Check /var/log/messages as you connect the printer. To do this, type # tail -f /var/log/messages before connecting the printer, to exit viewing mode, press ctrl+c. Verify that it is (a) recognized by the kernel and (b) picked up by the printer driver.
  5. lpq -> status says printer is disabled the following should resolve problem provided the reason why the printer was disabled has been resolved: /opt/bin/enable [printer name]
  6. I can't print from Samba - I get an error message saying "unable to print" or similar.
    • First check that you smb.conf has been modified correctly (e.g. like in on this page).
    • Make sure that you have the file /etc/nsswitch.conf containing the line: hosts: files dns
    • Check that the name of the spool directory is correctly set in the /unslung/rc.samba diversion script. In the original version of the script there was a spelling error so that the actual spool directory created /opt/var/spool/Samba did not match the entry in smb.conf.
    • Check that you can reach the printer. Perform a "print to file" on your Windows machine. Sometimes "Print to file" appears as an option when you chose the printer. Otherwise you must install it as a separate printer in Windows. If you must install it, make certain "print to file" is set to use the specific printer driver in Windows that works with the printer you are testing. Otherwise nothing will happen when you do the following test... Transfer the file to the NSLU2 and do cat filename > /dev/lp0. If this works, the printer and drivers on the NSLU2 work.
    • Then try printing it from cups (use lpr -o raw filename). If this works, CUPS works. If not, CUPS may have incorrectly specified the Device URI when you selected "USB Printer #1" via the web Add New Printer interface. Fix it by deleting & re-adding the printer, but this time choose "LPD/LPR Host or Printer", and specify the correct Device URI (usb:/dev/lp0).
    • Look at the Samba spool directory (where all printer jobs are stored by Samba before being submitted to CUPS) /opt/var/spool/Samba and check the modification time to see if your file has been stored there and check the directory to see if the spool file is still there and has the expected size.
    • Check that you are not out of disk space.
  7. The Windows print or properties dialog is slow coming up (~ 30 seconds) when accessing the network printer over IPP
    • At least one user faced this problem when using an IP address (rather than a name) to refer to the network printer. The delay seems to be caused by Windows performing repeated nonsensical DNS/NetBIOS lookups. The problem went away by changing the IP address in the Windows printer configuration to the NetBIOS name of the print server (e.g. changes to http://PrintServer:631/printers/hp990c).
    • You may need to add your slug print server IP address to your Windows hosts file to enable this.
    • WinXP appears to ignore Internet Options=>Connections=>LAN Settings=>Advanced=>Exceptions=>Do not use proxy server for... settings when trying to set up a printer using the http://slug_name_here:631:/printers/hp990c approach the first time. Disable the proxy altogether so WinXP will see and configure the printer on the local LAN. Can then add entries in the "Do not use proxy..." field for the slug print server address(es) and re-enable the proxy settings. Printing then works while in both the proxied and non-proxied environment.
  8. The /opt/var/spool/Samba directory is filling up / Print jobs are not being deleted after being printed
    • Be sure the lpd command in your rc.samba and/or smb.conf files has a -r at the end. Without it, spool files will not be automatically deleted after being printed. Note that the -r may be missing in the rc.samba file that ships with the unslung cups package.
  9. Samba looks for the lp & lpstat commands in /usr/bin. Mine were in /opt/bin. After making symbolic links to the /usr/bin directory printing finally worked. There must be a more elegant way.
  10. Child exited with status 1!
    • go back to the config file and to the ip address. make sure that the last number is a 0.


Building the printer driver yourself (optional)

It is a terrible kludge, but pretty straight forward. Basic structure is this:

  1. Create a cross build system (follow GettingStarted)
  2. Build unslung-image
  3. Enable USB printing for the able kernel
  4. Delete kernel stamps and work directories
  5. Rebuild
  6. Go to able kernel work area and replace printer.c in drivers/usb, drivers/usb_backup and drivers/usb_org with a non-devfs version.
  7. Delete printer.o in drivers/usb
  8. Delete stamps for able kernel: do_compile, do_deploy, do_package, do_populate_staging
  9. Rebuild
  10. The module can then be picked up from ${OEBUILD}/tmp/work/unslung-able-kernel-2.3r25-r7/install/


Note: Even though I use the unslung-able kernel area to do this, it is meant for unslung-standard. The able kernel directories are used in order not to mess up the standard kernel build (so I can always reference the actual, unmodified unslung-standard kernel source).

Getting it running for testing

  1. On the command prompt run insmod /opt/lib/modules/printer.o - it will complain about tainted modules. Life is hard, boys and girls, so ignore it.
  2. Check with lsmod that printer.o has been loaded
  3. Create the printer device using mknod /dev/lp0 c 180 0
  4. Check that /dev/lp0 exists

Testing it

  1. Hook up a USB-printer that you already have configured in your system (I assume you are running Windows here - if you don't you will still know what to do).
  2. Make a printout to file on your Windows machine via the printer driver used for that printer (this is done via "File -> Print", selecting the correct printer, checking "Print to file" and supplying testfile.prn as file name when prompted).
  3. Transfer testfile.prn to your slug (make sure to use binary mode if using FTP)
  4. Find the file and do cat testfile.prn > /dev/lp0
  5. Now it should print

Making the installation permanent

This works until you reboot, for two reasons:

  • The module printer.o has to be loaded on startup - a startup script will be provided.
  • The /dev files system is not persistant - must be done to the flash file system.

Notes & Potential Problems

Place user notes and potential issues below this. If you place them "inline", we end up with a page that is non-sensical and worthless due to the conflicting and/or repeated information.

Issue with pstoraster

This seems not to work for me! The ESP package generally contains the pstoraster filter which is needed to convert all postscript files sent from Linux based clients. This file is not included in the Unslung package and the i386 filter can't be used. The second thing is that the i386 filter uses a ghostscript binary for convertion - that's not included, too. Perhaps anybody who got this working could fix this part of the description - the actual description is very disappointing when trying it out. (Printing from Win$ clients works due to the fact they sent prefiltered files (raw files) for the printer.)

BEN With CUPS and unslung6.8, to print from vista (home premium), the name of the printer must be simple, like 'laser' with no upper or special characters, otherwize the installation works in vista but nothing is printed. Seems to be a bug in vista. In windows 2000 the problem s not present. ('HL1260eUSB?' don't work)


The issue with pstoraster is fixed in release 8.62 of ghostscript. I run debian on my slug and upgraded to "Lenny", which includes a version of ghostscript (8.62.dfsg.1-3.1) that contains the fix.

Lars Persson Fink

USB Printer (may not be needed).

I managed to configure USB printing like this:

  1. Create device entry /dev/usb/lp0 (e.g. by copying /dev/lp0), give full permissions (777)
  2. How do you do this? With mknod? What are the major and minor node numbers?
  3. Connect printer, verify that the printer module is loaded
  4. Assume you do this by # tail -f /var/log/messages and look for printer.c, use ctrl+c to escape from tail
  5. Run the CUPS USB backend to get your personal printer URL



4. Copy the URL (here: usb://HP/DESKJET%20930C?serial=HU1591R1XYJJ) into your /opt/etc/cups/printers.conf
5. Start CUPS, print...

Stefan Willmeroth

Print test page from interface problem.

When you get the CUPS web interface working don't bother with the 'Print Test Page' option - it doesn't work. It will report that a test page has been printed but nothing happens. This doesn't mean that CUPS isn't working! The way to test printing is via a client machine.


CUPS 1.2.7

Cups refuses to print, remote clients inform printing was paused. Checking the logs, they say premission denied to open print file.

  1. Simply "chmod u+s /opt/sbin/cupsd" ad root and restart it by running "/opt/etc/init.d/S88cups restart"
  2. printing should now work. This means when the super user (root) runs the file, root has same privileges as the file owner

Marcelo Vianna

Additional Printers?

Note that the CUPS web interface will automatically look in /dev/lp0 onwards, so you may as well mknod those as well using the same major/minor device numbers. Also note the changes in CUPS 1.2.2, which are shown above. These changes will probably cause that this doesn't work anymore.

for me the /opt/lib/cups/backend/usb command brings no result so i got my usb printer samsung clp-300 not working and then i tried /opt/lib/cups/backend/parallel and this brings me a : direct parallel:/dev/lp0 "Samsung CLP-300" "Samsung CLP-300 LPT #1" "MFG:Samsung;CMD:SPLC;MDL:CLP-300;CLS:PRINTER;STATUS:BUSY;" after that i add this line in my printers.conf: "DeviceURL? parallel:/dev/lp0" and it works fine

Dirk H

After a long struggle to print from my Samsung Ml-1740, I finally figured out that /opt/etc/cups/printers.conf needs to be changed to: DeviceURI? parallel:/dev/lp0.

  • Editing the /opt/etc/cups/cupsd.conf *

Open /opt/etc/cups/cupsd.conf with a editer

    ex. nano /opt/etc/cups/cupsd.conf

There are 2 places that you have to edit 1.Go all the way down to

   ## Restrict access to local domain
   Order Deny,Allow
   Deny From All
   Allow From
   Allow From

If your network is ,for example, on the 192.168.0.xxx network then it should work.

If your network is on the 192.168.1.xxx change

     "Allow From" to
     "Allow From

2. Go up a few lines and you will see a similar list, change that as well.


Note that the "/24" represents 24 mask bits - in other words a netmask of NOT the range of the last octet of the IP address.

Armin 10-18-2010 Please note that newest version 1.4.4 of cups does not supply module printer.o anymore. You have to install manually as follows: Telnet or SSH into slug

wget http://ipkg.nslu2-linux.org/feeds/unslung/modules/cross/unstable/kernel-module-printer_2.4.22.l2.3r76-r0_nslu2be.ipk

ipkg install /root/kernel-module-printer_2.4.22.l2.3r76-r0_nslu2be.ipk

Restart cups:

/opt/etc/init.d/S88cups stop

/opt/etc/init.d/S88cups start

Now your printer is available again under /dev/lp0


This page is password protected.

The password is "printer". Let's see if that stops the automated wiki spam. OK