Tag Archives: splix

Installing Samsung ML-2010 driver on an eeepc

Have been meaning to write this when I was struggling with it for the first time, but never got round to doing it. Now, I needed to do it again, and here’s my report.

If you own a Samsung ML-2010 (or 2010R) printer, you may or may not know that it requires very special printer drivers due to Samsung’s own printer language SPL. The eeepc by default only supports the printer by half. You may hook the printer up to your netbook and it will even recognize it and suggest the (normally) correct driver/PPD. However, if you go with those suggestions, you won’t be able to print, because the installed software lacks the translation engine for SPL. It could be included (as it is with most current Linux distributions). There is an open source implementation called splix that I have previously written about when I ported it to the D-Link DNS-323 NAS device. Unfortunately, I haven’t been able to find a working binary package for the eeepc (and was too lazy to set up a build or cross-compile environment for it.) I found an easy alternative, though, that didn’t involve installing the huge and messy Samsung driver in its entirety. Here’s what I did:

  1. download the Samsung unified driver and save it to /home/user
  2. extract it (e. g. through the file manager and right-click on the archive). You should end up with a folder /home/user/cdroot.
  3. open a terminal (press house-key and “T”)
  4. cd /home/user/cdroot/Linux/i386/at_root/usr/lib/cups/
  5. cp backend/mfp /usr/lib/cups/backend/
  6. cp filter/rastertosamsungspl* /usr/lib/cups/filter/
  7. /etc/init.d/cupsys restart

Before you delete the driver archive and the extracted cdroot directory, be sure to add your printer. When the “add printer” wizard suggests a driver, don’t accept the default, but select the ppd from file. You’ll find the ppd files covered by the unified driver under: cdroot/Linux/noarch/at_opt/share/ppd/ML-2010spl2.ppd

Note, that not all printers supported by the unified driver use SPL. So, the procedure above may not work for every one of those printers. If you pick a ppd file of a printer using a different printer language, you will get errors in the cups logs (/var/logs/cups/) about a missing filter. You may get away with copying the other filters, too (in step 6). However, those may depend on additional libraries (check with ldd), which also may need to be copied to appropriate places (like /usr/lib).

Tagged , , , , , ,

D-Link DNS-323 as print and scan server (part 2)

In my previous post I described how I hooked up my printer and scanner to my D-Link DNS-323 NAS device for network printer and scanner services. With that done, I wanted to be able to make photocopies without an extra PC turned on. Should be a piece of cake, right? Scan an image, print it, what can be so hard about that? … famous last words of an IT professional. Of course, I also wanted this to happen on the push of one of the front panel buttons of my scanner.

So, first you need to be able to print locally from the DNS-323 as opposed to a PC queueing a print job on the DNS-323. A quick test: ssh as root to the box, lp /etc/passwd, does not work, perfect! Printing on the same printer always worked like a charm with CUPS on my ubuntu machines, so off we go and install cups from the optware repository. Try adding a printer definition to cups, but where is my USB printer? Digging really deep inside cups tells me the usb backend detects the printer perfectly well, but cups-deviced does not, nor does lpinfo -v list it, marf. More research yields, I will need a driver for the Samsung proprietary printer language SPL2 or QPDL, anyway. So, back to square one and take a look at splix and, because I can’t get cups to work, at foomatic-rip.

I installed perl and ghostscript to get foomatic-rip to work and compiled splix for optware. Tested the two in conjunction and, of course, it did not work. The ghostscript version available from optware claims to provide the cups device but I couldn’t get output that splix could process. No big deal, because splix still has the pbm support (apparently from older versions) which I reactivated. So, instead of relying on foomatic-rip to convert an input format to cups raster format and then on splix’s rastertospl2 to convert that to something understandable by the printer, I turned to pbm as an intermediate format. You can download the optware ipkg here. If you want to compile it yourself you can download the source package definition here, until I submit it to optware. This package, of course, preserves the now standard rastertospl2 in addition to pbmtospl2.

Now, you don’t even need foomatic-rip but can just do the following:

  1. cat align.ps | gs -r300 -q -dNOPAUSE -dBATCH -dNOMEDIAATTRS -sDEVICE=pbmraw -sOutputFile=output.pbm -
  2. /opt/lib/cups/filter/pbmtospl2 -P /opt/share/cups/model/samsung/ml2010de.ppd -p A4 output.pbm > output.spl2
  3. /sys/crfs/LPRng/lpr output.spl2

Here, align.ps is the alignment testing document available from openprinting.org. Any other PostScript document will do, but be aware that the “gs” command can take quite a while (and we’ll have more of that in the next post of this series).

Tagged , , , , , , ,