Forget CUPS, I don't use it. I've never actually got a printer working that way. They all failed. Or it always fails. I know localhost:163 and all that stuff, but I'm a fan of 'cat THING.EXT > /dev/do_something', the good old Linux way.

This has taken me a couple months to figure out. There is very little usable information out there, any many people with the same problem, so this is a 'Pay It Forward' kind of thing. The same technique most likely works with many printers. Maybe I can save someone else the same big headache.

ML-1660 magic:

You need 'rastertosamsungspl' and 'ML-1660spl.ppd' from
Samsung's 'UnifiedLinuxDriver_0.86.tar.gz'.

The magic is thus:

1. Convert whatever you want to print into PostScript (
2. Type 'export PPD=/wherever/you/put/ML-1660spl.ppd' (the spl filter needs this to be set or it will fail silently) ***MAGIC***
3. Type '/wherever/you/put/rastertosamsungspl 1 1 1 1 1 > FILE.spl' (all those ones are mandatory arguments that the filter completely ignores)
4. Type 'cat FILE.spl > /dev/usblp0' (or whatever your system calls it). Printer wakes up, yawns, thinks, and actually prints in full glory!

Simple, but arcane. I hope this pops up in google so others can get this working faster than I did.