Why so last century?
July 19, 2011 2:04 AM   Subscribe

Why are "i386" drivers supplied, and not 64-bit, for things like printer drivers?

Got a new printer. They said they had Linux drivers. They do! But only i386 drivers. (Brother MFC-J6910DW). It's an expensive printer. They only reveal the issue after installing the ink and printing a test page. The scanning drivers are in 64-bit, the Windows drivers in 64-bit, but not the Linux printer drivers. My old Brother printer had what I needed. Most of it is still probably valid. Trying to search for help is yielding lots of useless reviews.
posted by Goofyy to Computers & Internet (19 answers total)
Not to answer your question, but dDo you need the extra Linux drivers to use the printer, or does it work out of the box?
posted by devnull at 2:37 AM on July 19, 2011

The only option the add-printer routine offers is generic text-only. I tried that, and even that won't print a mere test page. Works from the Macbook. No doubt would work from Windows. I'd be more relaxed about it, except Win7 is giving me grief for daring to run it as a virtual machine, and stopped working.
posted by Goofyy at 2:45 AM on July 19, 2011

You can extract the ppd file from the rpm. Try that. Extracted here.
posted by devnull at 4:08 AM on July 19, 2011

Devnull: How does that help, when the problem is lack of 64-bit versions? And I even have the i86 libraries installed, but those still won't allow the 32-bit driver to be installed.
posted by Goofyy at 4:25 AM on July 19, 2011

printer drivers generally aren't drivers in the same sense as things like video card drivers, or USB drivers. those things are a blob of code that runs inside the kernel managing interaction with the peripheral, and needs to be the same instruction architecture as your kernel.

communication with printers is standardised, so a "driver" is generally just a .ppd (postscript printer definition) which is a specifically formatted postscript file that tells the printing system what the capabilities of the printer are. Brother have packaged the .ppd in an installable file that says "I will only work on an i386 system", when in fact that's lies - the same .ppd will work fine on anything. it's just a text file, and in reality has no architectural dependance.

so why have they packed it in an i386 RPM instead of a noarch RPM? presumably because they don't care and don't know any better. Linux is still a minority platform and consumer vendors see no reason to provide anything other than the most rudimentary support.
posted by russm at 4:34 AM on July 19, 2011 [2 favorites]

russm: That's not always true. Some printers are effectively directly controlled by the "printer driver", part of which is a binary blob which knows how to translate postscript (or possibly some other file format) to commands the printer understands.

Some of these have Linux drivers, but they're almost always unreliable and tied to old releases of specific Linux distributions. Anyone sane avoids such printers like the plague. This Brother printer appears to be one such device sadly.
posted by pharm at 4:49 AM on July 19, 2011

The ppd file won't do the trick. I get a message saying some "filter" is missing. I just tried to do the generic test page.

To say "Avoid such printers like plague" is nearly the same thing as saying, "Avoid printers!". Few of them offer Linux support at all. This printer was purchased solely on the basis that Brother provided links to Linux drivers. The detail of 32 vs 64 was overlooked.

But still, WHY i386?! It just seems completely absurd today, to act like i386 is the accepted standard, rather than old news. I'm even puzzled why Ubuntu doesn't handle this situation in some simple way. But Ubuntu seems increasingly motivated to drive me back to Windows-only. Especially when they arbitrarily suddenly decided the window buttons go on the left, in imitation of the Mac. (yes, I found out how to fix that).
posted by Goofyy at 4:59 AM on July 19, 2011

pharm - yes, indeed. I had assumed this was a sane printer.

well, the Brother Driver for Linux Distributions page has a section for the MFC-J6510DW including LPR and CUPS instructions, that specifically includes 64-bit distros. short form is install the 32-bit support libraries and then force the off-architecture package to be installed. ugghhh.

instructions for CUPS, LPR.
posted by russm at 5:00 AM on July 19, 2011

Goofyy - it's complaining about brmfcj6510dwfilter? yeah, that's what pharm was talking about. bah, humbug. for painless printing you basically need a network printer that just speaks postscript over LPR or CUPS, but that's not really a home-user solution.

grab the .deb from the page I linked above and follow the instructions (including the "For Debian/Ubuntu 64 bit" part, though it sounds like you've already done that).
posted by russm at 5:08 AM on July 19, 2011

But still, WHY i386?! It just seems completely absurd today, to act like i386 is the accepted standard, rather than old news.

i386 is the accepted standard. It is the standard 32 bit format. There isn't a heck of a lot of difference between that and i586 or i686- those use some of the new features of processors, but a printer driver isn't really going to use MMX or what have you.

BSD and linux are (afaik) binary compatible, so if it works on a Mac, it will (eventually) work on Ubuntu.

Rather than use Ubuntu's built in add printer deal, have you followed the instructions inside the RPM?
posted by gjc at 5:13 AM on July 19, 2011

I'm dazed and confused from fighting with this now, and have to pull myself together for an all-important stress test (1 year after angioplasty).

I did the installs on the command line, with the force-architecture option. Still not getting printing. I've run clean out of attention-span, and need to step away for awhile. Really appreciate the help! This printer looks beautiful (I've wanted an A3 printer for awhile), and I hope I can get it working.
posted by Goofyy at 5:35 AM on July 19, 2011

Doing a dpkg -i --force-all is a *really* bad idea, since that argument overrides all the dpkg sanity checks that prevent a wayward package completely trashing your system. dpkg --force-architecture might be acceptable in this case.

It looks like this is a new-ish printer, so no-one has reverse engineered the protocols and written an open-source driver.

Once you've got the drivers installed, you'll still have to "add" the printer to whatever printing system you've got installed (probably Cups) & who knows what gruesome hacks the Brother drivers are employing?
posted by pharm at 6:03 AM on July 19, 2011

Goofyy: "
But still, WHY i386?! It just seems completely absurd today, to act like i386 is the accepted standard, rather than old news. I'm even puzzled why Ubuntu doesn't handle this situation in some simple way. But Ubuntu seems increasingly motivated to drive me back to Windows-only. Especially when they arbitrarily suddenly decided the window buttons go on the left, in imitation of the Mac. (yes, I found out how to fix that)

My laptop is 32bit. I bought it 3 years after my first AMD64 system, and neither actually exceed the RAM limit. It's getting time to replace them, and I suspect i386 will be harder to come across, but there's still a broad installed base of 32bit computers to sell to.

I've been using Linux as a primary desktop since 2002. Peripheral support truly has grown leaps and bounds. I bought a USB logitech webcam and it just worked out of box! We have open source wifi drivers! Bluetooth profiles! But in my experience, feature printers are tested in Windows and then some guy is hired to make linux print and maybe scan. And... thats one more reason why I don't own a printer. Which is suspiciously close to "Avoid Printers!"

On a more helpful note, I did try searching Launchpad and came up empty. It'd probably be worth your time to document your problem there, so in case someone more cluefull comes along with a solution.
posted by pwnguin at 6:11 AM on July 19, 2011

One of the open-source Brother drivers may work well enough to get you basic printing. Try adding the printer through the appsocket protocol, where you manually specify the printer's IP address. Tell Linux your printer is the closest known thing to what it actually is, and try the foomatic hpijs-pcl5e driver, which should have come with CUPS. That's how I get my Brother 2070N to work, though it's a much less fancy printer so YMMV.

There's also the lame work-around of using the printer from a 32-bit Linux virtual machine and exporting it as a network printer.
posted by qxntpqbbbqxl at 6:41 AM on July 19, 2011

FWIW, the deb packages look like they should work... if you're going to use the CUPS interface you do have to install the LPD interface first (the LPD package has all of the BLOBs and configuration tools, /usr/bin, /etc/opt/brother stuff), the CUPS package has a wrapper and PPD file. You may want to try and get it working over a USB connection first.

Printers are odd beasts mostly for cost reasons. In the past they were dumb serial devices that you just dumped ASCII text + some control sequences to. Then if you wanted nice printing you used a massive Xerox that cost bazillions. Then you had the nice Postscript laser printers that once again you just dumped text to, but Postscript format and the printer was basically a computer unto itself (old Apple Laserwriters were pretty much a dedicated Macintosh with more memory and more HD space than your computer itself). Then HP had PCL and you had cheaper halfway decent graphics. Then computers finally got cheap and powerful enough that they could just do the fancy rendering themselves and dump raw bitmaps to a really cheap printer. Since the computer has to do all of the font rendering and layout for its own graphical display there's no need for the printer to be smart. The final outcome is that cheap printing is totally reliant on the OS for all of the rendering and is closely tied in to a specific OS (at least the cheapest printers).

The reality is that if you want good cross OS printing, you still need the expensive smart printers. They are still Postscript and basically entire computers unto themselves with network cards, CPUs, memory, OS, rendering engines, etc. and not the brain dead bitmap dumpers that the cheap consumer printers have to be. Linux/Solaris/Mac/Windows can all print just fine to your nice expensive office printers.
posted by zengargoyle at 6:56 AM on July 19, 2011 [1 favorite]

But still, WHY i386?!

Two words -- legacy naming.

If you've ever worked in software, you'll know that it is not always cost-effective or worthwhile to update the naming of your functions, variables, assemblies, and programs. Especially if the bean counters are cutting resources like crazy. Especially if your product targets a niche market.

Even if you do update the external branding of your product, there is likely oodles of legacy naming under the hood. If you crack open the source code for Windows 7, Microsoft Office, or any other product that has been out there for many, many years, you will find thousands upon thousands of lines of code that has never been updated to match the latest trendy branding that the PR guys came up with.
posted by wutangclan at 8:52 AM on July 19, 2011

It's i386 because i386 user space code runs just fine under x86_64, given that the appropriate libraries are present on your system. Printer drivers (basically, the filter that takes in postscript and spits out a bitmap) in Linux run in user space, not kernel space, so an i386 driver should work fine on an x86_64 system.

However, there's no reason why Brother can't just make a 64 bit package as well that installs cleanly without forcing anything. They're just being lazy, ignorant, or cheap.
posted by zsazsa at 10:04 AM on July 19, 2011

However, there's no reason why Brother can't just make a 64 bit package as well that installs cleanly without forcing anything. They're just being lazy, ignorant, or cheap.

Actually, there is a reason, but it's one Linux-64 users don't like to hear: they're too small a market segment to make it worthwhile to support them.

The company is making a rational calculation. How much would it cost to develop a driver for thus-and-so obscure and small market? How much would doing so increase our sales? If the expected net profit is less than the cost, then it doesn't make business sense to do it -- and clearly that's what they think.
posted by Chocolate Pickle at 8:12 PM on July 19, 2011

w00t! Russm, you solved the printer problem!
Zengargoyly, you did the best job of answering the question. :-) Cuz, while the help was hoped for and seriously appreciated, I really did ask the more generic question.

I did not know the "force" (architecture) option, although I've used it in the past, it was strictly copy-paste from someone's instructions. I had the 386 library installed already. THEN, it still didn't work, and that was because I've gotten so used to things working, I forgot to reboot after the installation. That seems so rarely needed these days, especially in Ubuntu. So I was surprised when I clicked on "print test page", trying to generate the error message again, and instead, it worked. LOL!

And my stress test went very well.
posted by Goofyy at 10:54 PM on July 19, 2011

« Older seeking the playlist of a compilation cassette   |   Letters page: are anti-gay letters OK in your... Newer »
This thread is closed to new comments.