Home
Developer Resources
Technical Articles

QNX Technical Articles

QNX® Advanced Virtualization Frameworks 2.0 General Availability 2: Release Notes

Date of this edition: August 4, 2022

The QNX Advanced Virtualization Frameworks enable you to build systems that abstract and share resources such as graphics, audio, and input devices between guests and the hypervisor host. Although this release focuses on Cockpit Domain Controllers (CDCs) with multiple displays involving QNX mission-critical software for instrument cluster and Android for infotainment, the frameworks apply to other markets such as medical and industrial control.

Target hardware

The binaries in the development packages are built for the AArch64 architecture and can run on AArch64 platforms with the appropriate SOC. This release was tested on the following hardware boards:

  • Qualcomm SA8155P Automotive Development Platform

Development hosts

You must install this software onto a development host that contains the following QNX software:

  • QNX Software Development Platform (SDP) 7.1 with a Conservative installation policy, or QNX OS for Safety (QOS) 2.2.1 with a Conservative installation policy
  • QNX Hypervisor 2.2 or QNX Hypervisor for Safety 2.2
  • QNX SDP 7.1 Screen Update (BuildID 110)

The following host OSs are supported:

  • Microsoft Windows 10 Pro 64-bit or Windows 8.1 Pro 64-bit
  • macOS version 10.14 or 10.15
  • Linux: Red Hat Enterprise Linux 7 64-bit, Ubuntu Desktop 20.04, or Ubuntu Desktop 18.04 LTS 64-bit, on x86_64 processors

    Note: QNX SDP isn't supported on Linux on ARM processors.

Software maturity

Some virtualization frameworks provided in this release are considered commercial, meaning they have undergone full testing and are stable overall. Others are considered experimental, meaning they haven't been fully tested or are less stable. The maturity of each framework is given in the QNX Product Portfolio Guide, version 2.8. To view this guide, go to the document archive at https://www.qnx.com/legal/licensing/document_archive/current_matrix.pdf and select the QNX Product Portfolio Guide link in the table row for Software Development Platform version 7.1.

Many frameworks will change over time as specifications or the guest environment changes. Such frameworks almost always require customization for any production system. Before using an experimental framework in your production system, contact your QNX Sales representative for more information. Both kinds of frameworks (experimental and commercial) may have known issues, which are documented below.

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.

Contents

What's in this release?

This General Availability 2 (GA2) release provides QNX Software Center packages that contain the QNX Advanced Virtualization Frameworks (QAVF) binaries. To simplify installation, we provide one group package (com.qnx.qnx710.target.qavf.group) that pulls in all packages with components from the previous release (GA1) and packages with new components from this release (GA2). For information on the packages in scope for GA1, see the GA1 release notes. Instructions on installing the prerequisite software and QAVF are given below.

The component packages and their corresponding releases are:

Name Package Build ID Release
QNX Advanced Virtualization Frameworks 2.0 com.qnx.qnx710.target.qavf.group 75 GA2
QNX Advanced Virtualization Frameworks 2.0 - Documentation com.qnx.qnx710.target.qavf.docs.plugins 6 GA2
QNX Advanced Virtualization Frameworks 2.0 - Shared Audio com.qnx.qnx710.target.qavf.shared_audio 20 GA1
QNX Advanced Virtualization Frameworks 2.0 - Shared Camera com.qnx.qnx710.target.qavf.shared_camera 75 GA2
QNX Advanced Virtualization Frameworks 2.0 - Shared Filesystem com.qnx.qnx710.target.qavf.shared_filesystem 75 GA2
QNX Advanced Virtualization Frameworks 2.0 - Shared GPU and Display com.qnx.qnx710.target.qavf.shared_gpu_display 20 GA1
QNX Advanced Virtualization Frameworks 2.0 - Shared Input com.qnx.qnx710.target.qavf.shared_input 20 GA1
QNX Advanced Virtualization Frameworks 2.0 - Shared Sensor com.qnx.qnx710.target.qavf.shared_sensor 75 GA2
QNX Advanced Virtualization Frameworks 2.0 - Shared USB com.qnx.qnx710.target.qavf.shared_usb 75 GA2
QNX Advanced Virtualization Frameworks 2.0 - Shared VPU com.qnx.qnx710.target.qavf.shared_vpu 75 GA2
QNX Advanced Virtualization Frameworks 2.0 - System Wide Audio Management com.qnx.qnx710.target.qavf.audio_management 20 GA1
QNX Advanced Virtualization Frameworks 2.0 - Virtual Socket com.qnx.qnx710.target.qavf.virtual_socket 20 GA1
QNX SDP 7.1 grpc com.qnx.qnx710.osr.grpc 12 GA1

To see the contents of a package, right-click it in the QNX Software Center, choose Properties, then click Package Contents.

Installing QAVF

QAVF must be installed, using the QNX Software Center, as an addon to a baseline OS installation that includes a QNX hypervisor product and other required product updates.

To install the prerequisite QNX software:

  • If you're developing a product that does not need to be safety-certified, follow the installation instructions in the QNX Hypervisor 2.2 Release Notes. You will use QNX SDP 7.1 as the baseline OS.

    Note: When you install a new baseline, the QNX Software Center automatically enables the experimental packages setting. You should leave this setting enabled. For more information about installing the baseline product, see the QNX Software Center User's Guide.

  • If you're developing a product that needs to be safety-certified, follow the installation instructions in the QNX Hypervisor for Safety 2.2 Release Notes. You will use QOS 2.2.1 as the baseline OS.

    The same need to leave the experimental packages settings enabled, as explained above for the non-safety case, applies in the safety case also.

    Note: The GA version of Multimedia for QNX SDP 7.1 is not compatible with QOS 2.2.1. Don't try to install the multimedia software into this baseline product. Instead, you must install the multimedia update mentioned below.

  • The following updates must then be installed before installing QAVF:
    • QNX SDP 7.1 Screen Update (BuildID 110): If you previously installed this component with QAVF 2.0 GA1, you can skip this step. Otherwise, follow the installation instructions in the Screen (BuildID 110) Release Notes.
    • QNX SDP 7.1 Sensor Framework Update (BuildID 441): Follow the installation instructions in the Sensor Framework Update (BuildID 441) Release Notes.
    • QNX SDP 7.1 Multimedia Update for virtio-video (BuildID 479): Follow the installation instructions in the Multimedia Update (BuildID 479) Release Notes.

You can now install QAVF. To do so:

  1. In the QNX Software Center, from the Available tab if you're doing a fresh install of QAVF, or from the Update tab if you're updating from QAVF GA1 to GA2, expand the QNX Advanced Virtualization Frameworks item, then the Products item, and then choose the QNX Advanced Virtualization Frameworks 2.0 group package.

    Be sure to select BuildID 75, as this is the correct build number for GA2. The build number (or ID) is shown in brackets on the right side of the package listing.

  2. Click the Install button (on the right just below the package list area) and follow the QNX Software Center prompts to install QAVF.

    Installing this group package pulls in all other QAVF packages.

QAVF Demonstrator

BlackBerry QNX develops a software stack called the Demonstrator, which provides a working example of the virtualization frameworks. The Demonstrator is a reference image consisting of an Android guest and the QNX Hypervisor host. The guest uses Google Trout configuration and contains several applications that use graphics, audio sharing, touchscreen, and other capabilities of the host.

You can download the reference image onto your development host, then transfer the image onto a target board and see the demonstration system run. This allows you to interact with the applications and examine their configurations. Then, you can modify these configurations to change the behavior and support new features for your own guest and host applications.

Access to the Demonstrator is available to all virtualization frameworks developers but is controlled by myQNX permissions and is not automatically enabled. The Demonstrator software, release notes, and sample videos are available from the project site on the QNX community server (Foundry): https://community.qnx.com/sf/projects/early_access_qnx_advanced_virtua/.

If you do not have access to the project site, talk to your QNX Sales representative to have your myQNX account enabled for access.

The Demonstrator software will vary based on hardware support, Android OS version, VIRTIO version, and feature support. It is designed to be a constantly changing testing environment. All instructions on using the Demonstrator (installing, running, configuring, etc.) are located on the Foundry site.


Note: You don't need the Demonstrator to use the QNX Advanced Virtualization Frameworks product. The Demonstrator is a helpful resource for developing and testing applications, but you can purchase the various frameworks independently and use them to develop your own system without reusing anything from the Demonstrator.

Fixed issues

This release fixes the following known issues from the GA1 release:

  • In the virtio-snd reference in the QAVF User's Guide, the untrue statement that you must specify at least one and at most two streams with the stream option has been removed. (Ref# J2918390)
  • The virtio-gpu vdev reference in the QAVF User's Guide now has proper configuration examples, with all required options. You can use the configurations shown there, and the guest's display will work.

    This section now properly explains which options are required when using the GFXStream library (libgfxstream.so) in Address Space Graphics (ASG) mode or in pipe mode. Also, the descriptions of the rendering options vram_loc and vram_size are now accurate. Finally, the required options when using the VirGL library (libvirglrenderer.so) are also accurately described.

    For more information about these options, see the User's Guide. (Ref# J2918305, J2894626)

Known issues

This release contains the known issues listed below. These issues were discovered when testing the software on the Demonstrator target. Many of these issues depend on the behavior of specific hardware and Android guest configurations and, thus, may or may not affect your own system development. The QNX team has expertise to help guide you on Android guest integration.

  • The QAVF User's Guide has comments about the maturity levels of the various frameworks. Some of these comments may not be accurate based on what was released for GA2.

    The maturity level is a measure of the dynamic nature of the framework. A mature framework is not expected to have any further changes in specification or in guest support. Such a framework may be used in production systems with confidence. An experimental framework is one where the specification, the guest, and the equipment used to test the framework are changing. A framework marked as experimental must be used with caution and used in a production system only after discussion with the QNX Sales team. When in doubt, contact BlackBerry QNX for information.

    (Ref# J2921099)

  • In the QAVF User's Guide, the code sample in Adapting TCP/IP socket code to use virtual sockets in the Virtual Socket chapter is wrong and causes compilation errors. When writing virtual socket code, your source file(s) must have the following include line:
    #include <vm_sockets.h>
    
    The filename is vm_sockets.h, not vm_socket.h.

    The vsock_sendbinaryfile() function in the code sample is wrong where it initializes and uses the vsock_fd variable. It should instead be:

    int vsock_fd = socket( AF_VSOCK, SOCK_STREAM, 0 );
    if ( vsock_fd == -1 )
    

    (Ref# J2920925)

  • Files with low resolution (e.g., 640x360) currently don't play on Qualcomm. (Ref# J2920117)
  • Android guests sometime have connection issues with ADB (Android Debug Bridge). There are two conditions that cause this:
    1. The guest is assigned an IP address from the hypervisor host's network DHCP server, not from its local DHCP server, depending on the timing of the IP address assignment. In this case, any ADB connection attempt made from the development host to the guest using the address of the hypervisor host's network interface (e.g., 10.122.30.120) fails. The ADB connection to the guest must be made using the address specifically assigned to guest's network interface; see below for details.
    2. The ADB connection can be lost when multiple Qualcomm boards running the QAVF 2.0 Demonstrator are on the same host network.

    These conditions usually occur because the guest network interfaces are on the host network, through a bridge. Or, the guest network interfaces have the same MAC address in the qvm configuration.

    Workarounds: For #1, when the guest's IP address is not 192.168.101.2 (which is what should be assigned from the DHCP server on the hypervisor host), do not use the host-network IP address assigned to the hypervisor host to connect to the guest. Instead, use the host-network IP address that was assigned to the guest (e.g., 10.122.30.121); this is shown in Settings > Network & internet > VirtWifi > IP address. For #2, do not use multiple Qualcomm boards running the Demonstrator on the same host network.

    (Ref# J2919915)

  • When some USB devices are assigned to the Android guest, the guest may block on boot animation. (Ref# J2917385)

    Workaround: Remove the USB devices. This will unblock the guest and allow it to finish booting successfully.

  • After rebooting the target board, the Google Maps map area occasionally becomes all black all of a sudden. This is an issue with the version of the Android automotive app launcher in 12.1 AOSP. (Ref# J2914641)

    Workaround: Go to other pages (i.e, other apps), then come back to Google Maps. The map will display properly.

  • Doing a soft reboot of the hypervisor host or the Android guest, through the UI or through the reboot command, results in stability issues. (Ref# J2910964)

    Workaround: Do a hard reboot of the target instead.

  • The YouTube app continuously uses more and more memory when autoplay is enabled, and doesn't release the memory it uses when you exit it. If you start video playback with this app and don't manually skip forward or backward, allowing autoplay to keep playing new videos, eventually the app stops playback. (Ref# J2910698)
  • The Cluster View button in the action bar and the view button in the Control Cluster app sometimes stop working and you can't switch views anymore. In this case, the Set Speed button also stops working. (Ref# J2910521)
  • Video playback does not always work on YouTube. Sometimes, ads will play before the video, but the video will not load or play. The loading symbol (spinning circle) constantly spins. Other times, the video will play but it is choppy. (Ref# J2910428)
  • On Qualcomm, if you play music in the Stylish Music Player, sometimes the audio stops working in both the guest and the host due to a three-hour playback limitation in the Qualcomm BSP. This can happen sooner than three hours after you start playing music. (Ref# J2905286)

    Workaround: Contact Qualcomm to obtain audio firmware without this limitation.

  • When you connect the target board to a router that assigns an IP address of the form 10.0.X.X to the hypervisor host, Google Maps doesn't start properly in the Android guest. The default map isn't shown initially and even when the gear is shifted into Drive (D), either the expected local map isn't shown or it's shown but the app displays the message Searching for GPS and the map isn't functional. This is a Google issue; they are probably blocking access to map data based on IP address. (Ref# J2904068)
  • The static IP address and the Static IP networking setting isn't retained when the system is rebooted. (Ref# J2903251) -->
  • If you access the Android search app, the virtual keyboard hides the Android Apps button and you can't easily go back to the main display. This is an issue with the Google code. (Ref# J2898675)

    Workaround: Click the Enter button on the virtual keyboard.

  • On Qualcomm, the audio service (io-audio) sometimes doesn't start successfully and instead crashes after a soft or hard reboot. (Ref# J2873904)

    Workaround: Before rebooting, you must explicitly terminate the audio service as follows:

    slay -f io-audio

Technical support

To obtain technical support for any QNX product, visit the Support area on our website (https://blackberry.qnx.com/en/support). You'll find a wide range of support options, including community forums.