Posts Tagged ‘firewall’

How to get CUPS to work with Samsung ML-2510 b/w laser printer on ClarkConnect Community Edition 5.0 firewall (CentOS 5.3 based)

December 22, 2009

Some backround first.

I needed to get Linux FW distro that supports CUPS out of the box and more specifically CUPS with Samsung ML-2510 support.

I used to run IPcop as firewall and then CUPS on Ubuntu box. So some HW consolidation was needed…

After quite extensive research I found ClarkConnect Community Edition firewall that supports out of a box CUPS. I think it is the only one?

CUPS support on ClarkConnect is not well documented and Samsung PPD file from my working Ubuntu based CUPS print server did not work at all.

After spending couple of days on this here is how to get it to work (I may have missed some steps in this writeup):

For Samsung printers you need download and build Splix on ClarkConnect (apparently my Ubuntu had these files included.):

SpliX is a set of CUPS printer drivers for SPL (Samsung Printer Language) printers. If you have a such printer, you need to download and use SpliX.

From Splix INSTALL file:

If you're using a distribution with a real package manager you need to
install the cups developement package (libcups...-devel or something like that).
To finish the libjbig is needed if the JBIG algorithm compilation isn't

* libcups
* libjbig (If the JBIG algorithm compilation isn't disabled)

So first disable JBIGLIB in in splix src files (I could not get to compile otherwise):

# (C) 2007-2008, Aurélien Croc (AP²C)
# Compilation file for SpliX
# Compilation option:
# V=1 Verbose mode
# DESTDIR=xxx Change the destination directory prefix

MODE := optimized

SUBDIRS += src
TARGETS := rastertoqpdl pstoqpdl

# Default options
DISABLE_JBIG ?= 1 (<======= set this to one (1) to disable

My ClarkConnect details:

[root@firewall splix-2.0.0]# lsb_release -a
LSB Version: :core-3.1-ia32:core-3.1-noarch:graphics-3.1-ia32:graphics-3.1-noarch
Distributor ID: CentOS
Description: CentOS release 5.3 (Final)
Release: 5.3
Codename: Final
[root@firewall splix-2.0.0]#

I built splix on Ubuntu box since ClarkConnect does not come with full dev tools and just tarred up splix folder and scp’ed it to my ClarkConnect box.

Before “make install” works on ClarkConnect you need to install cups-devel (make install needs cups-config):

As root run on ClarkConnect:

yum install cups-devel

My CUPS rpms:

[root@firewall cups]# rpm -qa|grep -i cups
[root@firewall cups]#

Then “make install” as root in splix subdir on firewall.

make -n install showed here for reference:

[root@firewall splix-2.0.0]# make -n install
mkdir -p `cups-config --serverbin`/filter
echo " INSTALL optimized/rastertoqpdl"
install -m 755 -s optimized/rastertoqpdl `cups-config --serverbin`/filter
echo " INSTALL optimized/pstoqpdl"
install -m 755 -s optimized/pstoqpdl `cups-config --serverbin`/filter
make --no-print-directory -C ppd install Q=@ \
echo " INSTALL Samsung PPD files"
install -d -m 755 `cups-config --datadir`/model/samsung
for filename in clp500 clp550 clp510 clp610 ml1510 ml1520 ml1610 ml1630 ml1640 ml1710 ml1740 ml1750 ml2010 ml2150 ml2250 ml2251 ml2510 ml2550 ml3050 ml3560 scx4200 scx4500; do \
install -m 644 $filename.ppd `cups-config --datadir`/model/samsung;\
for lang in fr pt; do \
install -m 644 $filename$lang.ppd `cups-config --datadir`/model/samsung;\
done; \
echo " INSTALL Xerox PPD files"
install -d -m 755 `cups-config --datadir`/model/xerox
for filename in ph3115 ph3116 ph3117 ph3120 ph3121 ph3122 ph3130 ph3150 ph3160 ph3420 ph3425 ph5500 ph6100 wc3119; do \
install -m 644 $filename.ppd `cups-config --datadir`/model/xerox;\
for lang in fr pt; do \
install -m 644 $filename$lang.ppd `cups-config --datadir`/model/xerox;\
done; \
echo " INSTALL Dell PPD files"
install -d -m 755 `cups-config --datadir`/model/dell
for filename in 1100 1110; do \
install -m 644 $filename.ppd `cups-config --datadir`/model/dell;\
for lang in fr pt; do \
install -m 644 $filename$lang.ppd `cups-config --datadir`/model/dell;\
done; \
echo ""
echo " --- Everything is done! Have fun ---"
echo ""
[root@firewall splix-2.0.0]#

For Samsung ML2510 make sure you have these files after splix install:

[root@firewall splix-2.0.0]# locate 2510
[root@firewall splix-2.0.0]#

In /etc/cups/mime* files make sure octet-stream is ENABLED:

[root@firewall cups]# grep octet *
mime.convs:application/octet-stream application/vnd.cups-raw 0 -
[root@firewall cups]#

Now with CUPS web interface configure ML2510 like this:

samsung (Default Printer)
Description: upstairs Samsung ML2510
Location: upstairs
Printer Driver: Samsung ML-2510, SpliX V. 2.0.0
Printer State: idle, accepting jobs, published.
Device URI: usb://Samsung/ML-2510%20Series

Enable Windows networking (Samba) in ClarkConnect with printers support. (Steps not shown here).

This is fairly good reference on Samba printers:

You also need dummy Samba username to be able to connect to printers shared over Samba to Windows users in your home network. (I could not get CUPS IPP based printer to work on Windows clients).

In ClarkConnect Windows Networking Global settings screen set

Printing RAW (other options Disable and Point and Click)

Here are my working smb.conf and cups.conf files. They may not be optimal but they are working.

Make sure CUPS is “driving” Samba printing in smb.conf:

# Printing
printcap name = cups
#printcap name = /etc/printcap
load printers = Yes

[root@firewall samba]# cat smb.conf
# General
netbios name = some_string
workgroup = WORKGROUP
server string = SOME_STRING
# Logging
syslog = 0
log level = 8
log file = /var/log/samba/%L-%m
max log size = 0
utmp = Yes

# Network
bind interfaces only = yes
interfaces = lo eth1
smb ports = 139

# Printing
printcap name = cups
#printcap name = /etc/printcap
load printers = Yes

# Security settings
security = user
guest account = guest
#restrict anonymous = 2

wins support = No
wins server =

domain logons = No
#domain logons = Yes
add machine script = /usr/sbin/samba-add-machine “%u”
logon drive = U:
logon script = logon.cmd
logon path =
logon home = \\%L\%U

# Other
preferred master = Yes
domain master = Yes
unix password sync = Yes
passwd program = /usr/sbin/userpasswd %u
passwd chat = *password:* %n\n *password:* %n\n *successfully.*
username map = /etc/samba/smbusers

include = /etc/samba/smb.ldap.conf

# Winbind
include = /etc/samba/smb.winbind.conf

#============================ Share Definitions ==============================

include = /etc/samba/flexshare.conf

comment = Home Directories
path = /home/%U
valid users = %D\%S
read only = No
browseable = No
available = Yes

cups options = raw
comment = Print Spool
path = /var/spool/samba
printing = cups
public = yes
guest ok = yes
guest only = yes
use client driver = Yes
printable = Yes
read only = No
browseable = Yes
available = Yes

comment = Printer Drivers
path = /var/samba/drivers
read only = Yes
browseable = Yes
available = Yes

comment = Network Logon Service
path = /var/samba/netlogon
read only = No
locking = No
browseable = No
available = No

comment = Profile Share
path = /var/samba/profiles
read only = No
profile acls = Yes
browseable = No
available = No
[root@firewall samba]#

Here is cups.conf:

[root@firewall samba]# cat /etc/cups/cupsd.conf
MaxLogSize 2000000000
#LogLevel debug
LogLevel info
SystemGroup sys root
# Show shared printers on the local network.
Browsing On
BrowseOrder allow,deny
# (Change '@LOCAL' to 'ALL' if using directed broadcasts from another subnet.)
BrowseAllow @LOCAL
DefaultAuthType Basic
# Allow remote access
Port 631
Include /etc/cups/cupsd.listen.conf
Include /etc/cups/cupsd.location.conf
Include /etc/cups/cupsd.policy.conf
# Allow remote administration...
# Order allow,deny
# Allow @LOCAL
Order Deny,Allow
Deny From All
Allow From
Allow From
# Allow remote administration...
Order allow,deny
Allow @LOCAL

# Allow remote access to the configuration files…

AuthType Default
Require user @SYSTEM
Order allow,deny
Allow @LOCAL

root@firewall samba]#