code_exec
Posts: 195
Joined: Sun Sep 30, 2018 12:25 pm

Troubleshoot OS compatibility with Raspberry Pi 3B+ and 3A+

Fri Nov 23, 2018 4:38 pm

These instructions also apply to the Lubuntu and Xubuntu images available on the Ubuntu Pi Flavour Maker website, as well as any other 32-bit distro for the Raspberry Pi.

People have been reporting that Ubuntu MATE has not been booting on the Pi 3B+ but boots perfectly on older Pi models. This is because Ubuntu MATE and some other distros uses old bootloader files which are incompatible with the Pi 3B+ and 3A+. You can easily update the bootloader files to the latest available versions using rpi-update, but this downloads the very latest bootloader files which may be unstable.

You can install the latest stable bootloader directly on your desired OS on a supported Pi model (such as the Pi 2) or on another PC.

Updating bootloader files directly on a Pi running desired OS

Updating the bootloader directly on another Pi running your desired OS is very easy. Simply run:

Code: Select all

wget http://archive.raspberrypi.org/debian/pool/main/r/raspberrypi-firmware/raspberrypi-bootloader_1.20181112-1_armhf.deb
sudo dpkg -i raspberrypi-bootloader_1.20181112-1_armhf.deb
After that, you’ll need to add some WiFi firmware files so that the built-in WiFi works:

Code: Select all

wget https://github.com/RPi-Distro/firmware-nonfree/raw/master/brcm/brcmfmac43455-sdio.bin
wget https://github.com/RPi-Distro/firmware-nonfree/raw/master/brcm/brcmfmac43455-sdio.clm_blob
wget https://github.com/RPi-Distro/firmware-nonfree/raw/master/brcm/brcmfmac43455-sdio.txt 
sudo cp *sdio* /lib/firmware/brcm/
Then shutdown the Pi, take out the microSD card, and insert it into your Pi 3B+ or 3A+, and then power it on. Your desired OS should start booting up.

Updating bootloader files on another PC

Updating the bootloader files on another PC is harder than updating them directly on the Pi. You’ll need to be running a Linux distro to be able to do this. This tutorial assumes that you are using either Ubuntu or Debian.

First of all, install QEMU User Emulation support packages so that you can chroot into Linux filesystems designed for different architectures:

sudo apt install qemu-user-static binfmt-support
Find out the block name device of your microSD card by running sudo fdisk -l and looking for a device that describes your microSD card. For example, if you have an 8GB microSD, a 7.9GB device is likely your microSD card.

Once you’ve found out the device name of your microSD, mount it to /mnt. For example, if your microSD’s device name was /dev/mmcblk0, run:

Code: Select all

sudo mount /dev/mmcblk0p2 /mnt
sudo mount /dev/mmcblk0p1 /mnt/boot
After that, copy over your PC’s resolv.conf file (required for internet access inside the chroot which you will need):

Code: Select all

sudo cp /etc/resolv.conf /mnt/etc/resolv.conf
Now, mount proc and dev directories:

Code: Select all

sudo mount -o bind /proc /mnt/proc
sudo mount -o bind /dev /mnt/dev
sudo mount -o bind /dev/pts /mnt/dev/pts
Then chroot in!

Code: Select all

sudo chroot /mnt
Update the bootloader files:

Code: Select all

wget http://archive.raspberrypi.org/debian/pool/main/r/raspberrypi-firmware/raspberrypi-bootloader_1.20181112-1_armhf.deb
sudo dpkg -i raspberrypi-bootloader_1.20181112-1_armhf.deb
Add WiFi firmware files:

Code: Select all

wget https://github.com/RPi-Distro/firmware-nonfree/raw/master/brcm/brcmfmac43455-sdio.bin
wget https://github.com/RPi-Distro/firmware-nonfree/raw/master/brcm/brcmfmac43455-sdio.clm_blob
wget https://github.com/RPi-Distro/firmware-nonfree/raw/master/brcm/brcmfmac43455-sdio.txt 
sudo cp *sdio* /lib/firmware/brcm/
If you get an operation not permitted error when trying to update the bootloader, then run the following commands outside of the chroot instead:

Code: Select all

git clone https://github.com/raspberrypi/firmware.git
sudo cp -r firmware/boot/* /mnt/boot/
Once cp has finished copying the bootloader files, add the WiFi firmware by chrooting into the filesystem and following the instructions to add WiFi files.

Exit your microSD card’s root filesystem by entering ‘exit’ in the bash prompt. Then unmount dev, proc, and your microSD card:

Code: Select all

sudo umount /mnt/dev/pts
sudo umount /mnt/dev
sudo umount /mnt/proc
sudo umount /mnt/boot
sudo umount /mnt
Put the microSD card into your Pi 3B+ or 3A+ and turn it on. If all’s gone well, your desired OS should load successfully.
Last edited by code_exec on Wed Dec 05, 2018 6:42 am, edited 1 time in total.
Ubuntu 18.04 LTS desktop images for the Raspberry Pi 3.

https://github.com/CodeExecution/Ubuntu-ARM64-RPi

User avatar
HawaiianPi
Posts: 3191
Joined: Mon Apr 08, 2013 4:53 am
Location: Aloha, Oregon USA

Re: Troubleshoot OS compatibility with Raspberry Pi 3B+

Tue Nov 27, 2018 9:29 pm

The rpi-update command can be used with a hash to specify a particular kernel/firmware version. So it should be possible to install the latest stable kernel and firmware with rpi-update. HOWEVER ... that will get the system booting, but it may only be the beginning of the problems you'll need to solve. There is a thread here somewhere about getting Ubuntu Mate running on the 3B+ so see if you can find that, as it has some good info (be warned that it's a long read).
My mind is like a browser. 27 tabs are open, 9 aren't responding,
lots of pop-ups...and where is that annoying music coming from?

code_exec
Posts: 195
Joined: Sun Sep 30, 2018 12:25 pm

Re: Troubleshoot OS compatibility with Raspberry Pi 3B+ and 3A+

Wed Dec 05, 2018 6:44 am

Updated tutorial to provide easier instructions including two methods on how to solve the problem.
Ubuntu 18.04 LTS desktop images for the Raspberry Pi 3.

https://github.com/CodeExecution/Ubuntu-ARM64-RPi

User avatar
DavidS
Posts: 3710
Joined: Thu Dec 15, 2011 6:39 am
Location: USA
Contact: Website

Re: Troubleshoot OS compatibility with Raspberry Pi 3B+ and 3A+

Wed Dec 05, 2018 1:51 pm

This only talks about a quick fix for getting Linux based OS's to boot, not about the compatibility issues that may exist between the RPi 3B and 3B+.

I was kind of hoping for a consolidated list of everything that would effect compatibility so that I could make sure that OS-Development could be done in 100% compatible ways.
The Raspberry Pi is an ARM computer, that runs many Operating Systems, including Linux, RISC OS, BSD, Pi64, CP/M as well as many more.
Soon to add AROS to the list of operating systems.

Return to “Other”