QNX is an operating system that all of us have used, but few of us realize it when we do. The OS was created in the early 1980’s by QNX Software Systems, a Canadian company, but the version we are previewing today (unreleased yet, version 6.2), based on the Neutrino kernel, was pretty much (re)written from scratch some years ago. QNX is used everywhere, from VCRs, to DVDs, to medical machinery and even satellites and space shuttles. Many of you maybe even have tried the old demodisk, a demo of the QNX4 RTOS, plus the previous version of the Photon GUI, fitting in a single 1.44 floppy. The desktop-enhanced version of QNX RtP (free for non-commercial use) runs on almost all modern x86 CPUs, and if we judge from the following screenshots, it looks pretty good for an embedded system OS.
The first version of QNX RtP (RtP==Real-time Platform) was released in September 2000, and it was downloaded from more than a million users off the web. QNX Software Systems has released several patches and updates since then, so today we are exclusively previewing version 6.2, which is still under closed beta test. Earlier versions of RtP could be either installed in its own partition, or as a big bootable image file off a FAT32 partition. As far as I can see today, version 6.2 is only available as a bootable ISO image (250+ MBs) ready to be installed in its own partition. I think it is wise of QNX Software Systems not to provide a FAT32 image file anymore, as a lot of users are now using NTFS under Windows 2000 or XP, a filesystem not supported by QNX, therefore the OS would not boot and would only create confusion among inexperienced users.
Installation is not difficult at all. Boot with the ISO CD, and follow the instructions to install. Only problem is that it overwrites the MBR with its own boot manager without asking you, which is not really a problem, just somewhat… rude.
You will need about 1 GB of free hard drive space. Anything more than that is certainly welcomed by the system. QNX RtP 6.2 installed fine on both of our BP6 dual Celeron systems, but it could not load at all on my CTX eZBook 800 notebook (AMD K6-2 300, 64 MB) most probably because of problems with the Fujitsu hard drive, being somewhat unconventional since many Fujitsu drives do not return the correct ‘IDENTIFY’ string. [Update: QNX Software just sent me an updated bootable floppy disk that fixes the IDE driver problem. RtP 6.2 now boots wonderfully on my laptop. Thanks guys!]
QNX RtP has its own UI engine called Photon. Photon existed in the previous version of QNX 4 for years, but it is now enhanced to be more modern, more user friendly and it looks better. Users will not have problems finding their way around the graphical interface. The desktop has a taskbar with a ‘Launch’ menu and little menus for the running applications. Pretty similar to Windows’ taskbar. On the right hand side, you will find a sidebar that includes a list of application shortcuts and application plugins (cd player, virtual desktops, cpu/mem monitors etc). Consult the screenshots to get a feel how the sidebar looks like. Photon (still) does not support desktop icons, but the sidebar is there as a substitute for it.
There are GUI-based utilities to modify your networking setup, dialup and graphics drivers. But if you have to install new drivers, the action should be done ‘by hand’ (by using the command line).
There are lots of help files, but mostly documentation for programmers regarding several APIs rather than user-suitable docs. The best part of QNX is possibly its Package Installer. It is a really nifty installer, allowing you to download and install applications from several sources (hdd, cd, web), making the application adminstration pretty easy.
QNX RtP has support for anti-aliased fonts, and in version 6.2 we see extensive support for Asian fonts. The new version also brings improvements to the Mailer app, the Find panel, the file manager (meaning that it is now.. usable), the text editor, basic support for ATi TV cards, and a beefed up Photon graphics setup application.
There is also a very nice & consistent media player application, which supports .wav, mp3s, mpeg video and more. QNX Software Systems had also ported the XingDVD module that is able to play DVDs, but for some unfortunate circumstances, the XingDVD module was never shipped with any RtP version.
There is also an image viewer (with some basic manipulated functionality), the Voyager web browser (pretty much an equivelant or somewhat better to Netscape 3 capabilities) with support for Macromedia Flash and Real Player (however, I did not spot the Real Player addon in this specific RtP version). Voyager is so modular that you can even change its HTML engine and replace it (as a drop-in replacement) with Opera 5! You can download the Opera 5 binary from the Opera Software web site.
There are about 250-300 applications for QNX RtP so far. Among those you will find a rootless X Server, GTK+/Gimp/X11Amp ports, Python, Allegro, SDL, Mozilla, AbiWord, Apache and more. Unfortunately, the main web site for QNX-related news and software repository, QNXStart, has been down for more than a month now, making difficult tracking down all this software and enhancing the QNX experience.
The QNX Neutrino microkernel offers superior real-time response. With features like multitasking, threads, priority-driven preemptive scheduling, synchronization, and fast context switching (0.55 µsec on a Pentium III), the RTOS provides serious realtime performance. By real time, we mean that a command will be executed in the time it is expected e.g. immediately (but its priority can also be scheduled by the programmer), no matter what the conditions are. At first reading, this sounds great. But things are not so great when you have 1-2 videos playing and at the same time you are using the web or the doing a resource intensive search on your hard disk. Real Time is the absolute bless for embedded system purposes, but not so great for the ultimate desktop experience. When you only have one application running, QNX is incredibly speedy and responsive, add one-two more intensive apps, and the system becomes unnaturally slow and unresponsive (when compared to the behaviour of other OSes under similar circumstances). This is not due to multitasking reasons (which is implemented and works fine), but due to the real time nature of the kernel being more suitable for embedded purposes.
QNX and Photon is written in C, and the APIs are also C-based. There are three (!) third party efforts to add C++ bindings to Photon, but all these efforts are still far from finished.
Additionally, when developing a commercial product for QNX RtP, you should pay a license fee to QNX Software Systems before you will be allowed to release your product to the market. This may sound a bit restrictive to most people, but it is a fairly common practice in the embedded world. And we should not forget that QSSL is not focusing on the desktop market almost at all. QNX RtP is serving as the self hosted development platform for QNX-based internet appliances and other QNX embedded applications.
Other strong points of QNX is that it is POSIX certified, which means that people familiar with the Unix model will feel like home. There is even a port of the BASH shell. Massively scalable transparent networking is another of its strong points. More information here.
In QNX RtP 6.2 you will find many bug fixes and some new drivers. However, I somewhat got the feeling from the new version that QSSL is moving even more far away from a “desktop QNX.” A handfull of previously familiar apps could not be found in 6.2 (or at least, I could not find them). I lost track of phPDF, Real Player, phAB (the excellent RAD program), Java support, Renderware (3D engine), and even the 3-4 classic games that were included in previous versions!
I was somewhat dissapointed that drag-n-drop is still not supported Photon-wide, the DVD issue was still not resolved after 1.5 years, and 3D support seems to still only work with Glide and Voodoo3. A better performed filesystem would be welcomed too.
Version 6.2 does not bring a whole lot of new things over 6.1PatchA. The OS is, however, more polished and some fixes and new drivers are there, along with better printing support, but also a lot of things are now missing. There are no radical changes to QNX RtP. It is a fun ride, but without the QNXStart software repository coming back online soon and some more effort by QNX Software Systems on the desktop side of the OS, RtP’s further success feels a bit questionable.
If you have tried QNX RtP in the past, you already have a taste of the OS. If you have never tried it, I sincerely urge you to do so. It is a good experience on a stable system. And if you are a professional in the embedded systems field, it is definetely a must-see.
Resources:
BeNews Preview of RtP 6.0 (Aug 2000)
QNXZone (qnx news)
Installation: 8/10
Hardware Support: 7.5/10
Ease of use: 8/10
Features: 8.5/10
Speed: 8/10 (UI responsiveness, latency, throughput)
Overall: 8 / 10
Is there a way to increase the time between context switches (from 0.55us)? I understand that QNX cx are very lean, but we’re talking about 18000 cx per second (compared to 20ms=50/s for Win95, 10ms=100/s for NT/Linux (non-pre), 3ms=333/s for BeOS). If each cx takes 50-80 CPU cycles, we’re consuming an enormous amount of CPU cycles just for multitasking, resulting in poor desktop performance (but excellent embedded performance). Heck, even the embedded stuff I work with is 1ms=1000/s and its sufficient.
So, no QNX on desktops then…
This time is not the time between context switches. It is the time required to perform one context switch.
Windows performs 50 switches per second, but appears to take on the order of 200us to perform a single context switch. That means that windows spends about 10 ms in context switches.
QNX would spend 25us in context switches. This means that it can do a lot more, say a 1000, thats only 1.25ms spent in switches, and a much smoother communitcation between threads.
Does QNX support DivX playback? If so, how good is it?
Got it. Thanks for clarifying that the switch itself takes 0.55us. So, on a 700MHz (average P3), that means a context switch takes 385 clock ticks (on a RISC one instruction per clock tick). So how many cs/sec do we get?
I haven’t seen DivX support anywhere in the software repositories on the web, but I know there is already a port of VideoLAN (DVD playback).
I read in an old BeOS newsletter, in the JLG column, before BeIA was announced (i.e. they were still working on BeOS) that they had managed to fit a cut down BeOS and Netpositive etc. on a floppy disk, just like the QNX Demo disk. I assume that this idea led to the idea of developing BeIA.
Well, my question is this: does anyone know if such a ‘BeOS floppy demo disk’ is available, even though it was never made public? Do any Be engineers remember this? If not, is it possible to make one? I think it would be really cool, and the QNX one is really nice, and the QNX one is nice too, and useful too sometimes! Hehe…
A *usable* BeOS cannot boot from a floppy. That article you are reffering to, was just a guide on how to create a bootable BeOS floppy disk when you have unsupported hardware and the BeOS on the bootable CD does not have support for that specific hardware. So, you create a minimum BeOS with the driver in question on a floppy and the REST of the booting process is then *redirected* to the CD-Rom, to finish off the booting. Booting BeOS in a gui with only one floppy, is not possible. Also, BeOS only boots from BFS, and the _minimum_ space you need for a BFS filesystem, is ~900 KB. So, it would be only 500 KB of free space for the rest of the whole OS, which is not possible to fit in such a small space.
I onced tried QNX in the FAT partition.
My system is a PII 233, with 64M, 4M S3ViRGE/GX2 – not the best, but winblows and linux and BSD run fine. But, QNX had trouble with this , its was quite slow.
Is this due to the FAT filesystem or not the right drivers? It wasnt a bad OS, bit plain, nice to see bash though .
RealPlayer 7 is missing because QSSL is porting RealPlayer 8 right now.
Quote from their website:
“If you are building a product that incorporates RealPlayer, note that RealPlayer 7 can only be redistributed if you currently have a distribution license with QSS. New products should be built using RealPlayer 8 which will be ported to the QNX OS. Contact your sales representative for details.”
http://qdn.qnx.com/news/releases/releasestatus.html
phAB is being overhaul to accomodate the IBM Eclipse project. I have forgotten if it’s phAB that will become a plug-in for the Eclipse tools or the other way around.
Many of the stuff you mention that ‘is no longer included’ and similar, is there.
Phab etc etc etc..
Rodney, why the hell do you run bsd?
How come every article on this board has to be hijacked by the BeOS lobby?
Anonymous -> Because we’re here… and everywhere else! Fear Us – BeOS users ];>
“My system is a PII 233, with 64M, 4M S3ViRGE/GX2 – not the best, but winblows and linux and BSD run fine. But, QNX had trouble with this , its was quite slow.”
The Vesa Driver for photon is a bit slow so mabye you were using it? I had to wait till 6.1 for it to even boot.
Responsiveness of UI is subjective thing and depends heavily on behavior of scheduler. Windows for example gives a program currently holding focus more CPU cycles, so you get more ‘responsive’ feeling. Unixes usually use ‘fairness’ as scheduling goal, so they dynamically adjust priorities (punish CPU-greedy applications). QNX4 used to have ‘adaptive’ scheduling, which reminded Unix ‘fair’ schedulers. QNX6 has that policy documented, but last time I checked it was not implemented, so default scheduling policy was realtime-orineted ’round-robin’ scheme.
what is done in a context switch? Because i can interrupt the processor at each 0.8us i wonder from were the 55us come from. Is it just interrupt overhead?
The DivX-support is i _think_ in the MPlayer-source for QNX too.
Just my 0.02 euro
AlienSoldier: what is done in a context switch? Because i can interrupt the processor at each 0.8us i wonder from were the 55us come from. Is it just interrupt overhead?
a context switch occurs when the CPU is interrupted and exchanges the running address space (the ‘context’) for another, eg: one process for another or a process to the kernel. most OSses have the kernel space partially visible above the end of the user space (in the top 1GB, usually) so this doesnt require a context switch. there are several reasons for a cx, the most common is quantum expiry (the program has used too much time and another will be given a chance to run).
in a process-process cx (such as expiry) the kernel saves the running processes context (its registers, IP and in some cases the TLBs) and loads the next one. this memory transfer takes more CPU cycles and contributes to the delay. the rest is the expensive (on x86, anyway) re-loading of the page table and caches. obviously the new process shouldnt be able to read the old processes memory, so the caches and T
that was the wrong button.
so the caches and TLBs must be cleared. they then get re-loaded by the next processes page faults.
thats the main time sink in a context switch.
No Eugenia, I am pretty sure that is was the same as the QNX demo disk – a fully functioning BeOS with a browser in a floppy. Your husband should know something about this?!? I will try and find the article…
AFAIK, it was not BeOS on a floppy but a floppy that booted some minor stuff from the disk and then the major part over the net. But all is IIRC!
BeHappy
Matthias “LoCal” Schonder
Alright, and I was just asking my self what OS I would try on that little computer collecting dust in the corner.
A few things to note:
Only problem is that it overwrites the MBR with its own boot manager without asking you, which is not really a problem, just somewhat… rude.
This is actually incorrect. The installer asks you if you want to install one of two loaders or use the current one on your system (e.g. Lilo).
but it could not load at all on my CTX eZBook 800 notebook (AMD K6-2 300, 64 MB) most probably because of problems with the Fujitsu hard drive, being somewhat unconventional since many Fujitsu drives do not return the correct ‘IDENTIFY’ string.
This is also fixed now in the driver, so it is no longer a problem.
Visit the fan site: http://www.qnxzone.com
I love qnx and beos its the best (btw found some beos 5.10 download that im downloading now anybody heard of this?)
Now…is dvd playback gonna be available in the new qnx version? If not, Why?
I tried compiling videolan under qnx but lotsa error messages If anybody has managed to do this please E-Mail me or post all the commands i need in here in case i got it wrong
Thanks for the preview Eugenia! Hmm, yeah, I wish QSSL qould try to make QNX more of a desktop OS. In 6.1 it worked pretty well as a desktop os, it was just missing a few things and a lot of apps. Now, it seems like in 6.2 htey are getting even farther away from that
(btw found some beos 5.10 download that im downloading now anybody heard of this?)
someone postet it on the OpenBeOS mailinglist yesterday. some french site had screenshots of this release and also provided a link to a zip iso-file with a BeFS-Partition inside of it.
the screenshots that appeared on osnews some time ago came from this system.
Eugenia look at the Be newsletter: Issue 89, September 3, 1997.
The JLG Column entitled: Scalability or Modularity?
“We’ve been asking ourselves if our core
technology couldn’t be also applied to smaller devices, to
emerging consumer multimedia and network computing
applications.
So far, we’ve built a small number of interesting test
cases; the most extreme one resides on a 1.44 Mb floppy,
incorporating the core BeOS and our browser. Take a bare
bones Pentium clone costing about $350 (sans hard disk, but
including a $19.99 Ethernet card), connect it to the
network, boot it from the floppy and “presto,” you’re
browsing the Web.”
So it definately seems possible to make a BeOS floppy demo disk!! Does antone think they can hack something like this together?
Well, it might be possible. But not ver pratical. Putting BeOS on a zip disk would amke a lot more sense.
Hi guys!
Until now i didn’t try the beta version of qnx rtp 6.2 that they send to me, i heard that will be available for public just in two or three months time.
I’ve been read your messages, i found some talking about videolan and dvd player for qnx. It is possible to tell me where i can get those software for qnx.
I will apreciate.
Thanks
Wistful thought: Wouldn’t it be nice if Photon were available for Unix/Linux? Nice fast graphics capability for applications that could use it, without the realtime issues Eugenia mentioned in the article, plus access to all the other *nix apps (CL or X-Window dependent)? Is this even technically possible?
mattk –> I don’t know what’s your old computer, but don’t be too exigent for QNX … it’s a deepless well for a cheap old machine look at PIII and 256Mo for a good use.
Visit http://www.qnx-fr.com, the french site for QNX
Fernando –> you can see the evolution of the devlopment on the official site, at http://www.videolan.org, on the section QNX.
Think “compressed RAMdisk on the floppy + whatever you need to load it and transfer boot over to the RAMdisk”. Just like the QNX 4 demo disk.
Sheesh. Kids today… 😉
– chrish
Greetings Chris, I also though that was probably the way it was done. If I remember right, didn’t you used to work for QNX and Be? So thanks for clarifying this.
I still think it is really *cool* (ahem), and I would love it if someone could hack together a demodisk like this, or knows where to find the original one that Be made…
Regarding “matt’s” short discussion about context switches, I had no idea that BeOS’ spaging system exposed some kernel space to user processes without requiring a cx. Now that I think about it, this is a very clever way of boosting performance, if you can carefully sidestep security issues and do the requisite careful engineering.
See, I’m quietly building my own toy OS and this kind of low level implmentation detail is fascinating. Is there a forum where OS developers can discuss issues like this? I’ve found a bunch of forums, but they are filled with “Can I write an OS in Visual Basic?”, “Skinning/themes r0x0rs!”, and language flamewars. Where are the secret forums where mature discussions about OS dev take place among real developers?
Cant wait to try it…..62 percent finnished downloaded….70 megs….Dont you love it your connected @ 31 200 bps
BTW can anybody of you help me (only if youve done before) compilin videolan under qnx?
Well folks – IIRC Photon IS available for external systems (hosted), at leat for WinNT. On the other hand who would support something as linux, totally non-dynamic environment. Let the unix be just what it is – the unix 🙂 I prefer device driver being ordinary task, with ability to restart it just as an any other app – “small”, efficient, message based …
Well … in theory, usability factor of RtP speaks of a little bit different experience 🙂
-pekr-
“See, I’m quietly building my own toy OS and this kind of low level implmentation detail is fascinating. Is there a forum where OS developers can discuss issues like this? I’ve found a bunch of forums, but they are filled with “Can I write an OS in Visual Basic?”, “Skinning/themes r0x0rs!”, and language flamewars. Where are the secret forums where mature discussions about OS dev take place among real developers?”
There’s the OS Dev forums here. There are some good discusions here.
Does QNX support USB things like mice and tablets ?
POST THE LINK
Post the link and you will be banned.
No leaked software URLs on osnews please.
Yep, 6.1 supported USB mice, keyboards, printers, network. 6.2 should have all the same hardware support, and then some.
If your serious, then try: news:alt.os.development, news:comp.lang.asm.x86, and search for any other assembler newsgroups.
Chewy509…
Where’s a hardware compatibility list? I see none!
sorry. duly noted.
Hardware compatibility list (as of QNX 6.1) is at:
http://qdn.qnx.com/support/hardware/index.html
Hi,
does it come with developer tools?
I’m a professional Windows developer and don’t want to miss the comfort of a integrated development environment. I used WinCE PlattformBuilder and will never accept a command-line oriented debugger like gdb!
A good OS is nothing worth without good tools!
” most OSses have the kernel space partially visible above the end of the user space ”
I don’t know about this. I think the above was the very problem with win 9x. This is why a bad user program could cause a whole system to crash. I sure hope a system such as QNX wouldn’t implement what has been considered a design flaw.
BTW, can QNX be run on a RAID 0 configuration?
If the SCSI card is supported, QNX should run, cos (as I think), RAID is done by hardware in this case and the SCSI controler does writes/reads and resolves from logical to physical sectors on its own.
Actually, almost all OSs have the kernel space visible above the end of user space. This is done so a system call does not require a (slow) MMU context switch. However, since this is write-protected, this isn’t a problem. The issue with Win9x was that a lot of data structures in the kernel were not write protected, in order to retain compatibility with older DOS apps. In particular, there was a 1GB shared “free-for-all” region under the kernel.
Thanks for the clarification, Rayiner.
I’m using an IDE raid card, it’s got a Promise chipset. I guess I just need to stop being lazy and look at the hardware compatibility listing.
“Promise and HighPoint controllers are currently not supported”
Well, I guess that answers that question. I’ll try it on my celeron system instead!
As I understand it, QNXStart is not coming back. There will be a similar software package service at http://www.qnxzone.com. I could be wrong.