Ippeveprinter

0 views
Skip to first unread message

Antígona Knknown

unread,
Aug 4, 2024, 11:01:33 PM8/4/24
to ovunmidfi
Printerdrivers, backends and PPDs are all now deprecated in CUPS, so I'm looking for the 'new' way to print PDF files to disk. Michael Sweet (the inventor of CUPS) suggests that ippeveprinter is the way forward, but I'm having difficulty understanding it.

This produces a PostScript file (though with the file extension .prn). Even using the -F application/pdf option did not produce a PDF file. Again, the man page says it must be used with the -P option that specifies a PPD file. This also didn't work, unless I added a line to the PPD that specified PDFs to be generated:


The ippsample project provides sample, non-production-ready implementations of IPP Clients, Printers, and Proxies. It makes use of the CUPS Library v3 and PDFio library projects to provide low-level HTTP, IPP, and PDF support. The ippserver and ipp3dprinter code was also inspired by the original CUPS ippeveprinter source code. The project also includes the ipptransform3d transform program for 3D printing to G-code printers as well as a "lint" program (ippdoclint) for validating document data in automated test environments.


The IPP Sample Code is developed and distributed as open source software under the Apache License, Version 2.0. Contributions should be submitted as pull requests on the Github site. Developer guidelines can be found in the file DEVELOPING.md.


The ippserver program implements most IPP standards and is commonly used for prototyping and automated testing. It provides a generic IPP Printer interface that allows you to share printers locally or using the IPP Shared Infrastructure Extensions. Printers can be configured to use authentication and/or to provide transforms using the included or third-party programs. A scriptable web interface allows for a variety of automated testing opportunities.


Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.


CUPS printer drivers and backends are deprecated and will no longer besupported in a future feature release of CUPS. Printers that do notsupport IPP can be supported using applications such asippeveprinter(1).


This answer demonstrates how to install the driver for your printer using the Mac operating Big Sur. The version of macOS used in the answer is 11.6.1. This answer was also tested using macOS Monterey 12.1 with success. However, the procedures and results were slightly different.


When a HP printer is added to the list shown in Printers & Scanners pain of the System Preferences application, the driver chosen by default may not be the newest of the available versions. A newer driver version may be obtained by selecting the driver while manually adding the printer.


I do not have a HP Ink Tank 115. To provide this answer, I will instead substitute an HP Office Pro 8600. Normally the printer would be directly connected to my Mac. However, this would require moving the printer, which I am not will to do in order to answer this question. You can connect your HP Ink Tank 115 to your Mac through a USB cable. I will access the HP Office Pro 8600 through printer sharing with a 2011 iMac named Marlin. The 2011 iMac is using macOS High Sierra 10.13.6


I chose Select Software... for "Use:" to cause the Printer Software popup to appear, as shown below. Note, the Office Pro 8600 was not listed. Therefore, if I added this printer, the driver from 2011 iMac would have been used. I desired instead to get the driver from HP. At this point, I closed all windows.


By going to HP's websites, I can determined that I needed download and execute the HP Easy Start application version 2.13.0.220124. Conveniently, the same download is specified for the HP Ink Tank 115. You can confirm the download is the same by going to the link in your question and changing the selection from macOS 10.13 to macOS 11". The link to download is titled "Install HP Easy Start".


The window below shows the software which was found for the HP Office Pro 8600. Note, installing Essential Software also installs the HP drivers. I chose the default to install the Essential Software and HP Easy Scan. I assume the HP Ink Tank 115 does not scan, so I would assume the HP Easy Scan application would not appear when a HP Ink Tank 115 is selected as the device.


The printer driver version can be determined by first opening the Printer & Scanners pane of System Preferences. Next, highlight Officejet Pro 8600 @ Marlin in the Printers list, then select the Open Print Queue... button. Finally, select the setting (gear) button to view the driver version under the General tab, as shown below. The print driver version is 4.1.1.


To switch to the print driver version which was downloaded and installed when the HP Easy Start application was executed, the Officejet Pro 8600 @ Marlin printer would have to be removed from the list, then manually added back in. To insure the print driver downloaded from HP is used, you have select the driver when manually adding the printer, as shown below.


Hello:

Is my first time using Fedora and I would like to use it full time, but I NEED to print documents at work, it was impossible for me to print that is showed in the screen. The problem is that print strange things, like codes, too much letters and numbers, but not the document that is showed in the screen.

printingtrouble1280720 122 KB


Please post pre-formatted text as text using copy and paste with the button from the row at the top of the text entry window. Images are not searchable and can be difficult to read on a laptop screen.


Please look at man cups. This has an overview of the printing workflow with links to the CUPS administration page on your system and support sites that may have users familiar with your printer. The page also mentions that support for legacy printers is moving to ippeveprinter (from the cups-printerapp package).


CUPS printer drivers, backends, and PPD files are deprecated and will no longer be supported in a future feature release of CUPS. Printers that do not support IPP can be supported using applications such as ippeveprinter(1).


One observes that a certain time after booting cups-browsed suddenly starts to occupy a certain percentage or all of one CPU core. This slows down other processes on the system, consumes battery power, causes noise of the CPU fan.


A typical trigger for this bug is a sudden disappearing of a printer in the network, for example if a laptop shares a printer and it gets suspended by closing the lid. This way the shared printer most probably disappears without the laptop's Avahi sending out some "disappered" notification.


The problem got introduced on the transition from cups-browsed 1.x to 2.x (in Ubuntu 23.04). cups-browsed got a multi-threading feature added to be able to create more local queues at a time, especially when there are many printers available in the network..


The bug is in the error handling: If cups-browsed fails to access a remote printer in a sub-thread, it sets a flag to inform the main thread, to stop an update loop. The main thread misses to reset the flag once it has stopped the loop and so any further update loop during the rest of the life of cups-browsed gets stopped immediately, no printers updated at all, and as because of the updates not performed, updates are still needed and so the loop called again immediately, ending up in an infinite busy loop.


To try to reproduce it one ideally takes 2 computers, one running Ubuntu 23.04 with the affected cups-browsed (the client) and one running any Linux and sharing printers by means of CUPS queues, Printer Applications, or the ippeveprinter utility (the server).


All these methods should make (a) shared printer(s) on the server go away without getting it properly de-registered from Avahi on the server, and so no notification being broadcasted into the local network. So the client's cups-browsed would not remove the corresponding local print queue and keep maintaining it, sooner or later failing to access the printer and then getting stuck as described above.


The fix does nothing more than removing the mentioned flag, and instead mark the remote printer as disappeared. This way the update loop is not stopped but finishes normally, which is no problem as the remote printers are independent, there is no reason to skip updating printers because one printer failed.


If cups-browsed gets notified about a disappeared printer by Avahi, it also marks it as disappeared so that the queue gets removed in the next update loop. So now we do the same with faulty printers, which simply do not answer to an IPP request.


It could be a problem with the network, but I'm seeing cups-browsed appearing to keep one CPU core busy. According to systemctl, it has used 51 minutes of CPU time since being started 6 hours ago (the laptop has been suspended a few times in that time):


These errors seem to be generated when glib's g_source_remove() function is called with an ID for a job that doesn't exist. This could indicate that cups-browsed is losing track of an idle or timeout function.


Ryan, thanks for the log file. Unfortunately there is only a little stub in the beginning readable and the rest is all zeros. Could you re-test (stop cups-browsed, delete log file, start cups-browsed) and then, after cups-browsed is taking up CPU again, stop cups-browsed, copy the file, check whether it is not damaged, and then attach it? Thanks.


I think the problem is that the messages are being spammed so fast the log file is being continuously rotated. Is there a way to quickly disable that? Otherwise, I think even in the segment I uploaded one can see that it's the same repetitive messages over and over again, each group starting with the update_cups_queues() message.


Today I noticed cups-browsed eating 100% CPU for a while (about 20 minutes). I restarted it with 'sudo service cups-browsed restart', which took 1 minute 36 seconds (presumably cups-browsed didn't want to be restarted so systemd killed it forcefully after a 1m30s timeout?).

3a8082e126
Reply all
Reply to author
Forward
0 new messages