258 comments

[ 3.2 ms ] story [ 144 ms ] thread
I love it. I’ve switched a lot of my news consumption to RSS. This feels like another step in that direction that I’d love to try.
from '92 to '96 one of my jobs was producing a daily news summary from usenet and a feed of the Federal Register. delivered as 40 to 100 densely printed dot matrix pages. Couple boxes of paper a month. Re-inked ribbons so often they'd wear through.

The Epson LQ printers were incredible machines. the one (an a half) I used for that job did that, plus millions of mailing labels, with hardly a burp. There were some part swaps and a couple of printheads, iirc.

Still have my LQ 100 in my parents attic, perhaps I could do something like this. Sadly I don't have the paper feeder (I only used A4 paper with it).
I pulled a couple out of my pile a few years ago to look at. The rubbers were pretty well gone on mine, belts gone, the rails had some sort of blooming corrosion.

unless you've got very lucky it's probably a real refurbishment job to make one run today. Quick look suggest Epson 9pin and 24pin form feed impact printers are still being made.

https://epson.com/For-Work/Printers/Impact-Dot-Matrix/LQ-590...

This is fantastic. I'm all in on this, here I come eBay!
I did something similar with a receipt printer, an Arduino and a PHP script in 2011. It got replaced by an iPhone very soon after, but I'm thinking of reviving it, because it forces you to filter what's important.
I've been wanting to do this for a while. I'd definitely recommend BPA free paper if you don't use it already!
Matrix printers can actually do quite a lot... depending on the models, you can change fonts, use bold, underline, sometimes italic, double-width and double-height characters and even graphics (although often are relatively low resolutions like 90 or 180 DPI).

One funny thing I did once for a escape-room-like game, was a box with only a parallel printer connector on it. When connected to the printer, it was parasite-powered from one of the control lines of the parallel port (it was just a tiny PIC microcontroller drawing a few hundred µA) and was sending a hint to the printer.

That's pretty cool actually.
My dad had a 4 color dot matrix printer in the 90s. Printing the pharaoh head from deluxe paint II took FOREVER but actually looked pretty. The paper was really warped after though. Still have it, but no idea where 4 color ribbons would be sourced.
You could probably make your own multicolor ribbon.
Back in the day, one of the first desktop publishing programs out there was called Fancy Font by SoftCraft. It was a CP/M and later DOS program, so not a WYSIWYG page layout tool like PageMaker. Instead it used text documents formatted with a simple markup language.

It originally worked by taking advantage of the high-resolution graphics mode present in Epson dot-matrix printers, which were capable of platen microadjustments as small as 1/3 the pitch between the pins in the print head, allowing for 3 times the vertical resolution the head alone could give. Fancy Font rendered the text on the computer and sent it as graphics in this special high-resolution mode, yielding results that were as close as you could get to typeset for home equipment in the early 1980s.

Later versions of Fancy Font had drivers for early laser printers like the OG HP LaserJet. But when the Mac came out... the writing was on the wall for such a system.

I’ve been wanting to explore more with this design-wise. There’s literally dozens of pages in the manual regarding font sizing, emphasis, italics, sub and superscripts, etc.

Maybe for version 2.0!

It would be fun to have a terminal that understands ESC/P, supporting different fonts and CPI and the like.
I remember printing huge banners in landscape mode on those endless paper rolls, basically ASCII art stuff which commands like figlet would produce today on a terminal (maybe it still supports printers as output?)
This is great! I am currently thinking about getting a weekend paper newspaper like FT weekend. Reason being: I read news on my phone too often. And the news create negative emotion without being useful. News on paper and only once per week would make me more relaxed. His paper printer news daily would be great to bridge the gap in between!

On a side node: I love the dot matrix printer! Is there any hackable open source printer like this available?

I cannot recommend FT. I tried to get their physical paper, never got one and although I made 3 calls and wrote about 10 mails to them they only would escalate my ticket after I unsubscribed and demanded a refund, this was after 3 weeks and a lot of time on my side.

That is why I am also super interested in just printing news from the net for myself, so I do not need to keep watching on a screen.

Are you in the UK and within some short distance of civilisation? If so, you very likely have a newsagent near by you and there's a surprisingly good chance they still do a paper delivery round.

Obviously if you're in a hut up a mountain or live in Norfolk then this may be less useful advice for you.

Ah yes. Filling newspapers with petty leaflets of spam the night before and then having to get up at 6am in the cold rain to get lost cycling around an estate block smelling smells of god knows what only to be paid less than minimum wage. what fun times.

At least I could then afford to buy a packet of cigs, and then upsell them to the chavs for a higher price...

My first reaction was "why print, just send it to yourself as an email" but then realized that the major motivator for this project was to cut down on screen use.
Cool project. I missed that sound. Hearing it again makes me realize how patient my folks were with my midnight debugging sessions…

On the other hand, when the author wanted to push Unicode on this, I felt old and immediately pictured Epsons old wire bound manuals outlining supported characters (a subset of ASCII if I recall)

I miss the soundscape of old computers:

- the POST beep

- the sound a floppy drive makes after inserting

- the infernal scream of a dot matrix printer

- even I don't miss dial-up sounds though.

Just today at a shop I saw a self checkout terminal crash and reboot - featuring the old AMI boot screen and a nice POST beep. Made me wonder what ancient hardware might hide behind these modern cases and UIs.
If you're looking for this sense of nostalgia in book form, I highly recommend reading "LaserWriter II" by Tamara Shopsin [1]. It's 90s tech nostalgia wrapped in a concise narrative about a college student going to work at a computer repair shop.

I also recommend her memoir "Arbitrary Stupid Goal" [2] but that has a lot less tech nostalgia and just a lot of funny anecdotes about her family and their diner on the Lower East Side.

[1] https://us.macmillan.com/books/9780374602581/laserwriterii [2] https://www.tamarashopsin.com/asgfaq/#/

> even I don't miss dial-up sounds though.

I do. It's like the walk-up song to talking to my friends and having a good time.

post beep is a premium feature today!

most boards won't have any. if you pay premium, you get post beep. if you pay even more you get post stage led indicators.

so this item on your list is not about the past but enshitification.

Can’t you just buy a PC speaker (beeper) and plug it into a 4-pin header on the motherboard anymore? That used to be the case around 10 years ago.
I've been thinking about getting myself an electronic typewriter and MITM the keyboard to turn it into a into a serial terminal. I can't afford a proper ASR-33, so I'll have to make it work with what I got.
My current project right now with my thermal printer is responding to emails via typewriter.

Email comes in -> prints to receipt printer -> I type up the response via electronic typewriter -> hit scan on my scanner -> sent a response -> confirmation printed on receipt printer.

PoC worked well.

Right now I am building out how to correlate what I scan to who it is supposed to respond to. So I working on some GPT magic to do that. Also since I am using OCR I don't have a way verify that the final content of the email after OCR.

So still a work in progress and not something I am using day to day.

More modern (90s) electronic typewriters with a screen (I guess you would call them word processors) could be a better way... But I like the click clack of each key stroke.

That is delightfully archaic.

May I ask what you are using to interface with your email client and what scanner do you use?

> I can't afford a proper ASR-33

If one could afford a proper ASR-33 then where could one find one?

Asking for a friend. Watchlist on Ebay hasn’t produced anything in years.

The one that was in the Living Computer Museum was recently sold by Christie's.
Back in the early 1980s when I was maybe 15 I got one of the first Jupiter Ace computers. The Ace never sold well, so there wasn't a lot of software or hardware available, and even if there had been I didn't have the money. My school didn't offer computer science, so I arranged to cycle across town to another school that did. They had just got two Research Machines 380z's and were throwing out the ASR-33 they had previously used. Of course I scavenged it and took it home.

I'd previously built a parallel port for the Ace on veroboard from TTL logic, based on a design a friend of mine came up with for his ZX Spectrum, so I could use the Ace to ride around on a micromouse. To drive the ASR-33, I had a 24v smoothed power supply that I'd scavenged from a skip when my mother's employer had scrapped some prototype ATMs (cash dispensers), so I wired that up to give +/- 12V and switched that from one line on the parallel board using some power transistors desoldered from the ATM. Then I wrote code to bit-bang 110baud RS232 in Forth on the Ace. It took a lot of trial and error, as there wasn't exactly a lot of documentation available in the town library, but I got there in the end.

I'm not sure if I was the only person who ever had a printer connected to a Jupiter Ace, but I'm pretty sure I was the only person to print Ace code listings to an ASR-33. I wish I still had that ASR-33 but somewhere along the way my parents decided they were fed up with storing all my junk, asked what I wanted saving, and I didn't think to save that.

I wonder how long before these pages fade. Could be good for archival purposes.
It’s physical ink on paper, I feel like as long as you store it in a cool, dry place, you can probably get decades out of it if not more.
From someone who hordes papers(j/k but if I don't get back to digitalizing them it might be considered more of a problem later on lol fortunately some of my reading and writing is supplanted by digital devices now)... You probably don't want to keep all of it. Most news doesn't even matter a week from when it was made. If you had to, it would be better to have an LLM or better summarize the year's end. Or maybe bury them in the backyard for future generations to potentially discover. But yeah there will be other copies of the news, and you don't have to store them these days
It's been a long time since I've heard that dot matrix sound. Wide carriage OKI Data and a big pile of green bar...
so pure -- easily as awesome as this lovely post, (What Hath Woz Wrought)[https://news.ycombinator.com/item?id=41561321

picturing room full of dot matrix printers, fax machines, & thermal printers & modems & old-school saving programs to cassette recordings

all talking to each other via mic relay where each uses AI to subtly detect what character each other just printed via audio and we can read their LLM convos

til you can still easily buy continuously feedable paper for dot matrix printers on amazon - was wondering if that was a scarce resource for a project like this! kudos!
It’s pretty expensive though! I got the smallest box I could, 1000 sheets, from Staples for $30.
I've seen dot matrix still used at car dealerships so doesn't totally surprise me there'd still be plenty of industry uses
It’s great for printing on carbon copy duplicate/triplicate paper that needs to be signed one time on all copies.
I've seen dot matrix printers used in backrooms of airlines (which I have visited for reporting lost luggage, sometimes). This would mostly be smaller airlines (as the now defunct Berlin Air)
I could see piping all syslog critial and above out to a .matrix printer that sits in a locked room as a cheap way to enforce a WORM log of events. With a continious sheet of paper you would only need to access it rarely, and essentially only to change the ribbon and replace the paper source.
It seems like an attractive concept. I tend to fluctuate between consuming too much news and getting fed up leading to not consuming any.

BTW, I like how this is literally just a daily newspaper. Something that we’ve figured out at least hundreds of years ago, but effectively lost to an infinite breaking news cycle.

I did something similar with a receipt printer.

a thermal usb receipt printer is like $75 dollars and easily controlled by python. Super easy to print out images and QR codes. and the autocut functionality makes it easy to segment messages. Additionally the receipt printer is nice because you can activate the bell inside as an additional "notification" and has an extra control for a cash drawer that I am thinking of hooking into to control a light or something.

I had it set up for emails and every morning it would print off my calendar.

I think the interface works well especially if you pair it with a physical control like buttons or NFC reader. That way you can issue "commands" and get output. Like I had one NFC card to make it print my calendar, one for unread emails, etc.

I have some more features I want to add to it. Its very fun way to cut down on screen time, but ironically i have spent more screen time coding with it and setting it up then it probably has saved me. lol.

Whats the printer you have? I’ve been thinking of getting one and did not know about the notification and external feature you mention.
I have a Rongta RP331.

The thing I wish it could do different is that when printing a single line, the autocutter hides it, so you have to line feed about 5 times until the line you printed is visible.

If i did it different, maybe i would try to find a printer that is able to do reverse line feed so I can "peek" at a single line and then not waste paper. but i think those are about 3-4 times more expensive.

There are a lot of cheap Chinese dot matrix printers. As an American if you search by mm size you will find those, if you search by inches you will find more reputable (and culturally sensitive) brands.

I bought two Chinese printers, one burned up pretty quick when I was testing it but I might have been printing too much black. The other is fine I think but really I am not so motivated to make thermal prints when I have a good quality inkjet. (My best thermal print was a small Lusamine

https://safebooru.org/index.php?page=post&s=view&id=1821741

which demonstrates how Nintendo official art is designed to render on cheap screens like the Nintendo 3DS)

Please share some of your code, I would like to see and get a feel for some personal ideas.
I am currently working on an "input" interface to scan resposnes that I write from my typewriter and am planning on releasing a github repo on it when im done. conveniently you can type directly on the receipt printer if the response is short.

Right now all my credentials are hardcoded so i can't push out what I have without some cleanup, but I can point you to some of the libraries: python-escpos and nfcpy were what I used for the bulk of it.

I use Thermal Printer for a different use-case (TTRPG stuff). Feel free to check it out :)

https://github.com/BigJk/snd

wow I love this. I like using spellcards but havent had a good solution for items... might need to buy a receipt printer now.
Receipt printers are fun but take care not to buy toxic paper https://www.consumerreports.org/cro/news/2014/03/the-health-...
I wonder if it's feasible to make diy Thermal paper using lemon juice, like the old "invisible ink experiment"
Should be easy enough to test if you have a thermal printer.

Just spread lemon juice on paper, wait for it to dry, and try printing on it.

Assuming BPA is what you're worried about (it's not "toxic" by the usual definitions but still something you may want to avoid) there isn't another mainstream option.
> it's not "toxic" by the usual definitions

iirc if you have wet hands you absorb way more and it is toxic

I can't find any evidence that anyone has ever died from bisphenol-A poisoning. Searching the medical literature finds no case studies of emergency-room visits or dying epoxy painters.

Rat studies like https://citeseerx.ist.psu.edu/document?repid=rep1&type=pdf&d... and https://www.researchgate.net/publication/236345183_Pathologi... come up with acutely lethal oral doses around 2000–3000 milligrams per kilogram, by which measure it has about the same toxicity as table salt. It also has about the same pharmacokinetic half-life as table salt. The concerns (documented meticulously in https://en.wikipedia.org/wiki/Health_effects_of_Bisphenol_A) are largely about its possible effects as a xenoestrogen, and in particular its potential to cause obesity. There have also been concerns that chronic exposure might be carcinogenic, but so far those haven't panned out, so it's clear that if BPA exposure has an effect on cancer risk, either positive or negative, it's very small in magnitude.

I don't think there's anything in the obesity concern, because the obesity pandemic seems to be associated with eating ultra-processed food rather than handling thermal-printer receipts or drinking out of Nalgene bottles. My best guess is that we'll find out that a few food additives that became popular 50 years ago upset the intestinal microbiome in a way that promotes obesity.

In the meantime, though, it doesn't seem unreasonable to try to minimize your exposure to the stuff, even if ultimately it turns out to be harmless or only slightly harmful. But I wouldn't worry about it.

Eating synthetic imitations of food, though, seems overwhelmingly likely to be bad for you.

> My best guess is that we'll find out that a few food additives that became popular 50 years ago upset the intestinal microbiome in a way that promotes obesity.

People can get drunk enough to fail a breath test, just from eating industrialized bread.

There's so much chemical crap added to industrialized food we're not even aware of, unless we send each item to a lab for testing before we eat.

But yeah, people sure must be getting fat because the McDonald's cashier gave them a receipt made of bad paper...

> People can get drunk enough to fail a breath test, just from eating industrialized bread.

I don't think this is unique to industrialized bread; in cases like this, what the yeast are fermenting is starch in the bread, which has been the main component of bread as long as there has been bread. They aren't fermenting the xanthan gum, guar gum, calcium propionate, titanium dioxide, etc. In fact, if anything, I'd think the anti-fungal preservatives like propionate would tend to make industrialized bread harder for yeast to ferment.

>I can't find any evidence that anyone has ever died from bisphenol-A poisoning.

That's like talking about cigarettes and claiming people don't die from nicotine, therefore smoking isn't a problem. Missing the point terribly.

On the contrary, nicotine poisoning is common, the lethal dose in humans is relatively well characterized (though higher than most poisons: 500–1000mg/kg) and there are many case studies of nicotine poisoning in the medical literature, many of which are life-threatening and some of which are even lethal: https://en.wikipedia.org/wiki/Nicotine_poisoning. Moreover, nicotine has been widely used to kill insects in the past. Consequently, there are well-established occupational safety limits. None of these things are true of bisphenol-A, even though it is produced in much larger quantities than nicotine ever has been.

Perhaps your intended reference, however, is to the other toxic components of cigarette smoke, such as benzo[a]pyrene. That is, cigarettes kill something like one out of ten people, but the vast majority of those deaths are not due to nicotine. (Except in the indirect sense that nicotine is addictive and induces people to smoke cigarettes so that they are exposed to the other poisons in the smoke.)

Very well, then. What are the other toxic components of thermally printed receipts you're concerned about?

I'm open to hearing what point you think I'm missing, but so far all you've done is strike a pose of fatigued knowingness. If you have knowledge to share on this matter, by all means, share it; certainly I won't be the only one who needs the point spelled out for them, because as dumb and uninformed as I admittedly am, I doubt I'm the dumbest or least informed person reading this thread.

I think their point was that many toxic chemicals have been linked to various cancers and other long-term health conditions and that they don’t need to kill you immediately to be considered harmful.
If that was their point, then why did they use the example of nicotine, one of the few frequently lethal chemicals that haven't been linked to various cancers and other long-term health conditions?

I think the point CapstanRoller was making was just that their understanding of toxicology is limited to vague hunches, so they feel comfortable in dismissing any information from anyone who knows more than they do about the subject.

> My best guess is that we'll find out that a few food additives that became popular 50 years ago upset the intestinal microbiome in a way that promotes obesity.

I bet it's mostly just sugars. That and plain overconsumption and lack of exercise. Excacerbated by societal shifts that mean people don't get shamed into behaving better as much as they used to be. Trying to blame evil chemicals for making you fat is just a cope for those that don't want to take any responsibility for their unhealthy lifestyle - even if there are additives that "promote obesity" it's going to be a relatively minor effect compared to the basic energy in vs. energy out balance.

It sounds like you aren't familiar with the basics of what is known in the field, because the theory you're promoting has been known to be wrong for decades. It's kind of the Flat Earth Theory of obesity.

The cause might be sugars, but they'd have to be sugars that were little used 50 years ago when the obesity pandemic began. One promising candidate was high-fructose corn syrup, with a promising hypothesis about how a fructose/glucose ratio of 1:1 was harmless. That hypothesis was always somewhat unlikely and basically didn't pan out. Glucose syrup was also an interesting hypothesis‚ but fructose/glucose hypotheses all run up against the sucrase-isomaltase problem: people in some places, such as the US, ate plenty of sucrose before 01974, and it gets split into fructose and glucose in the small intestine. So you need an explanation of why the modern sugar-heavy diet has such dramatically different health effects from historical sugar-heavy diets. Maybe it's fucose? Chlorinated sugars like sucralose? Massive galactose doses? You could be right, but you've chosen to take on a heavy burden of proof there.

As for your "shame people who don't want responsibility" ideas, I suggest reading https://slatestarcodex.com/2015/01/12/the-physics-diet/, which begins:

> There are at least four possible positions on the thermodynamics of weight gain:

> 1. Weight gain does not depend on calories in versus calories out, even in the loosest sense.

> 2. Weight gain is entirely a function of calories in versus calories out, but calories may move in unexpected ways not linked to the classic “eat” and “exercise” dichotomy. For example, some people may have “fast metabolisms” which burn calories even when they are not exercising. These people may stay very thin even if they eat and exercise as much as much more obese people.

> 3. Weight gain is entirely a function of calories in versus calories out, and therefore of how much you eat and exercise. However, these are in turn mostly dependent on the set points of a biologically-based drive. For example, some people may have overactive appetites, and feel starving unless they eat an amount of food that will make them fat. Other people will have very strong exercise drives and feel fidgety unless they get enough exercise to keep them very thin. These things can be altered in various ways which cause weight gain or loss, without the subject exerting willpower. For example, sleep may cause weight loss because people who get a good night sleep have decreased appetite and lower levels of appetite-related hormones.

> 4. Weight gain is entirely a function of calories in versus calories out, and therefore of how much you eat and exercise. That means diet is entirely a function of willpower and any claim that factors other than amount of food eaten and amount of exercise performed can affect weight gain is ipso facto ridiculous. For example, we can dismiss claims that getting a good night’s sleep helps weight loss, because that would violate the laws of thermodynamics.

> 1 and 4 are kind of dumb. (...)

4 is your position. Read the article to see why it's dumb. It's a short, easy read.

Also I suggest reading https://slatestarcodex.com/2017/04/25/book-review-the-hungry..., a review of The Hungry Brain by neuroscientist Stephen Guyenet, who specializes in nutrition. Also, and I know this may be a big ask, maybe read an actual book on the topic too. Also, you would probably find it illuminating to read

The most mainstream phenol free thermal paper out there is one made from a branded chemical "pergafast" which is supposedly based off of urea. This is increasingly the type used by big brand stores where the paper is advertised as BPA and BPS free. It appears safe in studies so far in terms of not being absorbed through the skin nor endocrine disrupting, but is also known to be highly toxic to aquatic life. There's another chemical related to vitamin c branded "Alpha Free" but it's harder to find.

https://www.sciencedirect.com/science/article/abs/pii/S02732...

Always remember that X-free or similar claims of not being toxic only means that the substances used instead of X are not yet known to be as toxic (or at just that the laws haven't caught up yet). It isn't guarantee that the new product is any safer than X and it might even be less safe. After all, the X in question was also seen as perfectly fine at some point.
Receipt printers are a blast! I had a project from a couple years ago printing out GitHub tickets using a similar setup to what I have for this dot matrix printer.
Whatever vendor(s) decided that the restaurant industry needed to switch over to thermal printers, I hope Cory Doctorow has a chat with them.

"Let's just tape this thermal receipt to your to-go container, and ... refund? What do you mean refund?"

Thermal printers are cheaper because you only have to buy paper, no ribbon or ink.

However, thermal receipt printers at restaurants seem to be among the cheapest ones around - you can get thermal printers that result in receipts that withstand decent temperatures (but, obviously, not all).

Many shipping labels are printed by direct thermal printers and those labels stand up quite well. Check Zebra for examples.

Great minds. My thermal printer spits out the weather every morning and if any important devices fall off my network it prints a notification.
Last paragraph made me laugh

At least you did something cool with your screen time!

I had something similar to this at home except it was a laser printer and it got a postscript file out of LaTeX which was parsed out from a bunch of Perl.

A couple of months in, my naive Perl parser broke and I woke up to half a ream of paper with "a" printed continually down the left hand side of the page.

Now I don't bother!

In the early 90s my daily college paper had a dot matrix printer for the AP news feed. My last year I think they discontinued the service.

Editors would take the stories and type them into our system again. The agony was mitigated by the fact we didn’t run a ton of AP stories and better ways were entirely obvious back then.

I miss the sound of those things. It was quite satisfying, and I'm not sure if it was because those were the first printers I've ever seen or because it really is a fascinating machine. That sound...as if someone would rip paper apart but nobody does and there are letters on it afterward...ASCII art was so awesome on them...

...my SO would kill me.

Yes - the sound on the video reminded me of waiting for my homework to print out in the 80s.
the sound is better than an hour with a high-end therapist, er, executive coach
Neat. Reminds me of when I (briefly) worked at a radio station. I forget basically all of the details now, but I'm pretty sure it would automatically dial up some Associated Press number, fetch the latest headlines, and send them to a dot-matrix printer. This was in the late 90's and it ran MS-DOS.

In case the author is reading: on most printers of the day, you could set the font via control codes and many printers even had variable-width fonts.

Legitimately great product idea, I think? Just the idea of a personalized (truly! by you! Not by MSN or whomever), off-screen news feed every morning is cool. The idea that I could *also replace my alarm clock with a dot matrix printer* is even cooler.

I could easily customize the php to hit my own news sources, but wouldn't know where to begin doing the hardware side on my own. Probably many others in this spot.

I'd buy it, for way more than the cost of an old printer, if it was available on the market!

As someone who did something similar back in the day - it is actually pretty easy since you literally have to connect the printer (hardest part, as you will need adaptor cables) and then write to a dev output, which is just a file (assuming you want to run this on Linux).
> assuming you want to run this on Linux

If you're in DOS (not NT/XP+, not sure about 9x), you can use the debug command to write to the serial and parallel ports. You can also use `ECHO > COM1` for serial, or for the parallel port `ECHO > LPT1`

So, curiosity today.

One of the things that this person does is simply echo to /dev/lp0.

Which is all you did back in the day. Shove text down the interface, and the printer printed.

Now, while we have very fancy modern printers, they're still printers with a long legacy. Even back in the day, early HP laser printers worked like this. Shove data down the wire, and it printed (Courier 10, 66 lines per page). Only the Apple Laserwriter didn't really do this (I don't think) because it was an exclusively PostScript printer. Instead, you shoved PostScript down the wire.

As the printers evolved, the language that was sent to them got more complicated. But even so, they still had a long line of backward compatibility.

So, if I plug a USB printer into a computer, and ls > /dev/usbXXX, will it print today? Does that still "just work"?

If I do that with an EPSON and send it EPSON MX-80 escape codes -- does it still work? It wouldn't surprise me either way, but I'm just curious if someone knows. They're very black boxy today (to me anyway).

(Anyone else remember the joys of getting reports to fit on pre-printed, multi-copy NCR forms? What fun that was!)

I have an Epson LX-350, bought new a few years ago. It connects via USB (but there's also serial and parallel ports). When connected via usb it appeared as /dev/usblp0 or something like that, and yes just cat'ing to it worked. And presumably the customers who buy these things new want them compatible with whatever processes they already have (for the last 30-50 years), so it supports both ESC/P 2 as you'd expect and IBM's escape codes (which I didn't expect and the old matrix printers I had from the 90's didn't).

What's perhaps more surprising, my macbook had an inbuilt driver for generic epson printers and it worked. It was not very good, it printed as graphics but it was there for some reason.

Not sure about modern inkjet and laser printers though. An inkjet Epson I used to have once did support raw ESC/P codes though, but it was 20 years 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.

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

> 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.

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.
I have a Brother printer from 2019 (HL 2340) that does not support IPP Everywhere. A lot of other printers from before ~2020 don’t either.

You are (like so many other people) confusing IPP the protocol with IPP the driver, which is honestly not your fault and a terrible naming mistake.

And like you mentioned, people have way older printers because if all you do is print monochrome and mostly text, a printer from 2004 doesn’t lack much aside from AirPrint / Mopria. Which is why I suspect CUPS will not deprecate at least PPD drivers.

If you read the linked issue you will see that the plan for legacy printers is to move the printer drivers under a separate application that CUPS can then talk IPP to.

So yes, CUPS itself will only support IPP without any printer-specific driver. Since mobile phones also only directly support IPP this sounds like a reasonable decision.

> If you read the linked issue you will see that the plan for legacy printers is to move the printer drivers under a separate application that CUPS can then talk IPP to.

Ah, yes. Thanks for pointing that out! I wonder how much more secure that will make things for those who have to use legacy printers.

> Since mobile phones also only directly support IPP

Technically AirPrint is not IPP Everywhere, they use a different raster format and some different glue. For example my Brother printer supports AirPrint but fails ~50% of the IPP Everywhere self-certification tests. But that’s splitting hairs.

From the mentioned issue:

> As for printer drivers, those few printers that "need" them can migrate to standalone applications/services using the CUPS API to provide an IPP Everywhere-compatible Printer instance. PAPPL provides a convenient framework for easily creating these applications and porting existing CUPS raster drivers, and the following printer applications are already available or (in the case of Gutenprint) under development:

[...]

> ps-printer-app: PAPPL-based PostScript printer application that supports all CUPS/PostScript printers via PPDs and includes all of the Foomatic and HPLIP drivers.

So drivers will still be supported in a sense, just not directly by the CUPS daemon.

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.

I used this (CUPS) to add my Remarkable 1 as a Printer in MacOS. Worked like a charm, nothing to install on the laptop…
Please share details! My wife has one of those, and this sounds like a great way to get more use out of it.
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...

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.
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.
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.
I guess your printer driver is free to emulate an LPT if it wants to.
Thankfully even USB-connected printers emulate an LPT (see the other comment I left in this tree) and are very likely to accept one of the standard command sets as well as just plain ASCII.

It's similar to the terminal emulation situation: despite being decades old, the VT100 has become a de-facto terminal command set due to its popularity.

Well, that's easy to check out as long as you have a printer connected. It's going to depend on the printer. Doesn't work on my Brother laser printer on Linux, even if I send some valid Postscript to /dev/usb/lp0 . Piping it to lpr works of course, as long as you have a default printer selected.

Once you've established that you can print basic text, you can expect that the printer's escape codes will work.

Doesn't work on my Brother laser printer on Linux, even if I send some valid Postscript to /dev/usb/lp0

It's probably expecting ESC/P or PCL. Laser printers also usually wait for a formfeed before they will process a page.

Thanks. Adding a formfeed resulted in an empty page, so there are clearly possibilities but since I can't find a quick PCL example[0] and lpr suits me fine I'm not going to investigate further.

[0] I'm assuming PCL is most likely supported, and I remember having worked with an EPSON dot-matrix printer (i.e. probably using ESC/P) in 8-bit days and that it didn't require special commands to print basic text.

> Only the Apple Laserwriter didn't really do this (I don't think) because it was an exclusively PostScript printer. Instead, you shoved PostScript down the wire.

It would be possible to write a PostScript program that emulates ESC/P (or PCL), although then you would have to send an entire page (or a page break) before the page would be printed, unlike the old dot-matrix line printers that you can print one line at a time, PostScript can only print one page at a time.

Its not like a laser printer can really print line by line though.
An old HP laser printer will buffer plain text line-by-line, and will print a page once the last line is buffered.

That buffer could have several random programs' outputs in it, all just dumped as simply as possible to /dev/lp0 (or lpt1 or whatever), and it works.

A LaserWriter can't do these things.

>will print a page once the last line is buffered.

You could usually set a timeout to eject the page if no data had been received for a while.

>A LaserWriter can't do these things.

The LaserWriter could emulate a Diablo printer which would do the same thing. It wouldn't accept PostScript then though.

You can even do this with network printers, netcat a pdf to the open port and it will print.

https://retrohacker.substack.com/p/bye-cups-printing-with-ne...

Just did this with my HP Envy injket and it worked, had no idea this was a thing it's very cool.
Yeah, I'm surprised this works. I expected some complex printer-specific reverse engineered protocol.
The modern "protocol" is PDF. That's what everyone standardised on during the rise of smartphones and needing to have them able to print.

PDF includes pretty much all the printer needs, like pagesize, colour palette, font information, etc.

It's not the greatest format in the world... But everyone can shove in one of dozens of PDF parsing libraries without a lot of effort. So it happened.

The document format is PDF (or postscript before that), the protocol is IPP.
Back when I was at school in the 1990s, there was a dot matrix printer in the computer room still, which was the default printer for any of the computers on the network. One of the classic user errors was that somebody would try to print a document from Word and it would send a load of PostScript to the dot matrix printer, which would dutifully print it all out as PostScript source, wasting paper and printer ribbon until somebody told the printer to stop...
> So, if I plug a USB printer into a computer, and ls > /dev/usbXXX, will it print today? Does that still "just work"?

I can't attest to whether piping directly to the device works, but I routinely do stuff like

    lpr -o raw -P $SOME_CUPS_PRINTER < $SOME_FILE
Back when I was doing warehouse IT work I'd hand-write ZPL code and shove it directly into Zebra printers for things like asset tags, printed instructions on equipment, etc. This was also my approach for various tools I wrote to automate the printing of packing slips and shipping labels - except these programs had to run on Windows machines, and I tell ya hwat Windows sure doesn't make it as easy as CUPS does.

More recently I dusted off that particular skillset in order to print a bunch of labels for my kitchen. ZPL really ain't that bad of a language; sure beats trying to write PostScript or PCL by hand :)

I discovered this in the most amusing way ever accidentally a few years ago.

https://x.com/normankev141/status/1146547923758538755?t=oZrj...

text of tweet: So I bought a networked printer recently and as you do decided to try connecting to it a few different undocumented ways. I tried telneting to it. It turns out that whatever you type, it prints typewriter style. That was a pleasant and hilarious surprise. #internetofshit

I wonder if this works with a sharp M205 I have in storage.
> One of the things that this person does is simply echo to /dev/lp0.

> So, if I plug a USB printer into a computer, and ls > /dev/usbXXX, will it print today? Does that still "just work"?

Both of the following worked for me:

  printf 'hello\f' > /dev/usb/lp0
  printf 'hello\f' | nc -N $printer_ip 9100
This is on a Brother laser printer. Its programming guide is linked next to its manual online. The language is PCL, but you don't really need to know much about it to get simple stuff printed.

Neither of the above involve CUPS. Using the `lp`/`lpr` executable like in other comments requires the printer to be registered with CUPS first.

For `ls >`, the printer expects DOS line endings. `\n` just moves to a new line without "returning the carriage", so you need to pipe through `sed 's/$/\r/'` or use `nc -C`.

With the USB connection, you can print multiple times to build a single page and it won't come out until you provide the form feed. With the TCP connection, the page will be printed when the connection is closed.

> Using the `lp`/`lpr` executable like in other comments requires the printer to be registered with CUPS first.

In modern Linux distros, lp/lpd are usually shims provided for backward compatibility, but it doesn't have to be that way. For example FreeBSD seems to provide support for lpd without for cups [1], although I don't see any real advantage in doing that.

[1] https://docs.freebsd.org/en/books/handbook/printing/

OpenBSD does as well. The advantage is you don’t need CUPS.
But you do still need to register the printer prior to using, or at least have a basic registration set up that works with it.
In my experience, inkjet printers can print line by line like teletypes, but laser printers can't.
I wish we could go back to this uncomplicated UX. I just spent literally 2 hours setting up a brand new Epson ET-2850 printer for my dad. I'm quite disgusted at how slow, bloated and disjointed the process was. The printer ships with an android app, which worked fairly well, and, on the Epson website, some Microsoft Windows software, which was one of the worst software experiences I've ever had. The Wi-Fi setup is totally disjointed on the printer, app and windows release. You enter the Wi-Fi password via the app, which should then forward it to the printer. That's fine, it's better than using the dreadful printer interface. The printer saw the right SSID right away. No confirmation was given whether it connected or not. No big deal.

The software on their website was a Windows executable .exe file that seemed outdated even 10 years ago. To complete the last few steps, the printer network connection had to be set up once again, even though I had already previously connected it. Each attempt would take around 10-20 minutes, only to fail. The network errors and troubleshooting steps were incredibly generic and unhelpful. The worst part, until that point, was that the printer shipped with outdated firmware, and I did an online firmware update via the printer itself, confirming that the printer's Internet connection had indeed already been established. Rebooting the printer did not help. It turned out that, despite only just downloading the Windows executable that same hour from the Epson website, they were shipping an old version .exe, with some bug that causes the network setup to not be detected. However, it never prompted me to update. Only after restarting the Windows computer, and then re-opening the .exe, did some update trigger, and it allowed me to finish setting through to the last step of the installer to download the rest of the bloat and let the printer appear in the list of available printers on the network on the computer.

I then did a test print via an iPad. Took about 15 seconds.

Wow. That brings back a lot of memories. Those escape codes, figuring how to insert a form consistently (line it up with the mark on the left, maybe click it three times or press an insert button to suck it in a bit), then continual adjustments until things mostly fit. Good memories!
Depends on when "back in the day" was; even in the mid-to-late 80s, especially if you were on a multi-user system, on BSD 4.2/4.3 local and networked printer access went through the Line Printer Daemon (still available on the BSDs).

For PostScript printers, there was a filter application (provided by Adobe) that would turn plain text (without the %! magic) into PostScript.

It's not installed by default, but the BSD (lp) interface is still available in Debian with

$ sudo apt-get install cups-bsd

> So, if I plug a USB printer into a computer, and ls > /dev/usbXXX, will it print today? Does that still "just work"?

Many commented that it still works... This brought back good memories of sending native PostScript files to an HP LaserJet 4M+'s IP address, over the LAN, using netcat. Amazing stuff.

The gotcha of course is when the shit hits the fan: it can quickly degenerate into pages upon pages of garbage getting printed.

On the plus side back when things were, and still are, simple like that, typically just turning the printer of and terminating the command and you'd be good to go. As opposed to, say, weird spoolers/cache sometimes relaunching print jobs people thoughts were long gone.

God, that's a flashback. Desperately running NET STOP SPOOLER on an NT print server and then deleting some large SHD file because someone sent 789 pages of manuals to the printer. Sigh.
> it can quickly degenerate into pages upon pages of garbage getting printed

This is still a thing... I was setting up a modern Brother laser printer in FreeBSD (Brother only supplies Linux "PPDs" which run a bunch of binary blobs with Ghostscript and weird stuff) and figured it was easy enough so I did it remotely. Could only watch helplessly on the security camera as the printer spit out every page in it's paper cassette covered in junk... Remote stop commands did nothing.

So, if I plug a USB printer into a computer, and ls > /dev/usbXXX, will it print today? Does that still "just work"?

For those who want to look into the horse's mouth, USB printing device class:

https://www.usb.org/sites/default/files/usbprint11a021811.pd...

"Printers have two different types of commands: those that transfer data, and those that control the USB interface or printer interface. The host prints something on a printer by delivering data on the Bulk OUT endpoint. This data may take the form of PostScript, HP PCL, or any other PDL. This data may also be encapsulated in a PCP, such as IEEE 1284.1, or something that is vendor-specific. In addition, the data may also be simple text, or it may be a proprietary PDL."

The rest of the spec makes it very clear that this is intended to work exactly like a standard parallel port at the "application layer". Use the bulk OUT endpoint to write data to the printer, and the bulk IN to read data from it. There is a status request that returns the same signals (out of paper, etc.) that a parallel port has.

If I do that with an EPSON and send it EPSON MX-80 escape codes -- does it still work?

ESC/P and ESC/P2 which followed are backwards-compatible and based on the MX, so likely yes.

(comment deleted)
Hacker invents the newspaper