Top-Level Design

The QNX CAR platform architecture consists of three layers: Platform, Middleware, and Human-Machine Interface (HMI).

Figure 1. A high-level view of the QNX CAR architecture


The Platform layer includes the QNX Neutrino RTOS, the Board Support Package (BSP) appropriate for the hardware platform, and the Software Update component for managing system upgrades.


The Middleware layer provides infotainment-related services to applications, such as multimedia, Bluetooth, navigation, and radio. The Automatic Speech Recognition (ASR) component provides services not only to the layer above but to the other middleware components as well. For example, ASR can be used to turn on the radio, initiate a Bluetooth phone call, or play a video track managed by the multimedia component. The Mobile Device Gateway provides interfaces to external components through Bluetooth, DLNA, Wi-Fi, and other mechanisms.

Meanwhile, the HMI Notification Manager reacts to system events such as navigation updates or text message arrivals by updating the HMI, based on a policy specified in a configuration file.


The HMI layer consists of several reference UI apps that provide controls for general subsystems such as the media player, navigation service, and climate controller.

This release includes both a Qt5 and an HTML5 version of the HMI. By default, the Qt5 HMI is shown but you can configure your QNX CAR system to launch the HTML5 HMI at startup, as explained in "Running the HTML5 HMI" in the User's Guide. The appearance and functionality of the entire HMI—the Home screen shown after the HMI loads, all reference UI apps, and the UI controls for switching screens and launching apps—is identical in the two versions. Note that the architecture supports running apps written with many UI technologies, including native (OpenGL ES), Qt, HTML5, and others, with either HMI version.

The HMI layer includes a browser engine based on the Torch browser. This engine is the runtime environment for the HTML5 HMI and HTML5 apps. Plugins based on the Netscape Plugin Application Programming Interface (NPAPI), which are loaded by the browser engine, provide apps with access to services from the Middleware layer. For example, the SQL plugin accesses databases that store contact information and messages read off Bluetooth devices. A plugin for the Persistent Publish/Subscribe (PPS) service supports persistent object storage and change notification.

To access the NPAPI plugins, HTML5 apps use Apache Cordova plugins implemented in JavaScript, which provide high-level APIs for performing tasks related to navigation, media playback, and so on. The reference apps in the HTML5 HMI use Cordova as well as other JavaScript frameworks. For more information on the HTML5 frameworks in the product, see the HTML5 and JavaScript Framework guide.

Qt5 apps can use the QtQnxCar2 and QPPS libraries to access Middleware layer services. The first library exposes a set of C++ classes that provide high-level controls for using those services and also access to databases through SQL query support. The second library wraps the POSIX interface to the PPS objects used by those services with a replacement Qt interface, which allows client apps to use the Qt notification mechanisms of signals and slots. The reference apps in the Qt5 HMI use both these libraries, with the exception of Media Player, which also uses the special-purpose QPlayer library to perform media browsing and playback.