-
Notifications
You must be signed in to change notification settings - Fork 76
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Don't require using systemd-boot to get automated firmware updates #207
Conversation
My concern with this is that the current behavior feels more correct (except for the fact that it's tied to systemd-boot). Currently, if you do a |
I've modified the change to not apply the capsule update if |
Using systemd-boot is not a requirement for applying capsule updates. We can make the firmware update process a systemd service, which gives us the behavior of running on every `switch-to-configuration` when the capsule update file changes. We do not apply the firmware update if we notice that the currently active nixos system (represented by /run/current-system) is not the same as the system profile that is persisted to /nix/var/nix/profiles/system. This allows us to retain the behavior from before this change where a user running `nixos-rebuild test` or similar will not have a capsule update applied.
I think that should be sufficient. Does this PR pass our uefi update test? |
Yes they do! With and without auto update enabled |
@jmbaur I believe this PR caused a regression in update behavior. Say we are upgrading from version X to version Y: Previously, running Now, because the update logic has been moved entirely into the I'm not confident that NVIDIA provides any guarantees for anything working if firmware and system software are mismatched. It hasn't been a problem for 35.3.1 -> 35.4.1 or 35.4.1 -> 35.6.0, but I don't want to depend on that going forward. |
@@ -129,7 +129,7 @@ Weston and sway have been tested working on Orin devices, but do not work on Xav | |||
### Updating firmware from device | |||
Recent versions of Jetpack (>=5.1) support updating the device firmware from the device using the UEFI Capsule update mechanism. | |||
This can be done as a more convenient alternative to physically attaching to the device and re-running the flash script. | |||
These updates can be performed automatically after a `nixos-rebuild boot` if the `hardware.nvidia-jetpack.bootloader.autoUpdate` setting is set to true and systemd-boot is used. | |||
These updates can be performed automatically after a `nixos-rebuild switch` if the `hardware.nvidia-jetpack.bootloader.autoUpdate` setting is set to true. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I should have noticed this earlier. We don't want to run nixos-rebuild switch
when upgrading major versions of Jetpack/L4T, since then the new version of the system would be running a different kernel version, etc.
Description of changes
Using systemd-boot is not a requirement for applying capsule updates. We can make the firmware update a systemd service, which gives us the behavior of running on every
switch-to-configuration
when the capsule update file changes.Testing
Tested that the capsule update was successfully applied on an Orin AGX Devkit and a fused Xavier AGX Devkit.