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

    Trouble with RetroPie after updating from Stretch to Buster

    Scheduled Pinned Locked Moved Help and Support
    busterstretchretroarchlibcurlpi 4
    9 Posts 4 Posters 3.9k 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.
    • C
      ChordyChops
      last edited by

      Hi there
      I'm using a Raspberry Pi 4 Model B, 2GB RAM with an official power supply.
      RetroPie Version 4.6.7 built on an existing Stretch image
      1 USB Logitech USB keyboard and 1 USB mouse attached, with ControlBlock attached but not yet configured with driver. (Most recent model, purchased 2020 and connected to two sets of wired 8 arcade buttons and 4-way joysticks.

      I couldn't get the image to display via HDMI on my Pi 4, but it would load on my old Raspberry Pi Model B+ (although Retropie didn't launch) so I updated the Stretch OS on the card to Buster using this guide:
      https://pimylifeup.com/upgrade-raspbian-stretch-to-raspbian-buster/

      I also updated Retropie to the latest version, and did this all on the old Model B. I was now able to transfer it to the Pi 4 and the display worked, but failed to launch Emulation Station with the following error:
      /opt/retropie/supplementary/emulationstation/emulationstation: /usr/lib/arm-linux-gnueabihf/libcurl.so.4: version 'CURL_OPENSSL_3' not found (required by /opt/retropie/supplementary/emulationstation/emulationstation)

      I tried updating Retropie and the OS on the Pi 4 again in case of firmware mismatches from the setup on the Model B. I also updated the binary for Emulation Station and got the following error:

      Could not successfully build retroarch - RetroArch - frontend to the libretro emulator cores - required by all lr-* emulators (/home/pi/RetroPie-Setup/tmp/build/retroarch/retroarch not found).

      Here's the log the above process generated: <script src="https://pastebin.com/embed_js/fpMKG6jJ"></script>

      I found a post for a similar problem here (https://retropie.org.uk/forum/topic/12732/could-not-successfully-build-retroarch) and am resigned to the fact that updating the OS in this case won't be possible, but wondered if anyone could help advise any fixes? I saw something about getting the correct libcurl (as mentioned here https://retropie.org.uk/forum/topic/25812/libcurl-issue-raspbian-buster-retropie-4-6-tntbf-gamemakerstudio-port) but not sure this would help or whether I'm up to the task as a Linux dunce!
      Thanks in advance, Benn

      1 Reply Last reply Reply Quote 0
      • mituM
        mitu Global Moderator
        last edited by

        I found a post for a similar problem here (https://retropie.org.uk/forum/topic/12732/could-not-successfully-build-retroarch) and am resigned to the fact that updating the OS in this case won't be possible, but wondered if anyone could help advise any fixes?

        You should have installed from a fresh Pi4 image - RetroPie (and neither Raspbian) doesn't support this kind of in-place upgrade for the OS. Even if you do it, you still have to upgrade your packages afterwards (like you started doing).

        You error probably stems from the incorrect config.txt file from the image you upgraded - the Pi4 image has a different configuration and you're using an old config.txt that doesn't know about the Pi4.
        The file is probably missing the Pi4 specific config lines:

        
        [pi4]
        # Enable DRM VC4 V3D driver on top of the dispmanx display stack
        dtoverlay=vc4-fkms-v3d
        max_framebuffers=2
        

        If you add those lines and re-try the package updates, you'll probably be able to upgrade from binary all your packages.

        However, my advice would be to start with a fresh Pi4 image from retropie.org.uk/download and install anew. You can back-up your ROMs/BIOS/configs using file shares (see here) and restore them on the newly installed system.

        keks24K 1 Reply Last reply Reply Quote 1
        • C
          ChordyChops
          last edited by

          Thanks mitu, I'd assumed that a lot of the image I was trying to update would have stuff woven throughout various folders and forgot that the configs folder will often house all that stuff - hence trying to update it wholesale. But it makes much more sense to import the existing content onto a fresh build as you point out - not sure why I didn't think to do that in the first place, thank you for helping see the wood through the trees!

          And FYI I tried the config change and update as suggested and it didn't seem to help so I'll start with the clean rebuild. Thanks again for your prompt reply.

          1 Reply Last reply Reply Quote 0
          • keks24K
            keks24 @mitu
            last edited by keks24

            @mitu said in Trouble with RetroPie after updating from Stretch to Buster:

            You should have installed from a fresh Pi4 image - RetroPie (and neither Raspbian) doesn't support this kind of in-place upgrade for the OS.

            Reading this hurts me...

            I successfully upgraded RetroPie to Debian Buster in the most proper way I could.

            I am using a Raspberry Pi 3 Model B Rev 1.2 (grep "Model" /proc/cpuinfo), so my instructions may not apply to other Raspberry Pis. Also all RetroPie packages are compiled from source and I am writing all instructions to users with advanced to expert Linux knowledge with an I-can-think-and-do-not-just-copy-paste-things attitude, who are also using a seperate Linux distribution.

            Be very aware, that there might be long-term consequences, which may cause issues when doing further updates:

            1. Create a backup of the SD card. This will be needed later on:
            $ dd if=/dev/sdx of=retropie_sd_card_backup.img bs=512b
            

            This will create the image file retropie_sd_card_backup.img in the current working directory.

            A backup can be restored like this:

            $ dd if=<image_name> of=/dev/sdx bs=512b
            
            1. Remove the second partition of the SD card, so the first partition (/boot/) can be extended. This is necessary, since the kernel files of Debian Buster are too big and 57 MiB are not sufficient:
            $ parted /dev/sdx
            
            # list units as mebibyte
            (parted) unit mib
            
            # show partition table of the current device
            (parted) print
            Model: Generic- USB3.0 CRW -SD (scsi)
            Disk /dev/sdx: 121942MiB
            Sector size (logical/physical): 512B/512B
            Partition Table: msdos
            Disk Flags:
            
            Number  Start    End        Size       Type     File system  Flags
             1      4.00MiB  61MiB      57MiB      primary  fat16        boot, lba
             2      57MiB    121942MiB  121499MiB  primary  ext4
            
            # remove the second partition
            (parted) rm 2
            (parted) print
            Model: Generic- USB3.0 CRW -SD (scsi)
            Disk /dev/sdx: 121942MiB
            Sector size (logical/physical): 512B/512B
            Partition Table: msdos
            Disk Flags:
            
            Number  Start    End        Size       Type     File system  Flags
             1      4.00MiB  61MiB      57MiB      primary  fat16        boot, lba
            
            # extend the first partition to "512 mib"
            (parted) resizepart 1
            End? 516
            (parted) print
            Model: Generic- USB3.0 CRW -SD (scsi)
            Disk /dev/sdx: 121942MiB
            Sector size (logical/physical): 512B/512B
            Partition Table: msdos
            Disk Flags:
            
            Number  Start    End        Size       Type     File system  Flags
             1      4.00MiB  516MiB     512MiB     primary  fat16        boot, lba
            
            # create the second partition
            (parted) mkpart
            Parition type? primary/extended? primary
            File system type? ext4
            Start? 516
            End? -1
            (parted) print
            Model: Generic- USB3.0 CRW -SD (scsi)
            Disk /dev/sdx: 121942MiB
            Sector size (logical/physical): 512B/512B
            Partition Table: msdos
            Disk Flags:
            
            Number  Start    End        Size       Type     File system  Flags
             1      4.00MiB  516MiB     512MiB     primary  fat16        boot, lba
             2      516MiB   121942MiB  121426MiB  primary  ext4
            # exit "parted"
            (parted) quit
            
            1. Format both partitions of the SD card:
            $ mkfs.fat -F 16 /dev/sdx1
            $ mkfs.ext4 /dev/sdx2
            
            1. Mount both partitions of the backup as read-only and mount both partitions of the SD card, to restore the files to the SD card:
            $ mkdir "first_partition_backup" "second_partition_backup" "first_partition_sd_card" "second_partition_sd_card"
            $ file "retropie_sd_card_backup.img"
            retropie_sd_card_backup.img: DOS/MBR boot sector; partition 1 : ID=0xe, active, start-CHS (0x40,0,1), end-CHS (0x3ff,3,32), startsector 8192, 1048576 sectors; partition 2 : ID=0x83, start-CHS (0x80,0,1), end-CHS (0x2bf,3,16), startsector 1056768, 248680448 sectors
            # <sector_size> * <start_sector_of_partition> = <partition_offset>
            $ mount --options ro,offset="$(( 512 * 8192 ))" "retropie_sd_card_backup.img" "first_partition_backup"
            $ mount --options ro,offset="$(( 512 * 1056768 ))" "retropie_sd_card_backup.img" "second_partition_backup"
            $ mount "/dev/sdx1" "first_partition_sd_card"
            $ mount "/dev/sdx2" "second_partition_sd_card"
            # copy all subdirectories and files of "first_partition_backup/" and "second_partition_backup/" to the sd card. the slash is important here!
            $ rsync --archive --hard-links --acls --xattrs --one-file-system --numeric-ids --info=progress2 "first_partition_backup/" "first_partition_sd_card"
            $ rsync --archive --hard-links --acls --xattrs --one-file-system --numeric-ids --info=progress2 "second_partition_backup/" "second_partition_sd_card"
            $ umount "first_partition_backup" "second_partition_backup" "first_partition_sd_card" "second_partition_sd_card"
            
            1. Create another backup of the SD card:
            $ dd if=/dev/sdx of=retropie_sd_card_backup_before_buster_upgrade.img bs=512b
            

            This creates the file retropie_sd_card_backup_before_buster_upgrade.img, so there is a fallback, if something went terribly wrong after this step.

            1. Boot into Raspbian and upgrade all current installed packages:
            # kill "emulationstation" and free resources
            $ pkill emulationstation
            # update package cache
            $ apt update
            # upgrade all current installed packages
            $ apt upgrade
            # upgrade held-back packages and remove unnecessary dependency packages
            $ apt full-upgrade
            # check package consistency
            $ dpkg --audit
            # list intentionally held packages
            $ apt-mark showhold libraspberrypi-bin libraspberrypi-dev libraspberrypi-doc libraspberrypi0 raspberrypi-bootloader raspberrypi-kernel raspberrypi-kernel-headers libsdl1.2-dev libsdl2-dev
            # unlock these packages
            $ apt-mark unhold libraspberrypi-bin libraspberrypi-dev libraspberrypi-doc libraspberrypi0 raspberrypi-bootloader raspberrypi-kernel raspberrypi-kernel-headers libsdl1.2-dev libsdl2-dev
            # upgrade all remaining packages
            $ apt full-upgrade
            
            1. Prepare the upgrade to Debian Buster:
            $ sed --in-place="s/stretch/buster/g" "/etc/apt/sources.list
            $ sed --in-place="s/stretch/buster/g" "/etc/apt/sources.list.d/raspi.list"
            
            1. Simulate an upgrade:
            $ apt update
            $ apt upgrade --simulate
            

            If everything looks good, proceed with the next steps. In my case, I encountered no errors or warnings.

            1. Upgrade to Debian Buster:
            $ apt upgrade
            $ apt full-upgrade
            $ poweroff
            

            There will be one question about WINS support via Samba, which will overwrite or modify /etc/samba/smb.conf. Do not accept it!

            During the upgrade, multiple questions will pop up about overwriting configuration files. The confident user may merge them manually. Otherwise, do not overwrite the following configuration files:

            • /etc/samba/smb.conf
            • /etc/bluetooth/main.conf

            Both files are appended at the end of this post.

            At the end of the upgrade, I only encountered an issue with raspberrypi-kernel, but it was trivial, since it was a post-inst routine with dkms about xpad, which is the driver for PlayStation 3 controllers. It could not find the directory: /var/lib/dkms/xpad/. The next steps will fix this.

            1. Create another backup of the SD card:
            $ dd if=/dev/sdx of=retropie_sd_card_backup_after_buster_upgrade.img bs=512b
            

            This creates the file retropie_sd_card_backup_after_buster_upgrade.img.

            1. Boot into RetroPie. Fix xpad, emulationstation and raspberrypi-kernel:
            $ pkill emulationstation
            # necessary for missing "/usr/lib/arm-linux-gnueabihf/". "emulationstation" is statically compiled against "/usr/lib/arm-linux-gnuaebihf/libcurl.so.4" and so on: ldd $(command -v emulationstation)
            $ apt reinstall gcc
            # recompile "emulationstation". takes about 30 minutes(?)
            $ cd "/home/pi/RetroPie-Setup/"
            $ sudo "./retropie_setup.sh"
            Manage packages - Manage core packages - Update all installed core packages
            Exit
            # test "emulationstation". emulators will not work, since they need to be compiled against the new libraries
            $ emulationstation
            # quit "emulationstation"
            F4 or Main menu - Quit - Quit Emulationstation
            # reinstall the linux kernel. there should be no errors with "dkms" or "xpad"
            $ apt reinstall raspberrypi-kernel
            $ reboot
            
            1. Fix error VolumeControl::init() - Failed to find mixer elements!. For some reason Audio card was set to sysdefault, but sound worked even with this error:
            $ emulationstation
            Main menu - Sound settings - Audio card: "default"
            Main menu - Sound settings - Audio device: "hdmi"
            Main menu - Sound settings - System volume: "80%"
            # quit "emulationstation"
            F4 or Main menu - Quit - Quit Emulationstation
            

            All settings can be found at /opt/retropie/configs/all/emulationstation/es_settings.cfg, but I would not recommend editing this file by manually.

            1. Rename /home/pi/.asoundrc to /home/pi/.asound.rc.bak, which was installed by upgrading alsa-utils or some other related package:
            $ mv /home/pi/.asoundrc{,.bak}
            
            1. Compile all installed RetroPie packages (emulators and so on, takes about five to six hours):
            $ cd "/home/pi/RetroPie-Setup/"
            $ sudo "./retropie_setup.sh"
            Update RetroPie-Setup Script
            Update - Yes
            
            1. Check for any errors. I did not encounter any:
            $ zless "/home/pi/RetroPie-Setup/logs/rps_<iso_date>_<iso_time>.log.gz"
            
            1. Start emulationstation and test all relevant emulators.
            $ emulationstation
            # quit "emulationstation"
            F4 or Main menu - Quit - Quit Emulationstation
            
            1. Merge /boot/config.txt manually from the official RetroPie Buster image:
            $ wget "https://github.com/RetroPie/RetroPie-Setup/releases/download/4.7.1/retropie-buster-4.7.1-rpi2_3.img.gz"
            # "pigz" is "gzip", but parallelised
            $ pigz --decompress "retropie-buster-4.7.1-rpi2_3.img.gz"
            $ mount -o ro,offset="$(( 512 * 8192 ))" "retropie-buster-4.7.1-rpi2_3.img" "/mnt/"
            # compare and merge "/mnt/config.txt" with the current "RetroPie installation"
            $ umount "/mnt/"
            

            The file is appended at the end of this post.

            1. Hold packages again:
            $ apt-mark hold libraspberrypi-bin libraspberrypi-dev libraspberrypi-doc libraspberrypi0 raspberrypi-bootloader raspberrypi-kernel raspberrypi-kernel-headers libsdl1.2-dev libsdl2-dev
            
            1. Check for further errors:
            $ systemctl
            $ dmesg
            $ dmesg --follow
            $ grep --ignore-case --recursive "error\|fail" "/var/log/"
            
            1. Create another backup of the SD card:
            $ dd if=/dev/sdx of=retropie_sd_card_backup_upgrade_complete.img bs=512b
            

            This creates the file retropie_sd_card_backup_upgrade_complete.img.

            1. Cleanup
            $ rm --recursive "retropie-buster-4.7.1-rpi2_3.img" "retropie_sd_card_backup_before_buster_upgrade.img" "retropie_sd_card_backup_after_buster_upgrade.img" "first_partition_backup" "second_partition_backup" "first_partition_sd_card" "second_partition_sd_card"
            

            At this point, I was thinking of reinstalling all installed Debian packages, just to make sure, but I skipped that:

            https://unix.stackexchange.com/a/79165

            -Keks

            PS. Sorry, for necro-bumping, but your answer was annoying me. :)

            /etc/samba/smb.conf

            #
            # Sample configuration file for the Samba suite for Debian GNU/Linux.
            #
            #
            # This is the main Samba configuration file. You should read the
            # smb.conf(5) manual page in order to understand the options listed
            # here. Samba has a huge number of configurable options most of which
            # are not shown in this example
            #
            # Some options that are often worth tuning have been included as
            # commented-out examples in this file.
            #  - When such options are commented with ";", the proposed setting
            #    differs from the default Samba behaviour
            #  - When commented with "#", the proposed setting is the default
            #    behaviour of Samba but the option is considered important
            #    enough to be mentioned here
            #
            # NOTE: Whenever you modify this file you should run the command
            # "testparm" to check that you have not made any basic syntactic
            # errors.
            
            #======================= Global Settings =======================
            
            [global]
            
            ## Browsing/Identification ###
            
            # Change this to the workgroup/NT-domain name your Samba server will part of
               workgroup = WORKGROUP
            
            # Windows Internet Name Serving Support Section:
            # WINS Support - Tells the NMBD component of Samba to enable its WINS Server
            #   wins support = no
            
            # WINS Server - Tells the NMBD components of Samba to be a WINS Client
            # Note: Samba can be either a WINS Server, or a WINS Client, but NOT both
            ;   wins server = w.x.y.z
            
            # This will prevent nmbd to search for NetBIOS names through DNS.
               dns proxy = no
            
            #### Networking ####
            
            # The specific set of interfaces / networks to bind to
            # This can be either the interface name or an IP address/netmask;
            # interface names are normally preferred
            ;   interfaces = 127.0.0.0/8 eth0
            
            # Only bind to the named interfaces and/or networks; you must use the
            # 'interfaces' option above to use this.
            # It is recommended that you enable this feature if your Samba machine is
            # not protected by a firewall or is a firewall itself.  However, this
            # option cannot handle dynamic or non-broadcast interfaces correctly.
            ;   bind interfaces only = yes
            
            
            
            #### Debugging/Accounting ####
            
            # This tells Samba to use a separate log file for each machine
            # that connects
               log file = /var/log/samba/log.%m
            # Cap the size of the individual log files (in KiB).
               max log size = 1000
            
            # We want Samba to only log to /var/log/samba/log.{smbd,nmbd}.
            # Append syslog@1 if you want important messages to be sent to syslog too.
            ;  logging = file
            # If you want Samba to only log through syslog then set the following
            # parameter to 'yes'.
            #   syslog only = no
            
            # We want Samba to log a minimum amount of information to syslog. Everything
            # should go to /var/log/samba/log.{smbd,nmbd} instead. If you want to log
            # through syslog you should set the following parameter to something higher.
               syslog = 0
            
            # Do something sensible when Samba crashes: mail the admin a backtrace
               panic action = /usr/share/samba/panic-action %d
            
            
            ####### Authentication #######
            
            # Server role. Defines in which mode Samba will operate. Possible
            # values are "standalone server", "member server", "classic primary
            # domain controller", "classic backup domain controller", "active
            # directory domain controller".
            #
            # Most people will want "standalone server" or "member server".
            # Running as "active directory domain controller" will require first
            # running "samba-tool domain provision" to wipe databases and create a
            # new domain.
               server role = standalone server
            
            # If you are using encrypted passwords, Samba will need to know what
            # password database type you are using.
               passdb backend = tdbsam
            
               obey pam restrictions = yes
            
            # This boolean parameter controls whether Samba attempts to sync the Unix
            # password with the SMB password when the encrypted SMB password in the
            # passdb is changed.
               unix password sync = yes
            
            # For Unix password sync to work on a Debian GNU/Linux system, the following
            # parameters must be set (thanks to Ian Kahan <<kahan@informatik.tu-muenchen.de> for
            # sending the correct chat script for the passwd program in Debian Sarge).
               passwd program = /usr/bin/passwd %u
               passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
            
            # This boolean controls whether PAM will be used for password changes
            # when requested by an SMB client instead of the program listed in
            # 'passwd program'. The default is 'no'.
               pam password change = yes
            
            # This option controls how unsuccessful authentication attempts are mapped
            # to anonymous connections
               map to guest = bad user
            
            ########## Domains ###########
            
            #
            # The following settings only takes effect if 'server role = primary
            # classic domain controller', 'server role = backup domain controller
            # or 'domain logons' is set
            #
            
            # It specifies the location of the user's
            # profile directory from the client point of view) The following
            # required a [profiles] share to be setup on the samba server (see
            # below)
            ;   logon path = \\%N\profiles\%U
            # Another common choice is storing the profile in the user's home directory
            # (this is Samba's default)
            #   logon path = \\%N\%U\profile
            
            # The following setting only takes effect if 'domain logons' is set
            # It specifies the location of a user's home directory (from the client
            # point of view)
            ;   logon drive = H:
            #   logon home = \\%N\%U
            
            # The following setting only takes effect if 'domain logons' is set
            # It specifies the script to run during logon. The script must be stored
            # in the [netlogon] share
            # NOTE: Must be store in 'DOS' file format convention
            ;   logon script = logon.cmd
            
            # This allows Unix users to be created on the domain controller via the SAMR
            # RPC pipe.  The example command creates a user account with a disabled Unix
            # password; please adapt to your needs
            ; add user script = /usr/sbin/adduser --quiet --disabled-password --gecos "" %u
            
            # This allows machine accounts to be created on the domain controller via the
            # SAMR RPC pipe.
            # The following assumes a "machines" group exists on the system
            ; add machine script  = /usr/sbin/useradd -g machines -c "%u machine account" -d /var/lib/samba -s /bin/false %u
            
            # This allows Unix groups to be created on the domain controller via the SAMR
            # RPC pipe.
            ; add group script = /usr/sbin/addgroup --force-badname %g
            
            ############ Misc ############
            
            # Using the following line enables you to customise your configuration
            # on a per machine basis. The %m gets replaced with the netbios name
            # of the machine that is connecting
            ;   include = /home/samba/etc/smb.conf.%m
            
            # Some defaults for winbind (make sure you're not using the ranges
            # for something else.)
            ;   idmap config * :              backend = tdb
            ;   idmap config * :              range   = 3000-7999
            ;   idmap config YOURDOMAINHERE : backend = tdb
            ;   idmap config YOURDOMAINHERE : range   = 100000-999999
            ;   idmap uid = 10000-20000
            ;   idmap gid = 10000-20000
            ;   template shell = /bin/bash
            
            # Setup usershare options to enable non-root users to share folders
            # with the net usershare command.
            
            # Maximum number of usershare. 0 (default) means that usershare is disabled.
            ;   usershare max shares = 100
            
            # Allow users who've been granted usershare privileges to create
            # public shares, not just authenticated ones
               usershare allow guests = yes
            #======================= Share Definitions =======================
            
            [homes]
               comment = Home Directories
               browseable = no
            
            # By default, the home directories are exported read-only. Change the
            # next parameter to 'no' if you want to be able to write to them.
               read only = yes
            
            # File creation mask is set to 0700 for security reasons. If you want to
            # create files with group=rw permissions, set next parameter to 0775.
               create mask = 0700
            
            # Directory creation mask is set to 0700 for security reasons. If you want to
            # create dirs. with group=rw permissions, set next parameter to 0775.
               directory mask = 0700
            
            # By default, \\server\username shares can be connected to by anyone
            # with access to the samba server.
            # The following parameter makes sure that only "username" can connect
            # to \\server\username
            # This might need tweaking when using external authentication schemes
               valid users = %S
            
            # Un-comment the following and create the netlogon directory for Domain Logons
            # (you need to configure Samba to act as a domain controller too.)
            ;[netlogon]
            ;   comment = Network Logon Service
            ;   path = /home/samba/netlogon
            ;   guest ok = yes
            ;   read only = yes
            
            # Un-comment the following and create the profiles directory to store
            # users profiles (see the "logon path" option above)
            # (you need to configure Samba to act as a domain controller too.)
            # The path below should be writable by all users so that their
            # profile directory may be created the first time they log on
            ;[profiles]
            ;   comment = Users profiles
            ;   path = /home/samba/profiles
            ;   guest ok = no
            ;   browseable = no
            ;   create mask = 0600
            ;   directory mask = 0700
            
            [printers]
               comment = All Printers
               browseable = no
               path = /var/spool/samba
               printable = yes
               guest ok = no
               read only = yes
               create mask = 0700
            
            # Windows clients look for this share name as a source of downloadable
            # printer drivers
            [print$]
               comment = Printer Drivers
               path = /var/lib/samba/printers
               browseable = yes
            read only = yes
               guest ok = no
            # Uncomment to allow remote administration of Windows print drivers.
            # You may need to replace 'lpadmin' with the name of the group your
            # admin users are members of.
            # Please note that you also need to set appropriate Unix permissions
            # to the drivers directory for these users to have write rights in it
            ;   write list = root, @lpadmin
            
            [roms]
            comment = roms
            path = "/home/pi/RetroPie/roms"
            writeable = yes
            guest ok = yes
            create mask = 0644
            directory mask = 0755
            force user = pi
            [bios]
            comment = bios
            path = "/home/pi/RetroPie/BIOS"
            writeable = yes
            guest ok = yes
            create mask = 0644
            directory mask = 0755
            force user = pi
            [configs]
            comment = configs
            path = "/opt/retropie/configs"
            writeable = yes
            guest ok = yes
            create mask = 0644
            directory mask = 0755
            force user = pi
            [splashscreens]
            comment = splashscreens
            path = "/home/pi/RetroPie/splashscreens"
            writeable = yes
            guest ok = yes
            create mask = 0644
            directory mask = 0755
            force user = pi
            

            /etc/bluetooth/main.conf

            [General]
            
            # Defaults to 'BlueZ X.YZ', if Name is not set here and plugin 'hostname' is not loaded.
            # The plugin 'hostname' is loaded by default and overides the Name set here so
            # consider modifying /etc/machine-info with variable PRETTY_HOSTNAME=<NewName> instead.
            #Name = BlueZ
            
            # Default device class. Only the major and minor device class bits are
            # considered. Defaults to '0x000000'.
            #Class = 0x000100
            
            # How long to stay in discoverable mode before going back to non-discoverable
            # The value is in seconds. Default is 180, i.e. 3 minutes.
            # 0 = disable timer, i.e. stay discoverable forever
            DiscoverableTimeout = 0
            
            # How long to stay in pairable mode before going back to non-discoverable
            # The value is in seconds. Default is 0.
            # 0 = disable timer, i.e. stay pairable forever
            PairableTimeout = 0
            
            # Use vendor id source (assigner), vendor, product and version information for
            # DID profile support. The values are separated by ":" and assigner, VID, PID
            # and version.
            # Possible vendor id source values: bluetooth, usb (defaults to usb)
            #DeviceID = bluetooth:1234:5678:abcd
            
            # Do reverse service discovery for previously unknown devices that connect to
            # us. This option is really only needed for qualification since the BITE tester
            # doesn't like us doing reverse SDP for some test cases (though there could in
            # theory be other useful purposes for this too). Defaults to 'true'.
            #ReverseServiceDiscovery = true
            
            # Enable name resolving after inquiry. Set it to 'false' if you don't need
            # remote devices name and want shorter discovery cycle. Defaults to 'true'.
            #NameResolving = true
            
            # Enable runtime persistency of debug link keys. Default is false which
            # makes debug link keys valid only for the duration of the connection
            # that they were created for.
            #DebugKeys = false
            
            # Restricts all controllers to the specified transport. Default value
            # is "dual", i.e. both BR/EDR and LE enabled (when supported by the HW).
            # Possible values: "dual", "bredr", "le"
            #ControllerMode = dual
            
            # Enables Multi Profile Specification support. This allows to specify if
            # system supports only Multiple Profiles Single Device (MPSD) configuration
            # or both Multiple Profiles Single Device (MPSD) and Multiple Profiles Multiple
            # Devices (MPMD) configurations.
            # Possible values: "off", "single", "multiple"
            #MultiProfile = off
            
            # Permanently enables the Fast Connectable setting for adapters that
            # support it. When enabled other devices can connect faster to us,
            # however the tradeoff is increased power consumptions. This feature
            # will fully work only on kernel version 4.1 and newer. Defaults to
            # 'false'.
            #FastConnectable = false
            
            # Default privacy setting.
            # Enables use of private address.
            # Possible values: "off", "device", "network"
            # "network" option not supported currently
            # Defaults to "off"
            # Privacy = off
            
            [GATT]
            # GATT attribute cache.
            # Possible values:
            # always: Always cache attributes even for devices not paired, this is
            # recommended as it is best for interoperability, with more consistent
            # reconnection times and enables proper tracking of notifications for all
            # devices.
            # yes: Only cache attributes of paired devices.
            # no: Never cache attributes
            # Default: always
            #Cache = always
            
            # Minimum required Encryption Key Size for accessing secured characteristics.
            # Possible values: 0 and 7-16. 0 means don't care.
            # Defaults to 0
            # MinEncKeySize = 0
            
            [Policy]
            #
            # The ReconnectUUIDs defines the set of remote services that should try
            # to be reconnected to in case of a link loss (link supervision
            # timeout). The policy plugin should contain a sane set of values by
            # default, but this list can be overridden here. By setting the list to
            # empty the reconnection feature gets disabled.
            #ReconnectUUIDs=00001112-0000-1000-8000-00805f9b34fb,0000111f-0000-1000-8000-00805f9b34fb,0000110a-0000-1000-8000-00805f9b34fb
            
            # ReconnectAttempts define the number of attempts to reconnect after a link
            # lost. Setting the value to 0 disables reconnecting feature.
            #ReconnectAttempts=7
            
            # ReconnectIntervals define the set of intervals in seconds to use in between
            # attempts.
            # If the number of attempts defined in ReconnectAttempts is bigger than the
            # set of intervals the last interval is repeated until the last attempt.
            #ReconnectIntervals=1,2,4,8,16,32,64
            
            # AutoEnable defines option to enable all controllers when they are found.
            # This includes adapters present on start as well as adapters that are plugged
            # in later on. Defaults to 'false'.
            AutoEnable=true
            

            /boot/config.txt

            # For more options and information see
            # http://rpf.io/configtxt
            # Some settings may impact device functionality. See link above for details
            
            # uncomment if you get no picture on HDMI for a default "safe" mode
            #hdmi_safe=1
            
            # uncomment this if your display has a black border of unused pixels visible
            # and your display can output without overscan
            #disable_overscan=1
            
            # uncomment the following to adjust overscan. Use positive numbers if console
            # goes off screen, and negative if there is too much border
            #overscan_left=16
            #overscan_right=16
            #overscan_top=16
            #overscan_bottom=16
            
            # uncomment to force a console size. By default it will be display's size minus
            # overscan.
            #framebuffer_width=1280
            #framebuffer_height=720
            
            # uncomment if hdmi display is not detected and composite is being output
            #hdmi_force_hotplug=1
            
            # uncomment to force a specific HDMI mode (this will force VGA)
            #hdmi_group=1
            #hdmi_mode=1
            
            # uncomment to force a HDMI mode rather than DVI. This can make audio work in
            # DMT (computer monitor) modes
            #hdmi_drive=2
            
            # uncomment to increase signal to HDMI, if you have interference, blanking, or
            # no display
            #config_hdmi_boost=4
            
            # uncomment for composite PAL
            #sdtv_mode=2
            
            #uncomment to overclock the arm. 700 MHz is the default.
            #arm_freq=800
            
            # Uncomment some or all of these to enable the optional hardware interfaces
            #dtparam=i2c_arm=on
            #dtparam=i2s=on
            #dtparam=spi=on
            
            # Uncomment this to enable infrared communication.
            #dtoverlay=gpio-ir,gpio_pin=17
            #dtoverlay=gpio-ir-tx,gpio_pin=18
            
            # Additional overlays and parameters are documented /boot/overlays/README
            
            # Enable audio (loads snd_bcm2835)
            dtparam=audio=on
            
            [pi4]
            # Enable DRM VC4 V3D driver on top of the dispmanx display stack
            dtoverlay=vc4-fkms-v3d
            max_framebuffers=2
            
            [all]
            #dtoverlay=vc4-fkms-v3d
            gpu_mem_256=128
            gpu_mem_512=256
            gpu_mem_1024=256
            overscan_scale=1
            

            Gentoo Wiki profile: https://wiki.gentoo.org/wiki/User:Keks24

            YFZdudeY 1 Reply Last reply Reply Quote 0
            • YFZdudeY
              YFZdude @keks24
              last edited by

              @keks24 said in Trouble with RetroPie after updating from Stretch to Buster:

              Reading this hurts me...

              I successfully upgraded RetroPie to Debian Buster in the most proper way I could.

              Kudos for your skill in operating within the framework of Linux to accomplish this. You clearly are no average user.

              I'm going to go out on a limb here and assume that @mitu was probably giving the best advice that would apply to most users that frequent this forum.

              I have spent a bit of time getting comfortable with many things linux and I have to admit after reading your guide I think if I were in this position I would opt to just write a new image and copy over the configs and roms. For me it would probably be easier and faster.

              Nice to know it is possible to do this though. Thanks for sharing!

              1 Reply Last reply Reply Quote 1
              • mituM
                mitu Global Moderator
                last edited by

                @keks24 said in Trouble with RetroPie after updating from Stretch to Buster:

                PS. Sorry, for necro-bumping, but your answer was annoying me. :)

                Thanks for the follow-up, but reading your post just enforces that the upgrade is not trivial and shouldn't be attempted by most users here in the forums - which have no additional Linux installation to perform all the steps nor the experience to run all those commands.
                Anecdotally, there were a few similar guides posted, followed by some users successfully, only for some to discover a few weeks/months later that something wasn't working right, with some obscure errors that couldn't be traced and didn't show up on a regular installation.
                Given that the upstream Raspberry Pi OS creators don't explicitly support this upgrade, I don't think we (RetroPie) will recommend it.

                keks24K 1 Reply Last reply Reply Quote 1
                • keks24K
                  keks24 @mitu
                  last edited by keks24

                  @mitu said in Trouble with RetroPie after updating from Stretch to Buster:

                  @keks24 said in Trouble with RetroPie after updating from Stretch to Buster:

                  PS. Sorry, for necro-bumping, but your answer was annoying me. :)

                  Thanks for the follow-up, but reading your post just enforces that the upgrade is not trivial and shouldn't be attempted by most users here in the forums - which have no additional Linux installation to perform all the steps nor the experience to run all those commands.

                  I will add a note for that. :)

                  Given that the upstream Raspberry Pi OS creators don't explicitly support this upgrade [...]

                  Could you elaborate this and provide some references, please?

                  Raspbian is a derivative of Debian. Steps 6 to 9 describe the entire upgrade process of an installed Debian operating system, which is also intended and applicable to Raspbian.

                  I am a Linux administrator and had to maintain some Debian Wheezy servers (99,99% availability) in the past. On company level, you do not want to have any outage, but rebooting, to apply the new-installed kernel was within the outage period.

                  -Keks

                  Gentoo Wiki profile: https://wiki.gentoo.org/wiki/User:Keks24

                  1 Reply Last reply Reply Quote 0
                  • mituM
                    mitu Global Moderator
                    last edited by

                    @keks24 said in Trouble with RetroPie after updating from Stretch to Buster:

                    Could you elaborate this and provide some references, please?

                    I think every new Raspberry Pi OS (was Raspbian once) mentions this in their release notes. For instance, for the Buster release:

                    We do not recommend upgrading an existing Stretch (or earlier) system to Buster – we can’t know what changes everyone has made to their system, and so have no idea what may break when you move to Buster. However, we have tested the following procedure for upgrading, and it works on a clean version of the last Stretch image we released. That does not guarantee it will work on your system, and we cannot provide support (or be held responsible) for any problems that arise if you try it.

                    keks24K 1 Reply Last reply Reply Quote 0
                    • keks24K
                      keks24 @mitu
                      last edited by keks24

                      @mitu said in Trouble with RetroPie after updating from Stretch to Buster:

                      @keks24 said in Trouble with RetroPie after updating from Stretch to Buster:

                      Could you elaborate this and provide some references, please?

                      I think every new Raspberry Pi OS (was Raspbian once) mentions this in their release notes. For instance, for the Buster release:

                      We do not recommend upgrading an existing Stretch (or earlier) system to Buster – we can’t know what changes everyone has made to their system, and so have no idea what may break when you move to Buster. However, we have tested the following procedure for upgrading, and it works on a clean version of the last Stretch image we released. That does not guarantee it will work on your system, and we cannot provide support (or be held responsible) for any problems that arise if you try it.

                      Ah, thank you for the link!

                      In my opinion, they are making it a little bit easy on themselves here, but I guess, that they do not want to let the (normal) user go through the entire partitioning resizing process of /boot/ here.

                      They also increased the partition of their official images, due to the large kernel files of Debian Buster:

                      $ fdisk --list * | grep "Device\|img1" | column -t
                      Device                                     Boot  Start   End     Sectors  Size  Id   Type
                      2020-12-02-raspios-buster-armhf-full.img1  8192  532479  524288  256M     c     W95  FAT32  (LBA)
                      Device                                     Boot  Start   End     Sectors  Size  Id   Type
                      2020-12-02-raspios-buster-armhf.img1       8192  532479  524288  256M     c     W95  FAT32  (LBA)
                      Device                                     Boot  Start   End     Sectors  Size  Id   Type
                      2020-12-02-raspios-buster-armhf-lite.img1  8192  532479  524288  256M     c     W95  FAT32  (LBA)
                      
                      (retropie) $ df --human-readable /boot
                      Filesystem      Size  Used Avail Use% Mounted on
                      /dev/mmcblk0p1  512M   47M  466M  10% /boot
                      

                      Gentoo Wiki profile: https://wiki.gentoo.org/wiki/User:Keks24

                      1 Reply Last reply Reply Quote 0
                      • 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.