My seventh day with Haiku: Printing, scanning, networking

probono
8 min readJul 16, 2019

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.

I really would have liked for the HP LaserJet Pro 200 color MFP to “just show up there” as it does in other contemporary operating systems, including Linux

So I click “Add…”.

One needs to be a printer wizard to understand this. I select “IPP”

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 200 color MFP” here.

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?

Printer dialog asks for “URL”. What do I know?

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:

CanoScan LiDE 60 happily scanning in Haiku

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.

avrdude flashing 3D printer firmware using a USBASP programmer

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?

Can this become 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:

  1. Fix remaining boot issues and lockups (e.g., XHCI — being worked on)
  2. Fine-tune web browser performance
  3. Video acceleration (read: 4K YouTube in the browser)
  4. 3D acceleration (read: TinkerCAD and Onshape in the browser)
  5. 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.

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.

--

--

probono

Author of #AppImage and contributor to hundreds of open source projects. #LinuxUsability, digital privacy, typography, computer history, software conservation