Describe the bug
Boot over TFTP fails intermittently after a variable number of reboots on RPi 3B.
To reproduce
Repository https://github.com/petemoore/tftpreboot contains a complete minimal assembly example. This is the disassembly:
80000: d53800a0 mrs x0, mpidr_el1
80004: 92400400 and x0, x0, #0x3
80008: b5000300 cbnz x0, 0x80068
8000c: 1000032a adr x10, 0x80070
80010: 5280010b mov w11, #0x8 // #8
80014: 2a0b0142 orr w2, w10, w11
80018: d2971003 mov x3, #0xb880 // #47232
8001c: f2a7e003 movk x3, #0x3f00, lsl #16
80020: b9411864 ldr w4, [x3, #280]
80024: 37ffffe4 tbnz w4, #31, 0x80020
80028: b9002062 str w2, [x3, #32]
8002c: b9411864 ldr w4, [x3, #280]
80030: 37f7ffe4 tbnz w4, #30, 0x8002c
80034: b9400064 ldr w4, [x3]
80038: 6b04005f cmp w2, w4
8003c: 54ffff81 b.ne 0x8002c // b.any
80040: d2a7e200 mov x0, #0x3f100000 // #1058013184
80044: 52ab4001 mov w1, #0x5a000000 // #1509949440
80048: 52800142 mov w2, #0xa // #10
8004c: 2a010042 orr w2, w2, w1
80050: b9002402 str w2, [x0, #36]
80054: b9401c03 ldr w3, [x0, #28]
80058: 121a7463 and w3, w3, #0xffffffcf
8005c: 2a010063 orr w3, w3, w1
80060: 321b0063 orr w3, w3, #0x20
80064: b9001c03 str w3, [x0, #28]
80068: d503205f wfe
8006c: 17ffffff b 0x80068
80070: 00000018 .inst 0x00000018 ; undefined
80074: 00000000 .inst 0x00000000 ; undefined
80078: 00030048 .inst 0x00030048 ; undefined
8007c: 00000000 .inst 0x00000000 ; undefined
80080: 00000000 .inst 0x00000000 ; undefined
80084: 00000000 .inst 0x00000000 ; undefined
Expected behaviour
This minimal kernel should repeatedly reboot the RPi 3B indefinitely when served over TFTP.
Actual behaviour
After a variable number of reboots, the OS does not start up again. Looking at dnsmasq logs show that after the machine restarts the last time, it requests an IP over DHCP but does not request OS files over TFTP.
System
Logs
Here is a trace of the logs from first turning on the RPi until it stops rebooting. It shows initial boot, followed by 4 successful reboots, each around 13 seconds apart, but finally after the last reboot, the RPi 3B requests an IP over DHCP, but does not request bootcode.bin (or any other files) over TFTP:
Apr 4 11:37:41 raspberrypi dnsmasq-dhcp[443]: 653460281 verfügbare(s) DHCP-Subnetz: 192.168.1.255/255.255.255.0
Apr 4 11:37:41 raspberrypi dnsmasq-dhcp[443]: 653460281 "Vendor class": PXEClient:Arch:00000:UNDI:002001
Apr 4 11:37:41 raspberrypi dnsmasq-dhcp[443]: 653460281 PXE(eth0) b8:27:eb:ef:56:44 proxy
Apr 4 11:37:41 raspberrypi dnsmasq-dhcp[443]: 653460281 Marken: eth0
Apr 4 11:37:41 raspberrypi dnsmasq-dhcp[443]: 653460281 Antwort per Rundsendung
Apr 4 11:37:41 raspberrypi dnsmasq-dhcp[443]: 653460281 sent size: 1 option: 53 message-type 2
Apr 4 11:37:41 raspberrypi dnsmasq-dhcp[443]: 653460281 sent size: 4 option: 54 server-identifier 192.168.1.186
Apr 4 11:37:41 raspberrypi dnsmasq-dhcp[443]: 653460281 sent size: 9 option: 60 vendor-class 50:58:45:43:6c:69:65:6e:74
Apr 4 11:37:41 raspberrypi dnsmasq-dhcp[443]: 653460281 sent size: 17 option: 97 client-machine-id 00:44:44:44:44:44:44:44:44:44:44:44:44:44...
Apr 4 11:37:41 raspberrypi dnsmasq-dhcp[443]: 653460281 sent size: 32 option: 43 vendor-encap 06:01:03:0a:04:00:50:58:45:09:14:00:00:11...
Apr 4 11:37:42 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/bootsig.bin nicht gefunden
Apr 4 11:37:42 raspberrypi dnsmasq-tftp[443]: /tftpboot/bootcode.bin an 192.168.1.64 verschickt
Apr 4 11:37:42 raspberrypi dnsmasq-dhcp[443]: 653460281 verfügbare(s) DHCP-Subnetz: 192.168.1.255/255.255.255.0
Apr 4 11:37:42 raspberrypi dnsmasq-dhcp[443]: 653460281 "Vendor class": PXEClient:Arch:00000:UNDI:002001
Apr 4 11:37:42 raspberrypi dnsmasq-dhcp[443]: 653460281 PXE(eth0) b8:27:eb:ef:56:44 proxy
Apr 4 11:37:42 raspberrypi dnsmasq-dhcp[443]: 653460281 Marken: eth0
Apr 4 11:37:42 raspberrypi dnsmasq-dhcp[443]: 653460281 Antwort per Rundsendung
Apr 4 11:37:42 raspberrypi dnsmasq-dhcp[443]: 653460281 sent size: 1 option: 53 message-type 2
Apr 4 11:37:42 raspberrypi dnsmasq-dhcp[443]: 653460281 sent size: 4 option: 54 server-identifier 192.168.1.186
Apr 4 11:37:42 raspberrypi dnsmasq-dhcp[443]: 653460281 sent size: 9 option: 60 vendor-class 50:58:45:43:6c:69:65:6e:74
Apr 4 11:37:42 raspberrypi dnsmasq-dhcp[443]: 653460281 sent size: 17 option: 97 client-machine-id 00:44:56:ef:a2:44:56:ef:a2:44:56:ef:a2:44...
Apr 4 11:37:42 raspberrypi dnsmasq-dhcp[443]: 653460281 sent size: 32 option: 43 vendor-encap 06:01:03:0a:04:00:50:58:45:09:14:00:00:11...
Apr 4 11:37:42 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/a2ef5644/start.elf nicht gefunden
Apr 4 11:37:42 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/autoboot.txt nicht gefunden
Apr 4 11:37:42 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/config.txt nicht gefunden
Apr 4 11:37:42 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/recovery.elf nicht gefunden
Apr 4 11:37:45 raspberrypi dnsmasq-tftp[443]: /tftpboot/start.elf an 192.168.1.64 verschickt
Apr 4 11:37:45 raspberrypi dnsmasq-tftp[443]: /tftpboot/fixup.dat an 192.168.1.64 verschickt
Apr 4 11:37:45 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/recovery.elf nicht gefunden
Apr 4 11:37:45 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/config.txt nicht gefunden
Apr 4 11:37:45 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/dt-blob.bin nicht gefunden
Apr 4 11:37:45 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/recovery.elf nicht gefunden
Apr 4 11:37:45 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/config.txt nicht gefunden
Apr 4 11:37:45 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/bootcfg.txt nicht gefunden
Apr 4 11:37:45 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/bcm2710-rpi-3-b.dtb nicht gefunden
Apr 4 11:37:45 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/cmdline.txt nicht gefunden
Apr 4 11:37:45 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/recovery8.img nicht gefunden
Apr 4 11:37:45 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/recovery8-32.img nicht gefunden
Apr 4 11:37:45 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/recovery7.img nicht gefunden
Apr 4 11:37:45 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/recovery.img nicht gefunden
Apr 4 11:37:45 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/kernel8-32.img nicht gefunden
Apr 4 11:37:45 raspberrypi dnsmasq-tftp[443]: Fehler 0 Early terminate von 192.168.1.64 empfangen
Apr 4 11:37:45 raspberrypi dnsmasq-tftp[443]: konnte /tftpboot/kernel8.img nicht an 192.168.1.64 senden
Apr 4 11:37:45 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/kernel7.img nicht gefunden
Apr 4 11:37:45 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/kernel.img nicht gefunden
Apr 4 11:37:45 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/armstub8.bin nicht gefunden
Apr 4 11:37:45 raspberrypi dnsmasq-tftp[443]: /tftpboot/kernel8.img an 192.168.1.64 verschickt
Apr 4 11:37:54 raspberrypi dnsmasq-dhcp[443]: 653460281 verfügbare(s) DHCP-Subnetz: 192.168.1.255/255.255.255.0
Apr 4 11:37:54 raspberrypi dnsmasq-dhcp[443]: 653460281 "Vendor class": PXEClient:Arch:00000:UNDI:002001
Apr 4 11:37:54 raspberrypi dnsmasq-dhcp[443]: 653460281 PXE(eth0) b8:27:eb:ef:56:44 proxy
Apr 4 11:37:54 raspberrypi dnsmasq-dhcp[443]: 653460281 Marken: eth0
Apr 4 11:37:54 raspberrypi dnsmasq-dhcp[443]: 653460281 Antwort per Rundsendung
Apr 4 11:37:54 raspberrypi dnsmasq-dhcp[443]: 653460281 sent size: 1 option: 53 message-type 2
Apr 4 11:37:54 raspberrypi dnsmasq-dhcp[443]: 653460281 sent size: 4 option: 54 server-identifier 192.168.1.186
Apr 4 11:37:54 raspberrypi dnsmasq-dhcp[443]: 653460281 sent size: 9 option: 60 vendor-class 50:58:45:43:6c:69:65:6e:74
Apr 4 11:37:54 raspberrypi dnsmasq-dhcp[443]: 653460281 sent size: 17 option: 97 client-machine-id 00:44:44:44:44:44:44:44:44:44:44:44:44:44...
Apr 4 11:37:54 raspberrypi dnsmasq-dhcp[443]: 653460281 sent size: 32 option: 43 vendor-encap 06:01:03:0a:04:00:50:58:45:09:14:00:00:11...
Apr 4 11:37:55 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/bootsig.bin nicht gefunden
Apr 4 11:37:55 raspberrypi dnsmasq-tftp[443]: /tftpboot/bootcode.bin an 192.168.1.64 verschickt
Apr 4 11:37:55 raspberrypi dnsmasq-dhcp[443]: 653460281 verfügbare(s) DHCP-Subnetz: 192.168.1.255/255.255.255.0
Apr 4 11:37:55 raspberrypi dnsmasq-dhcp[443]: 653460281 "Vendor class": PXEClient:Arch:00000:UNDI:002001
Apr 4 11:37:55 raspberrypi dnsmasq-dhcp[443]: 653460281 PXE(eth0) b8:27:eb:ef:56:44 proxy
Apr 4 11:37:55 raspberrypi dnsmasq-dhcp[443]: 653460281 Marken: eth0
Apr 4 11:37:55 raspberrypi dnsmasq-dhcp[443]: 653460281 Antwort per Rundsendung
Apr 4 11:37:55 raspberrypi dnsmasq-dhcp[443]: 653460281 sent size: 1 option: 53 message-type 2
Apr 4 11:37:55 raspberrypi dnsmasq-dhcp[443]: 653460281 sent size: 4 option: 54 server-identifier 192.168.1.186
Apr 4 11:37:55 raspberrypi dnsmasq-dhcp[443]: 653460281 sent size: 9 option: 60 vendor-class 50:58:45:43:6c:69:65:6e:74
Apr 4 11:37:55 raspberrypi dnsmasq-dhcp[443]: 653460281 sent size: 17 option: 97 client-machine-id 00:44:56:ef:a2:44:56:ef:a2:44:56:ef:a2:44...
Apr 4 11:37:55 raspberrypi dnsmasq-dhcp[443]: 653460281 sent size: 32 option: 43 vendor-encap 06:01:03:0a:04:00:50:58:45:09:14:00:00:11...
Apr 4 11:37:55 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/a2ef5644/start.elf nicht gefunden
Apr 4 11:37:55 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/autoboot.txt nicht gefunden
Apr 4 11:37:55 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/config.txt nicht gefunden
Apr 4 11:37:55 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/recovery.elf nicht gefunden
Apr 4 11:37:58 raspberrypi dnsmasq-tftp[443]: /tftpboot/start.elf an 192.168.1.64 verschickt
Apr 4 11:37:58 raspberrypi dnsmasq-tftp[443]: /tftpboot/fixup.dat an 192.168.1.64 verschickt
Apr 4 11:37:58 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/recovery.elf nicht gefunden
Apr 4 11:37:58 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/config.txt nicht gefunden
Apr 4 11:37:58 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/dt-blob.bin nicht gefunden
Apr 4 11:37:58 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/recovery.elf nicht gefunden
Apr 4 11:37:58 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/config.txt nicht gefunden
Apr 4 11:37:58 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/bootcfg.txt nicht gefunden
Apr 4 11:37:58 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/bcm2710-rpi-3-b.dtb nicht gefunden
Apr 4 11:37:58 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/cmdline.txt nicht gefunden
Apr 4 11:37:58 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/recovery8.img nicht gefunden
Apr 4 11:37:58 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/recovery8-32.img nicht gefunden
Apr 4 11:37:58 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/recovery7.img nicht gefunden
Apr 4 11:37:58 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/recovery.img nicht gefunden
Apr 4 11:37:58 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/kernel8-32.img nicht gefunden
Apr 4 11:37:58 raspberrypi dnsmasq-tftp[443]: Fehler 0 Early terminate von 192.168.1.64 empfangen
Apr 4 11:37:58 raspberrypi dnsmasq-tftp[443]: konnte /tftpboot/kernel8.img nicht an 192.168.1.64 senden
Apr 4 11:37:58 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/kernel7.img nicht gefunden
Apr 4 11:37:58 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/kernel.img nicht gefunden
Apr 4 11:37:58 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/armstub8.bin nicht gefunden
Apr 4 11:37:58 raspberrypi dnsmasq-tftp[443]: /tftpboot/kernel8.img an 192.168.1.64 verschickt
Apr 4 11:38:00 raspberrypi dnsmasq-dhcp[443]: 2541485621 verfügbare(s) DHCP-Subnetz: 192.168.1.255/255.255.255.0
Apr 4 11:38:00 raspberrypi dnsmasq-dhcp[443]: 2541485621 "Vendor class": android-dhcp-9
Apr 4 11:38:00 raspberrypi dnsmasq-dhcp[443]: 2541485621 Klient stellt Name bereit: RedmiNote7-Redmi
Apr 4 11:38:01 raspberrypi dnsmasq-dhcp[443]: 2541485621 verfügbare(s) DHCP-Subnetz: 192.168.1.255/255.255.255.0
Apr 4 11:38:01 raspberrypi dnsmasq-dhcp[443]: 2541485621 "Vendor class": android-dhcp-9
Apr 4 11:38:01 raspberrypi dnsmasq-dhcp[443]: 2541485621 Klient stellt Name bereit: RedmiNote7-Redmi
Apr 4 11:38:07 raspberrypi dnsmasq-dhcp[443]: 653460281 verfügbare(s) DHCP-Subnetz: 192.168.1.255/255.255.255.0
Apr 4 11:38:07 raspberrypi dnsmasq-dhcp[443]: 653460281 "Vendor class": PXEClient:Arch:00000:UNDI:002001
Apr 4 11:38:07 raspberrypi dnsmasq-dhcp[443]: 653460281 PXE(eth0) b8:27:eb:ef:56:44 proxy
Apr 4 11:38:07 raspberrypi dnsmasq-dhcp[443]: 653460281 Marken: eth0
Apr 4 11:38:07 raspberrypi dnsmasq-dhcp[443]: 653460281 Antwort per Rundsendung
Apr 4 11:38:07 raspberrypi dnsmasq-dhcp[443]: 653460281 sent size: 1 option: 53 message-type 2
Apr 4 11:38:07 raspberrypi dnsmasq-dhcp[443]: 653460281 sent size: 4 option: 54 server-identifier 192.168.1.186
Apr 4 11:38:07 raspberrypi dnsmasq-dhcp[443]: 653460281 sent size: 9 option: 60 vendor-class 50:58:45:43:6c:69:65:6e:74
Apr 4 11:38:07 raspberrypi dnsmasq-dhcp[443]: 653460281 sent size: 17 option: 97 client-machine-id 00:44:44:44:44:44:44:44:44:44:44:44:44:44...
Apr 4 11:38:07 raspberrypi dnsmasq-dhcp[443]: 653460281 sent size: 32 option: 43 vendor-encap 06:01:03:0a:04:00:50:58:45:09:14:00:00:11...
Apr 4 11:38:08 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/bootsig.bin nicht gefunden
Apr 4 11:38:08 raspberrypi dnsmasq-tftp[443]: /tftpboot/bootcode.bin an 192.168.1.64 verschickt
Apr 4 11:38:08 raspberrypi dnsmasq-dhcp[443]: 653460281 verfügbare(s) DHCP-Subnetz: 192.168.1.255/255.255.255.0
Apr 4 11:38:08 raspberrypi dnsmasq-dhcp[443]: 653460281 "Vendor class": PXEClient:Arch:00000:UNDI:002001
Apr 4 11:38:08 raspberrypi dnsmasq-dhcp[443]: 653460281 PXE(eth0) b8:27:eb:ef:56:44 proxy
Apr 4 11:38:08 raspberrypi dnsmasq-dhcp[443]: 653460281 Marken: eth0
Apr 4 11:38:08 raspberrypi dnsmasq-dhcp[443]: 653460281 Antwort per Rundsendung
Apr 4 11:38:08 raspberrypi dnsmasq-dhcp[443]: 653460281 sent size: 1 option: 53 message-type 2
Apr 4 11:38:08 raspberrypi dnsmasq-dhcp[443]: 653460281 sent size: 4 option: 54 server-identifier 192.168.1.186
Apr 4 11:38:08 raspberrypi dnsmasq-dhcp[443]: 653460281 sent size: 9 option: 60 vendor-class 50:58:45:43:6c:69:65:6e:74
Apr 4 11:38:08 raspberrypi dnsmasq-dhcp[443]: 653460281 sent size: 17 option: 97 client-machine-id 00:44:56:ef:a2:44:56:ef:a2:44:56:ef:a2:44...
Apr 4 11:38:08 raspberrypi dnsmasq-dhcp[443]: 653460281 sent size: 32 option: 43 vendor-encap 06:01:03:0a:04:00:50:58:45:09:14:00:00:11...
Apr 4 11:38:08 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/a2ef5644/start.elf nicht gefunden
Apr 4 11:38:08 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/autoboot.txt nicht gefunden
Apr 4 11:38:08 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/config.txt nicht gefunden
Apr 4 11:38:08 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/recovery.elf nicht gefunden
Apr 4 11:38:11 raspberrypi dnsmasq-tftp[443]: /tftpboot/start.elf an 192.168.1.64 verschickt
Apr 4 11:38:11 raspberrypi dnsmasq-tftp[443]: /tftpboot/fixup.dat an 192.168.1.64 verschickt
Apr 4 11:38:11 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/recovery.elf nicht gefunden
Apr 4 11:38:11 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/config.txt nicht gefunden
Apr 4 11:38:11 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/dt-blob.bin nicht gefunden
Apr 4 11:38:11 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/recovery.elf nicht gefunden
Apr 4 11:38:11 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/config.txt nicht gefunden
Apr 4 11:38:11 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/bootcfg.txt nicht gefunden
Apr 4 11:38:11 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/bcm2710-rpi-3-b.dtb nicht gefunden
Apr 4 11:38:11 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/cmdline.txt nicht gefunden
Apr 4 11:38:11 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/recovery8.img nicht gefunden
Apr 4 11:38:11 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/recovery8-32.img nicht gefunden
Apr 4 11:38:11 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/recovery7.img nicht gefunden
Apr 4 11:38:11 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/recovery.img nicht gefunden
Apr 4 11:38:11 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/kernel8-32.img nicht gefunden
Apr 4 11:38:11 raspberrypi dnsmasq-tftp[443]: Fehler 0 Early terminate von 192.168.1.64 empfangen
Apr 4 11:38:11 raspberrypi dnsmasq-tftp[443]: konnte /tftpboot/kernel8.img nicht an 192.168.1.64 senden
Apr 4 11:38:11 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/kernel7.img nicht gefunden
Apr 4 11:38:11 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/kernel.img nicht gefunden
Apr 4 11:38:11 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/armstub8.bin nicht gefunden
Apr 4 11:38:11 raspberrypi dnsmasq-tftp[443]: /tftpboot/kernel8.img an 192.168.1.64 verschickt
Apr 4 11:38:20 raspberrypi dnsmasq-dhcp[443]: 653460281 verfügbare(s) DHCP-Subnetz: 192.168.1.255/255.255.255.0
Apr 4 11:38:20 raspberrypi dnsmasq-dhcp[443]: 653460281 "Vendor class": PXEClient:Arch:00000:UNDI:002001
Apr 4 11:38:20 raspberrypi dnsmasq-dhcp[443]: 653460281 PXE(eth0) b8:27:eb:ef:56:44 proxy
Apr 4 11:38:20 raspberrypi dnsmasq-dhcp[443]: 653460281 Marken: eth0
Apr 4 11:38:20 raspberrypi dnsmasq-dhcp[443]: 653460281 Antwort per Rundsendung
Apr 4 11:38:20 raspberrypi dnsmasq-dhcp[443]: 653460281 sent size: 1 option: 53 message-type 2
Apr 4 11:38:20 raspberrypi dnsmasq-dhcp[443]: 653460281 sent size: 4 option: 54 server-identifier 192.168.1.186
Apr 4 11:38:20 raspberrypi dnsmasq-dhcp[443]: 653460281 sent size: 9 option: 60 vendor-class 50:58:45:43:6c:69:65:6e:74
Apr 4 11:38:20 raspberrypi dnsmasq-dhcp[443]: 653460281 sent size: 17 option: 97 client-machine-id 00:44:44:44:44:44:44:44:44:44:44:44:44:44...
Apr 4 11:38:20 raspberrypi dnsmasq-dhcp[443]: 653460281 sent size: 32 option: 43 vendor-encap 06:01:03:0a:04:00:50:58:45:09:14:00:00:11...
Apr 4 11:38:22 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/bootsig.bin nicht gefunden
Apr 4 11:38:22 raspberrypi dnsmasq-tftp[443]: /tftpboot/bootcode.bin an 192.168.1.64 verschickt
Apr 4 11:38:22 raspberrypi dnsmasq-dhcp[443]: 653460281 verfügbare(s) DHCP-Subnetz: 192.168.1.255/255.255.255.0
Apr 4 11:38:22 raspberrypi dnsmasq-dhcp[443]: 653460281 "Vendor class": PXEClient:Arch:00000:UNDI:002001
Apr 4 11:38:22 raspberrypi dnsmasq-dhcp[443]: 653460281 PXE(eth0) b8:27:eb:ef:56:44 proxy
Apr 4 11:38:22 raspberrypi dnsmasq-dhcp[443]: 653460281 Marken: eth0
Apr 4 11:38:22 raspberrypi dnsmasq-dhcp[443]: 653460281 Antwort per Rundsendung
Apr 4 11:38:22 raspberrypi dnsmasq-dhcp[443]: 653460281 sent size: 1 option: 53 message-type 2
Apr 4 11:38:22 raspberrypi dnsmasq-dhcp[443]: 653460281 sent size: 4 option: 54 server-identifier 192.168.1.186
Apr 4 11:38:22 raspberrypi dnsmasq-dhcp[443]: 653460281 sent size: 9 option: 60 vendor-class 50:58:45:43:6c:69:65:6e:74
Apr 4 11:38:22 raspberrypi dnsmasq-dhcp[443]: 653460281 sent size: 17 option: 97 client-machine-id 00:44:56:ef:a2:44:56:ef:a2:44:56:ef:a2:44...
Apr 4 11:38:22 raspberrypi dnsmasq-dhcp[443]: 653460281 sent size: 32 option: 43 vendor-encap 06:01:03:0a:04:00:50:58:45:09:14:00:00:11...
Apr 4 11:38:22 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/a2ef5644/start.elf nicht gefunden
Apr 4 11:38:22 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/autoboot.txt nicht gefunden
Apr 4 11:38:22 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/config.txt nicht gefunden
Apr 4 11:38:22 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/recovery.elf nicht gefunden
Apr 4 11:38:25 raspberrypi dnsmasq-tftp[443]: /tftpboot/start.elf an 192.168.1.64 verschickt
Apr 4 11:38:25 raspberrypi dnsmasq-tftp[443]: /tftpboot/fixup.dat an 192.168.1.64 verschickt
Apr 4 11:38:25 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/recovery.elf nicht gefunden
Apr 4 11:38:25 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/config.txt nicht gefunden
Apr 4 11:38:25 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/dt-blob.bin nicht gefunden
Apr 4 11:38:25 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/recovery.elf nicht gefunden
Apr 4 11:38:25 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/config.txt nicht gefunden
Apr 4 11:38:25 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/bootcfg.txt nicht gefunden
Apr 4 11:38:25 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/bcm2710-rpi-3-b.dtb nicht gefunden
Apr 4 11:38:25 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/cmdline.txt nicht gefunden
Apr 4 11:38:25 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/recovery8.img nicht gefunden
Apr 4 11:38:25 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/recovery8-32.img nicht gefunden
Apr 4 11:38:25 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/recovery7.img nicht gefunden
Apr 4 11:38:25 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/recovery.img nicht gefunden
Apr 4 11:38:25 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/kernel8-32.img nicht gefunden
Apr 4 11:38:25 raspberrypi dnsmasq-tftp[443]: Fehler 0 Early terminate von 192.168.1.64 empfangen
Apr 4 11:38:25 raspberrypi dnsmasq-tftp[443]: konnte /tftpboot/kernel8.img nicht an 192.168.1.64 senden
Apr 4 11:38:25 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/kernel7.img nicht gefunden
Apr 4 11:38:25 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/kernel.img nicht gefunden
Apr 4 11:38:25 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/armstub8.bin nicht gefunden
Apr 4 11:38:25 raspberrypi dnsmasq-tftp[443]: /tftpboot/kernel8.img an 192.168.1.64 verschickt
Apr 4 11:38:34 raspberrypi dnsmasq-dhcp[443]: 653460281 verfügbare(s) DHCP-Subnetz: 192.168.1.255/255.255.255.0
Apr 4 11:38:34 raspberrypi dnsmasq-dhcp[443]: 653460281 "Vendor class": PXEClient:Arch:00000:UNDI:002001
Apr 4 11:38:34 raspberrypi dnsmasq-dhcp[443]: 653460281 PXE(eth0) b8:27:eb:ef:56:44 proxy
Apr 4 11:38:34 raspberrypi dnsmasq-dhcp[443]: 653460281 Marken: eth0
Apr 4 11:38:34 raspberrypi dnsmasq-dhcp[443]: 653460281 Antwort per Rundsendung
Apr 4 11:38:34 raspberrypi dnsmasq-dhcp[443]: 653460281 sent size: 1 option: 53 message-type 2
Apr 4 11:38:34 raspberrypi dnsmasq-dhcp[443]: 653460281 sent size: 4 option: 54 server-identifier 192.168.1.186
Apr 4 11:38:34 raspberrypi dnsmasq-dhcp[443]: 653460281 sent size: 9 option: 60 vendor-class 50:58:45:43:6c:69:65:6e:74
Apr 4 11:38:34 raspberrypi dnsmasq-dhcp[443]: 653460281 sent size: 17 option: 97 client-machine-id 00:44:44:44:44:44:44:44:44:44:44:44:44:44...
Apr 4 11:38:34 raspberrypi dnsmasq-dhcp[443]: 653460281 sent size: 32 option: 43 vendor-encap 06:01:03:0a:04:00:50:58:45:09:14:00:00:11...
Apr 4 11:38:35 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/bootsig.bin nicht gefunden
Apr 4 11:38:35 raspberrypi dnsmasq-tftp[443]: /tftpboot/bootcode.bin an 192.168.1.64 verschickt
Apr 4 11:38:35 raspberrypi dnsmasq-dhcp[443]: 653460281 verfügbare(s) DHCP-Subnetz: 192.168.1.255/255.255.255.0
Apr 4 11:38:35 raspberrypi dnsmasq-dhcp[443]: 653460281 "Vendor class": PXEClient:Arch:00000:UNDI:002001
Apr 4 11:38:35 raspberrypi dnsmasq-dhcp[443]: 653460281 PXE(eth0) b8:27:eb:ef:56:44 proxy
Apr 4 11:38:35 raspberrypi dnsmasq-dhcp[443]: 653460281 Marken: eth0
Apr 4 11:38:35 raspberrypi dnsmasq-dhcp[443]: 653460281 Antwort per Rundsendung
Apr 4 11:38:35 raspberrypi dnsmasq-dhcp[443]: 653460281 sent size: 1 option: 53 message-type 2
Apr 4 11:38:35 raspberrypi dnsmasq-dhcp[443]: 653460281 sent size: 4 option: 54 server-identifier 192.168.1.186
Apr 4 11:38:35 raspberrypi dnsmasq-dhcp[443]: 653460281 sent size: 9 option: 60 vendor-class 50:58:45:43:6c:69:65:6e:74
Apr 4 11:38:35 raspberrypi dnsmasq-dhcp[443]: 653460281 sent size: 17 option: 97 client-machine-id 00:44:56:ef:a2:44:56:ef:a2:44:56:ef:a2:44...
Apr 4 11:38:35 raspberrypi dnsmasq-dhcp[443]: 653460281 sent size: 32 option: 43 vendor-encap 06:01:03:0a:04:00:50:58:45:09:14:00:00:11...
Apr 4 11:38:35 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/a2ef5644/start.elf nicht gefunden
Apr 4 11:38:35 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/autoboot.txt nicht gefunden
Apr 4 11:38:35 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/config.txt nicht gefunden
Apr 4 11:38:35 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/recovery.elf nicht gefunden
Apr 4 11:38:38 raspberrypi dnsmasq-tftp[443]: /tftpboot/start.elf an 192.168.1.64 verschickt
Apr 4 11:38:38 raspberrypi dnsmasq-tftp[443]: /tftpboot/fixup.dat an 192.168.1.64 verschickt
Apr 4 11:38:38 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/recovery.elf nicht gefunden
Apr 4 11:38:38 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/config.txt nicht gefunden
Apr 4 11:38:38 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/dt-blob.bin nicht gefunden
Apr 4 11:38:38 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/recovery.elf nicht gefunden
Apr 4 11:38:38 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/config.txt nicht gefunden
Apr 4 11:38:39 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/bootcfg.txt nicht gefunden
Apr 4 11:38:39 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/bcm2710-rpi-3-b.dtb nicht gefunden
Apr 4 11:38:39 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/cmdline.txt nicht gefunden
Apr 4 11:38:39 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/recovery8.img nicht gefunden
Apr 4 11:38:39 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/recovery8-32.img nicht gefunden
Apr 4 11:38:39 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/recovery7.img nicht gefunden
Apr 4 11:38:39 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/recovery.img nicht gefunden
Apr 4 11:38:39 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/kernel8-32.img nicht gefunden
Apr 4 11:38:39 raspberrypi dnsmasq-tftp[443]: Fehler 0 Early terminate von 192.168.1.64 empfangen
Apr 4 11:38:39 raspberrypi dnsmasq-tftp[443]: konnte /tftpboot/kernel8.img nicht an 192.168.1.64 senden
Apr 4 11:38:39 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/kernel7.img nicht gefunden
Apr 4 11:38:39 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/kernel.img nicht gefunden
Apr 4 11:38:39 raspberrypi dnsmasq-tftp[443]: Datei /tftpboot/armstub8.bin nicht gefunden
Apr 4 11:38:39 raspberrypi dnsmasq-tftp[443]: /tftpboot/kernel8.img an 192.168.1.64 verschickt
Apr 4 11:38:47 raspberrypi dnsmasq-dhcp[443]: 653460281 verfügbare(s) DHCP-Subnetz: 192.168.1.255/255.255.255.0
Apr 4 11:38:47 raspberrypi dnsmasq-dhcp[443]: 653460281 "Vendor class": PXEClient:Arch:00000:UNDI:002001
Apr 4 11:38:47 raspberrypi dnsmasq-dhcp[443]: 653460281 PXE(eth0) b8:27:eb:ef:56:44 proxy
Apr 4 11:38:47 raspberrypi dnsmasq-dhcp[443]: 653460281 Marken: eth0
Apr 4 11:38:47 raspberrypi dnsmasq-dhcp[443]: 653460281 Antwort per Rundsendung
Apr 4 11:38:47 raspberrypi dnsmasq-dhcp[443]: 653460281 sent size: 1 option: 53 message-type 2
Apr 4 11:38:47 raspberrypi dnsmasq-dhcp[443]: 653460281 sent size: 4 option: 54 server-identifier 192.168.1.186
Apr 4 11:38:47 raspberrypi dnsmasq-dhcp[443]: 653460281 sent size: 9 option: 60 vendor-class 50:58:45:43:6c:69:65:6e:74
Apr 4 11:38:47 raspberrypi dnsmasq-dhcp[443]: 653460281 sent size: 17 option: 97 client-machine-id 00:44:44:44:44:44:44:44:44:44:44:44:44:44...
Apr 4 11:38:47 raspberrypi dnsmasq-dhcp[443]: 653460281 sent size: 32 option: 43 vendor-encap 06:01:03:0a:04:00:50:58:45:09:14:00:00:11...
Apr 4 11:39:14 raspberrypi dnsmasq-dhcp[443]: 3277451874 verfügbare(s) DHCP-Subnetz: 192.168.1.255/255.255.255.0
Apr 4 11:39:14 raspberrypi dnsmasq-dhcp[443]: 3277451874 "Vendor class": android-dhcp-7.0
Apr 4 11:39:14 raspberrypi dnsmasq-dhcp[443]: 3277451874 Klient stellt Name bereit: android-6c045801e129ae47
Apr 4 11:39:15 raspberrypi dnsmasq-dhcp[443]: 3277451874 verfügbare(s) DHCP-Subnetz: 192.168.1.255/255.255.255.0
Apr 4 11:39:15 raspberrypi dnsmasq-dhcp[443]: 3277451874 "Vendor class": android-dhcp-7.0
Apr 4 11:39:15 raspberrypi dnsmasq-dhcp[443]: 3277451874 Klient stellt Name bereit: android-6c045801e129ae47
Additional context
First reported in "Bare metal, Assembly language" forum.
Describe the bug
Boot over TFTP fails intermittently after a variable number of reboots on RPi 3B.
To reproduce
Repository https://github.com/petemoore/tftpreboot contains a complete minimal assembly example. This is the disassembly:
Expected behaviour
This minimal kernel should repeatedly reboot the RPi 3B indefinitely when served over TFTP.
Actual behaviour
After a variable number of reboots, the OS does not start up again. Looking at
dnsmasqlogs show that after the machine restarts the last time, it requests an IP over DHCP but does not request OS files over TFTP.System
3B
cat /etc/rpi-issue)?https://github.com/petemoore/tftpreboot/tree/master/dist
vcgencmd version)?d5b8d8d
uname -a)?Custom kernel (see above)
Logs
Here is a trace of the logs from first turning on the RPi until it stops rebooting. It shows initial boot, followed by 4 successful reboots, each around 13 seconds apart, but finally after the last reboot, the RPi 3B requests an IP over DHCP, but does not request
bootcode.bin(or any other files) over TFTP:Additional context
First reported in "Bare metal, Assembly language" forum.