Merge pull request #1768 from concatime/feature/add-missing-modules-of-rpi5

Add netboot support for Raspberry Pi 5
This commit is contained in:
Jörg Thalheim 2026-03-31 05:04:29 +00:00 committed by GitHub
commit f4c4c2c0c9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 38 additions and 49 deletions

View file

@ -1,14 +1,12 @@
{ lib, pkgs, ... }:
{
imports = [ ../common/default.nix ];
boot = {
consoleLogLevel = lib.mkDefault 7;
kernelPackages = lib.mkDefault (
pkgs.linuxPackagesFor (
pkgs.callPackage ../common/kernel.nix {
rpiVersion = 2;
}
)
pkgs.linuxPackagesFor (pkgs.callPackage ../common/kernel.nix { rpiVersion = 2; })
);
kernelParams = [
"dwc_otg.lpm_enable=0"

View file

@ -1,22 +1,10 @@
{
lib,
pkgs,
...
}:
{ lib, pkgs, ... }:
{
boot = {
kernelPackages = lib.mkDefault (
pkgs.linuxPackagesFor (
pkgs.callPackage ../common/kernel.nix {
rpiVersion = 3;
}
)
pkgs.linuxPackagesFor (pkgs.callPackage ../common/kernel.nix { rpiVersion = 3; })
);
initrd.availableKernelModules = [
"usbhid"
"usb-storage"
];
};
# fix the following error :

View file

@ -7,6 +7,7 @@
{
imports = [
../common/default.nix
./audio.nix
./backlight.nix
./bluetooth.nix
@ -29,16 +30,9 @@
boot = {
kernelPackages = lib.mkDefault (
pkgs.linuxPackagesFor (
pkgs.callPackage ../common/kernel.nix {
rpiVersion = 4;
}
)
pkgs.linuxPackagesFor (pkgs.callPackage ../common/kernel.nix { rpiVersion = 4; })
);
initrd.availableKernelModules = [
"usbhid"
"usb-storage"
"vc4"
"pcie-brcmstb" # required for the pcie bus to work
"reset-raspberrypi" # required for vl805 firmware to load
]
@ -62,7 +56,5 @@
}
];
hardware.firmware = [
(pkgs.callPackage ../common/raspberry-pi-wireless-firmware.nix { })
];
hardware.firmware = [ (pkgs.callPackage ../common/raspberry-pi-wireless-firmware.nix { }) ];
}

View file

@ -14,9 +14,9 @@ in
{
options.hardware = {
raspberry-pi."4".leds = {
eth.disable = mkDisableOption ''ethernet LEDs.'';
act.disable = mkDisableOption ''activity LED.'';
pwr.disable = mkDisableOption ''power LED.'';
eth.disable = mkDisableOption "ethernet LEDs.";
act.disable = mkDisableOption "activity LED.";
pwr.disable = mkDisableOption "power LED.";
};
};

View file

@ -19,7 +19,5 @@ in
};
};
config = lib.mkIf cfg.enable {
nixpkgs.overlays = [ dt_ao_overlay ];
};
config = lib.mkIf cfg.enable { nixpkgs.overlays = [ dt_ao_overlay ]; };
}

View file

@ -1,8 +1,4 @@
{
config,
lib,
...
}:
{ config, lib, ... }:
let
cfg = config.hardware.raspberry-pi."4".xhci;
in

View file

@ -4,22 +4,32 @@
config,
...
}:
let
linuxVariant = config.boot.kernelPackages.kernel.pname;
in
{
imports = [ ../common/default.nix ];
boot = {
kernelPackages = lib.mkDefault (
pkgs.linuxPackagesFor (
pkgs.callPackage ../common/kernel.nix {
rpiVersion = 5;
}
)
pkgs.linuxPackagesFor (pkgs.callPackage ../common/kernel.nix { rpiVersion = 5; })
);
initrd.availableKernelModules = [
"nvme"
"usbhid"
"usb-storage"
];
"pcie-brcmstb"
"clk-rp1"
]
# CONFIG_MISC_RP1 is named CONFIG_MFD_RP1 in RPi's fork.
++ lib.optional (linuxVariant == "linux") "rp1_pci"
++ lib.optional (linuxVariant == "linux-rpi") "rp1"
# CONFIG_PINCTRL_RP1 is not a tristate in RPi's fork.
++ lib.optional (linuxVariant == "linux") "pinctrl-rp1"
++ lib.optional config.boot.initrd.network.enable "macb";
};
hardware.deviceTree.filter = lib.mkDefault "bcm2712*-rpi-*.dtb";
# Needed for Xorg to start (https://github.com/raspberrypi-ui/gldriver-test/blob/master/usr/lib/systemd/scripts/rp1_test.sh)
# This won't work for displays connected to the RP1 (DPI/composite/MIPI DSI), since I don't have one to test.
services.xserver.extraConfig = ''

View file

@ -0,0 +1,7 @@
{
boot.initrd.availableKernelModules = [
"usb-storage"
"usbhid"
"vc4"
];
}