File:  [NetBSD Developer Wiki] / wikisrc / users / jruoho / clp-315w.mdwn
Revision 1.10: download - view: text, annotated - select for diffs
Mon Jun 13 12:07:20 2011 UTC (2 years, 10 months ago) by jruoho
Branches: MAIN
CVS tags: HEAD
Finish.

# Samsung CLP-315W on NetBSD

Samsung
[CLP-315W](http://www.amazon.com/Samsung-CLP-315W-Color-Laser-Printer/dp/B001BXS45I)
is a low-end color laser printer, featuring USB, Ethernet, and wireless
access. It works on NetBSD. A brief HOWTO follows.

For initial configuration, I used a NetBSD host and standard [[!template
id=man name="dhcpd" section="8"]].  The printer provides its own HTTP server
from which all standard configuration options are available.  Also IEEE
802.11 worked with a NetBSD router.  But unfortunately, a local host is
still required as the printer only speaks a non-standard format language.

The so-called
[foomatic](http://www.linuxfoundation.org/collaborate/workgroups/openprinting/databasefoomatic)
is a prerequisite. This is available from [[!template id=man name="pkgsrc"
section="7"]]:

	# cd /usr/pkgsrc/foomatic-filters
	# make install package clean

Samsung uses a special QPDL wire protocol, supported by
[foo2qpdl](http://foo2qpdl.rkkda.com/). For installation, fetch the
sources and compile:

	$ cd /tmp
	$ ftp http://foo2zjs.rkkda.com/foo2zjs.tar.gz
	# tar xvfz foo2zjs.tar.gz
	$ cd foo2zjs
	$ gmake

If you have problems with the compilation, check the `Makefile` for odd
`CFLAGS` possibly not yet supported by the NetBSD's [[!template id=man
name="cc" section="1"]].  After having the sources successfully compiled,
the required files were organized to `/usr/local`. From the compiled
sources only the following are required:

	# mkdir -p /usr/local/bin

	# cp foo2qpdl /usr/local/bin
	# cp foo2qpdl-wrapper /usr/local/bin

	# cp foo2zjs /usr/local/bin
	# cp foo2zjs-pstops /usr/local/bin

Note the permissions:

	# chown root:wheel /usr/local/bin/foo*
	# chmod 0555 /usr/local/bin/foo*

I used the following as the [PostScript printer
description](http://en.wikipedia.org/wiki/PostScript_Printer_Description)
(PPD) file. In order to avoid wasting the color toner cartridges, two
separate files for monochrome and color setup were used:

	# mkdir -p /usr/local/share

	# cd /tmp/foo2zjs/PPD
	# cp Samsung-CLP-310.ppd /usr/local/share/samsung-mono.ppd
	# cp Samsung-CLP-310.ppd /usr/local/share/samsung-color.ppd

	# chown root:wheel /usr/local/share/*
	# chmod 0444 /usr/local/share/samsung*

By default, the used PPD file does not use colors. This was solved by
editing the `samsung-color.ppd` file:

	# diff -ur Samsung-CLP-310.ppd /usr/local/share/samsung-color.ppd

	--- Samsung-CLP-310.ppd 2011-03-08 09:01:45.000000000 +0200
	+++ samsung-color.ppd   2011-03-12 11:02:17.000000000 +0200
	@@ -98,7 +98,7 @@
	 *OpenUI *ColorMode/Color Mode: PickOne
	 *FoomaticRIPOption ColorMode: enum CmdLine A
	 *OrderDependency: 120 AnySetup *ColorMode
	-*DefaultColorMode: Monochrome
	+*DefaultColorMode: Color
	 *ColorMode Color/Color: "%% FoomaticRIPOptionSetting: ColorMode=Color"
	 *FoomaticRIPOptionSetting ColorMode=Color: "-c "
	 *ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting:
	 *ColorMode=Monochrome"

The following network setup was used: one host named `print.lan` was
dedicated to forward the printing requests to the printer or `printer.lan`. 
This way all hosts inside the LAN can easily use the printer. Two entries
were required for the [[!template id=man name="printcap" section="5"]] file:

	# Color (default; just 'lpr').
	#
	lp|rp:\
	        :lp=:\
       		:rp=lp:\
       		:rm=printer.lan:\
        	:lf=/var/log/lpd-errs:\
        	:sd=/var/spool/output/lpd:\
        	:af=/usr/local/share/samsung-color.ppd:\
		:if=/usr/pkg/bin/foomatic-rip:\
        	:mx#0:

	# Monochrome ('lpr -P lpm').  
	#
	lpm|rpm:\
	        :lp=:\
	        :rp=lp:\
	        :rm=printer.lan:\
		:lf=/var/log/lpd-errs:\
		:sd=/var/spool/output/lpd:\
		:af=/usr/local/share/samsung-mono.ppd:\ 
		:if=/usr/pkg/bin/foomatic-rip:\
		:mx#0:

The clients can access the `print.lan` host by using:

	# We have a CNAME record for the printer host inside LAN.
	#
	lp|rp|remote printer:\
	        :lp=:\
	        :rp=lp:\
	        :rm=print.lan:\
	        :sd=/var/spool/output/lpd:\
	        :lf=/var/log/lpd-errs:


Finally, enable [[!template id=man name="lpd" section="8"]] in
[[!template id=man name="rc.conf" section="5"]]:

	lpd=YES
	lpd_flags="-r -n 2"

The output quality is relatively good. There are no visible differences
compared to the output with Windows and Samsung's own drivers.

CVSweb for NetBSD wikisrc <wikimaster@NetBSD.org> software: FreeBSD-CVSweb