Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
3540385
Add description of new LED blink error code (#4134)
lurch Jul 1, 2025
49eb95a
imx500: Swap pytorch/tf tab ordering. Pytorch is preferred.
naushir Jul 3, 2025
23735ae
camera: Add libopencv-dev package to installation instructions
naushir Jul 21, 2025
0c114d7
Tweak revision-codes Note (#4120)
lurch Jul 24, 2025
97d6bad
Update list of groups to reflect default user's groups in Bookworm (#…
lurch Jul 24, 2025
021c620
Add note about adjusting Pi5 fan speeds (#4121)
lurch Jul 24, 2025
ff787d9
Update the audio board pinout diagram (#4146)
JamesH65 Jul 29, 2025
fae9204
Update submodules for pico-sdk 2.2.0
lurch Jul 29, 2025
47c6c96
boot-watchdog: Describe the new boot-watchdog for Pi4 / Pi5
timg236 Jul 23, 2025
25cf0f7
watchdog: Describe the new kernel_watchdog parameters
timg236 Jul 23, 2025
dfdf01f
watchdog: Link to the PARTITION EEPROM property
timg236 Jul 24, 2025
bdbc22f
Document SDRAM_BANKLOW bootloader config setting
popcornmix Aug 4, 2025
a08e5b9
Merge pull request #4152 from popcornmix/banklow
timg236 Aug 6, 2025
b803769
Added 5-inch info and updated structure and content of the Touch Disp…
JeuneseRPi Aug 13, 2025
2257439
Formatting of table; parallel phrasing for Feature list.
JeuneseRPi Aug 13, 2025
7fa8314
Dealing with @lurch and @6by9 comments
JeuneseRPi Aug 13, 2025
0d53fc4
Dealing with more review comments
JeuneseRPi Aug 13, 2025
4469a77
Update documentation/asciidoc/accessories/touch-display-2/about.adoc
JeuneseRPi Aug 14, 2025
1d5d752
Update documentation/asciidoc/accessories/touch-display-2/about.adoc
JeuneseRPi Aug 14, 2025
987cf7f
Dealing with more comments from @lurch
JeuneseRPi Aug 14, 2025
cd41754
Two changes per @lurch advice
JeuneseRPi Aug 14, 2025
1086cd0
Added more info about 5-inch display
JeuneseRPi Aug 14, 2025
5ef24d8
Formatting for clarity and consistency
JeuneseRPi Aug 14, 2025
b08a7f6
Typo
JeuneseRPi Aug 14, 2025
0c4ce4e
Typo 2
JeuneseRPi Aug 14, 2025
14023f4
Fixing confusion between TD1 and TD2.
JeuneseRPi Aug 14, 2025
c235079
Minor style edits plus corrections in grammar.
JeuneseRPi Aug 14, 2025
6aad3fe
Update documentation/asciidoc/accessories/touch-display-2/about.adoc
JeuneseRPi Aug 14, 2025
4151d68
Update documentation/asciidoc/computers/compute-module/cmio-display.adoc
JeuneseRPi Aug 14, 2025
c1c7ba5
Update documentation/asciidoc/computers/compute-module/cmio-display.adoc
JeuneseRPi Aug 14, 2025
fbc8cb9
Update documentation/asciidoc/computers/compute-module/cmio-display.adoc
JeuneseRPi Aug 14, 2025
eecba79
Update documentation/asciidoc/accessories/touch-display-2/about.adoc
JeuneseRPi Aug 14, 2025
db1ab2a
Update documentation/asciidoc/accessories/touch-display-2/about.adoc
JeuneseRPi Aug 14, 2025
c045726
Update documentation/asciidoc/accessories/touch-display-2/about.adoc
JeuneseRPi Aug 14, 2025
220221e
Update documentation/asciidoc/computers/compute-module/cmio-display.adoc
JeuneseRPi Aug 14, 2025
142dff6
Update documentation/asciidoc/computers/compute-module/cmio-display.adoc
JeuneseRPi Aug 14, 2025
865e55e
Removed incorrect statement
JeuneseRPi Aug 14, 2025
f129172
Merge pull request #4158 from raspberrypi/touchdisplay
mudge Aug 18, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,4 @@ build-pico-sdk-docs
documentation/html
documentation/asciidoc/pico-sdk
.venv
.env
20 changes: 10 additions & 10 deletions documentation/asciidoc/accessories/ai-camera/model-conversion.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -26,21 +26,21 @@ The Edge-MDT package takes a parameter to select between installing the PyTorch

[tabs]
======
TensorFlow::
PyTorch::
+
[source,console]
----
$ pip install edge-mdt[tf]
$ pip install edge-mdt[pt]
----
+
TIP: Always use the same version of TensorFlow you used to compress your model.

PyTorch::
TensorFlow::
+
[source,console]
----
$ pip install edge-mdt[pt]
$ pip install edge-mdt[tf]
----
+
TIP: Always use the same version of TensorFlow you used to compress your model.
======

If you need to install both packages, use two separate Python virtual environments. This prevents TensorFlow and PyTorch from causing conflicts with each other.
Expand All @@ -62,18 +62,18 @@ To convert a model model:

[tabs]
======
TensorFlow::
PyTorch::
+
[source,console]
----
$ imxconv-tf -i <compressed Keras model> -o <output folder>
$ imxconv-pt -i <compressed ONNX model> -o <output folder>
----

PyTorch::
TensorFlow::
+
[source,console]
----
$ imxconv-pt -i <compressed ONNX model> -o <output folder>
$ imxconv-tf -i <compressed Keras model> -o <output folder>
----
======

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ If appropriate then the following are also used:

=== DAC PRO, DAC{plus}, DigiAMP{plus}, Codec Zero

image::images/pin_table_new.jpg[width="80%"]
image::images/all_audio_boards_gpio_pinouts.png[width="80%"]

The DAC PRO, DAC{plus} and DigiAMP{plus} re-expose the Raspberry Pi signals, allowing additional sensors and peripherals
to be added easily. Please note that some signals are for exclusive use (I2S and EEPROM) by some
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
225 changes: 155 additions & 70 deletions documentation/asciidoc/accessories/touch-display-2/about.adoc

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ To build `rpicam-apps` without first rebuilding `libcamera` and `libepoxy`, inst

[source,console]
----
$ sudo apt install -y libcamera-dev libepoxy-dev libjpeg-dev libtiff5-dev libpng-dev
$ sudo apt install -y libcamera-dev libepoxy-dev libjpeg-dev libtiff5-dev libpng-dev libopencv-dev
----

TIP: If you do not need support for the GLES/EGL preview window, omit `libepoxy-dev`.
Expand Down
70 changes: 29 additions & 41 deletions documentation/asciidoc/computers/compute-module/cmio-display.adoc
Original file line number Diff line number Diff line change
@@ -1,52 +1,41 @@
== Attaching the Touch Display LCD panel

Update your system software and firmware to the latest version before starting.
Compute Modules mostly use the same process, but sometimes physical differences force changes for a particular model.
Update your system software and firmware to the latest version before starting. Compute Modules mostly use the same process, but sometimes physical differences force changes for a particular model.

=== Connect a display to DISP1/DSI1

NOTE: The Raspberry Pi Zero camera cable cannot be used as an alternative to the RPI-DISPLAY adapter. The two cables have distinct wiring.
NOTE: The Raspberry Pi Zero camera cable can't be used as an alternative to the RPI-DISPLAY adapter. The two cables have distinct wiring.

To connect a display to DISP1/DSI1:
To connect a display to `DISP1/DSI1`:

. Disconnect the Compute Module from power.
. Connect the display to the DISP1/DSI1 port on the Compute Module IO board through the 22W to 15W display adapter.
. _(CM1, CM3, CM3+, and CM4S only)_: Connect the following GPIO pins with jumper cables:
* `0` to `CD1_SDA`
* `1` to `CD1_SCL`
. _(CM5)_ On the Compute Module 5 IO board, add the appropriate jumpers to J6, as indicated on the silkscreen.
. Connect the display to the `DISP1/DSI1` port on the Compute Module IO board through the 22W to 15W display adapter.
. Complete the appropriate jumper connections:
- For *CM1*, *CM3*, *CM3+*, and *CM4S*, connect the following GPIO pins with jumper cables:
* `0` to `CD1_SDA`
* `1` to `CD1_SCL`
- For *CM5*, on the Compute Module 5 IO board, add the appropriate jumpers to J6, as indicated on the silkscreen.
. Reconnect the Compute Module to power.
. Add the following line to xref:../computers/config_txt.adoc#what-is-config-txt[`/boot/firmware/config.txt`]:
+
[source,ini]
----
dtoverlay=vc4-kms-dsi-7inch
----
. Add `dtoverlay=vc4-kms-dsi-7inch` to xref:../computers/config_txt.adoc#what-is-config-txt[`/boot/firmware/config.txt`].
. Reboot your Compute Module with `sudo reboot`. Your device should detect and begin displaying output to your display.

=== Connect a display to DISP0/DSI0

To connect a display to DISP0/DSI0 on CM1, CM3 and CM4 IO boards:

. Connect the display to the DISP0/DSI0 port on the Compute Module IO board through the 22W to 15W display adapter.
. _(CM1, CM3, CM3+, and CM4S only)_: Connect the following GPIO pins with jumper cables:
* `28` to `CD0_SDA`
* `29` to `CD0_SCL`

. _(CM4 only)_ On the Compute Module 4 IO board, add the appropriate jumpers to J6, as indicated on the silkscreen.
To connect a display to `DISP0/DSI0` on CM1, CM3, and CM4 IO boards:

. Connect the display to the `DISP0/DSI0` port on the Compute Module IO board through the 22W to 15W display adapter.
. Complete the appropriate jumper connections:
- For *CM1*, *CM3*, *CM3+*, and *CM4S*, connect the following GPIO pins with jumper cables:
* `28` to `CD0_SDA`
* `29` to `CD0_SCL`
- For *CM4*, on the Compute Module 4 IO board, add the appropriate jumpers to J6, as indicated on the silkscreen.
. Reconnect the Compute Module to power.
. Add the following line to `/boot/firmware/config.txt`:
+
[source,ini]
----
dtoverlay=vc4-kms-dsi-7inch
----
. Add `dtoverlay=vc4-kms-dsi-7inch` to `/boot/firmware/config.txt`.
. Reboot your Compute Module with `sudo reboot`. Your device should detect and begin displaying output to your display.

=== Disable touchscreen

The touchscreen requires no additional configuration. Connect it to your Compute Module, and both the touchscreen element and display should work once successfully detected.
The touchscreen requires no additional configuration. Connect it to your Compute Module; both the touchscreen element and display work when successfully detected.

To disable the touchscreen element, but still use the display, add the following line to `/boot/firmware/config.txt`:

Expand All @@ -66,18 +55,17 @@ ignore_lcd=1

== Attaching the Touch Display 2 LCD panel

Touch Display 2 is a 720x1280 7" LCD display designed specifically for Raspberry Pi devices (see https://www.raspberrypi.com/products/touch-display-2/). It connects in the same way as the original touch display, but the software setup on Compute Modules is slightly different as it uses a different display driver. See xref:../accessories/touch-display-2.adoc[Touch Display 2] for connection details.
Touch Display 2 is an LCD display designed for Raspberry Pi devices (see https://www.raspberrypi.com/products/touch-display-2/). It's available in two sizes: 5 inches or 7 inches (diagonally). For more information about these options, see *Specifications* in xref:../accessories/touch-display-2.adoc[Touch Display 2].

Edit the /boot/firmware/config.txt file and add the following to enable Touch Display 2 on DISP1/DSI1. You will also need to add jumpers to J6 as indicated on the silkscreen.
Regardless of the size that you use, Touch Display 2 connects in the same way as the original Touch Display, but the software setup on Compute Modules is slightly different because it uses a different display driver. For connection details, see *Connectors* in xref:../accessories/touch-display-2.adoc[Touch Display 2].

[source,ini]
----
dtoverlay=vc4-kms-dsi-ili9881-7inch
----
To enable Touch Display 2 on `DISP1/DSI1`, edit the `/boot/firmware/config.txt` file to add the following. You must also add jumpers to J6 as indicated on the silkscreen.

To use DISP0/DSI0, use the following:
- For the *5-inch* display: `dtoverlay=vc4-kms-dsi-ili9881-5inch`
- For the *7-inch* display: `dtoverlay=vc4-kms-dsi-ili9881-7inch`

To use `DISP0/DSI0`, append `,dsi0` to the overlay name.

- For the *5-inch* display: `dtoverlay=vc4-kms-dsi-ili9881-5inch,dsi0`
- For the *7-inch* display: `dtoverlay=vc4-kms-dsi-ili9881-7inch,dsi0`

[source,ini]
----
dtoverlay=vc4-kms-dsi-ili9881-7inch,dsi0
----
31 changes: 31 additions & 0 deletions documentation/asciidoc/computers/config_txt/boot.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -208,6 +208,37 @@ This property could be used to debug different xref:raspberry-pi.adoc#BOOT_ORDER

Default: ``

[[kernel_watchdog_timeout]]
==== `kernel_watchdog_timeout`

If set to a non-zero value (in seconds), this property enables a hardware watchdog timer that is handed over to the operating system (OS) at boot. If the OS does not regularly "kick" or reset the watchdog, the system will be reset after the specified timeout.

This property sets the `systemd` `watchdog.open_timeout` parameter, which controls how long the OS has to initialize and start servicing the watchdog. The value is passed to the OS via the kernel command line. For ongoing operation, the OS must also regularly reset the watchdog, typically controlled by the `RuntimeWatchdogSec` parameter in `systemd`. For more information, see https://www.freedesktop.org/software/systemd/man/systemd-system.conf.html#RuntimeWatchdogSec=[systemd watchdog documentation].

[NOTE]
====
On Raspberry Pi OS Bookworm and earlier, the `RuntimeWatchdogSec` parameter is **not enabled by default** and this setting must be configured first in `/etc/systemd/system.conf` before the firmware kernel watchdog can be used.

If both `BOOT_WATCHDOG_TIMEOUT` (EEPROM/bootloader setting, only supported on Raspberry Pi 4 and 5) and `kernel_watchdog_timeout` are set, the bootloader will seamlessly hand over from the bootloader watchdog to the kernel watchdog at the point the OS is started. This provides continuous watchdog coverage from power-on through to OS runtime.

It is preferred to use `kernel_watchdog_timeout` rather than `dtparam=watchdog` because `kernel_watchdog_timeout` explicitly sets the `open_timeout` parameter, ensuring the watchdog is active until systemd takes over.
====

This is useful for ensuring that the system can recover from OS hangs or crashes after the boot process has completed.

Default: `0` (disabled)

[[kernel_watchdog_partition]]
==== `kernel_watchdog_partition`

If the kernel watchdog triggers (i.e. the OS fails to reset the watchdog within the timeout), this property specifies the partition number to boot from after the reset. This allows for automatic failover to a recovery or alternate partition.

You can use this in conjunction with the xref:config_txt.adoc#the-expression-filter[expression filter] to apply different settings or select a different boot flow when the watchdog triggers a reboot to a specific partition.

See also the xref:raspberry-pi.adoc#PARTITION[PARTITION] property for more information about how to use high partition numbers to detect a watchdog trigger.

Default: `0` (default partition)


[[eeprom_write_protect]]
==== `eeprom_write_protect`
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,10 @@ If a Raspberry Pi fails to boot for some reason, or has to shut down, in many ca
| 10
| In HALT state

| 1
| 2
| SD card overcurrent detected

| 2
| 1
| Partition not FAT
Expand Down
2 changes: 1 addition & 1 deletion documentation/asciidoc/computers/configuration/users.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ To grant the new user necessary permissions, like `sudo`, run the following comm

[source,console]
----
$ sudo usermod -a -G adm,dialout,cdrom,sudo,audio,video,plugdev,games,users,input,netdev,gpio,i2c,spi <username>
$ sudo usermod -a -G adm,dialout,cdrom,sudo,audio,video,plugdev,games,users,input,render,netdev,lpadmin,gpio,i2c,spi <username>
----

To check that the permissions were successfully granted, run the following command, replacing the `<username>` placeholder with the username for the new user:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,31 @@ The `BOOT_ORDER` property defines the sequence for the different boot modes. It
| Try NVMe first, followed by USB-MSD then repeat
|===


[[BOOT_WATCHDOG_TIMEOUT]]
==== `BOOT_WATCHDOG_TIMEOUT`

If set to a non-zero value (in seconds), enables a hardware watchdog timer in the bootloader. If the OS is not started within the specified time, the watchdog will reset the system.

The bootloader watchdog is automatically cancelled as soon as the ARM CPU is started. It does **not** monitor the OS after the handover from the bootloader.

This is useful for unattended or remote systems to ensure recovery from failed boots (e.g. if the OS never loads).

Default: `0` (disabled)

[[BOOT_WATCHDOG_PARTITION]]
==== `BOOT_WATCHDOG_PARTITION`

If the bootloader watchdog triggers, this property specifies the partition number to boot from after the reset. This allows for automatic failover to a recovery or alternate partition.

If not set, the bootloader will retry the default partition (0).

You can use this in conjunction with the xref:config_txt.adoc#the-expression-filter[expression filter] to apply different settings or select a different boot flow when the watchdog triggers a reboot to a specific partition.

See also the xref:raspberry-pi.adoc#PARTITION[PARTITION] property for more information about how to use high partition numbers to detect a watchdog trigger.

Default: `0`

[[MAX_RESTARTS]]
==== `MAX_RESTARTS`

Expand Down Expand Up @@ -650,6 +675,42 @@ XHCI_DEBUG=0x3

Default: `0x0` (no USB debug messages enabled)

[[SDRAM_BANKLOW]]
==== `SDRAM_BANKLOW`

SDRAM_BANKLOW controls how the SDRAM banks are arranged within the system address space. The number of bank bits may be selectively mapped to being located in the MSBs of the address, or being located between the row and column address bits.
This setting can significantly affect SDRAM performance.

When unset, the bootloader will choose the preferred option. This is currently 3 on Pi 4 family and 1 on Pi 5 family.

[cols="1m,3"]
|===
| BANKLOW | Address Bit Mapping

| 0
| Address = {bank[3:0], row, column}

| 1
| Address = {bank[3:1], row, bank[0], column}

| 2
| Address = {bank[3:2], row, bank[1:0], column}

| 3
| Address = {bank[3], row, bank[2:0], column}

| 4
| Address = {row, bank[3:0], column}
|===

This setting also causes the bootloader to add a setting for the number of NUMA regions to be used by the kernel ("numa=fake=<n>").
For best performance these settings should be left as default.

Note: on a Pi 5 family device, if NUMA is not available in the kernel then performance will be adversely affected.
Manually choosing SDRAM_BANKLOW=3 will mitigate this performance hit, although for highest performance, ensure NUMA is available.

Default: unset (use bootloader recommended setting)

[[config_txt]]
==== `[config.txt]` section

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,8 @@ As the temperature of the Raspberry Pi 5 increases, the fan reacts in the follow

Temperature decreases use the same mapping with a 5°C **hysteresis**; fan speed decreases when the temperature drops to 5°C below each of the above thresholds.

NOTE: The temperature, hysteresis and speed figures given above can be adjusted by using the various `fan_tempN`, `fan_tempN_hyst` and `fan_tempN_speed` dtoverlay settings (where `N` is 0, 1, 2 or 3). See https://github.com/raspberrypi/linux/blob/rpi-6.12.y/arch/arm/boot/dts/overlays/README[the overlays README] for full details. For example, adding `dtparam=fan_temp0=55000` to `/boot/firmware/config.txt` will cause the fan to remain off until the Raspberry Pi 5's temperature reaches 55°C.

At boot the fan is turned on, and the tachometer input is checked to see if the fan is spinning. If it is, then the `cooling_fan` device tree overlay is enabled. This overlay is in `bcm2712-rpi-5-b.dtb` by default, but with `status=disabled`.

==== Raspberry Pi 5 fan connector pinout
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ Revision : a02082
Serial : 00000000765fc593
----

NOTE: All Raspberry Pi computers report `BCM2835`, even those with BCM2836, BCM2837, BCM2711, and BCM2712 processors. You should not use this string to detect the processor. Decode the revision code using the information below, or `cat /sys/firmware/devicetree/base/model`.
NOTE: All Raspberry Pi computers report `BCM2835`, even those with BCM2836, BCM2837, BCM2711, and BCM2712 processors. You should not use this string to detect the processor. Decode the revision code using the information below, or `cat /sys/firmware/devicetree/base/model`. Depending on which kernel you're running, your `cpuinfo` might also have a "Model" line, and might not have a "Hardware" line.

=== Old-style revision codes

Expand Down
2 changes: 1 addition & 1 deletion lib/pico-examples
Submodule pico-examples updated 169 files
2 changes: 1 addition & 1 deletion lib/pico-sdk
Submodule pico-sdk updated 385 files