7 ms·
An Architectural Overview of QNX (1992) [pdf]
- jacquesm 3y agoI've worked with QNX for years and wrote a clone, this is an amazing little OS that you can build rock solid services on. It's a pity that there never was much interest in something along these lines but open source.
- rwmj 3y agoI was going to ask if someone had written a clone. As in "if QNX is so tiny and elegant, surely it must be easy to clone!" - I'm sure it was harder than it seems. Do you have a link to your version? How compatible was it?
- jacquesm 3y ago100% compatible at the call level. Another HN'er has actually managed to resurrect it partially. And no, I don't have a link and the project is not in a presentable state.
- weinzierl 3y agoI've seen FreeRTOS being used besides QNX and other proprietary RTOSes in automotive applications. Do you know how similar or different FreeRTOS and QNX are?
- jacquesm 3y agoCompletely different under the hood, not to be compared, but both have their uses.
- trollerator23 3y agoI think FreeRTOS is monolithic, isn't it?
- Matthias247 3y agoYes it is. It's more or less a scheduler library, that you link together with all the other code you have to get a microcontroller system image. There are no processes in FreeRTOS, just tasks (threads).
- pmoriarty 3y agoI would have loved to see an open-source of something like QNX for music production, as it would be very useful for its hard realtime guarantees and low latency. In my experience Linux has been pretty awful at this.
- zokier 3y ago> In my experience Linux has been pretty awful at this. isn't the problem these days just crappy random hardware more than anything else; Linux itself, especially with rt patches, together with jack should have good enough rt perf for audio use. I've seen reports of <5ms roundtrip audio latency on linux even with usb hardware.
- anthk 3y agoNow pipewire superseded both jack and pulse.
- zokier 3y agoThat is more of an aspirational goal for pipewires future than practical reality today.
- kramerger 3y agoI believe most people working with music on Linux switched to piprwire as soon as it became stable. Could be wrong, but I think it has been default on Ubuntu Studio and alike for at least a year now.
- rubicks 3y agoThe preemptrt patchset (now making its way into mainline) has excellent support for realtime scheduling. The problem is (as it has always been) undocumented NMIs in bog-standard COTS board firmwares. See the `hwlatdetect` man page for details.
- cvwright 3y agoWasn’t QNX itself open source for a short time? I seem to remember eagerly grabbing a copy from Github around 2010-2011, but unfortunately that was on a work laptop from a previous job.
- _delirium 3y agoThey did publish the source to the kernel in 2007, although not under an open-source license: https://openqnx.com/node/471 https://openqnx.com/node/471
- tkhattra 3y agoAndy Valencia's open source microkernel VSTa [1] from the early 90's was inspired by QNX and Plan 9. [1] https://sources.vsta.org:7100/vsta/index https://sources.vsta.org:7100/vsta/index
- jnwatson 3y agoFuchsia is open source.
- johndoe0815 3y ago...no longer the only true microkernel in industry (the paper was written in 1992, back then QNX was certainly leading in this respect). Nowadays, open source as well as commercial L4-based microkernels are widely used, e.g. seL4 (UNSW), Fiasco (TU Dresden) and PikeOS (SYSGO).
- lproven 3y agoI'd argue QNX was more widespread than any of those. It's been a significant embedded OS since the late 1980s, with many millions of deployed systems. It is also used in roles with a customer-facing UI and indeed GUI. It's in several car media players, for instance, including from Toshiba I believe. And of course it was the basis of Blackberry 10. https://crackberry.com/blackberry-10 https://crackberry.com/blackberry-10 It was in the Playbook, the cancelled Folio, and a lot of smartphones, such as the Passport I used to own. (A lovely device, sadly crippled as messaging app vendors removed support. I could use Android apps on it, but they didn't integrate into the Blackberry Hub.) It was also very nearly the next-gen Amiga, which I suspect is why it has a GUI and multimedia support. https://www.trollaxor.com/2005/06/how-qnx-failed-amiga.html https://www.trollaxor.com/2005/06/how-qnx-failed-amiga.html I suspect that between routers, switches, engine control units, traffic signals, smartphones, car entertainment units, and doubtless many other things we don't hear about, it's in more devices in production than all of seL4, Fiasco, etc. put together. Minix 3 is arguably also a true microkernel, and it's present in industry, embedded in millions of Intel Xeon and Core iX CPUs' management units, but it never reached a state of much completeness. No SMP support, for instance, and a lot of missing functionality. And it now seems to be dead: https://www.osnews.com/story/136174/minix-is-dead/ https://www.osnews.com/story/136174/minix-is-dead/
- GranPC 3y ago> the cancelled Folio What's the Folio?
- lproven 3y agoOh, sorry, I thought I deleted that phrase. I meant to. https://en.wikipedia.org/wiki/Palm_Foleo https://en.wikipedia.org/wiki/Palm_Foleo Mistake on my part: I thought it was a cancelled Blackberry device, but it wasn't -- it was a cancelled Palm device. Before the rise of netbooks, it was a netbook-sized terminal to a smartphone that let you use a laptop-style UI to your email and so on, by being tethered to a smartphone.
- messe 3y ago(1992)
- heja2009 3y agobest OS I ever had the pleasure to work with
- jacquesm 3y agoHands down, with IRIX a close second.
- DeathArrow 3y agoWhat happened to QNX after Blackberry acquired it? Is it still used?
- nubinetwork 3y agoI believe some cars still use it for their in-car entertainment.
- PinguTS 3y agoYes, in millions of millions of cars. It power most of the HMI systems in cars, except some newer ones, which are based on Android Auto and very view exceptions based on Windows Embedded/Auto.
- Kelteseth 3y agoYou can see many QNX related changes in Qt that is often used in cars: - https://code.qt.io/cgit/qt/qtbase.git/log/?qt=grep&q=QNX https://code.qt.io/cgit/qt/qtbase.git/log/?qt=grep&q=QNX - https://code.qt.io/cgit/qt/qtdeclarative.git/log/?qt=grep&q=QNX https://code.qt.io/cgit/qt/qtdeclarative.git/log/?qt=grep&q=...
- TacticalCoder 3y agoThis. My car (Porsche Panamera from 2013) runs QNX for its nav+soundsytem. I can stream from bluetooth or use a jack plug but I don't bother: the car's got its own storage for music and, notably, the system takes both .mp3 and .wav files, but not .flac files. So at home I play .flac files but for the car I convert my music to 320 kbps .mp3 (I think I can put about 5000 320 kbps .mp3 in the car). In 2013 Porsche was still putting HDD and not SSD in their cars: some people do the upgrade themselves to a SSD but in my case that would void my extended manufacturer warranty (which I plan to extend up until 15 years / 200 000 km). Since then, for newer models, the manufacturer has moved the nav+infotainment to Apple's iOS CarPlay. I don't know if QNX is still used for other stuff (like reporting the oil level / warning messages etc.).
- wolrah 3y ago> It power most of the HMI systems in cars, except some newer ones, which are based on Android Auto and very view exceptions based on Windows Embedded/Auto. My Ford has had both. As a 2015 model it shipped with MyFordTouch which ran on whatever Microsoft was calling the automotive branch of Windows CE at the time (AutoPC?) with a UI built in Adobe Flash. 2016 and newer models got a QNX-based platform with a HTML5 UI under the name SYNC 3, and the newer SYNC 4 variants are derived from that. I upgraded my car with parts from a 2016 model a few years ago because Sync 3 could do Android Auto and CarPlay where MyFordTouch could not.
- nubinetwork 3y agoAh qnx... the heart of the Unisys/Burroughs Icon. They had a pretty nasty bug back in the day... https://www.juliandunn.net/2006/08/21/on-hacking-the-unisys-icon/ https://www.juliandunn.net/2006/08/21/on-hacking-the-unisys-... It basically went like: "I am root" "Yes, you are root" :)
- jasoneckert 3y agoQNX on the ICON was full of bad security form in general, including default passwords for root, supervisor, teacher, and icon (blank) that were rarely changed in the classroom and could be found in the manual at the front of the room: https://jasoneckert.github.io/myblog/icon-computer/ https://jasoneckert.github.io/myblog/icon-computer/
- cloudsec9 3y agoThe ICON was the first computer that I used that had a multi-user interface. Teachers were not trained well and "computer security" was not something that had yet seriously entered our language. While programming them for class was interesting, the real fun was trying to get "cool stuff" to work. We learned BASIC and Pascal in class, but we hacked C and wrote interesting shell scripts after our code worked. Kind of cool to see where it ended up (with BBY and all). Are there any working examples still out there?
- wisemang 3y agoIndeed, when I was in eighth grade we had “reading buddies” in the grade 1 class where older kids would go read the younger children stories. The teacher of the grade 1 class had an internal memo posted on the bulletin board explaining teachers’ usernames were their last name and password was their first name. So after I saw that I could get teacher-level access by knowing any teacher’s first name. From there it was possible to trackball-and-ACTION-key my way to administrator permissions which is maybe what the bug referred to in GP was referring to? Anyways my big mistake was sharing this information with my classmates — it was fun to change the login message for everyone to a kind of “so long suckers” just before we graduated, but apparently someone changed the admin password and (presumably due to not being aware of the bug) locked them out. The vice principal had me come back to school after graduating to be chewed out and told that they nearly charged me with mischief :-/ When I got to high school I mostly just had fun finding a way to drop into the command line and playing around with that instead of working around access controls…
- Hikikomori 3y agoOne of the more popular core/edge router platforms used to run QNX for their control plane, Cisco CSR/ASR. Though they switched to Linux some years ago.
- dfawcus 3y agoJust the Neutrino kernel, not the whole of QNX.
- p_l 3y agoDepends on the series. IOS XR is QNX based, IOS XE is Linux based, "plain" IOS is the classic IOS on bare metal, and NX-OS is completely separate development based on Linux that powers Nexus switches.
- Cyph0n 3y agoXR is not QNX-based anymore. They switched over to Wind River 64-bit Linux[1] starting from the newer ASR9k linecards and the NCS series and onwards. The two XR variants are referred to internally as cXR (QNX) and eXR (Linux). XR itself is mostly the same codebase - it’s just the platform- and OS-specific code that had to be changed. Also, I believe endianness-dependent code had to be ifdef’d. Source: worked as a dev on the IOS-XR team. [1] https://www.cisco.com/c/en/us/products/collateral/routers/asr-9000-series-aggregation-services-routers/datasheet-c78-737841.html https://www.cisco.com/c/en/us/products/collateral/routers/as...
- sterlind 3y agonow that you've outed yourself as an IOS-XR dev I have to ask: why does Cisco have so many darn OSes? at work I built a system to run Python scripts on various network devices, with a HAL abstracting the APIs. supporting IOS-XR, IOS-XE and NX-OS was quite a bit of work. plus there were so many modes.. netconf-YANG? or show run/config syntax? and so many changes between revisions. meanwhile, the HALs for Juniper and Arista devices were pretty easy.
- 3y ago
- deleted 3y ago[deleted]
- gjsman-1000 3y agoIt's not for industry, but I keep mentioning it because it's so surprising and little known: The Nintendo Switch uses a home-grown microkernel. It's not UNIX-compatible, fits into ~30K lines of code IIRC, and everything from the USB to the Graphics drivers are sandboxed in userspace. (Too bad NVIDIA's Secure Boot code didn't match Nintendo's standards.) https://en.wikipedia.org/wiki/Nintendo_Switch_system_software https://en.wikipedia.org/wiki/Nintendo_Switch_system_softwar...
- mepian 3y agoHow do you know the LoC number? Have you worked on it?
- gjsman-1000 3y agoIt was so small that a solo developer reimplemented the entire kernel. https://www.reddit.com/r/emulation/comments/hygtnx/mesosphere_opensource_nintendo_switch_kernel_now/ https://www.reddit.com/r/emulation/comments/hygtnx/mesospher... https://github.com/Atmosphere-NX/Atmosphere/tree/mesosphere-dev/libraries/libmesosphere https://github.com/Atmosphere-NX/Atmosphere/tree/mesosphere-...
- yjftsjthsd-h 3y ago> Nintendo is exempt from GPLv2 licensing and may (at its option) instead license any source code authored for the libmesosphere project under the Zero-Clause BSD license. Er, what? Why would a 3rd-party reimplementation allow Nintendo to use their work?
- mmebane 3y agoProbably because it's based entirely on (non-black-box) reverse-engineered Switch binaries, and is therefore very possibly a derivative work of Nintendo's copyrighted code.
- eddieroger 3y agoTo not get sued six ways from Sunday? If a company could sue me out of existence, I may be nicer than I have to be to them.
- eggy 3y agoQNX was the OS that Navigator, show control software, runs on. I ran it for over 6 years, and it was bullet proof and snappy. Isn't Minix a microkernel too? What makes Minix an untrue microkernel? I ran Minix back in the day - 1990s.
- nqwiudhnoaq73 3y agoEveryone with an IntelME is running Minix :)
- rbanffy 3y agoBut not as their OS. The little Minix computer is owned and controlled by Intel ;-)
- tyingq 3y agoFuchsia's Zircon might count also. Google used to specifically call it a microkernel. Though they updated the descriptive language to just "kernel" after it drifted further from LK and the number of syscalls got pretty high.
- andsoitis 3y ago> Isn't Minix a microkernel too? What makes Minix an untrue microkernel? According to http://minix3.org http://minix3.org and https://en.wikipedia.org/wiki/Minix https://en.wikipedia.org/wiki/Minix Minix is a microkernel. https://wiki.osdev.org/Microkernel https://wiki.osdev.org/Microkernel also lists Mach and AmigaOS and Wikipedia lists a few more: https://en.wikipedia.org/wiki/Microkernel#Examples https://en.wikipedia.org/wiki/Microkernel#Examples
- lproven 3y ago[OP here] Minix 3 totally is, but it's also incomplete, and as Dr Tanenbaum has retired, it probably always will be. Mach was valid, but the only successful version, Apple's macOS, has a huge in-kernel "Unix server" derived from FreeBSD code, so it's not a microkernel any more. The OSF's OSF/1 is long gone. So is MkLinux. IPC performance killed Mach, which led to L4, seL4 and many others, none of which have ever gone mainstream or been widely deployed in production, AFAIK. AmigaOS does not count, because it has no memory protection: all code runs in a single memory space, which makes a microkernel-like design simple, as there are no barriers to interprocess communication -- but also no use of an MMU chip whatsoever and as a result it was and is as unstable as classic MacOS or Windows 3.x.
- tonetheman 3y ago[dead]
- itvision 3y agoI'm really sad QNX has never been adopted for the desktop and it died with Blackberry for mobile. Such a cool fast kernel / operating system.
- krisoft 3y agoFast? Not in the benchmarks I have seen. In my understanding it promises correctness of scheduling not speed.
- rbanffy 3y agoIt’s not fast if you want to do batch processing, but if you want fast and predictable responses, it’s quite good.
- Chabsff 3y agoWhen you get down to real-time OSs, jitter often becomes the only metric that actually matters, and raw throughput becomes a means to that end.
- jacquesm 3y agoLatency >> throughput.
- euniceee3 3y agoQNX is a big chunk of Blackberry's revenue. It has found a footing in the automotive industry.
- jacquesm 3y agoIt had a footing in the automotive industry long before Blackberry even existed. Also: process control, medical, avionics, transportation. Anything where latency matters more than throughput.
- lincpa 3y ago[dead]
- rbanffy 3y agoI learned C on it, running from a 360K floppy on a 4.77Mhz PC. Brings back good memories.
- tibbydudeza 3y agoQNX 4.5 We ran our POS systems on it (server-thin dumb client) - the server was a 64MB 486 and the POS terminals ran a simple client program that emulated an NCR1255 POS terminal. It just sent keystrokes or print a line on a receipt printer or display a message. The server was a C program with a giant state machine of up to 64 POS terminals and it hardly broke out in a sweat and used shared memory to talk to other programs that did the card payments and data storage. Good times.
- KingLancelot 3y ago[dead]
- cashsterling 3y agoQNX is used as an operating system on some programmable logic controllers. I think Omron's PLC use QNX.
- davidw 3y agoI remember the demo floppy, which had a GUI, networking and some other stuff. It was pretty cool for the time http://toastytech.com/guis/qnxdemo.html http://toastytech.com/guis/qnxdemo.html
- deviantbit 3y agoIt is still pretty cool. https://www.qnx.com/products/evaluation/ https://www.qnx.com/products/evaluation/
- wslh 3y agoInspired by it, with my friend Dave we created a floppy disk including Linux an Squeak (Smalltalk) as the GUI: https://news.ycombinator.com/item?id=11942537 https://news.ycombinator.com/item?id=11942537
- lproven 3y agoFrom that post: > we implemented this: http://swain.webframe.org/squeak/floppy/ http://swain.webframe.org/squeak/floppy/ > (using Linux and modifying Squeak to work with SVGALib instead of X) > in just 900mb "Just" 900MB? That is, er, not very comparable. Nearly a gigabyte, versus a single floppy? (Circa 1.4MB albeit very heavily compressed, so over 2MB of code, maybe 3.) That is a difference of approximately 2 orders of magnitude, heading towards 3 OOM: 1000x bigger. Am I misreading? You definitely did not get 900MB on a floppy. It wouldn't even fit on a CD (~700MB uncompressed).
- glonq 3y agoBack when I toiled in trenches as an embedded systems developer, I always dreamed of being able to use a "big, proper" OS like QNX instead of whatever clumsy, barely-better-than-bare-metal RTOS I was using at the time. I remember QNX always having a decent presence at the embedded systems conference. Instead of going unix-ish and using QNX we eventually went windows-ish and used Phar Lap ETS, which was quite nice and civilized.
- phendrenad2 3y agoI remember reading about this in a magazine (Circuit Cellar) as a kid and wanting a copy. Looked online and, good lord, $1,000+ for a license?
- froh 3y ago(1992)
- ngcc_hk 3y agoNeed to mark 1992
- kramerger 3y agoThis is 30 years old by now. Do we know how modern QNX compared to this?