Would you like to tell us how we are doing?

You bet No thanks

BlackBerry Native SDK for Tablet OS Release Notes

This release of the BlackBerry Native SDK for Tablet OS can support apps targeted to run on BlackBerry PlayBook OS 2.1.1314,, and

Changes in this release

Camera Library Reference

  • camera_api.h - Added the following data types:
    • camera_eventkey_t
    • camera_eventmode_t
    • camera_exposuremode_t
    • camera_bayerformat_t
  • camera_api.h - Added the following functions:
    • camera_config_photo_face_detect()
    • camera_config_vf_face_detect()
    • camera_deregister_resource()
    • camera_disable_event()
    • camera_enable_image_event()
    • camera_enable_postview_event()
    • camera_enable_raw_event()
    • camera_enable_shutter_event()
    • camera_enable_status_event()
    • camera_enable_video_event()
    • camera_enable_viewfinder_event()
    • camera_get_exposure_mode()
    • camera_get_exposure_modes()
    • camera_get_exposure_regions()
    • camera_get_flash_level()
    • camera_get_image_buffers()
    • camera_get_raw_buffers()
    • camera_get_scene_modes()
    • camera_get_status_details()
    • camera_get_supported_cameras()
    • camera_get_video_buffers()
    • camera_get_video_output_resolutions()
    • camera_get_video_property()
    • camera_get_video_rotations()
    • camera_get_framerates()
    • camera_get_videolight_level()
    • camera_get_videovf_frame_types()
    • camera_get_videovf_property()
    • camera_get_viewfinder_buffers()
    • camera_get_whitebalance_mode()
    • camera_get_whitebalance_modes()
    • camera_get_whitebalance_regions()
    • camera_register_resource()
    • camera_return_buffer()
    • camera_roll_get_path()
    • camera_roll_set_path()
    • camera_set_exposure_mode()
    • camera_set_exposure_regions()
    • camera_set_whitebalance_regions()

Fixed in this release

This section lists the fixed issues for the BlackBerry Native SDK for Tablet OS, version 2.1.0.



When using Ubuntu 64-bit and registering with the RIM Signing Authority you may have received the error "Error registering long term keys Error: null". If this was the case, you had to update the script located at /bbndk-2.1.0/host/linux/x86/usr/bin/blackberry-keytool to include the line -Djava.security.egd=file:/dev/./urandom.

QNX Momentics Tool Suite


The launcher blocked the SIGCHLD, SIGURG, and SIGPROF signals for its own purposes. When the launcher started a process (such as an app), the new process inherited this setting. If SIGCHLD was blocked, the process wasn't notified if any of its child processes had ended. Most apps didn't need to unblock the other two signals. For more information, see the C Library Reference


Memory leaks were only reported when an application exited normally. If it was killed or crashed, memory leaks were not reported.



If you scrolled vertically in the simulator while in landscape mode you may have noticed "stretching" of the screen or black squares on the screen, depending on the version of VMware you were running. These anomalies disappeared when a screen update was forced by simulating a touch of the screen using your mouse.

Known limitations


  • There is a slight delay between tracks played as part of a playlist (approximately 0.5 seconds), even when the playlist includes only one track that is repeating.


  • Applications using FreeType must add the following include path: $QNX_TARGET/usr/include/freetype2.
  • In previous releases, the most recent version of the BlackBerry Platform Services library (libbps) was bundled with the Native SDK. This version was newer than the version on the target OS. To ensure the correct BPS library version was used by applications at run-time, projects in the Native SDK 1.0 would:
    • Use BPS headers from the $QNX_TARGET/../target-override location for compilation,
    • Link the libbps.so from the $QNX_TARGET/../target-override location to generate the application executable, and
    • Package the libbps.so from the $QNX_TARGET/../target-override location in the BAR
    As of the Native SDK 2.0.0, BPS no longer resides in the target-override location. The current versions of this library on BlackBerry PlayBook OS and the Native SDK are now in sync. If you have applications targeting PlayBook 2.1.0, that you no longer wish to support on PlayBook 1.0.x, you should remove the libbps.so.1 asset from bar-descriptor.xml and target the 2.1.0 version of the Native SDK. To verify, select the QNX page in the project properties dialog. Otherwise, packaging of the BAR file will fail because it will not be able to find the libbps.so.1 file to include in the BAR.


  • By default, the Native SDK installer creates the installation folder on Windows systems at the root of the C drive. For example: C:\bbndk-2.1.0.
    To install to the default installation folder on Windows 7, you must log in as a user who has administrator privileges. If you cannot log in as a user with administrator privileges, you must change the installation folder to an alternate folder that you have write access to.
  • When installing and uninstalling the Native SDK on a 64-bit Linux host computer, you may see an error regarding a missing libc.so.6 file. You can disregard this error message.
  • To run the installer and the QNX Momentics IDE on Ubuntu 64-bit, you need to install the 32-bit libraries: sudo apt-get install ia32-libs. Answer yes to all the questions.
  • On Linux and Mac host computers, the installer might crash when launching with an error similar to the following: "An internal LaunchAnywhere application error has occurred and this application cannot proceed." Unset the PS1 variable and restart the installation program to continue.
  • On Mac host computers, when you unzip the installation file, you may encounter an issue with incorrect permissions on the executable installer-bbndk-2.1.0. To launch the installation program, you will first need to manually change the permissions for installer-bbndk-2.1.0.
  • On Mac, after you complete your installation of the Native SDK, the CMND icon appears in the dock instead of the QNX Momentics icon.


  • The function alBufferData() does not throw an error when called with NULL as the data parameter.
  • The OpenAL 1.1 Specification and Reference incorrectly states that the function alcCloseDevice() will fail if the device's contexts and buffers have not been destroyed. alcCloseDevice() actually destroys any contexts and buffers still associated with the device.
  • The function alcGetIntegerv() does not throw an error when retrieving ALC_MAJOR_VERSION and passing an invalid device pointer.
  • The function alcGetString(device, ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER), throws an error where invoked after the device has been closed. It should return the default device and ignore the device parameter.
  • The OpenAL 1.1 Specification and Reference incorrectly states in the description of the alcGetString() function that "Specifying NULL for deviceHandle when asking for ALC_EXTENSIONS will generate an ALC_INVALID_DEVICE error." In fact, no error is generated.
  • The OpenAL 1.1 Specification and Reference incorrectly states in the description of the alBufferData() function that "An invalid size will result in an AL_INVALID_VALUE error." In fact, calling alBufferData() with an invalid size does not cause the INVALID_VALUE error.
  • When the function alcMakeContextCurrent() is called with an uninitialized ALCcontext pointer, it correctly returns ALC_FALSE, but does not generate an ALC_INVALID_CONTEXT error.
  • The function alSourceQueueBuffers() queues invalid buffers. If you pass a NULL buffer to this function, it will queue the buffer and not raise an error, even though the buffer is not valid.
  • The OpenAL Programmer's Guide - OpenAL Versions 1.0 and 1.1 incorrectly lists AL_INVALID_VALUE as a possible error returned by the functions alGenBuffers() and alGenSources() when the array is not large enough to hold the number of items requested. In fact, no error is generated in this situation.
  • The function alSource3f() does not throw an AL_INVALID_VALUE error when invalid numbers are passed as parameters. Apps should perform their own validity checking.
  • The function alSourcef() throws an AL_INVALID_VALUE error for valid values when using AL_CONE_INNER_ANGLE and AL_CONE_OUTER_ANGLE.
  • No error is thrown when the function alutLoadWAVFile() is called without a current context.
  • The function alutGetError() does not return ALUT_ERROR_ALC_ERROR_ON_ENTRY when there was already an ALC error on entry to alutLoadMemoryFromFileImage().
  • The OpenAL Programmers Guide incorrectly documents AL_DATA as a valid buffer property. An attempt to retrieve this property through alGetBufferi() and alGetBufferiv() will result in an AL_INVALID_ENUM error.
  • The deprecated function alutLoadWAVMemory() does not return the expected values.
  • The function alGetListenerfv() does not generate an error when called with an invalid value. Apps should perform their own validity checking.
  • The following attributes are set by the device and cannot be altered using the attribute list of the alcCreateContext() function: ALC_FREQUENCY, ALC_REFRESH, ALC_SYNC, ALC_MONO_SOURCES, ALC_STEREO_SOURCES, ALC_MAX_AUXILIARY_SENDS.
  • The OpenAL 1.1 Specification and Reference incorrectly states that the function alGetEnumValue() sets the error code AL_INVALID_VALUE if the specified enumeration cannot be found. In fact, this error is not set when an invalid enumeration value is specified.
  • The OpenAL Programmer's Guide - OpenAL Versions 1.0 and 1.1 incorrectly states that the functions alcSuspendContext() and alcProcessContext() produce the error ALC_INVALID_CONTEXT when called with a null or destroyed context. In fact, no error is generated in this situation.
  • The function alListener3f() does not generate an error when called with a NULL value for the AL_VELOCITY attribute. Apps should perform their own validity checking.
  • The function ALCGetProcAddress() does not return addresses for the specified context extension functions, even for valid functions. It always returns NULL.


  • On Windows XP, if you lock your computer while running the simulator, VMware will not continue updating the screen when you unlock it. You must restart your simulator if you lock your Windows XP computer.
  • There is no uninstall program for the simulator. When the simulator is no longer required, delete all simulator files.
  • Currently the PlayBook simulator defaults to 1 CPU. You can change this setting in VMware Player by editing the value for Virtual Machines > Hardware > Processors.
  • The VideoPlaybackTutorial sample used in the Play a video tutorial does not play properly on the simulator. The application opens, but closes before playing.

Known issues

This section lists known issues for the BlackBerry Native SDK for Tablet OS, version 2.1.0.


Screen events may be dispatched for a brief period after screen_stop_events() is called.

Currently, you cannot create two contexts with different attributes by calling alcCreateContext(). Errors are produced after attempting to create the second context, you can no longer call alcOpenDevice(), and sound is no longer playable in other OpenAL apps.


The documentation that is installed with the Native SDK and available from the QNX Momentics IDE is not the most recent version. The version of the documentation found at http://developer.blackberry.com/native/documentation has the most recent content.


After the installation completes on Windows, Mac, or Linux host computers, the Summary page of the BlackBerry PlayBook OS Deployment Setup Wizard provides an incorrect link as follows:
"You have successfully imported your signing keys in order to sign your application and publish it to BlackBerry World. For additional information on publishing your application visit: http://us.blackberry.com/developers/App_World/distribution.jsp".
Workaround: The correct link is: http://developer.blackberry.com/blackberryworld.

If you unzip the Native SDK installer on a Mac host computer from the command line, the permissions on the extracted files are incorrect and the installer will not launch.
Workaround: To launch the installer for Mac host computers, double-click the downloaded zip file in Finder to create the executable installer-bbndk-2.1.0. This executable can then be used to launch the installation program.


When you attempt to install the Native SDK on Mac OS X Mountain Lion, if you choose to create a shortcut during installation, the icon is not created but the application is installed correctly.


When you attempt to install the Native SDK on Mac OS X Mountain Lion, version 10.8, you will see the following error:
"installer-bbndk is damaged and can't be opened. You should eject the disk image."
As a workaround, you can change your Mac OS X security settings. To change your security settings, navigate to Settings > Security & Privacy > General on your Mac computer, and select the "Anywhere" option as the allowable location for application downloads. The Native SDK should now install as expected, even if you still see the error message.
After you've installed the Native SDK, you can change your Mac OS X security settings back to the original options.


On Linux systems, if the launch command contains "..", the Native SDK installer fails.


You might get a warning after uninstalling the Native SDK that some directories couldn't be removed.
Workaround: This warning can be ignored.


On Mac host computers, when you attempt to install the Native SDK to a location other than the default installation directory, you may need to change the permissions on that directory to create new subdirectories beneath it.


The installer provides recommendations on the space required to install the Native SDK. The number may be low and should be:

Mac OS X: 1000MB
Linux: 1800MB
Windows: 1600MB


Applications that use OpenAL also have to link against PPS. Make sure you add PPS to the list of libraries your application links against.

Certain functions such as alutCreateBufferFromFileImage(), when called with a NULL file pointer, might crash the application, instead of throwing an ALUT Error, such as ALUT_ERROR_IO_ERROR.

Apps that use the alutSleep() function app may exit before the Audio finishes. When the app is run using blackberry-deploy with -launchApp option, the app exits correctly after the Audio finishes, but when run from the GUI, the app exits before the Audio finishes playing.


Currently, you cannot create two contexts with different attributes by calling alcCreateContext(). Errors are produced after attempting to create the second context, you can no longer call alcOpenDevice(), and sound is no longer playable in other OpenAL apps.

QNX Momentics Tool Suite

When you open the help and click "Developing Apps Using the Native SDK" in the navigation pane, you get a topic not found page error.


Setting breakpoints on exceptions is not supported.


GNU Debugger (GDB) 7.2 does not support the "-target-disconnect" MI command. When you connect to the GDB server and set the executable to debug, the GDB server crashes.


When you create a project with name that begins with a numeric value, you will see the following error: "Package ID is invalid".
Workaround: Project names cannot start with a numeric value and must start with a letter from a-z or A-Z.


If you build a project in the QNX Momentics IDE and run it on a simulator, when the permission overlay is displayed, if you do not click OK within five seconds, an error "Unable to determine returned PID from launch" is displayed.


Watchpoints are only supported on the simulator and not on devices.


Do not launch an application with Application Profiler enabled in debug mode. This might hang the QNX Momentics IDE.


To use the breakpoint command "GDB Command Action", you need to switch your debug framework to CDI. Open the debug configuration dialog, at the bottom of the Main tab, click the "Select other..." link, and choose the "CDI Debugging Framework (Traditional) Launcher".


The Native SDK ships static libraries for most of the libraries of the platform, however, we recommend using shared libraries where possible to reduce your application footprint and to take advantage of bug fixes in the platform.


When you use the Memory Analysis tool, you may see an empty graph with the warning "No graphical input". This is by design for security reasons and this information is unsupported for BlackBerry PlayBook OS targets.


Standard makefile projects cannot be named "makefile".
Workaround: Use a different name for your project.



When building and running the PlayWav sample in the simulator using the Code Coverage build, the application is interrupted and closed before the actual end, interrupting the playback.


The simulator contains Airplane and Wi-Fi settings, but Wi-Fi does not work in the simulator rendering these settings unnecessary.

Last Modified: December 17, 2012