QNX Technical Articles
QNX® Software Development Platform 7.0 (Beta): Release Notes
Date of this edition: February 3, 2017
![]() |
Changes to these notes since October 28, 2016 are highlighted below with this icon:
|
QNX SDP is a cross-compiling and debugging environment, including an IDE and command-line tools, for building binary images and programs for ARM v7 and v8, and x86 and x86_64 targets running the QNX Neutrino RTOS 7.0. You can install QNX SDP on the following development hosts:
- Microsoft Windows 10 Professional 64-bit, Windows 8 Professional 64-bit, or Windows 7 Professional 64-bit
- Linux Red Hat Enterprise Linux 7 64-bit, or Ubuntu Workstation 14.04 LTS 64-bit or 16.04 LTS 64-bit
- macOS version 10.10
We've validated the QNX Neutrino RTOS on the following platforms:
- Renesas R-CAR H3
- NXP S32V
- NXP i.MX6
- TI Jacinto 6
- TI Sitate AM572x
- Intel Apollo Lake
- Intel Baytrail
- Intel Denverton—we support Car Creek Module version: MD# H85725 Rev02, BIOS Revision: HAVLCRB0.X64.0009.D47.1512101003, Module Color: Blue
- Intel Skylake
- Intel Broadwell and Haswell
We’ve validated QNX wireless drivers on the following platform combinations:
- TI Jacinto 6 + TI Wilink8 (SDIO)
- NXP i.MX6 + Broadcom BCM4359 (PCIe)
- Intel Skylake + Marvell 8897 (PCIe)
![]() |
|
Throughout this document, you may see reference numbers associated with particular issues, changes, etc. When corresponding with our Technical Support staff about a given issue, please quote the relevant reference number. You might also find the reference numbers useful for tracking issues as they become fixed.
For the most up-to-date version of these release notes, go to our website, www.qnx.com, log in to your myQNX account, and then go to the Download area.
In the QNX Software Center's Addons tab or in the Download area of our website, you'll also find an image of a QNX Neutrino RTOS runtime system that you can install as a virtual machine on VMware Workstation, VMware Player, or VMware Fusion. The software center installs the virtual machine in base_directory/vmimages/qnx700_beta.x86_64.7.0.0.nnnnnnnnnnnnn/x86_64/QNX_SDP.vmx, where base_directory is where you installed QNX SDP.
Contents
- What's new in the QNX Neutrino RTOS?
- What's new in the QNX Momentics tool suite?
- Discontinued items
- Deprecation notices
- Known issues:
- Getting started with the documentation
- Technical support
What's new in the QNX Neutrino RTOS?
The main new features in this release include the following:
- 64-bit support
- We now support the ARMv8 64-bit ARM architecture (AArch64) and x86 processors running in 64-bit mode.
- ARMv7 support
-
- The ARM v7 variant of QNX Neutrino supports the Large Physical Address Extension (LPAE), which allows the OS to support boards with more than 4 GB of RAM.
- Due to a change in the ABI, you must recompile your programs.
- PCI server
- We've provided a new PCI server, and moved its APIs out of libc and into its own library, libpci.
- Synchronization objects
- The OS now uses fewer sychronization objects, and we've increased the limits on them.
- Filesystems
- The Power-Safe (fs-qnx6.so) filesystem is now 64-bit.
![]() |
You can't run binaries from an earlier version of the OS on QNX Neutrino 7. |
For information about other changes, see the following sections:
- Kernel
- Adaptive partitioning
- Networking
- Libraries and header files
- Board Support Packages
- Drivers
- Graphics
- Startup
The documentation includes Migrating to QNX SDP 7.0, which describes how to update your code.
What's new: Kernel
The kernel now supports high-resolution timers, timers whose
resolution is less than the clock period.
They're experimental in the beta release, and they aren't yet documented.
To set up a high-resolution timer, use the same method as for setting up timer tolerance (see
Clocks, timers, and power management
in the Tick, Tock: Understanding the Microkernel's Concept of Time chapter of the QNX Neutrino Programmer's Guide), but set the tolerance as follows:Tolerance Effect 0 Use the process's default tolerance (see procmgr_timer_tolerance()). If the process's default tolerance is 0, use the default tolerance of 1 tick (see ClockPeriod()). Greater than 0 and less than one tick The timer is considered to be a high-resolution timer; the kernel adjusts the hardware timer so that the clock tick interrupt occurs at the requested tolerance. Greater than or equal to one tick The kernel uses the expiry time plus the tolerance to decide if and for how long it should enter tickless operation or a low-power mode. Amounts beyond any value the current time can have (e.g., ~0ULL) Use infinite tolerance; a CLOCK_SOFTTIME timer is really a timer with infinite tolerance - A single kernel variant for each architecture now supports running on single and multicore processors, in instrumented or non-instrumented mode.
- The new MsgPause() kernel call prevents some single-threaded resource managers (such as io-pkt and QDB) from becoming WAITPAGE-deadlocked when the system uses lazy page faulting. (Ref# 29440, 30045, 62483, J166702, J382313)
- The QNX Neutrino User's Guide now correctly says that the limit on system RAM on 32-bit x86 targets is 32 GB. (Ref# 1564595)
What's new: Adaptive partitioning
We've made a number of changes to the adaptive partitioning scheduler (APS) in response to customer feedback and a review of the current architecture. Note that you can configure APS either programatically via SchedCtl() or by using the aps command line utility.
The changes include:
- Allowing more partitions
- The default partition limit used to be 8, and you could increase it to 16. The new limit is 32.
- Increasing the resolution of partition budgets
- You can now specify decimal places in percentage budgets with both the aps command and SchedCtl().
- Removing extended (long) window reporting
- In earlier releases, APS reported the last averaging window, window2 (10 × last averaging window), and window3 (10 × window2). This meant that the kernel code had to use 64-bit integer math, which is prone to overflows and adds overhead. For reasons of simplicity, reliability, and performance, the new implementation still reports the last averaging window, but not window2 or window3.
- Allowing both partition names and IDs.
- You can use either a name or ID with the aps modify and aps join commands. If you don't specify a name when you create a partition, its ID is used as the name.
- Removing overload notification
- This was never implemented.
- Changing how threads are designated as critical
- In earlier releases, a thread could be marked as critical either by using
SchedCtl(SCHED_APS_MARK_CRITICAL, ...) or as a result of receiving a critical event,
usually from an interrupt handler.
At the same time there was a requirement that a critical thread be the highest-priority thread in the system,
and not share its priority with other threads.
We've replaced the concept of
marked as critical
by a new partition attribute: critical priority. Only threads at the critical priority and higher have access to the partition's critical budget. The aps create and aps modify commands have a new option that lets you specify the critical priority for a partition. As a result, we've removed the following:- the -c option for procnto
- the SCHED_APS_MARK_CRITICAL and SCHED_APS_CLEAR_CRITICAL commands for SchedCtl()
- the SIGEV_FLAG_CRITICAL bit and the SIGEV_MAKE_CRITICAL() and SIGEV_CLEAR_CRITICAL() macros for use with sigevent structures
Any source code using these will need to be updated.
- Simplifying bankruptcy handling
- We've removed the
log
andrecommended
options for handling bankruptcies, because they weren't fully implemented. You can now use procmgr_event_notify() to arrange to be notified when a bankruptcy occurs.
What's new: Networking
We currently support OpenSSL 1.0.2i and OpenSSH 7.3.
- io-pkt-v4
- This is now a symbolic link to io-pkt-v4-hc.
We support WiFi wpa_supplicant 2.5 for Marvell and Broadcom drivers. We've added a shim layer to assist with WiFi driver integration towards using the common wpa_supplicant 2.5. The common wpa_supplicant 2.5 enables easier integration of the Wireless Test Engine (WTE) required for WiFi alliance certification.
What's new: Libraries and header files
![]() |
Some references to these libraries in the documentation haven't yet been updated. (Ref# J1627591) |
The new functions and data structures in the QNX Neutrino libraries include:
- hwi_find_compatible()
- Find a specific instance of an item
- InterruptAttachArray()
- Attach an interrupt handler (that returns an array of sigevents) to an interrupt source
- MsgSendPulsePtr(), MsgSendPulsePtr_r()
- Send a pulse (containing a pointer) to a process
- _readdir64_r()
- Read a directory and get stat information
- readdir64_r()
- Read a directory (reentrant)
- recvmmsg()
- Receive multiple messages from a socket
- SchedGetCpuNum()
- Get the index of the CPU that a thread is currently running on
- sendmmsg()
- Send multiple messages to a socket
- shutdown_system_with_reason()
- Shut down the system, after saving a string that explains why.
- slog2_hash()
- Convert an input string into an obfuscated non-reversible hash string
- slog2_obfuscate()
- Obfuscate file and directory names by replacing some characters
- SysSrandom(), SysSrandom_r()
- Install a source of entropy for the kernel's pseudorandom number generator
- ThreadCtlExt(), ThreadCtlExt_r()
- Control a thread, specifying the process and thread IDs.
- vslog2fa()
- Log a printf-style string in a slog2 buffer (varargs)
We've removed the following:
| Instead of using: | Use: |
|---|---|
| atoh(string) | strtoul(string, NULL, 16) |
| chsize() | ftruncate() |
| _cmdfd() | — |
| DCMD_PROC_FREEZETHREAD, DCMD_PROC_THAWTHREAD | — |
| ds_clear(), ds_create(), ds_deregister(), ds_flags(), ds_get(), ds_register(), ds_set() | — |
| eof() | Check the result of read() |
| fgetchar() | fgetc(stdin) |
| flushall() | fflush(NULL) |
| fputchar() | fputc(c, stdout) |
| getprio() | pthread_getschedparam() or SchedGet() |
| input_line() | — |
| mphys() | mem_offset() |
| pci_*() | See the PCI Server User's Guide |
| posix_spawnattr_addpartid(), posix_spawnattr_addpartition(), posix_spawnattr_getpartid() | — |
| setprio() | pthread_setschedparam() or SchedSet() |
| strcmpi(), stricmp() | strcasecmp() |
| strnicmp() | strncasecmp() |
| strnset(), strset() | memset() |
| tell(), tell64() | lseek(fd, 0, SEEK_CUR) |
Other changes include:
- 64-bit architectures
- The definition of some functions and data types have changed.
For more information, see Migrating to QNX SDP 7.0 and
the
What's New
appendix in the QNX Neutrino C Library Reference. - *64()
- The large-file support functions and data types now appear in the name space
only if you define _LARGEFILE64_SOURCE when you compile your code.
In earlier versions of the OS, these functions appeared in the default name space, but not in
others such as POSIX_C_SOURCE.
These functions and data types support 64-bit file offsets. They're stopgap measures that you might need to use until the default file offsets are 64 bits long:
- If you want to use 64-bit file offsets everywhere, set _FILE_OFFSET_BITS=64 when you compile, and then use off_t and the normal functions (e.g., open() instead of open64()). Use fseeko() and ftello() instead of fseek() and ftell().
- If you need to use both 32- and 64-bit file offsets in a program, set _FILE_OFFSET_BITS=32 and define _LARGEFILE64_SOURCE when you compile, and then use the large-file support functions when you need to use 64-bit offsets.
- If you're porting source that uses the large-file support functions, define _LARGEFILE64_SOURCE when you compile.
In header files and code, don't refer directly to _FILE_OFFSET_BITS or _LARGEFILE64_SOURCE; use __OFF_BITS__ and __EXT_LF64SRC instead.
- flock()
- We've corrected the behavior of this function: if you open the same file multiple times in a process, an flock() on one file descriptor referring to a file now locks out an flock() on a different fd. (Ref# J736874)
- ham_attach()
- This function now sets errno to ENOENT if there isn't a process with the specified process ID.
- ioctl()
- The SIOCDARP, SIOCGARP, and SIOCSARP commands aren't implemented, so we've removed their definitions. (Ref# J1589096)
- iofunc_lock()
- There's a new F_FLOCK bit that's ORed into the l_type member of the flock structure to indicate that the _IO_LOCK message originated as a call to flock() instead of a call to fcntl(). Your resource manager can check this bit and behave appropriately; see the entry for iofunc_lock() in the C Library Reference. (Ref# J736874)
- mmap()
- This function now enforces the POSIX requirement that you specify either
MAP_PRIVATE or MAP_SHARED.

If you specify neither, mmap() returns MAP_FAILED and sets errno to EINVAL; if you try to use the mapped-in object, you'll get a SIGSEGV.
We've also deleted the long-deprecated MAP_PRIVATEANON flag. Use MAP_PRIVATE | MAP_ANON instead.
- posix_fallocate()
- This function now correctly returns 0 or an error code, instead of returning 0 or -1 and setting errno if an error occurs. (Ref# J1279909)
- posix_spawn_file_actions_addopen()
- This function is now fully implemented. (Ref# J701207)
- slog2*()
- We no longer ship <slog2.h>, which simply included <sys/slog2.h>. You should include <sys/slog2.h> directly.
- speed_t
- In order to conform to POSIX, this type is now an unsigned 32-bit integer. (Ref# J1469366)
- ThreadCreate()
- This function now correctly checks the priority range when PTHREAD_EXPLICIT_SCHED is set. (Ref# 28763, J166539)
See also the What's New
appendix in the QNX Neutrino C Library Reference.
What's new: Board Support Packages
If you have a BSP for an earlier version of QNX SDP, and you need to update that BSP to QNX SDP 7.0, we recommend that you do so as follows:
- Find a QNX SDP 7.0 BSP that uses the same (or similar) SoC or CPU as your BSP.
- Create a copy of the version 7.0 BSP, and then incorporate any custom code from your BSP into it (in particular, board startup code, IPL code, and any device driver code that you may have modified).
QNX SDP 7.0 includes the latest, up-to-date versions of various startup library code, other support libraries, device drivers, and utilities; even if you manually update an older BSP so that it compiles in a QNX SDP 7.0 environment, you won't necessarily incorporate all of these changes and updates into your own updated BSP, and may wind up with something that isn't equivalent to an SDP 7.0 BSP. Therefore, we recommend incorporating your board-specific code deltas into an existing QNX SDP 7.0 BSP, rather than attempt to manually bring a QNX SDP 6.x BSP forward to SDP 7.0.
What's new: Drivers
Block-oriented drivers (devb-*)
We now support disks that are 2 TB or larger.
What's new: Graphics
The following are enhancements since the previous released versions of Screen:
| Feature | New since Screen in QNX SDP 6.6 | New since Screen for QNX SDP 6.5 SP1 |
|---|---|---|
| When calling either screen_post_window() or screen_post_stream(), applications can now indicate that the entire rendering buffer is dirty. | ✔ | |
| The screencmd utility now supports all valid properties for each Screen API object type. It also now accepts case-insensitive property names without requiring them to be necessarily prefixed with "SCREEN_PROPERTY_". | ✔ | |
| Support of input sessions to capture data from both on-screen and off-screen events is now available. Sessions allow applications to control who gets what types of input events and how these input events are delivered. | ✔ | |
| Support of streams for rendering into is now available. Streams are off-screen multi-buffered targets that applications can render into. Streams are generally used when the content is intended to be consumed by other applications rather than being shown on the display. | ✔ | |
| The stack-size parameter in the globals and display sections of your graphics configuration file (graphics.conf) is now in units of bytes (rather than units of 1024 bytes). | ✔ | |
When you change the following characteristics of an application window, Screen sends
an event to notify the window manager in the system of the change:
|
✔ | |
| The background parameter in the display section of your graphics configuration file (graphics.conf) is now a 24-bit value. | ✔ | ✔ |
| Screen no longer supports configuration of touch drivers. Refer to your BSP User's guide for details on how to configure the touch drivers for your platform. | ✔ | ✔ |
| Screen supports versioning. Screen version 2.0.0 is associated with the release of QNX SDP 7.0. | ✔ | ✔ |
Which platforms does Screen Graphics subsystem support?
| Board Supplier | Board Name | CPU | GPU | GPU Stack | Display Controller | Display Interface | Number of Displays | Display Resolution | Monitor Name | Touch | Video Capture Interface | Video Decoder |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| nVidia | CX Parker | |||||||||||
| Renesas | R-CAR H3 | ARM Quad Cortex-A57 | GX6650 | HDMI (2) | 2 | 1024x768 | Lilliput 10.1" FA1012 |
|||||
| Texas Instrument |
Jacinto 6 EVM Revision G, H |
ARM Dual Cortex A15 |
SGX544MP2 |
Imgtec DDK-1.13 | DSS |
DPI, HDMI, LCD |
3 |
|
Lilliput 10.1" FA1012 (HDMI) Attached (LCD) |
LG (I2C Controller) |
Parallel | tvp5158 |
| Texas Instruments | Sitara AM572x | ARM Dual Cortex A15 | SGX544MP2 | Imgtec DDK-1.13 | DSS |
HDMI, LCD |
2 |
HDMI: 720p LCD: 1920x1200 |
Lilliput 10.1" FA1012 (HDMI) Attached (LCD) |
LG (I2C Controller) |
Parallel | tvp5158 |
| Texas Instruments | Sitara AM437x | ARM Cortex A9 | SGX530 | Imgtec DDK-1.13 | DSS | LCD | 2 | LCD: 800x480 |
Lilliput 10.1" FA1012 (HDMI) Attached (LCD) |
LG (I2C Controller) |
Parallel | tvp5158 |
| Texas Instruments | AM335x | ARM Cortex A8 | SGX530 | Imgtec DDK-1.13 | DSS | LCD | 1 | LCD: 800x480 | Lilliput 10.1" FA1012 (HDMI) | |||
| NXP | SabreSmart | i.MX6Q |
GC2000 GC320 GC355 |
Vivante 5.x |
IPU3 | LVDS (2), HDMI | 3 |
LVDS: 1024x768 HDMI: 720p, 1080p |
Lilliput 10.1 FA1012 (HDMI) Hannstar |
eGalax |
MIPI-CSI-2, Parallel |
OV5640 |
| Intel | Skylake | i5 | Intel HD 6000 | Intel DRM 3.12.2, Mesa 10.2.3 | IntelHD | DPI, HDMI | 2 |
DPI: HDMI: 1080p |
Lilliput 10.1" FA1012 (HDMI) | |||
| Intel | SandyBridge | i5/i5/i7 | Intel HD 2000/3000 | Intel DRM 3.12.2, Mesa 10.2.3 | IntelHD | HDMI | 1 | 720p | Lilliput 10.1" FA1012 (HDMI) | |||
| Intel | IvyBridge | i5 | Intel HD 4000 | Intel DRM 3.12.2, Mesa 10.2.3 | IntelHD | HDMI | 1 | 720p | Lilliput 10.1" FA1012 (HDMI) | |||
| Intel | Broadwell | i5 | Intel HD 5500 | Intel DRM 3.12.2, Mesa 10.2.3 | IntelHD | DPI, HDMI | 2 |
DPI: HDMI: 1080p (920x1080) |
Lilliput 10.1" FA1012 (HDMI) | |||
| Intel | Apollo Lake | i6 | Intel HD 6000 | Intel DRM 3.12.2, Mesa 10.2.3 | IntelHD | HDMI | 2 | 1080p | Lilliput 10.1" FA1012 (HDMI) | |||
| Intel | Haswell | i3/i5/i7 | Intel HD 4400 | Intel DRM 3.12.2, Mesa 10.2.3 | IntelHD | HDMI | 1 | 720p | Lilliput 10.1" FA1012 (HDMI) | |||
| Intel | Baytrail (Valleyview) | Atom | Intel HD 4000 | Intel DRM 3.12.2, Mesa 10.2.3 | IntelHD | HDMI | 1 | 720p | Lilliput 10.1" FA1012 (HDMI) | |||
| VMware | VMware | N/A | Tunneling | N/A | N/A | N/A | N/A | N/A | N/A |
What's new: Services
QNX SDP 7.0 provides an integration of DBUS version 1.10.8. D-Bus is a simple system for interprocess communication and coordination. See http://www.freedesktop.org/software/dbus/ for further documentation. We've validated the DBUS integration using dbus-test-tool (which comes with the DBUS package) and QT5 bindings.
What's new: Startup
- On ARM targets, the cpu_intr_stride member of the intrinfo section of the system page must now be 0 to indicate that the interrupt system doesn't use autovectoring. This wasn't enforced in previous releases.
What's new in the QNX Momentics tool suite?
The QNX Momentics Tool Suite 7.0 includes the following versions of the compiler and tools:
- GCC 5.4 tool chain, including support for the Intel Advanced Vector Extensions (AVX)
- GDB 7.10
- Binutils 2.25
For details about what's new in GCC 5, see https://gcc.gnu.org/gcc-5/changes.html. Some of the main changes include:
- The default C language level has switched to C11; with that comes the default of C99 inline semantics, instead of the gnu89 inline semantics.
- The ABI has changed on ARMv7 because of a switch to hard float, so you need to rebuild your programs.
We now support C++14. We've discontinued libcpp (the Dinkumware C++ library); the LLVM C++ library (qcc -Y_cxx) is now the default C++ library. The current version of this library is 3.7.1.
For information about other changes to the compiler, tools, and utilities, see the following sections:
What's new: Compiler, tools, and utilities
- diskimage
- We now ship this utility with QNX SDP instead of with the QNX SDK for Apps and Media.
- make
- A make install no longer fails if you use precompiled headers on a macOS host. (Ref# J1567579)
- mkfatfsimg
- If the specified number of sectors and the number of sectors per cluster result in an inappropriate FAT type, this utility now dynamically determines a valid FAT type, when possible. (Ref# J616361)
- mkifs
- The macOS-hosted version of QNX SDP now includes the mkifsf_uefi image filter. (Ref# 1568221)
- mkqnx6fs
- The default blocksize is now 4096 bytes.
- qcc
- We now use PIE by default when you're compiling for 32-bit x86 and 32- or 64-bit ARM.
- q++
- We've renamed QCC to be q++.
- shutdown
- This utility is now in /sbin instead of /bin.
See also the What's New
appendix in the Utilities Reference.
What's new: Integrated Development Environment
The IDE includes the following new features:
- Eclipse Neon
- C Development Tools 9.0
The website for updates and maintenance releases—which you access via in the IDE—is https://www.qnx.com/account/updates/ide/5.0/.
This version of the IDE includes the following fixes and new features:
- The System Profiler now displays slog2-formatted events as slog2info. (Ref# J1327440)
- The Code Coverage perspective now includes branch coverage.
- When you're debugging, the IDE now shows the backtrace correctly. (Ref# J745518)
- In the System Information perspective, if you add or remove columns in the Thread Details pane,
you no longer get an extra
Process
column in the table. (Ref# J484552) - In the Memory Information view, Copy to Clipboard now works when the Categorize option is turned off. (Ref# J485578)
- Editing a file that's located (mapped) via PPS or other resource managers no longer fails when done via the filesystem navigator. (Ref# J528053)
- Shortcut keys now work as expected in the IDE. (Ref# 255722, J393830, 438387)
- The sample projects are set up to compile for all supported targets. (Ref# J438386)
- If you go to , select Sampling and Call Count Instrumentation in Profiling Method, and then press Restore Defaults, all the defaults are now restored. (Ref# J548281)
- Using the default KEV log configuration results in a log that contains Running events that now correctly include scheduling/priority information. (Ref# J393921)
- The item is now initially active when you execute the SystemProfilerMissedDeadlines example's Timeline step. (Ref# J438387)
- If you have a lot of projects in your workspace, the Target File System Navigator correctly displays the directories on your target and all the files contained in the directories. (Ref# 729298)
- If you create a new QNX Image Build File for a project, select a template, create a new build file again with the same name, and choose a different template, you no longer get a null-pointer exception. (Ref# J541393)
- The IDE correctly opens EFS buildfiles in the editor in the System Builder perspective. (Ref# J863805)
- If you close a System Builder project, it no longer disappears from the System Builder Projects view. (Ref# J542569)
- On Linux, after you import and build a BSP in the System Builder, the files in the prebuilt directory no longer lose their executable bit. (Ref# 252984, J393824)
- The IDE now correctly parses makefiles that repeatedly use same macro (such as appending to CCFLAGS with different values), specifically when one of the values has a complex structure (such as quotes and escaped spaces). (Ref# J817499)
- If you right-click on a core file and choose Debug, the IDE now correctly creates a Debug Launch configuration for postmortem debugging. (Ref# J527718)
- Breakpoints set in .gdbinit now show up in the user interface. (Ref# 55810, J393602)
- The Code Coverage perspective no longer gets stuck on
Calculating coverage.
(Ref# J470814) - On Linux, after you import and build a BSP in the System Builder, the files in the prebuilt directory now maintain their executable bit. (Ref# 252984, J393824)
Discontinued items
We've discontinued the following:
- applypatch
- audio_manager.so (Audio Manager)
- ctags
- deva-ctrl-4dwave.so
- deva-ctrl-cs4281.so
- deva-ctrl-ess1938.so
- deva-ctrl-geode.so
- deva-ctrl-i8x0.so
- deva-ctrl-nmg6.so
- deva-ctrl-sb.so
- deva-ctrl-via686.so
- deva-ctrl-via8233.so
- deva-ctrl-vortex.so
- deva-ctrl-ymfds1.so
support for PC Card, including devp-pccard,
libpccard, pccard-launch, and pin
- dprepresize, dresize
- support for floppies, including devb-fdc, fdformat
- ds
- fs-cd.so — use fs-udf.so instead.
Note that you need to use mount -t udf, not mount -t cd when mounting a CD.
- fs-qnx4.so and related utilities: chkfsys, dinit, and zap
- fs-rcfs.so, mkrcfs, mkrcfsimg
- noninstrumented and single-processor versions of procnto
- io-pkt-v4 — now a symbolic link to io-pkt-v4-hc
- support for Intel 486 systems
- ldbootstrap
- ldrel — use elfnote instead
- libcpp (the Dinkumware C++ library)
- lx
- mcs
- mksbp
- Mudflap
- slinger
- slogger and sloginfo — use slogger2 and slog2info instead. Anything that you send to slogger is relayed to slogger2.
- <slog2.h> — this file simply included <sys/slog2.h>. You should include <sys/slog2.h> directly.
Deprecation notices
We've deprecated the following and will remove them in a future release:
- System Information Logging in the IDE
- Persistent Publish/Subscribe
| Instead of: | Use: |
|---|---|
| dhcp.client | dhclient |
| lsm-avb.so | A third-party AVB product |
Known issues
QNX SDP 7.0 contains known issues in the following areas:
- Installing and uninstalling
- Kernel
- Libraries and header files
- Filesystems
- Startup
- Adaptive partitioning
- Booting
- BSPs
- Compiler, tools, and utilities
- Drivers
- Flash filesystems & embedding
- IDE:
- I/O devices
- Networking
- Graphics
- Persistent Publish/Subscribe
- Virtual machine
Known issues: Installing and uninstalling
The beta includes two identical scripts for setting up your environment:
qnx700-env.sh and qnxsdp-env.sh.
The production version of QNX SDP 7 will include only qnxsdp-env.sh.
(Ref# J1639801)
- If you install QNX SDP via the software center, the installer doesn't create shortcuts for launching the IDE.
Workaround: Execute the run_qde script that's in the folder where you installed QNX SDP.
Known issues: Kernel
- procnto
-
-
User-specified band configurations in the standard memory allocator
may corrupt your application's memory, and may cause the
application to crash.
(Ref# J169727)
Workaround: If you specify the band configuration, make sure that the bands are 4080 bytes or smaller, and that all band sizes are multiples of 8 bytes.
- If there's a continuously-running, regular, high-frequency hardware
interrupt, it's possible for a kernel call to be continually
interrupted and restarted.
The precise definitions of
continuously-running
andhigh-frequency
are application-specific, but any regular interrupt with an interval less than the clock interrupt interval, that persists for an extended period should be carefully analysed to ensure that it doesn't affect the operation of the application. One case where this continual restart can occur is when very large (e.g., 100 MB) messages are passed on slow processors. (Ref# 56741, 62212, 75921, J167989, J168503, J169537) - If you create a shared memory object, mmap() it with MAP_SHARED, create a synchronization object (e.g., a mutex) in it, and then mmap() with MAP_PRIVATE to the same offset in the shared object, then the application and some some programs such as pidin and shutdown may hang. (Ref# 63369, J168610)
-
User-specified band configurations in the standard memory allocator
may corrupt your application's memory, and may cause the
application to crash.
(Ref# J169727)
- procnto-smp
- Some multiprocessor systems, such as
the ARM Cortex-A9 MPCORE, have an
interrupt controller on each processor, but QNX Neutrino currently
assumes there's only one controller.
Unmasking an interrupt on one processor may leave it masked on other
processors.
(Ref# 60301, J382285)
Workaround: Bind all threads that mask and unmask interrupts so that the threads run only on CPU 0.
Known issues: Libraries and header files
- libc.so and libm.so version numbers
- As noted above, the version numbers for these shared objects are now 4 and 3, respectively. We haven't yet updated the version numbers in all the documentation. (Ref# J1627591)
- atexit()
-
It isn't safe to call atexit() from a shared object
that's meant to be dynamically opened using dlopen().
If you call atexit() from such a shared object, your application may receive an abort() when you call dlclose(), and the handler registered with atexit() won't get called when the shared object is unloaded.
Under certain circumstances, the abort() won't happen when (for example) the shared object calls atexit() and passes a function that's defined in another object that doesn't get unloaded with a subsequent dlclose(). In this case, the handler isn't called until the application exits. (Ref# J521222)
- MsgKeyData(), MsgKeyData_r()
- These kernel calls don't work properly over Qnet; if the client and server are on different nodes, the verification step fails, even if the data is correct. (Ref# J418418)
- <sys/shutdown.h>
- The ProcessInfo_t structure includes a field called class, so you can't use this header in a C++ program because class is a C++ keyword. (Ref# J175563)
Known issues: Filesystems
- fs-ext2.so
- If you try to delete a linked file or directory in a Linux Ext2
filesystem, you get a
Corrupted file system detected
error. (Ref# 50264) - fs-qnx6.so
- The io-blk manager lets you mount a filesystem in a file.
To do this, you basically create a normal file on a disk, and then
format it (via mkqnx6fs, mkdosfs,
etc.), as a filesystem.
You can then run a command, such as:
mount -tdos /home/myfs.img /fs/test
and you'll get a mountpoint called /fs/test, which is the size of the file and is formatted as a DOS filesystem.
If you used fs-qnx6.so as the real filesystem on the hardware, and then created a DOS filesystem inside a file residing on the Power-Safe filesystem, the host filesystem formerly could become damaged by the modifications to the hosted filesystem. We've fixed that, but the host filesystem might not be able to confer full power-loss safety to the (by design) not power-loss-safe DOS filesystem. (Ref# 74580, J169426)
Known issues: Startup
- If you load an uncompressed OS image that's larger than 3 MB on an x86
target, some binaries (e.g. ftp) may crash.
(Ref# 45838, J346829)
Workaround: Specify this attribute in the mkifs buildfile:
[image=0x700000]
Known issues: Adaptive partitioning
- Overload detection isn't implemented.
- SCHED_RR threads might not round robin in partitions whose portion of the averaging window is smaller then one timeslice. For example, when the timeslice is 4 ms (the default) and the adaptive partitioning scheduler's window size is 100 ms (the default), then SCHED_RR threads in a 4% partition may not round-robin correctly. (Ref# 28035, J166387)
- If you use adaptive partitioning and bound multiprocessing (BMP), some combinations of budgets might not be met. (Ref# 29408, J166694)
- Threads in a zero-budget partition should run only when all other nonzero-budget partitions are idle. However, on SMP machines, zero-budget partitions may incorrectly run when some other partitions are demanding time. However, at all times, all partitions' minimum budgets are still guaranteed, and zero-budget partitions will not run if all nonzero-budget partitions are ready to run. (Ref# 29434, J166701)
Known issues: Booting
- If you install QNX Neutrino on a system that uses the
Intel Express Q35 chipset, the OS won't boot.
The ITE EIDE interface on this board isn't supported.
(Ref# 61188)
Workaround: Run the driver in PIO mode.
- Some Sony VAIO laptops don't assign an interrupt to a USB device;
when you're booting QNX Neutrino, you'll see some
InterruptAttachEvent failed
messages. (Ref# 41237)Workaround: Contact Technical Support to get a customized utility that enables the interrupts.
- On some Intel 3.2GHz D945G systems, the USB bus is reset by the host after
rebooting, while the host is addressing the device.
(Ref# 51935)
Workaround: Disable legacy USB support in the BIOS.
- The Dell Latitude D830 fails to boot QNX Neutrino from USB mass-storage devices. (Ref# 61688, J348144)
Known issues: BSPs
The QNX Software Centre includes a package called
QNX SDP 7.0 Beta BSP for TI Jacinto6, Sitara AM572x and Beagleboard-Xm
that should be calledQNX SDP 7.0 Beta BSP for TI Jacinto6, Sitara AM572x and Beagleboard-X15.
- If you're building a pre-6.5.0 BSP, you may need to remove some files
for the BSP to compile (and work) properly.
If you have problems building a pre-6.5.0 BSP,
refer to the
Building 6.4.x BSPs with QNX SDP 6.5.0
section of the BSP 6.5.0 information wiki, http://community.qnx.com/sf/wiki/do/viewPage/projects.bsp/wiki/SDP_6.5.0_BSP_Info. - Changing the variant of a BSP to ARMv7 isn't supported, because any prebuilt libraries in the BSP are not compatible with ARMv7. For more information, see the BSP 6.5.0 information wiki, http://community.qnx.com/sf/wiki/do/viewPage/projects.bsp/wiki/SDP_6.5.0_BSP_Info.
Known issues: Compiler, tools, and utilities
- echo.exe
- On Windows, the QNX-provided echo.exe interprets the Windows \ separator as an escape character. As a result, environment variable settings won't work if you use \ as a path separator; use / instead. (Ref# 19924, J142704)
- gdb
- The beta is missing a symbolic link that means you can't step into shared libraries.
(Ref# J851213, J1629783)
Workaround: Go to $QNX_TARGET/architecture/usr/lib, where architecture is each of armle-v7 and x86, and manually create the link:
- On Linux and macOS:
ln -sf ../../lib/libc.so.4 ldqnx.so.2 - On Windows:
cp ../../lib/libc.so.4 ldqnx.so.2
The link name is different for the 64-bit targets. Go to $QNX_TARGET/architecture/usr/lib, where architecture is each of aarch64le and x86_64, and manually create the link:
- On Linux and macOS:
ln -sf ../../lib/libc.so.4 ldqnx-64.so.2 - On Windows:
cp ../../lib/libc.so.4 ldqnx-64.so.2
- On Linux and macOS:
- ham, hamctrl
The beta is missing the AARCH64 versions of these binaries.
(Ref# 1644996)
- if_up
-
If you use the -m option, you'll get an
illegal option
error. (Ref# J624167) - ksh, sh
- On Windows, because of the way that the MSYS versions of the shell manipulate the environment variable, PATH doesn't appear to include $QNX_HOST/usr/bin, but it does. (Ref# 59412)
- MAKEFLAGS
- On Windows, Microsoft Visual Studio also uses the MAKEFLAGS
environment variable, but in a much different way than QNX Neutrino does.
The result is that Microsoft Visual Studio no longer works after you've
installed QNX SDP.
Workaround: If you want to work with Microsoft Visual Studio (MSVS) after installing QNX SDP on the same system, do the following:
- Open a command window and run cmd.
- Type set.
- Find the value for MAKEFLAGS and save it.
- Type set MAKEFLAGS.
- Do your MSVS work.
- To work with QNX SDP again, type:
set MAKEFLAGS=saved_makeflags_value
- on
- The -f and -n options don't work if you specify the name of the local node. (Ref# J635472)
- pidin
- If the first page of a memory-mapped object is written to, pidin might display /dev/zero instead of the object's name. (Ref# 43050, J382175)
- qad
- This anomaly detector is documented but isn't included in the beta.
- qcc
- Code profiling doesn't currently work with PIE.
If you build with the -p option, the compile fails.
(Ref# J1606141)
Workaround: Link with the -nopie option.
- qconfig
- This utility currently reports the version number of QNX SDP as 6.x.x instead of 7.0.0. (Ref# 1568519)
- slogger, sloginfo
- These utilities have been discontinued, but the documentation for the beta still refers to them. (Ref# J1516970)
- su
- If your root account has a password, and you
try to su to it from another user ID, you get this message:
*** stack smashing detected ***: su terminated Abort (core dumped)
- User Account Control (UAC)
- Windows 7 includes an account policy, called
User Account Control (UAC), that impacts various administrative
features, such as being able to create and store files in a temporary
directory (tmp).
This directory is used by various applications, such as CVS and the
split command.
To successfully run these applications on a computer running
Windows 7, you must have administrator privileges and disable UAC.
(Ref# 44027)
Workaround: To disable UAC:
- Launch MSCONFIG by from the Run menu. (When you click on the launch button—the one with the windows logo commonly in the bottom left corner—the Run menu is an editable text bar with the string Start Search. Type msconfig and then press Enter.)
- Click on the Tools tab. Scroll down until you find Disable UAC, and then click that line.
- Press the Launch button.
- A cmd window will open. When the command is done, you can close the window.
- Close msconfig, and then restart your computer.
You can reenable User Account Control by selecting the Enable UAC line and then clicking the Launch button.

Disabling UAC bypasses some security features.
- usblauncher
- Not currently shipped.
- Windows utilities
- The Windows installation includes various executables that have the
same name as some QNX utilities, such as find, sort,
and split.
By default, Windows places the path to the Windows executables at the
beginning of the Windows PATH environment variable,
and the QNX executables appear afterward.
This means that when you run these utilities from the command line,
instead of using the QNX version, the PATH variable uses
the Windows version.
(Ref# 44457)
Workaround: If you want to use the QNX utilities for find, sort, and split from a command prompt or shell prompt, specify a fully qualified path to any of the QNX executables.
Known issues: Drivers
Audio device drivers (deva-*)
- The audio driver isn't initialized after you boot the target with QNX SDP 6.6 from the hard disk on a Kontron MicroETXexpress-PC module. (Ref# 74882, J350046)
Block-oriented drivers (devb-*)
- devb-eide
- DMA modes don't work on these drives:
- Hitachi-LG Data Storage DVD WRITABLE/CD-RW DRIVE, ROM VER.E111, May 2006
- Toshiba Samsung Storage Technology TS-H352C/DELH, DE02, May 2006
(Ref# 41600)
Human interface device drivers (devh-*)
- devh-usb.so
-
- Autorepeat doesn't currently work on ViewSonic 10191 USB keyboards. (Ref# 41118, J346419)
- Pressing the space bar on a ViewSonic 10191 USB keyboard when the
system displays the
Press space bar to input boot options
message doesn't work. You get the menu only after the EIDE enumeration is done.If you also have a Microsoft USB mouse connected, you get a
devh-usb.so - Unable to attach to USB device 1 (10)
message. (Ref# 41122)
Network drivers (devn-*, devnp-*)
- devnp-*
- When using the m_pkthdr_csum_data member in network driver code, make sure that you use only the bottom 16 bits. The top 16 bits may contain undefined data. (Ref# 44622, J473874)
- devnp-asix.so, devnp-ecm.so, devnp-ecmplus.so, devnp-ncm.so
-
These drivers wait only one second before giving up when trying to connect to the USB host stack, not the
documented 60 seconds.
(Ref# J583790)
Workaround: Use the wait option to specify how many seconds to wait for.
- devnp-i82544.so
- The io-pkt driver for the Intel i82544 doesn't support dual-port cards (did=0x1010). (Ref# 44299, J473852)
- devnp-ixgbe.so, devnp-speedo.so
- The beta doesn't include the 64-bit ARM (AARCH64) versions of these drivers. (Ref# J1548269)
- devnp-usbdnet.so
- This driver ignores the wait option, and might crash if you try to mount it when io-usb-dcd isn't running. (Ref# J631827)
USB stack and drivers (devu-*)
- Due to an issue with the hardware,
if you use io-usb-otg on the TI Jacinto 6, and you start the driver while a
USB3 stick is inserted, the stick isn't detected.
(Ref# J1559910)
Workaround: Start the driver before you insert the stick, or use a hub.
- UHCI and OHCI aren't supported in this release; for more information, contact Technical Support.
Wireless drivers (devnp_nda-*)
We tested the wireless drivers using the WiFi Alliance test suite (http://www.wi-fi.org/certification/programs). Test coverage includes a subset of these test suites:
- Connectivity: Station Mode Interoperable connectivity (802.11 a/b/g) and Advanced Wi-Fi Certified n (802.11n)
- Connectivity: Access Point Mode Interoperable connectivity (802.11 a/b/g) and Advanced Wi-Fi Certified n (802.11n
- Connectivity: Wi-Fi Direct
- Optimization: Wi-Fi WMM Power Save
- Access: Station Mode Wi-Fi Protected Setup
- Access: Access Point Mode Wi-Fi Protected Setup
- TI Jacinto 6 + TI Wilink8 (SDIO):
- With the TI Wilink8 driver, a few AP mode test case failures are observed. Generally, STA and AP and P2P modes are operational.
- AP Mode Test cases 4.2.37, 4.2.43 relating to support of 2x2 spatial streams (Ref# J1617541) and test case 4.2.40 where driver fails to send the Block Ack. (Ref# J1617543)
- NXP i.MX6 + Broadcom BCM4359 (PCIe):
- With the Broadcom BSM 4359 driver, a couple of STA and a couple of P2P test case failures. Generally, STA and AP and P2P modes are operational.
- STA mode test cases 5.2.37 and 5.2.53 fail due to lower than expected throughput and failure to establish IP layer. (Ref# J1610291, J1597035)
- P2P mode test case 5.1.7 fails when devices using MCS Index > 7 (Ref# J1593233), and 5.1.12 fails due to low signal level on the test AP (Ref# J1593249)
- Intel Skylake + Marvell 8897 (PCIe):
- With the Marvell 8897 driver, AP mode is not functional at the moment. Also a few failures were noted for P2P mode.
- AP mode failures: test cases 4.2.5, 4.2.9 where device failed to associate (Ref# J1628447, J1628478)
- P2P mode test cases 4.1.1, 4.2.2, 6.1.1, 6.1.3, 6.1.11, 5.1.4, 7.1.4 failed. (Ref# J1626237, J1626242, J1626251, J1626256)
Known issues: Flash filesystems & embedding
- In previous versions of this software, a program that called
umount() without the _MOUNT_FORCE flag would
behave as if the flag was provided (i.e. the flash
filesystem would be unconditionally unmounted regardless of any
operations either pending or in progress on the filesystem).
In this release, umount() sets errno to EBUSY if any pending or in-progress flash filesystem operations exist on the filesystem unless you specify _MOUNT_FORCE. The same applies for scripts that call the umount utility without the -f option. This has implications for applications that expect _MOUNT_FORCE behavior but don't specify it.
- libfs-flash3 loses blocks with ftruncate(). (Ref# 25132)
- If you create a 255-character filename using the 1.1.0 flash library (libfs-flash3) and the flash filesystem is subsequently mounted using an earlier version of libfs-flash3, the filename won't appear in the filesystem, but it is still present (i.e. if the filesystem is subsequently mounted again with the 1.1.0 libfs-flash3, the filename will reappear). This behavior applies only to forward compatibility whereby an older flash filesystem library is used to mount a newer filesystem. Backward compatibility (the ability of the new filesystem library to mount older filesystems) isn't affected.
- During a power failure, the flash filesystem can be corrupted if the NOR device's power supply is in the indeterminate state. The solution is to design the hardware so that the NOR flash device enters RESET the moment the power supply drops below the proper operating range. (Ref# 24679)
Known issues: IDE
Known issues: General
- On Linux, many undefined symbol: menu_proxy_module_load messages might be displayed when you start
the IDE from the command line.
(Ref# J337353)
Workaround: Execute this command:
sudo apt-get install appmenu-gtk:i386
- On Windows, if the IDE window spans two monitors, and you lock and then unlock your computer, the window is restored to be the size of one monitor. This is a general problem on Windows. (Ref# 28653)
- When you do a build on a Windows host, stdout and stderr sometimes overlap, resulting in misleading error and warning messages. This is a general problem on Windows. (Ref# 15106)
-
Sometimes the IDE becomes unresponsive during indexing operations.
Workaround: Restart the IDE.
- If you use Set Priority/Scheduling Algorithm in the Target Navigator to change a process's priority and scheduling algorithm, and then select this item again for the same process, the default settings might be displayed instead of the current ones, but if you press OK, the process's settings aren't changed back to the defaults. (Ref# J537153)
- The IDE no longer includes an Subversion plugin. You can install one such as Subversive or Subclipse.
-
The text in the IDE hover help is sometimes truncated or formatted incorrectly.
(Ref# 259496, J393841)
Workaround: Look up the function in the QNX Neutrino C Library Reference.
- We pre-index our documentation, but the first time you search for anything in the IDE's Help system, it has to combine the indexes (and index any Eclipse documents that haven't been indexed). This should take less than a minute.
- You might see a message like this when you start the IDE:
Subscription License Expired - Your QNX License could not be obtained, some QNX functionality will be disabled.
This message appears only if QNX Software Systems has a contract with you to support server-based licenses. It indicates one of the following:
- You need to configure your license server.
- More users are trying to use the IDE at the same time than there are available licenses for.
(Ref# 51688, J236666)
- The Eclipse editor doesn't behave correctly on very long lines (more than 4500 characters). At the end of a long line, the cursor doesn't position itself properly between characters, selections and changes are very slow, and the column number is reported incorrectly. (Ref# 29586, 21053; Eclipse-CDT PR 68116)
- If the IDE can't open the browser to display the documentation, it
may give you an error message of:
An exception occurred while launching help. Refer to the log for more details.
The problem could be that the IDE couldn't find your default browser. Check the web browser listed in your preferences (see ) to make sure it's a browser that's installed on your system.
If this doesn't fix the problem, check the log file; see . If you've installed the Eclipse SDK, use the Error Log view. (Ref# 29971)
Known issues: Application Profiler perspective
- The Application Profiler can allocate CPU time to the wrong line
if you're profiling code that has profiling and debugging information,
and if you linked against a static library that doesn't have
profiling and debugging information.
(Ref# 21024)
Workaround: Build everything with debugging information, or use -gdwarf-2 instead of -gstabs.
Known issues: System Profiler perspective
- The System Profiler requires a minimum color depth of 16 bits; otherwise, the timelines might appear to be blank. (Ref# 23763)
Known issues: Memory Analysis perspective
-
In the Advanced Settings part of
on Windows, the default path name might start with a backslash.
(Ref# J500345)
Workaround: Change the leading backslash to a forward slash.
-
If you enable Enable check on realloc()/free() arguments in the Memory Errors part of
,
click Apply, close the window and then open it again, this setting is no longer enabled.
(Ref# J510803)
Workaround: You can change this setting in the Run Configuration window's Memory analysis tool, under Memory errors.
- If you make the period for performing memory snapshots too short, the Memory Analysis view might not
show all the allocations and deallocations.
(Ref# J577315)
Workaround: Do the following:
- Run the program normally with IDE
Run with MAT
configuration. - Use the IDE's target filesystem navigator to copy the /tmp/traces.rmat file from the target to the IDE workspace.
- In the IDE's Memory Analysis perspective, select to run the import wizard and import the traces.rmat file to a new MAT session.
- Run the program normally with IDE
- If you use the Memory Analysis tool with the control thread enabled, no information will be returned for bins,
bands, or usage.
(Ref# 252156, J393820)
Workaround: Disable the control thread.
- When you request the termination of the Memory Analysis service, it might take longer than expected. (Ref# 46228)
- In the Memory Analysis perspective, if a function causes a buffer overflow, memory leaks aren't detected correctly. (Ref# 42312)
- You might see some allocations take place before your application's main() function starts. This is normal; some of the system libraries allocate space as they're initialized. (Ref# 29698)
- The Memory Analysis Tool changes the behavior of a program that uses fork.
(Ref# 29032)
Workaround: If your program uses fork, you must disable the control thread of the Memory Analysis Tool (from the Launch Configuration, select and disable Create control thread).
In addition, it is not possible to attach to this type of process because the Memory Analysis Tool needs to run a control thread.
Known issues: System Builder perspective
- In the System Builder, having the same binary and directory name in the overrides can result in an incorrect path for the binary. (Ref# 40287)
Known issues: C/C++ development
If you create a QNX C++ project, the generated Makefile refers toQCC instead ofq++ . (Ref# J1628663)Workaround: Edit the
Makefile and change this line:CXX = QCC -lang-c++ -Vgcc_nto$(PLATFORM)
to this:
CXX = q++ -lang-c++ -Vgcc_nto$(PLATFORM)
or this:
CXX = qcc -lang-c++ -Vgcc_nto$(PLATFORM)
- If you start a new IDE session with a new workspace, go to the C/C++ Projects perspective,
add a target navigator, and then add a valid target, the target is shown as available and its name is as expected,
but you don't get the expansion button to display the list of processes on the target.
(Ref# J572145)
Workaround: Click in another view, or switch to another perspective. When you return to the target navigator, the expansion button appears.
- If the Makefile for a regular C++ make project
uses implicit rules such as the following:
all : cc2 cc2 : cc2.o cc2.o : cc2.cpp
then the link stage doesn't work properly. (Ref# 62006)
Workaround: To avoid this, use an explicit rule for linking:
cc2 : cc2.o $(CXX) -o cc2 cc2.o -lang-c++ - The IDE sometimes ignores an explicit build request for a project, such as
those invoked by using the Build Project entry in the C/C++ Project
view's right-click menu, if the project uses an externally built
library.
(Ref# 20966)
Workaround: Use an explicit target in the make command.
Known issues: Debugging
- Watchpoints aren't supported for ARM. Although the IDE lets you create a watchpoint, it won't work correctly and could cause instability with your debugging session. (Ref# 12136, 259564, J463656, J545820)
- The Modules view might not show the most recent state of your loaded libraries during debugging.
(Ref# J393844)
Workaround: To force it to update to the latest state, refresh the view by using .
- The Modules view doesn't show information for the executable being debugged. (Ref# 259524, J393842)
- Disconnecting from an executable while it's being debugged causes it to terminate.
(Ref# 259773, J393846)
Workaround: Select . Under Termination, clear the checkbox labeled Terminate GDB when last process exits.
Known issues: I/O devices
- io-usb
-
- In some cases when unmounting DLLs and running the usb utility at the same time, some memory allocated by io-usb isn't freed. This is a rare situation. (Ref# 21716)
- The io-usb server crashes if you repeatedly mount and umount and plug and unplug devices attached to the port. (Ref# 21556, J344839; Ticket ID 77965)
- io-usb might crash with a SIGSEGV when you shut down the system and you don't have any USB devices inserted. (Ref# 29495, J345914)
Known issues: Networking
- fs-cifs
-
-
If you try to remount a CIFS filesystem, either with:
mount -u cifs_mountpoint
or by calling mount() with the _MOUNT_REMOUNT flag, the filesystem is unmounted. (Ref# 77893, J169740)
- If you unlink() a file on a CIFS mount point, any open file descriptors for that file become invalid. (Ref# 38574, J473683)
- fs-cifs doesn't support POSIX file-locking functions. (Ref# 38570, J473679)
- fs-cifs incorrectly sets an errno of EPERM instead of EBADF if you attempt to write to a file opened as O_RDONLY or O_ACCMODE. (Ref# 38565, J473675)
- If a component of a pathname supplied to a function isn't a directory, fs-cifs should return ENOTDIR. It currently returns ENOENT. (Ref# 38564, J473674)
- PATH_MAX for CIFS (and thus fs-cifs) isn't 1024 as in POSIX. This is set by both Windows and the CIFS specification. The pathname length can be up to 255 characters. (Ref# 38566, J274605)
-
If you try to remount a CIFS filesystem, either with:
- fs-nfs2
-
- fs-nfs2 doesn't support files larger than 2 GB. (Ref# 39060, J473719)
- fs-nfs2 doesn't correctly implement the options -w size=n and -w number=n as described in the fs-nfs2 usage message. Don't use them. (Ref# 39031, J473717)
- fs-nfs2 doesn't support a -B option greater than 8096. (Ref# 39022, J473716)
- fs-nfs2 lets you modify the on-disk binary file of an executable that is executing. It should return an error with errno set to EBUSY. (Ref# 38563, J473673)
- The NFS clients don't distinguish between a pathname ending or not ending in / when passed as the argument to mkdir(). (Ref# 38484, J473667)
- fs-nfs3
-
If you use the default buffer sizes, fs-nfs3 might
corrupt files and eventually crash.
(Ref# J1617416)
Workaround: Limit fs-nfs3 to using 8 KB RPC buffers by specifying the -B 8192 option.
- The NFS clients don't distinguish between a pathname ending or not ending in / when passed as the argument to mkdir(). (Ref# 38484, J473667)
- gns
- A gns daemon can't act as both a client and server at the same time. If a local service is registered with a GNS client, the client can forward that information to redundant or backup servers; a server can't forward the information. (Ref# 21037, J473239)
- ifconfig
- The commands:
ifconfig iface_name up ifconfig iface_name scan
don't work individually for Wi-Fi drivers. (Ref# 61246, J393284)
Workaround: Combine the commands:
ifconfig iface_name up scan
- io-pkt*
-
- Accessing the resource manager of a remote io-pkt process via Qnet (SOCK=/net/xxxx) doesn't work if large (greater than 18 KB) message buffers are used. (Ref# J570218)
- The stack might send zero-length mbufs to a driver for transmission.
(Ref# 44621, J473873)
Workaround: Drivers must accommodate for this by checking the length of the data in the mbuf and ignoring the mbuf if the length is zero.
- If the default UDP socket receive-buffer size is set near its limit (for example sysctl -w net.inet.udp.recvspace=240000), UDP-based sockets become unreliable. (Ref# 27386, 159834, J181071)
- lsm-qnet.so
- Qnet might append the domain name to entries under /net,
even for nodes in the same domain.
(Ref# 75539, J474806)
Workaround: Use the setconf _CS_DOMAIN command to change the domain name to something else, and then change it back to its original value.
- The only supported bind= options for Qnet are bind=ethernet_interface and bind=ip. Other values for bind=X are still accepted (that is, no error is given), but Qnet may not work with them if the specified ethernet_interface doesn't appear. (Ref# 58234, J474325)
- Qnet currently expects all packets to be received and sent as a
single contiguous buffer.
This can be a problem if you're using jumbo packets.
(Ref# 47828, J473994)
Workaround: When you're using Qnet with an Ethernet driver that's enabled to use jumbo packets, you should set the cluster size (the mclbytes option to io-pkt*) to be the same as the packet size (the ifconfig if_name mtu command for the driver). This ensures that the packet buffers that Qnet uses are contiguous in memory.
If you specify a jumbo packet size larger than 4 KB (the default page size), you must additionally specify the pagesize=X option to io-pkt, with the same value as the mclbytes=X option. For example, to use 8100-byte packets with devnp-i82544.so, do the following:
io-pkt-v4 -d i82544 -p tcpip pagesize=8192,mclbytes=8192 ifconfig wm0 mtu 8100 mount -T io-pkt lsm-qnet.so

Be sure to mount Qnet after you change the MTU of the interface with ifconfig.
If you now type:
cat /proc/qnetstatsyou can see that the Qnet L4 has an MTU of 8096, which it learned from the driver (remember the 4 bytes for the trailing CRC).

All the Qnets on your LAN must have exactly the same MTU.
You can specify a particular MTU to Qnet (which can be the same or less than the driver-advertised value) with the mtu_en=X option.
- Qnet treats the _CS_DOMAIN configuration string differently if it's undefined or set to a NULL string. If it's undefined, Qnet uses a domain of .net.intra; if it's set to a NULL string, Qnet applies that as the domain (for example hostname.). (Ref# 19676, J473190)
- Qnet doesn't fully support communication between a big-endian machine and a little-endian machine. However, it does work between machines of different processor types (e.g. ARMLE, x86) that are of the same endian-ness. For more information, see the Advanced Qnet Topics chapter of the QNX Neutrino Programmer's Guide.
- Qnet might append the domain name to entries under /net,
even for nodes in the same domain.
(Ref# 75539, J474806)
- named
- The named daemon currently fails to start, so DNS isn't available. (Ref# J826519, J1550470)
- nfsd
- nfsd lets you access files only up to 16 subdirectory levels deep within the directory exported in the /etc/exports file. Deeper directory levels and files aren't accessible. (Ref# 40104, J473747)
- ntptrace
- Not currently shipped. (Ref# J1547977)
Known issues: Graphics
- Fonts
- The beta release doesn't include the *.ttf variants of the Noto fonts, or the license files for DejaVu and Noto fonts (but they're covered by the license guide). (Ref# J1625750)
- General
-
Screen crashes when your application calls screen_blit() with
NULL as the attrib parameter.
(Ref# J1280722)
Workaround: Pass in a single-element array with SCREEN_BLIT_END as the only element as attrib instead of NULL. For example:
... int blit_attrib[] = {SCREEN_BLIT_END}; screen_blit(screen_ctx, dest, src, blit_attrib); ... - Sitara AM437x
- You may see PVR_K* error messages in sloginfo logs. These are only warnings. You are safe to disregard these errors. (Ref# J1587196)
- VMware
-
-
If you are using VMware Workstation or Player 12, you may see the error:
"3D acceleration is not supported in this guest operating system" when you select
"Accelerate 3D graphics" from your Hardware tab in your virtual machine settings.
(Ref# J1553085)
Workaround: You can downgrade the virtual hardware to from VMware Workstation 12 to 10:
- Right-click your virtual machine and select "Manage".
- Select "Change Hardware Compatibility..." option.
- Continue with the "Change Hardware Compatibility" wizard.
- Select "Workstation 10.0" from the dropdown menu for "Hardware compatibility:".
- Select "Next >".
- Select your choice between creating a new clone of or altering this virtual machine.
- Select "Next >".
- Select "Finish".
- If you are using VMware Workstation or Player 12, screen remains running, when the GPU fails to start. (Ref# J1587218)
-
If you are using VMware Workstation or Player 12, you may see the error:
"3D acceleration is not supported in this guest operating system" when you select
"Accelerate 3D graphics" from your Hardware tab in your virtual machine settings.
(Ref# J1553085)
Known issues: Persistent Publish/Subscribe
- The ppsparse() function sets the attr_index member of the pps_attrib_t structure only when a line contains both an attribute name and a value. When you're reading in delta mode, PPS sends a message such as -attr\n when an attribute is deleted. Since there's no value, the code sets attr_index to -1. (Ref# 77361, J169694)
Known issues: Virtual machine
- The virtual machine might not be reponsive when you start it.
(Ref# J1559911)
Workaround: Restarting the virtual machine might fix this. If not, edit the virtual machine's settings and set the number of processors and cores to 1.
- Some older versions of VMware may show signs of instability.
For example, you might get kernel faults that don't occur on real
machines. You might also see messages such as
The CPU has been disabled by the guest operating system.
(Ref# 57058, J382252)
Getting started with the documentation
After you've installed QNX SDP, you'll find an extensive set of HTML documentation in the Integrated Development Environment's help system. To start the IDE on Linux or macOS, use this command:
base_directory/run-qde.sh
On Windows, use the desktop icon or run:
base_directory\run-qde.vbs
where base_directory is where you installed the software.
The roadmap
page contains links to the
various HTML booksets that accompany the OS.
For a short tutorial that will help you get started, see the
Quickstart Guide,
then refer to the other documents
(System Architecture,
QNX Neutrino Programmer's Guide,
C Library Reference,
Utilities Reference,
and so on).
You can install and work with multiple versions of QNX Neutrino. Whether you're using the command line or the IDE, you can choose which version of the OS to build programs for. For more information, see the IDE User's Guide or the QNX Neutrino Programmer's Guide. If you've written code for an earlier version of QNX Neutrino, see also Migrating to QNX SDP 7.0.
For the most up-to-date version of the installation and release notes, go to our website, www.qnx.com, log in to your myQNX account, and then go to .
Technical support
To obtain technical support for any QNX product, visit the Support area on our website (www.qnx.com). You'll find a wide range of support options, including community forums.
For questions about installing and using QNX SDP, see the Getting Started forum on our Foundry27 site, http://community.qnx.com. There are other forums for specific topics, including the QNX Neutrino RTOS, development tools, networking, Board Support Packages, and so on.