Monday, April 9, 2007

freebsd printing with CUPS and a Samsung ML-2010

When I was running ubuntu last year I vaguely remember using my Samsung ML-2010 printer without too much fuss.....I think I found something in the excellent ubuntu forums that suggested using the ML-4500 driver....and it worked. Didn't always print nicely, but it pretty much worked out of the box.

So, yesterday I needed to print something....searching for FreeBSD+ML-2010 yielded little to no results, and nothing useful. In fact the top hit in google groups was a post by a guy I went to university with - but nobody responded to him. So, I embarked on my own journey. CUPS was already installed. I didn't really bother trying LPD cause I thought it'd be neat to print from any computer in the house via this box.

dmesg showed that I had /dev/ulpt0 - perfect. I started up CUPS, used my browser to view the web interface at port 631, and ran through the setup wizard to add my printer. But nothing samsung listed? So, I search the web for what to do next....turns out I need a PPD file for my printer.....samsung's website has one for linux....so I tried that.....completed the work in the web interface, print a test page.....and it complains. Missing some kind of filter? I guess I needed more than the PPD file.

So, keep searching.....splix a third party samsung driver.....but there's no freebsd port in /usr/ports :( As it turns out, there is one in CVS as well as several postings in the news group about creating the port files. After following the instructions in the PR report 111034
I had the port files.....but the Makefile had issues.....missing operator on line 34......there were spaces where there should have been tabs....copy paste error on my part. Forgot Makefiles were so damned picky about tabs.

So, I built the port, installed it....re-created the printer using the CUPS web interface. Print a test page and I get "Unsupported format 'application/postscript'!". Odd. Let me try from the command line......

/usr/local/bin/lp -dditdy-printer ubuntu and debian that claim this error was due to a missing file on those distributions with CUPS 1.2.3 - the file pstoraster.convs. Well, this file ain't on my system....."locate pstoraster" led me to /usr/ports/print/cups-pstoraster. Hmm....a seperate port.....wonder why something that seems so fundamental wouldn't be installed....? Well, I installed it, restarted CUPS tried the test page and no unsupported format complaint.

But the job sat in the queue. PR-99460 solved that issue: in printers.conf change deviceURI from usb:/dev/ulpt0 to file:/dev/ulpt0. CUPS won't be able to query the device but printing should work.....so I ran a test page after restarting cups and it appears to have completed (I did the test remotely, will have to wait until I'm home to see if it worked!).

Ugh....that was long and painful!


UPDATE:

I got home to find pages printed with errors listed on them. I can't remember the specific error, but suffice it to say that I'd used splix-1.0.1, and they'd recently released splix-1.0.1-1 specifically to workaround a firmware bug in the ML-2010. However, building this new splix might be an issue.....to start the tarball is half the size of the previous rev.

I did a diff on the two versions, and there were a few files changed as well as rastertospl is missing in the latest? I tried to build 1.0.1-1, but it complains about missing some tool ppdpo? Apparently that's part of the cupsddk, which I couldn't build either. OK, dig deeper.

A closer look at the diff shows that only one relevant file changed.....src/spl2.cpp had a two line change.....so I copied the file over to the 1.0.1 folder, repackaged the tarball, put it in /usr/ports/distfiles and tweaked the port's distinfo file to have matching MD5 and SHA256 signiatures and matching file size. Rebuilt and installed, printed a test page and it worked!

2 comments:

ddade said...

Just wanted to drop you a note to say thank-you for your detective work and capable hacking. I got my 2010 to work under Sabayon, following your directions.

Anonymous said...

Yes! Yes! Finally! I did it, thanks to your post!

Woo-hoo!