Raspberry Pi graphics drivers initial configuration - OpenGL runtime support issues
I have seen a couple of occurrences from customers in our support channel that have seen issues in the initial bring-up and configuration of the Raspberry Pi with the Storyboard runtime engine.
If you are starting out on this journey then checkout the following article with details of the launcher script file and configuring which of the Storyboard runtime libraries that you are using :
As a first step it is recommended to try a setup with the software render runtime (linux-raspberry-armle-swrender-obj) for the Pi as this is much simpler and has fewer target configuration dependencies.
Pro TIP: to get additional start-up config information add '-i' to the sbengine command line or for detailed trace output increase verbosity to level 4 '-vvvv'
Once that is running then you can switch to the fully accelerated OpenGL runtime (linux-raspberry-armle-opengles_2.0-drm-obj) to spool-up the GPU core on the Pi and enable accelerated rendering and 3D support awesomeness.. this however will bring in some additional system dependencies and may fail out of the box.
Issue: I’ve been trying to run up the demos on a rpi here, initially I thought the issue was due to running the official 7” display so I changed to a monitor but I get the same issue..
The following is the trace output from the Pi console when running the launcher script:
Starting Storyboard from SCP...
ERROR [0.359520]:drm_find_device-267: drmGetDevices2 failed: No such file or directory
ERROR [0.359583]:drm_init-315: could not open drm device
ERROR [0.359604]:native_init-766: drm_init failed
ERROR [0.359627]:Can't initialize the display
Receiving Channel - Error calling setsockopt(SO_REUSEADDR), error = 22.
There are a couple of common reasons for this behaviour as from the trace the display subsystem on the Pi (aka DRM ) is not initialising so we don’t have anywhere to draw our Storyboard UI to.
KMS OpenGL Driver Configuration
First you can check if the DRM subsystem is running ( this is the Direct Rendering Manager API that Storyboard uses). If it is not running then you may get the following:
pi@raspberrypi:~ $ ls -1 /sys/class/drm
ls: cannot access '/sys/class/drm': No such file or directory
If this is the case then you may need to go into the raspi-config tool and change it from ‘Legacy’ to ‘Full KMS’ to enable the OpenGL driver support:
pi@raspberrypi:~ $ sudo raspi-config
->7 Advanced Options ->A7 GL Driver -> G1 GL (Full KMS) OpenGL desktop driver with full KMS
DRM Master and running processes
- When you run Storyboard launcher script our sbengine process will try and claim the DRM master permissions and take over the UI screen completely
- If your Pi has the graphical desktop up and running already it will conflict as there can be only one DRM master - this will be the Pi desktop service from boot so it is likely that our runtime therefore fails as there is already a master!
- If this is the case you can try stopping the Pi desktop service before running the launcher (or even within the launcher script itself before the sbengine invokation )
sudo service lightdm stop
Hopefully these suggestions do the trick and help get you up and running.