• Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Search
  • Register
  • Login
Netgate Discussion Forum
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Search
  • Register
  • Login

Howto: Cups Printing in pfSense 2.0

Documentation
17
35
57.4k
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • K
    kevev
    last edited by Feb 19, 2013, 4:03 AM

    @ncat:

    Is it possible to use USB printer? My CUPS finds nothing =( printer at

    kernel: ugen0.2: <samsung> at usbus0</samsung>
    

    Did you read the instructions given by the cups package after install? It may help.
    Read the part about "USB printer" at the bottom. I have not tried this so I do not know if it will work.
    Good luck.

    To enable printing with local printer you need to give group 'cups'
    r/w access to printer device:
    
    1) Add following to /etc/devfs.rules (create if it doesn't exist):
    
    [system=10]
    add path 'unlpt*' mode 0660 group cups
    add path 'ulpt*' mode 0660 group cups
    add path 'lpt*' mode 0660 group cups
    
    2) And following to /etc/rc.conf:
    
    devfs_system_ruleset="system"
    
    3) Restart devfs: /etc/rc.d/devfs restart
    
    If your system supports 'devd' you can copy
    $PREFIX/share/examples/cups/lpt-cupsd.conf to $PREFIX/etc/devd/
    
    To enable printing under Gimp and MS-Windows clients do the following:
    
    1) Uncomment application/octet-stream line in mime.types
    2) Uncomment application/octet-stream line in mime.convs
    3) Restart cupsd
    
    If you are using libusb, it is important that no device driver, e.g.
    ulpt(4) is attached to the device you wish to use. In this case please
    ensure the cups user and group has read/write access to /dev/ugen*
    
    If you are using a USB printer wtih FreeBSD 8.0 or later, you will
    need to find the proper /dev/usb/* device pointed at by the /dev/ugen*
    entry. Follow the instructions for devfs.rules as above, but append a
    rule similar to the following for a printer attached as /dev/ugen0.2:
    
    add path 'usb/0.2.*' mode 0660 group cups
    
    1 Reply Last reply Reply Quote 0
    • K
      kevev
      last edited by Feb 20, 2013, 7:03 PM Feb 19, 2013, 4:09 AM

      If anyone is trying to do an embedded "CF" install on a read only filesystem, here are some steps:

      1.) Remount the root filesystem read/write before installing/modifying anything.

      mount -urw /

      2.) Set the pkg_add temp directory to somewhere that has space.

      setenv PKG_TMPDIR /tmp1
          setenv TMPDIR /tmp1

      Note: If you notice any of the pkg_add commands failing with error "Broken pipe" while installing
                 dependencies, you will need to install the dependencies manually. I would start with the last
                 package listed right before the error and install each manually, one at a time.

      Update

      This will not work with the Prolific Technology Inc. usb-to-parallel adapters as nanobsd does not seem to have the module/s for this chip.
      I am not sure about other usb-to-parallel devices.

      1 Reply Last reply Reply Quote 0
      • P
        phreshjive
        last edited by Apr 11, 2013, 3:55 AM Apr 11, 2013, 2:54 AM

        Running 2.1Beta, followed the instructions.  When I try running /usr/local/etc/rc.d/run_cups.sh, it returns Command not found.  Also rebooted.  Still cannot connect to 631.

        Checked the error log (/var/log/cups/error_log) which states: E [10/Apr/2013:22:37:15 -0400] Syntax error on line 33.

        Anyone have a clue?

        Edit: Solved my own problem… spaces are inserted which need to be deleted in various lines (e.g. 33, 42...).  Sorry for bumping the thread)

        Edit2: How would one go about upgrading to the latest version of CUPS?

        1 Reply Last reply Reply Quote 0
        • N
          ncat
          last edited by Sep 15, 2013, 5:46 PM

          when trying to add new printer - cups requires authentication. What credentials should I use? root + %system pass% Or %pfsense login% + %system pass% do not work…

          1 Reply Last reply Reply Quote 0
          • K
            kejianshi
            last edited by Sep 15, 2013, 5:53 PM

            http://en.wikipedia.org/wiki/Attack_surface

            1 Reply Last reply Reply Quote 0
            • N
              ncat
              last edited by Sep 15, 2013, 7:30 PM Sep 15, 2013, 7:27 PM

              @kejianshi:

              http://en.wikipedia.org/wiki/Attack_surface

              Ok, But still no answer to my question  :)
              I should have missed something during installation or not?
              It seems that the easiest way to buy a print server but he needs a place, one more outlet for additional power adapter and so on.

              1 Reply Last reply Reply Quote 0
              • K
                kejianshi
                last edited by Sep 15, 2013, 7:40 PM Sep 15, 2013, 7:34 PM

                You have samba on this also?  I'm just looking at my CUPs settup and comparing.

                (for making system changes, I'd think you would need to use the pfsense root username and password)

                1 Reply Last reply Reply Quote 0
                • N
                  ncat
                  last edited by Sep 15, 2013, 9:11 PM

                  no i have no samba…
                  and all login-password pairs which come to mind dont fits..

                  1 Reply Last reply Reply Quote 0
                  • K
                    kejianshi
                    last edited by Sep 15, 2013, 9:14 PM

                    I'm not sure - When I setup  CUPs on this system, I don't remember needing to do anything with passwords, but that linux and not BSD.  I did need to configure CUPs to allow guest printing via IPP without usernames or pass.

                    1 Reply Last reply Reply Quote 0
                    • N
                      ncat
                      last edited by Sep 15, 2013, 10:27 PM Sep 15, 2013, 10:20 PM

                      well, maybe you can help me with another issues?

                      1. It seems strange that when i plug printer to usb port i have only one message:
                      kernel: ugen0.2: <samsung> at usbus0</samsung>
                      

                      I guess that normally there should be something like this

                      ugen2.2: <samsung> at usbus2
                      ulpt0: <samsung 0="" 2="" samsung="" ml-2010,="" class="" 0,="" rev="" 1.10="" 1.00,="" addr=""> on usbus2</samsung></samsung>
                      
                      1. my devfs.rules seems to be correct:
                      
                      [2.0.1-RELEASE][admin@pfsense.ncat.routerpc]/dev(41): ls -l
                      total 3
                      <...>
                      lrwxr-xr-x  1 root  wheel            9 Aug  2 22:51 ugen0.1 -> usb/0.1.0
                      lrw-rw----  1 root  cups             9 Sep 16 01:59 ugen0.2 -> usb/0.2.0
                      lrwxr-xr-x  1 root  wheel            9 Aug  2 22:51 ugen1.1 -> usb/1.1.0
                      lrwxr-xr-x  1 root  wheel            9 Aug  2 22:51 ugen2.1 -> usb/2.1.0
                      lrwxr-xr-x  1 root  wheel            9 Aug  2 22:51 ugen3.1 -> usb/3.1.0
                      lrwxr-xr-x  1 root  wheel            9 Aug  2 22:51 ugen4.1 -> usb/4.1.0
                      lrwxr-xr-x  1 root  wheel            9 Aug  2 22:51 ugen4.2 -> usb/4.2.0
                      lrwxr-xr-x  1 root  wheel            6 Aug  2 22:51 urandom -> random
                      <...>
                      
                      

                      3)additionally i installed SpliX with pkg_add and now it is also seems to work ok:

                      /usr/local(17): lpinfo --make-and-model 'Samsung ML-2010' -m
                      samsung/ml2010.ppd Samsung ML-2010, SpliX V. 2.0.0
                      
                      
                      /usr/local/share/cups/model(36): ls -l
                      total 21
                      drwxr-xr-x  2 root  wheel   512 Sep 15 20:02 dell
                      -rw-r--r--  1 root  wheel  9645 Jun 30  2010 pxlcolor.ppd
                      -rw-r--r--  1 root  wheel  9453 Jun 30  2010 pxlmono.ppd
                      drwxr-xr-x  2 root  wheel  1024 Sep 15 20:02 samsung
                      drwxr-xr-x  2 root  wheel   512 Sep 15 20:02 xerox
                      
                      

                      4)Is lpinfo -v output correct?

                      /usr/local(18): lpinfo -v
                      Password for root on localhost?
                      network http
                      network ipp
                      network lpd
                      network socket
                      
                      

                      I can't add printer using lpadmin. Maybe smth wrong with the command:

                      /usr/local(21): lpadmin -E -p net_printer -v file:/dev/usb/0.2.0 -m "samsung/ml2010.ppd Samsung ML-2010, SpliX V. 2.0.0" -L "ML-2015 home router" -E
                      lpadmin: Unable to connect to server: Bad file descriptor
                      
                      

                      And i can't add printer using Web interface: http://clip2net.com/s/5L6TRv (sorry for Russian language)

                      1 Reply Last reply Reply Quote 0
                      • K
                        kejianshi
                        last edited by Sep 15, 2013, 10:58 PM

                        Nope - Never used pfsense with CUPs.  I'm not sure what to recommend for you and I'm also not sure if its recommended.

                        1 Reply Last reply Reply Quote 0
                        • K
                          kevev
                          last edited by Sep 19, 2013, 4:27 AM Sep 19, 2013, 4:23 AM

                          Your issue with the password may be Chrome browser if you are using it. I just tested and that browser will not allow loading the "Add Printer" screen. Try Firefox or IE.

                          If you are using a USB-to-LTP adapter like me you should see the device:

                          [2.0.2-RELEASE][root@router.localdomain]/root(62): ls /dev/|grep lpt
                          ulpt0
                          unlpt0

                          [2.0.2-RELEASE][root@router.localdomain]/root(63): lpinfo -v
                          Password for root on localhost?
                          network http
                          network ipp
                          network lpd
                          network socket
                          direct usb:/dev/ulpt0
                          direct usb:/dev/unlpt0

                          @ncat:

                          well, maybe you can help me with another issues?

                          1. It seems strange that when i plug printer to usb port i have only one message:
                          kernel: ugen0.2: <samsung> at usbus0</samsung>
                          

                          I guess that normally there should be something like this

                          ugen2.2: <samsung> at usbus2
                          ulpt0: <samsung 0="" 2="" samsung="" ml-2010,="" class="" 0,="" rev="" 1.10="" 1.00,="" addr=""> on usbus2</samsung></samsung>
                          
                          1. my devfs.rules seems to be correct:
                          
                          [2.0.1-RELEASE][admin@pfsense.ncat.routerpc]/dev(41): ls -l
                          total 3
                          <...>
                          lrwxr-xr-x  1 root  wheel            9 Aug  2 22:51 ugen0.1 -> usb/0.1.0
                          lrw-rw----  1 root  cups             9 Sep 16 01:59 ugen0.2 -> usb/0.2.0
                          lrwxr-xr-x  1 root  wheel            9 Aug  2 22:51 ugen1.1 -> usb/1.1.0
                          lrwxr-xr-x  1 root  wheel            9 Aug  2 22:51 ugen2.1 -> usb/2.1.0
                          lrwxr-xr-x  1 root  wheel            9 Aug  2 22:51 ugen3.1 -> usb/3.1.0
                          lrwxr-xr-x  1 root  wheel            9 Aug  2 22:51 ugen4.1 -> usb/4.1.0
                          lrwxr-xr-x  1 root  wheel            9 Aug  2 22:51 ugen4.2 -> usb/4.2.0
                          lrwxr-xr-x  1 root  wheel            6 Aug  2 22:51 urandom -> random
                          <...>
                          
                          

                          3)additionally i installed SpliX with pkg_add and now it is also seems to work ok:

                          /usr/local(17): lpinfo --make-and-model 'Samsung ML-2010' -m
                          samsung/ml2010.ppd Samsung ML-2010, SpliX V. 2.0.0
                          
                          
                          /usr/local/share/cups/model(36): ls -l
                          total 21
                          drwxr-xr-x  2 root  wheel   512 Sep 15 20:02 dell
                          -rw-r--r--  1 root  wheel  9645 Jun 30  2010 pxlcolor.ppd
                          -rw-r--r--  1 root  wheel  9453 Jun 30  2010 pxlmono.ppd
                          drwxr-xr-x  2 root  wheel  1024 Sep 15 20:02 samsung
                          drwxr-xr-x  2 root  wheel   512 Sep 15 20:02 xerox
                          
                          

                          4)Is lpinfo -v output correct?

                          /usr/local(18): lpinfo -v
                          Password for root on localhost?
                          network http
                          network ipp
                          network lpd
                          network socket
                          
                          

                          I can't add printer using lpadmin. Maybe smth wrong with the command:

                          /usr/local(21): lpadmin -E -p net_printer -v file:/dev/usb/0.2.0 -m "samsung/ml2010.ppd Samsung ML-2010, SpliX V. 2.0.0" -L "ML-2015 home router" -E
                          lpadmin: Unable to connect to server: Bad file descriptor
                          
                          

                          And i can't add printer using Web interface: http://clip2net.com/s/5L6TRv (sorry for Russian language)

                          1 Reply Last reply Reply Quote 0
                          • N
                            ncat
                            last edited by Sep 19, 2013, 7:52 PM Sep 19, 2013, 7:49 PM

                            Thank you for help. IE also wants login and password.
                            Opera - same thing.
                            Could you share your cupsd.conf (/usr/local/etc/cups.cupsd.conf)?

                            As for interface - I use usb, not usb-to-lpt converter (ls /dev/|grep lpt shows nothing)
                            Maybe I should specify login and pass for cups group? Or what group? Ooohh…  :(

                            1 Reply Last reply Reply Quote 0
                            • K
                              kevev
                              last edited by Sep 27, 2013, 3:22 AM

                              User is root or admin. Both work. Password should be the same for admin and root unless you changed them.

                              cupsd.conf:

                              DefaultEncryption Never
                              LogLevel warn
                              SystemGroup wheel
                              # Allow remote access
                              Port 631
                              Listen /var/run/cups.sock
                              # Enable printer sharing and shared printers.
                              Browsing On
                              BrowseOrder allow,deny
                              BrowseAllow all
                              BrowseRemoteProtocols CUPS
                              BrowseAddress @LOCAL
                              BrowseLocalProtocols CUPS
                              DefaultAuthType Basic
                               <location># Allow shared printing and remote administration...
                                Order allow,deny
                                Allow @LOCAL</location> 
                               <location admin=""># Allow remote administration...
                                Order allow,deny
                                Allow @LOCAL</location> 
                               <location admin="" conf="">AuthType Default
                                Require user @SYSTEM
                                # Allow remote access to the configuration files...
                                Order allow,deny
                                Allow @LOCAL</location> 
                               <policy default=""><limit send-document="" send-uri="" hold-job="" release-job="" restart-job="" purge-jobs="" set-job-attributes="" create-job-subscription="" renew-subscription="" cancel-subscription="" get-notifications="" reprocess-job="" cancel-current-job="" suspend-current-job="" resume-job="" cups-move-job="" cups-get-document="">Require user @OWNER @SYSTEM
                                  Order deny,allow</limit> 
                                <limit cups-add-modify-printer="" cups-delete-printer="" cups-add-modify-class="" cups-delete-class="" cups-set-default="" cups-get-devices="">AuthType Default
                                  Require user @SYSTEM
                                  Order deny,allow</limit> 
                                <limit pause-printer="" resume-printer="" enable-printer="" disable-printer="" pause-printer-after-current-job="" hold-new-jobs="" release-held-new-jobs="" deactivate-printer="" activate-printer="" restart-printer="" shutdown-printer="" startup-printer="" promote-job="" schedule-job-after="" cups-accept-jobs="" cups-reject-jobs="">AuthType Default
                                  Require user @SYSTEM
                                  Order deny,allow</limit> 
                                <limit cups-authenticate-job="">Require user @OWNER @SYSTEM
                                  Order deny,allow</limit> 
                                <limit all="">Order deny,allow</limit></policy> 
                               <policy authenticated=""><limit create-job="" print-job="" print-uri="">AuthType Default
                                Order deny,allow</limit> 
                                <limit send-document="" send-uri="" hold-job="" release-job="" restart-job="" purge-jobs="" set-job-attributes="" create-job-subscription="" renew-subscription="" cancel-subscription="" get-notifications="" reprocess-job="" cancel-current-job="" suspend-current-job="" resume-job="" cups-move-job="" cups-get-document="">AuthType Default
                              Require user @OWNER @SYSTEM
                              Order deny,allow</limit> 
                                <limit cups-add-modify-printer="" cups-delete-printer="" cups-add-modify-class="" cups-delete-class="" cups-set-default="">AuthType Default
                                Require user @SYSTEM
                                Order deny,allow</limit> 
                                <limit pause-printer="" resume-printer="" enable-printer="" disable-printer="" pause-printer-after-current-job="" hold-new-jobs="" release-held-new-jobs="" deactivate-printer="" activate-printer="" restart-printer="" shutdown-printer="" startup-printer="" promote-job="" schedule-job-after="" cups-accept-jobs="" cups-reject-jobs="">AuthType Default
                                  Require user @SYSTEM
                                  Order deny,allow</limit> 
                                <limit cancel-job="" cups-authenticate-job="">AuthType Default
                                    Require user @OWNER @SYSTEM
                                    Order deny,allow</limit> 
                                <limit all="">Order deny,allow</limit></policy> 
                              BrowseWebIF Yes
                              
                              1 Reply Last reply Reply Quote 0
                              • H
                                hanbaoxu
                                last edited by Oct 20, 2013, 8:06 PM

                                Found this article for pfSense 2.1: http://www.buildyourown.info/router/cups-printing-pfsense.html
                                Works perfect on pfSense 2.1 x86 CF

                                1 Reply Last reply Reply Quote 0
                                • K
                                  kevev
                                  last edited by Oct 21, 2013, 8:33 PM

                                  @hanbaoxu:

                                  Found this article for pfSense 2.1: http://www.buildyourown.info/router/cups-printing-pfsense.html
                                  Works perfect on pfSense 2.1 x86 CF

                                  Nice find!

                                  1 Reply Last reply Reply Quote 0
                                  • D
                                    daverowland
                                    last edited by May 23, 2014, 8:57 AM

                                    @kevev:

                                    @hanbaoxu:

                                    Found this article for pfSense 2.1: http://www.buildyourown.info/router/cups-printing-pfsense.html
                                    Works perfect on pfSense 2.1 x86 CF

                                    Nice find!

                                    This was a good find however slightly dated as Cups is now updated a fair bit.  I did try and work out how to update it but struggled as i could add to a package that was already on the machine.  Is there a pkg upgrade command in FreeBSD?

                                    I have been on the web interface 631, search printers work but didn't show mine but other printers but "Add printer" just asks for my login passwords and then returns me to the main page.  urgh… not what I was hoping for.

                                    1 Reply Last reply Reply Quote 0
                                    • T
                                      tumbler
                                      last edited by Jun 11, 2014, 9:12 PM

                                      nice one!
                                      working fine with my hp 1100 and a prolific interface on v2.1.3
                                      a few remarks;

                                      1>
                                      i used this as the "echo -e" line screwed up my rule somehow

                                      echo "[system=10]" >/etc/devfs.rules
                                      echo "add path 'unlpt*' mode 0660 group cups" >> /etc/devfs.rules
                                      echo "add path 'ulpt*' mode 0660 group cups" >> /etc/devfs.rules
                                      echo "add path 'lpt*' mode 0660 group cups" >> /etc/devfs.rules
                                      echo "add path 'usb/0.2.*' mode 0660 group cups" >> /etc/devfs.rules

                                      2> i had to check to remove blanc lines as in :
                                      "Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications

                                      Reprocess-Job Cancel-Current-Job S"

                                      1 Reply Last reply Reply Quote 0
                                      • A
                                        Amit
                                        last edited by Jul 22, 2014, 11:06 AM

                                        Hello everyone
                                        I am new On mac , I have one issue
                                        I have to write one virtual printer driver ,when i click on print job then I have to open one my application on print .
                                        How can i do that??
                                        Please refer me anything

                                        1 Reply Last reply Reply Quote 0
                                        • w0wW
                                          w0w
                                          last edited by Dec 13, 2014, 9:01 AM Dec 13, 2014, 8:53 AM

                                          I want to add my config tricks into this topic
                                          instead of using default rc.conf create and use rc.conf.local in /etc/
                                          if you have some stupid printer like HP 10xx LaserJet series - for example -1020, you will need to upload the frimware to the printer every time it is connected / turned on.
                                          So I am running another one startup script, that checks devd.conf on startup and adds some code to it from manually created devd.conf.local (that is not processed by default! you can use any name whatever you want for this file)

                                          
                                          #!/bin/sh
                                          
                                          if  /usr/bin/sed -n '/sihp1020.dl/p' /etc/devd.conf | /usr/bin/grep -e sihp1020.dl | /usr/bin/grep -v grep > /dev/null ; then
                                          	echo "not needed to modify"
                                          	else
                                          	cat /etc/devd.conf.local >> /etc/devd.conf | /etc/rc.d/devd restart | cat /usr/local/share/foo2zjs/firmware/sihp1020.dl > /dev/ulpt0
                                          fi
                                          
                                          exit 0
                                          
                                          

                                          devd.conf.local :

                                          
                                          # firmware for HP Laserjet 1020 printer
                                          attach 100 {
                                          	 device-name "ulpt[0-9]+";
                                                  match "vendor" "0x03f0";
                                                  match "product" "0x2b17";
                                                  action "cat /usr/local/share/foo2zjs/firmware/sihp1020.dl > /dev/$device-name";
                                          
                                          };  
                                          
                                          

                                          This check applied needed configuration to devd.conf every pfsense upgrade, even 2.2.

                                          Now if you want to make your CUPS working on 2.2 you will need to install new CUPS package, 1.7.3. But before, if you have an USB printer,  you will need to start ulpt.ko module that is not included in pfsense anymore. I have requested ulpt to be included, waiting for answer.
                                          Download the same version of freebsd (boot CD only)  that pfsense 2.2 using and extract ulpt.ko from it. Put it into the /boot/kernel/ and place the
                                              following line in loader.conf:

                                          ulpt_load="YES"
                                          restart your pfsense to check if printer is detected.
                                          Next you will need to install CUPS
                                          type in shell:

                                          pkg install

                                          and tell 'y'es once when it asks you
                                          then type:
                                                      pkg install CUPS
                                          after that it should install CUPS 1.7.3 on your firewall
                                          if you have had CUPS installed before then configuration remains and should work.
                                          Unfortunately my 1020 is not printing with this version of CUPS, but I did not researched it deeply now. The CUPS itself is running and allows to configure printers.

                                          1 Reply Last reply Reply Quote 0
                                          • First post
                                            Last post
                                          Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.