Hacker News new | ask | show | jobs
by slsii 618 days ago
I just tested this on OS X, which doesn't expose printers through /dev/ in the way you're describing as far as I can tell. But apparently lp exists on OS X, so you can do echo "Hello printer" | lp -d <printer_name>, and find the name through lpstat -p.

And sure enough, this works! Just tested on my new printer.

4 comments

Wow! What a delightful exchange this is! Curiosity asked and answered in 12 minutes! I literally got goosebumps on my arms as I read your comment and reached the last part where you say "this works!"
With macOS there is this one off topic thing regarding printing that always gets me. I once had a company Macbook and it connected to my old Brother printer without problems and only then (after almost ten years of having the printer) I discovered it has double sided printing. It just worked. I always wondered if there is a way to connect somehow to this machinery to get a macOS printer driver or whatever and emulate whatever is needed for this to work on Linux.
IIRC, Apple employed the maintainer[1] of CUPS - which is/was available on MacOS for network printing, and has been available on Linux for even longer. I would be surprised if the feature was not available on Linux for your printer.

Edit: added footnote

1. The chief maintainer - not the only maintainer, between 2007-2019

I used this (CUPS) to add my Remarkable 1 as a Printer in MacOS. Worked like a charm, nothing to install on the laptop…
What would be the use case of this? I have a remarkable 2 and there's the official Read on Remarkable extension that automatically sends a pdf of the page you're on or the book or whatever to your Remarkable. I'm not sure if it works on Remarkable 1 but there isn't any documentation on it being unsupported.

extension link: https://chromewebstore.google.com/detail/Read%20on%20reMarka...

Please share details! My wife has one of those, and this sounds like a great way to get more use out of it.
> which is/was available on MacOS for network printing

Very much IS there in the background.

See http://localhost:631/printers on your OS X machine.

I thought the default was disabled at some point. On my macOS laptop, I get:

> Web Interface is Disabled

> The web interface is currently disabled. Run “cupsctl WebInterface=yes” to enable it.

But I cannot remember if I disabled that.

> But I cannot remember if I disabled that.

Its ok, you're not going mad. ;)

They disabled it by default as part of security hardening a few releases back. Probably around the same time they stopped shipping PHP and other stuff.

CUPS is still running the printing in the background, its just the web UI that's been disabled. IIRC.

Safari can’t open the page “‎localhost:631/printers” because Safari can’t connect to the server “localhost”.
I know about CUPS. There is no real alternative on Linux, is there? But it doesn't work like on macOS. I am sure they added some of magic on top.

On macOS I think it either recognized my printer or I had to select it from a list. I don't remember which for sure. It was a few years ago.

On Linux my Brother printer is not on the list. Brother offers a deb and rpm packages which may be obsolete for all I know. Then you have to install it manually. But in my case it never offered double sided printing.

For years I am using a crutch in terms of Android driver and Brother's own app. This despite being offered by the producer doesn't offer double sided printing either. It doesn't even give ability to print in grayscale.

> I know about CUPS. There is no real alternative on Linux, is there?

I don't know what lifting "real" is doing here, but lpd(8)[0] (line printer daemon) is what we used to use, and printcap(5)[1] to configure. It was general enough that you could make a music playlist system out of it[2].

[0] https://man.netbsd.org/lpd.8

[1] https://man.netbsd.org/printcap.5

[2] https://patrick.wagstrom.net/weblog/2003/05/23/lpdforfunandm...

On Linux, Brother also has a generic driver (brgen1mlr, or something like that). You’ll need to install both the driver and cupswrapper though.

If you install the specific driver it generally should have parity with their Windows / macOS driver though.

Dunno about your printer but with my Brother Laser the CUPS driver can do double-sided printing on Linux just fine.

But you should in theory also be able to do this without any Brother-specific driver since pretty much all modern printers speak IPP for mobile device compatibility.

Usually, drivers for similar printers might work. There are also generic driver sets like Gutenprint. Nonetheless, note that CUPS now discourages the use of any drivers, and support will be removed in the future.

They claim that modern printers implement IPP and that should be the preferred protocol for printing. In IPP, printers advertise capabilities and are able to handle different high-level printing requests.

That is wrong. CUPS recommends using the IPP protocol, but the IPP driver (called “IPP Everywhere”) is only available on relatively modern printers. Everything else still has to use drivers, mostly PPD.
Any CUPS daemon will raise the following warning on startup. I just copied this from my Systemd log:

  cupsd[873]: Printer drivers are deprecated and will stop working in a future version of CUPS. See https://github.com/OpenPrinting/cups/issues/103
Not saying this is the correct decision, but IPP Everywhere is available on most printers that are < 10 years old. Obviously, that rules out older printers, which are fairly common.
Are you using Brother's Linux printer driver for your device? If not, I'd start there.

https://support.brother.com/g/b/midlink_productcategory.aspx...

It never offered the option in my case.
If it’s a Brother, the features are in the suffix of the model name: D for duplexer, C for color, N for network (wired), W for wireless networking.
Huh, my first thought was that it ought to be somewhat mechanically obvious if the printer supports double sided printing. But now I’m thinking, some printers do just magically suck the paper back in for the second side, right? And I’m wondering if my printer might secretly support double sided printing as well.
Exactly this magical sucking the paper back. I was amazed.
Mine did not. I am, therefore, non-amazed. Mazed?
Whelmed.
The question then is, does this lp utility just feed the text directly to the printer or is it just a legacy compatibility layer that goes through the normal printing APIs to do its thing.
Works for me as well. This is a network printer available via WiFi.
I tried with my HP M15w, also through WiFi. Sure enough, it worked. This may be a little project for tomorrow.