0

I have a raspberry pi 3B and I am trying to enable network boot from the ROM so that I can load firmware, uboot, kernel, etc. over the network and I don't have to use SD card.

So I ensured that the network boot is ON for my Pi :

$ vcgencmd otp_dump | grep 17:
17:3020000a

I removed the SD card and powered on my pi. I also started tcpdump tracing. I can see that the Pi did send DHCP request and got the IP address in response from my dhcp server.

23:17:06.894031 IP (tos 0x0, ttl 128, id 0, offset 0, flags [none], proto UDP (17), length 350)
    0.0.0.0.bootpc > 255.255.255.255.bootps: [no cksum] BOOTP/DHCP, Request from b8:27:eb:64:24:7d (oui Unknown), length 322, xid 0x26f30339, Flags [none] (0x0000)
      Client-Ethernet-Address b8:27:eb:64:24:7d (oui Unknown)
      Vendor-rfc1048 Extensions
        Magic Cookie 0x63825363
        DHCP-Message (53), length 1: Discover
        Parameter-Request (55), length 14:
          Vendor-Option (43), Vendor-Class (60), BF (67), Unknown (128)
          Unknown (129), Unknown (130), Unknown (131), Unknown (132)
          Unknown (133), Unknown (134), Unknown (135), TFTP (66)
          Subnet-Mask (1), Default-Gateway (3)
        ARCH (93), length 2: 0
        NDI (94), length 3: 1.2.1
        GUID (97), length 17: 0.125.36.100.85.125.36.100.85.125.36.100.85.125.36.100.85
        Vendor-Class (60), length 32: "PXEClient:Arch:00000:UNDI:002001"
23:17:06.894417 IP (tos 0xc0, ttl 64, id 44357, offset 0, flags [none], proto UDP (17), length 328)
    archlinux.bootps > 10.0.0.25.bootpc: [udp sum ok] BOOTP/DHCP, Reply, length 300, xid 0x26f30339, Flags [none] (0x0000)
      Your-IP 10.0.0.25
      Server-IP archlinux
      Client-Ethernet-Address b8:27:eb:64:24:7d (oui Unknown)
      Vendor-rfc1048 Extensions
        Magic Cookie 0x63825363
        DHCP-Message (53), length 1: Offer
        Server-ID (54), length 4: archlinux
        Lease-Time (51), length 4: 43200
        RN (58), length 4: 21600
        RB (59), length 4: 37800
        Subnet-Mask (1), length 4: 255.255.255.0
        BR (28), length 4: 10.0.0.255
        Default-Gateway (3), length 4: archlinux
23:17:12.066457 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.0.0.25 tell archlinux, length 28
23:17:12.279908 IP (tos 0x0, ttl 64, id 8889, offset 0, flags [DF], proto TCP (6), length 52)
    archlinux.1002 > 10.0.0.25.35909: Flags [.], cksum 0xf308 (correct), seq 76, ack 29, win 502, options [nop,nop,TS val 1802562369 ecr 1857719806], length 0
23:17:13.079905 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.0.0.25 tell archlinux, length 28
23:17:14.093226 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.0.0.25 tell archlinux, length 28

Beyond this I do not see any activity on the serial console or the tcpdump logs. Pi did not request for any files. As per this article here, I should have seen following logs :

12:48:52.659077 IP (tos 0x0, ttl 128, id 0, offset 0, flags [none], proto UDP (17), length 49)
    192.168.97.100.49153 > paula.tftp: [no cksum]  21 RRQ "bootcode.bin" octet

12:49:03.471670 IP (tos 0x0, ttl 128, id 0, offset 0, flags [none], proto UDP (17), length 48)
    192.168.97.100.49154 > paula.tftp: [no cksum]  20 RRQ "bootsig.bin" octet

But I don't see any such file request logs in my case, which indicates that the Pi is not requesting for any files, hence could be the reason for no boot from Pi. What could be wrong here and how to proceed? Please guide.

5
  • Just came across a similar question : raspberrypi.stackexchange.com/questions/88548/…. It seems Raspberry Pi 3B has a known issue that ROM cannot do network boot. If its correct, isn't there a fix for it yet ?
    – Naveen
    Commented Jun 23 at 18:08
  • Not sure if Rpi3B has a limitation as mentioned in the above comment link. The "Known Problem" under network boot does not list this specifivally : raspberrypi.com/documentation/computers/…
    – Naveen
    Commented Jun 23 at 18:22
  • From the Pi documentation raspberrypi.com/documentation/computers/… "Vendor-Option Option 43 contains the important part of the reply. This must contain the string "Raspberry Pi Boot". Due to a bug in the boot ROM, you may need to add three spaces to the end of the string. When the Vendor Option is correctly specified, you’ll see a subsequent TFTP RRQ packet being sent." Could this be the reason?
    – Naveen
    Commented Jun 23 at 18:25
  • 1
    Finally I got mine working. The above comment is correct, we need to send string "Raspberry Pi Boot ", and it works all fine. With no SD card plugged in, I was able to network boot the firmware files and then load to u-boot. This means the attached question most likely has wrong answer or I am not sure if Raspberry team fixed something in newer manufacturings of Pi3B.
    – Naveen
    Commented Jun 23 at 18:58
  • Congratulations! Consider writing up a complete answer to your question.
    – Seamus
    Commented Jun 24 at 6:29

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.