Read the statement by Michael Teeuw here.
Version 2.34.0 - Missing X Server or $DISPLAY (Docker version of MMOS)
-
Thanks a lot for having a look at my issue!
As mentioned in the first post, I downloaded the most recent Docker image of MagicMirrorOS. - no desktop, lite version. Wrote the image with Balena Etcher and let the Rpi do it’s magic after booting until “factory” MagicMirror was shown. SSHed into the Rpi and ran
sudo raspi-configto adjust locales and WiFi.
I installed the desired Modules, modified the config.js - and now the Mirror works only at every third or fourth boot. (Sometimes real power cycle, sometimessudo shutdown -r now- sometimes first works, sometimes second)Currently it’sworking, only one Module has issues. Both containers recreated and restarted, output of
docker logs labwc00:00:00.000 [INFO] [seatd/seat.c:48] Created VT-bound seat seat0 00:00:00.000 [INFO] [seatd/seatd.c:194] seatd started failed to connect to display 00:00:01.036 [INFO] [seatd/server.c:145] New client connected (pid: 1, uid: 1000, gid: 1000) 00:00:01.036 [INFO] [seatd/seat.c:239] Added client 1 to seat0 00:00:01.037 [INFO] [seatd/seat.c:563] Opened client 1 on seat0 failed to connect to display failed to connect to display failed to connect to display failed to connect to display failed to connect to display failed to connect to display HDMI-A-1 "Lenovo Group Limited T2224pD V902B58B (HDMI-A-1)" Make: Lenovo Group Limited Model: T2224pD Serial: V902B58B Physical size: 480x270 mm Enabled: yes Modes: 1920x1080 px, 60.000000 Hz (preferred, current) 1920x1080 px, 60.000000 Hz 1920x1080 px, 59.939999 Hz 1920x1080 px, 50.000000 Hz 1680x1050 px, 59.882999 Hz 1600x900 px, 75.000000 Hz 1600x900 px, 60.000000 Hz 1280x1024 px, 75.025002 Hz 1280x1024 px, 70.000999 Hz 1280x1024 px, 60.020000 Hz 1440x900 px, 59.901001 Hz 1366x768 px, 59.790001 Hz 1152x864 px, 75.000000 Hz 1280x720 px, 60.000000 Hz 1280x720 px, 59.939999 Hz 1280x720 px, 50.000000 Hz 1024x768 px, 75.028999 Hz 1024x768 px, 70.069000 Hz 1024x768 px, 60.004002 Hz 832x624 px, 74.551003 Hz 800x600 px, 75.000000 Hz 800x600 px, 72.188004 Hz 800x600 px, 60.317001 Hz 800x600 px, 56.250000 Hz 720x576 px, 50.000000 Hz 720x576 px, 50.000000 Hz 720x480 px, 60.000000 Hz 720x480 px, 60.000000 Hz 720x480 px, 59.939999 Hz 720x480 px, 59.939999 Hz 640x480 px, 75.000000 Hz 640x480 px, 72.808998 Hz 640x480 px, 60.000000 Hz 640x480 px, 59.939999 Hz 640x480 px, 59.939999 Hz 720x400 px, 70.082001 Hz Position: 0,0 Transform: normal Scale: 1.000000 Adaptive Sync: disabledOutput of
docker compose configname: magicmirror services: labwc: container_name: labwc environment: LAB_WC_HIDE_CURSOR: "true" RANDR_PARAMS: "" RANDR_POLL: 1m XDG_RUNTIME_DIR: /run/user/1000 image: karsten13/labwc:latest networks: default: null privileged: true restart: always volumes: - type: bind source: /run/user/1000 target: /run/user/1000 bind: {} - type: bind source: /run/udev target: /run/udev bind: {} magicmirror: container_name: mm environment: DBUS_SESSION_BUS_ADDRESS: unix:path=/run/user/1000/bus DBUS_SYSTEM_BUS_ADDRESS: unix:path=/run/user/1000/bus DISPLAY: unix:0.0 ELECTRON_ENABLE_GPU: "0" MM_CUSTOMCSS_FILE: css/custom.css MM_MODULES_DIR: modules MM_OVERRIDE_DEFAULT_MODULES: "true" MM_SCENARIO: electron MM_SHOW_CURSOR: "false" WAYLAND_DISPLAY: wayland-0 XDG_RUNTIME_DIR: /run/user/1000 image: karsten13/magicmirror:latest network_mode: host privileged: true restart: always shm_size: "268435456" volumes: - type: bind source: /tmp/.X11-unix target: /tmp/.X11-unix bind: {} - type: bind source: /home/pi/.Xauthority target: /home/node/.Xauthority bind: {} - type: bind source: /run/user/1000 target: /run/user/1000 bind: {} - type: bind source: /opt/mm/mounts/config target: /opt/magic_mirror/config bind: {} - type: bind source: /opt/mm/mounts/modules target: /opt/magic_mirror/modules bind: {} - type: bind source: /opt/mm/mounts/css/custom.css target: /opt/magic_mirror/css/custom.css bind: {} post_start: - command: - /bin/sh - -c - | [ "init" = "init" ] || exit 0 chown -R 1000:1000 config modules css/custom.css chmod -R 777 config modules css/custom.css user: root environment: MM_CHMOD: null MM_GID: null MM_INIT: null MM_UID: null networks: default: name: magicmirror_defaultHave a nice weekend!
-
not sure I really fixed it but you can try
cd /opt/mm git pull ./install/install.sh electronLet me know if there are still problems after reboot or not.
-
Thanks @karsten13!
git pullneeded a commit to work. Done. Installing Electron revealed no change to apply.At least I seem to be one step further: Recreating the images as mentioned in a post above repeatedly resolved the "missing X Server"message each time and started MagicMirror…
As I am quite done with all changes and adaptions, I am fine to keep the workaround with recreating the image(s), once the mirror needs a restart.
-
Let me know if you get another black screen without mm start after reboot (I want to know if it is fixed or not …)
Can you please show me again the output of
docker compose config(so I can check if you have the latest changes)? -
@karsten13 New issue. I did the
cd /opt/mm git pull ./install/install.sh electronagain and now I’m facing:
pi@magicmirrorMB:/opt/mm $ ./install/install.sh electron --> Check docker installation Docker is already installed: Docker version 29.1.3, build f52814d Docker Compose version v5.0.1 Found no xserver or wayland so using own container --> Pulling container images and starting magicmirror Going to remove mm [+] remove 1/1 ✔ Container mm Removed 0.1s WARN[0000] No services to build [+] up 2/2 ✘ Container labwc Error dependency labwc failed to start 1.3s ✔ Container mm Created 0.6s dependency failed to start: container labwc has no healthcheck configuredDon´t know what went wrong.
Output of
docker compose configis:pi@magicmirrorMB:/opt/mm/run $ docker compose config name: magicmirror services: labwc: container_name: labwc environment: LAB_WC_HIDE_CURSOR: "true" RANDR_PARAMS: "" RANDR_POLL: 1m XDG_RUNTIME_DIR: /tmp/labwc image: karsten13/labwc:latest networks: default: null privileged: true restart: always volumes: - type: bind source: /tmp/labwc target: /tmp/labwc bind: {} - type: bind source: /run/udev target: /run/udev bind: {} magicmirror: container_name: mm depends_on: labwc: condition: service_healthy restart: true required: true environment: DISPLAY: unix:0.0 ELECTRON_ENABLE_GPU: "0" MM_CUSTOMCSS_FILE: css/custom.css MM_MODULES_DIR: modules MM_OVERRIDE_DEFAULT_MODULES: "true" MM_SCENARIO: electron MM_SHOW_CURSOR: "false" WAYLAND_DISPLAY: wayland-0 XDG_RUNTIME_DIR: /tmp/labwc image: karsten13/magicmirror:latest network_mode: host privileged: true restart: always shm_size: "268435456" volumes: - type: bind source: /tmp/.X11-unix target: /tmp/.X11-unix bind: {} - type: bind source: /home/pi/.Xauthority target: /home/node/.Xauthority bind: {} - type: bind source: /tmp/labwc target: /tmp/labwc bind: {} - type: bind source: /opt/mm/mounts/config target: /opt/magic_mirror/config bind: {} - type: bind source: /opt/mm/mounts/modules target: /opt/magic_mirror/modules bind: {} - type: bind source: /opt/mm/mounts/css/custom.css target: /opt/magic_mirror/css/custom.css bind: {} post_start: - command: - /bin/sh - -c - | if [ "init" = "init" ]; then # update volume permissions chown -R 1000:1000 config modules css/custom.css chmod -R 777 config modules css/custom.css fi if command -v node_modules/.bin/electron > /dev/null; then # if electron is installed then start dbus-daemon to avoid errors in the logs dbus-daemon --system || true fi user: root networks: default: name: magicmirror_defaultAny way to get back to the easy issue?
-
looks like you still have an old labwc image, try from
/opt/mm/runfolder:docker compose pull docker compose up -d -
@karsten13
Back to function! Several restarts without blank screen!Output of
docker compose config- in case it is useful…name: magicmirror services: labwc: container_name: labwc environment: LAB_WC_HIDE_CURSOR: "true" RANDR_PARAMS: "" RANDR_POLL: 1m XDG_RUNTIME_DIR: /tmp/labwc image: karsten13/labwc:latest networks: default: null privileged: true restart: always volumes: - type: bind source: /tmp/labwc target: /tmp/labwc bind: {} - type: bind source: /run/udev target: /run/udev bind: {} magicmirror: container_name: mm depends_on: labwc: condition: service_healthy restart: true required: true environment: DISPLAY: unix:0.0 ELECTRON_ENABLE_GPU: "0" MM_CUSTOMCSS_FILE: css/custom.css MM_MODULES_DIR: modules MM_OVERRIDE_DEFAULT_MODULES: "true" MM_SCENARIO: electron MM_SHOW_CURSOR: "false" WAYLAND_DISPLAY: wayland-0 XDG_RUNTIME_DIR: /tmp/labwc image: karsten13/magicmirror:latest network_mode: host privileged: true restart: always shm_size: "268435456" volumes: - type: bind source: /tmp/.X11-unix target: /tmp/.X11-unix bind: {} - type: bind source: /home/pi/.Xauthority target: /home/node/.Xauthority bind: {} - type: bind source: /tmp/labwc target: /tmp/labwc bind: {} - type: bind source: /opt/mm/mounts/config target: /opt/magic_mirror/config bind: {} - type: bind source: /opt/mm/mounts/modules target: /opt/magic_mirror/modules bind: {} - type: bind source: /opt/mm/mounts/css/custom.css target: /opt/magic_mirror/css/custom.css bind: {} post_start: - command: - /bin/sh - -c - | if [ "init" = "init" ]; then # update volume permissions chown -R 1000:1000 config modules css/custom.css chmod -R 777 config modules css/custom.css fi if command -v node_modules/.bin/electron > /dev/null; then # if electron is installed then start dbus-daemon to avoid errors in the logs dbus-daemon --system || true fi user: root networks: default: name: magicmirror_default -
Pi rebooted twice today (initiated by myself) and issue didn’t come back - I think this can bei marked as resolved - thanks a lot!
Now I can take care about Python and fritzconnector…
-
@Mathes75 can you find the message that best explains the fix,
click the 3 dots to the right and select
Mark this post as the correct answer
