Next steps

You can configure the following components to suit your needs, but you aren't limited to these options:

Keyboard layout

By default, your system recognizes the US 101-key keyboard layout. To change this, use the following command:

root@qnxpi:~# vim /system/lib/graphics/rpi4-drm/graphics-rpi4.conf

Under the begin globals heading, locate the following line:

keymap = /system/share/keyboard/en_US_101

Update en_US_101 to the keyboard layout for your locale. Use the ISO 2-letter language identifier to identify your locale, where the first two letters represent your language code (https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes), and the next two represent your country code (https://en.wikipedia.org/wiki/ISO_3166-2).

The following list includes the supported keyboard layouts:

  • cs_CZ_102
  • da_DK_102
  • de_CH_102
  • de_DE_102
  • en_CA_101
  • en_CA_101_dvorak
  • en_GB_102
  • en_US_101
  • en_US_101_dvorak
  • es_ES_102
  • fr_BE_102
  • fr_CA_102
  • fr_CH_102
  • fr_FR_102
  • hr_HR_102
  • it_IT_102
  • ja_JP_106
  • nl_NL_102
  • no_NO_102
  • pl_PL_102
  • pt_PT_102
  • se_SE_102
  • sk_SK_102

To apply the changes, reboot your Pi.

Note:

Some keys may not produce output when clicked. Only ASCII characters in the range 32-127 are supported.

Display resolution

Your system won't detect and set the display resolution automatically. By default, Screen uses the configuration file at /system/lib/graphics/rpi4-drm/graphics-rpi4.conf and requires a configuration file as the first argument to run the Screen binary. You can run pidin ar to check if the name of your Screen configuration file matches the default one. For more information on the Screen configuration file, refer to "Configuring Screen" in the Screen Graphics Subsystem Developer's Guide.

To update the display resolution of your image, edit the configuration file using the vim command (note: must be done as the root user, su -). Under the begin winmgr section, find begin display 1, then the video-mode option. By default, the resolution is 1080p (1920x1080):

...
  begin display 1
    video-mode = 1920 x 1080 @ 60
    stack-size = 65536  # in units of bytes
    force-composition = true
    cursor = on
  end display
...

The video-mode option determines the image's resolution, which you can change. After saving your changes, reboot your system to apply them.

Run drm-probe-displays to view a list of resolutions that your display supports.

Note:

If you create a new user on the QNX target and you want to use any graphical output, you must add that user to the user group screen by editing /etc/group.

Camera

When connecting a USB camera to your Raspberry Pi, use one of the blue USB 3.0 ports to avoid receiving an error message.

Configuring your camera

To select a new default system camera, enter the following command:

root@qnxpi:~# vim /system/etc/post_startup.sh

Find the section that begins with the line echo '---> Starting Sensor...'. Note that the simulator camera is configured to launch by default. To reconfigure your Raspberry Pi to use your desired camera, comment out the command for the simulator camera, and uncomment the command that corresponds with your camera. Save your changes and restart your Raspberry Pi. Then, enter camera_example3_viewfinder to view the camera frames on screen.

Alternatively, you can enter a sequence of commands to restart the sensor service. For example, to configure your Raspberry Pi to use a USB camera, enter:

root@qnxpi:~# slay sensor
root@qnxpi:~# sensor -U 521:521,1001 -r /system/share/sensor -c /system/etc/system/config/usb_camera.conf
root@qnxpi:~# camera_example3_viewfinder

You can also create a configuration file under /system/etc/system/config that can identify multiple cameras at once. For example, to configure the simulator and USB cameras, add the following to your configuration file:

begin SENSOR_UNIT_1
    type = simulator_camera
    name = front
    position = 0, 0, 0
    direction = 0, 0, 0
    default_video_resolution = 1280, 720
    default_video_format = nv12
    num_user_buffers = 4
end SENSOR_UNIT_1

begin SENSOR_UNIT_2
    type = usb_camera
    name = front-camera
    position = 0, 0, 0
    direction = 0, 0, 0
    default_video_framerate = 90
    address = /dev/usb/io-usb-otg, -1, -1, -1, -1
    num_user_buffers = 12
    user_queue_depth = 4
end SENSOR_UNIT_2

Then, enter camera_example6_egl_viewfinder -u 1 to display the simulator camera or camera_example6_egl_viewfinder -u 2 to display the USB camera.

For more information, refer to the "Sensor configuration file" topic in the QNX SDP 7.1 documentation. Note that because this is 7.1 documentation, certain terms may be out of date in relation to SDP 8.0.

Touchscreen

If you connect a touchscreen using a micro HDMI to HDMI and USB cable to your Raspberry Pi, the touch function should work by default.

If the driver fails to detect the touchscreen, you can manually set up the mtouch.conf configuration file:

  1. Ensure that io-hid -d usb is running. To do so, run pidin ar to view the active processes.
  2. Run hidview to get the list of USB devices. Find your touchscreen and record its Vendor and Product ID.
  3. Set up the mtouch configuration file. For more information, refer to the "Touch configuration file" section in the QNX SDP 8.0 Screen Graphics Subsystem Developer's Guide.

Adding binaries

The quick start image comes with most of the SDP's common binaries, but some aren't included. To add more binaries, copy them from your host machine with SCP:

  • As qnxuser, enter:

    • On Linux:
    user@host:~$ scp <binary> qnxuser@<target-ip>:~/bin
    • On Windows:
    user@host:~$ scp -o "MACs=hmac-sha2-256" testbinary qnxuser@qnxpi:~/bin
  • As root, move the binary to /system/bin/. Then, any user should have access to that binary.

The Network File System (NFS) protocol can also enable file transfers. For more information, refer to the QNX SDP 8.0 documentation on the NFS filesystem.

Customizing the Welcome screen

If you are using a display, you saw the Welcome splash screen when your target booted up. You can customize the applications and icons shown on the screen, which may be helpful if you want a quick way to launch an application with the mouse or touchscreen.

The applications shown on the Welcome screeen are defined in the .desktop configuration files in /system/etc/desktop_files and are owned by the root user. You can use vim as the root user to edit them and customize how they look and what they launch. Note that applications will always be forced fullscreen when fullscreen-winmgr is active.

Example desktop file:

[Desktop Entry]
Name=Terminal
Exec=/system/bin/st
Icon=/system/etc/images/power.png
Categories=Utilities

This example file uses the "power.png" icon stored in /system/etc/images and will launch the terminal utility with default parameters.

You can customize left.desktop, middle.desktop, and right.desktop to your liking. At this time only these three desktop files, with these exact names, are supported.

Lastly, you can launch a copy of the splash screen using your own desktop files by passing a custom directory as an argument to the demolauncher application:

root@qnxpi:~# demolauncher -a /data/home/qnxuser/my_desktop_files

Thermal throttling

If your Raspberry Pi experiences thermal throttling, it may run into performance issues. In this case, you should add heat sinks or fans to your Raspberry Pi.

To check your Raspberry Pi's thermal temperature, run the following command:

qnxuser@qnxpi:~$ cat /dev/thermal

Using cURL

The quick start target image automatically includes the cacert.pem bundle, which is located at /etc/ssl/certs/cacert.pem.

To run cURL, enter:

qnxuser@qnxpi:~$ curl https://www.example.com

If your certification bundle is nearing its expiration, or you wish to update to a newer cert bundle, you can run the following command (as root):

root@qnxpi:~# updatecacert

This command fetches the latest certification bundle from https://curl.se/docs/caextract.html.

Configuring your network

This section describes how to configure you network settings, including:

Setting a static IP address

To set a static IP address for ethernet interfaces only, edit /boot/qnx_config.txt and add the following line to the file:

IP=<static IP>

Then, restart your system for the change to take effect.

The value of the IP variable is passed to ifconfig unmodified, thus it's possible to add additional arguments. For example, if you also want to set the netmask, you could set the IP variable as:

IP="<static IP> netmask <IP mask>"
Note:

You must add quotes when passing multiple arguments to the IP variable, like the example above.

Setting a default route

To set a default route, use the route utility. For example, if you want the default route to be <GW_IP>, then you'd enter the following command as root:

root@qnxpi:~# route add default <GW_IP>

However, this only sets the route until the next system reset. To set the default route permanently, add the above command to the /system/etc/post_startup.sh script. You can use vi or sed to modify the IP address. The sed command looks like the following:

root@qnxpi:~# cd /system/etc && sed -i '/ip6addrctl/a route add default <GW_IP>' ./post_startup.sh

If you use vi, place the route command after the ip6addctrl line.

Note:

If you want to switch back to using DHCP, you will need to remove the command from /system/etc/post_startup.sh.

Configuring DNS lookups

To configure DNS lookups, create a resolv.conf file in /data/var/etc. For details on this file, visit the /etc/resolv.conf page in the QNX SDP 8.0 documentation.

By default, the QSTI contains a symlink from /data/var/etc/resolv.conf to /data/var/dhcpd/resolv.conf that you'll need to remove first. If the file doesn't exist, it just means the DHCP daemon hasn't run yet. Either way, replace or create a symlink with a real resolv.conf:

root@qnxpi:~# rm /data/var/etc/resolv.conf
root@qnxpi:~# cat > /data/var/etc/resolv.conf << EOF
> domain myexample.com
> nameserver 8.8.8.8
> EOF

If you want to switch back to using DHCP to acquire an IP address, you must recreate the symlink:

root@qnxpi:~# rm /data/var/etc/resolv.conf
root@qnxpi:~# ln -s /data/var/dhcpcd/resolv.conf /data/var/etc
Page updated: