Skip to content
Merged
14 changes: 7 additions & 7 deletions documentation/asciidoc/accessories/ai-camera/details.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,15 @@ image::images/imx500-comparison.svg[Traditional versus IMX500 AI camera systems]

The left side demonstrates the architecture of a traditional AI camera system. In such a system, the camera delivers images to the Raspberry Pi. The Raspberry Pi processes the images and then performs AI inference. Traditional systems may use external AI accelerators (as shown) or rely exclusively on the CPU.

The right side demonstrates the architecture of a system that uses IMX500. The camera module contains a small Image Signal Processor (ISP) which turns the raw camera image data into an **input tensor**. The camera module sends this tensor directly into the AI accelerator within the camera, which produces an **output tensor** that contains the inferencing results. The AI accelerator sends this tensor to the Raspberry Pi. There is no need for an external accelerator, nor for the Raspberry Pi to run neural network software on the CPU.
The right side demonstrates the architecture of a system that uses IMX500. The camera module contains a small Image Signal Processor (ISP) which turns the raw camera image data into an **input tensor**. The camera module sends this tensor directly into the AI accelerator within the camera, which produces **output tensors** that contain the inferencing results. The AI accelerator sends these tensors to the Raspberry Pi. There is no need for an external accelerator, nor for the Raspberry Pi to run neural network software on the CPU.

To fully understand this system, familiarise yourself with the following concepts:

Input Tensor:: The part of the sensor image passed to the AI engine for inferencing. Produced by a small on-board ISP which also crops and scales the camera image to the dimensions expected by the neural network that has been loaded. The input tensor is not normally made available to applications, though it is possible to access it for debugging purposes.

Region of Interest (ROI):: Specifies exactly which part of the sensor image is cropped out before being rescaled to the size demanded by the neural network. Can be queried and set by an application. The units used are always pixels in the full resolution sensor output. The default ROI setting uses the full image received from the sensor, cropping no data.

Output Tensor:: The results of inferencing performed by the neural network. The precise number and shape of the outputs depend on the neural network. Application code must understand how to handle the tensor.
Output Tensors:: The results of inferencing performed by the neural network. The precise number and shape of the outputs depend on the neural network. Application code must understand how to handle the tensors.

=== System architecture

Expand All @@ -43,13 +43,13 @@ Once `libcamera` dequeues the image and inference data buffers from the kernel,
| Description

| `CnnOutputTensor`
| Floating point array storing the output tensor.
| Floating point array storing the output tensors.

| `CnnInputTensor`
| Floating point array storing the input tensor.

| `CnnOutputTensorInfo`
| Network specific parameters describing the output tensors structure:
| Network specific parameters describing the output tensors' structure:

[source,c]
----
Expand All @@ -67,7 +67,7 @@ struct CnnOutputTensorInfo {
----

| `CnnInputTensorInfo`
| Network specific parameters describing the input tensors structure:
| Network specific parameters describing the input tensor's structure:

[source,c]
----
Expand Down Expand Up @@ -204,7 +204,7 @@ def draw_detections(request, detections, stream="main"):
cv2.rectangle(m.array, (b.x, b.y), (b.x + b.width, b.y + b.height), (255, 0, 0, 0))

def parse_detections(request, stream='main'):
"""Parse the output tensor into a number of detected objects, scaled to the ISP out."""
"""Parse the output tensor into a number of detected objects, scaled to the ISP output."""
outputs = imx500.get_outputs(request.get_metadata())
boxes, scores, classes = outputs[0][0], outputs[1][0], outputs[2][0]
detections = [ Detection(box, category, score, metadata)
Expand Down Expand Up @@ -245,7 +245,7 @@ There are a number of scaling/cropping/translation operations occurring from the
| Returns the input tensor size based on the neural network model used.

| `IMX500.get_outputs(metadata)`
| Returns the output tensors from the Picamera2 image metadata metadata.
| Returns the output tensors from the Picamera2 image metadata.

| `IMX500.get_output_shapes(metadata)`
| Returns the shape of the output tensors from the Picamera2 image metadata for the neural network model used.
Expand Down
38 changes: 6 additions & 32 deletions documentation/asciidoc/accessories/display/display_intro.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -75,22 +75,17 @@ WARNING: When using a micro USB cable to power the display, mount it inside a ch

=== Use an on-screen keyboard

In Raspberry Pi OS Bookworm and later, you can use the https://github.com/jjsullivan5196/wvkbd[`wvkbd`] on-screen keyboard as an input device. To install `wvkbd`, run the following command:
Raspberry Pi OS _Bookworm_ and later include the Squeekboard on-screen keyboard by default. When a touch display is attached, the on-screen keyboard should automatically show when it is possible to enter text and automatically hide when it is not possible to enter text.

[source,console]
----
$ sudo apt install wvkbd
----
For applications which do not support text entry detection, use the keyboard icon at the right end of the taskbar to manually show and hide the keyboard.

TIP: In Raspberry Pi OS releases prior to Bookworm, you can use `matchbox-keyboard` instead.

=== Change screen orientation
You can also permanently show or hide the on-screen keyboard in the Display tab of Raspberry Pi Configuration or the `Display` section of `raspi-config`.

If you want to physically rotate the display, or mount it in a specific position, you can use software to adjust the orientation of the screen to better match your setup.
TIP: In Raspberry Pi OS releases prior to _Bookworm_, use `matchbox-keyboard` instead. If you use the wayfire desktop compositor, use `wvkbd` instead.

==== Rotate screen from the desktop
=== Change screen orientation

To set the screen orientation from the desktop environment, select **Screen Configuration** from the **Preferences** menu. Right-click on the DSI-1 display rectangle in the layout editor, select **Orientation**, then pick the best option to fit your needs. You can also ensure that the touch overlay is assigned to the correct display with the **Touchscreen** option.
If you want to physically rotate the display, or mount it in a specific position, select **Screen Configuration** from the **Preferences** menu. Right-click on the DSI-1 display rectangle in the layout editor, select **Orientation**, then pick the best option to fit your needs. You can also ensure that the touch overlay is assigned to the correct display with the **Touchscreen** option.

image::images/display-rotation.png[Screenshot of orientation options in screen configuration, width="80%"]

Expand Down Expand Up @@ -132,27 +127,6 @@ Then, disable automatic display detection by removing the following line from `c
display_auto_detect=1
----

[NOTE]
====
In Raspberry Pi OS _Bookworm_, a bug in https://github.com/WayfireWM/wayfire[Wayfire] currently prevents cursor movement rotation when using WayVNC. There is no workaround for this bug in Wayfire. Instead, you can use https://github.com/labwc/labwc[`labwc`] (currently in beta).

First install `labwc`:

[source,console]
----
$ sudo apt install labwc
----

Then, use the Raspberry Pi Configuration CLI to switch to the `labwc` window compositor. Run the following command to open `raspi-config`:

[source,console]
----
$ sudo raspi-config
----

Go to **Advanced Options**. Select **Wayland**, then select **labwc**. Exit `raspi-config` and reboot with `sudo reboot`. Switching to `labwc` may reset some configuration, including keyboard layout and rotation settings.
====

==== Touch Display device tree option reference

The `vc4-kms-dsi-7inch` overlay supports the following options:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,20 +44,12 @@ $ kmsprint | grep Connector

==== Set a custom resolution

If you run the Wayland desktop compositor, you can set a custom display resolution by editing the `.config/wayfire.ini` file in your home directory. Edit the existing `[output:<device>]` section, or add a new `[output:<device>]` section for your xref:configuration.adoc#determine-display-device-name[display device] if one doesn't exist. To change your display resolution, add a `mode` line. For example, the following example shows a configuration for the device named `HDMI-A-1` with a resolution of 1080p at 60Hz:

[source,ini]
----
[output:HDMI-A-1]
mode = 1920x1080@60
----

For information about supported modes and the `mode` syntax, see the https://github.com/WayfireWM/wayfire-wiki/blob/master/Configuration.md#output-configuration[Wayfire documentation].

Add the same configuration block to `/usr/share/greeter.ini` to configure the login screen resolution.
To set a custom resolution, use our Screen Configuration tool, `raindrop`. If your Raspberry Pi OS installation doesn't already include `raindrop` (for instance, if you're still using the previous Screen Configuration tool, `arandr`), you can download `raindrop` from `apt` or the Recommended Software GUI.

==== Set a custom rotation

To set a custom resolution, use our Screen Configuration tool, `raindrop`. If your Raspberry Pi OS installation doesn't already include `raindrop` (for instance, if you're still using the previous Screen Configuration tool, `arandr`), you can download `raindrop` from `apt` or the Recommended Software GUI.

If you run the Wayland desktop compositor, you can set a custom display rotation with `wlr-randr`. The following commands rotate the display by 0°, 90°, 180°, and 270°:

[source,console]
Expand All @@ -72,25 +64,7 @@ The `--output` option specifies the device to be rotated.

NOTE: To run this command over SSH, add the following prefix: `WAYLAND_DISPLAY=wayland-1`, e.g. `WAYLAND_DISPLAY=wayland-1 wlr-randr --output HDMI-A-1 --transform 90`.

You can also use one of the following `--transform` options to mirror the display at the same time as rotating it: `flipped`, `flipped-90`, `flipped-180`, `flipped-270`

Alternatively, you can rotate the display using by editing the `.config/wayfire.ini` file in your home directory. Edit the existing `[output:<device>]` section, or add a new `[output:<device>]` section for your xref:configuration.adoc#determine-display-device-name[display device] if one doesn't exist. To rotate your display, add a `transform` line. For example, the following example shows a configuration for the device named `HDMI-A-1` with a resolution of 1080p at 60Hz and a 270° transform:

[source,ini]
----
[output:HDMI-A-1]
mode = 1920x1080@60
transform = 270
----

Wayland supports the following `transform` options:

* `normal`
* `90`
* `180`
* `270`

Add the same configuration block to `/usr/share/greeter.ini` to configure the login screen rotation.
You can also use one of the following `--transform` options to mirror the display at the same time as rotating it: `flipped`, `flipped-90`, `flipped-180`, `flipped-270`.

=== Console resolution and rotation

Expand Down
15 changes: 8 additions & 7 deletions documentation/asciidoc/computers/configuration/raspi-config.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -225,9 +225,9 @@ On the Raspberry Pi 4 and later, switch to the latest boot ROM software. Alterna

==== Wayland

Switch between the X11 and Wayland backends. Raspberry Pi 4 and later use Wayland by default; other models of Raspberry Pi use X11 by default.
Switch between the X11 and Wayland backends, and choose a window manager. Since Raspberry Pi OS _Bookworm_, all Raspberry Pi models run Wayland using labwc by default.

NOTE: To use Wayland on Raspberry Pi models prior to Raspberry Pi 4, you must also add `wayland=on` to `/boot/firmware/cmdline.txt`.
NOTE: To use Wayland on Raspberry Pi models prior to Raspberry Pi 4 running a version of Raspberry Pi OS earlier than _Bookworm_, add `wayland=on` to `/boot/firmware/cmdline.txt`.

==== Audio config

Expand Down Expand Up @@ -770,17 +770,18 @@ $ sudo raspi-config nonint do_boot_rom <E1/E2>

==== Wayland

Switch between the X11 and Wayland backends. Raspberry Pi 4 and later use Wayland by default; other models of Raspberry Pi use X11 by default.
Switch between the X11 and Wayland backends, and choose a window manager. Since Raspberry Pi OS _Bookworm_, all Raspberry Pi models run Wayland using the labwc window manager by default.

NOTE: To use Wayland on Raspberry Pi models prior to Raspberry Pi 4 running a version of Raspberry Pi OS earlier than _Bookworm_, add `wayland=on` to `/boot/firmware/cmdline.txt`.

[source,console]
----
$ sudo raspi-config nonint do_wayland <W1/W2>
----

* `W1`: use the X11 backend
* `W2`: use the Wayland backend

NOTE: To use Wayland on Raspberry Pi models prior to Raspberry Pi 4, you must also add `wayland=on` to `/boot/firmware/cmdline.txt`.
* `W1`: use the Openbox window manager with X11 backend
* `W2`: use the wayfire window manager with Wayland backend
* `W3`: use the labwc window manager with Wayland backend

==== Audio config

Expand Down
10 changes: 0 additions & 10 deletions documentation/asciidoc/computers/configuration/screensaver.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -27,16 +27,6 @@ $ sudo raspi-config

Use the arrow keys to navigate and the *Enter* key to select. Select `Display Options` > `Screen Blanking`. Choose `yes` with the arrow keys to enable screen blanking, or `no` to disable screen blanking.

Alternatively, you can add or edit the following lines to `~/.config/wayfire.ini`:

[source,ini]
----
[idle]
dpms_timeout=600
----

The `dpms_timeout` variable controls the number of seconds of inactivity required before Raspberry Pi OS blanks your screen. For example, a value of `600` blanks the screen after 600 seconds, or ten minutes. Set the value to `0` to never blank the screen.

=== Console

The `dpms_timeout` screen blanking configuration used by Raspberry Pi Configuration only affects desktop sessions. In *console mode*, when your Raspberry Pi is connected to a monitor and keyboard with only a terminal for input, use the `consoleblank` setting in the kernel command line.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -738,7 +738,6 @@ Raspberry Pi models have the following device tree values:
| Raspberry Pi 5 | `raspberrypi` | `5-model-b` | `brcm` | `bcm2712`
| Raspberry Pi 400 | `raspberrypi` | `400` | `brcm` | `bcm2711`
| Raspberry Pi Compute Module 4 | `raspberrypi` | `4-compute-module` | `brcm` | `bcm2711`
| Raspberry Pi 4 Model A | `raspberrypi` | `4-model-a` | `brcm` | `bcm2711`
| Raspberry Pi 4 Model B | `raspberrypi` | `4-model-b` | `brcm` | `bcm2711`
| Raspberry Pi Compute Module 3 | `raspberrypi` | `3-compute-module` | `brcm` | `bcm2837`
| Raspberry Pi 3 Model A+ | `raspberrypi` | `3-model-a-plus` | `brcm` | `bcm2837`
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.
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified documentation/asciidoc/services/connect/images/hero.png
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.
Binary file not shown.
Binary file not shown.
Binary file not shown.
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.
Binary file not shown.
Binary file not shown.
Binary file not shown.
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.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
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.
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.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Binary file modified documentation/asciidoc/services/connect/images/sign-in.png
34 changes: 24 additions & 10 deletions documentation/asciidoc/services/connect/install.adoc
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[[install-connect]]
== Install

To begin installation, open a Terminal window. Run the following command to update your system and packages:
If Connect isn't already installed in your version of Raspberry Pi OS, open a Terminal window. Run the following command to update your system and packages:

[source,console]
----
Expand All @@ -16,14 +16,18 @@ Run the following command on your Raspberry Pi to install Connect:
$ sudo apt install rpi-connect
----

After installation, reboot your Raspberry Pi or xref:connect.adoc#manually-start-connect[manually start the Connect service] to use Connect:
You can also install Connect from the Recommended Software application.

After installation, use the `rpi-connect` command line interface to start Connect for your current user:

[source,console]
----
$ sudo reboot
$ rpi-connect on
----

Connect will automatically start the next time you log in to your Raspberry Pi.
Alternatively, click the Connect icon in the menu bar to open a dropdown menu and select *Turn On Raspberry Pi Connect*:

image::images/turn-on-connect.png[width="80%"]

=== Connect Lite

Expand All @@ -36,19 +40,29 @@ Run the following command on your Raspberry Pi to install Connect Lite:
$ sudo apt install rpi-connect-lite
----

Reboot your Raspberry Pi or xref:connect.adoc#manually-start-connect[manually start the Connect service] to use Connect.
After installation, use the `rpi-connect` command line interface to start Connect for your current user:

[source,console]
----
$ rpi-connect on
----

Consider xref:connect.adoc#enable-remote-shell-at-all-times[enabling user lingering] to make your device accessible even when your user account isn't logged in.
xref:connect.adoc#enable-remote-shell-at-all-times[Enable user-lingering] to make your device accessible even when your user account isn't logged in.

TIP: Lite commands use the same `rpi-connect` name as the full version of Connect. `rpi-connect-lite` is just a package name.

=== Manually start Connect
=== Manually start and stop Connect

To start Connect from the command line, run the following command:

NOTE: By default, Connect automatically starts at login. You don't need to manually start Connect after it starts for the first time unless you remove it from your login items.
[source,console]
----
$ rpi-connect on
----

To start the service manually from the command line, run the following command:
To stop Connect, run the following command:

[source,console]
----
$ systemctl --user start rpi-connect
$ rpi-connect off
----
2 changes: 1 addition & 1 deletion documentation/asciidoc/services/connect/introduction.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ Raspberry Pi Connect provides secure access to your Raspberry Pi from anywhere i

image::images/hero.png[width="100%"]

To use Connect, xref:connect.adoc#install-connect[install the Connect software] on your Raspberry Pi. Then visit https://connect.raspberrypi.com[connect.raspberrypi.com] to access the desktop or a shell running on your Raspberry Pi in a browser window.
To use Connect, xref:connect.adoc#install-connect[install the Connect software] and xref:connect.adoc#link-connect[link your device with an account] on your Raspberry Pi. Then visit https://connect.raspberrypi.com[connect.raspberrypi.com] to access the desktop or a shell running on your Raspberry Pi in a browser window.

Connect uses a secure, encrypted connection. By default, Connect communicates directly between your Raspberry Pi and your browser. However, when Connect can't establish a direct connection between your Raspberry Pi and your browser, we use a relay server. In such cases, Raspberry Pi only retains the metadata required to operate Connect.

Expand Down
Loading