You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: documentation/asciidoc/computers/config_txt/conditional.adoc
+88-8
Original file line number
Diff line number
Diff line change
@@ -96,9 +96,6 @@ Some models of Raspberry Pi, including Zero, Compute Module, and Keyboard models
96
96
97
97
The `[none]` filter prevents any settings that follow from being applied to any hardware. Although there is nothing that you can't do without `[none]`, it can be a useful way to keep groups of unused settings in config.txt without having to comment out every line.
98
98
99
-
=== The `[partition=N]` filter
100
-
This `partition` filter can be be used to select alternate boot flows according to the requested partition number (`sudo reboot N`) or via direct usage of the `PM_RSTS` watchdog register.
The raw value of the `PM_RSTS` register at bootup is available via `/proc/device-tree/chosen/bootloader/rsts` and the final partition number used for booting is available via `/proc/device-tree/chosen/bootloader/partition`. These are big-endian binary values.
125
122
126
-
=== The `[boot_partition=N]` filter
127
-
The `boot_partition` filter can be used to select alternate OS files (e.g. `cmdline.txt`) to be loaded, depending on which partition `config.txt` was loaded from after processing `autoboot.txt`. This is intended for use with an `A/B` boot-system with `autoboot.txt` where it is desirable to be able to have identical files installed to the boot partition for both the `A` and `B` images.
123
+
=== The expression filter
124
+
125
+
The expression filter provides support for comparing unsigned integer "boot variables" to constants using a simple set of operators. It is intended to support OTA update mechanisms, debug and test.
126
+
127
+
* The "boot variables" are `boot_arg1`, `boot_count`, `boot_partition` and `partition`.
128
+
* Boot variables are always lower case.
129
+
* Integer constants may either be written as decimal or as hex.
130
+
* Expression conditional filters have no side-effects e.g. no assignment operators.
131
+
* As with other filter types the expression filter cannot be nested.
132
+
* Use the `[all]` filter to reset expressions and all other conditional filter types.
133
+
134
+
Syntax:
135
+
[source,ini]
136
+
----
137
+
# ARG is a boot-variable
138
+
# VALUE and MASK are unsigned integer constants
139
+
[ARG=VALUE] # selected if (ARG == VALUE)
140
+
[ARG&MASK] # selected if ((ARG & VALUE) != 0)
141
+
[ARG&MASK=VALUE] # selected if ((ARG & MASK) == VALUE)
142
+
[ARG<VALUE] # selected if (ARG < VALUE)
143
+
[ARG>VALUE] # selected if (ARG > VALUE)
144
+
145
+
----
146
+
147
+
==== `boot_arg1`
148
+
Raspberry Pi 5 and newer flagship devices only.
149
+
150
+
The `boot_arg1` variable is a 32-bit user defined value which is stored in a reset-safe register allowing parameters to be passed accross a reboot.
151
+
152
+
Setting `boot_arg1` to 42 via `config.txt`:
153
+
[source,ini]
154
+
----
155
+
set_reboot_arg1=42
156
+
----
157
+
The `set_reboot_arg1` property sets the value for the next boot. It does not change the current value as seen by the config parser.
The value of the `boot_arg1` variable when the OS was started can be read via xref:configuration.adoc#part4[device-tree] at `/proc/device-tree/chosen/bootloader/arg1`
173
+
174
+
==== `boot_count`
175
+
Raspberry Pi 5 and newer flagship devices only.
176
+
177
+
The `boot_count` variable is an 8-bit value stored in a reset-safe register that is incremented at boot (wrapping back to zero at 256). It is cleared if power is disconnected.
128
178
129
-
Example `config.txt` - select the matching root filesystem for the `A/B` boot file-system.
The value of `boot_count` when the OS was started can be read via xref:configuration.adoc#part4[device-tree] at `/proc/device-tree/chosen/bootloader/count`
194
+
195
+
==== `boot_partition`
196
+
The `boot_partition` variable can be used to select alternate OS files (e.g. `cmdline.txt`) to be loaded, depending on which partition `config.txt` was loaded from after processing xref:config_txt.adoc#autoboot-txt[autoboot.txt]. This is intended for use with an `A/B` boot-system with `autoboot.txt` where it is desirable to be able to have identical files installed to the boot partition for both the `A` and `B` images.
197
+
198
+
The value of the `boot_partition` can be different to the requested `partition` variable if it was overriden by setting `boot_partition` in xref:config_txt.adoc#autoboot-txt[autoboot.txt] or if the specified partion was not bootable and xref:raspberry-pi.adoc#PARTITION_WALK[PARTITION_WALK] was enabled in the EEPROM config.
199
+
200
+
Example `config.txt` - select the matching root filesystem for the `A/B` boot file-system:
130
201
[source,ini]
131
202
----
203
+
# Use different cmdline files to point to different root filesystems based on which partition the system booted from.
132
204
[boot_partition=1]
133
-
cmdline=cmdline_rootfs_a.txt
205
+
cmdline=cmdline_rootfs_a.txt # Points to root filesystem A
134
206
135
207
[boot_partition=2]
136
-
cmdline=cmdline_rootfs_b.txt
208
+
cmdline=cmdline_rootfs_b.txt # Points to root filesystem B
137
209
----
138
210
211
+
The value of `boot_partition` i.e. the partition used to boot the OS can be read from xref:configuration.adoc#part4[device-tree] at `/proc/device-tree/chosen/bootloader/partition`
212
+
213
+
==== `partition`
214
+
The `partition` variable can be used to select alternate boot flows according to the requested partition number (`sudo reboot N`) or via direct usage of the `PM_RSTS` watchdog register.
215
+
216
+
139
217
=== The `[tryboot]` filter
140
218
141
219
This filter succeeds if the `tryboot` reboot flag was set.
142
220
143
221
It is intended for use in xref:config_txt.adoc#autoboot-txt[autoboot.txt] to select a different `boot_partition` in `tryboot` mode for fail-safe OS updates.
144
222
223
+
The value of `tryboot` at the start of boot can be read via xref:configuration.adoc#part4[device-tree] at `/proc/device-tree/chosen/bootloader/tryboot`
224
+
145
225
=== The `[EDID=*]` filter
146
226
147
227
When switching between multiple monitors while using a single SD card in your Raspberry Pi, and where a blank config isn't sufficient to automatically select the desired resolution for each one, this allows specific settings to be chosen based on the monitors' EDID names.
Copy file name to clipboardExpand all lines: documentation/asciidoc/computers/configuration/device-tree.adoc
+21-6
Original file line number
Diff line number
Diff line change
@@ -833,7 +833,16 @@ For a list of supported overlays and parameters, see the https://github.com/rasp
833
833
[[part4]]
834
834
=== Firmware parameters
835
835
836
-
The firmware uses the special https://www.kernel.org/doc/html/latest/devicetree/usage-model.html#runtime-configuration[/chosen] node to pass parameters between the bootloader and/or firmware and the operating system. Each property is stored as a 32-bit integer unless indicated otherwise.
836
+
The firmware uses the special https://www.kernel.org/doc/html/latest/devicetree/usage-model.html#runtime-configuration[/chosen] node to pass parameters between the bootloader and/or firmware and the operating system.
837
+
838
+
* Each property is stored as a 32-bit unsigned integer unless indicated otherwise.
839
+
* Numbers in device-tree are stored in binary and are big-endian.
840
+
841
+
Example shell command for reading a 32-bit unsigned integer property:
`overlay_prefix`:: _(string)_ The xref:config_txt.adoc#overlay_prefix[overlay_prefix] string selected by `config.txt`.
839
848
@@ -849,8 +858,6 @@ The firmware uses the special https://www.kernel.org/doc/html/latest/devicetree/
849
858
850
859
==== Common bootloader properties `/chosen/bootloader`
851
860
852
-
Each property is stored as a 32-bit integer unless indicated otherwise.
853
-
854
861
`boot-mode`:: The boot-mode used to load the kernel. See the xref:raspberry-pi.adoc#BOOT_ORDER[BOOT_ORDER] documentation for a list of possible boot-mode values.
855
862
856
863
`partition`:: The partition number used during boot. If a `boot.img` ramdisk is loaded then this refers to partition that the ramdisk was loaded from rather than the partition number within the ramdisk.
@@ -859,9 +866,17 @@ Each property is stored as a 32-bit integer unless indicated otherwise.
859
866
860
867
`tryboot`:: Set to `1` if the `tryboot` flag was set at boot.
861
868
869
+
==== Boot variables `/chosen/bootloader`
870
+
871
+
Raspberry Pi 5 only.
872
+
873
+
`arg1`:: The value of the user defined reboot argument from the previous boot. See xref:config_txt.adoc#boot_arg1[boot_arg1]
874
+
875
+
`count`:: The value of the 8-bit `boot_count` variable when the OS was started. See xref:config_txt.adoc#boot_count[boot_count]
876
+
862
877
==== Power supply properties `/chosen/power`
863
878
864
-
Raspberry Pi 5 only. Each property is stored as a 32-bit integer unless indicated otherwise.
879
+
Raspberry Pi 5 only.
865
880
866
881
`max_current`:: The maximum current in mA that the power supply can supply. The firmware reports the value indicated by the USB-C, USB-PD or PoE interfaces. For bench power supplies (e.g. connected to the GPIO header) define `PSU_MAX_CURRENT` in the bootloader configuration to indicate the power supply current capability.
867
882
@@ -898,7 +913,7 @@ The format is defined by the https://usb.org/document-library/usb-power-delivery
898
913
899
914
==== BCM2711 and BCM2712 specific bootloader properties `/chosen/bootloader`
900
915
901
-
The following properties are specific to the BCM2711 and BCM2712 SPI EEPROM bootloaders. Each property is stored as a 32-bit integer unless indicated otherwise.
916
+
The following properties are specific to the BCM2711 and BCM2712 SPI EEPROM bootloaders.
902
917
903
918
`build_timestamp`:: The UTC build time for the EEPROM bootloader.
904
919
@@ -959,7 +974,7 @@ The following properties are specific to the BCM2711 and BCM2712 SPI EEPROM boot
959
974
960
975
==== BCM2711 and BCM2712 USB boot properties `/chosen/bootloader/usb`
961
976
962
-
The following properties are defined if the system was booted from USB. These may be used to uniquely identify the USB boot device. Each property is stored as a 32-bit integer.
977
+
The following properties are defined if the system was booted from USB. These may be used to uniquely identify the USB boot device.
963
978
964
979
`usb-version`:: The USB major protocol version (2 or 3).
0 commit comments