8

The older Raspberry Pi's (Pi 1, Pi 2 and Pi Zero) couldn't boot from a USB-device, but the Raspberry Pi 3 has support for it. The Pi and Pi 2 have semi-support for it (using an SD-card with a single bootfile). The Pi Zero W is a remake of their older boards but it's newer than the Pi 3.

Is the Raspberry Pi Zero W fully compatible with the new bootcode? Can the Raspberry Pi Zero W boot from USB without using an SD card?

anonymoose
  • 416
  • 1
  • 4
  • 12
Max
  • 387
  • 1
  • 2
  • 8
  • 1
    This may be of some use: [usbboot](https://github.com/raspberrypi/usbboot). VIDEO: https://www.youtube.com/watch?v=sm1WUY5XgrQ – John La Rooy Feb 13 '18 at 21:15

3 Answers3

4

EDIT: This is possible if the Zero/Zero W is set up to act as a USB device and gets the boot files from a host machine that it's plugged into. See Janghou's answer below for details.

The rest of this post applies to booting the Zero W when it is acting as a USB host, which appears to be what the original question was asking.


Not with no SD card at all. The Pi Zero W uses a BCM2835, which contains the old SD card-only bootloader. It's not so much a question of the Pi being older or newer as of which processor it uses.

Also, this thread states that they can only really give the BCM2835/BCM2836* a new bootloader if somebody is willing to donate a LOT of money to create a new mask rom that could be used to program the chips.

However, as Toothbrush pointed out in the comments, you can use an SD card with just bootcode.bin on it and you will be able to boot from a USB device.

*The now out of production BCM2836, which was used in the Pi 2 until that model switched to use the BCM2837, uses the old bootloader as well.

anonymoose
  • 416
  • 1
  • 4
  • 12
  • My Pi Zero W (and Pi 3) got delivered today and I can confirm that you are correct. – Max Mar 09 '17 at 13:21
  • 2
    If you copy only `bootcode.bin` onto the SD card, you can [boot from a USB mass storage device](https://www.raspberrypi.org/documentation/hardware/raspberrypi/bootmodes/host.md). See https://github.com/raspberrypi/documentation/blob/master/hardware/raspberrypi/bootmodes/README.md#special-bootcodebin-only-boot-mode for details. – Toothbrush Mar 13 '17 at 18:56
  • @Toothbrush, the question states "without using an SD card." That implies no SD card at all, not even just for boot files. – anonymoose Mar 13 '17 at 20:35
  • 2
    @anonymoose Yes, my intention was to note that you could boot from USB, even on those old devices which do not natively support it. You could potentially buy a very cheap 64MB MicroSD card. Also, please note that Max asks **two** questions. "Is the new Raspberry Pi Zero W fully compatible with the new bootcode?" – Not without a MicroSD card. "Can the Raspberry Pi Zero W boot from USB without using an SD card?" – No, not without an SD card with bootcode.bin. – Toothbrush Mar 13 '17 at 20:40
  • 1
    @Toothbrush True. I'll update my answer. – anonymoose Mar 13 '17 at 20:51
  • @Toothbrush as the resources seem to have expired - all that's required is that binary file on the sd card and then `dd if=raspbian.img of=/dev/sdX` and it should boot? – php_nub_qq Dec 12 '21 at 22:07
  • 2
    @php_nub_qq Yes, you can find the details at https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#special-bootcode-bin-only-boot-mode. – Toothbrush Dec 13 '21 at 11:21
4

Yes

You can boot an RPI Zero without a SD card through an USB cable connected with a PC.

You need Raspberry Pi USB booting code that is available here on Github or can be installed on a RPI or Raspberry Desktop computer (PC) running Stretch.

It's available since the Stretch update of 2017-12:

sudo apt-get install usbbootgui

Just connect a RPI Zero with an USB cable in the USB OTG and without an SD card, a GUI will pop-up:

  • GPIO expansion board
  • eMMC /SD card reader
  • Custom application

For accessing GIO pins.

Is should be possible to boot Stretch (or any other application) through USB, although I've not seen a working example yet.

A first step into booting Stretch Lite (crashes when looking for the rootfs) can be achieved with:

// setup a Loop device and scan partition table
sudo losetup -P /dev/loop0 ~/Downloads/2017-11-29-raspbian-stretch-lite.img
// if loop device busy try /dev/loop1
// mount the loop device boot partition
sudo mount /dev/loop0p1/ /media/pi/
// boot the pi zero from the mounted image
sudo rpiboot -d /media/pi/

The pi Zero will boot and show the red Raspberry Icon, but there it stops.

This blog-post describes how to boot Raspbian Stretch on a Zero without an SD card.

Janghou
  • 1,406
  • 1
  • 16
  • 19
  • Is it possible to do this from a Mac? – Petrus Theron Dec 06 '18 at 12:04
  • I guess it is, it's all open source. I guess, you need to compile usbbootgui, and mount an image on a nfs-server, or try a ubuntu virtual machine. – Janghou Dec 07 '18 at 21:13
  • I've been trying to recreate your blog post however `usbboot` doesn't recognize a new device when I plug in my Zero W. Do I have to put it into device mode first? If so, is that possible without an SD card? – genghiskhan Mar 22 '20 at 17:58
0

Simple answer is "No, and no."

Raspberry Pi Zero W was released newer than the Pi 3. But Raspberry Pi Zero W use older chip--BCM2835. It can do same thing as you mentioned--The Pi and Pi 2, and Pi Zero W have semi-support for it (using an SD-card with a single bootfile).

I appreciate all the answers but when I am reading answers it made me more confusing than what was asked--I think because I am quite beginner in the Raspberry Pi.

So I think it might helpful for beginner like me.