Trouble with RetroPie after updating from Stretch to Buster
-
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 -
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 oldconfig.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.
-
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.
-
@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 allRetroPie packages
are compiled fromsource
and I am writing all instructions to users withadvanced to expert
Linux knowledge with anI-can-think-and-do-not-just-copy-paste-things
attitude, who are also using aseperate Linux distribution
.Be
very aware
, that there might belong-term consequences
, which maycause issues
when doing further updates:- Create a
backup
of theSD 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
- Remove the
second partition
of theSD card
, so thefirst partition
(/boot/
) can be extended. This is necessary, since thekernel files
ofDebian Buster
are too big and57 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
Format
both partitions of theSD card
:
$ mkfs.fat -F 16 /dev/sdx1 $ mkfs.ext4 /dev/sdx2
- Mount both partitions of the
backup
asread-only
and mount both partitions of theSD card
, torestore
the files to theSD 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"
- Create another
backup
of theSD 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.- Boot into
Raspbian
andupgrade
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
- Prepare the
upgrade
toDebian 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"
- 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.
- Upgrade to
Debian Buster
:
$ apt upgrade $ apt full-upgrade $ poweroff
There will be one question about
WINS support
viaSamba
, 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 apost-inst
routine withdkms
aboutxpad
, which is the driver forPlayStation 3
controllers. It could not find the directory:/var/lib/dkms/xpad/
. The next steps will fix this.- Create another
backup
of theSD 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
.- Boot into
RetroPie
. Fixxpad
,emulationstation
andraspberrypi-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
- Fix error
VolumeControl::init() - Failed to find mixer elements!
. For some reasonAudio card
was set tosysdefault
, 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 wouldnot recommend editing
this file by manually.- Rename
/home/pi/.asoundrc
to/home/pi/.asound.rc.bak
, which was installed by upgradingalsa-utils
or some other related package:
$ mv /home/pi/.asoundrc{,.bak}
Compile
all installedRetroPie packages
(emulators
and so on, takes aboutfive to six hours
):
$ cd "/home/pi/RetroPie-Setup/" $ sudo "./retropie_setup.sh" Update RetroPie-Setup Script Update - Yes
Check
for any errors. I did not encounter any:
$ zless "/home/pi/RetroPie-Setup/logs/rps_<iso_date>_<iso_time>.log.gz"
- Start
emulationstation
and test all relevantemulators
.
$ emulationstation # quit "emulationstation" F4 or Main menu - Quit - Quit Emulationstation
- Merge
/boot/config.txt
manually from the officialRetroPie 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.
- 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
- Check for further errors:
$ systemctl $ dmesg $ dmesg --follow $ grep --ignore-case --recursive "error\|fail" "/var/log/"
- Create another
backup
of theSD 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
.- 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
- Create a
-
@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!
-
@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. -
@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 ofDebian
. Steps6
to9
describe the entire upgrade process of an installedDebian
operating system, which is also intended and applicable toRaspbian
.I am a
Linux administrator
and had to maintain someDebian 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
-
@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.
-
@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
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.