Repository navigation
Enabling my label printer on bluefin #4949
Replies: 4 comments 5 replies
|
Here's some detailed information about these two packages: |
|
I wanted to share a bit more detail about how I got the Brother QL-800 label printer to work on Bluefin. This post might be a bit meandering. I ended up layering the two packages mentioned previously:
At a high-level, I needed to:
First, I needed to check which driver CUPS was using for my printer. I looked for a ls /etc/cups/ppd/I found Generally, CUPS stores the PPD associated with an installed printer as: From there I used sudo grep '^\*NickName' /etc/cups/ppd/QL-800.ppdI got this output: This indicated that CUPS was using the wrong driver ( But I installed Here's a quote from the
Within the output I found this: This shows that CUPS now has a suitable QL-800 driver available, specifically, So I reassigned the existing QL-800 CUPS queue to use that driver. Here's how: Find the device URI for your printer: lpstat -vThis will show the printers that CUPS can drive. In the output I found: Note: the string Now run the sudo lpadmin \
-p QL-800 \
-v 'usb://Brother/QL-800?serial=000XXXXXXXXX' \
-m 'foomatic:Brother-QL-800-ptouch-ql.ppd' \
-EThe This command caused I could verify the results by running: sudo grep -E '^\*(NickName|ModelName)' /etc/cups/ppd/QL-800.ppdI saw this output: Now for the homestretch! Next, I needed to "allow" Here's how to "allow" foomatic-rip to use your printer's PPD. First, you'll need to run the Here's what I ran: cd /tmp
sudo foomatic-hash \
--ppd /etc/cups/ppd/QL-800.ppd \
ql800-review \
ql800-hashesThis
I looked at sudo mkdir -p /etc/foomatic/hashes.d
sudo cp ql800-hashes /etc/foomatic/hashes.d/ql800After that, the QL-800 was mostly working. I did run into some minor settings issues. The driver was using the wrong media type, so I changed it to labels: Before making this change, the printer's red error light would blink whenever I'd try to print a label. I also opted to change the "Print Quality" to But this is a personal preference. The default value of Note: This setup uses the legacy CUPS PPD/driver model. CUPS currently supports it, but PPD-based printer drivers are deprecated. This guide therefore describes a working Fedora/Bluefin setup as of Sept 2026... But changes are coming. Linux printing is evolving. I hope to share more about that later. |
|
@castrojo I've been doing some research into the maintenance implications of adding these packages to bluefin. After getting this working, I'm less convinced that adding Foomatic and legacy printer drivers to the Bluefin image is the right long-term solution. But it might be a good present day solution. The current setup works, and it's likely going to work for the time being. But it relies on CUPS's deprecated PPD/filter driver architecture. This now requires auditing and allowlisting Foomatic commands. The end user experience is kinda messy. (My previous post probably gives a directionally representative picture of what the user goes through) OpenPrinting's intended replacement appears to be Printer Applications. These are printer-specific services. They expose a standard IPP interface to CUPS over the network while keeping the messy specifics outside of CUPS itself. The problem is that these printer applications don't exist yet (for fedora), so the most straightforward solution is to layer these packages. (this adds maybe 642KiB for Still, I'm thinking the best future solution for bluefin is to have end-users deploy Printer Applications as podman quadlets (if this ever becomes possible). That way, Bluefin's image could remain driverless. Basically, the host could access all printers using IPP Everywhere, AirPrint, or driverless IPP. And as of now it's looking like there are gonna be two common types of Printer Applications. Some will be native Printer Applications, where somebody takes the "legacy" driver and ports/wraps it cleanly using PAPPL. The other way is less clean... like putting some crusty service inside a container and exposing a clean HTTP API 🤣. The internals may still be crusty (they will still run the CUPS driver and filter code), but the host doesn't need its dependencies (so this is still an improvement). The other problem is that there are certain printers that are holdouts. These holdouts are modern enough to still be sold brand new, but they don't implement driverless IPP. OpenPrinting specifically notes label printers as common holdouts. They don't implement IPP Everywhere-style printing. In addition to label printers, certain industrial and vertical printers are common holdouts too. These printers still have FOSS drivers and they still work great on Linux. If you're still open to adding Anyways, I'm really no expert in these matters, and I'm still learning. So I'm very sorry if I messed up any details. Edit: here are a few reference links:
Also, I've been updating this note as I find more information. I added that link to |
|
So I got the QL-800 label printer to work using a quadlet. The OpenPrinting folks have made a Printer Application that wraps the existing So I think there's maybe a path forward where nobody needs to layer anything in Bluefin to support legacy printers, or label printers like the QL-800 Here's my quadlet Here's the associated I needed to run these as root-full containers because they access USB devices. I also needed to disable security labels, since the container needs access to my USB printer and I don't think it's a good idea to try and relabel USB devices. With that in mind, here's how I installed the quadlet: sudo cp ghostscript-printer-app.container /etc/containers/systemd/
sudo cp ghostscript-printer-app.volume /etc/containers/systemd/
sudo systemctl daemon-reload
sudo systemctl start ghostscript-printer-appFrom there I needed to go to: http://localhost:8000/ to setup the Printer Application. I added the QL-800 as a printer, then I made some configuration changes. In particular I needed to update the media size, and I set the After that, I ran into some odd behavior with gnome and LibreOffice where neither could auto-configure my printer as expected. But I was able to print from my phone (iOS) and from http://localhost:8000/ (by clicking the "test print" button). So overall the printer application was working. To fix the issue in gnome, and to enable printing from applications such as LibreOffice I needed a work-around. Here's what I did: I ran this command to find the URI for my Printer: ippfind -l
Once I found the URI for the QL-800, I could run a command to make the printer available to applications running on my laptop. Here's the command: sudo lpadmin -p <PRINTER NAME> -E -v 'ipp://<HOST>.local:8000/ipp/print/<PRINTER NAME>' -m everywhereThe printer name, and the URI both come from the After that, I could print labels from LibreOffice and it's mostly fine. In some ways the IPP printer standard doesn't perfectly line up with the native PPD variables and capabilities. So I don't have as many options in the Printer > Properties dialog. In fact, there are no useful options in the Properties dialog. The only thing you can do is ruin your settings by making configuration changes that don't work 😆. Using the layered So it's still early days. But it did work. I made a few test prints and it was about as good as before. This setup also enables me to print from my phone (which is pretty handy). That said, I've really not tested this very much. But it's pretty cool that I got a printer application deployed in a quadlet. I'll leave this on my system and continue to test it. I also think the LPrint Printer Application might be a promising alternative. It might be possible to deploy that in a quadlet too. In my previous post I said:
My limited understanding is that LPrint is more like a clean PAPPL Implementation. And the ghostscript-printer-app is more like a crusty service running inside a container 😆 (but I'm Incredibly thankful for both projects ❤️). As of now, ghostscript is actually working on my system. And if I find an OCI image for LPrint, I'd love to check it out. |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Hi, I'm not sure if there is any chance of this information leading to a change in bluefin 🙂. But I ended up layering two packages in order to get my label printer to work:
Anyways, these two packages are FOSS and available in the fedora repos.
I have a Brother QL-800 Label Printer, and all my printer troubles went away once I layered these packages (and did a bit more afterwards).
I'm thinking I'll keep these packages layered and hope for the best when bluefin 45 releases. Of course, I can always remove any extra layers in case of trouble.
And if keeping these packages around seems impractical, then I was thinking I could create a Debian LXC with the equivalent printing packages. Linux handles network printing really well it seems. So I could probably do USB pass-through with incus, and configure bluefin to print to a networked printer.
Anyways, I thought I'd share, in case my solution can help anyone else trying to use a brother label printer on bluefin. 👍
EDIT: To get the QL-800 printer to work There's a bit more to do beyond installing these packages. I documented what I did here: #4949 (comment)
All reactions