# plymouthd does not quit and prevents gui apps from rendering

**URL:** <https://forums.balena.io/t/plymouthd-does-not-quit-and-prevents-gui-apps-from-rendering/372310>\
**Category:** Product support\
**Created:** [October 18, 2024, 1:31pm UTC](https://forums.balena.io/t/plymouthd-does-not-quit-and-prevents-gui-apps-from-rendering/372310 "2024-10-18T13:31:36Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![dotdev2](https://avatars.discourse-cdn.com/v4/letter/d/ebca7d/32.png) [@dotdev2](https://forums.balena.io/u/dotdev2)\
**Post date:** [October 18, 2024, 1:31pm UTC](https://forums.balena.io/t/plymouthd-does-not-quit-and-prevents-gui-apps-from-rendering/372310/1 "2024-10-18T13:31:36Z")

</div>

Hi,

Plymouthd does not quit after boot. This prevents DRM/DRI gui applications from rendering.  
This happens on each boot. BalenaOS 6.0.24+rev1 (Intel Celeron J6412, industrial motherboard, all-in-one device with integrated touch screen).

Here is an example kmscube configuration that has this problem, but works when you manually kill plymouth on the balena host.

```auto
[Logs] [2024-10-15T08:52:36.914Z] [kmscube] failed to set mode: Permission denied

```

Dockerfile

```auto
FROM balenalib/genericx86-64-ext-debian:latest

RUN apt-get update && apt-get install -y \
    kmscube \
    libdrm2 \
    libdrm-tests \
    libgbm1 \
    libegl1-mesa \
    libgles2-mesa \
    libgl1-mesa-dri \
    libinput10 \
    udev \
    --no-install-recommends

RUN apt-get install -y \
    x11-utils \
    mesa-utils \
    && apt-get clean

WORKDIR /root

CMD ["kmscube"]

```

Docker compose:

```auto
version: "2"
services:
  kmscube:
    build: .
    restart: always
    privileged: true
    environment:
      UDEV: 1
    devices:
      - "/dev/dri:/dev/dri"
      - "/dev/input:/dev/input"

```

```auto
root@d94785e:~# lsof /dev/dri/*
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
plymouthd 1014 root 9u CHR 226,0 0t0 737 /dev/dri/card0

```

Stopping all plymouth systemd units fixes the issue and kmscube runs perfectly.

```auto
systemctl stop plymouth*

```

How can i ensure plymouth is stops as the container starts?

I tried using dbus:

```auto
CMD \
    dbus-send --system --print-reply --dest=org.freedesktop.Plymouth /org/freedesktop/Plymouth org.freedesktop.Plymouth.Quit && \
    sleep 2 && \
    kmscube

```

```auto
version: "2"
services:
  kmscube:
    build: .
    restart: always
    privileged: true
    environment:
      UDEV: 1
      DBUS_SYSTEM_BUS_ADDRESS: unix:path=/host/run/dbus/system_bus_socket
    devices:
      - "/dev/dri:/dev/dri"
      - "/dev/input:/dev/input"
      - "/run/dbus/system_bus_socket:/run/dbus/system_bus_socket"
    labels:
      io.balena.features.dbus: '1'

```

But it does not seem to work.

```auto
Error org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.Plymouth was not provided by any .service files

```

Seems hacky anyway. What’s the correct way to ensure that plymouth is quit as the application containers are started? This problem repeats on every reboot.

Thanks!

(related thread died: [How to run gui apps? DRI/DRM with kmscube "failed to set mode: Permission denied"](https://forums.balena.io/t/how-to-run-gui-apps-dri-drm-with-kmscube-failed-to-set-mode-permission-denied/372285))

---

<div class="post-metadata">

**Author:** ![klutchell](https://sea2.discourse-cdn.com/balena/user_avatar/forums.balena.io/klutchell/32/861_2.png) [@klutchell](https://forums.balena.io/u/klutchell)\
**Post date:** [October 25, 2024, 2:27pm UTC](https://forums.balena.io/t/plymouthd-does-not-quit-and-prevents-gui-apps-from-rendering/372310/2 "2024-10-25T14:27:35Z")

</div>

Hey @dotdev2 , I have a similar project that needs to stop the plymouthd service and this is what works for me:

> <https://github.com/klutchell/balena-pihole/blob/9ed7587b0154551e533e85d02287b50ac8b37ec3/pihole/s6-overlay/s6-rc.d/padd/run#L4-L12>

In fact at one point in the past this stopped working correctly so we made a change to balenaOS to restore the intended behaviour:

> <https://github.com/klutchell/balena-pihole/issues/223>
>
> Was previously working in \`2.108.18+rev1\`

I hope this helps!

---

<div class="post-metadata">

**Author:** ![talksik](https://avatars.discourse-cdn.com/v4/letter/t/d2c977/32.png) [@talksik](https://forums.balena.io/u/talksik)\
**Post date:** [March 5, 2026, 2:30am UTC](https://forums.balena.io/t/plymouthd-does-not-quit-and-prevents-gui-apps-from-rendering/372310/3 "2026-03-05T02:30:38Z")

</div>

I found a similar answer to @klutchell using the dbus command to stop plymouth: [https://docs.balena.io/learn/more/masterclasses/host-os-masterclass/](https://docs.balena.io/learn/more/masterclasses/host-os-masterclass/ "https://docs.balena.io/learn/more/masterclasses/host-os-masterclass/")

I also did this on my application container’s entry script to make sure that no other processes had control of drm device nodes:

```sh

# Kill stale processes holding DRM devices (orphaned AppRun from previous container runs)

echo “Releasing DRM devices from stale processes…”

nsenter -t 1 -a – fuser -k /dev/dri/\* 2\>/dev/null && echo “Killed stale DRM holders” || echo “No stale DRM holders found”

sleep 1

```
