HOWTO: USB printers under Citrix ICA

"J C" <[email protected]>
Newsgroups gmane.linux.pxes.devel
Message-ID <[email protected]>
Hi All,

I recently discovered PXES and it fits our operating environment perfectly! 
We're
deploying approximately 200 thin clients based on it. Thanks to all those 
who've
put all the hard work into it!

Details of our setup are:

Thin Client Hardware:
Via Epia 5000 533Mhz mini-itx boards
128MB of PC133 RAM

Software:
PXES 0.64-1
Citrix ICA

Ive been reading in the list that some have wondered how to get USB printers 
going with
PXES in Citrix ICA. We've recently needed this funcionality as well. I had 
worked to get
parallel port printers going under LTSP modified to run ICA prior to this 
and I figured it
wouldnt be that tough of an issue to resolve. Below is what i did to get USB 
printers
to function properly in PXES running Citrix. I went with a standard lpr/lpd 
installation
as this seemed simple and lightweight. Do these steps before running 
pxesconfig.


1. First I added the following files to the default install of PXES. I got 
these files from an old lpr rpm from RedHat 7.2. Newer ones may work as 
well.:
/sbin/lpd
/usr/bin/lpc

These files are needed to run the lpr spooling software.


2. Next i created the following directories
/var/spool/printer
/var/spool/lpd

by adding the following lines to rcS (usually 
/opt/pxes-0.6/stock/dist/etc/init.d/rcS):

mkdir /tmp/var/spool/printer
mkdir /tmp/var/spool/lpd


3. You will need a 'printcap' file for the Citrix ICA client to recognize 
printer
functionality on your thin client. I used a very simple printcap file that 
basically
just acts as a shell(no logging, Generic/Text) so that Citrix can detect 
that a printer
is available. The appropriate driver for the printer can be chosen in the 
Citrix Windows
session. Here is my printcap file:

#BOF
lp|panasonic:\
	:lp=/dev/usb/lp0:\
	:lf=/dev/null:\
	:sd=/var/spool/printer:\
	:sh:

#EOF

':lp' specifies the device used. In this case it's the usb 'lp0' device. 
':lf' specifies
the log output which is being directed to /dev/null and the ':sd' specifies 
the spool
directory where the jobs will be stored before going to the printer. The 
'printcap' file
goes into your PXES /etc directory (/opt/pxes-0.6/dist/stock/etc).


4. You need to modify your citrix wfclient.ini 
(/root/.ICAClient/wfclient.ini) file
to point towards our created printer. Add the following lines to your 
wfclient.ini
file under the [WFClient] section:

DefaultPrinter=lp
DefaultPrinterDriver=Generic / Text Only

Make sure to have the DefaultPrinterDriver set to 'Generic / Text Only' 
exactly as it
appears (spaces included) so that Windows will have a default driver to work 
with.


5. Next you need to have the printer.o module loaded. Do this with:

modprobe printer


6. The lpd/lpc daemons will need to be started. Do the following commands to 
start them (in
this order):

lpd
lpc start all


Of course these commands (5 and 6) can be put into your rcS file for 
automatic execution
when the client starts up. Added them to the end of the rcS file.

Now you can run pxesconfig as normal and choose your specific settings. You 
should *not*
however enable 'Local Printer Support', that option is not needed for Citrix 
ICA to use
printers.

Now a printer should show up when you add a new printer in your 
Windows(Citrix) session
on the thin client (Start->Settings->Printers->Add Printer->Nework 
Printer->#ClientName).
Make sure to change the default 'Generic/Text Only Printer' to a driver 
appropriate
for your printer. Now printing should work fine!

Caveats:
i) Ive hardcoded it for USB printers and as such regular LPT printers will 
not work
properly. I expect I will create a simple script that can detect the 
presence of a USB or
LPT printer.


Hope this helps!

Justin Chevrier

_________________________________________________________________
MSN 8 helps eliminate e-mail viruses. Get 2 months FREE*.  
http://join.msn.com/?page=features/virus



-------------------------------------------------------
This SF.net email is sponsored by: The SF.net Donation Program.
Do you like what SourceForge.net is doing for the Open
Source Community?  Make a contribution, and help us add new
features and functionality. Click here: http://sourceforge.net/donate/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.