I'm using generic 8Gb USB stick which has 2017-04-10-raspbian-jessie-lite.img written to it using Win32DiskImager. It looks like RPi's usb hub/ethernet chip quite literally doesn't power on (It works flawlessly in Raspbian), leds on both USB stick or Ethernet port never light up. If SDcard is inserted RPi will try to boot from it. I tried leaving only bootcode.bin, start.elf and config.txt (with program_usb_boot_mode=1 in it) on FAT partition, but it still tried to continue booting from SD and complained about missing kernel file. I also noticed that last byte of OTP changed after booting with program_usb_boot_mode=1 for the first time: 66:00000000 -> 66:000000aa (before and after), the boot mode bit appears to be set correctly: 17:3020000a

NoNameHere wrote:Considering that Ethernet boot also shows no signs of working (Cable plugged in, but leds on Ethernet port never light up), i guess my RPi just can't boot from USB/Ethernet.

Have you checked it thoroughly?

I tried adding program_gpio_bootmode=1 to /boot/config.txt and OTP changed correctly, I pulled GPIO 22 to low and checked it with gpio readall. According to boot flow description, GPIO 22 should correspond to SD1 bootmode, and pulling it to low should disable it, yet RPi just boots from an SDcard instead of doing nothing.
I guess at this point problem is somwhere in the BCM2837, or I was doing something wrong all along.

Run echo program_usb_boot_mode=1 | sudo tee -a /boot/config.txt from a command line or LXTerminal window.

Reboot from the SDCard.

Pull the SDCard, plug in the bootable USB device.

For regular USB booting you need to set the OTP once with that boot from an SDCard with "program_usb_boot_mode".
You won't need to pull any GPIOs, that's only to change the boot order once the OTP bit is set.

So both program_usb_boot_mode=1 and program_gpio_bootmode=1 did what they should.
GPIOs doesn't seem to affect anything, I tried pulling both GPIO 22 and GPIO 23 to low (Corresponding to SD1 and SD2 bootmodes, https://www.raspberrypi.org/documentati ... ootflow.md) but RPi ignores it and boots from SD, also no results with SDcard ejected and GPIO 26 pulled to high: USB ports just never power on. It seems that my RPi completely ignores bits in OTP memory or I have BCM2837 with old bootrom (if such ever existed).
And yes, everything was performed on a fully updated installation of Raspbian.

DougieLawson wrote:...pull GPIO 22 & 23 LOW (connected to a GND pin) to prevent it trying to read any SDCards.

I did exactly that, gpio readall confirmed that both GPIO 22 and 23 are at low (22 is at high by default). Yet RPi ignores that and boots from SDcard. If SDcard is not inserted, RPi just never powers on USB (No 5V power at ports).

DougieLawson wrote:I blame it on visiting The Doctor Who Experience in Cardiff on Thursday.

Lucky you! There's not long left for that place (unless you have a TARDIS and can visit it earlier). We're hoping to be able to get there before it closes.

We were in Cardiff for Robbie Williams at the Principality Stadium on Wednesday. Dr Who and lunch with a good friend on Thurs. I hope someone can workout how to get a reprieve for the Dr Who exhibit, they've got so much that was rescued from BBC Lime Grove and from BBC Television Centre.

to add the required line to config.txt OK
I then rebooted and following the advice I used

$ vcgencmd otp_dump | grep 17:

to check to see if the config has changed as it should. However, it reports back

17:1020000a

instead of the

17:3020000a

which is what we require.
What do I do next before proceeding.
If this problem has occurred before, I apologize, but have not been able to find any reference to it.

rexlee in Oz

Edit. NOW SOLVED
I had a Raspbian distribution which came with openPlotter. I reformatted another SD card(which had been corrupted) and installed the latest Raspbian and I got the USB boot set OK this time.

lorccan wrote:I discovered what I was missing - needed to add the program_usb_boot_mode=1 to the end of /boot/config.txt on the USB drive as well

That's not true. You need it on the SDCard /boot/config.txt for the last boot you do from SDCard before you attempt to boot from USB. I have three raspberries that boot from USB and do not have program_usb_boot_mode in any config.txt.