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
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/
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
Code: Select all
sudo cp /etc/resolv.conf /mnt/etc/resolv.conf
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
Code: Select all
sudo chroot /mnt
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
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/
Code: Select all
git clone https://github.com/raspberrypi/firmware.git
sudo cp -r firmware/boot/* /mnt/boot/
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