I am trying to boot my Raspberry Pi 3B (not plus) using network boot (without any SD card). So in order to setup the required OTP bit, I added program_usb_boot_mode=1
to my config.txt file and rebooted the board. I now can see :
$ vcgencmd otp_dump | grep 17:
17:3020000a
Then I removed the SD card and rebooted the Pi, with ethernet cable plugged in. I can see that my DHCP server is receiving requests :
Jan 31 21:41:38 lab dhcpd[1697]: DHCPDISCOVER from b8:27:eb:64:24:7d via eno1
Jan 31 21:41:38 lab dhcpd[1697]: DHCPOFFER on 10.0.0.100 to b8:27:eb:64:24:7d via eno1
Jan 31 21:41:43 lab dhcpd[1697]: DHCPDISCOVER from b8:27:eb:64:24:7d via eno1
Jan 31 21:41:43 lab dhcpd[1697]: DHCPOFFER on 10.0.0.100 to b8:27:eb:64:24:7d via eno1
Jan 31 21:41:48 lab dhcpd[1697]: DHCPDISCOVER from b8:27:eb:64:24:7d via eno1
Jan 31 21:41:48 lab dhcpd[1697]: DHCPOFFER on 10.0.0.100 to b8:27:eb:64:24:7d via eno1
Jan 31 21:43:42 lab kernel: [ 4993.736580] device eno1 left promiscuous mode
I added the tcpdump monitoring and can see :
$ sudo tcpdump 'ether host b8:27:eb:64:24:7d' -i eno1 -vv
tcpdump: listening on eno1, link-type EN10MB (Ethernet), capture size 262144 bytes
21:41:28.357155 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 Option 53, length 1: Discover
Parameter-Request Option 55, length 14:
Vendor-Option, Vendor-Class, BF, Option 128
Option 129, Option 130, Option 131, Option 132
Option 133, Option 134, Option 135, TFTP
Subnet-Mask, Default-Gateway
ARCH Option 93, length 2: 0
NDI Option 94, length 3: 1.2.1
GUID Option 97, length 17: 0.125.36.100.85.125.36.100.85.125.36.100.85.125.36.100.85
Vendor-Class Option 60, length 32: "PXEClient:Arch:00000:UNDI:002001"
21:41:29.357640 IP (tos 0x10, ttl 128, id 0, offset 0, flags [none], proto UDP (17), length 328)
lab.bootps > 10.0.0.100.bootpc: [udp sum ok] BOOTP/DHCP, Reply, length 300, xid 0x26f30339, Flags [none] (0x0000)
Your-IP 10.0.0.100
Server-IP lab
Client-Ethernet-Address b8:27:eb:64:24:7d (oui Unknown)
Vendor-rfc1048 Extensions
Magic Cookie 0x63825363
DHCP-Message Option 53, length 1: Offer
Server-ID Option 54, length 4: lab
Lease-Time Option 51, length 4: 600
Subnet-Mask Option 1, length 4: 255.255.255.0
Default-Gateway Option 3, length 4: lab
The red Led on Pi , blinks once after around 5 seconds of power-on, but nothing else happens, no output on serial. I have following files in my tftpserver, copied from a working raspbian SD card. I removed all kernel*img files and copied a working 64-bit u-boot.bin as kernel8.img. I have also set BOOT_UART=1
in my bootcode.bin
naveen@lab:~/tftpboot/tftpboot-rpi3$ ls ..
COPYING.linux bcm2708-rpi-b-rev1.dtb bcm2708-rpi-zero.dtb bcm2710-rpi-3-b.dtb bcm2711-rpi-cm4.dtb fixup.dat fixup4x.dat issue.txt start.elf start4x.elf tftpboot-rpi3
LICENCE.broadcom bcm2708-rpi-b.dtb bcm2709-rpi-2-b.dtb bcm2710-rpi-cm3.dtb bootcode.bin fixup4.dat fixup_cd.dat kernel8.img start4.elf start_cd.elf
backup bcm2708-rpi-cm.dtb bcm2710-rpi-2-b.dtb bcm2711-rpi-4-b.dtb cmdline.txt fixup4cd.dat fixup_db.dat overlays start4cd.elf start_db.elf
bcm2708-rpi-b-plus.dtb bcm2708-rpi-zero-w.dtb bcm2710-rpi-3-b-plus.dtb bcm2711-rpi-400.dtb config.txt fixup4db.dat fixup_x.dat rpi3.uimg start4db.elf start_x.elf
(few files/folders might be extra and can be ignored, if they impact in anyway please correct me)
On my UART serial console, I do not see any ouput. Nothing happens. Everything stays as-is after power-on, except the red LED blinks once after around 5 seconds of power-on. What's going wrong here. (The serial connection is proper, because when I use SD card, I get linux shell on same console). I do not get any logs from tftp server in /var/log/syslog
. I expected some logs from bootcode.bin
over the UART console, but even those are not coming.
To verify the setup, I put u-boot on SD card and was able to load the linux kernel over tftp and rootfs over NFS server. So the setup installations, setting and connections can be relied as well.
EDIT
I am using Pins 6,8,10 for my UART connection.