Printing
Dave Higton (1515) 3559 posts |
Anyone who has a modern-ish printer that is on the LAN (either by wifi or a cable): perhaps you would care to point a browser at it on port 631, more or less like this: where printer-name can be either its IP address or its DNS name (the name by which you can ping it, for example). If the printer responds, it probably supports IPP, and I’d be very interested to see what the response is. If http works, then https might also work too. |
andym (447) 473 posts |
On my HP Colour LaserJet M255dw, I get a full configuration window for the printer. Only in Iris though, not in Netsurf – that’s just blank. Doesn’t work if I use https though. My Epson AL-m2000 refuses to respond on port 631, even though the configuration page reports that it is operating on that address, with port 631, but with a suffix of with /EPSON_IPP_Printer. Doesn’t work under Windows either. |
Rick Murray (539) 13907 posts |
Note that IPP uses a binary payload rather than the textual http; so whether or not anything useful happens when trying to connect via a browser will depend upon the printer.
May be simpler to look in the printer’s settings. Often there’s a page listing the available services that can be turned on or off. Or the user guide…
Looking at the network setup guide for that printer, it appears to me that it simply uses IPP as a transport protocol (because it supports querying status, authentication, job control, etc) but it doesn’t support IPP Everywhere. Note: “IPP” is a transfer protocol that does not define the payload 1. “IPP Everywhere” is not the same thing, despite pretty much everybody shortening it down to “IPP”, which defines a PWG raster image in addition to whatever the printer normally supports 1. Of course, being printer manufacturers, they then went and blew it by developing Mopria which is “open” if you can cough up large wads of cash… There is an IPP Everywhere scanner protocol 2 but it doesn’t seem to be widely supported. Anyway, a while back I threw together a very simple scanner that tries to query IPP capable devices. https://www.riscosopen.org/forum/forums/5/topics/14646?page=9#posts-131852 3 1 Typically some version of PCL/PDL or PostScript, some newer printers may accept PDF directly. 2 http://ftp.pwg.org/pub/pwg/candidates/cs-ippscan10-20140918-5100.17.pdf 3 Note that to scan the network, this needs Inet$EtherIPAddr to be an actual dotted quad IP address and not some rubbish like “from hostname”. If it falls, check what Inet$EtherIPAddr actually says. |
Andrew Daniel (376) 91 posts |
For my Samsung M2070 mono laser printer, Dave’s suggestion just opens the configuration window as well. However using FindIPP -ip 192.168.1.50 does work and produces lots of information, the highlights of which is that IPP 1.1 is use, and versions 1.0 and 2.0 are also supported. PDFs are not supported but QPDL is used. A quick search suggests the unix utilities foo2qpdl and foo2qpdl-wrapper might be useful. I can supply the full text output from Rick’s FindIPP if required. |
nemo (145) 2611 posts |
My Epson redirects to <printername>/PRESENTATION/HTML/TOP/INDEX.HTML
Antivirus says oh no you don’t. |
Rick Murray (539) 13907 posts |
I did say to ensure that
For Dave’s IPP stuff, you’ll want to see if it supports URF (AirPrint) or PWG (IPP Everywhere). However…
My M2020W supported neither but it was quite happy pretending to be a LaserJet 6 if I simply threw the data at it using RemotePrinterFS: RemotePrinterFS#proto=JetDirect;address=192.168.1.17;port=9100: It’s a shame the power supply board went tetons dans l’air because I quite liked that printer. Good quality, fast, zero fuss. Great for printing off datasheets and such. Oh, and envelopes. If it wasn’t for Dave’s efforts, I’d be able to use RISC OS with exactly none of my current printers. But now with an AirPrint/IPPEv solution, it works. Granted, it’s a little more involved that before, given that WiFi printers aren’t attached to an actual port (and neithers !Printers nor the drivers have any concept of such a thing 1) but the important thing here is that it works. 1 But, then, Printers is so arse-backward that you literally need to set up two different printers if you want one in draft and one in regular… Or colour vs mono. It gets ridiculous really quickly. |
Dave Higton (1515) 3559 posts |
Interesting findings, thank you to all. My LinuxBox responds on port 631 and not at all on port 80 (the port is not open), but it’s a print server rather than just a printer. Anyway, my next question for participants is: does the printer’s web page (from whichever port it responds) give you a URL for printing from the printer? This is highly likely to specify port 631.
Not too surprising; there’s more to go wrong – certificates that are self-signed, expired or revoked, incompatible encryption algorithms, etc.
How do you print to this from RISC OS, in fact can you at all? I’m going to create an IPP Printing page on my web site. One of the first things there will be an app that you can point at your IPP-capable printer, and it should create a Printer Definition File. (This is like FindIPP, which I trialled some time ago, but this one doesn’t require mDNS and should therefore work from emulated RISC OS.) IMPORTANT – just having a Printer Definition File for your printer will NOT make the existing printing system print to your printer. You need more, and I’ll gradually put that up too. I’ll keep posting back. |
nemo (145) 2611 posts |
<thumbs up emoji> |
Rick Murray (539) 13907 posts |
My two HPs – no. It’s too basic. You can turn IPP on or off. You can turn AirPrint on or off (but if AirPrint is on, so too will IPP be).
Oh yeah. Even Firefox is getting in on the DIRE TRAGEDY warnings these days. Once upon a time there used to be a “Don’t bother me about this for this URL again” but it seems to no longer exist. So the plain HTTP interface causes Chrome to lose its marbles over not being SSL, and the HTTPS one makes the marbles fall out again over a self-signed certificate. |
Dave Higton (1515) 3559 posts |
OK, go to http://davehigton.me.uk and you’ll see I’ve added an “IPP printing” page. No doubt you will all let me know here if GetIPP works. I would very much like to see the Printer Definition Files that it produces. There should be nothing private in there – there’ll be a URL, but it will be a non-routable one so there will be no adverse security implcation. You can email them to me at dave at davehigton dot me dot uk. |
Dave Higton (1515) 3559 posts |
This route is not open to users of RPCEmu, for example, because the host already has the mDNS port open, and FindIPP can’t (re-)open it, hence it doesn’t work. That’s why I wrote GetIPP. |
Dave Higton (1515) 3559 posts |
I’ve added FindIPP to the IPP printing page. I must get the other stuff uploaded over the coming days, in particular the instructions, because this lot has to be used very differently from the traditional way. |
nemo (145) 2611 posts |
|
Andrew Daniel (376) 91 posts |
I now have a printer definition file from GetIPP. However no matter what I tried I could not obtain the required URL using a browser. Even the Airprint settings page did not show the URL. The URL was found in the output from Rick’s FindIPP with the -ip option. uri : printer-more-info = “http://192.168.1.50/sws/index.html?link=/sws/app/settings/network/AirPrint/AirPrint.html” |
Doug Webb (190) 1181 posts |
Snap couldn’t get it via the browser, Hp Color LaserjetPro M254dw, but found the details via Rick’s application as per above. Update: Just using http://Printers IP address/ipp/print works |
Doug Webb (190) 1181 posts |
HP 3630 works with just a simple http:// The Printers Ip address:631/ipp/print in GetIPP, your FindIPP fails to find it and then disappears from the iconbar. Hp 3630 fails to generate a Printer Definition File when entering the printer-more-info details via Rick’s FindIPP. Both the 254dw and 3630 will print using the ported ipptool and ipptransform applications. |
Andrew Daniel (376) 91 posts |
I’ve now had a go on my real RiscPC! (Running OS 5.28 softload) Dave’s FindIPP does not find the printer and quits. Rick’s FindIPP (this time without -ip) scans the real network (RpcEMU scans 10.10.10.x) and correctly identifies the printer. Update using GetIPP on RpcEMU with http://printerip/ipp/print/ closes the GetIPP window and kills the network connection. |
Rick Murray (539) 13907 posts |
My two printers are an HP3630 (soon to be retired) and an HP 4222e. FindIPP finds neither. Yes, they were woken up prior to scanning. Your mDNS app, from a long time ago, doesn’t work either. Didn’t it used to? I can’t remember. Since I know it’s you, Dave, I knew I could rely upon something. ;) FindIPP 0.01 (2023 May 27) starting up 17:34:22.99 Exec Result of bind: 0 Socket: 52 Transaction ID: 0x43AF Result of sendto: 33 Message from 192.168.1.15 1B9A0 |43 AF 00 00·00 01 00 00¦00 00 00 00·04 5F 69 70 : C¯..........._ip : +0 1B9B0 |70 04 5F 74·63 70 05 6C¦6F 63 61 6C·00 00 0C 00 : p._tcp.local.... : +16 1B9C0 |01 · ¦ · : . : +32 ID: 0x43af, bits: 0x0000, index: 4 This is a request Finished dequeueing and processing, false, false process_state: 0 Closing down; 0 printers found Maybe you just need to wait longer, perhaps? GetIPP should probably try assuming a path of The HP3630 makes a definition file that reports that it can do 300×300. Strange that Doug’s HP3630 fails. Maybe we’re running different firmware versions? The HP4222 makes a definition file that reports 300×300, 600×600 (default), and 1200×1200. From your page:
IPP is not HTTP. If it works at all, it’s the printer being nice. It doesn’t need to do anything in response to a browser’s HTTP request. What you are asking is akin to asking “try connecting to a POP3 server using a browser”. :) For reference, the HP3630 does nothing, and doesn’t close the connection (it’s probably waiting for valid data). The HP4222 redirects to port 80 for the internal server. Better, perhaps, to suggest to try the following: http://<printer's IP address or name>:631/ipp/print But, then, GetIPP could be a lot more helpful here and not ask for the unnecessary And for everybody else reading, hopefully this is illustrating the complications in talking to modern WiFi style printers. This sort of stuff is rather alien to RISC OS. That, by the way, is what FindIPP is trying to find. It is looking for Anyway, armed with that information, you can then probe the printer directly to determine its capabilities and resolutions (etc) and then be able to print to it. So there’s no specific way to read from the printer what the correct paths are as the mDNS has already told you that. Welcome to the twenty first century… |
Doug Webb (190) 1181 posts |
Repeat 100 times, I must be clearer :-) So using GetIPP with http:// The Printers Ip address:631/ipp/print works and generates a Printer Definition file for the HP3637. Using the printer-more-info = information from the file your FindIPP generates in GetIPP doesn’t work on the HP3637 but does with the HP254dw. Dave’s FindIPP doesn’t work at all.
And even more credit to you and Dave for all the work done so far as this stuff isn’t trivial. |
Steve Pampling (1551) 8198 posts |
A DNS service record? Or, I could go and sort out the lamb and veg in the slow cooker. |
Rick Murray (539) 13907 posts |
I trust you took this option. ;) I have some beef and veg and dumplings I did in the slow cooker on Saturday. Thinking I’ll reheat them and drop it over some rice. Mmm, sounds almost like a plan… Let me set the PVR for tonight’s zombies and then I’ll get to it. |
nemo (145) 2611 posts |
VirtualRPC is good for printing, obviously. The only thing I recall changing is adding “Host Printers” to !Printers: |
Matthew Phillips (473) 722 posts |
On my printer (Xerox Phaser 6600) I just get 404 Not found when pointing the browser at http://192.168.1.66:631/ Don’t know whether that is useful to you! |
Dave Higton (1515) 3559 posts |
@nemo: Following on from what you were saying in the last Fireside Chat. My PDumperIPP module relies on PDriverDP, which in turn relies on PDriver. Are you saying that those modules, plus presumably what is in the kernel/wimp etc. (but NOT including Printer Manager) are sufficient to enable printing? If so, that makes it possible for my IPP Transport app to provide the management interface for printers too, which at a stroke frees us from the limitations of PM. |
Dave Higton (1515) 3559 posts |
Sorry, I’ve been rather quiet for a few days now. I’ve been working towards releasing my stuff. I’ve just been chasing down an error that prevented error-free startup of the printing system when an IPP printer definition file was the default. Now found and fixed. The two error boxes that came up on screen bore no relation to the causal error. |