3

we have RPi3 with touch screen display. We want to configure very smooth boot process with custom splash screen displayed and boot directly into our own GTK application.

So we have replaced Plymouth default splash.png with our logo. It displays correctly but only for about 2 seconds. When Xserver starts loading, the screen is cleared and it stays black for about 10 seconds. Then our application opens.

My question is whether it is possible to shorten the black screen time or display our logo during this period (e.g. by not clearing the screen on Xserver startup). If I kill Xserver and then run it manually by "startx", it loads almost instantly.

Here is the content of /var/log/Xorg.0.log file:

[     7.410] 
X.Org X Server 1.19.2
Release Date: 2017-03-02
[     7.410] X Protocol Version 11, Revision 0
[     7.410] Build Operating System: Linux 4.9.41-v7+ armv7l Raspbian
[     7.411] Current Operating System: Linux raspberrypi 4.14.79-v7+ #1159 SMP Sun Nov 4 17:50:20 GMT 2018 armv7l
[     7.411] Kernel command line: 8250.nr_uarts=0 bcm2708_fb.fbwidth=800 bcm2708_fb.fbheight=480 bcm2708_fb.fbswap=1 vc_mem.mem_base=0x3ec00000 vc_mem.mem_size=0x40000000  dwc_otg.lpm_enable=0 console=ttyS0,115200 console=tty1 root=PARTUUID=69bfd53b-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait logo.nologo vt.global_cursor_default=0 splash plymouth.ignore-serial-consoles
[     7.411] Build Date: 18 October 2017  04:55:30PM
[     7.411] xorg-server 2:1.19.2-1+rpt1+deb9u2 (https://www.debian.org/support) 
[     7.411] Current version of pixman: 0.34.0
[     7.411]    Before reporting problems, check http://wiki.x.org
    to make sure that you have the latest version.
[     7.411] Markers: (--) probed, (**) from config file, (==) default setting,
    (++) from command line, (!!) notice, (II) informational,
    (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
[     7.412] (==) Log file: "/var/log/Xorg.0.log", Time: Tue Jan 29 09:48:22 2019
[     7.412] (==) Using config file: "/etc/X11/xorg.conf"
[     7.412] (==) Using system config directory "/usr/share/X11/xorg.conf.d"
[     7.418] (==) No Layout section.  Using the first Screen section.
[     7.418] (==) No screen section available. Using defaults.
[     7.418] (**) |-->Screen "Default Screen Section" (0)
[     7.418] (**) |   |-->Monitor "<default monitor>"
[     7.425] (==) No device specified for screen "Default Screen Section".
    Using the first device section listed.
[     7.425] (**) |   |-->Device "Allwinner A10/A13 FBDEV"
[     7.425] (==) No monitor specified for screen "Default Screen Section".
    Using a default monitor configuration.
[     7.425] (==) Automatically adding devices
[     7.425] (==) Automatically enabling devices
[     7.425] (==) Automatically adding GPU devices
[     7.426] (==) Max clients allowed: 256, resource mask: 0x1fffff
[     7.426] (WW) The directory "/usr/share/fonts/X11/misc" does not exist.
[     7.426]    Entry deleted from font path.
[     7.426] (WW) The directory "/usr/share/fonts/X11/cyrillic" does not exist.
[     7.426]    Entry deleted from font path.
[     7.426] (WW) The directory "/usr/share/fonts/X11/100dpi/" does not exist.
[     7.426]    Entry deleted from font path.
[     7.426] (WW) The directory "/usr/share/fonts/X11/75dpi/" does not exist.
[     7.426]    Entry deleted from font path.
[     7.426] (WW) The directory "/usr/share/fonts/X11/Type1" does not exist.
[     7.426]    Entry deleted from font path.
[     7.426] (WW) The directory "/usr/share/fonts/X11/100dpi" does not exist.
[     7.426]    Entry deleted from font path.
[     7.426] (WW) The directory "/usr/share/fonts/X11/75dpi" does not exist.
[     7.426]    Entry deleted from font path.
[     7.427] (==) FontPath set to:
    built-ins
[     7.427] (==) ModulePath set to "/usr/lib/xorg/modules"
[     7.427] (**) Extension "Composite" is disabled
[     7.427] (II) The server relies on udev to provide the list of input devices.
    If no devices become available, reconfigure udev or disable AutoAddDevices.
[     7.431] (II) Loader magic: 0x1fbf40
[     7.431] (II) Module ABI versions:
[     7.432]    X.Org ANSI C Emulation: 0.4
[     7.432]    X.Org Video Driver: 23.0
[     7.432]    X.Org XInput driver : 24.1
[     7.432]    X.Org Server Extension : 10.0
[     7.435] (--) using VT number 2

[     7.435] (II) systemd-logind: logind integration requires -keeptty and -keeptty was not provided, disabling logind integration
[     7.436] (II) no primary bus or device found
[     7.437] (II) LoadModule: "glx"
[     7.461] (II) Loading /usr/lib/xorg/modules/extensions/libglx.so
[     7.619] (II) Module glx: vendor="X.Org Foundation"
[     7.619]    compiled for 1.19.2, module version = 1.0.0
[     7.620]    ABI class: X.Org Server Extension, version 10.0
[     7.620] (II) LoadModule: "fbturbo"
[     7.620] (II) Loading /usr/lib/xorg/modules/drivers/fbturbo_drv.so
[     7.631] (II) Module fbturbo: vendor="X.Org Foundation"
[     7.631]    compiled for 1.19.2, module version = 0.5.1
[     7.631]    Module class: X.Org Video Driver
[     7.631]    ABI class: X.Org Video Driver, version 23.0
[     7.631] (II) FBTURBO: driver for framebuffer: fbturbo
[     7.639] (WW) Falling back to old probe method for fbturbo
[     7.639] (II) Loading sub module "fbdevhw"
[     7.639] (II) LoadModule: "fbdevhw"
[     7.640] (II) Loading /usr/lib/xorg/modules/libfbdevhw.so
[     7.649] (II) Module fbdevhw: vendor="X.Org Foundation"
[     7.649]    compiled for 1.19.2, module version = 0.0.2
[     7.650]    ABI class: X.Org Video Driver, version 23.0
[     7.650] (II) FBTURBO(0): using /dev/fb0
[     7.650] (WW) VGA arbiter: cannot open kernel arbiter, no multi-card support
[     7.650] (II) FBTURBO(0): Creating default Display subsection in Screen section
    "Default Screen Section" for depth/fbbpp 24/32
[     7.650] (==) FBTURBO(0): Depth 24, (==) framebuffer bpp 32
[     7.651] (==) FBTURBO(0): RGB weight 888
[     7.651] (==) FBTURBO(0): Default visual is TrueColor
[     7.651] (==) FBTURBO(0): Using gamma correction (1.0, 1.0, 1.0)
[     7.651] (II) FBTURBO(0): hardware: BCM2708 FB (video memory: 1500kB)
[     7.651] (**) FBTURBO(0): Option "fbdev" "/dev/fb0"
[     7.651] (**) FBTURBO(0): Option "SwapbuffersWait" "true"
[     7.652] (II) FBTURBO(0): processor: Unknown
[     7.652] (II) FBTURBO(0): checking modes against framebuffer device...
[     7.652] (II) FBTURBO(0): checking modes against monitor...
[     7.652] (--) FBTURBO(0): Virtual size is 800x480 (pitch 800)
[     7.652] (**) FBTURBO(0):  Built-in mode "current"
[     7.652] (==) FBTURBO(0): DPI set to (96, 96)
[     7.652] (II) Loading sub module "fb"
[     7.652] (II) LoadModule: "fb"
[     7.653] (II) Loading /usr/lib/xorg/modules/libfb.so
[     7.669] (II) Module fb: vendor="X.Org Foundation"
[     7.669]    compiled for 1.19.2, module version = 1.0.0
[     7.669]    ABI class: X.Org ANSI C Emulation, version 0.4
[     7.669] (==) Depth 24 pixmap format is 32 bpp
[     7.775] (II) FBTURBO(0): using backing store heuristics
[     7.784] (II) FBTURBO(0): can't load 'g2d_23' kernel module
[     7.785] (II) FBTURBO(0): failed to enable the use of sunxi display controller
[     7.785] (II) FBTURBO(0): No sunxi-g2d hardware detected (check /dev/disp and /dev/g2d)
[     7.785] (II) FBTURBO(0): G2D hardware acceleration can't be enabled
[     7.785] (II) FBTURBO(0): enabled fbdev copyarea acceleration
[     7.785] (==) FBTURBO(0): Backing store disabled
[     7.797] (==) FBTURBO(0): DPMS enabled
[     7.797] (II) FBTURBO(0): failed to enable hardware cursor
[     7.797] (II) FBTURBO(0): no 3D acceleration because the driver has been compiled without libUMP
[     7.797] (II) FBTURBO(0): if this is wrong and needs to be fixed, please check ./configure log
[     7.799] (==) RandR enabled
[     7.850] (II) SELinux: Disabled on system
[     7.859] (II) AIGLX: Screen 0 is not DRI2 capable
[     7.859] (EE) AIGLX: reverting to software rendering
[    14.082] (II) IGLX: enabled GLX_MESA_copy_sub_buffer
[    14.084] (II) IGLX: Loaded and initialized swrast
[    14.084] (II) GLX: Initialized DRISWRAST GL provider for screen 0
[    14.259] (II) config/udev: Adding input device SINO WEALTH USB KEYBOARD (/dev/input/event0)
[    14.260] (**) SINO WEALTH USB KEYBOARD: Applying InputClass "libinput keyboard catchall"
[    14.260] (II) LoadModule: "libinput"
[    14.260] (II) Loading /usr/lib/xorg/modules/input/libinput_drv.so
[    14.286] (II) Module libinput: vendor="X.Org Foundation"
[    14.286]    compiled for 1.19.0, module version = 0.23.0
[    14.286]    Module class: X.Org XInput Driver
[    14.286]    ABI class: X.Org XInput driver, version 24.1
[    14.286] (II) Using input driver 'libinput' for 'SINO WEALTH USB KEYBOARD'
[    14.287] (**) SINO WEALTH USB KEYBOARD: always reports core events
[    14.287] (**) Option "Device" "/dev/input/event0"
[    14.287] (**) Option "_source" "server/udev"
[    14.289] (II) input device 'SINO WEALTH USB KEYBOARD', /dev/input/event0 is tagged by udev as: Keyboard
[    14.289] (II) input device 'SINO WEALTH USB KEYBOARD', /dev/input/event0 is a keyboard
[    14.420] (**) Option "config_info" "udev:/sys/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.3/1-1.3:1.0/0003:258A:0001.0001/input/input0/event0"
[    14.420] (II) XINPUT: Adding extended input device "SINO WEALTH USB KEYBOARD" (type: KEYBOARD, id 6)
[    14.420] (**) Option "xkb_model" "pc105"
[    14.420] (**) Option "xkb_layout" "cz"
[    14.486] (II) input device 'SINO WEALTH USB KEYBOARD', /dev/input/event0 is tagged by udev as: Keyboard
[    14.486] (II) input device 'SINO WEALTH USB KEYBOARD', /dev/input/event0 is a keyboard
[    14.488] (II) config/udev: Adding input device SINO WEALTH USB KEYBOARD (/dev/input/event1)
[    14.488] (**) SINO WEALTH USB KEYBOARD: Applying InputClass "libinput keyboard catchall"
[    14.488] (II) Using input driver 'libinput' for 'SINO WEALTH USB KEYBOARD'
[    14.488] (**) SINO WEALTH USB KEYBOARD: always reports core events
[    14.488] (**) Option "Device" "/dev/input/event1"
[    14.489] (**) Option "_source" "server/udev"
[    14.490] (II) input device 'SINO WEALTH USB KEYBOARD', /dev/input/event1 is tagged by udev as: Keyboard
[    14.490] (II) input device 'SINO WEALTH USB KEYBOARD', /dev/input/event1 is a keyboard
[    14.580] (**) Option "config_info" "udev:/sys/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.3/1-1.3:1.1/0003:258A:0001.0002/input/input1/event1"
[    14.580] (II) XINPUT: Adding extended input device "SINO WEALTH USB KEYBOARD" (type: KEYBOARD, id 7)
[    14.580] (**) Option "xkb_model" "pc105"
[    14.580] (**) Option "xkb_layout" "cz"
[    14.585] (II) input device 'SINO WEALTH USB KEYBOARD', /dev/input/event1 is tagged by udev as: Keyboard
[    14.585] (II) input device 'SINO WEALTH USB KEYBOARD', /dev/input/event1 is a keyboard
[    14.587] (II) config/udev: Adding input device FT5406 memory based driver (/dev/input/event2)
[    14.587] (**) FT5406 memory based driver: Applying InputClass "libinput touchscreen catchall"
[    14.587] (II) Using input driver 'libinput' for 'FT5406 memory based driver'
[    14.587] (**) FT5406 memory based driver: always reports core events
[    14.587] (**) Option "Device" "/dev/input/event2"
[    14.587] (**) Option "_source" "server/udev"
[    14.589] (II) input device 'FT5406 memory based driver', /dev/input/event2 is tagged by udev as: Touchscreen
[    14.590] (II) input device 'FT5406 memory based driver', /dev/input/event2 is a touch device
[    14.680] (**) Option "config_info" "udev:/sys/devices/virtual/input/input2/event2"
[    14.680] (II) XINPUT: Adding extended input device "FT5406 memory based driver" (type: TOUCHSCREEN, id 8)
[    14.680] (**) Option "AccelerationScheme" "none"
[    14.681] (**) FT5406 memory based driver: (accel) selected scheme none/0
[    14.681] (**) FT5406 memory based driver: (accel) acceleration factor: 2.000
[    14.681] (**) FT5406 memory based driver: (accel) acceleration threshold: 4
[    14.683] (II) input device 'FT5406 memory based driver', /dev/input/event2 is tagged by udev as: Touchscreen
[    14.683] (II) input device 'FT5406 memory based driver', /dev/input/event2 is a touch device
[    14.684] (II) config/udev: Adding input device FT5406 memory based driver (/dev/input/mouse0)
[    14.685] (II) No input driver specified, ignoring this device.
[    14.685] (II) This device may have been added with another device file.
[   122.444] (II) input device 'SINO WEALTH USB KEYBOARD', /dev/input/event0 is tagged by udev as: Keyboard
[   122.444] (II) input device 'SINO WEALTH USB KEYBOARD', /dev/input/event0 is a keyboard
[   122.448] (II) input device 'SINO WEALTH USB KEYBOARD', /dev/input/event1 is tagged by udev as: Keyboard
[   122.448] (II) input device 'SINO WEALTH USB KEYBOARD', /dev/input/event1 is a keyboard
[   122.450] (II) input device 'FT5406 memory based driver', /dev/input/event2 is tagged by udev as: Touchscreen
[   122.450] (II) input device 'FT5406 memory based driver', /dev/input/event2 is a touch device 

I can notice there is a longer delay in the middle:

[     7.799] (==) RandR enabled
[     7.850] (II) SELinux: Disabled on system
[     7.859] (II) AIGLX: Screen 0 is not DRI2 capable
[     7.859] (EE) AIGLX: reverting to software rendering
[    14.082] (II) IGLX: enabled GLX_MESA_copy_sub_buffer
[    14.084] (II) IGLX: Loaded and initialized swrast
[    14.084] (II) GLX: Initialized DRISWRAST GL provider for screen 0
[    14.259] (II) config/udev: Adding input device SINO WEALTH USB KEYBOARD (/dev/input/event0)

We tried disabling AIGLX in /etc/X11/xorg.conf but no change.

Is there some solution for my problem? Thank you very much!

  • 1
    'If I kill Xserver and then run it manually by "startx", it loads almost instantly.' -> Although this may not explain the length of the difference, keep in mind that running something immediately after killing it will usually mean most of it is loaded from the page cache (RAM), and not storage (the SD card), which is quite a bit faster. – goldilocks Jan 29 at 20:12
2

You can use the -background none option when starting the X Server.

From the manual:

-background none
Asks the driver not to clear the background on startup, if the driver supports that. May be useful for smooth transition with eg. fbdev driver. For security reasons this is not the default as the screen contents might show a previous user session.

  • Where should I put this option? There is file /etc/X11/xinit/xserverrc that starts Xserver and contains 'exec /usr/bin/X -nolisten tcp "$@"' but adding this parameter makes no change... I execute "startx" in /etc/rc.local but adding this parameters make that Xserver does not start at all. – bigmuscle Jan 30 at 7:58
  • According to the manual, it is an option to the X server. – RalfFriedl Jan 31 at 6:47
  • Yes. I checked the manual, but this option does not work. When I add another option "-retro" to /usr/bin/X, it displays the "retro" pattern 2 seconds after the black screen, so it seems that "-background none" is simply ignored. – bigmuscle Jan 31 at 7:41
  • Small observation: if I change Plymouth theme to spinner, there is an animated spinner for 2 seconds during the boot and when the Xserver clears the screen to black there is still visible very dark blinking rectangle at the spinner position. So it seems that it tries to display something even during Xserver loading but the output is "corrupted" (maybe display driver problem?) – bigmuscle Feb 3 at 19:21
  • It has to be a driver problem. With the same option on a PC, I can still see the text output while I can move the mouse pointer on the screen. – RalfFriedl Feb 3 at 21:23
1

I was able to get rid of that AIGLX error by disabling glx module in "Module" section of xorg.conf. It removed the delay visible in the log - Xserver is started at [5.950], the first entry in Xorg.0.log is at [7.453], last at [8.415], my application is loaded at [8.470]. The black screen is there for about 4 seconds, much better then before.

  • I just need to add a comment that this is still not the correct solution. Although it reduces the time of the black screen and system boots in 8.4 seconds now, it is very bad user experience if the splash screen is visible for 2 seconds only and the rest is the black screen. – bigmuscle Feb 3 at 19:16
  • I tried disabling (sudo systemctl disable) following services: raspi-config, dphys-swapfile, ssh, systemd-timesyncd and now Xserver starts almost instantly after splash screen. There is only fast blink and then Xserver loads and displays background color set by "xsetroot". – bigmuscle Feb 6 at 12:51

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.