This is an old revision of the document!
Table of Contents
Setting up a print server for home use out of any old Slackware box
After recently upgrading my home wifi network to use wpa2 my old edimax wifi print server stopped working due to incompatibility with wpa2. I did not want to have to leave a PC on all the time neither did I want to directly connect the PC I wanted to print from to the printer itself.
The most elegant solution would have been to setup some low power ARM device (naturally running Slackware ARM) to become a print server.
I know it's not a difficult thing but since the last time I did something like this a lot of things have changed so I thought that other people could benefit from a quickstart to get going really fast … so here we go:
Setting up the printer on the print server
First thing you might find handy to know is that it is not mandatory to have the correct print filter for the printer on the print server, the client is mandated with that burden. The print server needs only have the printer configured as a raw printer.
The printer server will need cups, cyrus-sasl and openssl packages (openssl is only mandatory if you wish to remotely administer cups). If your printer has a usb interface, like most currently, it will be necessary to also have these packages to assist the usblp kernel module: libusb, libusb-compat and usbutils. Once the packages are installed if you then plug in the printer udev should automatically load usblp kernel module and lsusb should list, possibly amongst other things, your printer. Once you have the packages and printer sorted out you can then just give execute permissions to /etc/rc.d/rc.cups and then start it. If you intend to remotely administer it you might like to execute this command to allow it:
cupsctl --remote-admin
then fire up your browser and access
http://<your print server ip>:631 or http://localhost:631 on the printserver itself
For the most part you can use links on a text terminal on the print-server itself the only things that not working right on links are some combo box selections, that's why I then allowed for remote administration. Go ahead and configure the local printer as a raw printer. Be sure to check the box for a shared printer.You can call the printer whatever you like but for convenience in this guide we will call it “test”. Your /etc/cups/printers.conf should look like this:
<Printer test> UUID urn:uuid:8d60a6be-4d86-3abf-5b8d-d5a03f10a753 Info test printer Location test location DeviceURI usb://Samsung/CLP-510?serial=xxxxxxxxxxxxx. #your setup will depend on the printer brand on how it is connected to the print server State Idle StateTime 16147 Type 4 Accepting Yes Shared Yes JobSheets none none QuotaPeriod 0 PageLimit 0 KLimit 0 OpPolicy default ErrorPolicy abort-job </Printer>
If you have the drivers for your printer you can optionally configure it with the correct print filter but it's not mandatory. If you do have them it might be a good idea to configure it right just to check that the printserver can correctly use the printer.
Once the printer is configured you can then instruct cups to accept remote printing requests:
cupsctl --share-printers --remote-any --remote-admin
If you're not interested to share the printer to outside your Local Area Net just remove the “–remote-any” option and by default cups will only serve printing requests from your LAN.
Setting up the printer on the print clients
Now go on the PC's where you want to access the printer and configure an ipp remote printer with the correct driver for the printer. The /etc/cups/printers.conf should have an entry similar to this:
<Printer test> UUID urn:uuid:6abca077-c999-3d8a-5ce0-41b7bd3c2ddf AuthInfoRequired none Info test Location study room MakeModel Samsung CLP-510, 2.0.0 #in this case I setup splix driver for the samsung printer but this entirely depends on my setup DeviceURI ipp://<print server ip address>:631/printers/test State Idle StateTime 1387373858 Type 8400972 Accepting Yes Shared No JobSheets none none QuotaPeriod 0 PageLimit 0 KLimit 0 OpPolicy default ErrorPolicy abort-job </Printer>
You may now try printing a test page on the client PC.