Greetings:

This post is a result of 2 days of thrashing trying to get FreeBSD (4.9) to act as a print server to Win2K/XP clients. I have included links to a how-to that I wrote that includes a full install and configuration of CUPS and Samba so that local (connected to server) printers print locally, and so that that local printer(s) can then be shared (served) as network printer amongst Windows 2k/XP clients.

My original post on 5/21/2004 "Network printing question: apsfilter + samba over Win2k network" contained what I had accomplished, so far.

So... To make a long story short

I have apsfilter and CUPS and Samba installed and working.

The server prints to it's local (via parallel port) printer using either apsfilter or cups.

Serving that locally connected printer over a Windows network (to Win2k/XP clients) is accomplished with CUPS and Samba.

Here is the long version of the how-to:
http://www.ajl-tech.com/index.php?option=com_frontpage&Itemid=1
or http://www.ajl-tech.com/index.php?option=content&task=view&id=16&Itemid=31


Here is the short version, illustrated as general procedure (with in between steps removed). This how-to assumes that the printer in question has a good driver available at www.linuxprinting.org.

Step 1. Install CUPS via ports and other apps + drivers

/usr/ports/print/cups
/usr/ports/print/gimp-print
/usr/ports/print/hpijs
/usr/ports/print/ghostscript-gnu
/usr/ports/lang/perl5

For each of the above: "make install clean"

Step 2. Get the proper driver (.ppd file) from www.linuxprinting.org and copy it to the "/usr/local/share/cups/model" directory. For example:

chown root:wheel HP-LaserJet_4M-postscript.ppd
chmod 644  HP-LaserJet_4M-postscript.ppd
mv HP-LaserJet_4M-postscript.ppd  /usr/local/share/cups/model

Step 3. Get Foomatic.  You'll need the following 2 files:

http://www.linuxprinting.org/foomatic-rip
http://www.linuxprinting.org/foomatic-gswrapper

These files need to be moved to the right location with the right modes applied:

mv foomatic-rip /usr/local/bin
mv foomatic-gswrapper /usr/local/bin
cd /usr/local/bin
chmod 755 foomatic-rip foomatic-gswrapper

Step 4. Make sure Foomatic can be reached by CUPS:

Place a link in CUPS's "filter" directory at /usr/local/libexec/cups/filter: (note: the following is 1 line)

ln -s /usr/local/bin/foomatic-rip /usr/local/libexec/cups/filter/foomatic-rip


Important!!

CUPS will have installed its own versions of the commands "LP" "lpr" "lpq" "lprm" in the [/usr/local/bin] directory. While BSD installs its own (original) versions of these commands in [/usr/bin]. For sharing this a printer to others across a network via Samba, we'll need to make sure to reference the CUPS version of “lp” “lpr” “lpq” and “lprm” (in /usr/local/bin).

Step 5. Configure the printer

Start CUPS: "/usr/local/etc/rc.d/cups.sh start"
Bring up CUPS via browser: "http://localhost:631";

Supply "Name" "Location" and "Description". Then supply the printer model (the downloaded .ppd driver should be there as a choice).

Print a test page.  Congrats you should have local printing.

Step 6. Configure CUPS for network print service

Edit the "cupsd.conf" file.  Make the following configs:

Set your "broadcast" option for the LAN by  setting:
"BrowseAddress @LOCAL"

Set local access privileges, find the <Location /> section and:
<Location />
Order Deny,Allow
Deny From All
Allow From 127.0.0.1
Allow From 192.168.1.*
</Location>

This would allow anyone within the 192.168.1.* network to have access to CUPS.

Step 7. Install Samba via ports & Configure Samba

cd /usr/ports/net/samba
su
Password: ********
make install clean

Start Samba: "/usr/local/etc/rc.d/samba.sh start"

Note: make sure these ports are open on the server's firewall (for samba): port 139 (tcp), port 138 (udp), and port 137 (udp)

Modify the smb.conf file: Here is my working smb.conf file.

global]
        workgroup = workgroup
        printcap name = cups
        log file = /var/log/log.%m
        max log size = 50
        socket options = TCP_NODELAY
        netbios name = mango
        dns proxy = no
        load printers = yes
        security = share
        os level = 20
        printing = cups
        encrypt passwords = yes
        server string = Samba Server
[hp4m]
        printable = yes
        comment = hp4m for local network
        printer = hp4m
        use client driver = yes
        lprm command = /usr/local/bin/lprm P%p %j
        print command = /usr/local/bin/lp -d %p -o raw %s; rm -f %s
        lpq command = /usr/local/bin/lpq -P%p
        path = /var/spool/samba
        writeable = yes
        public = yes


Make sure that the “guest” user (nobody) is given access to the /var/spool/samba directory.


Also notice that the “lp”, “lprm”, and the “print” command reference the path to the CUPS versions of those commands. I found this to be important. Referencing the FreeBSD (default) print commands will not get the job done!

Another important entry is the “use client driver = yes”. If you don't include this setting, Windows 2000/XP clients will be able to print to the network hosted printer (HP4M), but they will complain about the “printer not being accessible”.

Well I hope this how-to is useful and will help others who have plans of replacing Windows 2000 servers with something "a little more durable".

I'm tired now but I've got a working print server. It's time to buy beer and contemplate the universe...

Regards,
Michael Chinn




_______________________________________________ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to