GroovyArcade/Retroarch: "no Qt platform plugin"

Hi there,

I asked about this on the GroovyMAME forums and they recommended I ask for help here.

The short description is, Retroarch is core dumping with a Qt error when I try to launch it from GroovyArcade, unless I set desktop_menu_enable = "false", but it runs fine if I launch it from X. So it looks to me like it’s trying to load a Qt plugin but it won’t work when I don’t have X loaded and am just rendering to the framebuffer.

It seems like I shouldn’t need Qt at all as I’m using rgui.

More detailed explanation (copied from my post at arcadecontrols.com):

I’m using GroovyArcade and using Pegasus as my frontend. I used to be able to launch Retroarch games but at some point an update appears to have broken it. When I launch a game that uses retroarch, the screen very briefly flashes to white text on a black background (too quickly for me to read the text but it looks like a warning about setting a powersave mode and I think it’s unrelated to the issue launching Retroarch) and then reloads the Pegasus UI.

It appears that Retroarch is core dumping at launch. I looked over pegasus.log and I think this is the relevant section:

Executing command: [`/opt/galauncher/galauncher.sh`,`retroarch`,`megadrive`,`/home/arcade/shared/roms/megadrive/QuackShot Starring Donald Duck (World) (Rev A) (Alt).md`]
Working directory: `/opt/galauncher`
Process 0 started
----------------------------------------
Prelaunching Retroarch
ac_compute_device_uuid's output is based on invalid pci bus info.
qt.qpa.xcb: could not connect to display 
qt.qpa.plugin: From 6.5.0, xcb-cursor0 or libxcb-cursor0 is needed to load the Qt xcb platform plugin.
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: xcb, minimal, wayland, eglfs, linuxfb, minimalegl, wayland-egl, offscreen, vkkhrdisplay, vnc.

/opt/galauncher/emulators/retroarch.sh: line 7:   902 Aborted                    (core dumped) retroarch --verbose --log-file "$LOG_DIR"/retroarch.log -L "$core_file" "$rom" ${@:3} < /dev/null

I get the same error if I exit out of Pegasus and gasetup and run retroarch from the command line (either just running plain retroarch or using galauncher.sh).

Retroarch runs without issue if I launch it from the desktop (again, either using the retroarch command or galauncher.sh).

As far as I’ve been able to tell, what’s happening is that Retroarch is using a Qt plugin called xcb to load its GUI (even though I’ve got it set to use rgui, which I don’t think should require Qt at all?) and xcb requires X. That’s why it works if I launch it from the desktop. But if I launch from Pegasus or the command line, it fails because X isn’t running and it’s supposed to be rendering to the framebuffer.

Per the Qt for Embedded Linux docs, I’ve tried setting the QT_QPA_PLATFORM environment variable to the following values, with these results when I run retroarch:

minimal Segfaults at launch; no other error message

eglfs Screen goes black (so it might be rendering somewhere but not to my primary display); I can SSH in, kill retroarch, and it’ll drop back to the command line.

linuxfb Screen briefly flashes black, then freezes on the command line; it seems like something is running but whatever it is won’t update the screen. If I SSH in, ps shows there’s no running retroarch process; I haven’t worked out how (or if) I can get back to an interactive shell without a reboot.

minimalegl Exits with “Could not initialize egl display” error

offscreen Segfaults at launch; no other error message

I haven’t tried the wayland, wayland-egl, vkkhrdisplay, or vnc plugins, because I’m not using Wayland, Vulkan, or VNC.

Per a recommendation by Substring on the arcadecontrols.com forum, Retroarch will launch from GroovyArcade if I set desktop_menu_enable = "false" in retroarch.cfg, but this isn’t an ideal solution as I’d like to be able to use the menu to remap buttons, manage savestates, etc.

Has anybody else seen anything like this, or have any ideas? Thanks in advance.

Yes, it’s trying to initialize some Qt stuff that’s used for the WIMP/desktop menu. Here’s the associated issue on github: https://github.com/libretro/retroarch/issues/17848

So, are you actually using the Qt desktop menu (accessed by pressing F5) to do stuff?

Oh cool, it looks like it’s only 1.21.0? In that case I’ll try downgrading to 1.20 and blocking updates.

I only use rgui (this device is hooked up to an old CRT TV, so it doesn’t do resolutions higher than 640x480). I don’t think rgui should require Qt, should it?

This is the Qt desktop menu:

If you’re not using it, you can safely put desktop_menu_enable = "false" into your config with no effect on the RGUI (or other “big picture” style menus). No need to stick with an old version.

This is an unintended behavior that we’ll hopefully have cleared up soon, too, so no need to block updates.

Oh, okay. After I set desktop_menu_enable = "false" I found that I couldn’t bring the menu up anymore with the Tab key (in fact the keyboard didn’t seem to be working in Retroarch at all, though it worked fine in the Pegasus launcher) but it looks like that was an unrelated issue that coincidentally happened right after I changed the config file so I assumed that was what caused it.

Not sure why it happened but it’s not happening anymore, so I guess I’m all good now. Thanks!

1 Like