perl NET::Printer to cups-lpd on OS X gives not ready/ready

Johan Henselmans johan at netsense.nl
Tue Jun 2 08:37:51 PDT 2009


Setup: Mac OS X Server 10.5.7.latest updates

I have a raw printer interface to a USB connected printer (it has to be a raw interface because all kinds of reasons).

I connect to the printer via perl with the Net::Printer module.

A sample script:

===============
use Net::Printer;

$lineprinter = new Net::Printer(filename    => "/tmp/ticket.txt",
printer     => "ticketprinter",server      => "localhost",port        => 515,
lineconvert => "YES");

$result = $lineprinter->printfile();

# Did I get an error?
$errstr = $lineprinter->printerror();
if ($errstr){
	print $errstr;
}
# Get Queue Status
@result = $lineprinter->queuestatus();

print @result;
=====================

This worked flawlessly under 10.4.x.

I am now testing the same setup under 10.5.x and I am getting errors:

This is what I am getting back from the script:

ERROR:Net::Printer[157]: Printer ticketprinter on localhost not ready!ticketprinter at localhost: ticketprinter is ready
ticketprinter at localhost: no entries

In the system log I see these errors:

org.cups.cups-lpd[2609]: launchproxy[2609]: /usr/libexec/cups/daemon/cups-lpd: Connection from: 127.0.0.1 on port: 51469

I have tried another interface, via IPP, which works, but I am curious why this
will not work.

I had a look at /System/Library/LaunchDaemons/org.cups.cups-lpd.plist to have a look if that might be the problem, but I could not really understand why this would interfere:

	<key>Label</key>
	<string>org.cups.cups-lpd</string>
	<key>ProgramArguments</key>
	<array>
		<string>/usr/libexec/cups/daemon/cups-lpd</string>
		<string>-o</string>
		<string>document-format=application/octet-stream</string>
	</array>
	<key>SHAuthorizationRight</key>
	<string>system.preferences</string>
	<key>Sockets</key>
	<dict>
		<key>Listeners</key>
		<dict>
			<key>SockServiceName</key>
			<string>printer</string>
			<key>SockType</key>
			<string>stream</string>
		</dict>
	</dict>
	<key>UserName</key>
	<string>_lp</string>
	<key>inetdCompatibility</key>
	<dict>
		<key>Wait</key>
		<false/>
	</dict>


Anybody any explanation why the lpd interface on a raw printerqueue is not working?







More information about the cups mailing list