Oct 31, 2009

QNX Ignores Desktop Standards, Security

Last May, QNX released a minor update to their flagship operating system, QNX RTOS. The tweaks and optimizations in 6.4.1 kick things up the proverbial "notch" and deliver some surprises too, so long-time users and curious, potential switchers have some things to pore over.

I installed QNX 6.4.1 on a Dell Precision T7400. The system sports eight 3.2 GHz cores and 12MiB L2 cache in two Xeon X5482 quad-core processors running 16GiB RAM. This machine is some serious, high-end iron. It whipped Windows 7 prereleases around like a wrestler with a newborn babe and Ubuntu similarly slid around like race-cars hitting oil on the track: there wasn't anything this colossus couldn't compute.

Likewise, QNX rushed through all but the most demanding tasks. I work at a 3D movie effects studio, which shall go unnamed in this review, and I was curious about QNX's realtime abilities and their effect on rendering. So I began the process of porting some of our in-house custom software to the little microkernel that could. Our software is POSIX-compliant, meaning it should port to any standard Unix, but here I hit my first snag. QNX is anything but standard.

Despite the inclusion of GNU utilities and much-bandied-about POSIX improvements in the last several releases, my software regularly failed to compile for QNX. Our programmers had just done a code audit recently and so were equally mystified. Their take? "QNX must have a broken POSIX implementation." I kept at it for several more days before giving in and settling on using it as a run-of-the-mill desktop system for email and web.

Here is where I thought QNX would shine. It includes Voyager, a proprietary web browser from QNX Software Systems, as well as Firefox. It also include Qmail, QSS's own mail client. But there was where the frustration began. First, there is no Flash for QNX in any web browser. At all. I checked the QNX site as well as Adobe's to no avail.

Second, and just as frustrating, it was Firefox 3.0.7, released a couple months before QNX 6.4.1 had been. The last I checked (two seconds ago), there are much newer versions of Firefox out. Not for QNX, though. Not only is this a shame upon the Firefox developers, it's also equally embarrassing for QSS for having not reached out to Mozilla in an attempt to keep its operating system equipped with a secure web browser. Disgraceful!

Qmail was slightly better. It includes support for SSL for all the major POP3 and SMTP ports as well as some pretty advanced configuration options for a simple freebie mail client. It's fast and efficient too, using less than 2% of the CPU runtime to do its thing. Amazingly, IMAP support is not included. This is a major blow for enterprise adoption.

After I finally ported top from FreeBSD and got it running, I almost blew my top. QNX was running on one fucking processor?! The best I could do was find out how to manually install the multiprocessor kernel—truly a sad joke. I'm sitting on eight physical and sixteen logical cores, and QNX, touted as "multi-core to the core," was using only one. Where is the radio button for this? I also have reason to believe QNX doesn't use the L2 cache very efficiently either, so spending tons of money on fast processors to run QNX on might be a waste of money.

Overall, QNX 6.4.1 is a nice tertiary update. As far as realtime operating systems go, it's barely adequate at day-to-day desktop tasks and doesn't support Unix porting very well. QNX 6.5 might be the thing to wait for if you're considering switching, but if you're an established QNX user then this is the thing for you. Just be wary of outdated software, broken security, and horrible hardware support.


  1. Why would you use a realtime operating system as a desktop operating system? It's designed for a different purpose and different hardware. As far as Posix compliance, I'm not sure that the Posix APIs are very well suited to realtime applications, so I'm not surprised that it doesn't completely support them.

  2. Sean Boudreau11/2/09, 9:11 AM

    What were your POSIX issues?


  3. Good question.
    What were your POSIX issues?

  4. POSIX != linux compatible