Closed stapelberg closed 2 months ago
I'm happy to help testing on my freshly arrived Pi 5 once you're starting to work on it.
My first Pi 5 arrived 🎉
When I just try to boot a current gokrazy installation, I get the following error message by the bootloader:
When I set os_check=0
, I don’t get any HDMI output.
I would have checked the serial port, but I don’t get any output on the GPIO header. I ordered a Raspberry Pi Debug Probe to use the JST port.
Exciting! Happy hacking, let us know how it goes :)
The Debug Probe arrived, so now we can see the serial output of the entire boot process.
For the attempt with os_check=0
in config.txt
, output just stops before the Linux kernel ever prints a line.
I then tried dropping https://github.com/raspberrypi/firmware/blob/master/boot/bcm2712-rpi-5-b.dtb into the kernel directory.
This made it go a whole lot further, in that the bootloader recognizes the installation as compatible, we see Linux kernel output, but then the boot hangs when it tries to find the root device:
So, my guess is that we need to sort out the following issues:
Looks like https://forums.raspberrypi.com/viewtopic.php?t=360653 is the most recent post regarding Pi 5 upstream work, and there is a patch series to try out, but ethernet and USB don’t work yet apparently.
Seems like we need to be patient for a few more weeks at least…
Status update: 6by9, the person working on upstream support for the Pi 5, reports that it will take quite a long time because of a DMA-related long-standing misunderstanding in the kernel that’s hard to fix: https://forums.raspberrypi.com/viewtopic.php?p=2202581&sid=d2fbe43c5b4e9f133bf7842210a19d7d#p2202581
Thanks for the update @stapelberg Hopefully they'll be able to figure it out 🤞
Quick status update: over in https://github.com/gokrazy/gokrazy/issues/264, we now have an experimental Raspberry Pi kernel (not yet auto-updated), and I can successfully boot my Pi 5 with it, including fan control and encrypted WiFi.
If anyone is eager to try it out, feel free to give it a go.
Got a chance to verify the crypto acceleration is working (using Go’s crypto/cipher
standard library benchmark):
Pi 4:
goos: linux
goarch: arm64
pkg: crypto/cipher
BenchmarkAESGCM/Open-128-64-4 221560 5386 ns/op 11.88 MB/s 48 B/op 3 allocs/op
BenchmarkAESGCM/Seal-128-64-4 222818 5454 ns/op 11.73 MB/s 48 B/op 3 allocs/op
BenchmarkAESGCM/Open-256-64-4 191671 6242 ns/op 10.25 MB/s 48 B/op 3 allocs/op
BenchmarkAESGCM/Seal-256-64-4 194470 8807 ns/op 7.27 MB/s 48 B/op 3 allocs/op
BenchmarkAESGCM/Open-128-1350-4 9578 121547 ns/op 11.11 MB/s 48 B/op 3 allocs/op
BenchmarkAESGCM/Seal-128-1350-4 9826 122123 ns/op 11.05 MB/s 48 B/op 3 allocs/op
BenchmarkAESGCM/Open-256-1350-4 15530 77287 ns/op 17.47 MB/s 48 B/op 3 allocs/op
BenchmarkAESGCM/Seal-256-1350-4 15514 77644 ns/op 17.39 MB/s 48 B/op 3 allocs/op
BenchmarkAESGCM/Open-128-8192-4 2704 441286 ns/op 18.56 MB/s 51 B/op 3 allocs/op
BenchmarkAESGCM/Seal-128-8192-4 2707 443302 ns/op 18.48 MB/s 51 B/op 3 allocs/op
BenchmarkAESGCM/Open-256-8192-4 2377 518658 ns/op 15.79 MB/s 51 B/op 3 allocs/op
BenchmarkAESGCM/Seal-256-8192-4 3032 346575 ns/op 23.64 MB/s 51 B/op 3 allocs/op
PASS
Pi 5:
goos: linux
goarch: arm64
pkg: crypto/cipher
BenchmarkAESGCM/Open-128-64-4 5133783 236.0 ns/op 271.24 MB/s 0 B/op 0 allocs/op
BenchmarkAESGCM/Seal-128-64-4 5399284 222.4 ns/op 287.81 MB/s 0 B/op 0 allocs/op
BenchmarkAESGCM/Open-256-64-4 4742012 252.8 ns/op 253.21 MB/s 0 B/op 0 allocs/op
BenchmarkAESGCM/Seal-256-64-4 4764456 249.3 ns/op 256.75 MB/s 0 B/op 0 allocs/op
BenchmarkAESGCM/Open-128-1350-4 957399 1257 ns/op 1073.62 MB/s 0 B/op 0 allocs/op
BenchmarkAESGCM/Seal-128-1350-4 959366 1249 ns/op 1081.25 MB/s 0 B/op 0 allocs/op
BenchmarkAESGCM/Open-256-1350-4 815275 1474 ns/op 916.07 MB/s 0 B/op 0 allocs/op
BenchmarkAESGCM/Seal-256-1350-4 806194 1488 ns/op 907.16 MB/s 0 B/op 0 allocs/op
BenchmarkAESGCM/Open-128-8192-4 185481 6471 ns/op 1265.96 MB/s 0 B/op 0 allocs/op
BenchmarkAESGCM/Seal-128-8192-4 185899 6452 ns/op 1269.70 MB/s 0 B/op 0 allocs/op
BenchmarkAESGCM/Open-256-8192-4 154554 7766 ns/op 1054.85 MB/s 0 B/op 0 allocs/op
BenchmarkAESGCM/Seal-256-8192-4 154186 7787 ns/op 1052.00 MB/s 0 B/op 0 allocs/op
PASS
At this point, once https://github.com/gokrazy/gokrazy/issues/264 is fixed, we can call the Pi 5 supported.
Alright, I think all remaining work items have been completed by now. Give the https://github.com/gokrazy/kernel.rpi kernel (now the default) a shot if you have a Raspberry Pi 5 :) Please open new issues if something doesn’t work.
This issue tracks the progress. Currently, the Pi 5 is not in stock.
Here’s some background info: https://www.jeffgeerling.com/blog/2023/answering-some-questions-about-raspberry-pi-5
First draft of a checklist:
aes pmull sha1 sha2