How to enable support for Raspberry Pi 3B+ and 3A+ in Ubuntu MATE


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:

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:

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:

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 which you will need):

sudo cp /etc/resolv.conf /mnt/etc/resolv.conf

Now, mount proc and dev directories:

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!

sudo chroot /mnt

Update the bootloader files:

sudo dpkg -i raspberrypi-bootloader_1.20181112-1_armhf.deb

Add WiFi firmware files:

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:

git clone
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:

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.


Looks very similar to my own instruction, but a bit simpler :slight_smile:


Didn’t even see your instructions, sorry about that. The differences is that in my tutorial, I used the latest stable bootloader (which includes support for both the Pi 3B+ and 3A+) instead of just running rpi-update. rpi-update upgrades the bootloader files on your system to the very latest available versions, which could be unstable. Also, I believe that you need three files to get WiFi working, not just one. Also, I provided a method if you wanted to enable support directly on another Pi, you can do so. But still, your tutorial was good.