• Recent
  • Tags
  • Popular
  • Home
  • Docs
  • Register
  • Login
RetroPie forum home
  • Recent
  • Tags
  • Popular
  • Home
  • Docs
  • Register
  • Login
Please do not post a support request without first reading and following the advice in https://retropie.org.uk/forum/topic/3/read-this-first

Script to start ES or Desktop on boot

Scheduled Pinned Locked Moved Help and Support
boot config
26 Posts 4 Posters 5.6k Views
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • F
    Frazatto @mitu
    last edited by 2 Jul 2020, 21:49

    @mitu Okkk....I researched a little more and tried this script:

    #if HDMI connected, go to desktop
    video="$(tvservice -s)"
    
    if [[ $video =~ "HDMI" ]];
    then
      startx
    else
      emulationstation #auto
    fi
    

    And I tested just with strings and bash before truing to boot and I'm 100% sure it does what I expect.
    But black screen is confirmed if you try to startx inside autostart.sh!!!!!

    I will have to find another way of doing this.

    B 1 Reply Last reply 2 Jul 2020, 21:55 Reply Quote 0
    • B
      BuZz administrators @Frazatto
      last edited by 2 Jul 2020, 21:55

      @Frazatto do you have splash screen enabled? Try disabling

      To help us help you - please make sure you read the sticky topics before posting - https://retropie.org.uk/forum/topic/3/read-this-first

      F 1 Reply Last reply 3 Jul 2020, 13:15 Reply Quote 0
      • F
        Frazatto @BuZz
        last edited by 3 Jul 2020, 13:15

        @BuZz all splash screens are disabled.

        1 Reply Last reply Reply Quote 0
        • F
          Frazatto
          last edited by 3 Jul 2020, 14:26

          Some more info...
          Adding & after startx let the terminal keep running and showed me the real errors occurring.
          You will get an permission denied as tty1 is occupied by the original user, Xorg can't start since the display is already in use and I don't want to run Desktop as root all the time and adding Pi to tty group only cascade into other access errors.

          So I think this is a definitive answer that it is not possible to startx conveniently on ES autostart.sh

          1 Reply Last reply Reply Quote 0
          • M
            mitu Global Moderator
            last edited by 3 Jul 2020, 15:13

            @Frazatto said in Script to start ES or Desktop on boot:

            So I think this is a definitive answer that it is not possible to startx conveniently on ES autostart.sh

            No, it's not - I actually tested and it works. I'm on the latest RetroPie version (Raspbian Buster) and I have no problem starting the desktop from autostart.sh.

            Maybe you should give more details about your system, as detailed in https://retropie.org.uk/forum/topic/3/read-this-first.

            1 Reply Last reply Reply Quote 0
            • F
              Frazatto
              last edited by 3 Jul 2020, 18:02

              That is unexpected.......
              Yes I did read that, didn't seam pertinent till now.

              raspberry pi 3B+
              Raspbian Buster
              Retropie 4.6.2

              1 Reply Last reply Reply Quote 0
              • M
                mitu Global Moderator
                last edited by 4 Jul 2020, 05:05

                Try this - disable any programs in autostart.sh. On boot, you should be presented with a command line prompt. Run startx from there and see if it works. If it doesn't, post the X.org log file to pastebin.com, from $HOME/.local/share/xorg/.

                F 1 Reply Last reply 4 Jul 2020, 18:54 Reply Quote 0
                • F
                  Frazatto @mitu
                  last edited by 4 Jul 2020, 18:54

                  @mitu now I'm just confused :D

                  If I try what you asked, it works just fine.
                  So I went ahead and tried just startx & in autostart.sh and I get the same error.
                  This is the log you asked for when the desktop fails to start:
                  (the line about xf86OpenConsole used to be an access error to tty1 that I "fixed")

                  [    20.335] 
                  X.Org X Server 1.20.4
                  X Protocol Version 11, Revision 0
                  [    20.342] Build Operating System: Linux 4.15.0-48-generic armv8l Raspbian
                  [    20.345] Current Operating System: Linux BMO.local 4.19.118-v7+ #1311 SMP Mon Apr 27 14:21:24 BST 2020 armv7l
                  [    20.345] Kernel command line: coherent_pool=1M 8250.nr_uarts=0 snd_bcm2835.enable_compat_alsa=0 snd_bcm2835.enable_hdmi=1 snd_bcm2835.enable_headphones=1 bcm2708_fb.fbwidth=1280 bcm2708_fb.fbheight=720 bcm2708_fb.fbswap=1 vc_mem.mem_base=0x3ec00000 vc_mem.mem_size=0x40000000  dwc_otg.lpm_enable=0 console=tty1 console=ttyS0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait fbcon=map:10 fbcon=font:ProFont6x11 logo.nologo
                  [    20.356] Build Date: 05 June 2019  12:49:54PM
                  [    20.359] xorg-server 2:1.20.4-1+rpt1 (https://www.debian.org/support) 
                  [    20.362] Current version of pixman: 0.36.0
                  [    20.368] 	Before reporting problems, check http://wiki.x.org
                  	to make sure that you have the latest version.
                  [    20.368] Markers: (--) probed, (**) from config file, (==) default setting,
                  	(++) from command line, (!!) notice, (II) informational,
                  	(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
                  [    20.380] (==) Log file: "/home/pi/.local/share/xorg/Xorg.0.log", Time: Sat Jul  4 15:48:27 2020
                  [    20.394] (==) Using system config directory "/usr/share/X11/xorg.conf.d"
                  [    20.406] (==) No Layout section.  Using the first Screen section.
                  [    20.406] (==) No screen section available. Using defaults.
                  [    20.406] (**) |-->Screen "Default Screen Section" (0)
                  [    20.406] (**) |   |-->Monitor "<default monitor>"
                  [    20.425] (==) No device specified for screen "Default Screen Section".
                  	Using the first device section listed.
                  [    20.425] (**) |   |-->Device "Allwinner A10/A13 FBDEV"
                  [    20.425] (==) No monitor specified for screen "Default Screen Section".
                  	Using a default monitor configuration.
                  [    20.425] (==) Automatically adding devices
                  [    20.425] (==) Automatically enabling devices
                  [    20.425] (==) Automatically adding GPU devices
                  [    20.426] (==) Max clients allowed: 256, resource mask: 0x1fffff
                  [    20.482] (WW) The directory "/usr/share/fonts/X11/cyrillic" does not exist.
                  [    20.482] 	Entry deleted from font path.
                  [    20.482] (WW) The directory "/usr/share/fonts/X11/100dpi/" does not exist.
                  [    20.482] 	Entry deleted from font path.
                  [    20.482] (WW) The directory "/usr/share/fonts/X11/75dpi/" does not exist.
                  [    20.482] 	Entry deleted from font path.
                  [    20.482] (WW) The directory "/usr/share/fonts/X11/Type1" does not exist.
                  [    20.482] 	Entry deleted from font path.
                  [    20.483] (WW) The directory "/usr/share/fonts/X11/100dpi" does not exist.
                  [    20.483] 	Entry deleted from font path.
                  [    20.483] (WW) The directory "/usr/share/fonts/X11/75dpi" does not exist.
                  [    20.483] 	Entry deleted from font path.
                  [    20.483] (==) FontPath set to:
                  	/usr/share/fonts/X11/misc,
                  	built-ins
                  [    20.483] (==) ModulePath set to "/usr/lib/xorg/modules"
                  [    20.483] (II) The server relies on udev to provide the list of input devices.
                  	If no devices become available, reconfigure udev or disable AutoAddDevices.
                  [    20.483] (II) Loader magic: 0x1fcf80
                  [    20.483] (II) Module ABI versions:
                  [    20.483] 	X.Org ANSI C Emulation: 0.4
                  [    20.483] 	X.Org Video Driver: 24.0
                  [    20.483] 	X.Org XInput driver : 24.1
                  [    20.483] 	X.Org Server Extension : 10.0
                  [    20.487] (--) using VT number 2
                  
                  [    20.487] (II) systemd-logind: logind integration requires -keeptty and -keeptty was not provided, disabling logind integration
                  [    20.488] (II) no primary bus or device found
                  [    20.488] (II) LoadModule: "glx"
                  [    20.534] (II) Loading /usr/lib/xorg/modules/extensions/libglx.so
                  [    20.712] (II) Module glx: vendor="X.Org Foundation"
                  [    20.712] 	compiled for 1.20.4, module version = 1.0.0
                  [    20.712] 	ABI class: X.Org Server Extension, version 10.0
                  [    20.713] (II) LoadModule: "fbturbo"
                  [    20.713] (II) Loading /usr/lib/xorg/modules/drivers/fbturbo_drv.so
                  [    20.736] (II) Module fbturbo: vendor="X.Org Foundation"
                  [    20.736] 	compiled for 1.20.3, module version = 0.5.1
                  [    20.736] 	Module class: X.Org Video Driver
                  [    20.736] 	ABI class: X.Org Video Driver, version 24.0
                  [    20.737] (II) FBTURBO: driver for framebuffer: fbturbo
                  [    20.737] (EE) 
                  Fatal server error:
                  [    20.751] (EE) xf86OpenConsole: Cannot open virtual console 2 (Permission denied)
                  [    20.758] (EE) 
                  [    20.764] (EE) 
                  Please consult the The X.Org Foundation support 
                  	 at http://wiki.x.org
                   for help. 
                  [    20.791] (EE) Please also check the log file at "/home/pi/.local/share/xorg/Xorg.0.log" for additional information.
                  [    20.799] (EE) 
                  [    20.806] (WW) xf86CloseConsole: KDSETMODE failed: Bad file descriptor
                  [    20.806] (WW) xf86CloseConsole: VT_GETMODE failed: Bad file descriptor
                  [    20.806] (EE) Server terminated with error (1). Closing log file.
                  
                  1 Reply Last reply Reply Quote 0
                  • M
                    mitu Global Moderator
                    last edited by 4 Jul 2020, 19:13

                    @Frazatto said in Script to start ES or Desktop on boot:

                    [ 20.751] (EE) xf86OpenConsole: Cannot open virtual console 2 (Permission denied)

                    The error shows you're trying to run X on the 2nd text console, not the first. When running on the 1st one, it should show something like

                    [420164.968] (++) using VT number 1
                    

                    Do you have other configuration added to the default image ? Did you add something to /boot/cmdline.txt ?

                    F 1 Reply Last reply 4 Jul 2020, 19:20 Reply Quote 0
                    • F
                      Frazatto @mitu
                      last edited by 4 Jul 2020, 19:20

                      @mitu manually? Never touched this file before.
                      This is it's content:

                      dwc_otg.lpm_enable=0 console=tty1 console=ttyAMA0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait fbcon=map:10 fbcon=font:ProFont6x11 logo.nologo
                      
                      1 Reply Last reply Reply Quote 0
                      • M
                        mitu Global Moderator
                        last edited by 4 Jul 2020, 20:10

                        That's strange, doesn't look like a standard cmdline.ext. Did you install from a Raspbian Lite image or from a RetroPie image ?

                        F 1 Reply Last reply 4 Jul 2020, 20:15 Reply Quote 0
                        • F
                          Frazatto @mitu
                          last edited by 4 Jul 2020, 20:15

                          @mitu
                          https://www.raspberrypi.org/downloads/raspberry-pi-os/
                          "Raspberry Pi OS (32-bit) with desktop and recommended software"
                          Than Retropie flowing the GIT guide.

                          How does your look like?
                          What does this file do?

                          M 1 Reply Last reply 4 Jul 2020, 20:19 Reply Quote 0
                          • M
                            mitu Global Moderator @Frazatto
                            last edited by 4 Jul 2020, 20:19

                            @Frazatto Not sure if that file is the culprit, but I've seen configuration when the default tty was modified via that file. Sorry, I have no ideas why it's not working, I just tested on a stock RetroPie install and couldn't get any errors.

                            F 1 Reply Last reply 4 Jul 2020, 20:24 Reply Quote 0
                            • F
                              Frazatto @mitu
                              last edited by 4 Jul 2020, 20:24

                              @mitu don't worry, you tried to the very end and I thank you!
                              On the Raspberry forum nobody even bothered to answer me :P

                              1 Reply Last reply Reply Quote 0
                              • M
                                mitu Global Moderator
                                last edited by 5 Jul 2020, 02:55

                                @Frazatto said in Script to start ES or Desktop on boot:

                                On the Raspberry forum nobody even bothered to answer me :P

                                That's probably because your problem is specific to the RetroPie auto-start configuration and not something Raspbian/Raspberry Pi related.

                                1 Reply Last reply Reply Quote 0
                                • F
                                  Frazatto
                                  last edited by 25 Sept 2020, 12:41

                                  Just for future reference, I was messing around with this problem again and it just worked now........

                                  So to recap, if you want to change between X and EmulationStation depending on what output is connected, change /opt/retropie/configs/all/autostart.sh to something like the code below and it should work.

                                  #if HDMI connected, go to desktop
                                  video="$(tvservice -s)"

                                  if [[ $video =~ "HDMI" ]];
                                  then
                                  startx
                                  else
                                  emulationstation #auto
                                  fi

                                  I believe my Pi had some inconsistency in which user had ownership over the display, I manually set up ES and Rapibian to start on cmd, than in raspconfig set it to start X and lastly changed it back to ES to start by default. (yes, sounds complicated, but it was an accident really)

                                  After that, the code snippet should work as intended.

                                  1 Reply Last reply Reply Quote 1
                                  • M
                                    millanzarreta
                                    last edited by millanzarreta 15 Feb 2022, 21:41

                                    Sorry to resurrect this interesting topic so much later. I came to it after looking for a script that allows us to select in a menu at the start if we want to start emulationstation or the desktop. I know that it's not exactly the same as what was discussed in this thread but it's very related. I've ended up making a custom script modifying /opt/retropie/configs/all/autostart.sh, and since I think it might be useful to someone, I'll leave it here for reference (this is the new content of that autostart.sh file):

                                    ## Get WT Sizes
                                    WT_HEIGHT=18
                                    WT_WIDTH=$(tput cols)
                                    if [ -z "$WT_WIDTH" ] || [ "$WT_WIDTH" -lt 60 ]; then
                                      WT_WIDTH=80
                                    fi
                                    if [ "$WT_WIDTH" -gt 178 ]; then
                                      WT_WIDTH=120
                                    fi
                                    WT_MENU_HEIGHT=$(($WT_HEIGHT-7))
                                    
                                    ## Get Architecture
                                    ARCH=$(dpkg --print-architecture)
                                    
                                    ## Dialog Menu
                                    if [ "$ARCH" = "armhf" ] || [ "$ARCH" = "arm64" ] ; then
                                      sw=`DIALOG_ERROR=5 DIALOG_ESC=1 dialog --timeout 6 --no-cancel --title "Raspberry Pi Startup Selection Tool" --backtitle "$(cat /proc/device-tree/model)" \
                                        --menu "Startup Options" $WT_HEIGHT $WT_WIDTH $WT_MENU_HEIGHT \
                                        "1 EmulationStation" "Front-end of RetroPie Project" \
                                        "2 Desktop" "Raspbian PIXEL Desktop Enviroment" \
                                        "3 Console" "Abort auto-start and remain in console" \
                                        3>&1 1>&2 2>&3`
                                    else
                                      sw=`DIALOG_ERROR=5 DIALOG_ESC=1 dialog --timeout 6 --no-cancel --title "Raspberry Pi Startup Selection Tool" \
                                        --menu "Startup Options" $WT_HEIGHT $WT_WIDTH $WT_MENU_HEIGHT \
                                        "1 EmulationStation" "Front-end of RetroPie Project" \
                                        "2 Desktop" "Raspbian PIXEL Desktop Enviroment" \
                                        "3 Console" "Abort auto-start and remain in console" \
                                        3>&1 1>&2 2>&3`
                                    fi
                                    rc=$?
                                    #reset  #no needed
                                    clear
                                    source $HOME/.bashrc
                                    case $rc in
                                      0)
                                        case "$sw" in
                                          "1 EmulationStation")
                                            emulationstation ;;
                                          "2 Desktop")
                                            startx ;;
                                          "3 Console")
                                            echo "" ;;
                                          *)
                                            emulationstation ;;
                                        esac;;
                                      1)
                                        emulationstation ;;
                                      5)
                                        emulationstation ;;
                                      *)
                                        emulationstation ;;
                                    esac
                                    
                                    

                                    This is what it looks like:

                                    autostart_retropie_screenshot

                                    It's set to run emulationstation by default. A timeout of 6 seconds is established, so if the user does not press any key for 6 seconds, the default option (emulationstation) is executed. I've used dialog for the menu instead of whiptailonly because this last doesn't have the --timeout option, and although you can achieve a similar effect with other tricks it's a bit more complicated, both should work fine either way.

                                    1 Reply Last reply Reply Quote 1
                                    • First post
                                      Last post

                                    Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.

                                    Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.

                                      This community forum collects and processes your personal information.
                                      consent.not_received