Creating a raw printer queue in CUPS (host) and adding them through CUPS (client)

Photon picture Photon · Oct 12, 2014 · Viewed 20.8k times · Source

I want to make my RasPi act as a little print and file server in a small home network consisting of three Linux clients. Unfortunately, Brother provides only binary drivers for x86, so I cannot run my Brother printer on the RasPi. However, I found a blog entry proposing to create a raw queue on the RasPi's CUPS install and access this queue from the clients using binary drivers installed on them. Here is the blog entry: http://chemdroid.net/en/raspberry-pi/36-raspberry-pi-as-print-server

Unfortunately, the author doesn't describe in much details how to create a raw queue on the RasPi and how to access it from the clients, instead he concentrates on describing the installation of a non-standard CUPS version on the RasPi.

I found a similar question here: CUPS bypassing interface However, I don't fully understand the answer. Does the "How to setup CUPS 'raw' queues" section in the answer there refer to the host (the RasPi)? If so, what is the socket/port that I have to specify? The printer is a Brother HL-2030, connected through USB.

When accessing the printer from the clients, the answer says how to edit the 'lp' command, however I want to use the shared printer through CUPS, so how do I proceed here?

Thanks for any input!

Photon

Answer

tresf picture tresf · Aug 16, 2016

[...] how to create a raw queue on the RasPi

  1. From the Pi (or an SSH/Putty session) add yourself to the lpadmin group

    sudo adduser $USER lpadmin

  2. Enable remote administration (or manually)

    sudo cupsctl --remote-admin

  3. Cycle CUPS to make sure it likes you

    sudo service cups restart -- OR -- sudo /etc/init.d/cups restart

  4. Navigate to http://localhost:631 (of if you don't have keyboard access: http://<ip_address_of_pi>:631 from another machine)

  5. Navigate to Administration, Add Printer

    a. When prompted to login, use your standard username and password.

    b. Note: If the password doesn't work, sudo reboot, try again.

  6. AppSocket/HP JetDirect, then:

    a. Network Attached: socket://<ip_of_printer>:9100

    b. USB Attached: socket://<usb_handle> find using lpinfo -v |grep usb:, you don't need the "? location=1a200000" information. Assumes proper driver is installed first. Note, if your device driver isn't offered for ARM architecture, see this article.

  7. Make: Raw (NOT Generic)

  8. Name It, Share It, Continue
  9. Go back to CUPS Administration page at http://localhost:631 a. Enable printer sharing via:

    .[X] Share printers connected to this system

    . [X] Allow printing from the internet

[...] how to access it from the clients

This varies greatly between platforms.

  1. The general URL format is: http://<ip_of_pi>:631/printers/<name_used_in_step_8_above>

    a. Windows: Devices and Printers, Add Printer (NOT Add Device, it's in the toolbar), Manually Select/Not Listed, Local or Network Printer with Manual Settings, Create a new port, Standard TCP/IP Port

    b. MacOS: Enable, then use the CUPS web interface. The GUI can't do it. You'll need to be in admin group and know your user id (e.g. echo $USER)

    c. Linux: Using the GUI or CUPS, Network Printer, AppSocket/HP JetDirect