Printing to a Samsung printer under Linux

I took the trip to the store today to get some new chairs for the living room, and there was Samsung 1640 (basic laser) printer on sale. We'd been in need of a printer, so I snapped it up. Getting it set up in Windows and OS X was a snap, naturally, but getting it going on my Linux server took a bit more work. Samsung are good enough to provide Linux drivers for a good number of their printer models, so that's of huge benefit. This is not a totally exhaustive walkthrough, but it details the specific tweaks I had to do. Thanks to a number of random folks for pointing me in the right direction. Because Samsung uses a unified driver architecture, these steps should generally work for all printer models. They might not work on all flavours of Linux, however; for my part I'm running Centos 5.3. What I did:

  1. Download the Unified Driver package from Samsung's website. Look for the file ending in tar.gz
  2. Extract this on your Linux box in the usual method (I like "tar zxf filename.tar.gz")
  3. Browse the extracted files to "cdrom/Linux/" and execute the install script. (./, add sudo if necessary)
  4. Follow the install, it's pretty simple.
  5. I had to make a minor of tweak, post install. The printer Samsung creates is connected to a bogus port. I used Webmin to tweak the printer settings, cause it's dead easy. Change the Print Destination to "/dev/lp0" if you've got a parallel printer or "/dev/usb/lp0" for a USB one.
  6. Give it a test print from Webmin, and if you're lucky, you'll be printing.

To get this working through Samba for my Windows and Mac machines, I had to do a little extra.

  1. Add a printer share in Samba, dead easy using Webmin.
  2. When asked for a spool directory, you need a directory matching the permissions of the share, in my case, it needed guest access. Because I'm lazy, I just created a folder inside an existing file share, which already had the same permissions.
  3. Edit the config file at /etc/samba/smb.conf and add the following line in the printer section: "use client driver = yes"
  4. I also needed to tweak one of the CUPS files (the printing subsystem). Edit /etc/cups/mime.convs, and look for a line right at the end looking like "application/octet-stream". This line was commented out in my config, and I needed to uncomment it.
  5. I restarted both the CUPS daemon and the Samba daemon, using Webmin as usual... and I was up and running.