Upgrade firmware on Windows 10 - Hexxeh/rpi-update GitHub Wiki

Hi guys,

some people may have the need to upgrade the firmware of the raspberry but are only running Windows on their machine. For example, if you use ubuntu mate. In the last stable version (16.04), there is an older firmware used. In that case, a raspberry pi 3 B+ wouldn't boot up. However, I usually work with Ubuntu inside of a VM environment, but the workstation player doesn't work well with intern sd card readers. In general, I recommend using a USB sd card reader. But sometimes, you run out of luck and don't have one when you need it. This is a workaround how I solved it. Please note, that you already have written the image to your sd card, if not, you can use Win32DiskImager are any other sufficient tool on Windows.

  1. Go to the Control Panel of your Windows Machine and open the Programs and Features submenu. Click on add Windows feature and choose the Linux subsystem. After that, you have to reboot your machine.
  2. Go to the Microsoft Store and install the ubuntu subsystem.
  3. Open the ubuntu app on windows, you have to set it up correctly, if you see the ubuntu dash, you have everything you need.
  4. Install binutils
sudo apt-get install binutils
  1. As your windows machine has to be able to read/write to ext4 based filesystems, you have to install a driver like the ext2fsd one you can find here: https://sourceforge.net/projects/ext2fsd/
  2. Now you can install the rpi-update utility by running
sudo curl -L --output /usr/bin/rpi-update https://raw.githubusercontent.com/Hexxeh/rpi-update/master/rpi-update && sudo chmod +x /usr/bin/rpi-update
  1. As you may know, you can mount your windows drives by running the following command:
sudo mkdir /mnt/x
sudo mount -t drvfs,rw X: /mnt/x

You have to do this for both partitions, the root and the boot partition of your raspberry pi sd card. In my case, I mounted D: and E:. However, running the following command did not work for me:

sudo ROOT_PATH=/mnt/e BOOT_PATH=/mnt/d rpi-update

I got several errors because symlinks couldn't be created. So I decided to run the following command:

sudo mkdir /tmp/e
sudo mkdir /tmp/d
sudo ROOT_PATH=/tmp/e BOOT_PATH=/tmp/d rpi-update

Please ignore the warnings, you'll get them because the tmp folders are empty. 8. But copying the files works, you also get errors on the symlinks, if they already exist:

sudo cp -r /tmp/e/* /mnt/e
sudo cp -r /tmp/d/* /mnt/d
  1. Don't forget to unmount your sd card on your ubuntu subsystem and also on your windows host
sudo umount /mnt/e
sudo umount /mnt/d

Enjoy :)