TL;DR: Printing feels like it is the 90s again, Windows 3.x is calling and wants its printers back . Scanning amazingly “just works”, at least over USB. 3D printing is in the works. Networking is a mixed bag. Smartphones are not really working for me yet. Serial USB devices largely work.
Recently, I discovered Haiku, a “shockingly good” desktop operating system. Today I wonder how well its hardware support might be, especially in the areas of printing, scanning, 3D printing, networking,dealing with smartphones and with serial USB devices like Arduino boards. Only one way to find out — let’s give it a try! And thus the plugfest begins.
Printing
Networked HP MFP
On the Mac, the HP LaserJet Pro 200 color MFP on my local network just appears as a usable printer without me doing anything. Even in recent versions of Ubuntu, this printer is recognized entirely automatically. I can boot into a Live ISO, do nothing, and the printer will appear in print dialogs. No driver needs to be installed thanks to IPPEverywhere.
On Haiku? First surprise: The default web browser, WebPositive, does not even have a “Print” command. StyledEdit does. When I press Alt-P there, a window pops up asking me to set up a default printer. Of course I agree.
The list of printers that appears just shows “Preview” and “Save as PDF”, but my HP LaserJet Pro 200 color MFP with all its Zeroconf and IPPEverywhere wizardry is a no-show.
So I click “Add…”.
Next, it does not recognize that printer I have. At this point I feel reminded of Windows 3.x. Will it ask me to swap floppy drives next?
No “HP LaserJet Pro” to be seen anywhere? Too new? Hardly, the machine is at least five years old. Oh well, I select a similar-sounding “HP Color LaserJet CM2320 MFP”.
Excitedly, I go back to StyledEdit and press Alt-P. What is this? Are you kidding me?
So I head over to the Terminal, only to find out that the trustyavahi-browse
command, the swiss army knife to knowing which devices hide behind which IP addresses in the network, is missing, and even command-not-found
has no clue where to get it. Googling around I find a blog post from ten years ago where someone reports that “I’m currently working on the service browser. It is almost finished”.
Searching in HaikuPorts yields nothing, except for qmdnsengine, which seems to be a library only. I cannot find a tool that is using said library.
At this point I give up, printing is not that important to me, after all.
“Quick” fix: Deeply integrate mDNS/Zeroconf into the system and use something like CUPS for printing (it is what Apple uses, after all)
Scanning
CanoScan LiDE 60 USB
Assuming the worst I dust off my venerable CanoScan LiDE 60 flatbed scanner. Since every smartphone has a many-megapixels camera, it is not seeing much use anymore. I hook it up to the Haiku machine over USB, launch the Sanity scanning application, and am shocked to see that a few seconds later, this is greeting me:
Networked HP MFP
Nope, Sanity does not find the scanner which is built into my HP LaserJet Pro 200 color MFP. I think the Mac recognizes and automatically configures it using Zeroconf (“Bonjour”), one of my favorite “it just works” enabling technologies of all time. Haiku, not so much. See “printing” above.
3D printing
Slicers
No GUI slicer available so far. Since I had written about the lack of a slicer on Haiku a couple of days ago, a command line slicer in is the works. Thank you, Gerasim Troeglazov, it’s a great start but not fun to use without a GUI.
Printer host
A “printing host” is something that can send data to the 3D printer over a serial line. GUI slicers like Ultimaker Cura and PrusaSlicer have this integrated. What is there on Haiku? I see Atelier on the screenshot above. So I consider this solved.
Sender
A “sender” is something that can send data to the 3D printer over WLAN or wired network to a networked printer or printer host. GUI slicers like Ultimaker Cura and PrusaSlicer have this integrated.
Dealing with smartphones
Android smartphones use the Media Transfer Protocol (MTP) and/or the Picture Transfer Protocol (PTP) to connect to the computer. HaikuDepot has PhotoGrabber, an application that downloads/deletes pictures from USB digital cameras using PTP. At fist I thought I could not get it to work with my Android phone. Then I discovered that you have t manually switch to a PTP plugin.
Quick fix: have all plugins enabled by default at the same time.
However, I still was not really able to use this. It started to show some pictures from the device, and then tripped over
bdcpPTP - Transaction: Session 1, Transaction 3c5, Code: 100a.
bdcpPTP - GetData: Expected data container, received 0003.
I only hope it has not deleted any of my photos from the camera!
Proper fix: Mount PTP and similar devices as volumes
iPhones and iPads use (of course) something proprietary and according to this forum entry it looks like they are not working with Haiku (yet). Haiku is not to blame here: On Linux, if you use a very old iOS and a very new Linux distribution, chances are that sometimes it is working — until the cat and mouse game begins anew. Thank you, Apple, this is what I dislike you for.
Networking
Built-in Ethernet
Works for me on all machines.
Axis USB Ethernet adapter
Supposed to work, but not working for me.
Built-in Intel WLAN
Works for me.
Built-in Broadcom WLAN (Mac)
Known not to work (yet?).
Serial USB devices
Many devices contain what is known as a “serial to USB bridge”. Examples for such devices include 3D printers and Arduino boards.
The most common USB bridges are CDC, Prolific, FTDI, and Silicon Labs. All of these are supported in Haiku:
KERN: usb_serial: CDC ACM compatible device (0x2341/0x0036) addedKERN: usb_serial: PL2303 Serial adapter (ATEN/IOGEAR UC232A) (0x067b/0x2303) addedKERN: usb_serial: FTDI 8U232AM serial converter (0x0403/0x6001) addedKERN: usb_serial: Silicon Labs CP210x USB UART converter (0x10c4/0xea60) added
However, I am getting a reproducible kernel panic for which there is a workaround (ticket).
Flashing firmware to a 3D printer using avrdude
works (although I had to work around a known missing dependency bug). So libusb based tools do work.
Looking for: Read-only removable media
Making removable media read-only
I like stateless, read-only systems a lot. This is why I use Live ISOs for Linux, where a reboot always brings me back to the original state. How can I achieve the same for a Haiku system?
I find these instructions using diskpart, obviously written for Windows:
- Open CMD as admin and type
diskpart
. - When diskpart loads — type
list disk
- Select your USB device using the
select disk 1
command (where 1 is the number of your USB) - Use
attributes disk set readonly
to set the drive as read only.
According to this, on a Unix system, you can use hdparm
to set SATA/IDE device parameters:
- Check if it is read-only with
hdparm -r /dev/sdX
- Turn on read-only with
hdparm -r1 /dev/sdX
- Turn off read-only with
hdparm -r0 /dev/sdX
I am starting to wonder whether the same would work for Haiku.
Conclusion
Hardware support in Haiku is much better than I had thought. Yes, here and there you will still run into issues, but it’s not even 1.0 yet, remember? Printing leaves to be desired, but honestly printing is not that important for me these days anymore. I’d like to see Zeroconf to be woven deeply and elegantly into the system, since it is one of those magic ingredients for the “it just works” experience.
My week with Haiku
This concludes my week with Haiku.
What I thought would be just a quick test turned out to fascinate me so much that I just couldn’t stop playing with it.
At this point I can’t but wonder, can Haiku grow into the “Hello” operating system I have envisioned: The original Mac, re-imagined for today as open source?
Without noticing, I have started to become a participant (including 3 Haiku tickets, and 10 HaikuPorts issues).
To “get there”, I think the team has to focus, and to prioritize. This would be my overall priorities:
- Fix remaining boot issues and lockups (e.g., XHCI — being worked on)
- Fine-tune web browser performance
- Video acceleration (read: 4K YouTube in the browser)
- 3D acceleration (read: TinkerCAD and Onshape in the browser)
- Everything else
The Haiku team has been very welcoming and patient with a newcomer like me. Thank you so much for answering all my newbie questions, bearing with my experiments, and sparring my ideas.
But wait, there’s one more thing…
Try it out for yourself today! The Haiku project provides nightly images that can be booted from DVD or USB. Installation consists of downloading the nightly 64-bit image and writing it to a USB stick using Etcher.
This article is part of a series:
- https://medium.com/@probonopd/my-first-day-with-haiku-shockingly-good-8930cad4bbb0
- https://medium.com/@probonopd/my-second-day-with-haiku-still-thrilled-but-not-ready-to-switch-just-yet-2310330d104b
- https://medium.com/@probonopd/my-third-day-with-haiku-reality-is-settling-in-47b551216550
- https://medium.com/@probonopd/my-fourth-day-with-haiku-installation-and-boot-woes-bd4f637c3ba0
- https://medium.com/@probonopd/my-fifth-day-with-haiku-lets-port-some-apps-e0f26487cea7
- https://medium.com/@probonopd/my-sixth-day-with-haiku-under-the-hood-of-resources-icons-and-packages-abec8d0e4ec6
- https://medium.com/@probonopd/my-seventh-day-with-haiku-printing-scanning-networking-fb56c1dc8ee7
- https://medium.com/@probonopd/one-more-thing-haiku-application-bundles-1803a11f9748
probono is the founder and lead developer of the AppImage project, the founder of the PureDarwin project, and a contributor to various open source projects. Screenshots were made on a Haiku system. Grateful acknowledgment is made to the developers in #haiku on irc.freenode.net.