From 9038eea70fa497aefae4c45a1d8e1919e4a907f2 Mon Sep 17 00:00:00 2001 From: Andrew Scheller Date: Tue, 8 Mar 2022 17:14:10 +0000 Subject: [PATCH] Whole load of tidyups / fixes / consistency tweaks --- .../accessories/build-hat/net-brick.adoc | 4 +-- .../accessories/camera/camera_usage.adoc | 2 +- .../accessories/camera/csi-2-usage.adoc | 4 +-- .../camera/libcamera_apps_building.adoc | 14 ++++---- .../libcamera_apps_getting_started.adoc | 4 +-- .../camera/libcamera_apps_intro.adoc | 8 ++--- .../libcamera_apps_post_processing.adoc | 4 +-- ...libcamera_apps_post_processing_tflite.adoc | 2 +- .../camera/libcamera_apps_writing.adoc | 2 +- .../camera/libcamera_known_issues.adoc | 4 +-- .../camera/libcamera_software.adoc | 10 +++--- .../accessories/camera/libcamera_vid.adoc | 4 +-- .../asciidoc/accessories/camera/raspicam.adoc | 2 +- .../accessories/camera/timelapse.adoc | 4 +-- .../asciidoc/accessories/camera/v4l2.adoc | 2 +- .../accessories/display/display_intro.adoc | 4 +-- .../asciidoc/accessories/display/legacy.adoc | 6 ++-- .../accessories/display/troubleshooting.adoc | 12 +++---- .../compute-module/cm-emmc-flashing.adoc | 4 +-- .../compute-module/cm-peri-sw-guide.adoc | 34 +++++++++---------- .../computers/compute-module/cmio-camera.adoc | 16 ++++----- .../compute-module/cmio-display.adoc | 8 ++--- .../computers/compute-module/datasheet.adoc | 6 ++-- .../asciidoc/computers/config_txt/boot.adoc | 10 +++--- .../computers/config_txt/codeclicence.adoc | 6 ++-- .../asciidoc/computers/config_txt/common.adoc | 2 +- .../computers/config_txt/conditional.adoc | 26 +++++++------- .../asciidoc/computers/config_txt/memory.adoc | 10 +++--- .../computers/config_txt/overclocking.adoc | 22 ++++++------ .../computers/config_txt/pi4-hdmi.adoc | 4 +-- .../asciidoc/computers/config_txt/video.adoc | 24 ++++++------- .../computers/configuration/audio-config.adoc | 2 +- .../computers/configuration/boot_folder.adoc | 6 ++-- .../configuration/configuring-networking.adoc | 8 ++--- .../computers/configuration/device-tree.adoc | 16 ++++----- .../configuration/external-storage.adoc | 6 ++-- .../computers/configuration/hdmi-config.adoc | 2 +- .../kernel-command-line-config.adoc | 8 ++--- .../configuration/led_blink_warnings.adoc | 2 +- .../configuration/pin-configuration.adoc | 26 +++++++------- .../computers/configuration/raspi-config.adoc | 8 ++--- .../securing-the-raspberry-pi.adoc | 2 +- .../computers/configuration/uart.adoc | 16 ++++----- .../computers/configuration/use-a-proxy.adoc | 6 ++-- .../computers/getting-started/sd-cards.adoc | 2 -- .../computers/getting-started/setting-up.adoc | 2 +- .../computers/os/graphics-utilities.adoc | 2 +- .../computers/os/playing-audio-and-video.adoc | 4 +-- .../asciidoc/computers/os/updating.adoc | 4 +-- .../asciidoc/computers/os/using-gpio.adoc | 12 +++---- .../asciidoc/computers/os/using-python.adoc | 4 +-- .../computers/processors/bcm2711.adoc | 2 +- .../computers/processors/bcm2837b0.adoc | 2 +- .../raspberry-pi/bcm2711-bootloader.adoc | 16 ++++----- .../raspberry-pi/boot-diagnostics-rpi4.adoc | 2 +- .../computers/raspberry-pi/boot-gpio.adoc | 6 ++-- .../computers/raspberry-pi/boot-msd.adoc | 16 ++++----- .../computers/raspberry-pi/boot-net.adoc | 14 ++++---- .../computers/raspberry-pi/boot-usb.adoc | 6 ++-- .../computers/raspberry-pi/bootflow-2711.adoc | 2 +- .../raspberry-pi/bootflow-legacy.adoc | 6 ++-- .../computers/raspberry-pi/bootmodes.adoc | 14 ++++---- .../raspberry-pi/frequency-management.adoc | 2 +- .../raspberry-pi/gpio-on-raspberry-pi.adoc | 4 +-- .../raspberry-pi/gpio-pad-controls.adoc | 6 ++-- .../computers/raspberry-pi/otp-bits.adoc | 2 +- .../raspberry-pi/power-supplies.adoc | 24 ++++++------- .../raspberry-pi/raspberry-pi-industrial.adoc | 2 +- .../raspberry-pi/raspberry-pi-schematics.adoc | 6 ++-- .../raspberry-pi/revision-codes.adoc | 2 +- .../raspberry-pi/spi-bus-on-raspberry-pi.adoc | 8 ++--- .../raspberry-pi/usb-bus-on-raspberry-pi.adoc | 20 +++++------ .../computers/remote-access/apache.adoc | 4 +-- .../network-boot-raspberry-pi.adoc | 24 ++++++------- .../remote-access-introduction.adoc | 14 ++++---- .../computers/remote-access/rsync.adoc | 10 +++--- .../remote-access/secure-shell-from-unix.adoc | 2 +- .../secure-shell-from-windows10.adoc | 2 +- .../secure-shell-passwordless.adoc | 4 +-- .../using_linux/filesystem-home.adoc | 2 +- .../computers/using_linux/linux-bash.adoc | 2 +- .../using_linux/linux-multiple-users.adoc | 2 +- .../computers/using_linux/linux-systemd.adoc | 4 +-- .../using_linux/linux-using-text-editors.adoc | 2 +- .../using_linux/using-the-terminal.adoc | 4 +-- .../microcontrollers/c_sdk/official_sdk.adoc | 6 ++-- .../microcontrollers/c_sdk/sdk_setup.adoc | 2 +- .../microcontroller_docs.adoc | 6 ++-- .../microcontrollers/rp2040/about_rp2040.adoc | 2 +- 89 files changed, 326 insertions(+), 330 deletions(-) diff --git a/documentation/asciidoc/accessories/build-hat/net-brick.adoc b/documentation/asciidoc/accessories/build-hat/net-brick.adoc index f65318a92..b94d4caf9 100644 --- a/documentation/asciidoc/accessories/build-hat/net-brick.adoc +++ b/documentation/asciidoc/accessories/build-hat/net-brick.adoc @@ -39,7 +39,7 @@ Console.WriteLine($"{BitConverter.ToString(info.Signature)}"); Console.WriteLine($"Vin = {brick.InputVoltage.Volts} V"); ---- -NOTE: the input voltage is read only once at boot time and is not read again afterwards. +NOTE: The input voltage is read only once at boot time and is not read again afterwards. ==== Getting sensors and motors details @@ -111,4 +111,4 @@ The brick can take long before it initializes. A wait for sensor to be connected brick.WaitForSensorToConnect(SensorPort.PortB); ---- -It does as well take a `CancellationToken` if you want to implement advance features like warning the user after some time and retrying. \ No newline at end of file +It does as well take a `CancellationToken` if you want to implement advance features like warning the user after some time and retrying. diff --git a/documentation/asciidoc/accessories/camera/camera_usage.adoc b/documentation/asciidoc/accessories/camera/camera_usage.adoc index b3d56e610..88b196b33 100644 --- a/documentation/asciidoc/accessories/camera/camera_usage.adoc +++ b/documentation/asciidoc/accessories/camera/camera_usage.adoc @@ -41,7 +41,7 @@ The legacy camera stack can be re-enabled in Bullseye using the following steps. 1. Ensure your system is up-to-date and reboot it. 2. Run `sudo raspi-config`. 3. Navigate to `Interface Options` and select `Legacy camera` to enable it. -4. Reboot your Pi again. +4. Reboot your Raspberry Pi again. These steps are shown in the following video. diff --git a/documentation/asciidoc/accessories/camera/csi-2-usage.adoc b/documentation/asciidoc/accessories/camera/csi-2-usage.adoc index 3fb0ce0fa..784d80478 100644 --- a/documentation/asciidoc/accessories/camera/csi-2-usage.adoc +++ b/documentation/asciidoc/accessories/camera/csi-2-usage.adoc @@ -181,11 +181,11 @@ There are a couple of commercially available boards that connect this chip to th This driver is loaded using the `config.txt` dtoverlay `tc358743`. -The chip also supports capturing stereo HDMI audio via I2S. The Auvidea boards break the relevant signals out onto a header, which can be connected to the Pi's 40 pin header. The required wiring is: +The chip also supports capturing stereo HDMI audio via I2S. The Auvidea boards break the relevant signals out onto a header, which can be connected to the Raspberry Pi's 40-pin header. The required wiring is: [cols=",^,^,^"] |=== -| Signal | B101 header | Pi 40 pin header | BCM GPIO +| Signal | B101 header | 40-pin header | BCM GPIO | LRCK/WFS | 7 diff --git a/documentation/asciidoc/accessories/camera/libcamera_apps_building.adoc b/documentation/asciidoc/accessories/camera/libcamera_apps_building.adoc index 7a6da7194..797d7313a 100644 --- a/documentation/asciidoc/accessories/camera/libcamera_apps_building.adoc +++ b/documentation/asciidoc/accessories/camera/libcamera_apps_building.adoc @@ -4,13 +4,13 @@ Building `libcamera` and `libcamera-apps` for yourself can bring the following b * You can pick up the latest enhancements and features. -* `libcamera-apps` can be compiled with extra optimisation for Pi 3 and Pi 4 devices running a 32-bit OS. +* `libcamera-apps` can be compiled with extra optimisation for Raspberry Pi 3 and Raspberry Pi 4 devices running a 32-bit OS. * You can include the various optional OpenCV and/or TFLite post-processing stages (or add your own). * You can customise or add your own applications derived from `libcamera-apps`. -NOTE: When building for Pi 3 or earlier devices there is a risk that the device may run out of swap and fail. We recommend either increasing the amount of swap, or building with fewer threads (the `-j` option to `ninja` and to `make`). +NOTE: When building on a Raspberry Pi with 1GB or less of RAM, there is a risk that the device may run out of swap and fail. We recommend either increasing the amount of swap, or building with fewer threads (the `-j` option to `ninja` and to `make`). ==== Building `libcamera-apps` without rebuilding `libcamera` @@ -89,7 +89,7 @@ The only difference is that the latter also builds the `qcam` test application, To complete the `libcamera` build, please run ---- -ninja -C build # use -j 2 on Pi 3 or earlier devices +ninja -C build # use -j 2 on Raspberry Pi 3 or earlier devices sudo ninja -C build install ---- @@ -138,7 +138,7 @@ cd build At this point you will need to run `cmake` after deciding what extra flags to pass it. The valid flags are: -* `-DENABLE_COMPILE_FLAGS_FOR_TARGET=armv8-neon` - you may supply this when building for Pi 3 or Pi 4 devices running a 32-bit OS. Some post-processing features may run more quickly. +* `-DENABLE_COMPILE_FLAGS_FOR_TARGET=armv8-neon` - you may supply this when building for Raspberry Pi 3 or Raspberry Pi 4 devices running a 32-bit OS. Some post-processing features may run more quickly. * `-DENABLE_DRM=1` or `-DENABLE_DRM=0` - this enables or disables the DRM/KMS preview rendering. This is what implements the preview window when X Windows is not running. @@ -162,16 +162,16 @@ and for Raspberry Pi OS Lite users: cmake .. -DENABLE_DRM=1 -DENABLE_X11=0 -DENABLE_QT=0 -DENABLE_OPENCV=0 -DENABLE_TFLITE=0 ---- -In both cases, consider `-DENABLE_COMPILE_FLAGS_FOR_TARGET=armv8-neon` if you are using a 32-bit OS on a Pi 3 or Pi 4. Consider `-DENABLE_OPENCV=1` if you have installed _OpenCV_ and wish to use OpenCV-based post-processing stages. Finally also consider `-DENABLE_TFLITE=1` if you have installed _TensorFlow Lite_ and wish to use it in post-processing stages. +In both cases, consider `-DENABLE_COMPILE_FLAGS_FOR_TARGET=armv8-neon` if you are using a 32-bit OS on a Raspberry Pi 3 or Raspberry Pi 4. Consider `-DENABLE_OPENCV=1` if you have installed _OpenCV_ and wish to use OpenCV-based post-processing stages. Finally also consider `-DENABLE_TFLITE=1` if you have installed _TensorFlow Lite_ and wish to use it in post-processing stages. After executing the `cmake` command of your choice, the whole process concludes with the following: ---- -make -j4 # use -j1 on Pi 3 or earlier devices +make -j4 # use -j1 on Raspberry Pi 3 or earlier devices sudo make install sudo ldconfig # this is only necessary on the first build ---- NOTE: If you are using an image where `libcamera-apps` have been previously installed as an `apt` package, and you want to run the new `libcamera-apps` executables from the same terminal window where you have just built and installed them, you may need to run `hash -r` to be sure to pick up the new ones over the system supplied ones. -Finally, if you have not already done so, please be sure to follow the `dtoverlay` and display driver instructions in the xref:camera.adoc#getting-started[Getting Started section] (and rebooting if you changed anything there). \ No newline at end of file +Finally, if you have not already done so, please be sure to follow the `dtoverlay` and display driver instructions in the xref:camera.adoc#getting-started[Getting Started section] (and rebooting if you changed anything there). diff --git a/documentation/asciidoc/accessories/camera/libcamera_apps_getting_started.adoc b/documentation/asciidoc/accessories/camera/libcamera_apps_getting_started.adoc index 0a51fb2b6..bfa0fc325 100644 --- a/documentation/asciidoc/accessories/camera/libcamera_apps_getting_started.adoc +++ b/documentation/asciidoc/accessories/camera/libcamera_apps_getting_started.adoc @@ -2,7 +2,7 @@ ==== Using the camera for the first time -NOTE: On Pi3 and earlier devices running _Bullseye_ you need to re-enable _Glamor_ in order to make the X-Windows hardware accelerated preview window work. To do this enter `sudo raspi-config` at a terminal window and then choose `Advanced Options`, `Glamor` and `Yes`. Finally quit `raspi-config` and let it reboot your Pi. +NOTE: On Raspberry Pi 3 and earlier devices running _Bullseye_ you need to re-enable _Glamor_ in order to make the X-Windows hardware accelerated preview window work. To do this enter `sudo raspi-config` at a terminal window and then choose `Advanced Options`, `Glamor` and `Yes`. Finally quit `raspi-config` and let it reboot your Raspberry Pi. When running a Raspberry Pi OS based on _Bullseye_, the 5 basic `libcamera-apps` are already installed. In this case, official Raspberry Pi cameras will also be detected and enabled automatically. @@ -17,7 +17,7 @@ You should see a camera preview window for about 5 seconds. Users running _Buster_ will need to xref:camera.adoc#binary-packages[install one of the `libcamera-apps` packages] first and then configure their `/boot/config.txt` file xref:camera.adoc#if-you-do-need-to-alter-the-configuration[with the appropriate overlay] for the connected camera. Be aware that _libcamera_ and the legacy _raspicam_ stack cannot operate at the same time - to return to the legacy stack after using _libcamera_ you will need to comment out the `dtoverlay` change you made and reboot the system. -NOTE: Pi 3 and older devices may not by default be using the correct display driver. Refer to the `/boot/config.txt` file and ensure that either `dtoverlay=vc4-fkms-v3d` or `dtoverlay=vc4-kms-v3d` is currently active. Please reboot if you needed to change this. +NOTE: Raspberry Pi 3 and older devices may not by default be using the correct display driver. Refer to the `/boot/config.txt` file and ensure that either `dtoverlay=vc4-fkms-v3d` or `dtoverlay=vc4-kms-v3d` is currently active. Please reboot if you needed to change this. ==== If you do need to alter the configuration diff --git a/documentation/asciidoc/accessories/camera/libcamera_apps_intro.adoc b/documentation/asciidoc/accessories/camera/libcamera_apps_intro.adoc index 2321035d0..e42c5bedf 100644 --- a/documentation/asciidoc/accessories/camera/libcamera_apps_intro.adoc +++ b/documentation/asciidoc/accessories/camera/libcamera_apps_intro.adoc @@ -4,7 +4,7 @@ `libcamera` is a new software library aimed at supporting complex camera systems directly from the Linux operating system. In the case of the Raspberry Pi it enables us to drive the camera system directly from open source code running on ARM processors. The proprietary code running on the Broadcom GPU, and to which users have no access at all, is almost completely by-passed. -`libcamera` presents a C++ API to applications and works at the level of configuring the camera and then allowing an application to request image frames. These image buffers reside in system memory and can be passed directly to still image encoders (such as JPEG) or to video encoders (such as h.264), though such ancillary functions as encoding images or displaying them are strictly beyond the purview of `libcamera` itself. +`libcamera` presents a {cpp} API to applications and works at the level of configuring the camera and then allowing an application to request image frames. These image buffers reside in system memory and can be passed directly to still image encoders (such as JPEG) or to video encoders (such as h.264), though such ancillary functions as encoding images or displaying them are strictly beyond the purview of `libcamera` itself. For this reason Raspberry Pi supplies a small set of example `libcamera-apps`. These are simple applications, built on top of `libcamera`, and are designed largely to emulate the function of the legacy stack built on Broadcom's propretary GPU code (some users will recognise these legacy applications as `raspstill` and `raspivid`). The applications we provide are: @@ -13,7 +13,7 @@ For this reason Raspberry Pi supplies a small set of example `libcamera-apps`. T * _libcamera-still_ A more complex still image capture application which emulates more of the features of `raspistill`. * _libcamera-vid_ A video capture application. * _libcamera-raw_ A basic application for capturing raw (unprocessed Bayer) frames directly from the sensor. -* _libcamera-detect_ This application is not built by default, but users can build it if they have TensorFlow Lite installed on their Pi. It captures JPEG images when certain objects are detected. +* _libcamera-detect_ This application is not built by default, but users can build it if they have TensorFlow Lite installed on their Raspberry Pi. It captures JPEG images when certain objects are detected. Raspberry Pi's `libcamera-apps` are not only command line applications that make it easy to capture images and video from the camera, they are also examples of how users can create their own libcamera-based applications with custom functionality to suit their own requirements. The source code for the `libcamera-apps` is freely available under a BSD 2-Clause licence at https://github.com/raspberrypi/libcamera-apps[]. @@ -25,11 +25,11 @@ The `libcamera` source code can be found and checked out from the https://git.li Underneath the `libcamera` core, Raspberry Pi provides a custom _pipeline handler_, which is the layer that `libcamera` uses to drive the sensor and ISP (Image Signal Processor) on the Raspberry Pi itself. Also part of this is a collection of well-known _control algorithms_, or _IPAs_ (Image Processing Algorithms) in `libcamera` parlance, such as AEC/AGC (Auto Exposure/Gain Control), AWB (Auto White Balance), ALSC (Auto Lens Shading Correction) and so on. -All this code is open source and now runs on the Pi's ARM cores. There is only a very thin layer of code on the GPU which translates Raspberry Pi's own control parameters into register writes for the Broadcom ISP. +All this code is open source and now runs on the Raspberry Pi's ARM cores. There is only a very thin layer of code on the GPU which translates Raspberry Pi's own control parameters into register writes for the Broadcom ISP. Raspberry Pi's implementation of `libcamera` supports not only the three standard Raspberry Pi cameras (the OV5647 or V1 camera, the IMX219 or V2 camera and the IMX477 or HQ camera) but also third party senors such as the IMX290, IMX327, OV9281, IMX378. Raspberry Pi is keen to work with vendors who would like to see their sensors supported directly by `libcamera`. -Moreover, Raspberry Pi supplies a _tuning file_ for each of these sensors which can be edited to change the processing performed by the Pi hardware on the raw images received from the image sensor, including aspects like the colour processing, the amount of noise suppression or the behaviour of the control algorithms. +Moreover, Raspberry Pi supplies a _tuning file_ for each of these sensors which can be edited to change the processing performed by the Raspberry Pi hardware on the raw images received from the image sensor, including aspects like the colour processing, the amount of noise suppression or the behaviour of the control algorithms. For further information on `libcamera` for the Raspberry Pi, please consult the https://datasheets.raspberrypi.com/camera/raspberry-pi-camera-guide.pdf[Tuning Guide for the Raspberry Pi cameras and libcamera]. diff --git a/documentation/asciidoc/accessories/camera/libcamera_apps_post_processing.adoc b/documentation/asciidoc/accessories/camera/libcamera_apps_post_processing.adoc index 4a236e2f4..17e3aefff 100644 --- a/documentation/asciidoc/accessories/camera/libcamera_apps_post_processing.adoc +++ b/documentation/asciidoc/accessories/camera/libcamera_apps_post_processing.adoc @@ -70,7 +70,7 @@ image::images/negate.jpg[Image with negate] The `hdr` stage implements both HDR (high dynamic range) imaging and DRC (dynamic range compression). The terminology that we use here regards DRC as operating on single images, and HDR works by accumulating multiple under-exposed images and then performing the same algorithm as DRC. -The `hdr` stage has no dependencies on 3rd party libraries, but (like some other stages) may execute more quickly on Pi 3 or Pi 4 devices running a 32-bit OS if recompiled using `-DENABLE_COMPILE_FLAGS_FOR_TARGET=armv8-neon` (please see the xref:camera.adoc#building-libcamera-and-libcamera-apps[build instructions]). Specifically, the image accumulation stage will run quicker and result in fewer frame drops, though the tonemapping part of the process is unchanged. +The `hdr` stage has no dependencies on 3rd party libraries, but (like some other stages) may execute more quickly on Raspberry Pi 3 or Raspberry Pi 4 devices running a 32-bit OS if recompiled using `-DENABLE_COMPILE_FLAGS_FOR_TARGET=armv8-neon` (please see the xref:camera.adoc#building-libcamera-and-libcamera-apps[build instructions]). Specifically, the image accumulation stage will run quicker and result in fewer frame drops, though the tonemapping part of the process is unchanged. The basic procedure is that we take the image (which in the case of HDR may be multiple images accumulated together) and apply an edge-preserving smoothing filter to generate a low pass (LP) image. We define the high pass (HP) image to be the difference between the LP image and the original. Next we apply a global tonemap to the LP image and add back the HP image. This procedure, in contrast to applying the tonemap directly to the original image, prevents us from squashing and losing all the local contrast in the resulting image. @@ -93,7 +93,7 @@ In summary, the user-configurable parameters fall broadly into three groups: tho We note that the overall strength of the processing is best controlled by changing the `global_tonemap_strength` and `local_tonemap_strength` parameters. -The full processing takes between 2 and 3 seconds for a 12MP image on a Pi 4. The stage runs only on the still image capture, it ignores preview and video images. In particular, when accumulating multiple frames, the stage "swallows" the output images so that the application does not receive them, and finally sends through only the combined and processed image. +The full processing takes between 2 and 3 seconds for a 12MP image on a Raspberry Pi 4. The stage runs only on the still image capture, it ignores preview and video images. In particular, when accumulating multiple frames, the stage "swallows" the output images so that the application does not receive them, and finally sends through only the combined and processed image. Default `drc.json` file for DRC: diff --git a/documentation/asciidoc/accessories/camera/libcamera_apps_post_processing_tflite.adoc b/documentation/asciidoc/accessories/camera/libcamera_apps_post_processing_tflite.adoc index 6dfb68e88..f5e6af0f1 100644 --- a/documentation/asciidoc/accessories/camera/libcamera_apps_post_processing_tflite.adoc +++ b/documentation/asciidoc/accessories/camera/libcamera_apps_post_processing_tflite.adoc @@ -1,6 +1,6 @@ === Post-Processing with TensorFlow Lite -NOTE: These stages require TensorFlow Lite (TFLite) libraries to be installed that export the C++ API. Unfortunately the TFLite libraries are not normally distributed conveniently in this form, however, one place where they can be downloaded is https://lindevs.com/install-precompiled-tensorflow-lite-on-raspberry-pi/[lindevs.com]. Please follow the installation instructions given on that page. Subsequently you may need to recompile `libcamera-apps` with TensorFlow Lite support - please follow the instructions for xref:camera.adoc#building-libcamera-and-libcamera-apps[building `libcamera-apps` for yourself]. +NOTE: These stages require TensorFlow Lite (TFLite) libraries to be installed that export the {cpp} API. Unfortunately the TFLite libraries are not normally distributed conveniently in this form, however, one place where they can be downloaded is https://lindevs.com/install-precompiled-tensorflow-lite-on-raspberry-pi/[lindevs.com]. Please follow the installation instructions given on that page. Subsequently you may need to recompile `libcamera-apps` with TensorFlow Lite support - please follow the instructions for xref:camera.adoc#building-libcamera-and-libcamera-apps[building `libcamera-apps` for yourself]. ==== `object_classify_tf` stage diff --git a/documentation/asciidoc/accessories/camera/libcamera_apps_writing.adoc b/documentation/asciidoc/accessories/camera/libcamera_apps_writing.adoc index 7fa06256b..c923481e3 100644 --- a/documentation/asciidoc/accessories/camera/libcamera_apps_writing.adoc +++ b/documentation/asciidoc/accessories/camera/libcamera_apps_writing.adoc @@ -18,7 +18,7 @@ and forward it to the preview window: app.ShowPreview(completed_request, app.ViewfinderStream()); ---- -One important thing to note is that every `CompletedRequest` must be recycled back to the camera system so that the buffers can be reused, otherwise it will simply run out of buffers in which to receive new camera frames. This recycling process happens automatically when all references to the `CompletedRequest` are dropped, using C++'s _shared pointer_ and _custom deleter_ mechanisms. +One important thing to note is that every `CompletedRequest` must be recycled back to the camera system so that the buffers can be reused, otherwise it will simply run out of buffers in which to receive new camera frames. This recycling process happens automatically when all references to the `CompletedRequest` are dropped, using {cpp}'s _shared pointer_ and _custom deleter_ mechanisms. In `libcamera-hello` therefore, two things must happen for the `CompletedRequest` to be returned to the camera. diff --git a/documentation/asciidoc/accessories/camera/libcamera_known_issues.adoc b/documentation/asciidoc/accessories/camera/libcamera_known_issues.adoc index d3fefd6dd..2ec027cd2 100644 --- a/documentation/asciidoc/accessories/camera/libcamera_known_issues.adoc +++ b/documentation/asciidoc/accessories/camera/libcamera_known_issues.adoc @@ -2,6 +2,6 @@ We are aware of the following issues in `libcamera` and `libcamera-apps`. -* On Pi 3s (and earlier devices) the graphics hardware can only support images up to 2048x2048 pixels which places a limit on the camera images that can be resized into the preview window. In practice this means that video encoding of images larger than 2048 pixels across (which would necessarily be using a codec other than h.264) will not support, or will produce corrupted, preview images. For Pi 4s the limit is 4096 pixels. We would recommend using the `-n` (no preview) option for the time being. +* On Raspberry Pi 3 (and earlier devices) the graphics hardware can only support images up to 2048x2048 pixels which places a limit on the camera images that can be resized into the preview window. In practice this means that video encoding of images larger than 2048 pixels across (which would necessarily be using a codec other than h.264) will not support, or will produce corrupted, preview images. For Raspberry Pi 4 the limit is 4096 pixels. We would recommend using the `-n` (no preview) option for the time being. -* The preview window shows some display tearing when using X windows. This is not likely to be fixable. \ No newline at end of file +* The preview window shows some display tearing when using X windows. This is not likely to be fixable. diff --git a/documentation/asciidoc/accessories/camera/libcamera_software.adoc b/documentation/asciidoc/accessories/camera/libcamera_software.adoc index 879b15eb2..64e1edadb 100644 --- a/documentation/asciidoc/accessories/camera/libcamera_software.adoc +++ b/documentation/asciidoc/accessories/camera/libcamera_software.adoc @@ -8,7 +8,7 @@ sudo apt update sudo apt full-upgrade ---- -libcamera is under active development which sometimes means that new features need to be supported in Raspberry Pi OS, even before they are officially released. Therefore we currently recommend updating to the latest release candidate. To do this, first reboot your Pi, and then use +libcamera is under active development which sometimes means that new features need to be supported in Raspberry Pi OS, even before they are officially released. Therefore we currently recommend updating to the latest release candidate. To do this, first reboot your Raspberry Pi, and then use [,bash] ---- @@ -30,7 +30,7 @@ If you are using a sensor other than the `imx219` you will need to supply the al === Select the Correct Graphics Driver -There are 3 different graphics drivers available on the Raspberry Pi: firmware, FKMS and KMS. The firmware graphics driver cannot be used with _libcamera-apps_. The Raspberry Pi 4 and 400 use the newer FKMS graphics driver by default: this is compatible with _libcamera-apps_. For all other models of Raspberry Pi, you must select the FKMS driver by adding the following line to the `/boot/config.txt` file: +There are 3 different graphics drivers available on the Raspberry Pi: firmware, FKMS and KMS. The firmware graphics driver cannot be used with _libcamera-apps_. The Raspberry Pi 4 and Raspberry Pi 400 use the newer FKMS graphics driver by default: this is compatible with _libcamera-apps_. For all other models of Raspberry Pi, you must select the FKMS driver by adding the following line to the `/boot/config.txt` file: ---- dtoverlay=vc4-fkms-v3d @@ -58,7 +58,7 @@ Unfortunately, at the time of writing, the default version of meson is a little sudo pip3 install --upgrade meson ---- -We can now check out the code and build _libcamera_ as follows. Note that if you are using a 1GB system (such as a Pi 3) you may need to replace `ninja -C build` by `ninja -C build -j 2` as this will stop ninja exhausting the system memory and aborting. +We can now check out the code and build _libcamera_ as follows. Note that if you are using a 1GB system (such as a Raspberry Pi 3) you may need to replace `ninja -C build` by `ninja -C build -j 2` as this will stop ninja exhausting the system memory and aborting. [,bash] ---- @@ -109,9 +109,9 @@ To check everything is working correctly, type `./libcamera-hello` - you should [NOTE] ==== -For Pi 3 devices, as we saw previously, 1GB devices may need `make -j2` instead of `make -j4`. +For Raspberry Pi 3 devices, as we saw previously, 1GB devices may need `make -j2` instead of `make -j4`. -Also, Pi 3s do not by default use the correct GL driver, so please ensure you have `dtoverlay=vc4-fkms-v3d` in the `[all]` (not in the `[pi4]`) section of your `/boot/config.txt` file. +Also, Raspberry Pi 3 does not use the correct GL driver by default, so please ensure you have `dtoverlay=vc4-fkms-v3d` in the `[all]` (not in the `[pi4]`) section of your `/boot/config.txt` file. ==== === Further Documentation diff --git a/documentation/asciidoc/accessories/camera/libcamera_vid.adoc b/documentation/asciidoc/accessories/camera/libcamera_vid.adoc index 1418cc29f..a4581fca2 100644 --- a/documentation/asciidoc/accessories/camera/libcamera_vid.adoc +++ b/documentation/asciidoc/accessories/camera/libcamera_vid.adoc @@ -58,7 +58,7 @@ with the same `` value. ===== TCP -Video can be streamed using TCP. To use the Pi as a server +Video can be streamed using TCP. To use the Raspberry Pi as a server [,bash] ---- libcamera-vid -t 0 --inline --listen -o tcp://0.0.0.0: @@ -78,7 +78,7 @@ The Raspberry Pi will wait until the client connects, and then start streaming v ===== RTSP -vlc is useful on the Pi for formatting an RTSP stream, though there are other RTSP servers available. +vlc is useful on the Raspberry Pi for formatting an RTSP stream, though there are other RTSP servers available. [,bash] ---- libcamera-vid -t 0 --inline -o - | cvlc stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554/stream1}' :demux=h264 diff --git a/documentation/asciidoc/accessories/camera/raspicam.adoc b/documentation/asciidoc/accessories/camera/raspicam.adoc index 797a1c350..aa4fa1355 100644 --- a/documentation/asciidoc/accessories/camera/raspicam.adoc +++ b/documentation/asciidoc/accessories/camera/raspicam.adoc @@ -158,7 +158,7 @@ Use the arrow keys to scroll and type `q` to exit. ==== MP4 Video Format -The Pi captures video as a raw H264 video stream. Many media players will refuse to play it, or play it at an incorrect speed, unless it is "wrapped" in a suitable container format like MP4. The easiest way to obtain an MP4 file from the raspivid command is using MP4Box. +The Raspberry Pi captures video as a raw H264 video stream. Many media players will refuse to play it, or play it at an incorrect speed, unless it is "wrapped" in a suitable container format like MP4. The easiest way to obtain an MP4 file from the raspivid command is using MP4Box. Install MP4Box with this command: diff --git a/documentation/asciidoc/accessories/camera/timelapse.adoc b/documentation/asciidoc/accessories/camera/timelapse.adoc index 2be7bd9ab..c3122f9f0 100644 --- a/documentation/asciidoc/accessories/camera/timelapse.adoc +++ b/documentation/asciidoc/accessories/camera/timelapse.adoc @@ -51,7 +51,7 @@ Make sure that you use e.g. `%04d` to ensure that each image is written to a new ==== Stitching Images Together -Now you'll need to stitch the photos together into a video. You can do this on the Pi using `ffmpeg` but the processing will be slow. You may prefer to transfer the image files to your desktop computer or laptop and produce the video there. +Now you'll need to stitch the photos together into a video. You can do this on the Raspberry Pi using `ffmpeg` but the processing will be slow. You may prefer to transfer the image files to your desktop computer or laptop and produce the video there. First you will need to install `ffmpeg` if it's not already installed. @@ -65,7 +65,7 @@ Now you can use the `ffmpeg` tool to convert your JPEG files into an mp4 video: ffmpeg -r 10 -f image2 -pattern_type glob -i 'image*.jpg' -s 1280x720 -vcodec libx264 timelapse.mp4 ---- -On a Raspberry Pi 3, this can encode a little more than two frames per second. The performance of other Pi models will vary. The parameters used are: +On a Raspberry Pi 3, this can encode a little more than two frames per second. The performance of other Raspberry Pi models will vary. The parameters used are: * `-r 10` Set frame rate (Hz value) to ten frames per second in the output video. * `-f image2` Set ffmpeg to read from a list of image files specified by a pattern. diff --git a/documentation/asciidoc/accessories/camera/v4l2.adoc b/documentation/asciidoc/accessories/camera/v4l2.adoc index 7b8de7891..dbc91fa29 100644 --- a/documentation/asciidoc/accessories/camera/v4l2.adoc +++ b/documentation/asciidoc/accessories/camera/v4l2.adoc @@ -4,7 +4,7 @@ V4L2 drivers provide a standard Linux interface for accessing camera and codec f === Driver differences when using `libcamera` or the legacy stack -On systems using `libcamera`, `/dev/video0` and `/dev/video1` are V4L2 drivers for Unicam, the Pi's CSI-2 receiver. The Pi has two CSI-2 receivers, each managed by one of these device nodes. +On systems using `libcamera`, `/dev/video0` and `/dev/video1` are V4L2 drivers for Unicam, the Raspberry Pi's CSI-2 receiver. The Raspberry Pi has two CSI-2 receivers, each managed by one of these device nodes. On systems using the legacy stack, `/dev/video0` is a V4L2 driver that gives access to the full camera system using the proprietary Broadcom driver on the GPU. There is no `/dev/video1`. There are no Unicam drivers, though there is a legacy _MMAL Rawcam_ component. diff --git a/documentation/asciidoc/accessories/display/display_intro.adoc b/documentation/asciidoc/accessories/display/display_intro.adoc index d1a10c19d..a676fe100 100644 --- a/documentation/asciidoc/accessories/display/display_intro.adoc +++ b/documentation/asciidoc/accessories/display/display_intro.adoc @@ -4,7 +4,7 @@ The Raspberry Pi Touch Display is an LCD display which connects to the Raspberry === Board Support -The DSI display is designed to work with all models of Raspberry Pi, however early models that do not have mounting holes (the Raspberry Pi 1 model A and B) will require additional mounting hardware to fit the HAT-dimensioned stand-offs on the display PCB. +The DSI display is designed to work with all models of Raspberry Pi, however early models that do not have mounting holes (the Raspberry Pi 1 Model A and B) will require additional mounting hardware to fit the HAT-dimensioned stand-offs on the display PCB. === Physical Installation @@ -14,7 +14,7 @@ image::images/GPIO_power-500x333.jpg[DSI Display Connections] The other three pins should be left disconnected, unless connecting the display to an original Raspberry Pi 1 Model A or B. See the section on xref:display.adoc#legacy-support[legacy support] for more information on connecting the display to an original Raspberry Pi. -NOTE: An original Raspberry Pi can be easily identified from other models, it is the only model with a 26-pin rather than 40-pin GPIO header connector. +NOTE: An original Raspberry Pi can be easily identified from other models, it is the only model with a 26-pin rather than 40-pin GPIO header connector. === Screen Orientation diff --git a/documentation/asciidoc/accessories/display/legacy.adoc b/documentation/asciidoc/accessories/display/legacy.adoc index 8f7c890e3..6d4d9f974 100644 --- a/documentation/asciidoc/accessories/display/legacy.adoc +++ b/documentation/asciidoc/accessories/display/legacy.adoc @@ -1,8 +1,8 @@ == Legacy Support -NOTE: These instructions are for the original Raspberry Pi Model A and B boards only. You can identify an original board as it is the only model with a 26-pin GPIO header, all other models have the now-standard 40-pin connector. +NOTE: These instructions are for the original Raspberry Pi 1 Model A and B boards only. You can identify an original board as it is the only model with a 26-pin GPIO header, all other models have the now-standard 40-pin connector. -The DSI connector on the Model A/B boards does not have the I2C connections required to talk to the touchscreen controller and DSI controller. You can work around this by using the additional set of jumper cables provided with the display kit to wire up the I2C bus on the GPIO pins to the display controller board. +The DSI connector on the Raspberry Pi 1 Model A and B boards does not have the I2C connections required to talk to the touchscreen controller and DSI controller. You can work around this by using the additional set of jumper cables provided with the display kit to wire up the I2C bus on the GPIO pins to the display controller board. Using the jumper cables, connect SCL/SDA on the GPIO header to the horizontal pins marked SCL/SDA on the display board. We also recommend that you power the Model A/B via the GPIO pins using the jumper cables. @@ -12,6 +12,6 @@ DSI display autodetection is disabled by default on these boards. To enable dete `ignore_lcd=0` -Power the setup via the `PWR IN` micro-USB connector on the display board. Do not power the setup via the Pi's micro-USB port: the input polyfuse's maximum current rating will be exceeded as the display consumes approximately 400mA. +Power the setup via the `PWR IN` micro-USB connector on the display board. Do not power the setup via the Raspberry Pi's micro-USB port: the input polyfuse's maximum current rating will be exceeded as the display consumes approximately 400mA. NOTE: With the display connected to the GPIO I2C pins, the GPU will assume control of the respective I2C bus. The host operating system should not access this I2C bus, as simultaneous use of the bus by both the GPU and Linux will result in sporadic crashes. diff --git a/documentation/asciidoc/accessories/display/troubleshooting.adoc b/documentation/asciidoc/accessories/display/troubleshooting.adoc index 799e16849..d743b3ec5 100644 --- a/documentation/asciidoc/accessories/display/troubleshooting.adoc +++ b/documentation/asciidoc/accessories/display/troubleshooting.adoc @@ -12,7 +12,7 @@ We recommend our official 2.5A adapter because we know it works, but any good 2. If not, many problems will be solved by making sure your software is up-to date. -You can undo any previous use of `rpi-update` and get your Pi back to the latest stable software by connecting +You can undo any previous use of `rpi-update` and get your Raspberry Pi back to the latest stable software by connecting to a network and running: [,bash] @@ -28,7 +28,7 @@ sudo reboot * Make sure you've updated Raspberry Pi OS (see above for steps) * Check the smaller ribbon cable is seated properly -If you want to make sure your Pi has detected your touchscreen, try running: +If you want to make sure your Raspberry Pi has detected your touchscreen, try running: [,bash] ---- @@ -73,7 +73,7 @@ sudo reboot ---- [discrete] -=== My display fades out to weird patterns when I shutdown/reboot my Pi +=== My display fades out to weird patterns when I shutdown/reboot my Raspberry Pi Don't panic! This is perfectly normal. @@ -81,8 +81,8 @@ Don't panic! This is perfectly normal. === My display is black * Make sure you've updated Raspberry Pi OS (see above for steps) -* Check the ribbon cable between your Pi and the LCD is properly seated -* Make sure you have a SD card properly inserted into your Pi +* Check the ribbon cable between your Raspberry Pi and the LCD is properly seated +* Make sure you have a SD card properly inserted into your Raspberry Pi [discrete] === My display is white @@ -143,7 +143,7 @@ To start a second video onto the HDMI type: omxplayer --display=5 video.mkv ---- -*Please note: you may need to increase the amount of memory allocated to the GPU to 128MB if the videos are 1080P. Adjust the gpu_mem value in config.txt for this. The Raspberry Pi headline figures are 1080P30 decode, so if you are using two 1080P clips it may not play correctly depending on the complexity of the videos.* +NOTE: You may need to increase the amount of memory allocated to the GPU to 128MB if the videos are 1080P. Adjust the gpu_mem value in `config.txt` for this. The Raspberry Pi headline figures are 1080P30 decode, so if you are using two 1080P clips it may not play correctly depending on the complexity of the videos. Display numbers are: diff --git a/documentation/asciidoc/computers/compute-module/cm-emmc-flashing.adoc b/documentation/asciidoc/computers/compute-module/cm-emmc-flashing.adoc index ef46d2f03..4b141367a 100644 --- a/documentation/asciidoc/computers/compute-module/cm-emmc-flashing.adoc +++ b/documentation/asciidoc/computers/compute-module/cm-emmc-flashing.adoc @@ -46,7 +46,7 @@ Please ensure you are not writing to any USB devices whilst the installer is run ==== Building `rpiboot` on your host system (Cygwin/Linux) -We will be using Git to get the rpiboot source code, so ensure Git is installed. In Cygwin, use the Cygwin installer. On a Pi or other Debian-based Linux machine, use the following command: +We will be using Git to get the rpiboot source code, so ensure Git is installed. In Cygwin, use the Cygwin installer. On a Raspberry Pi or other Debian-based Linux machine, use the following command: [,bash] ---- @@ -107,7 +107,7 @@ Make sure J4 (USB SLAVE BOOT ENABLE) / J2 (nRPI_BOOT) is set to the disabled pos ==== Writing to the eMMC (Linux) -After `rpiboot` completes, you will see a new device appear; this is commonly `/dev/sda` on a Pi but it could be another location such as `/dev/sdb`, so check in `/dev/` or run `lsblk` before running `rpiboot` so you can see what changes. +After `rpiboot` completes, you will see a new device appear; this is commonly `/dev/sda` on a Raspberry Pi but it could be another location such as `/dev/sdb`, so check in `/dev/` or run `lsblk` before running `rpiboot` so you can see what changes. You now need to write a raw OS image (such as https://www.raspberrypi.com/software/operating-systems/#raspberry-pi-os-32-bit[Raspberry Pi OS]) to the device. Note the following command may take some time to complete, depending on the size of the image: (Change `/dev/sdX` to the appropriate device.) diff --git a/documentation/asciidoc/computers/compute-module/cm-peri-sw-guide.adoc b/documentation/asciidoc/computers/compute-module/cm-peri-sw-guide.adoc index 2e42f5501..e2a62ec6c 100644 --- a/documentation/asciidoc/computers/compute-module/cm-peri-sw-guide.adoc +++ b/documentation/asciidoc/computers/compute-module/cm-peri-sw-guide.adoc @@ -1,10 +1,10 @@ == Attaching and Enabling Peripherals -NOTE: Unless explicitly stated otherwise, these instructions will work identically on Compute Module and Compute Module 3 Module+IO board(s). +NOTE: Unless explicitly stated otherwise, these instructions will work identically on Compute Module 1 and Compute Module 3 and their CMIO board(s). -This guide is designed to help developers using the Compute Module (and Compute Module 3) get to grips with how to wire up peripherals to the Compute Module pins, and how to make changes to the software to enable these peripherals to work correctly. +This guide is designed to help developers using the Compute Module 1 (and Compute Module 3) get to grips with how to wire up peripherals to the Compute Module pins, and how to make changes to the software to enable these peripherals to work correctly. -The Compute Module (CM) and Compute Module 3 (CM3) contain the Raspberry Pi BCM2835 (or BCM2837 for CM3) system on a chip (SoC) or 'processor', memory, and eMMC. The eMMC is similar to an SD card but is soldered onto the board. Unlike SD cards, the eMMC is specifically designed to be used as a disk and has extra features that make it more reliable in this use case. Most of the pins of the SoC (GPIO, two CSI camera interfaces, two DSI display interfaces, HDMI etc) are freely available and can be wired up as the user sees fit (or, if unused, can usually be left unconnected). The Compute Module is a DDR2 SODIMM form-factor-compatible module, so any DDR2 SODIMM socket should be able to be used +The Compute Module 1 (CM1) and Compute Module 3 (CM3) contain the Raspberry Pi BCM2835 (or BCM2837 for CM3) system on a chip (SoC) or 'processor', memory, and eMMC. The eMMC is similar to an SD card but is soldered onto the board. Unlike SD cards, the eMMC is specifically designed to be used as a disk and has extra features that make it more reliable in this use case. Most of the pins of the SoC (GPIO, two CSI camera interfaces, two DSI display interfaces, HDMI etc) are freely available and can be wired up as the user sees fit (or, if unused, can usually be left unconnected). The Compute Module is a DDR2 SODIMM form-factor-compatible module, so any DDR2 SODIMM socket should be able to be used NOTE: The pinout is NOT the same as an actual SODIMM memory module. @@ -66,23 +66,23 @@ The BCM283x devices as used on Raspberry Pi and Compute Module boards have a thr . The GPU DSP comes out of reset and executes code from a small internal ROM (the boot ROM). The sole purpose of this code is to load a second stage boot loader via one of the external interfaces. On a Raspberry Pi or Compute Module, this code first looks for a second stage boot loader on the SD card (eMMC); it expects this to be called `bootcode.bin` and to be on the first partition (which must be FAT32). If no SD card is found or `bootcode.bin` is not found, the Boot ROM sits and waits in 'USB boot' mode, waiting for a host to give it a second stage boot loader via the USB interface. . The second stage boot loader (`bootcode.bin` on the sdcard or `usbbootcode.bin` for usb boot) is responsible for setting up the LPDDR2 SDRAM interface and various other critical system functions and then loading and executing the main GPU firmware (called `start.elf`, again on the primary SD card partition). -. `start.elf` takes over and is responsible for further system setup and booting up the ARM processor subsystem, and contains the firmware that runs on the various parts of the GPU. It first reads `dt-blob.bin` to determine initial GPIO pin states and GPU-specific interfaces and clocks, then parses `config.txt`. It then loads an ARM device tree file (e.g. `bcm2708-rpi-cm.dtb` for a Compute Module) and any device tree overlays specified in `config.txt` before starting the ARM subsystem and passing the device tree data to the booting Linux kernel. +. `start.elf` takes over and is responsible for further system setup and booting up the ARM processor subsystem, and contains the firmware that runs on the various parts of the GPU. It first reads `dt-blob.bin` to determine initial GPIO pin states and GPU-specific interfaces and clocks, then parses `config.txt`. It then loads an ARM device tree file (e.g. `bcm2708-rpi-cm.dtb` for a Compute Module 1) and any device tree overlays specified in `config.txt` before starting the ARM subsystem and passing the device tree data to the booting Linux kernel. === Device Tree http://www.devicetree.org/[Device Tree] is a special way of encoding all the information about the hardware attached to a system (and consequently required drivers). -On a Pi or Compute Module there are several files in the first FAT partition of the SD/eMMC that are binary 'Device Tree' files. These binary files (usually with extension `.dtb`) are compiled from human readable text descriptions (usually files with extension `.dts`) by the Device Tree compiler. +On a Raspberry Pi or Compute Module there are several files in the first FAT partition of the SD/eMMC that are binary 'Device Tree' files. These binary files (usually with extension `.dtb`) are compiled from human-readable text descriptions (usually files with extension `.dts`) by the Device Tree compiler. -On a standard Raspberry Pi OS image in the first (FAT) partition you will find two different types of device tree files, one is used by the GPU only and the rest are standard ARM device tree files for each of the BCM283x based Pi products: +On a standard Raspberry Pi OS image in the first (FAT) partition you will find two different types of device tree files, one is used by the GPU only and the rest are standard ARM device tree files for each of the BCM283x based Raspberry Pi products: * `dt-blob.bin` (used by the GPU) -* `bcm2708-rpi-b.dtb` (Used for Pi model A and B) -* `bcm2708-rpi-b-plus.dtb` (Used for Pi model B+ and A+) -* `bcm2709-rpi-2-b.dtb` (Used for Pi 2 model B) -* `bcm2710-rpi-3-b.dtb` (Used for Pi 3 model B) -* `bcm2708-rpi-cm.dtb` (Used for Pi Compute Module) -* `bcm2710-rpi-cm3.dtb` (Used for Pi Compute Module 3) +* `bcm2708-rpi-b.dtb` (Used for Raspberry Pi 1 Models A and B) +* `bcm2708-rpi-b-plus.dtb` (Used for Raspberry Pi 1 Models B+ and A+) +* `bcm2709-rpi-2-b.dtb` (Used for Raspberry Pi 2 Model B) +* `bcm2710-rpi-3-b.dtb` (Used for Raspberry Pi 3 Model B) +* `bcm2708-rpi-cm.dtb` (Used for Raspberry Pi Compute Module 1) +* `bcm2710-rpi-cm3.dtb` (Used for Raspberry Pi Compute Module 3) NOTE: `dt-blob.bin` by default does not exist as there is a 'default' version compiled into `start.elf`, but for Compute Module projects it will often be necessary to provide a `dt-blob.bin` (which overrides the default built-in file). @@ -99,9 +99,9 @@ Overlays are used to add data to the base dtb that (nominally) describes non boa === dt-blob.bin -When `start.elf` runs, it first reads something called `dt-blob.bin`. This is a special form of Device Tree blob which tells the GPU how to (initially) set up the GPIO pin states, and also any information about GPIOs/peripherals that are controlled (owned) by the GPU, rather than being used via Linux on the ARM. For example, the Raspberry Pi Camera peripheral is managed by the GPU, and the GPU needs exclusive access to an I2C interface to talk to it, as well as a couple of control pins. I2C0 on most Pi Boards and Compute Modules is nominally reserved for exclusive GPU use. The information on which GPIO pins the GPU should use for I2C0, and to control the camera functions, comes from `dt-blob.bin`. +When `start.elf` runs, it first reads something called `dt-blob.bin`. This is a special form of Device Tree blob which tells the GPU how to (initially) set up the GPIO pin states, and also any information about GPIOs/peripherals that are controlled (owned) by the GPU, rather than being used via Linux on the ARM. For example, the Raspberry Pi Camera peripheral is managed by the GPU, and the GPU needs exclusive access to an I2C interface to talk to it, as well as a couple of control pins. I2C0 on most Raspberry Pi Boards and Compute Modules is nominally reserved for exclusive GPU use. The information on which GPIO pins the GPU should use for I2C0, and to control the camera functions, comes from `dt-blob.bin`. -NOTE: the `start.elf` firmware has a xref:configuration.adoc#changing-the-default-pin-configuration['built-in' default] `dt-blob.bin` which is used if no `dt-blob.bin` is found on the root of the first FAT partition. Most Compute Module projects will want to provide their own custom `dt-blob.bin`. Note that `dt-blob.bin` specifies which pin is for HDMI hot plug detect, although this should never change on Compute Module. It can also be used to set up a GPIO as a GPCLK output, and specify an ACT LED that the GPU can use while booting. Other functions may be added in future. +NOTE: The `start.elf` firmware has a xref:configuration.adoc#changing-the-default-pin-configuration['built-in' default] `dt-blob.bin` which is used if no `dt-blob.bin` is found on the root of the first FAT partition. Most Compute Module projects will want to provide their own custom `dt-blob.bin`. Note that `dt-blob.bin` specifies which pin is for HDMI hot plug detect, although this should never change on Compute Module. It can also be used to set up a GPIO as a GPCLK output, and specify an ACT LED that the GPU can use while booting. Other functions may be added in future. https://datasheets.raspberrypi.com/cm/minimal-cm-dt-blob.dts[minimal-cm-dt-blob.dts] is an example `.dts` device tree file that sets up the HDMI hot plug detect and ACT LED and sets all other GPIOs to be inputs with default pulls. @@ -115,7 +115,7 @@ dtc -I dts -O dtb -o dt-blob.bin minimal-cm-dt-blob.dts After `start.elf` has read `dt-blob.bin` and set up the initial pin states and clocks, it reads xref:config_txt.adoc[`config.txt`] which contains many other options for system setup. -After reading `config.txt` another device tree file specific to the board the hardware is running on is read: this is `bcm2708-rpi-cm.dtb` for a Compute Module, or `bcm2710-rpi-cm.dtb` for CM3. This file is a standard ARM Linux device tree file, which details how hardware is attached to the processor: what peripheral devices exist in the SoC and where, which GPIOs are used, what functions those GPIOs have, and what physical devices are connected. This file will set up the GPIOs appropriately, overwriting the pin state set up in `dt-blob.bin` if it is different. It will also try to load driver(s) for the specific device(s). +After reading `config.txt` another device tree file specific to the board the hardware is running on is read: this is `bcm2708-rpi-cm.dtb` for a Compute Module 1, or `bcm2710-rpi-cm.dtb` for Compute Module 3. This file is a standard ARM Linux device tree file, which details how hardware is attached to the processor: what peripheral devices exist in the SoC and where, which GPIOs are used, what functions those GPIOs have, and what physical devices are connected. This file will set up the GPIOs appropriately, overwriting the pin state set up in `dt-blob.bin` if it is different. It will also try to load driver(s) for the specific device(s). Although the `bcm2708-rpi-cm.dtb` file can be used to load all attached devices, the recommendation for Compute Module users is to leave this file alone. Instead, use the one supplied in the standard Raspberry Pi OS software image, and add devices using a custom 'overlay' file as previously described. The `bcm2708-rpi-cm.dtb` file contains (disabled) entries for the various peripherals (I2C, SPI, I2S etc.) and no GPIO pin definitions, apart from the eMMC/SD Card peripheral which has GPIO defs and is enabled, because it is always on the same pins. The idea is that the separate overlay file will enable the required interfaces, describe the pins used, and also describe the required drivers. The `start.elf` firmware will read and merge the `bcm2708-rpi-cm.dtb` with the overlay data before giving the merged device tree to the Linux kernel as it boots up. @@ -163,7 +163,7 @@ NOTE: Please use the https://forums.raspberrypi.com/viewforum.php?f=107[Device T For these simple examples I used a CMIO board with peripherals attached via jumper wires. -For each of the examples we assume a CM+CMIO or CM3+CMIO3 board with a clean install of the latest Raspberry Pi OS Lite version on the CM. +For each of the examples we assume a CM1+CMIO or CM3+CMIO3 board with a clean install of the latest Raspberry Pi OS Lite version on the Compute Module. The examples here require internet connectivity, so a USB hub plus keyboard plus wireless LAN or Ethernet dongle plugged into the CMIO USB port is recommended. @@ -174,7 +174,7 @@ Please post any issues, bugs or questions on the Raspberry Pi https://forums.ras In this simple example we wire an NXP PCF8523 real time clock (RTC) to the CMIO board BANK1 GPIO pins: 3V3, GND, I2C1_SDA on GPIO44 and I2C1_SCL on GPIO45. -Download https://datasheets.raspberrypi.com/cm/minimal-cm-dt-blob.dts[minimal-cm-dt-blob.dts] and copy it to the SD card FAT partition, located in `/boot` when the CM has booted. +Download https://datasheets.raspberrypi.com/cm/minimal-cm-dt-blob.dts[minimal-cm-dt-blob.dts] and copy it to the SD card FAT partition, located in `/boot` when the Compute Module has booted. Edit `minimal-cm-dt-blob.dts` and change the pin states of GPIO44 and 45 to be I2C1 with pull-ups: diff --git a/documentation/asciidoc/computers/compute-module/cmio-camera.adoc b/documentation/asciidoc/computers/compute-module/cmio-camera.adoc index b777e4e47..01274a2d7 100644 --- a/documentation/asciidoc/computers/compute-module/cmio-camera.adoc +++ b/documentation/asciidoc/computers/compute-module/cmio-camera.adoc @@ -4,10 +4,10 @@ ==== These instructions are intended for advanced users, if anything is unclear please use the https://forums.raspberrypi.com/viewforum.php?f=43[Raspberry Pi Camera forums] for technical help. -Unless explicitly stated otherwise, these instructions will work identically on both the Compute Module and Compute Module 3, attached to a Compute Module IO Board. Compute Module 4 is slightly different, so please refer to the appropriate section. +Unless explicitly stated otherwise, these instructions will work identically on both the Compute Module 1 and Compute Module 3, attached to a Compute Module IO Board. Compute Module 4 is slightly different, so please refer to the appropriate section. ==== -The Compute Module has two CSI-2 camera interfaces. CAM0 has two CSI-2 data lanes, whilst CAM1 has four data lanes. The Compute Module IO board exposes both of these interfaces. Note that the standard Raspberry Pi devices uses CAM1, but only exposes two lanes. +The Compute Module has two CSI-2 camera interfaces. CAM0 has two CSI-2 data lanes, whilst CAM1 has four data lanes. The Compute Module IO board exposes both of these interfaces. Note that the standard Raspberry Pi devices use CAM1, but only expose two data lanes. Please note that the camera modules are *not* designed to be hot pluggable. They should always be connected or disconnected with the power off. @@ -22,14 +22,14 @@ sudo apt full-upgrade === Crypto Chip -When using the Compute Module to drive cameras, it is NOT necessary to incorporate the crypto chip used on the Raspberry Pi--designed camera boards when attaching the OM5647, IMX219 or HQ Camera Modules directly to the Compute Module carrier board. The Raspberry Pi firmware will automatically detect the CM and allow communications with the Camera Module to proceed without the crypto chip being present. +When using the Compute Module to drive cameras, it is NOT necessary to incorporate the crypto chip used on the Raspberry Pi--designed camera boards when attaching the OM5647, IMX219 or HQ Camera Modules directly to the Compute Module carrier board. The Raspberry Pi firmware will automatically detect the Compute Module and allow communications with the Camera Module to proceed without the crypto chip being present. === Quickstart Guide To connect a single camera: -. Power the CM down. -. On the compute module, run `sudo raspi-config` and enable the camera. +. Power the Compute Module down. +. On the Compute Module, run `sudo raspi-config` and enable the camera. . Connect the RPI-CAMERA board and Camera Module to the CAM1 port. As an alternative, the Raspberry Pi Zero camera cable can be used. + image::images/CMIO-Cam-Adapter.jpg[Connecting the adapter board] @@ -38,7 +38,7 @@ image::images/CMIO-Cam-Adapter.jpg[Connecting the adapter board] + image::images/CMIO-Cam-GPIO.jpg[GPIO connection for a single camera] -. Power the CM up and run `+sudo wget https://datasheets.raspberrypi.com/cmio/dt-blob-cam1.bin -O /boot/dt-blob.bin+` +. Power the Compute Module up and run `+sudo wget https://datasheets.raspberrypi.com/cmio/dt-blob-cam1.bin -O /boot/dt-blob.bin+` . Finally, reboot for the dt-blob.bin file to be read. To connect two cameras, follow the steps as for a single camera and then also: @@ -68,7 +68,7 @@ status = mmal_port_parameter_set(camera->control, &camera_num.hdr); The Compute Module IO board has a 22-way 0.5mm FFC for each camera port, with CAM0 being a two-lane interface and CAM1 being the full four-lane interface. The standard Raspberry Pi uses a 15-way 1mm FFC cable, so you will need either an adapter (part# RPI-CAMERA) or a Raspberry Pi Zero camera cable. -The CMIO board for Compute Modules 1&3 differ slightly in approach to that for Compute Module 4. They will be considered separately. +The CMIO board for Compute Modules 1 & 3 differ slightly in approach to that for Compute Module 4. They will be considered separately. ==== Compute Module 1 & 3 @@ -113,7 +113,7 @@ The GPIOs that we are using for the camera default to input mode on the Compute <> are provided at the bottom of this document. These use the default wiring as described in this page. -The `pin_config` section in the `pins_cm { }` (compute module), `pins_cm3 { }` (compute module3), or `pins_cm4 { }` (compute module 4) section of the source dts needs the camera's LED and power enable pins set to outputs: +The `pin_config` section in the `pins_cm { }` (Compute Module 1), `pins_cm3 { }` (Compute Module 3), or `pins_cm4 { }` (Compute Module 4) section of the source dts needs the camera's LED and power enable pins set to outputs: ---- pin@p2 { function = "output"; termination = "no_pulling"; }; diff --git a/documentation/asciidoc/computers/compute-module/cmio-display.adoc b/documentation/asciidoc/computers/compute-module/cmio-display.adoc index 6d238ee8d..d99f1e253 100644 --- a/documentation/asciidoc/computers/compute-module/cmio-display.adoc +++ b/documentation/asciidoc/computers/compute-module/cmio-display.adoc @@ -13,7 +13,7 @@ WARNING: Please note that the display is *not* designed to be hot pluggable. It Connecting to DISP1 . Connect the display to the DISP1 port on the Compute Module IO board through the 22W to 15W display adaptor. -. (CM1 and 3 only) Connect these pins together with jumper wires: +. (CM1 and CM3 only) Connect these pins together with jumper wires: + ---- GPIO0 - CD1_SDA @@ -30,7 +30,7 @@ Connecting to DISP1 Connecting to DISP0 . Connect the display to the DISP0 port on the Compute Module IO board through the 22W to 15W display adaptor. -. (CM1 and 3 only) Connect these pins together with jumper wires: +. (CM1 and CM3 only) Connect these pins together with jumper wires: + ---- GPIO28 - CD0_SDA @@ -49,7 +49,7 @@ Connecting to DISP0 . Connect the display to the DISP1 port on the Compute Module IO board through the 22W to 15W display adaptor, called RPI-DISPLAY. . Connect the Camera Module to the CAM1 port on the Compute Module IO board through the 22W to 15W adaptor called RPI-CAMERA. Alternatively, the Raspberry Pi Zero camera cable can be used. -. (CM 1 and 3 only) Connect these pins together with jumper wires: +. (CM1 and CM3 only) Connect these pins together with jumper wires: + ---- GPIO0 - CD1_SDA @@ -71,7 +71,7 @@ image:images/CMIO-Cam-Disp-GPIO.jpg[GPIO connection for a single display and Cam . Follow the steps for connecting the display and one camera above. . Connect the Camera Module to the CAM0 port on the Compute Module IO board through the 22W to 15W adaptor called RPI-CAMERA. Alternatively, the Raspberry Pi Zero camera cable can be used. -. (CM1 & 3 only) Add links: +. (CM1 and CM3 only) Add links: + ---- GPIO28 - CD0_SDA diff --git a/documentation/asciidoc/computers/compute-module/datasheet.adoc b/documentation/asciidoc/computers/compute-module/datasheet.adoc index 88dffb382..f5b57b92c 100644 --- a/documentation/asciidoc/computers/compute-module/datasheet.adoc +++ b/documentation/asciidoc/computers/compute-module/datasheet.adoc @@ -15,9 +15,9 @@ There is also a KiCAD PCB design set available: === Older Products -Raspberry Pi CM1, CM3 and CM3L are supported products with an End-of-Life (EOL) date no earlier than January 2026. For customers embarking on new designs, Raspberry Pi recommends using the newer Compute Module 3+, which offers improved thermal performance, and a wider range of Flash memory options. +Raspberry Pi CM1, CM3 and CM3L are supported products with an End-of-Life (EOL) date no earlier than January 2026. The Compute Module 3+ offers improved thermal performance, and a wider range of Flash memory options. -* https://datasheets.raspberrypi.com/cm/cm1-and-cm3-datasheet.pdf[Compute Module and Compute Module 3] +* https://datasheets.raspberrypi.com/cm/cm1-and-cm3-datasheet.pdf[Compute Module 1 and Compute Module 3] Raspberry Pi CM3+ and CM3+ Lite are supported prodicts with an End-of-Life (EOL) date no earlier than January 2026. @@ -25,7 +25,7 @@ Raspberry Pi CM3+ and CM3+ Lite are supported prodicts with an End-of-Life (EOL) Schematics for the Compute Module 1, 3 and 3L -* https://datasheets.raspberrypi.com/cm/cm1-schematics.pdf[CM Rev 1.1] +* https://datasheets.raspberrypi.com/cm/cm1-schematics.pdf[CM1 Rev 1.1] * https://datasheets.raspberrypi.com/cm/cm3-schematics.pdf[CM3 and CM3L Rev 1.0] Schematics for the Compute Module IO board (CMIO): diff --git a/documentation/asciidoc/computers/config_txt/boot.adoc b/documentation/asciidoc/computers/config_txt/boot.adoc index 41e4546d8..482f6a546 100644 --- a/documentation/asciidoc/computers/config_txt/boot.adoc +++ b/documentation/asciidoc/computers/config_txt/boot.adoc @@ -55,13 +55,13 @@ Sets board-specific control bits. === `armstub` -`armstub` is the filename on the boot partition from which to load the ARM stub. The default ARM stub is stored in firmware and is selected automatically based on the Pi model and various settings. +`armstub` is the filename on the boot partition from which to load the ARM stub. The default ARM stub is stored in firmware and is selected automatically based on the Raspberry Pi model and various settings. The stub is a small piece of ARM code that is run before the kernel. Its job is to set up low-level hardware like the interrupt controller before passing control to the kernel. === `arm_peri_high` -Set `arm_peri_high` to `1` to enable "High Peripheral" mode on the Pi 4. It is set automatically if a suitable DTB is loaded. +Set `arm_peri_high` to `1` to enable "High Peripheral" mode on the Raspberry Pi 4. It is set automatically if a suitable DTB is loaded. NOTE: Enabling "High Peripheral" mode without a compatible device tree will make your system fail to boot. Currently ARM stub support is missing, so you will also need to load a suitable file using `armstub`. @@ -95,13 +95,13 @@ NOTE: This option uses different syntax from all the other options, and you shou === `init_uart_clock` -`init_uart_clock` is the initial UART clock frequency. The default value is `48000000` (48MHz). Note that this clock only applies to UART0 (ttyAMA0 in Linux), and that the maximum baudrate for the UART is limited to 1/16th of the clock. The default UART on the Pi 3 and Pi Zero is UART1 (ttyS0 in Linux), and its clock is the core VPU clock - at least 250MHz. +`init_uart_clock` is the initial UART clock frequency. The default value is `48000000` (48MHz). Note that this clock only applies to UART0 (ttyAMA0 in Linux), and that the maximum baudrate for the UART is limited to 1/16th of the clock. The default UART on the Raspberry Pi 3 and Raspberry Pi Zero is UART1 (ttyS0 in Linux), and its clock is the core VPU clock - at least 250MHz. === `bootcode_delay` The `bootcode_delay` command delays for a given number of seconds in `bootcode.bin` before loading `start.elf`: the default value is `0`. -This is particularly useful to insert a delay before reading the EDID of the monitor, for example if the Pi and monitor are powered from the same source, but the monitor takes longer to start up than the Pi. Try setting this value if the display detection is wrong on initial boot, but is correct if you soft-reboot the Pi without removing power from the monitor. +This is particularly useful to insert a delay before reading the EDID of the monitor, for example if the Raspberry Pi and monitor are powered from the same source, but the monitor takes longer to start up than the Raspberry Pi. Try setting this value if the display detection is wrong on initial boot, but is correct if you soft-reboot the Raspberry Pi without removing power from the monitor. === `boot_delay` @@ -150,7 +150,7 @@ See also <> and < -n` to find the EDID name for a specific display ID. === The Serial Number Filter -Sometimes settings should only be applied to a single specific Pi, even if you swap the SD card to a different one. Examples include licence keys and overclocking settings (although the licence keys already support SD card swapping in a different way). You can also use this to select different display settings, even if the EDID identification above is not possible, provided that you don't swap monitors between your Pis. For example, if your monitor doesn't supply a usable EDID name, or if you are using composite output (for which EDID cannot be read). +Sometimes settings should only be applied to a single specific Raspberry Pi, even if you swap the SD card to a different one. Examples include licence keys and overclocking settings (although the licence keys already support SD card swapping in a different way). You can also use this to select different display settings, even if the EDID identification above is not possible, provided that you don't swap monitors between your Raspberry Pis. For example, if your monitor doesn't supply a usable EDID name, or if you are using composite output (for which EDID cannot be read). -To view the serial number of your Pi, run the following command: +To view the serial number of your Raspberry Pi, run the following command: [source] ---- @@ -121,12 +121,12 @@ The serial will be shown as a 16-digit hex value at the bottom. For example, if Serial : 0000000012345678 ---- -then you can define settings that will only be applied to this specific Pi: +then you can define settings that will only be applied to this specific Raspberry Pi: [source] ---- [0x12345678] -# settings here are applied only to the Pi with this serial +# settings here are applied only to the Raspberry Pi with this serial [all] # settings here are applied to all hardware ---- @@ -185,7 +185,7 @@ Filters of different types can be combined simply by listing them one after the [EDID=VSC-TD2220] # settings here are applied only if monitor VSC-TD2220 is connected [pi2] - # settings here are applied only if monitor VSC-TD2220 is connected *and* on a Pi 2 + # settings here are applied only if monitor VSC-TD2220 is connected *and* on a Raspberry Pi 2 [all] # settings here are applied to all hardware ---- diff --git a/documentation/asciidoc/computers/config_txt/memory.adoc b/documentation/asciidoc/computers/config_txt/memory.adoc index ed16798bf..e21950afe 100644 --- a/documentation/asciidoc/computers/config_txt/memory.adoc +++ b/documentation/asciidoc/computers/config_txt/memory.adoc @@ -2,13 +2,13 @@ === `gpu_mem` -Specifies how much memory, in megabytes, to reserve for the exclusive use of the GPU: the remaining memory is allocated to the ARM CPU for use by the OS. For Pis with less than 1GB of memory, the default is `64`; for Pis with 1GB or more of memory the default is `76`. +Specifies how much memory, in megabytes, to reserve for the exclusive use of the GPU: the remaining memory is allocated to the ARM CPU for use by the OS. For Raspberry Pis with less than 1GB of memory, the default is `64`; for Raspberry Pis with 1GB or more of memory the default is `76`. IMPORTANT: Unlike GPUs found on x86 machines, where increasing memory can improve 3D performance, the architecture of the VideoCore means *there is no performance advantage from specifying values larger than is necessary*, and in fact it can harm performance. To ensure the best performance of Linux, you should set `gpu_mem` to the lowest possible value. If a particular graphics feature is not working correctly, try increasing the value of `gpu_mem`, being mindful of the recommended maximums shown below. -On the Raspberry Pi 4 the 3D component of the GPU has its own memory management unit (MMU), and does not use memory from the `gpu_mem` allocation. Instead memory is allocated dynamically within Linux. This allows a smaller value to be specified for `gpu_mem` on the Pi 4, compared to previous models. +On the Raspberry Pi 4 the 3D component of the GPU has its own memory management unit (MMU), and does not use memory from the `gpu_mem` allocation. Instead memory is allocated dynamically within Linux. This allows a smaller value to be specified for `gpu_mem` on the Raspberry Pi 4, compared to previous models. On legacy kernels, the memory allocated to the GPU is used for display, 3D, Codec and camera purposes as well as some basic firmware housekeeping. The maximums specified below assume you are using all these features. If you are not, then smaller values of gpu_mem should be used. @@ -24,12 +24,12 @@ The recommended maximum values are as follows: | `384` | 1GB or greater -| `512`, `256` on the Pi4 +| `512`, `256` on the Raspberry Pi 4 |=== It is possible to set `gpu_mem` to larger values, however this should be avoided since it can cause problems, such as preventing Linux from booting. The minimum value is `16`, however this disables certain GPU features. -You can also use `gpu_mem_256`, `gpu_mem_512`, and `gpu_mem_1024` to allow swapping the same SD card between Pis with different amounts of RAM without having to edit `config.txt` each time: +You can also use `gpu_mem_256`, `gpu_mem_512`, and `gpu_mem_1024` to allow swapping the same SD card between Raspberry Pis with different amounts of RAM without having to edit `config.txt` each time: === `gpu_mem_256` @@ -55,4 +55,4 @@ This value will be clamped between a minimum of 128MB, and a maximum of the tota === `disable_l2cache` -Setting this to `1` disables the CPUs access to the GPUs L2 cache and requires a corresponding L2 disabled kernel. Default value on BCM2835 is `0`. On BCM2836, BCM2837, and BCM2711, the ARMs have their own L2 cache and therefore the default is `1`. The standard Pi `kernel.img` and `kernel7.img` builds reflect this difference in cache setting. +Setting this to `1` disables the CPUs access to the GPUs L2 cache and requires a corresponding L2 disabled kernel. Default value on BCM2835 is `0`. On BCM2836, BCM2837, and BCM2711, the ARMs have their own L2 cache and therefore the default is `1`. The standard Raspberry Pi `kernel.img` and `kernel7.img` builds reflect this difference in cache setting. diff --git a/documentation/asciidoc/computers/config_txt/overclocking.adoc b/documentation/asciidoc/computers/config_txt/overclocking.adoc index 723788400..4aa280824 100644 --- a/documentation/asciidoc/computers/config_txt/overclocking.adoc +++ b/documentation/asciidoc/computers/config_txt/overclocking.adoc @@ -2,7 +2,7 @@ The kernel has a https://www.kernel.org/doc/html/latest/admin-guide/pm/cpufreq.html[CPUFreq] driver with the "powersave" governor enabled by default, switched to "ondemand" during boot, when xref:configuration.adoc#raspi-config[raspi-config] is installed. With "ondemand" governor, CPU frequency will vary with processor load. You can adjust the minimum values with the `*_min` config options or disable dynamic clocking by applying a static scaling governor ("powersave" or "performance") or with `force_turbo=1`. -Overclocking and overvoltage will be disabled at runtime when the SoC reaches `temp_limit` (see below), which defaults to 85°C, in order to cool down the SoC. You should not hit this limit with Raspberry Pi Models 1 and 2, but you are more likely to with Raspberry Pi 3 and Raspberry Pi 4B. Overclocking and overvoltage are also disabled when an undervoltage situation is detected. +Overclocking and overvoltage will be disabled at runtime when the SoC reaches `temp_limit` (see below), which defaults to 85°C, in order to cool down the SoC. You should not hit this limit with Raspberry Pi 1 and Raspberry Pi 2, but you are more likely to with Raspberry Pi 3 and Raspberry Pi 4. Overclocking and overvoltage are also disabled when an undervoltage situation is detected. NOTE: For more information xref:raspberry-pi.adoc#frequency-management-and-thermal-control[see the section on frequency management and thermal control]. @@ -23,7 +23,7 @@ WARNING: Setting any overclocking parameters to values other than those used by | Sets `core_freq`, `h264_freq`, `isp_freq`, `v3d_freq` and `hevc_freq` together | core_freq -| Frequency of the GPU processor core in MHz, influences CPU performance because it drives the L2 cache and memory bus; the L2 cache benefits only Pi Zero/Pi Zero W/ Pi 1, there is a small benefit for SDRAM on Pi 2/Pi 3. See section below for use on the Pi 4. +| Frequency of the GPU processor core in MHz, influences CPU performance because it drives the L2 cache and memory bus; the L2 cache benefits only Raspberry Pi Zero / Raspberry Pi Zero W / Raspberry Pi 1, there is a small benefit for SDRAM on Raspberry Pi 2 / Raspberry Pi 3. See section below for use on the Raspberry Pi 4. | h264_freq | Frequency of the hardware video block in MHz; individual override of the `gpu_freq` setting @@ -35,13 +35,13 @@ WARNING: Setting any overclocking parameters to values other than those used by | Frequency of the 3D block in MHz; individual override of the `gpu_freq` setting | hevc_freq -| Frequency of the High Efficiency Video Codec block in MHz; individual override of the `gpu_freq` setting. Pi 4 only. +| Frequency of the High Efficiency Video Codec block in MHz; individual override of the `gpu_freq` setting. Raspberry Pi 4 only. | sdram_freq -| Frequency of the SDRAM in MHz. SDRAM overclocking on Pi 4B is not currently supported +| Frequency of the SDRAM in MHz. SDRAM overclocking on Raspberry Pi 4B is not currently supported | over_voltage -| CPU/GPU core upper voltage limit. The value should be in the range [-16,8] which equates to the range [0.95V,1.55V] ([0.8,1.4V] on RPi 1) with 0.025V steps. In other words, specifying -16 will give 0.95V (0.8V on RPi 1) as the maximum CPU/GPU core voltage, and specifying 8 will allow up to 1.55V (1.4V on RPi 1). For defaults see table below. Values above 6 are only allowed when `force_turbo=1` is specified: this sets the warranty bit if `over_voltage_*` > `0` is also set. +| CPU/GPU core upper voltage limit. The value should be in the range [-16,8] which equates to the range [0.95V,1.55V] ([0.8,1.4V] on Raspberry Pi 1) with 0.025V steps. In other words, specifying -16 will give 0.95V (0.8V on Raspberry Pi 1) as the maximum CPU/GPU core voltage, and specifying 8 will allow up to 1.55V (1.4V on Raspberry Pi 1). For defaults see table below. Values above 6 are only allowed when `force_turbo=1` is specified: this sets the warranty bit if `over_voltage_*` > `0` is also set. | over_voltage_sdram | Sets `over_voltage_sdram_c`, `over_voltage_sdram_i`, and `over_voltage_sdram_p` together. @@ -95,7 +95,7 @@ WARNING: Setting any overclocking parameters to values other than those used by | *3A+/3B+ only*. CPU speed throttle control. This sets the temperature at which the CPU clock speed throttling system activates. At this temperature, the clock speed is reduced from 1400MHz to 1200MHz. Defaults to `60`, can be raised to a maximum of `70`, but this may cause instability. |=== -This table gives the default values for the options on various Raspberry Pi Models, all frequencies are stated in MHz. +This table gives the default values for the options on various Raspberry Pi models, all frequencies are stated in MHz. [cols=",^,^,^,^,^,^,^,^,^"] |=== @@ -269,7 +269,7 @@ This table gives defaults for options that are the same across all models. | 85 (°C) | over_voltage -| 0 (1.35V, 1.2V on RPi 1) +| 0 (1.35V, 1.2V on Raspberry Pi 1) | over_voltage_min | 0 (1.2V) @@ -321,19 +321,19 @@ Sets a bit in the OTP memory (one time programmable) that prevents the device fr ==== `disable_auto_turbo` -On Pi 2/Pi 3, setting this flag will disable the GPU from moving into turbo mode, which it can do in particular load cases. +On Raspberry Pi 2 / Raspberry Pi 3, setting this flag will disable the GPU from moving into turbo mode, which it can do in particular load cases. === Clocks Relationship The GPU core, CPU, SDRAM and GPU each have their own PLLs and https://forums.raspberrypi.com/viewtopic.php?f=29&t=6201&start=275#p168042[can have unrelated frequencies]. The h264, v3d and ISP blocks share a PLL. -To view the Pi's current frequency in KHz, type: `cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq`. Divide the result by 1000 to find the value in MHz. Note that this frequency is the kernel _requested_ frequency, and it is possible that any throttling (for example at high temperatures) may mean the CPU is actually running more slowly than reported. An instantaneous measurement of the actual ARM CPU frequency can be retrieved using the vcgencmd `vcgencmd measure_clock arm`. This is displayed in Hertz. +To view the Raspberry Pi's current frequency in KHz, type: `cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq`. Divide the result by 1000 to find the value in MHz. Note that this frequency is the kernel _requested_ frequency, and it is possible that any throttling (for example at high temperatures) may mean the CPU is actually running more slowly than reported. An instantaneous measurement of the actual ARM CPU frequency can be retrieved using the vcgencmd `vcgencmd measure_clock arm`. This is displayed in Hertz. === Monitoring Core Temperature To view the Raspberry Pi's temperature, type `cat /sys/class/thermal/thermal_zone0/temp`. Divide the result by 1000 to find the value in degrees Celsius. Alternatively, there is a vcgencmd, `vcgencmd measure_temp` that interrogates the GPU directly for its temperature. -Whilst hitting the temperature limit is not harmful to the SoC, it will cause CPU throttling. A heatsink can help to control the core temperature and therefore performance. This is especially useful if the Pi is running inside a case. Airflow over the heatsink will make cooling more efficient. +Whilst hitting the temperature limit is not harmful to the SoC, it will cause CPU throttling. A heatsink can help to control the core temperature and therefore performance. This is especially useful if the Raspberry Pi is running inside a case. Airflow over the heatsink will make cooling more efficient. With firmware from 12th September 2016 or later, when the core temperature is between 80'C and 85'C, a warning icon showing a red half-filled thermometer will be displayed, and the ARM cores will be throttled back. If the temperature exceeds 85'C, an icon showing a fully-filled thermometer will be displayed, and both the ARM cores and the GPU will be throttled back. @@ -345,7 +345,7 @@ See the page on xref:configuration.adoc#firmware-warning-icons[warning icons] fo It is essential to keep the supply voltage above 4.8V for reliable performance. Note that the voltage from some USB chargers/power supplies can fall as low as 4.2V. This is because they are usually designed to charge a 3.7V LiPo battery, not to supply 5V to a computer. -To monitor the Pi's PSU voltage, you will need to use a multimeter to measure between the VCC and GND pins on the GPIO. More information is available in xref:raspberry-pi.adoc#power-supply[power]. +To monitor the Raspberry Pi's PSU voltage, you will need to use a multimeter to measure between the VCC and GND pins on the GPIO. More information is available in xref:raspberry-pi.adoc#power-supply[power]. If the voltage drops below 4.63V (+-5%), recent versions of the firmware will show a yellow lightning bolt symbol on the display to indicate a lack of power, and a message indicating the low voltage state will be added to the kernel log. diff --git a/documentation/asciidoc/computers/config_txt/pi4-hdmi.adoc b/documentation/asciidoc/computers/config_txt/pi4-hdmi.adoc index db79ea7c6..d3e217883 100644 --- a/documentation/asciidoc/computers/config_txt/pi4-hdmi.adoc +++ b/documentation/asciidoc/computers/config_txt/pi4-hdmi.adoc @@ -6,11 +6,11 @@ In order to support dual displays, and modes up to 4k60, the Raspberry Pi 4 has Every HDMI mode has a list of timings that control all the parameters around sync pulse durations. These are typically defined via a pixel clock, and then a number of active pixels, a front porch, sync pulse, and back porch for each of the horizontal and vertical directions. -Running everything at 2 pixels per clock means that the Pi4 can not support a timing where _any_ of the horizontal timings are not divisible by 2. The firmware and Linux kernel will filter out any mode that does not fulfill this criteria. +Running everything at 2 pixels per clock means that the Raspberry Pi 4 can not support a timing where _any_ of the horizontal timings are not divisible by 2. The firmware and Linux kernel will filter out any mode that does not fulfill this criteria. There is only one mode in the CEA and DMT standards that falls into this category - DMT mode 81, which is 1366x768 @ 60Hz. This mode has odd values for the horizontal sync and back porch timings. It's also an unusual mode for having a width that isn't divisible by 8. -If your monitor is of this resolution, then the Pi4 will automatically drop down to the next mode that is advertised by the monitor; this is typically 1280x720. +If your monitor is of this resolution, then the Raspberry Pi 4 will automatically drop down to the next mode that is advertised by the monitor; this is typically 1280x720. On some monitors it is possible to configure them to use 1360x768 @ 60Hz. They typically do not advertise this mode via their EDID so the selection can't be made automatically, but it can be manually chosen by adding diff --git a/documentation/asciidoc/computers/config_txt/video.adoc b/documentation/asciidoc/computers/config_txt/video.adoc index fe877fd70..ae650cff8 100644 --- a/documentation/asciidoc/computers/config_txt/video.adoc +++ b/documentation/asciidoc/computers/config_txt/video.adoc @@ -4,7 +4,7 @@ ==== `sdtv_mode` -The `sdtv_mode` command defines the TV standard used for composite video output. On the original Raspberry Pi, composite video is output on the RCA socket. On other Raspberry Pi's, except for Pi Zero and Compute Module, composite video is output along with sound on the 4 pole TRRS ("headphone") socket. On the Pi Zero, there is an unpopulated header labelled "TV" which outputs composite video. On the Compute Module, composite video is available via the TVDAC pin. The default value of `sdtv_mode` is `0`. +The `sdtv_mode` command defines the TV standard used for composite video output. On the original Raspberry Pi, composite video is output on the RCA socket. On other Raspberry Pis, except for Raspberry Pi Zero and Compute Module, composite video is output along with sound on the 4 pole TRRS ("headphone") socket. On the Raspberry Pi Zero, there is an unpopulated header labelled "TV" which outputs composite video. On the Compute Module, composite video is available via the TVDAC pin. The default value of `sdtv_mode` is `0`. |=== | sdtv_mode | result @@ -49,17 +49,17 @@ The `sdtv_aspect` command defines the aspect ratio for composite video output. T Setting `sdtv_disable_colourburst` to `1` disables colourburst on composite video output. The picture will be displayed in monochrome, but it may appear sharper. -==== `enable_tvout` (Raspberry Pi 4, Model B Only) +==== `enable_tvout` (Raspberry Pi 4 Model B Only) -On the Raspberry Pi 4, composite output is disabled by default, due to the way the internal clocks are interrelated and allocated. Because composite video requires a very specific clock, setting that clock to the required speed on the Pi 4 means that other clocks connected to it are detrimentally affected, which slightly slows down the entire system. Since composite video is a less commonly used function, we decided to disable it by default to prevent this system slowdown. +On the Raspberry Pi 4, composite output is disabled by default, due to the way the internal clocks are interrelated and allocated. Because composite video requires a very specific clock, setting that clock to the required speed on the Raspberry Pi 4 means that other clocks connected to it are detrimentally affected, which slightly slows down the entire system. Since composite video is a less commonly used function, we decided to disable it by default to prevent this system slowdown. To enable composite output, use the `enable_tvout=1` option. As described above, this will detrimentally affect performance to a small degree. -On older Pi models, the composite behaviour remains the same. +On older Raspberry Pi models, the composite behaviour remains the same. === HDMI Mode -NOTE: Because the Raspberry Pi 4B has two HDMI ports, some HDMI commands can be applied to either port. You can use the syntax `:`, where port is 0 or 1, to specify which port the setting should apply to. If no port is specified, the default is 0. If you specify a port number on a command that does not require a port number, the port is ignored. Further details on the syntax and alternatives mechanisms can be found in the HDMI sub-section of the xref:config_txt.adoc#conditional-filters[conditionals section] of the documentation. +NOTE: Because the Raspberry Pi 4 and Raspberry Pi 400 have two HDMI ports, some HDMI commands can be applied to either port. You can use the syntax `:`, where port is 0 or 1, to specify which port the setting should apply to. If no port is specified, the default is 0. If you specify a port number on a command that does not require a port number, the port is ignored. Further details on the syntax and alternatives mechanisms can be found in the HDMI sub-section of the xref:config_txt.adoc#conditional-filters[conditionals section] of the documentation. In order to support dual 4k displays, the Raspberry Pi 4 has xref:config_txt.adoc#raspberry-pi-4-hdmi-pipeline[updated video hardware], which imposes minor restrictions on the modes supported. @@ -1508,7 +1508,7 @@ hdmi_cvt= Fields at the end can be omitted to use the default values. -Note that this simply *creates* the mode (group 2 mode 87). In order to make the Pi use this by default, you must add some additional settings. For example, the following selects an 800 × 480 resolution and enables audio drive: +Note that this simply *creates* the mode (group 2 mode 87). In order to make the Raspberry Pi use this by default, you must add some additional settings. For example, the following selects an 800 × 480 resolution and enables audio drive: ---- hdmi_cvt=800 480 60 6 @@ -1523,15 +1523,15 @@ This may not work if your monitor does not support standard CVT timings. ==== `ignore_lcd` -By default the Raspberry Pi LCD display is used when it is detected on the I2C bus. `ignore_lcd=1` will skip this detection phase, and therefore the LCD display will not be used. +By default the Raspberry Pi Touch Display is used when it is detected on the I2C bus. `ignore_lcd=1` will skip this detection phase, and therefore the LCD display will not be used. ==== `display_default_lcd` -If a Raspberry Pi DSI LCD is detected it will be used as the default display and will show the framebuffer. Setting `display_default_lcd=0` will ensure the LCD is not the default display, which usually implies the HDMI output will be the default. The LCD can still be used by choosing its display number from supported applications, for example, omxplayer. +If a Raspberry Pi Touch Display is detected it will be used as the default display and will show the framebuffer. Setting `display_default_lcd=0` will ensure the LCD is not the default display, which usually implies the HDMI output will be the default. The LCD can still be used by choosing its display number from supported applications, for example, omxplayer. ==== `lcd_framerate` -Specify the framerate of the Raspberry Pi LCD display, in Hertz/fps. Defaults to 60Hz. +Specify the framerate of the Raspberry Pi Touch Display, in Hertz/fps. Defaults to 60Hz. ==== `lcd_rotate` @@ -1543,7 +1543,7 @@ For example, `lcd_rotate=2` will compensate for an upside down display. Enable/disable the touchscreen. -`disable_touchscreen=1` will disable the touchscreen on the official Raspberry Pi LCD display. +`disable_touchscreen=1` will disable the touchscreen on the official Raspberry Pi Touch Display. ==== `enable_dpi_lcd` @@ -1705,7 +1705,7 @@ The options that can be set are: ==== `max_framebuffers` -This configuration entry sets the maximum number of firmware framebuffers that can be created. Valid options are 0, 1, and 2. By default on devices before the Pi4 this is set to 1, so will need to be increased to 2 when using more than one display, for example HDMI and a DSI or DPI display. The Raspberry Pi4 configuration sets this to 2 by default as it has two HDMI ports. +This configuration entry sets the maximum number of firmware framebuffers that can be created. Valid options are 0, 1, and 2. By default on devices before the Raspberry Pi 4 this is set to 1, so will need to be increased to 2 when using more than one display, for example HDMI and a DSI or DPI display. The Raspberry Pi 4 configuration sets this to 2 by default as it has two HDMI ports. Generally in most cases it is safe to set this to 2, as framebuffers will only be created when an attached device is actually detected. @@ -1747,7 +1747,7 @@ If using the VC4 FKMS V3D driver (this is the default on the Raspberry Pi 4), th ==== `display_lcd_rotate` -For the legacy graphics driver (default on models prior to the Pi4), use `display_lcd_rotate` to rotate or flip the LCD orientation. Parameters are the same as `display_hdmi_rotate`. See also `lcd_rotate`. +For the legacy graphics driver (default on models prior to the Raspberry Pi 4), use `display_lcd_rotate` to rotate or flip the LCD orientation. Parameters are the same as `display_hdmi_rotate`. See also `lcd_rotate`. ==== `display_rotate` diff --git a/documentation/asciidoc/computers/configuration/audio-config.adoc b/documentation/asciidoc/computers/configuration/audio-config.adoc index f0f897c44..39147ba35 100644 --- a/documentation/asciidoc/computers/configuration/audio-config.adoc +++ b/documentation/asciidoc/computers/configuration/audio-config.adoc @@ -6,7 +6,7 @@ If your HDMI monitor or TV has built-in speakers, the audio can be played over t === Changing the Audio Output -There are two ways of setting the audio output; using the Desktop volume control, or using `raspi-config` command line tool. +There are two ways of setting the audio output; using the desktop volume control, or using the `raspi-config` command line tool. ==== Using the Desktop diff --git a/documentation/asciidoc/computers/configuration/boot_folder.adoc b/documentation/asciidoc/computers/configuration/boot_folder.adoc index cffc5137f..27f273f94 100644 --- a/documentation/asciidoc/computers/configuration/boot_folder.adoc +++ b/documentation/asciidoc/computers/configuration/boot_folder.adoc @@ -17,7 +17,7 @@ This is the bootloader, which is loaded by the SoC on boot, does some very basic These are binary blobs (firmware) that are loaded on to the VideoCore in the SoC, which then take over the boot process. `start.elf` is the basic firmware, `start_x.elf` includes camera drivers and codec, `start_db.elf` is a debug version of the firmware, and `start_cd.elf` is a cut-down version with no support hardware blocks like codecs and 3D, and for use when `gpu_mem=16` is specified in `config.txt`. More information on how to use these can be found in xref:config_txt.adoc#boot-options[the `config.txt` section]. -`start4.elf`, `start4x.elf`, `start4cd.elf`, and `start4db.elf` are firmware files specific to the Pi 4. +`start4.elf`, `start4x.elf`, `start4cd.elf`, and `start4db.elf` are firmware files specific to the Raspberry Pi 4. ==== fixup*.dat @@ -29,7 +29,7 @@ The kernel command line passed in to the kernel when it boots. ==== config.txt -Contains many configuration parameters for setting up the Pi. See xref:config_txt.adoc[the `config.txt` section]. +Contains many configuration parameters for setting up the Raspberry Pi. See xref:config_txt.adoc[the `config.txt` section]. ==== issue.txt @@ -45,7 +45,7 @@ This is the file to configure wireless network settings (if the hardware is capa ==== Device Tree files -There are various Device Tree blob files, which have the extension `.dtb`. These contain the hardware definitions of the various models of Raspberry Pi, and are used on boot to set up the kernel xref:configuration.adoc#part3.1[according to which Pi model is detected]. +There are various Device Tree blob files, which have the extension `.dtb`. These contain the hardware definitions of the various models of Raspberry Pi, and are used on boot to set up the kernel xref:configuration.adoc#part3.1[according to which Raspberry Pi model is detected]. ==== Kernel Files diff --git a/documentation/asciidoc/computers/configuration/configuring-networking.adoc b/documentation/asciidoc/computers/configuration/configuring-networking.adoc index ab09dd0f7..9836a8ef7 100644 --- a/documentation/asciidoc/computers/configuration/configuring-networking.adoc +++ b/documentation/asciidoc/computers/configuration/configuring-networking.adoc @@ -1,10 +1,10 @@ == Configuring Networking -A GUI is provided for setting up wireless connections in Raspberry Pi OS within the Raspberry Pi Desktop. However if you are not using the Raspberry Pi Desktop, you can set up wireless networking from the command line. +A GUI is provided for setting up wireless connections in Raspberry Pi OS with desktop. However if you are using Raspberry Pi OS Lite, you can set up wireless networking from the command line. === Using the Desktop -Wireless connections can be made via the network icon at the right-hand end of the menu bar. If you are using a Pi with built-in wireless connectivity, or if a wireless dongle is plugged in, left-clicking this icon will bring up a list of available wireless networks, as shown below. If no networks are found, it will show the message 'No APs found - scanning...'. Wait a few seconds without closing the menu, and it should find your network. +Wireless connections can be made via the network icon at the right-hand end of the menu bar. If you are using a Raspberry Pi with built-in wireless connectivity, or if a wireless dongle is plugged in, left-clicking this icon will bring up a list of available wireless networks, as shown below. If no networks are found, it will show the message 'No APs found - scanning...'. Wait a few seconds without closing the menu, and it should find your network. Note that on Raspberry Pi devices that support the 5GHz band (Pi3B+, Pi4, CM4, Pi400), wireless networking is disabled for regulatory reasons, until the country code has been set. To set the country code, open the `Raspberry Pi Configuration` application from the Preferences Menu, select *Localisation* and set the appropriate code. @@ -29,7 +29,7 @@ The quickest way to enable wireless networking is to use the command line `raspi Select the *Localisation Options* item from the menu, then the *Change wireless country* option. On a fresh install, for regulatory purposes, you will need to specify the country in which the device is being used. Then set the SSID of the network, and the passphrase for the network. If you do not know the SSID of the network you want to connect to, see the next section on how to list available networks prior to running `raspi-config`. -Note that `raspi-config` does not provide a complete set of options for setting up wireless networking; you may need to refer to the extra sections below for more details if `raspi-config` fails to connect the Pi to your requested network. +Note that `raspi-config` does not provide a complete set of options for setting up wireless networking; you may need to refer to the extra sections below for more details if `raspi-config` fails to connect the Raspberry Pi to your requested network. ==== Getting Wireless LAN Network Details @@ -180,6 +180,6 @@ static domain_name_servers=192.168.0.254 8.8.8.8 You can find the names of the interfaces present on your system using the `ip link` command. -Note that if you have several Raspberry Pis connected to the same network, you may find it easier instead to set address reservations on your DHCP server. In this way, each Pi will keep the same IP address, but they will all be managed in one place, making reconfiguring your network in the future more straightforward. +Note that if you have several Raspberry Pis connected to the same network, you may find it easier instead to set address reservations on your DHCP server. In this way, each Raspberry Pi will keep the same IP address, but they will all be managed in one place, making reconfiguring your network in the future more straightforward. On Raspberry Pi systems where the graphical desktop is installed, a GUI tool called `lxplug-network` is used to allow the user to make changes to the configuration of `dhcpcd`, including setting static IP addresses. The `lxplug-network` tool is based on `dhcpcd-ui`, which was also developed by Roy Marples. diff --git a/documentation/asciidoc/computers/configuration/device-tree.adoc b/documentation/asciidoc/computers/configuration/device-tree.adoc index 17a013ca3..89c9fb68e 100644 --- a/documentation/asciidoc/computers/configuration/device-tree.adoc +++ b/documentation/asciidoc/computers/configuration/device-tree.adoc @@ -1,6 +1,6 @@ == Device Trees, Overlays, and Parameters -Raspberry Pi kernels and firmware use a Device Tree (DT) to describe the hardware present in the Pi. These Device Trees may include DT parameters that provide a degree of control over some onboard features. DT overlays allow optional external hardware to be described and configured, and they also support parameters for more control. +Raspberry Pi kernels and firmware use a Device Tree (DT) to describe the hardware present in the Raspberry Pi. These Device Trees may include DT parameters that provide a degree of control over some onboard features. DT overlays allow optional external hardware to be described and configured, and they also support parameters for more control. The firmware loader (`start.elf` and its variants) is responsible for loading the DTB (Device Tree Blob - a machine readable DT file). It chooses which one to load based on the board revision number, and makes certain modifications to further tailor it (memory size, Ethernet addresses etc.). This runtime customisation avoids the need for lots of DTBs with only minor differences. @@ -181,7 +181,7 @@ A DT overlay comprises a number of fragments, each of which targets one node and }; ---- -The `compatible` string identifies this as being for BCM2835, which is the base architecture for the Raspberry Pi SoCs; if the overlay makes use of features of a Pi 4 then `brcm,bcm2711` is the correct value to use, otherwise `brcm,bcm2835` can be used for all Pi overlays. Then comes the first (and in this case only) fragment. Fragments should be numbered sequentially from zero. Failure to adhere to this may cause some or all of your fragments to be missed. +The `compatible` string identifies this as being for BCM2835, which is the base architecture for the Raspberry Pi SoCs; if the overlay makes use of features of a Raspberry Pi 4 then `brcm,bcm2711` is the correct value to use, otherwise `brcm,bcm2835` can be used for all Raspberry Pi overlays. Then comes the first (and in this case only) fragment. Fragments should be numbered sequentially from zero. Failure to adhere to this may cause some or all of your fragments to be missed. Each fragment consists of two parts: a `target` property, identifying the node to apply the overlay to; and the `+__overlay__+` itself, the body of which is added to the target node. The example above can be interpreted as if it were written like this: @@ -466,7 +466,7 @@ The `name` property is a pseudo-property - it shouldn't appear in a DT, but assi [[part2.2.10]] ===== The overlay map file -The introduction of the Pi 4, built around the BCM2711 SoC, brought with it many changes; some of these changes are additional interfaces, and some are modifications to (or removals of) existing interfaces. There are new overlays intended specifically for the Pi 4 that don't make sense on older hardware, e.g. overlays that enable the new SPI, I2C and UART interfaces, but other overlays don't apply correctly even though they control features that are still relevant on the new device. +The introduction of the Raspberry Pi 4, built around the BCM2711 SoC, brought with it many changes; some of these changes are additional interfaces, and some are modifications to (or removals of) existing interfaces. There are new overlays intended specifically for the Raspberry Pi 4 that don't make sense on older hardware, e.g. overlays that enable the new SPI, I2C and UART interfaces, but other overlays don't apply correctly even though they control features that are still relevant on the new device. There is therefore a need for a method of tailoring an overlay to multiple platforms with differing hardware. Supporting them all in a single .dtbo file would require heavy use of hidden ("dormant") fragments and a switch to an on-demand symbol resolution mechanism so that a missing symbol that isn't needed doesn't cause a failure. A simpler solution is to add a facility to map an overlay name to one of several implementation files depending on the current platform. @@ -499,7 +499,7 @@ This is an edited version of the current map file (see the https://github.com/ra }; ---- -Each node has the name of an overlay that requires special handling. The properties of each node are either platform names or one of a small number of special directives. The current supported platforms are `bcm2835`, which includes all Pis built around the BCM2835, BCM2836 and BCM2837 SoCs, and `bcm2711` for Pi 4B. +Each node has the name of an overlay that requires special handling. The properties of each node are either platform names or one of a small number of special directives. The current supported platforms are `bcm2835`, which includes all Raspberry Pis built around the BCM2835, BCM2836 and BCM2837 SoCs, and `bcm2711` for Raspberry Pi 4B. A platform name with no value (an empty property) indicates that the current overlay is compatible with the platform; for example, `vc4-kms-v3d` is compatible with the `bcm2835` platform. A non-empty value for a platform is the name of an alternative overlay to use in place of the requested one; asking for `vc4-kms-v3d` on BCM2711 results in `vc4-kms-v3d-pi4` being loaded instead. Any platform not included in an overlay's node is not compatible with that overlay. @@ -689,7 +689,7 @@ dtoverlay= Raspberry Pi boards have two I2C interfaces. These are nominally split: one for the ARM, and one for VideoCore (the "GPU"). On almost all models, `i2c1` belongs to the ARM and `i2c0` to VC, where it is used to control the camera and read the HAT EEPROM. However, there are two early revisions of the Model B that have those roles reversed. -To make it possible to use one set of overlays and parameters with all Pis, the firmware creates some board-specific DT parameters. These are: +To make it possible to use one set of overlays and parameters with all Raspberry Pis, the firmware creates some board-specific DT parameters. These are: ---- i2c/i2c_arm @@ -698,7 +698,7 @@ i2c_baudrate/i2c_arm_baudrate i2c_vc_baudrate ---- -These are aliases for `i2c0`, `i2c1`, `i2c0_baudrate`, and `i2c1_baudrate`. It is recommended that you only use `i2c_vc` and `i2c_vc_baudrate` if you really need to - for example, if you are programming a HAT EEPROM (which is better done using a software I2C bus using the `i2c-gpio` overlay). Enabling `i2c_vc` can stop the Pi Camera or 7" DSI display functioning correctly. +These are aliases for `i2c0`, `i2c1`, `i2c0_baudrate`, and `i2c1_baudrate`. It is recommended that you only use `i2c_vc` and `i2c_vc_baudrate` if you really need to - for example, if you are programming a HAT EEPROM (which is better done using a software I2C bus using the `i2c-gpio` overlay). Enabling `i2c_vc` can stop the Raspberry Pi Camera or Raspberry Pi Touch Display functioning correctly. For people writing overlays, the same aliasing has been applied to the labels on the I2C DT nodes. Thus, you should write: @@ -941,7 +941,7 @@ device_tree=my-pi.dtb [[part4.4]] ==== Disabling Device Tree usage -Since the switch to the 4.4 kernel and the use of more upstream drivers, Device Tree usage is required in Pi Linux kernels. However, for bare metal and other OSs, the method of disabling DT usage is to add: +Since the switch to the 4.4 kernel and the use of more upstream drivers, Device Tree usage is required in Raspberry Pi Linux kernels. However, for bare metal and other OSs, the method of disabling DT usage is to add: ---- device_tree= @@ -980,7 +980,7 @@ This sets an (exclusive) limit to the loaded device tree. By default the device If non-zero, turn on some extra logging for the firmware's device tree processing. `enable_uart` -Enable the primary/console xref:configuration.adoc#configuring-uarts[UART] (ttyS0 on a Pi 3, ttyAMA0 otherwise - unless swapped with an overlay such as miniuart-bt). If the primary UART is ttyAMA0 then enable_uart defaults to 1 (enabled), otherwise it defaults to 0 (disabled). This is because it is necessary to stop the core frequency from changing which would make ttyS0 unusable, so `enable_uart=1` implies core_freq=250 (unless force_turbo=1). In some cases this is a performance hit, so it is off by default. +Enable the primary/console xref:configuration.adoc#configuring-uarts[UART] (ttyS0 on a Raspberry Pi 3, ttyAMA0 otherwise - unless swapped with an overlay such as miniuart-bt). If the primary UART is ttyAMA0 then enable_uart defaults to 1 (enabled), otherwise it defaults to 0 (disabled). This is because it is necessary to stop the core frequency from changing which would make ttyS0 unusable, so `enable_uart=1` implies core_freq=250 (unless force_turbo=1). In some cases this is a performance hit, so it is off by default. `overlay_prefix` Specifies a subdirectory/prefix from which to load overlays - defaults to "overlays/". Note the trailing "/". If desired you can add something after the final "/" to add a prefix to each file, although this is not likely to be needed. diff --git a/documentation/asciidoc/computers/configuration/external-storage.adoc b/documentation/asciidoc/computers/configuration/external-storage.adoc index 3ae06bb83..e509e5d79 100644 --- a/documentation/asciidoc/computers/configuration/external-storage.adoc +++ b/documentation/asciidoc/computers/configuration/external-storage.adoc @@ -13,7 +13,7 @@ To set up your storage device so that it always mounts to a specific location of You can mount your storage device at a specific folder location. It is conventional to do this within the `/mnt` folder, for example `/mnt/mydisk`. Note that the folder must be empty. . Plug the storage device into a USB port on the Raspberry Pi. -. List all the disk partitions on the Pi using the following command: +. List all the disk partitions on the Raspberry Pi using the following command: + ---- sudo lsblk -o UUID,NAME,FSTYPE,SIZE,MOUNTPOINT,LABEL,MODEL @@ -90,9 +90,9 @@ Replace `fstype` with the type of your file system, which you found in step 2 of . If the filesystem type is FAT or NTFS, add `,umask=000` immediately after `nofail` - this will allow all users full read/write access to every file on the storage device. -Now that you have set an entry in `fstab`, you can start up your Raspberry Pi with or without the storage device attached. Before you unplug the device you must either shut down the Pi, or manually unmount it using the steps in 'Unmounting a storage device' below. +Now that you have set an entry in `fstab`, you can start up your Raspberry Pi with or without the storage device attached. Before you unplug the device you must either shut down the Raspberry Pi, or manually unmount it using the steps in 'Unmounting a storage device' below. -NOTE: if you do not have the storage device attached when the Pi starts, the Pi will take an extra 90 seconds to start up. You can shorten this by adding `,x-systemd.device-timeout=30` immediately after `nofail` in step 4. This will change the timeout to 30 seconds, meaning the system will only wait 30 seconds before giving up trying to mount the disk. +NOTE: If you do not have the storage device attached when the Raspberry Pi starts, the Raspberry Pi will take an extra 90 seconds to start up. You can shorten this by adding `,x-systemd.device-timeout=30` immediately after `nofail` in step 4. This will change the timeout to 30 seconds, meaning the system will only wait 30 seconds before giving up trying to mount the disk. For more information on each Linux command, refer to the specific manual page using the `man` command. For example, `man fstab`. diff --git a/documentation/asciidoc/computers/configuration/hdmi-config.adoc b/documentation/asciidoc/computers/configuration/hdmi-config.adoc index eef156e84..48da3f2b0 100644 --- a/documentation/asciidoc/computers/configuration/hdmi-config.adoc +++ b/documentation/asciidoc/computers/configuration/hdmi-config.adoc @@ -27,7 +27,7 @@ You can use the `tvservice` application on the command line to determine which m * `tvservice -m CEA` lists all supported CEA modes * `tvservice -m DMT` lists all supported DMT modes -If you are using a Pi 4 with more than one display attached, then `tvservice` needs to be told which device to ask for information. You can get display IDs for all attached devices by using: +If you are using a Raspberry Pi 4 with more than one display attached, then `tvservice` needs to be told which device to ask for information. You can get display IDs for all attached devices by using: `tvservice -l` diff --git a/documentation/asciidoc/computers/configuration/kernel-command-line-config.adoc b/documentation/asciidoc/computers/configuration/kernel-command-line-config.adoc index 709c50640..507590c90 100644 --- a/documentation/asciidoc/computers/configuration/kernel-command-line-config.adoc +++ b/documentation/asciidoc/computers/configuration/kernel-command-line-config.adoc @@ -50,10 +50,10 @@ Possible options for the display type, the first part of the `video=` entry, ar | video option | Display | HDMI-A-1 -| HDMI 1 (HDMI 0 on silkscreen of Pi4B, HDMI on single HDMI boards) +| HDMI 1 (HDMI 0 on silkscreen of Raspberry Pi 4B, HDMI on single HDMI boards) | HDMI-A-2 -| HDMI 2 (HDMI 1 on silkscreen of Pi4B) +| HDMI 2 (HDMI 1 on silkscreen of Raspberry Pi 4B) | DSI-1 | DSI or DPI @@ -69,9 +69,7 @@ Possible options for the display type, the first part of the `video=` entry, ar * plymouth.ignore-serial-consoles: normally if the Plymouth module is enabled it will prevent boot messages from appearing on any serial console which may be present. This flag tells Plymouth to ignore all serial consoles, making boot messages visible again, as they would be if Plymouth was not running. * dwc_otg.lpm_enable=0: turns off Link Power Management (LPM) in the dwc_otg driver; the dwc_otg driver is the driver for the USB controller built into the processor used on Raspberry Pi computers. + -NOTE: On Raspberry Pi 4 this controller is disabled by default, and is only connected to the type C power input jack; the type A USB ports on Pi 4 are driven by a separate USB controller which is not affected by this setting. +NOTE: On Raspberry Pi 4 this controller is disabled by default, and is only connected to the USB type C power input connector; the USB type A ports on Raspberry Pi 4 are driven by a separate USB controller which is not affected by this setting. * dwc_otg.speed: sets the speed of the USB controller built into the processor on Raspberry Pi computers. `dwc_otg.speed=1` will set it to full speed (USB 1.0), which is slower than high speed (USB 2.0). This option should not be set except during troubleshooting of problems with USB devices. -+ -NOTE: On Raspberry Pi 4 this controller is disabled by default, and is only connected to the type C power input connector; the type A USB ports on Pi 4 are driven by a separate USB controller which is not affected by this setting. * smsc95xx.turbo_mode: enables/disables the wired networking driver turbo mode. `smsc95xx.turbo_mode=N` turns turbo mode off. * usbhid.mousepoll: specifies the mouse polling interval. If you have problems with a slow or erratic wireless mouse, setting this to 0 might help: `usbhid.mousepoll=0`. diff --git a/documentation/asciidoc/computers/configuration/led_blink_warnings.adoc b/documentation/asciidoc/computers/configuration/led_blink_warnings.adoc index 99730ae17..5d4a9e1fc 100644 --- a/documentation/asciidoc/computers/configuration/led_blink_warnings.adoc +++ b/documentation/asciidoc/computers/configuration/led_blink_warnings.adoc @@ -1,6 +1,6 @@ == LED Warning Flash Codes -If a Pi fails to boot for some reason, or has to shut down, in many cases an LED will be flashed a specific number of times to indicate what happened. The LED will blink for a number of long flashes (0 or more), then short flashes, to indicate the exact status. In most cases, the pattern will repeat after a 2 second gap. +If a Raspberry Pi fails to boot for some reason, or has to shut down, in many cases an LED will be flashed a specific number of times to indicate what happened. The LED will blink for a number of long flashes (0 or more), then short flashes, to indicate the exact status. In most cases, the pattern will repeat after a 2 second gap. [cols="^,^,"] |=== diff --git a/documentation/asciidoc/computers/configuration/pin-configuration.adoc b/documentation/asciidoc/computers/configuration/pin-configuration.adoc index 5541f6869..1c2216122 100644 --- a/documentation/asciidoc/computers/configuration/pin-configuration.adoc +++ b/documentation/asciidoc/computers/configuration/pin-configuration.adoc @@ -52,19 +52,19 @@ There are a number of separate `pins_*` sections, based on particular Raspberry * *pins_rev1* Rev1 pin setup. There are some differences because of the moved I2C pins. * *pins_rev2* Rev2 pin setup. This includes the additional codec pins on P5. -* *pins_bplus1* Model B+ rev 1.1, including the full 40pin connector. -* *pins_bplus2* Model B+ rev 1.2, swapping the low-power and lan-run pins. -* *pins_aplus* Model A+, lacking Ethernet. -* *pins_2b1* Pi 2 Model B rev 1.0; controls the SMPS via I2C0. -* *pins_2b2* Pi 2 Model B rev 1.1; controls the SMPS via software I2C on 42 and 43. -* *pins_3b1* Pi 3 Model B rev 1.0 -* *pins_3b2* Pi 3 Model B rev 1.2 -* *pins_3bplus* Pi 3 Model B+ -* *pins_3aplus* Pi 3 Model A+ -* *pins_pi0* The Pi Zero -* *pins_pi0w* The Pi Zero W -* *pins_cm* The Compute Module. The default for this is the default for the chip, so it is a useful source of information about default pull ups/downs on the chip. -* *pins_cm3* The Compute Module version 3 +* *pins_bplus1* Raspberry Pi 1 Model B+ rev 1.1, including the full 40pin connector. +* *pins_bplus2* Raspberry Pi 1 Model B+ rev 1.2, swapping the low-power and lan-run pins. +* *pins_aplus* Raspberry Pi 1 Model A+, lacking Ethernet. +* *pins_2b1* Raspberry Pi 2 Model B rev 1.0; controls the SMPS via I2C0. +* *pins_2b2* Raspberry Pi 2 Model B rev 1.1; controls the SMPS via software I2C on 42 and 43. +* *pins_3b1* Raspberry Pi 3 Model B rev 1.0 +* *pins_3b2* Raspberry Pi 3 Model B rev 1.2 +* *pins_3bplus* Raspberry Pi 3 Model B+ +* *pins_3aplus* Raspberry Pi 3 Model A+ +* *pins_pi0* Raspberry Pi Zero +* *pins_pi0w* Raspberry Pi Zero W +* *pins_cm* Raspberry Pi Compute Module 1. The default for this is the default for the chip, so it is a useful source of information about default pull ups/downs on the chip. +* *pins_cm3* Raspberry Pi Compute Module 3 + Each `pins_*` section can contain `pin_config` and `pin_defines` sections. diff --git a/documentation/asciidoc/computers/configuration/raspi-config.adoc b/documentation/asciidoc/computers/configuration/raspi-config.adoc index 79056300d..34017f341 100644 --- a/documentation/asciidoc/computers/configuration/raspi-config.adoc +++ b/documentation/asciidoc/computers/configuration/raspi-config.adoc @@ -48,7 +48,7 @@ The default user on Raspberry Pi OS is `pi` with the password `raspberry`. You c [[hostname]] ===== Hostname -Set the visible name for this Pi on a network. +Set the visible name for this Raspberry Pi on a network. [[boot-options]] ===== Boot / Auto login @@ -65,7 +65,7 @@ Enable or disable the splash screen displayed at boot time ===== Power LED -If the model of Pi permits it, you can change the behaviour of the power LED using this option. +If the model of Raspberry Pi permits it, you can change the behaviour of the power LED using this option. ==== Display Options @@ -109,9 +109,9 @@ Enable/disable the CSI camera interface. [[ssh]] ===== SSH -Enable/disable remote command line access to your Pi using SSH. +Enable/disable remote command line access to your Raspberry Pi using SSH. -SSH allows you to remotely access the command line of the Raspberry Pi from another computer. SSH is disabled by default. Read more about using SSH on the xref:remote-access.adoc#ssh[SSH documentation page]. If connecting your Pi directly to a public network, you should not enable SSH unless you have set up secure passwords for all users. +SSH allows you to remotely access the command line of the Raspberry Pi from another computer. SSH is disabled by default. Read more about using SSH on the xref:remote-access.adoc#ssh[SSH documentation page]. If connecting your Raspberry Pi directly to a public network, you should not enable SSH unless you have set up secure passwords for all users. [[VNC]] ===== VNC diff --git a/documentation/asciidoc/computers/configuration/securing-the-raspberry-pi.adoc b/documentation/asciidoc/computers/configuration/securing-the-raspberry-pi.adoc index 08060bc06..2aa44b3a1 100644 --- a/documentation/asciidoc/computers/configuration/securing-the-raspberry-pi.adoc +++ b/documentation/asciidoc/computers/configuration/securing-the-raspberry-pi.adoc @@ -87,7 +87,7 @@ This command will result in a warning that the group `pi` has no more members. T === Make `sudo` Require a Password -Placing `sudo` in front of a command runs it as a superuser, and by default, that does not need a password. In general, this is not a problem. However, if your Pi is exposed to the internet and somehow becomes exploited (perhaps via a webpage exploit for example), the attacker will be able to change things that require superuser credentials, unless you have set `sudo` to require a password. +Placing `sudo` in front of a command runs it as a superuser, and by default, that does not need a password. In general, this is not a problem. However, if your Raspberry Pi is exposed to the internet and somehow becomes exploited (perhaps via a webpage exploit for example), the attacker will be able to change things that require superuser credentials, unless you have set `sudo` to require a password. To force `sudo` to require a password, enter: diff --git a/documentation/asciidoc/computers/configuration/uart.adoc b/documentation/asciidoc/computers/configuration/uart.adoc index 7eba843a5..1578cd70a 100644 --- a/documentation/asciidoc/computers/configuration/uart.adoc +++ b/documentation/asciidoc/computers/configuration/uart.adoc @@ -44,11 +44,11 @@ The Raspberry Pi 4B and 400 have an additional four PL011s, which are disabled b | PL011 |=== -=== CM, CM 3, CM 3+ and CM 4 +=== CM1, CM3, CM3+ and CM4 The first generation Compute Module, together with Compute Module 3 and Compute Module 3+ each have two UARTs, while Compute Module 4 has six UARTs as described above. -On all models of compute module, the UARTs are disabled by default and must be explicitly enabled using a device tree overlay. You must also specify which GPIO pins to use, for example: +On all models of Compute Module, the UARTs are disabled by default and must be explicitly enabled using a device tree overlay. You must also specify which GPIO pins to use, for example: ---- dtoverlay=uart1,txd1_pin=32,rxd1_pin=33 @@ -165,27 +165,27 @@ By default, the primary UART is assigned to the Linux console. If you wish to us . Select option P6 - Serial Port. . At the prompt `Would you like a login shell to be accessible over serial?` answer 'No' . At the prompt `Would you like the serial port hardware to be enabled?` answer 'Yes' -. Exit raspi-config and reboot the Pi for changes to take effect. +. Exit raspi-config and reboot the Raspberry Pi for changes to take effect. === Enabling Early Console for Linux Although the Linux kernel starts the UARTs relatively early in the boot process, it is still long after some critical bits of infrastructure have been set up. A failure in those early stages can be hard to diagnose without access to the kernel log messages from that time. To enable `earlycon` support for one of the UARTs, add one of the following options to `cmdline.txt`, depending on which UART is the primary: -For Pi 4, 400 and Compute Module 4: +For Raspberry Pi 4, 400 and Compute Module 4: ---- earlycon=uart8250,mmio32,0xfe215040 earlycon=pl011,mmio32,0xfe201000 ---- -For Pi 2, Pi 3 and Compute Module 3: +For Raspberry Pi 2, Pi 3 and Compute Module 3: ---- earlycon=uart8250,mmio32,0x3f215040 earlycon=pl011,mmio32,0x3f201000 ---- -For Pi 1, Pi Zero and Compute Module: +For Raspberry Pi 1, Pi Zero and Compute Module 1: ---- earlycon=uart8250,mmio32,0x20215040 @@ -194,7 +194,7 @@ earlycon=pl011,mmio32,0x20201000 The baudrate defaults to 115200bps. -NOTE: Selecting the wrong early console can prevent the Pi from booting. +NOTE: Selecting the wrong early console can prevent the Raspberry Pi from booting. === UARTs and Device Tree @@ -204,7 +204,7 @@ Various UART Device Tree overlay definitions can be found in the https://github. `miniuart-bt` switches the Bluetooth function to use the mini UART, and makes the first PL011 (UART0) the primary UART. Note that this may reduce the maximum usable baud rate (see mini UART limitations below). You must also set the VPU core clock to a fixed frequency using either `force_turbo=1` or `core_freq=250`. -The overlays `uart2`, `uart3`, `uart4`, and `uart5` are used to enable the four additional UARTs on the Pi 4. There are other UART-specific overlays in the folder. Refer to `/boot/overlays/README` for details on Device Tree overlays, or run `dtoverlay -h overlay-name` for descriptions and usage information. +The overlays `uart2`, `uart3`, `uart4`, and `uart5` are used to enable the four additional UARTs on the Raspberry Pi 4. There are other UART-specific overlays in the folder. Refer to `/boot/overlays/README` for details on Device Tree overlays, or run `dtoverlay -h overlay-name` for descriptions and usage information. You add a line to the `config.txt` file to apply a xref:configuration.adoc#device-trees-overlays-and-parameters[Device Tree overlay]. Note that the `-overlay.dts` part of the filename is removed. For example: diff --git a/documentation/asciidoc/computers/configuration/use-a-proxy.adoc b/documentation/asciidoc/computers/configuration/use-a-proxy.adoc index 50f82a749..834cff8f8 100644 --- a/documentation/asciidoc/computers/configuration/use-a-proxy.adoc +++ b/documentation/asciidoc/computers/configuration/use-a-proxy.adoc @@ -1,6 +1,6 @@ == Using a Proxy Server -If you want your Raspberry Pi to access the Internet via a proxy server (perhaps from a school or other workplace), you will need to configure your Pi to use the server before you can get online. +If you want your Raspberry Pi to access the Internet via a proxy server (perhaps from a school or other workplace), you will need to configure your Raspberry Pi to use the server before you can get online. You will need: @@ -25,7 +25,7 @@ export http_proxy="http://proxyipaddress:proxyport" Replace `proxyipaddress` and `proxyport` with the IP address and port of your proxy. -NOTE: if your proxy requires a username and password, add them using the following format: +NOTE: If your proxy requires a username and password, add them using the following format: ---- export http_proxy="http://username:password@proxyipaddress:proxyport" @@ -37,7 +37,7 @@ Enter the same information for the environment variable `https_proxy`: export https_proxy="http://username:password@proxyipaddress:proxyport" ---- -Create the `no_proxy` environment variable, which is a comma-separated list of addresses your Pi should not use the proxy for: +Create the `no_proxy` environment variable, which is a comma-separated list of addresses your Raspberry Pi should not use the proxy for: ---- export no_proxy="localhost, 127.0.0.1" diff --git a/documentation/asciidoc/computers/getting-started/sd-cards.adoc b/documentation/asciidoc/computers/getting-started/sd-cards.adoc index 4a74f7010..e01755e3c 100644 --- a/documentation/asciidoc/computers/getting-started/sd-cards.adoc +++ b/documentation/asciidoc/computers/getting-started/sd-cards.adoc @@ -11,8 +11,6 @@ We recommend using an SD card of 8GB or greater capacity with Raspberry Pi OS. I === Troubleshooting -We recommend buying anPi SD card from one of our official resellers. The official SD cards are micro SD cards and are supplied with an adaptor which allows them to be used in a full-sized SD card slot. - If you are having problems with your SD card: * Make sure you are using a genuine SD card. The best way to avoid fake SD cards is to always buy from a reputable supplier. diff --git a/documentation/asciidoc/computers/getting-started/setting-up.adoc b/documentation/asciidoc/computers/getting-started/setting-up.adoc index 9422e7799..45c8c9965 100644 --- a/documentation/asciidoc/computers/getting-started/setting-up.adoc +++ b/documentation/asciidoc/computers/getting-started/setting-up.adoc @@ -16,7 +16,7 @@ A good quality xref:raspberry-pi.adoc#power-supply[power supply]. We recommend the official Raspberry Pi Power Supply which has been specifically designed to consistently provide +5.1V despite rapid fluctuations in current draw. Those fluctuations in demand is something that happens a lot with when you’re using peripherals with the Raspberry Pi, and something that other supplies—designed to provide consistent current for charging cellphones—usually don’t cope with all that well. It also has an attached micro USB cable, which means that you don’t accidentally use a poor quality cable—something that can be an issue. -For the Raspberry Pi 4, Model B and Raspberry Pi 400 you should use the https://www.raspberrypi.com/products/type-c-power-supply/[type C power supply]; for all other models you should use the https://www.raspberrypi.com/products/micro-usb-power-supply/[micro USB power supply]. +For the Raspberry Pi 4 Model B and Raspberry Pi 400 you should use the https://www.raspberrypi.com/products/type-c-power-supply/[type C power supply]; for all other models you should use the https://www.raspberrypi.com/products/micro-usb-power-supply/[micro USB power supply]. Finally you'll need an xref:getting-started.adoc#sd-cards[SD card]; we recommend a minimum of 8GB micro SD card, and to use the https://www.raspberrypi.com/software/[Raspberry Pi Imager] to install an operating system onto it. diff --git a/documentation/asciidoc/computers/os/graphics-utilities.adoc b/documentation/asciidoc/computers/os/graphics-utilities.adoc index 99b72763e..88acf0ae4 100644 --- a/documentation/asciidoc/computers/os/graphics-utilities.adoc +++ b/documentation/asciidoc/computers/os/graphics-utilities.adoc @@ -230,7 +230,7 @@ Reports on the amount of memory addressable by the ARM and the GPU. To show the ===== codec_enabled [type] -Reports whether the specified CODEC type is enabled. Possible options for type are AGIF, FLAC, H263, H264, MJPA, MJPB, MJPG, *MPG2*, MPG4, MVC0, PCM, THRA, VORB, VP6, VP8, *WMV9*, *WVC1*. Those highlighted currently require a paid for licence (see the xref:config_txt.adoc#licence-key-and-codec-options[this config.txt section] for more info), except on the Pi 4 and 400, where these hardware codecs are disabled in preference to software decoding, which requires no licence. Note that because the H.265 HW block on the Raspberry Pi 4 and 400 is not part of the VideoCore GPU, its status is not accessed via this command. +Reports whether the specified CODEC type is enabled. Possible options for type are AGIF, FLAC, H263, H264, MJPA, MJPB, MJPG, *MPG2*, MPG4, MVC0, PCM, THRA, VORB, VP6, VP8, *WMV9*, *WVC1*. Those highlighted currently require a paid for licence (see the xref:config_txt.adoc#licence-key-and-codec-options[this config.txt section] for more info), except on the Raspberry Pi 4 and 400, where these hardware codecs are disabled in preference to software decoding, which requires no licence. Note that because the H.265 HW block on the Raspberry Pi 4 and 400 is not part of the VideoCore GPU, its status is not accessed via this command. ===== get_lcd_info diff --git a/documentation/asciidoc/computers/os/playing-audio-and-video.adoc b/documentation/asciidoc/computers/os/playing-audio-and-video.adoc index 2b0ecfe50..9905ae33c 100644 --- a/documentation/asciidoc/computers/os/playing-audio-and-video.adoc +++ b/documentation/asciidoc/computers/os/playing-audio-and-video.adoc @@ -93,7 +93,7 @@ omxplayer example.mp4 This will play the `example.mp4` in full screen. Hit `Ctrl + C` to exit. -On the Pi 4, hardware support for MPEG2 and VC-1 codecs has been removed, so we recommend the use of the VLC application, which supports these formats in software. In addition, VLC has hardware support for H264 and the new HEVC codec. +On the Raspberry Pi 4, hardware support for MPEG2 and VC-1 codecs has been removed, so we recommend the use of the VLC application, which supports these formats in software. In addition, VLC has hardware support for H264 and the new HEVC codec. ==== An Example Video @@ -104,7 +104,7 @@ A video sample of the animated film _Big Buck Bunny_ is available on your Raspbe omxplayer /opt/vc/src/hello_pi/hello_video/test.h264 ---- -On a Pi 4, use the following command for H264 files: +On a Raspberry Pi 4, use the following command for H264 files: [,bash] ---- diff --git a/documentation/asciidoc/computers/os/updating.adoc b/documentation/asciidoc/computers/os/updating.adoc index 64096650b..bde7cf7a9 100644 --- a/documentation/asciidoc/computers/os/updating.adoc +++ b/documentation/asciidoc/computers/os/updating.adoc @@ -10,7 +10,7 @@ The easiest way to manage installing, upgrading, and removing software is using ==== Keeping your Operating System up to Date -APT keeps a list of software sources on your Pi in a file at `/etc/apt/sources.list`. Before installing software, you should update your package list with `apt update`. Go ahead and open a Terminal window and type: +APT keeps a list of software sources on your Raspberry Pi in a file at `/etc/apt/sources.list`. Before installing software, you should update your package list with `apt update`. Go ahead and open a Terminal window and type: [,bash] ---- @@ -32,7 +32,7 @@ However, there are occasional changes made in the Raspberry Pi OS image that req NOTE: The kernel and firmware are installed as a Debian package, and so will also get updates when using the procedure above. These packages are updated infrequently and after extensive testing. -If moving an existing SD card to a new Raspberry Pi model (for example the Pi Zero 2 W), you may also need to update the kernel and the firmware first using the instructions above. +If moving an existing SD card to a new Raspberry Pi model (for example the Raspberry Pi Zero 2 W), you may also need to update the kernel and the firmware first using the instructions above. ==== Running Out of Space diff --git a/documentation/asciidoc/computers/os/using-gpio.adoc b/documentation/asciidoc/computers/os/using-gpio.adoc index b220c3e4f..def48c124 100644 --- a/documentation/asciidoc/computers/os/using-gpio.adoc +++ b/documentation/asciidoc/computers/os/using-gpio.adoc @@ -1,6 +1,6 @@ == GPIO and the 40-pin Header -A powerful feature of the Raspberry Pi is the row of GPIO (general-purpose input/output) pins along the top edge of the board. A 40-pin GPIO header is found on all current Raspberry Pi boards (unpopulated on Pi Zero and Pi Zero W). Prior to the Pi 1 Model B+ (2014), boards comprised a shorter 26-pin header. +A powerful feature of the Raspberry Pi is the row of GPIO (general-purpose input/output) pins along the top edge of the board. A 40-pin GPIO header is found on all current Raspberry Pi boards (unpopulated on Raspberry Pi Zero, Raspberry Pi Zero W and Raspberry Pi Zero 2 W). Prior to the Raspberry Pi 1 Model B+ (2014), boards comprised a shorter 26-pin header. image::images/GPIO-Pinout-Diagram-2.png[GPIO pins] @@ -8,19 +8,19 @@ Any of the GPIO pins can be designated (in software) as an input or output pin a image::images/GPIO.png[GPIO layout] -NOTE: the numbering of the GPIO pins is not in numerical order; GPIO pins 0 and 1 are present on the board (physical pins 27 and 28) but are reserved for advanced use (see below). +NOTE: The numbering of the GPIO pins is not in numerical order; GPIO pins 0 and 1 are present on the board (physical pins 27 and 28) but are reserved for advanced use (see below). === Voltages -Two 5V pins and two 3V3 pins are present on the board, as well as a number of ground pins (0V), which are unconfigurable. The remaining pins are all general purpose 3V3 pins, meaning outputs are set to 3V3 and inputs are 3V3-tolerant. +Two 5V pins and two 3.3V pins are present on the board, as well as a number of ground pins (0V), which are unconfigurable. The remaining pins are all general purpose 3.3V pins, meaning outputs are set to 3.3V and inputs are 3.3V-tolerant. === Outputs -A GPIO pin designated as an output pin can be set to high (3V3) or low (0V). +A GPIO pin designated as an output pin can be set to high (3.3V) or low (0V). === Inputs -A GPIO pin designated as an input pin can be read as high (3V3) or low (0V). This is made easier with the use of internal pull-up or pull-down resistors. Pins GPIO2 and GPIO3 have fixed pull-up resistors, but for other pins this can be configured in software. +A GPIO pin designated as an input pin can be read as high (3.3V) or low (0V). This is made easier with the use of internal pull-up or pull-down resistors. Pins GPIO2 and GPIO3 have fixed pull-up resistors, but for other pins this can be configured in software. === More @@ -46,7 +46,7 @@ image::images/gpiozero-pinout.png[] For more details on the advanced capabilities of the GPIO pins see gadgetoid's http://pinout.xyz/[interactive pinout diagram]. -WARNING: while connecting up simple components to the GPIO pins is perfectly safe, it's important to be careful how you wire things up. LEDs should have resistors to limit the current passing through them. Do not use 5V for 3V3 components. Do not connect motors directly to the GPIO pins, instead use an https://projects.raspberrypi.org/en/projects/physical-computing/14[H-bridge circuit or a motor controller board]. +WARNING: While connecting up simple components to the GPIO pins is perfectly safe, it's important to be careful how you wire things up. LEDs should have resistors to limit the current passing through them. Do not use 5V for 3.3V components. Do not connect motors directly to the GPIO pins, instead use an https://projects.raspberrypi.org/en/projects/physical-computing/14[H-bridge circuit or a motor controller board]. === Permissions diff --git a/documentation/asciidoc/computers/os/using-python.adoc b/documentation/asciidoc/computers/os/using-python.adoc index a11d7550a..72f5142e3 100644 --- a/documentation/asciidoc/computers/os/using-python.adoc +++ b/documentation/asciidoc/computers/os/using-python.adoc @@ -4,7 +4,7 @@ Python is a powerful programming language that's easy to use easy to read and wr === Thonny -The easiest introduction to Python is through https://thonny.org/[Thonny], a Python 3 development environment. You can open Thonny from the Desktop or applications menu. +The easiest introduction to Python is through https://thonny.org/[Thonny], a Python 3 development environment. You can open Thonny from the desktop or applications menu. Thonny gives you a REPL (Read-Evaluate-Print-Loop), which is a prompt you can enter Python commands into. Because it's a REPL, you even get the output of commands printed to the screen without using `print`. In the Thonny application, this is called the Shell window. @@ -346,7 +346,7 @@ sudo pip3 install simplejson ===== piwheels -The official Python Package Index (PyPI) hosts files uploaded by package maintainers. Some packages require compilation (compiling C/{cpp} or similar code) in order to install them, which can be a time-consuming task, particlarly on the single-core Raspberry Pi 1 or Pi Zero. +The official Python Package Index (PyPI) hosts files uploaded by package maintainers. Some packages require compilation (compiling C/{cpp} or similar code) in order to install them, which can be a time-consuming task, particlarly on the single-core Raspberry Pi 1 or Raspberry Pi Zero. piwheels is a service providing pre-compiled packages (called _Python wheels_) ready for use on the Raspberry Pi. Raspberry Pi OS is pre-configured to use piwheels for pip. Read more about the piwheels project at https://www.piwheels.org/[www.piwheels.org]. diff --git a/documentation/asciidoc/computers/processors/bcm2711.adoc b/documentation/asciidoc/computers/processors/bcm2711.adoc index bf52f1633..80cc3bcf2 100644 --- a/documentation/asciidoc/computers/processors/bcm2711.adoc +++ b/documentation/asciidoc/computers/processors/bcm2711.adoc @@ -2,7 +2,7 @@ This is the Broadcom chip used in the Raspberry Pi 4 Model B, the Raspberry Pi 400, and the Raspberry Pi Compute Module 4. The architecture of the BCM2711 is a considerable upgrade on that used by the SoCs in earlier Raspberry Pi models. It continues the quad-core CPU design of the BCM2837, but uses the more powerful ARM A72 core. It has a greatly improved GPU feature set with much faster input/output, due to the incorporation of a PCIe link that connects the USB 2 and USB 3 ports, and a natively attached Ethernet controller. It is also capable of addressing more memory than the SoCs used before. -The ARM cores are capable of running at up to 1.5 GHz, making the Pi 4 about 50% faster than the Raspberry Pi 3B+. The new VideoCore VI 3D unit now runs at up to 500 MHz. The ARM cores are 64-bit, and while the VideoCore is 32-bit, there is a new Memory Management Unit, which means it can access more memory than previous versions. +The ARM cores are capable of running at up to 1.5 GHz, making the Raspberry Pi 4 about 50% faster than the Raspberry Pi 3B+. The new VideoCore VI 3D unit now runs at up to 500 MHz. The ARM cores are 64-bit, and while the VideoCore is 32-bit, there is a new Memory Management Unit, which means it can access more memory than previous versions. The BCM2711 chip continues to use the heat spreading technology started with the BCM2837B0, which provides better thermal management. diff --git a/documentation/asciidoc/computers/processors/bcm2837b0.adoc b/documentation/asciidoc/computers/processors/bcm2837b0.adoc index d69766a0b..3589bdf10 100644 --- a/documentation/asciidoc/computers/processors/bcm2837b0.adoc +++ b/documentation/asciidoc/computers/processors/bcm2837b0.adoc @@ -1,6 +1,6 @@ == BCM2837B0 -This is the Broadcom chip used in the Raspberry Pi 3 Models A+, B+, and the Raspberry Pi Compute Module 3+. The underlying architecture of the BCM2837B0 is identical to the BCM2837 chip used in other versions of the Pi. The ARM core hardware is the same, only the frequency is rated higher. +This is the Broadcom chip used in the Raspberry Pi 3 Models A+, B+, and the Raspberry Pi Compute Module 3+. The underlying architecture of the BCM2837B0 is identical to the BCM2837 chip used in other versions of the Raspberry Pi. The ARM core hardware is the same, only the frequency is rated higher. The ARM cores are capable of running at up to 1.4GHz, making the 3B+/3A+ about 17% faster than the original Raspberry Pi 3. The VideoCore IV runs at 400MHz. The ARM core is 64-bit, while the VideoCore IV is 32-bit. diff --git a/documentation/asciidoc/computers/raspberry-pi/bcm2711-bootloader.adoc b/documentation/asciidoc/computers/raspberry-pi/bcm2711-bootloader.adoc index 0ed43509a..112dfd31b 100644 --- a/documentation/asciidoc/computers/raspberry-pi/bcm2711-bootloader.adoc +++ b/documentation/asciidoc/computers/raspberry-pi/bcm2711-bootloader.adoc @@ -35,7 +35,7 @@ Default: `1` If `1` and `WAKE_ON_GPIO=0` then `sudo halt` will switch off all PMIC outputs. This is lowest possible power state for halt but may cause problems with some HATs because 5V will still be on. `GLOBAL_EN` must be shorted to ground to boot. -Pi 400 has a dedicated power button which operates even if the processor is switched off. This behaviour is enabled by default, however, `WAKE_ON_GPIO=2` may be set to use an external GPIO power button instead of the dedicated power button. +Raspberry Pi 400 has a dedicated power button which operates even if the processor is switched off. This behaviour is enabled by default, however, `WAKE_ON_GPIO=2` may be set to use an external GPIO power button instead of the dedicated power button. Default: `0` @@ -75,7 +75,7 @@ The BOOT_ORDER property defines the sequence for the different boot modes. It is | 0x5 | BCM-USB-MSD -| USB 2.0 boot from USB Type C socket (CM4: USB type A socket on CM IO board). +| USB 2.0 boot from USB Type C socket (CM4: USB type A socket on CM4IO board). | 0x6 | NVME @@ -166,8 +166,8 @@ Default: "" [[TFTP_PREFIX]] ==== TFTP_PREFIX -In order to support unique TFTP boot directories for each Pi the bootloader prefixes the filenames with a device specific directory. If neither start4.elf nor start.elf are found in the prefixed directory then the prefix is cleared. -On earlier models the serial number is used as the prefix, however, on Pi 4 the MAC address is no longer generated from the serial number making it difficult to automatically create tftpboot directories on the server by inspecting DHCPDISCOVER packets. To support this the TFTP_PREFIX may be customized to either be the MAC address, a fixed value or the serial number (default). +In order to support unique TFTP boot directories for each Raspberry Pi the bootloader prefixes the filenames with a device specific directory. If neither start4.elf nor start.elf are found in the prefixed directory then the prefix is cleared. +On earlier models the serial number is used as the prefix, however, on Raspberry Pi 4 the MAC address is no longer generated from the serial number making it difficult to automatically create tftpboot directories on the server by inspecting DHCPDISCOVER packets. To support this the TFTP_PREFIX may be customized to either be the MAC address, a fixed value or the serial number (default). |=== | Value | Description @@ -203,7 +203,7 @@ Default: `Raspberry Pi Boot` ==== DHCP_OPTION97 In earlier releases the client GUID (Option97) was just the serial number repeated 4 times. By default, the new GUID format is -the concatenation of the fourcc for RPi4 (0x34695052 - little endian), the board revision (e.g. 0x00c03111) (4-bytes), the least significant 4 bytes of the mac address and the 4-byte serial number. +the concatenation of the fourcc for `RPi4` (0x34695052 - little endian), the board revision (e.g. 0x00c03111) (4-bytes), the least significant 4 bytes of the mac address and the 4-byte serial number. This is intended to be unique but also provide structured information to the DHCP server, allowing Raspberry Pi 4 computers to be identified without relying upon the Ethernet MAC OUID. Specify DHCP_OPTION97=0 to revert the old behaviour or a non-zero hex-value to specify a custom 4-byte prefix. @@ -304,7 +304,7 @@ In order to simplify parsing, the bootloader requires every field separator to b * dst_ip - 255.255.255.255 * dst_mac - 00:00:00:00:00 -One way to view the data is to connect the test Pi 4 to another Pi running WireShark and select "`udp.srcport == 6665`" as a filter and select `+Analyze -> Follow -> UDP stream+` to view as an ASCII log. +One way to view the data is to connect the test Raspberry Pi 4 to another Raspberry Pi running WireShark and select "`udp.srcport == 6665`" as a filter and select `+Analyze -> Follow -> UDP stream+` to view as an ASCII log. `NETCONSOLE` should not be enabled by default because it may cause network problems. It can be enabled on demand via a GPIO filter e.g. @@ -361,7 +361,7 @@ If the `VL805` property is set to `1` then the bootloader will search for a VL80 * On Compute Module 4 the bootloader never writes to the dedicated VL805 SPI EEPROM. This option just configures the controller to load the firmware from SDRAM. * Do not use this option if the VL805 XHCI controller has a dedicated EEPROM. It will fail to initialise because the VL805 ROM will attempt to use a dedicated SPI EEPROM if fitted. -* The embedded VL805 firmware assumes the same USB configuration as Pi4B (2 USB3 ports and 4 USB 2 ports). There is no support for loading alternate VL805 FW images, a dedicated VL805 SPI EEPROM should be used instead for such configurations. +* The embedded VL805 firmware assumes the same USB configuration as Raspberry Pi 4B (2 USB3 ports and 4 USB 2 ports). There is no support for loading alternate VL805 FW images, a dedicated VL805 SPI EEPROM should be used instead for such configurations. Default: `0` @@ -470,7 +470,7 @@ Default: `-1` [[bootloader_update]] ==== bootloader_update -This option may be set to 0 to block self-update without requiring the EEPROM configuration to be updated. This is sometimes useful when updating multiple Pis via network boot because this option can be controlled per Raspberry Pi (e.g. via a serial number filter in `config.txt`). +This option may be set to 0 to block self-update without requiring the EEPROM configuration to be updated. This is sometimes useful when updating multiple Raspberry Pis via network boot because this option can be controlled per Raspberry Pi (e.g. via a serial number filter in `config.txt`). Default: `1` diff --git a/documentation/asciidoc/computers/raspberry-pi/boot-diagnostics-rpi4.adoc b/documentation/asciidoc/computers/raspberry-pi/boot-diagnostics-rpi4.adoc index 79999b4e2..a05d6091b 100644 --- a/documentation/asciidoc/computers/raspberry-pi/boot-diagnostics-rpi4.adoc +++ b/documentation/asciidoc/computers/raspberry-pi/boot-diagnostics-rpi4.adoc @@ -8,7 +8,7 @@ This diagnostics page will also appear if the bootloader is unable to boot from Once the diagnostics page is displayed, a reboot is only possible by power cycling the device (i.e. unplug then re-plug the power supply). -The top line describes the model of Pi and its memory capacity. The QR code is a link to the https://www.raspberrypi.com/software/[Downloads Page]. +The top line describes the model of Raspberry Pi and its memory capacity. The QR code is a link to the https://www.raspberrypi.com/software/[Downloads Page]. The diagnostic information is as follows: diff --git a/documentation/asciidoc/computers/raspberry-pi/boot-gpio.adoc b/documentation/asciidoc/computers/raspberry-pi/boot-gpio.adoc index 740a75cca..4c49a3a6f 100644 --- a/documentation/asciidoc/computers/raspberry-pi/boot-gpio.adoc +++ b/documentation/asciidoc/computers/raspberry-pi/boot-gpio.adoc @@ -2,7 +2,7 @@ NOTE: GPIO boot mode is only available on the Raspberry Pi 3A+, 3B, 3B+, Compute Module 3 and 3+. -The Raspberry Pi can be configured to allow the boot mode to be selected at power on using hardware attached to the GPIO connector: this is GPIO boot mode. This is done by setting bits in the OTP memory of the SoC. Once the bits are set, they permanently allocate 5 GPIOs to allow this selection to be made. Once the OTP bits are set they cannot be unset so you should think carefully about enabling this, since those 5 GPIO lines will always control booting. Although you can use the GPIOs for some other function once the Pi has booted, you must set them up so that they enable the desired boot modes when the Pi boots. +The Raspberry Pi can be configured to allow the boot mode to be selected at power on using hardware attached to the GPIO connector: this is GPIO boot mode. This is done by setting bits in the OTP memory of the SoC. Once the bits are set, they permanently allocate 5 GPIOs to allow this selection to be made. Once the OTP bits are set they cannot be unset so you should think carefully about enabling this, since those 5 GPIO lines will always control booting. Although you can use the GPIOs for some other function once the Raspberry Pi has booted, you must set them up so that they enable the desired boot modes when the Raspberry Pi boots. To enable GPIO boot mode, add the following line to the `config.txt` file: @@ -10,9 +10,9 @@ To enable GPIO boot mode, add the following line to the `config.txt` file: program_gpio_bootmode=n ---- -Where n is the bank of GPIOs which you wish to use. Then reboot the Pi once to program the OTP with this setting. Bank 1 is GPIOs 22-26, bank 2 is GPIOs 39-43. Unless you have a Compute Module, you must use bank 1: the GPIOs in bank 2 are only available on the Compute Module. Because of the way the OTP bits are arranged, if you first program GPIO boot mode for bank 1, you then have the option of selecting bank 2 later. The reverse is not true: once bank 2 has been selected for GPIO boot mode, you cannot select bank 1. +Where n is the bank of GPIOs which you wish to use. Then reboot the Raspberry Pi once to program the OTP with this setting. Bank 1 is GPIOs 22-26, bank 2 is GPIOs 39-43. Unless you have a Compute Module, you must use bank 1: the GPIOs in bank 2 are only available on the Compute Module. Because of the way the OTP bits are arranged, if you first program GPIO boot mode for bank 1, you then have the option of selecting bank 2 later. The reverse is not true: once bank 2 has been selected for GPIO boot mode, you cannot select bank 1. -Once GPIO boot mode is enabled, the Raspberry Pi will no longer boot. You must pull up at least one boot mode GPIO pin in order for the Pi to boot. +Once GPIO boot mode is enabled, the Raspberry Pi will no longer boot. You must pull up at least one boot mode GPIO pin in order for the Raspberry Pi to boot. === Pin Assignments diff --git a/documentation/asciidoc/computers/raspberry-pi/boot-msd.adoc b/documentation/asciidoc/computers/raspberry-pi/boot-msd.adoc index ee0c067cf..695db36ec 100644 --- a/documentation/asciidoc/computers/raspberry-pi/boot-msd.adoc +++ b/documentation/asciidoc/computers/raspberry-pi/boot-msd.adoc @@ -24,7 +24,7 @@ Please see the xref:compute-module.adoc#flashing-the-compute-module-emmc[Flashin The Raspberry Pi 3B+ supports USB mass storage boot out of the box. -=== Raspberry Pi 2B, 3A+, 3B, CM 3, 3+, Zero 2 W +=== Raspberry Pi 2B, 3A+, 3B, CM3, CM3+, Zero 2 W On the Raspberry Pi 2B v1.2, 3A+, 3B, Zero 2 W, and Compute Module 3, 3+ you must first enable xref:raspberry-pi.adoc#usb-host-boot-mode[USB host boot mode]. This is to allow USB mass storage boot, and xref:raspberry-pi.adoc#network-booting[network boot]. Note that network boot is not supported on the Raspberry Pi 3A+ or Zero 2 W. @@ -32,7 +32,7 @@ To enable USB host boot mode, the Raspberry Pi needs to be booted from an SD car IMPORTANT: Any change you make to the OTP is permanent and cannot be undone. -NOTE: On the Raspberry Pi 3A+, setting the OTP bit to enable USB host boot mode will permanently prevent that Pi from booting in USB device mode. +NOTE: On the Raspberry Pi 3A+, setting the OTP bit to enable USB host boot mode will permanently prevent that Raspberry Pi from booting in USB device mode. You can use any SD card running Raspberry Pi OS to program the OTP bit. @@ -55,7 +55,7 @@ vcgencmd otp_dump | grep 17: 17:3020000a ---- -Check that the output `0x3020000a` is shown. If it is not, then the OTP bit has not been successfully programmed. In this case, go through the programming procedure again. If the bit is still not set, this may indicate a fault in the Pi hardware itself. +Check that the output `0x3020000a` is shown. If it is not, then the OTP bit has not been successfully programmed. In this case, go through the programming procedure again. If the bit is still not set, this may indicate a fault in the Raspberry Pi hardware itself. If you wish, you can remove the `program_usb_boot_mode` line from `config.txt`, so that if you put the SD card into another Raspberry Pi, it won't program USB host boot mode. Make sure there is no blank line at the end of `config.txt`. @@ -65,23 +65,23 @@ You can now boot from a USB mass storage device in the same way as booting from The xref:getting-started.adoc#installing-the-operating-system[procedure] is the same as for SD cards - simply image the USB storage device with the operating system image. -After preparing the storage device, connect the drive to the Raspberry Pi and power up the Pi, being aware of the extra USB power requirements of the external drive. -After five to ten seconds, the Raspberry Pi should begin booting and show the rainbow splash screen on an attached display. Make sure that you do not have an SD card inserted in the Pi, since if you do, it will boot from that first. +After preparing the storage device, connect the drive to the Raspberry Pi and power up the Raspberry Pi, being aware of the extra USB power requirements of the external drive. +After five to ten seconds, the Raspberry Pi should begin booting and show the rainbow splash screen on an attached display. Make sure that you do not have an SD card inserted in the Raspberry Pi, since if you do, it will boot from that first. See the xref:raspberry-pi.adoc#raspberry-pi-boot-modes[bootmodes documentation] for the boot sequence and alternative boot modes (network, USB device, GPIO or SD boot). === Known Issues -IMPORTANT: These do *not* apply to Raspberry Pi 4, Model B. +IMPORTANT: These do *not* apply to Raspberry Pi 4 Model B. * The default timeout for checking bootable USB devices is 2 seconds. Some flash drives and hard disks power up too slowly. It is possible to extend this timeout to five seconds (add a new file `timeout` to the SD card), but note that some devices take even longer to respond. * Some flash drives have a very specific protocol requirement that is not handled by the bootcode and may thus be incompatible. === Special `bootcode.bin`-only Boot Mode -IMPORTANT: This do *not* apply to Raspberry Pi 4, Model B. +IMPORTANT: This does *not* apply to Raspberry Pi 4 Model B. -If you are unable to use a particular USB device to boot your Raspberry Pi, an alternative for the Pi 2B v1.2, 3A+, 3B and 3B+ is to use the special xref:raspberry-pi.adoc#raspberry-pi-boot-modes[bootcode.bin-only] boot mode. The Raspberry Pi will still boot from the SD card, but `bootcode.bin` is the only file read from it. +If you are unable to use a particular USB device to boot your Raspberry Pi, an alternative for the Raspberry Pi 2B v1.2, 3A+, 3B and 3B+ is to use the special xref:raspberry-pi.adoc#raspberry-pi-boot-modes[bootcode.bin-only] boot mode. The Raspberry Pi will still boot from the SD card, but `bootcode.bin` is the only file read from it. === Hardware Compatibility diff --git a/documentation/asciidoc/computers/raspberry-pi/boot-net.adoc b/documentation/asciidoc/computers/raspberry-pi/boot-net.adoc index 2065fb4e4..6e28d260a 100644 --- a/documentation/asciidoc/computers/raspberry-pi/boot-net.adoc +++ b/documentation/asciidoc/computers/raspberry-pi/boot-net.adoc @@ -1,6 +1,6 @@ == Network Booting -This section describes how network booting works on the Raspberry Pi 3B, 3B+ and 2B v1.2. On the Raspberry Pi 4 network booting is implemented in the second stage bootloader in the EEPROM. Please see the xref:raspberry-pi.adoc#raspberry-pi-4-bootloader-configuration[Pi 4 Bootloader Configuration] page for more information. +This section describes how network booting works on the Raspberry Pi 3B, 3B+ and 2B v1.2. On the Raspberry Pi 4 network booting is implemented in the second stage bootloader in the EEPROM. Please see the xref:raspberry-pi.adoc#raspberry-pi-4-bootloader-configuration[Raspberry Pi 4 Bootloader Configuration] page for more information. We also have a xref:remote-access.adoc#network-boot-your-raspberry-pi[tutorial about setting up a network boot system]. Network booting works only for the wired adapter built into the above models of Raspberry Pi. Booting over wireless LAN is not supported, nor is booting from any other wired network device. To network boot, the boot ROM does the following: @@ -14,11 +14,11 @@ To network boot, the boot ROM does the following: * TFTP RRQ 'bootcode.bin' ** File not found: Server replies with TFTP error response with textual error message ** File exists: Server will reply with the first block (512 bytes) of data for the file with a block number in the header - *** Pi replies with TFTP ACK packet containing the block number, and repeats until the last block which is not 512 bytes + *** Raspberry Pi replies with TFTP ACK packet containing the block number, and repeats until the last block which is not 512 bytes * TFTP RRQ 'bootsig.bin' ** This will normally result in an error `file not found`. This is to be expected, and TFTP boot servers should be able to handle it. -From this point the `bootcode.bin` code continues to load the system. The first file it will try to access is [`serial_number`]/start.elf. If this does not result in an error then any other files to be read will be pre-pended with the `serial_number`. This is useful because it enables you to create separate directories with separate start.elf / kernels for your Pis +From this point the `bootcode.bin` code continues to load the system. The first file it will try to access is [`serial_number`]/start.elf. If this does not result in an error then any other files to be read will be pre-pended with the `serial_number`. This is useful because it enables you to create separate directories with separate start.elf / kernels for your Raspberry Pis. To get the serial number for the device you can either try this boot mode and see what file is accessed using tcpdump / wireshark, or you can run a standard Raspberry Pi OS SD card and `cat /proc/cpuinfo`. If you put all your files into the root of your tftp directory then all following files will be accessed from there. @@ -33,7 +33,7 @@ The first thing to check is that the OTP bit is correctly programmed. To do this ---- If row 17 contains `3020000a` then the OTP is correctly programmed. You should now be able to remove the SD card, plug in Ethernet, -and then the Ethernet LEDs should light up around 5 seconds after the Pi powers up. +and then the Ethernet LEDs should light up around 5 seconds after the Raspberry Pi powers up. To capture the ethernet packets on the server, use tcpdump on the tftpboot server (or DHCP server if they are different). You will need to capture the packets there otherwise you will not be able to see packets that get sent directly because network switches are not hubs! @@ -88,7 +88,7 @@ to a bug in the boot ROM, you may need to add three spaces to the end of the str ==== TFTP file read -You will know whether the Vendor Option is correctly specified: if it is, you'll see a subsequent TFTP RRQ packet being sent. RRQs can be replied to by either the first block of data or an error saying file not found. In a couple of cases they even receive the first packet and then the transmission is aborted by the Pi (this happens when checking whether a file exists). The example below is just three packets: the original read request, the first data block (which is always 516 bytes containing a header and 512 bytes of data, although the last block is always less than 512 bytes and may be zero length), and the third packet (the ACK which contains a frame number to match the frame number in the data block). +You will know whether the Vendor Option is correctly specified: if it is, you'll see a subsequent TFTP RRQ packet being sent. RRQs can be replied to by either the first block of data or an error saying file not found. In a couple of cases they even receive the first packet and then the transmission is aborted by the Raspberry Pi (this happens when checking whether a file exists). The example below is just three packets: the original read request, the first data block (which is always 516 bytes containing a header and 512 bytes of data, although the last block is always less than 512 bytes and may be zero length), and the third packet (the ACK which contains a frame number to match the frame number in the data block). ---- 16:44:41.224964 IP (tos 0x0, ttl 128, id 0, offset 0, flags [none], proto UDP (17), length 49) @@ -105,7 +105,7 @@ There are a number of known problems with the Ethernet boot mode. Since the impl ==== DHCP requests time out after five tries -The Raspberry Pi will attempt a DHCP request five times with five seconds in between, for a total period of 25 seconds. If the server is not available to respond in this time, then the Pi will drop into a low-power state. There is no workaround for this other than bootcode.bin on an SD card. +The Raspberry Pi will attempt a DHCP request five times with five seconds in between, for a total period of 25 seconds. If the server is not available to respond in this time, then the Raspberry Pi will drop into a low-power state. There is no workaround for this other than bootcode.bin on an SD card. ==== TFTP server on separate subnet not supported @@ -137,6 +137,6 @@ Fixed in Raspberry Pi 3 Model B+. ==== DHCP request/reply/ack sequence not correctly implemented -At boot time, Raspberry Pi broadcasts a DHCPDISCOVER packet. The DHCP server replies with a DHCPOFFER packet. The Pi then continues booting without doing a DHCPREQUEST or waiting for DHCPACK. This may result in two separate devices being offered the same IP address and using it without it being properly assigned to the client. +At boot time, Raspberry Pi broadcasts a DHCPDISCOVER packet. The DHCP server replies with a DHCPOFFER packet. The Raspberry Pi then continues booting without doing a DHCPREQUEST or waiting for DHCPACK. This may result in two separate devices being offered the same IP address and using it without it being properly assigned to the client. Different DHCP servers have different behaviours in this situation. dnsmasq (depending upon settings) will hash the MAC address to determine the IP address, and ping the IP address to make sure it isn't already in use. This reduces the chances of this happening because it requires a collision in the hash. diff --git a/documentation/asciidoc/computers/raspberry-pi/boot-usb.adoc b/documentation/asciidoc/computers/raspberry-pi/boot-usb.adoc index c329aceec..d1fc8a0fa 100644 --- a/documentation/asciidoc/computers/raspberry-pi/boot-usb.adoc +++ b/documentation/asciidoc/computers/raspberry-pi/boot-usb.adoc @@ -4,9 +4,9 @@ WARNING: The default way of using a Raspberry Pi is to boot it using an SD card. There are two separate boot modes for USB; USB device boot and USB host boot. -The choice between the two boot modes is made by the firmware at boot time when it reads the OTP bits. There are two bits to control USB boot: the first enables USB device boot and is enabled by default. The second enables USB host boot; if the USB host boot mode bit is set, then the processor reads the OTGID pin to decide whether to boot as a host (driven to zero as on the Raspberry Pi Model B) or as a device (left floating). The Pi Zero has access to this pin through the OTGID pin on the USB connector, and the Compute Module has access to this pin on the edge connector. +The choice between the two boot modes is made by the firmware at boot time when it reads the OTP bits. There are two bits to control USB boot: the first enables USB device boot and is enabled by default. The second enables USB host boot; if the USB host boot mode bit is set, then the processor reads the OTGID pin to decide whether to boot as a host (driven to zero as on any Raspberry Pi Model B / B+) or as a device (left floating). The Raspberry Pi Zero has access to this pin through the OTGID pin on the USB connector, and the Compute Module has access to this pin on the edge connector. -There are also OTP bits that allow certain GPIO pins to be used for selecting which boot modes the Pi should attempt to use. +There are also OTP bits that allow certain GPIO pins to be used for selecting which boot modes the Raspberry Pi should attempt to use. NOTE: USB boot modes only available on certain models. @@ -14,7 +14,7 @@ NOTE: USB boot modes only available on certain models. NOTE: Device boot is available on Raspberry Pi Compute Module, Compute Module 3, Raspberry Pi Zero, Zero W, A, A+, and 3A+ only. -When this boot mode is activated (usually after a failure to boot from the SD card), the Raspberry Pi puts its USB port into device mode and awaits a USB reset from the host. Example code showing how the host needs to talk to the Pi can be found https://github.com/raspberrypi/usbboot[on Github]. +When this boot mode is activated (usually after a failure to boot from the SD card), the Raspberry Pi puts its USB port into device mode and awaits a USB reset from the host. Example code showing how the host needs to talk to the Raspberry Pi can be found https://github.com/raspberrypi/usbboot[on Github]. The host first sends a structure to the device down control endpoint 0. This contains the size and signature for the boot (security is not enabled, so no signature is required). Secondly, code is transmitted down endpoint 1 (bootcode.bin). Finally, the device will reply with a success code of: diff --git a/documentation/asciidoc/computers/raspberry-pi/bootflow-2711.adoc b/documentation/asciidoc/computers/raspberry-pi/bootflow-2711.adoc index 0677f74a3..f4a15f3b4 100644 --- a/documentation/asciidoc/computers/raspberry-pi/bootflow-2711.adoc +++ b/documentation/asciidoc/computers/raspberry-pi/bootflow-2711.adoc @@ -84,5 +84,5 @@ To set the `tryboot` flag add `tryboot` after the partition number in the `reboo sudo reboot '0 tryboot' ---- -`tryboot` is supported on all Raspberry Pi models, however, on Pi 4 model B revision 1.0 and 1.1 the EEPROM must not be write protected. This is because older Raspberry Pi 4B devices have to reset the power supply (losing the tryboot state) so this is stored inside the EEPROM instead. +`tryboot` is supported on all Raspberry Pi models, however, on Raspberry Pi 4 Model B revision 1.0 and 1.1 the EEPROM must not be write protected. This is because older Raspberry Pi 4B devices have to reset the power supply (losing the tryboot state) so this is stored inside the EEPROM instead. diff --git a/documentation/asciidoc/computers/raspberry-pi/bootflow-legacy.adoc b/documentation/asciidoc/computers/raspberry-pi/bootflow-legacy.adoc index 56b330110..b8541f40f 100644 --- a/documentation/asciidoc/computers/raspberry-pi/bootflow-legacy.adoc +++ b/documentation/asciidoc/computers/raspberry-pi/bootflow-legacy.adoc @@ -33,7 +33,7 @@ Next, the boot ROM checks each of the boot sources for a file called bootcode.bi **** DHCP / TFTP boot ** else (Device mode boot) *** Enable device mode and wait for host PC to enumerate - *** We reply to PC with VID: 0a5c PID: 0x2763 (Pi 1 or Pi 2) or 0x2764 (Pi 3) + *** We reply to PC with VID: 0a5c PID: 0x2763 (Raspberry Pi 1 or Raspberry Pi 2) or 0x2764 (Raspberry Pi 3) [NOTE] @@ -51,6 +51,6 @@ The primary SD card boot mode is, as standard, set to be GPIOs 49-53. It is poss NAND boot and SPI boot modes do work, although they do not yet have full GPU support. -The USB device boot mode is enabled by default at the time of manufacture, but the USB host boot mode is only enabled with `program_usb_boot_mode=1`. Once enabled, the processor will use the value of the OTGID pin on the processor to decide between the two modes. On a Raspberry Pi Model B, the OTGID pin is driven to '0' and therefore will only boot via host mode once enabled (it is not possible to boot through device mode because the LAN9515 device is in the way). +The USB device boot mode is enabled by default at the time of manufacture, but the USB host boot mode is only enabled with `program_usb_boot_mode=1`. Once enabled, the processor will use the value of the OTGID pin on the processor to decide between the two modes. On any Raspberry Pi Model B / B+, the OTGID pin is driven to '0' and therefore will only boot via host mode once enabled (it is not possible to boot through device mode because the LAN951x device is in the way). -The USB will boot as a USB device on the Pi Zero or Compute Module if the OTGID pin is left floating (when plugged into a PC for example), so you can 'squirt' the bootcode.bin into the device. The code for doing this is https://github.com/raspberrypi/usbboot[`usbboot`] and available on Github. +The USB will boot as a USB device on the Raspberry Pi Zero or Compute Module if the OTGID pin is left floating (when plugged into a PC for example), so you can 'squirt' the bootcode.bin into the device. The `usbboot` code for doing this is https://github.com/raspberrypi/usbboot[available on Github]. diff --git a/documentation/asciidoc/computers/raspberry-pi/bootmodes.adoc b/documentation/asciidoc/computers/raspberry-pi/bootmodes.adoc index 492bb0f4f..db5d2e293 100644 --- a/documentation/asciidoc/computers/raspberry-pi/bootmodes.adoc +++ b/documentation/asciidoc/computers/raspberry-pi/bootmodes.adoc @@ -4,21 +4,21 @@ The Raspberry Pi has a number of different stages of booting. This document expl === Special `bootcode.bin`-only boot mode -USB host and Ethernet boot can be performed by BCM2837-based Raspberry Pis - that is, Pi 2B version 1.2, Pi 3B, and Pi 3B+ (Raspberry Pi 3A+ cannot net boot since it does not have a built-in Ethernet interface). In addition, all Raspberry Pi models *except Pi 4B* can use a new `bootcode.bin`-only method to enable USB host boot. +USB host and Ethernet boot can be performed by BCM2837-based Raspberry Pis - that is, Raspberry Pi 2B version 1.2, Raspberry Pi 3B, and Raspberry Pi 3B+ (Raspberry Pi 3A+ cannot net boot since it does not have a built-in Ethernet interface). In addition, all Raspberry Pi models *except Raspberry Pi 4B* can use a new `bootcode.bin`-only method to enable USB host boot. NOTE: The Raspberry Pi 4B does not use the bootcode.bin file - instead the bootloader is located in an on-board EEPROM chip. See xref:raspberry-pi.adoc#raspberry-pi-4-boot-flow[Raspberry Pi 4 Bootflow] and xref:raspberry-pi.adoc#raspberry-pi-4-boot-eeprom[SPI Boot EEPROM]. -Format an SD card as FAT32 and copy on the latest https://github.com/raspberrypi/firmware/raw/master/boot/bootcode.bin[`bootcode.bin`]. The SD card must be present in the Pi for it to boot. Once bootcode.bin is loaded from the SD card, the Pi continues booting using USB host mode. +Format an SD card as FAT32 and copy on the latest https://github.com/raspberrypi/firmware/raw/master/boot/bootcode.bin[`bootcode.bin`]. The SD card must be present in the Raspberry Pi for it to boot. Once bootcode.bin is loaded from the SD card, the Raspberry Pi continues booting using USB host mode. -This is useful for the Raspberry Pi 1, 2, and Zero models, which are based on the BCM2835 and BCM2836 chips, and in situations where a Pi 3 fails to boot (the latest bootcode.bin includes additional bugfixes for the Pi 3B, compared to the boot code burned into the BCM2837A0). +This is useful for the Raspberry Pi 1, 2, and Zero models, which are based on the BCM2835 and BCM2836 chips, and in situations where a Raspberry Pi 3 fails to boot (the latest bootcode.bin includes additional bugfixes for the Raspberry Pi 3B, compared to the boot code burned into the BCM2837A0). If you have a problem with a mass storage device still not working, even with this bootcode.bin, then please add a new file 'timeout' to the SD card. This will extend to six seconds the time for which it waits for the mass storage device to initialise. === `bootcode.bin` UART Enable -NOTE: For boards pre-Raspberry Pi 4, Model B. +NOTE: For boards pre-Raspberry Pi 4 Model B. -For information on enabling the UART on the Pi4 bootloader, please see xref:raspberry-pi.adoc#raspberry-pi-4-bootloader-configuration[this page]. +For information on enabling the UART on the Raspberry Pi 4 bootloader, please see xref:raspberry-pi.adoc#raspberry-pi-4-bootloader-configuration[this page]. It is possible to enable an early stage UART to debug booting issues (useful with the above bootcode.bin only boot mode). To do this, make sure you've got a recent version of the firmware (including bootcode.bin). To check if UART is supported in your current firmware: @@ -34,8 +34,8 @@ To enable UART from bootcode.bin use: sed -i -e "s/BOOT_UART=0/BOOT_UART=1/" bootcode.bin ---- -Next, connect a suitable USB serial cable to your host computer (a Raspberry Pi will work, although I find the easiest path is to use a USB serial cable since it'll work out the box without any pesky config.txt settings). Use the standard pins 6, 8 and 10 (GND, GPIO14, GPIO15) on a Pi or CM board. +Next, connect a suitable USB serial cable to your host computer (a Raspberry Pi will work, although I find the easiest path is to use a USB serial cable since it'll work out the box without any pesky config.txt settings). Use the standard pins 6, 8 and 10 (GND, GPIO14, GPIO15) on a Raspberry Pi or Compute Module board. Then use `screen` on linux or a Mac or `putty` on windows to connect to the serial. -Setup your serial to receive at 115200-8-N-1, and then boot your Pi / Compute module. You should get an immediate serial output from the device as bootcode.bin runs. +Setup your serial to receive at 115200-8-N-1, and then boot your Raspberry Pi / Compute Module. You should get an immediate serial output from the device as bootcode.bin runs. diff --git a/documentation/asciidoc/computers/raspberry-pi/frequency-management.adoc b/documentation/asciidoc/computers/raspberry-pi/frequency-management.adoc index 46710c32a..34587cb9e 100644 --- a/documentation/asciidoc/computers/raspberry-pi/frequency-management.adoc +++ b/documentation/asciidoc/computers/raspberry-pi/frequency-management.adoc @@ -52,4 +52,4 @@ Due to the architecture of the SoCs used on the Raspberry Pi range, and the use === Adding Heatsinks -Whilst heatsinks are not necessary to prevent overheating damage to the SoC — the thermal throttling mechanism handles that — a heatsink or small fan will help if you wish to reduce the amount of thermal throttling that takes place. Depending on the exact circumstances, mounting the Pi vertically can also help with heat dissipation, as doing so can improve air flow. +Whilst heatsinks are not necessary to prevent overheating damage to the SoC — the thermal throttling mechanism handles that — a heatsink or small fan will help if you wish to reduce the amount of thermal throttling that takes place. Depending on the exact circumstances, mounting the Raspberry Pi vertically can also help with heat dissipation, as doing so can improve air flow. diff --git a/documentation/asciidoc/computers/raspberry-pi/gpio-on-raspberry-pi.adoc b/documentation/asciidoc/computers/raspberry-pi/gpio-on-raspberry-pi.adoc index 7e51d03d3..4a9cdb2ba 100644 --- a/documentation/asciidoc/computers/raspberry-pi/gpio-on-raspberry-pi.adoc +++ b/documentation/asciidoc/computers/raspberry-pi/gpio-on-raspberry-pi.adoc @@ -37,11 +37,11 @@ The normal rising/falling edge detection has a small amount of synchronisation b === Alternative Functions -Almost all of the GPIO pins have alternative functions. Peripheral blocks internal to BCM2835 can be selected to appear on one or more of a set of GPIO pins, for example the I2C buses can be configured to at least 3 separate locations. Pad control, such as drive strength or Schmitt filtering, still applies when the pin is configured as an alternate function. +Almost all of the GPIO pins have alternative functions. Peripheral blocks internal to the SoC can be selected to appear on one or more of a set of GPIO pins, for example the I2C buses can be configured to at least 3 separate locations. xref:raspberry-pi.adoc#gpio-pads-control[Pad control], such as drive strength or Schmitt filtering, still applies when the pin is configured as an alternate function. === Voltage Specifications -The table below gives the various voltage specifications for the GPIO pins for BCM2835 and BCM2837-based products (e.g. Raspbery Pi Zero or Raspberry Pi 3+). For information about Compute Modules you should see the xref:compute-module.adoc#datasheets-and-schematics[relevant datasheets]. +The table below gives the various voltage specifications for the GPIO pins for BCM2835, BCM2836, BCM2837 and RP3A0-based products (e.g. Raspbery Pi Zero or Raspberry Pi 3+). For information about Compute Modules you should see the xref:compute-module.adoc#datasheets-and-schematics[relevant datasheets]. |=== | Symbol | Parameter | Conditions   | Min | Typical | Max | Unit diff --git a/documentation/asciidoc/computers/raspberry-pi/gpio-pad-controls.adoc b/documentation/asciidoc/computers/raspberry-pi/gpio-pad-controls.adoc index b9a261ee6..c71573f95 100644 --- a/documentation/asciidoc/computers/raspberry-pi/gpio-pad-controls.adoc +++ b/documentation/asciidoc/computers/raspberry-pi/gpio-pad-controls.adoc @@ -5,7 +5,7 @@ GPIO drive strengths do not indicate a maximum current, but a maximum current un [discrete] === How Drive Strength is Controlled -Inside the pad are a number of drivers in parallel. If the drive strength is set low (0b000) most of these are tri-stated so they do not add anything to the output current. If the drive strength is increased, more and more drivers are put in parallel. The following diagram shows that behaviour +Inside the pad are a number of drivers in parallel. If the drive strength is set low (0b000) most of these are tri-stated so they do not add anything to the output current. If the drive strength is increased, more and more drivers are put in parallel. The following diagram shows that behaviour. WARNING: For Raspberry Pi 4, Raspberry Pi 400 and Compute Module 4 the current level is half the value shown in the diagram. @@ -26,7 +26,7 @@ The pad output is a voltage source: The pad will try to drive the output high or low. Success will depend on the requirements of what is connected. If the pad is shorted to ground, it will not be able to drive high. It will actually try to deliver as much current as it can, and the current is only limited by the internal resistance. -If the pad is driven high and it is shorted to ground, in due time it will fail. The same holds true if you connect it to 3.3v and drive it low. +If the pad is driven high and it is shorted to ground, in due time it will fail. The same holds true if you connect it to 3.3V and drive it low. Meeting the specification is determined by the guaranteed voltage levels. Because the pads are digital, there are two voltage levels, high and low. The I/O ports have two parameters which deal with the output level: @@ -49,7 +49,7 @@ NOTE: On the Compute Module devices, it is possible to change the VDD IO from th Two reasons: -. The Raspberry Pi 3.3V supply was designed with a maximum current of ~3mA per GPIO pin. If you load each pin with 16mA, the total current is 272mA. The 3.3v supply will collapse under that level of load. +. The Raspberry Pi 3.3V supply was designed with a maximum current of ~3mA per GPIO pin. If you load each pin with 16mA, the total current is 272mA. The 3.3V supply will collapse under that level of load. . Big current spikes will happen, especially if you have a capacitive load. That will "bounce" around all the other pins near it. It is likely to cause interference with the SD card or even the SDRAM behaviour. [discrete] diff --git a/documentation/asciidoc/computers/raspberry-pi/otp-bits.adoc b/documentation/asciidoc/computers/raspberry-pi/otp-bits.adoc index a35478976..79893df54 100644 --- a/documentation/asciidoc/computers/raspberry-pi/otp-bits.adoc +++ b/documentation/asciidoc/computers/raspberry-pi/otp-bits.adoc @@ -41,7 +41,7 @@ This is available via device-tree in `/proc/device-tree/chosen/rpi-boardrev-ext` ** Bit 31: Whether the Compute Module has an EMMC module fitted *** 0 - EMMC *** 1 - No EMMC (Lite) -* Pi 400 +* Raspberry Pi 400 ** Bits 0-7: The default keyboard country code used by https://github.com/raspberrypi-ui/piwiz[piwiz] 36-43 - xref:raspberry-pi.adoc#industrial-use-of-the-raspberry-pi[customer OTP values] + diff --git a/documentation/asciidoc/computers/raspberry-pi/power-supplies.adoc b/documentation/asciidoc/computers/raspberry-pi/power-supplies.adoc index 3ea1f5601..d196dbeb1 100644 --- a/documentation/asciidoc/computers/raspberry-pi/power-supplies.adoc +++ b/documentation/asciidoc/computers/raspberry-pi/power-supplies.adoc @@ -7,22 +7,22 @@ Exactly how much current (mA) the Raspberry Pi requires is dependent on what you |=== | Product | Recommended PSU current capacity | Maximum total USB peripheral current draw | Typical bare-board active current consumption -| Raspberry Pi Model A +| Raspberry Pi 1 Model A | 700mA | 500mA | 200mA -| Raspberry Pi Model B +| Raspberry Pi 1 Model B | 1.2A | 500mA | 500mA -| Raspberry Pi Model A+ +| Raspberry Pi 1 Model A+ | 700mA | 500mA | 180mA -| Raspberry Pi Model B+ +| Raspberry Pi 1 Model B+ | 1.8A | 1.2A | 330mA @@ -62,7 +62,7 @@ Exactly how much current (mA) the Raspberry Pi requires is dependent on what you | Limited by PSU, board, and connector ratings only | 100mA -| Raspberry Pi Zero W/WH +| Raspberry Pi Zero W | 1.2A | Limited by PSU, board, and connector ratings only. | 150mA @@ -86,10 +86,10 @@ The specific power requirements of each model are shown below. |=== | Product | Recommended PSU current capacity | Maximum total USB peripheral current draw | Typical bare-board active current consumption -|Raspberry Pi Model A | 700mA | 500mA | 200mA -| Raspberry Pi Model B |1.2A | 500mA | 500mA -| Raspberry Pi Model A+ | 700mA | 500mA | 180mA -| Raspberry Pi Model B+ | 1.8A | 1.2A | 330mA +|Raspberry Pi 1 Model A | 700mA | 500mA | 200mA +| Raspberry Pi 1 Model B |1.2A | 500mA | 500mA +| Raspberry Pi 1 Model A+ | 700mA | 500mA | 180mA +| Raspberry Pi 1 Model B+ | 1.8A | 1.2A | 330mA | Raspberry Pi 2 Model B | 1.8A | 1.2A | 350mA | Raspberry Pi 3 Model B | 2.5A | 1.2A | 400mA | Raspberry Pi 3 Model A+ | 2.5A | Limited by PSU, board, and connector ratings only. | 350mA @@ -97,7 +97,7 @@ The specific power requirements of each model are shown below. | Raspberry Pi 4 Model B | 3.0A | 1.2A | 600mA | Raspberry Pi 400 | 3.0A | 1.2A | 800mA | Raspberry Pi Zero | 1.2A | Limited by PSU, board, and connector ratings only | 100mA -| Raspberry Pi Zero W/WH | 1.2A | Limited by PSU, board, and connector ratings only.| 150mA +| Raspberry Pi Zero W | 1.2A | Limited by PSU, board, and connector ratings only.| 150mA | Raspberry Pi Zero 2 W | 2A | Limited by PSU, board, and connector ratings only | 350mA |=== @@ -125,10 +125,10 @@ NOTE: For these measurements we used a standard Raspberry Pi OS image (current a On all models of Raspberry Pi since the Raspberry Pi B+ (2014) except the Zero range, there is low-voltage detection circuitry that will detect if the supply voltage drops below 4.63V (+/- 5%). This will result in a xref:configuration.adoc#firmware-warning-icons[warning icon] being displayed on all attached displays and an entry being added to the kernel log. -If you are seeing warnings, you should improve the power supply and/or cable, as low power can cause problems with corruption of SD cards, or erratic behaviour of the Pi itself; for example, unexplained crashes. +If you are seeing warnings, you should improve the power supply and/or cable, as low power can cause problems with corruption of SD cards, or erratic behaviour of the Raspberry Pi itself; for example, unexplained crashes. Voltages can drop for a variety of reasons, for example if the power supply itself is inadequate, the power supply cable is made of too thin wires, or you have plugged in high demand USB devices. === Back-powering -The USB specification requires that USB devices must not supply current to upstream devices. If a USB device does supply current to an upstream device then this is called back-powering. Often this happens when a badly-made powered USB hub is connected, and will result in the powered USB hub supplying power to the host Raspberry Pi. This is not recommended since the power being supplied to the Pi via the hub will bypass the protection circuitry built into the Pi, leaving it vulnerable to damage in the event of a power surge. +The USB specification requires that USB devices must not supply current to upstream devices. If a USB device does supply current to an upstream device then this is called back-powering. Often this happens when a badly-made powered USB hub is connected, and will result in the powered USB hub supplying power to the host Raspberry Pi. This is not recommended since the power being supplied to the Raspberry Pi via the hub will bypass the protection circuitry built into the Raspberry Pi, leaving it vulnerable to damage in the event of a power surge. diff --git a/documentation/asciidoc/computers/raspberry-pi/raspberry-pi-industrial.adoc b/documentation/asciidoc/computers/raspberry-pi/raspberry-pi-industrial.adoc index ac40786af..c281fbb67 100644 --- a/documentation/asciidoc/computers/raspberry-pi/raspberry-pi-industrial.adoc +++ b/documentation/asciidoc/computers/raspberry-pi/raspberry-pi-industrial.adoc @@ -1,6 +1,6 @@ == Industrial use of the Raspberry Pi -The Raspberry Pi is often used as part of another product. This documentation describes some extra facilities available to use other capabilities of the Pi. +The Raspberry Pi is often used as part of another product. This documentation describes some extra facilities available to use other capabilities of the Raspberry Pi. === One-Time Programmable Settings diff --git a/documentation/asciidoc/computers/raspberry-pi/raspberry-pi-schematics.adoc b/documentation/asciidoc/computers/raspberry-pi/raspberry-pi-schematics.adoc index 0fd2543dd..3f9e60e18 100644 --- a/documentation/asciidoc/computers/raspberry-pi/raspberry-pi-schematics.adoc +++ b/documentation/asciidoc/computers/raspberry-pi/raspberry-pi-schematics.adoc @@ -25,7 +25,7 @@ Schematics for the various Raspberry Pi board versions: * https://datasheets.raspberrypi.com/rpi2/raspberry-pi-2-b-reduced-schematics.pdf[Schematics, Revision 1.2] -=== Raspberry Pi Model B+ +=== Raspberry Pi 1 Model B+ * https://datasheets.raspberrypi.com/rpi/raspberry-pi-b-plus-reduced-schematics.pdf[Schematics, Revision 1.2] * https://datasheets.raspberrypi.com/rpi/raspberry-pi-b-plus-mecahnical-drawing.pdf[Mechanical Drawings, PDF] @@ -37,9 +37,9 @@ Schematics for the various Raspberry Pi board versions: * https://datasheets.raspberrypi.com/rpi3/raspberry-pi-3-a-plus-mechanical-drawing.pdf[Mechanical Drawings, PDF] * https://datasheets.raspberrypi.com/case/raspberry-pi-3-a-plus-case-mechanical-drawing.pdf[Case Drawings, PDF] -NOTE: Mechanical drawings for the Raspberry Pi 3, Model A+ are also applicable to the Raspberry Pi, Model A+. +NOTE: Mechanical drawings for the Raspberry Pi 3 Model A+ are also applicable to the Raspberry Pi 1 Model A+. -=== Raspberry Pi Model A+ +=== Raspberry Pi 1 Model A+ * https://datasheets.raspberrypi.com/rpi/raspberry-pi-a-plus-reduced-schematics.pdf[Schematics, Revision 1.1] diff --git a/documentation/asciidoc/computers/raspberry-pi/revision-codes.adoc b/documentation/asciidoc/computers/raspberry-pi/revision-codes.adoc index baa2f1e25..6ea7976e9 100644 --- a/documentation/asciidoc/computers/raspberry-pi/revision-codes.adoc +++ b/documentation/asciidoc/computers/raspberry-pi/revision-codes.adoc @@ -391,7 +391,7 @@ NOTE: This list is not exhaustive - there may be codes in use that are not in th | Embest | 900061 -| CM +| CM1 | 1.1 | 512MB | Sony UK diff --git a/documentation/asciidoc/computers/raspberry-pi/spi-bus-on-raspberry-pi.adoc b/documentation/asciidoc/computers/raspberry-pi/spi-bus-on-raspberry-pi.adoc index b02759db5..2efe76629 100644 --- a/documentation/asciidoc/computers/raspberry-pi/spi-bus-on-raspberry-pi.adoc +++ b/documentation/asciidoc/computers/raspberry-pi/spi-bus-on-raspberry-pi.adoc @@ -8,8 +8,8 @@ Raspberry Pi computers are equipped with a number of https://en.wikipedia.org/wi Raspberry Pi Zero, 1, 2 and 3 have three SPI controllers: -* SPI0, with two hardware chip selects, is available on the header of all Pis; there is also an alternate mapping that is only available on compute modules. -* SPI1, with three hardware chip selects, is available on all Raspberry Pi models except the original Pi 1 models A and B. +* SPI0, with two hardware chip selects, is available on the header of all Raspberry Pis; there is also an alternate mapping that is only available on Compute Modules. +* SPI1, with three hardware chip selects, is available on all Raspberry Pi models except the original Raspberry Pi 1 Model A and Model B. * SPI2, also with three hardware chip selects, is only available on Compute Module 1, 3 and 3+. On the Raspberry Pi 4, 400 and Compute Module 4 there are four additional SPI buses: SPI3 to SPI6, each with 2 hardware chip selects. These extra SPI buses are available via alternate function assignments on certain GPIO pins - see the https://datasheets.raspberrypi.com/bcm2711/bcm2711-peripherals.pdf[BCM2711 ARM Peripherals] datasheet. @@ -53,7 +53,7 @@ Chapter 10 in the https://datasheets.raspberrypi.com/bcm2835/bcm2835-peripherals | SPI0_CE1_N |=== -===== SPI0 alternate mapping (compute modules only, except CM4) +===== SPI0 alternate mapping (Compute Modules only, except CM4) [cols="1,1,1"] |=== @@ -122,7 +122,7 @@ Chapter 10 in the https://datasheets.raspberrypi.com/bcm2835/bcm2835-peripherals | SPI1_CE2_N |=== -===== SPI2 (compute modules only, except CM4) +===== SPI2 (Compute Modules only, except CM4) [cols="1,1,1"] |=== diff --git a/documentation/asciidoc/computers/raspberry-pi/usb-bus-on-raspberry-pi.adoc b/documentation/asciidoc/computers/raspberry-pi/usb-bus-on-raspberry-pi.adoc index 70058bdfc..755fd5eac 100644 --- a/documentation/asciidoc/computers/raspberry-pi/usb-bus-on-raspberry-pi.adoc +++ b/documentation/asciidoc/computers/raspberry-pi/usb-bus-on-raspberry-pi.adoc @@ -1,6 +1,6 @@ == Universal Serial Bus (USB) -In general, every device supported by Linux can be used with a Raspberry Pi, although there are some limitations for models prior to Pi 4. +In general, every device supported by Linux can be used with a Raspberry Pi, although there are some limitations for models prior to Raspberry Pi 4. === Maximum Power Output @@ -16,33 +16,33 @@ As with all computers, the USB ports on the Raspberry Pi supply a limited amount | 1200mA total across all ports |=== -. For the original Pi 1B the limit is 100mA per port. +. For the original Raspberry Pi 1 Model B the limit is 100mA per port. === Raspberry Pi 4 -The Pi 4 contains two USB 3.0 ports and two USB 2.0 ports which are connected to a VL805 USB controller. The USB 2.0 lines on all four ports are connected to a single USB 2.0 hub within the VL805: this limits the total available bandwidth for USB 1.1 and USB 2.0 devices to that of a single USB 2.0 port. +The Raspberry Pi 4 contains two USB 3.0 ports and two USB 2.0 ports which are connected to a VL805 USB controller. The USB 2.0 lines on all four ports are connected to a single USB 2.0 hub within the VL805: this limits the total available bandwidth for USB 1.1 and USB 2.0 devices to that of a single USB 2.0 port. -On the Pi 4, the USB controller used on previous models is located on the USB type C port and is disabled by default. +On the Raspberry Pi 4, the USB controller used on previous models is located on the USB type C port and is disabled by default. === Raspberry Pi Zero, 1, 2 and 3 -The USB controller on models prior to Pi 4 has only a basic level of support for certain devices, which presents a higher software processing overhead. It also supports only one root USB port: all traffic from connected devices is funnelled down this single bus, which operates at a maximum speed of 480mbps. +The USB controller on models prior to Raspberry Pi 4 has only a basic level of support for certain devices, which presents a higher software processing overhead. It also supports only one root USB port: all traffic from connected devices is funnelled down this single bus, which operates at a maximum speed of 480mbps. The USB 2.0 specification defines three device speeds - low, full and high. Most mice and keyboards are low speed, most USB sound devices are full speed and most video devices (webcams or video capture) are high speed. -Generally, there are no issues with connecting multiple high speed USB devices to a Pi. +Generally, there are no issues with connecting multiple high speed USB devices to a Raspberry Pi. -The software overhead incurred when talking to low and full speed devices means that there are limitations on the number of simultaneously active low and full speed devices. Small numbers of these types of devices connected to a Pi will cause no issues. +The software overhead incurred when talking to low and full speed devices means that there are limitations on the number of simultaneously active low and full speed devices. Small numbers of these types of devices connected to a Raspberry Pi will cause no issues. === Known USB Issues ==== Interoperability with USB 3.0 hubs -There is an issue with USB 3.0 hubs in conjunction with the use of full or low speed devices, including most mice and keyboards. A bug in most USB 3.0 hub hardware means that the models prior to Pi 4 cannot talk to full or low speed devices connected to a USB 3.0 hub. +There is an issue with USB 3.0 hubs in conjunction with the use of full or low speed devices, including most mice and keyboards. A bug in most USB 3.0 hub hardware means that the models prior to Raspberry Pi 4 cannot talk to full or low speed devices connected to a USB 3.0 hub. USB 2.0 high speed devices, including USB 2.0 hubs, operate correctly when connected via a USB 3.0 hub. -Avoid connecting low or full speed devices into a USB 3.0 hub. As a workaround, plug a USB 2.0 hub into the downstream port of the USB 3.0 hub and connect the low speed device, or use a USB 2.0 hub between the Pi and the USB 3.0 hub, then plug low speed devices into the USB 2.0 hub. +Avoid connecting low or full speed devices into a USB 3.0 hub. As a workaround, plug a USB 2.0 hub into the downstream port of the USB 3.0 hub and connect the low speed device, or use a USB 2.0 hub between the Raspberry Pi and the USB 3.0 hub, then plug low speed devices into the USB 2.0 hub. ==== USB 1.1 webcams @@ -54,4 +54,4 @@ Expensive audiophile sound cards typically use large amounts of USB bandwidth: r ==== Single TT USB hubs -USB 2.0 and 3.0 hubs have a mechanism for talking to full or low speed devices connected to their downstream ports called a transaction translator (TT). This device buffers high speed requests from the host and transmits them at full or low speed to the downstream device. Two configurations of hub are allowed by the USB specification: Single TT (one TT for all ports) and Multi TT (one TT per port). Because of a hardware limitation, if too many full or low speed devices are plugged into a single TT hub, the devices may behave unreliably. It is recommended to use a Multi TT hub to interface with multiple full and low speed devices. As a workaround, spread full and low speed devices out between the Pi's own USB port and the single TT hub. +USB 2.0 and 3.0 hubs have a mechanism for talking to full or low speed devices connected to their downstream ports called a transaction translator (TT). This device buffers high speed requests from the host and transmits them at full or low speed to the downstream device. Two configurations of hub are allowed by the USB specification: Single TT (one TT for all ports) and Multi TT (one TT per port). Because of a hardware limitation, if too many full or low speed devices are plugged into a single TT hub, the devices may behave unreliably. It is recommended to use a Multi TT hub to interface with multiple full and low speed devices. As a workaround, spread full and low speed devices out between the Raspberry Pi's own USB port and the single TT hub. diff --git a/documentation/asciidoc/computers/remote-access/apache.adoc b/documentation/asciidoc/computers/remote-access/apache.adoc index e2604f00f..edc977533 100644 --- a/documentation/asciidoc/computers/remote-access/apache.adoc +++ b/documentation/asciidoc/computers/remote-access/apache.adoc @@ -22,9 +22,9 @@ sudo apt install apache2 -y === Test the Web Server -By default, Apache puts a test HTML file in the web folder. This default web page is served when you browse to `+http://localhost/+` on the Pi itself, or `+http://192.168.1.10+` (whatever the Pi's IP address is) from another computer on the network. To find the Pi's IP address, type `hostname -I` at the command line (or read more about finding your xref:remote-access.adoc#ip-address[IP address]). +By default, Apache puts a test HTML file in the web folder. This default web page is served when you browse to `+http://localhost/+` on the Raspberry Pi itself, or `+http://192.168.1.10+` (whatever the Raspberry Pi's IP address is) from another computer on the network. To find the Raspberry Pi's IP address, type `hostname -I` at the command line (or read more about finding your xref:remote-access.adoc#ip-address[IP address]). -Browse to the default web page either on the Pi or from another computer on the network and you should see the following: +Browse to the default web page either on the Raspberry Pi or from another computer on the network and you should see the following: image::images/apache-it-works.png[Apache success message] diff --git a/documentation/asciidoc/computers/remote-access/network-boot-raspberry-pi.adoc b/documentation/asciidoc/computers/remote-access/network-boot-raspberry-pi.adoc index 299fbc96c..ea0f66933 100644 --- a/documentation/asciidoc/computers/remote-access/network-boot-raspberry-pi.adoc +++ b/documentation/asciidoc/computers/remote-access/network-boot-raspberry-pi.adoc @@ -8,13 +8,13 @@ NOTE: Due to the huge range of networking devices and routers available, we can' === Client Configuration -==== Raspberry Pi 3, Model B +==== Raspberry Pi 3 Model B -NOTE: This section only applies to the Raspberry Pi 3, Model B as network boot is enabled on the Raspberry Pi 3, Model B+ at the factory. +NOTE: This section only applies to the Raspberry Pi 3 Model B, as network boot is enabled on the Raspberry Pi 3 Model B+ at the factory. -Before the Raspberry Pi 3, Model B will network boot it needs to be booted from an SD Card with a config option to enable USB boot mode. This will set a bit in the OTP (One Time Programmable) memory in the Raspberry Pi SoC that enables network booting. Once this is done, the Pi 3B will attempt to boot from USB, and from the network, if it cannot boot from the SD card. +Before the Raspberry Pi 3 Model B will network boot it needs to be booted from an SD Card with a config option to enable USB boot mode. This will set a bit in the OTP (One Time Programmable) memory in the Raspberry Pi SoC that enables network booting. Once this is done, the Raspberry Pi 3B will attempt to boot from USB, and from the network, if it cannot boot from the SD card. -Install Raspberry Pi OS Lite, or Raspberry Pi OS with Raspberry Pi Desktop, on the SD card in the usual fashion. Next, enable USB boot mode with the following command: +Install Raspberry Pi OS Lite, or Raspberry Pi OS with desktop, on the SD card in the usual fashion. Next, enable USB boot mode with the following command: [,bash] ---- @@ -33,23 +33,23 @@ Ensure the output `0x3020000a` is correct. The client configuration is almost done. The final thing to do is to remove the `program_usb_boot_mode` line from `config.txt`. You can do this with `sudo nano /boot/config.txt`, for example. Finally, shut the client Raspberry Pi down with `sudo poweroff`. -==== Raspberry Pi 4, Model B +==== Raspberry Pi 4 Model B -Network boot can be enabled on the Pi 4 using the `raspi-config` tool. First, run `raspi-config` as follows: +Network boot can be enabled on the Raspberry Pi 4 using the `raspi-config` tool. First, run `raspi-config` as follows: [,bash] ---- sudo raspi-config ---- -Within `raspi-config`, choose `Advanced Options`, then `Boot Order`, then `Network Boot`. You must then reboot the device for the change to the boot order to be programmed into the bootloader EEPROM. Once the Pi has rebooted, check that the boot order is now `0xf21`: +Within `raspi-config`, choose `Advanced Options`, then `Boot Order`, then `Network Boot`. You must then reboot the device for the change to the boot order to be programmed into the bootloader EEPROM. Once the Raspberry Pi has rebooted, check that the boot order is now `0xf21`: [,bash] ---- vcgencmd bootloader_config ---- -For further details of configuring the Pi 4 bootloader, see xref:raspberry-pi.adoc#raspberry-pi-4-bootloader-configuration[Pi 4 Bootloader Configuration]. +For further details of configuring the Raspberry Pi 4 bootloader, see xref:raspberry-pi.adoc#raspberry-pi-4-bootloader-configuration[Raspberry Pi 4 Bootloader Configuration]. === Ethernet MAC address @@ -309,11 +309,11 @@ Good luck! If it doesn't boot on the first attempt, keep trying. It can take a m === Using `pxetools` -We have created a Python script that is used internally to quickly set up Raspberry Pi's that will network boot. +We have created a Python script that is used internally to quickly set up Raspberry Pis that will network boot. -The script takes a serial number, which you can find in `cat /proc/cpuinfo`, an owner name and the name of the Raspberry Pi. It then creates a root filesystem for that Pi from a Raspberry Pi OS image. There is also a `--list` option which will print out the IP address of the Pi, and a `--remove` option. +The script takes a serial number, which you can find in `cat /proc/cpuinfo`, an owner name and the name of the Raspberry Pi. It then creates a root filesystem for that Raspberry Pi from a Raspberry Pi OS image. There is also a `--list` option which will print out the IP address of the Raspberry Pi, and a `--remove` option. -NOTE: The following instructions describe how to set up the environment required by the script starting from a fresh Raspberry Pi OS lite image. It might be a good idea to mount a hard disk or flash drive on `/nfs` so that your SD card isn't providing filesystems to multiple Pi's. This is left as an exercise for the reader. +NOTE: The following instructions describe how to set up the environment required by the script starting from a fresh Raspberry Pi OS lite image. It might be a good idea to mount a hard disk or flash drive on `/nfs` so that your SD card isn't providing filesystems to multiple Raspberry Pis. This is left as an exercise for the reader. ---- sudo apt update @@ -334,4 +334,4 @@ We found that we needed to restart the `nfs` server after using `pxetools` for t sudo systemctl restart nfs-kernel-server ---- -Then plug in your Raspberry Pi and it should boot! \ No newline at end of file +Then plug in your Raspberry Pi and it should boot! diff --git a/documentation/asciidoc/computers/remote-access/remote-access-introduction.adoc b/documentation/asciidoc/computers/remote-access/remote-access-introduction.adoc index 8ee5075c2..e397b7f0d 100644 --- a/documentation/asciidoc/computers/remote-access/remote-access-introduction.adoc +++ b/documentation/asciidoc/computers/remote-access/remote-access-introduction.adoc @@ -1,21 +1,21 @@ == Introduction to Remote Access -Sometimes you need to access a Raspberry Pi without connecting it to a monitor. Perhaps the Pi is embedded in something like a robot, or you may want to view some information from it from elsewhere. Or perhaps you simply don't have a spare monitor! +Sometimes you need to access a Raspberry Pi without connecting it to a monitor. Perhaps the Raspberry Pi is embedded in something like a robot, or you may want to view some information from it from elsewhere. Or perhaps you simply don't have a spare monitor! You can connect to your Raspberry Pi from another machine. But in order to do so you'll need to know its IP Address. -Any device connected to a Local Area Network is assigned an IP address. In order to connect to your Raspberry Pi from another machine using xref:remote-access.adoc#ssh[SSH] or xref:remote-access.adoc#vnc[VNC], you need to know the Pi's IP address. This is easy if you have a display connected, and there are a number of methods for finding it remotely from another machine on the network. +Any device connected to a Local Area Network is assigned an IP address. In order to connect to your Raspberry Pi from another machine using xref:remote-access.adoc#ssh[SSH] or xref:remote-access.adoc#vnc[VNC], you need to know the Raspberry Pi's IP address. This is easy if you have a display connected, and there are a number of methods for finding it remotely from another machine on the network. [[ip-address]] === How to Find your IP Address -It is possible to find the IP address of your Pi without connecting to a screen using one of the following methods: +It is possible to find the IP address of your Raspberry Pi without connecting to a screen using one of the following methods: NOTE: If you are using a display with your Raspberry Pi and if you boot to the command line instead of the desktop, your IP address should be shown in the last few messages before the login prompt. Otherwise open a Terminal window and type `hostname -I` which will reveal your Raspberry Pi's IP address. ==== Router devices list -In a web browser navigate to your router's IP address e.g. `+http://192.168.1.1+`, which is usually printed on a label on your router; this will take you to a control panel. Then log in using your credentials, which is usually also printed on the router or sent to you in the accompanying paperwork. Browse to the list of connected devices or similar (all routers are different), and you should see some devices you recognise. Some devices are detected as PCs, tablets, phones, printers, etc. so you should recognise some and rule them out to figure out which is your Raspberry Pi. Also note the connection type; if your Pi is connected with a wire there should be fewer devices to choose from. +In a web browser navigate to your router's IP address e.g. `+http://192.168.1.1+`, which is usually printed on a label on your router; this will take you to a control panel. Then log in using your credentials, which is usually also printed on the router or sent to you in the accompanying paperwork. Browse to the list of connected devices or similar (all routers are different), and you should see some devices you recognise. Some devices are detected as PCs, tablets, phones, printers, etc. so you should recognise some and rule them out to figure out which is your Raspberry Pi. Also note the connection type; if your Raspberry Pi is connected with a wire there should be fewer devices to choose from. ==== Resolving `raspberrypi.local` with mDNS @@ -47,7 +47,7 @@ The `nmap` command (Network Mapper) is a free and open-source tool for network d * To install on *Linux*, install the `nmap` package e.g. `apt install nmap`. * To install on *macOS* or *Windows*, see the http://nmap.org/download.html[nmap.org download page]. -To use `nmap` to scan the devices on your network, you need to know the subnet you are connected to. First find your own IP address, in other words the one of the computer you're using to find your Pi's IP address: +To use `nmap` to scan the devices on your network, you need to know the subnet you are connected to. First find your own IP address, in other words the one of the computer you're using to find your Raspberry Pi's IP address: * On *Linux*, type `hostname -I` into a terminal window * On *macOS*, go to `System Preferences` then `Network` and select your active network connection to view the IP address @@ -81,7 +81,7 @@ Here you can see a device with hostname `raspberrypi` has IP address `192.168.1. ==== Getting IPv6 addresses by pinging from a second device -First find your own IP address(es), in other words the one of the computer you're using to find your Pi's IP address +First find your own IP address(es), in other words the one of the computer you're using to find your Raspberry Pi's IP address by `hostname -I` `fd00::ba27:ebff:feb6:f293 2001:db8:494:9d01:ba27:ebff:feb6:f293` @@ -140,7 +140,7 @@ Linux raspberrypi4 4.19.75-v7l+ #1270 SMP Tue Sep 24 18:51:41 BST 2019 armv7l pi@raspberrypi4:~ $ ---- -==== Getting the IP address of a Pi using your smartphone +==== Getting the IP address of a Raspberry Pi using your smartphone The Fing app is a free network scanner for smartphones. It is available for https://play.google.com/store/apps/details?id=com.overlook.android.fing[Android] and https://itunes.apple.com/gb/app/fing-network-scanner/id430921107?mt=8[iOS]. diff --git a/documentation/asciidoc/computers/remote-access/rsync.adoc b/documentation/asciidoc/computers/remote-access/rsync.adoc index f1fdcd23c..cabccee5d 100644 --- a/documentation/asciidoc/computers/remote-access/rsync.adoc +++ b/documentation/asciidoc/computers/remote-access/rsync.adoc @@ -1,10 +1,10 @@ == Using `rsync` -You can use the tool `rsync` to synchronise folders between computers. You might want to transfer some files from your desktop computer or laptop to your Pi, for example, and for them to be kept up to date, or you might want the pictures taken by your Pi transferred to your computer automatically. +You can use the tool `rsync` to synchronise folders between computers. You might want to transfer some files from your desktop computer or laptop to your Raspberry Pi, for example, and for them to be kept up to date, or you might want the pictures taken by your Raspberry Pi transferred to your computer automatically. Using `rsync` over SSH allows you to transfer files to your computer automatically. -Here is an example of how to set up the sync of a folder of pictures on your Pi to your computer: +Here is an example of how to set up the sync of a folder of pictures on your Raspberry Pi to your computer: On your computer, create a folder called `camera`: @@ -12,12 +12,12 @@ On your computer, create a folder called `camera`: mkdir camera ---- -Look up the Raspberry Pi's IP address by logging in to it and running `hostname -I`. In this example, the Pi is creating a timelapse by capturing a photo every minute, and saving the picture with a timestamp in the local folder `camera` on its SD card. +Look up the Raspberry Pi's IP address by logging in to it and running `hostname -I`. In this example, the Raspberry Pi is creating a timelapse by capturing a photo every minute, and saving the picture with a timestamp in the local folder `camera` on its SD card. -Now run the following command (substituting your own Pi's IP address): +Now run the following command (substituting your own Raspberry Pi's IP address): ---- rsync -avz -e ssh pi@192.168.1.10:camera/ camera/ ---- -This will copy all files from the Pi's `camera` folder to your computer's new `camera` folder. +This will copy all files from the Raspberry Pi's `camera` folder to your computer's new `camera` folder. diff --git a/documentation/asciidoc/computers/remote-access/secure-shell-from-unix.adoc b/documentation/asciidoc/computers/remote-access/secure-shell-from-unix.adoc index 8d6118233..ab433c3f3 100644 --- a/documentation/asciidoc/computers/remote-access/secure-shell-from-unix.adoc +++ b/documentation/asciidoc/computers/remote-access/secure-shell-from-unix.adoc @@ -12,7 +12,7 @@ When the connection works you will see a security/authenticity warning. Type `ye NOTE: If you receive a `connection timed out` error it is likely that you have entered the wrong IP address for the Raspberry Pi. -WARNING: In the event your Pi has taken the IP address of a device to which your computer has connected before (even if this was on another network), you may be given a warning and asked to clear the record from your list of known devices. Following this instruction and trying the `ssh` command again should be successful. +WARNING: In the event your Raspberry Pi has taken the IP address of a device to which your computer has connected before (even if this was on another network), you may be given a warning and asked to clear the record from your list of known devices. Following this instruction and trying the `ssh` command again should be successful. Next you will be prompted for the password for the `pi` login: the default password on Raspberry Pi OS is `raspberry`. diff --git a/documentation/asciidoc/computers/remote-access/secure-shell-from-windows10.adoc b/documentation/asciidoc/computers/remote-access/secure-shell-from-windows10.adoc index 412608dd2..4c74fd856 100644 --- a/documentation/asciidoc/computers/remote-access/secure-shell-from-windows10.adoc +++ b/documentation/asciidoc/computers/remote-access/secure-shell-from-windows10.adoc @@ -12,7 +12,7 @@ When the connection works you will see a security/authenticity warning. Type `ye NOTE: If you receive a `connection timed out` error it is likely that you have entered the wrong IP address for the Raspberry Pi. -WARNING: In the event your Pi has taken the IP address of a device to which your computer has connected before (even if this was on another network), you may be given a warning and asked to clear the record from your list of known devices. Following this instruction and trying the `ssh` command again should be successful. +WARNING: In the event your Raspberry Pi has taken the IP address of a device to which your computer has connected before (even if this was on another network), you may be given a warning and asked to clear the record from your list of known devices. Following this instruction and trying the `ssh` command again should be successful. Next you will be prompted for the password for the `pi` login: the default password on Raspberry Pi OS is `raspberry`. diff --git a/documentation/asciidoc/computers/remote-access/secure-shell-passwordless.adoc b/documentation/asciidoc/computers/remote-access/secure-shell-passwordless.adoc index 4b0493a96..add0c4f12 100644 --- a/documentation/asciidoc/computers/remote-access/secure-shell-passwordless.adoc +++ b/documentation/asciidoc/computers/remote-access/secure-shell-passwordless.adoc @@ -76,7 +76,7 @@ Alternatively, if `ssh-copy-id` is not available on your system, you can copy th cat ~/.ssh/id_rsa.pub | ssh @ 'mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys' ---- -If you see the message `ssh: connect to host port 22: Connection refused` and you know the `IP-ADDRESS` is correct, then you may not have enabled SSH on your Raspberry Pi. Run `sudo raspi-config` in the Pi's terminal window, enable SSH, then try to copy the files again. +If you see the message `ssh: connect to host port 22: Connection refused` and you know the `IP-ADDRESS` is correct, then you may not have enabled SSH on your Raspberry Pi. Run `sudo raspi-config` in the Raspberry Pi's terminal window, enable SSH, then try to copy the files again. Now try `ssh @` and you should connect without a password prompt. @@ -87,7 +87,7 @@ If you see a message "Agent admitted failure to sign using the key" then add you ssh-add ---- -NOTE: you can also send files over SSH using the xref:remote-access.adoc#using-secure-copy[`scp`] (secure copy) command. +NOTE: You can also send files over SSH using the xref:remote-access.adoc#using-secure-copy[`scp`] (secure copy) command. === Adjust Directory Permissions diff --git a/documentation/asciidoc/computers/using_linux/filesystem-home.adoc b/documentation/asciidoc/computers/using_linux/filesystem-home.adoc index 6f59b2886..7910d118b 100644 --- a/documentation/asciidoc/computers/using_linux/filesystem-home.adoc +++ b/documentation/asciidoc/computers/using_linux/filesystem-home.adoc @@ -4,7 +4,7 @@ It is important to have a basic understanding of the fundamentals of the Linux f === Home -When you log into a Pi and open a terminal window, or you boot to the command line instead of the graphical user interface, you start in your home folder; this is located at `/home/pi`, assuming your username is `pi`. +When you log into a Raspberry Pi and open a terminal window, or you boot to the command line instead of the graphical user interface, you start in your home folder; this is located at `/home/pi`, assuming your username is `pi`. This is where the user's own files are kept. The contents of the user's desktop is in a directory here called `Desktop`, along with other files and folders. diff --git a/documentation/asciidoc/computers/using_linux/linux-bash.adoc b/documentation/asciidoc/computers/using_linux/linux-bash.adoc index db0d766a7..d83b05151 100644 --- a/documentation/asciidoc/computers/using_linux/linux-bash.adoc +++ b/documentation/asciidoc/computers/using_linux/linux-bash.adoc @@ -4,7 +4,7 @@ In your home folder you will find a hidden file called `.bashrc` which contains If you want your changes to take place in your current terminal, you can use either `source ~/.bashrc` or `exec bash`. These actually do slightly different things: the former simply re-executes the `.bashrc` file, which may result in undesirable changes to things like the path, the latter replaces the current shell with a new bash shell, which resets the shell back to the state at login, throwing away any shell variables you may have set. Choose whichever is most appropriate. -Some useful adaptions are provided for you; some of these are commented out with a `#` by default. To enable them, remove the `#` and they will be active next time you boot your Pi or start a new terminal. +Some useful adaptions are provided for you; some of these are commented out with a `#` by default. To enable them, remove the `#` and they will be active next time you boot your Raspberry Pi or start a new terminal. For example, some `ls` aliases: diff --git a/documentation/asciidoc/computers/using_linux/linux-multiple-users.adoc b/documentation/asciidoc/computers/using_linux/linux-multiple-users.adoc index 6d2f30430..2776f29b2 100644 --- a/documentation/asciidoc/computers/using_linux/linux-multiple-users.adoc +++ b/documentation/asciidoc/computers/using_linux/linux-multiple-users.adoc @@ -4,7 +4,7 @@ User management in Raspberry Pi OS is done on the command line. The default user === Changing your Password -Once you're logged in as the `pi` user, it is highly advisable to use the `passwd` command to change the default password to improve your Pi's security. +Once you're logged in as the `pi` user, it is highly advisable to use the `passwd` command to change the default password to improve your Raspberry Pi's security. Enter `passwd` on the command line and press `Enter`. You'll be prompted to enter your current password to authenticate, and then asked for a new password. Press `Enter` on completion and you'll be asked to confirm it. Note that no characters will be displayed while entering your password. Once you've correctly confirmed your password, you'll be shown a success message (`passwd: password updated successfully`), and the new password will apply immediately. diff --git a/documentation/asciidoc/computers/using_linux/linux-systemd.adoc b/documentation/asciidoc/computers/using_linux/linux-systemd.adoc index 2cee90da2..6d4af674b 100644 --- a/documentation/asciidoc/computers/using_linux/linux-systemd.adoc +++ b/documentation/asciidoc/computers/using_linux/linux-systemd.adoc @@ -1,10 +1,10 @@ == The `systemd` Daemon -In order to have a command or program run when the Pi boots, you can add it as a service. Once this is done, you can start/stop enable/disable from the linux prompt. +In order to have a command or program run when the Raspberry Pi boots, you can add it as a service. Once this is done, you can start/stop enable/disable from the linux prompt. === Creating a Service -On your Pi, create a `.service` file for your service, for example: `myscript.service` +On your Raspberry Pi, create a `.service` file for your service, for example: `myscript.service` ---- [Unit] diff --git a/documentation/asciidoc/computers/using_linux/linux-using-text-editors.adoc b/documentation/asciidoc/computers/using_linux/linux-using-text-editors.adoc index 015093f6f..75eab92d0 100644 --- a/documentation/asciidoc/computers/using_linux/linux-using-text-editors.adoc +++ b/documentation/asciidoc/computers/using_linux/linux-using-text-editors.adoc @@ -6,7 +6,7 @@ On Linux, you have a choice of text editors. Some are easy-to-use but have limit ==== Text Editor -When using Raspberry Pi OS Desktop, in the accessories menu there is an option to run a Text Editor. This is a simple editor which opens in a window like a normal application. It allows use of the mouse and keyboard, and has tabs and syntax highlighting. +When using Raspberry Pi OS with desktop, in the accessories menu there is an option to run a Text Editor. This is a simple editor which opens in a window like a normal application. It allows use of the mouse and keyboard, and has tabs and syntax highlighting. You can use keyboard shortcuts, such as `Ctrl + S` to save a file and `Ctrl + X` to exit. diff --git a/documentation/asciidoc/computers/using_linux/using-the-terminal.adoc b/documentation/asciidoc/computers/using_linux/using-the-terminal.adoc index 4adfaff2b..eba6b57fc 100644 --- a/documentation/asciidoc/computers/using_linux/using-the-terminal.adoc +++ b/documentation/asciidoc/computers/using_linux/using-the-terminal.adoc @@ -15,9 +15,9 @@ In the terminal window you should be able to see the following prompt: pi@raspberrypi ~ $ ---- -This shows your username and the hostname of the Pi. Here the username is `pi` and the hostname is `raspberrypi`. +This shows your username and the hostname of the Raspberry Pi. Here the username is `pi` and the hostname is `raspberrypi`. -=== Navigating and browsing your Pi +=== Navigating and browsing your Raspberry Pi One of the key aspects of using a terminal is being able to navigate your file system. Go ahead and type `ls -la` into the Terminal window, and then hit the RETURN key. You should see something similar to: diff --git a/documentation/asciidoc/microcontrollers/c_sdk/official_sdk.adoc b/documentation/asciidoc/microcontrollers/c_sdk/official_sdk.adoc index 79185142e..895ca9159 100644 --- a/documentation/asciidoc/microcontrollers/c_sdk/official_sdk.adoc +++ b/documentation/asciidoc/microcontrollers/c_sdk/official_sdk.adoc @@ -1,6 +1,6 @@ == Raspberry Pi Pico C/{cpp} SDK -Our official C SDK can be used from the command line, or from popular integrated development environments like Visual Studio Code, Eclipse, and CLion. To get started, download our C/C++ SDK and Examples, and take a look at our 'https://datasheets.raspberrypi.com/pico/getting-started-with-pico.pdf[getting started]' documentation to get going. Or for a quick setup see the next section. +Our official C SDK can be used from the command line, or from popular integrated development environments like Visual Studio Code, Eclipse, and CLion. To get started, download our C/{cpp} SDK and Examples, and take a look at our 'https://datasheets.raspberrypi.com/pico/getting-started-with-pico.pdf[getting started]' documentation to get going. Or for a quick setup see the next section. * The SDK https://github.com/raspberrypi/pico-sdk[Github repository] @@ -8,8 +8,8 @@ Our official C SDK can be used from the command line, or from popular integrated You can find documentation around the C/{cpp} SDK at; -https://datasheets.raspberrypi.com/pico/getting-started-with-pico.pdf[Getting started with Raspberry Pi Pico]:: C/C++ development with Raspberry Pi Pico and other RP2040-based microcontroller boards +https://datasheets.raspberrypi.com/pico/getting-started-with-pico.pdf[Getting started with Raspberry Pi Pico]:: C/{cpp} development with Raspberry Pi Pico and other RP2040-based microcontroller boards -https://datasheets.raspberrypi.com/pico/raspberry-pi-pico-c-sdk.pdf[Raspberry Pi Pico C/{cpp} SDK]:: Libraries and tools for C/C++ development on RP2040 microcontrollers +https://datasheets.raspberrypi.com/pico/raspberry-pi-pico-c-sdk.pdf[Raspberry Pi Pico C/{cpp} SDK]:: Libraries and tools for C/{cpp} development on RP2040 microcontrollers The API level Doxygen documentation for the Raspberry Pi Pico C/{cpp} SDK is also available https://rptl.io/pico-doxygen[as a micro-site]. diff --git a/documentation/asciidoc/microcontrollers/c_sdk/sdk_setup.adoc b/documentation/asciidoc/microcontrollers/c_sdk/sdk_setup.adoc index ce6e2d14f..e2a82efaf 100644 --- a/documentation/asciidoc/microcontrollers/c_sdk/sdk_setup.adoc +++ b/documentation/asciidoc/microcontrollers/c_sdk/sdk_setup.adoc @@ -1,5 +1,5 @@ == SDK Setup -For a full walk-through of how to get going with the C/{cpp} SDK, you should read our 'https://datasheets.raspberrypi.com/pico/getting-started-with-pico.pdf[getting started]' documentation. However, if you are intending to develop for Pico on a xref:../computers/os.adoc[Raspberry Pi], then you can set up the C/C++ toolchain quickly by running our https://raw.githubusercontent.com/raspberrypi/pico-setup/master/pico_setup.sh[setup script] from the command line. +For a full walk-through of how to get going with the C/{cpp} SDK, you should read our 'https://datasheets.raspberrypi.com/pico/getting-started-with-pico.pdf[getting started]' documentation. However, if you are intending to develop for Pico on a xref:../computers/os.adoc[Raspberry Pi], then you can set up the C/{cpp} toolchain quickly by running our https://raw.githubusercontent.com/raspberrypi/pico-setup/master/pico_setup.sh[setup script] from the command line. NOTE: You should make sure the OS on your Raspberry Pi is xref:../computers/os.adoc#updating-and-upgrading-raspberry-pi-os[up to date] before running the setup script. diff --git a/documentation/asciidoc/microcontrollers/microcontroller_docs.adoc b/documentation/asciidoc/microcontrollers/microcontroller_docs.adoc index 846455243..0b0c7938e 100644 --- a/documentation/asciidoc/microcontrollers/microcontroller_docs.adoc +++ b/documentation/asciidoc/microcontrollers/microcontroller_docs.adoc @@ -14,13 +14,13 @@ https://datasheets.raspberrypi.com/rp2040/hardware-design-with-rp2040.pdf[Hardwa https://datasheets.raspberrypi.com/pico/pico-datasheet.pdf[Raspberry Pi Pico Datasheet]:: An RP2040-based microcontroller board. -https://datasheets.raspberrypi.com/pico/getting-started-with-pico.pdf[Getting started with Raspberry Pi Pico]:: C/C++ development with Raspberry Pi Pico and other RP2040-based microcontroller boards +https://datasheets.raspberrypi.com/pico/getting-started-with-pico.pdf[Getting started with Raspberry Pi Pico]:: C/{cpp} development with Raspberry Pi Pico and other RP2040-based microcontroller boards NOTE: While it is not officially supported there is a https://github.com/ndabas/pico-setup-windows[Pico Setup for Windows] installation tool which automates installation of the C/{cpp} SDK on Windows 10. === Software Development -https://datasheets.raspberrypi.com/pico/raspberry-pi-pico-c-sdk.pdf[Raspberry Pi Pico C/{cpp} SDK]:: Libraries and tools for C/C++ development on RP2040 microcontrollers +https://datasheets.raspberrypi.com/pico/raspberry-pi-pico-c-sdk.pdf[Raspberry Pi Pico C/{cpp} SDK]:: Libraries and tools for C/{cpp} development on RP2040 microcontrollers https://datasheets.raspberrypi.com/pico/raspberry-pi-pico-python-sdk.pdf[Raspberry Pi Pico Python SDK]:: A MicroPython environment for RP2040 microcontrollers @@ -28,5 +28,5 @@ The API level Doxygen documentation for the Raspberry Pi Pico C/{cpp} SDK is als [NOTE] ==== -If you are building applications with the C/C++ SDK and targeting boards other than the Raspberry Pi Pico, you will need to pass `-DPICO_BOARD=boardname` to CMake. Here `boardname` is the name of your board, e.g. for the Adafruit Feather RP2040 you should pass `-DPICO_BOARD=adafruit_feather_rp2040`. See the https://github.com/raspberrypi/pico-sdk/tree/master/src/boards[`boards/` directory] in the Pico SDK, and the https://forums.raspberrypi.com/viewtopic.php?f=147&t=304393[forums], for more information. +If you are building applications with the C/{cpp} SDK and targeting boards other than the Raspberry Pi Pico, you will need to pass `-DPICO_BOARD=boardname` to CMake. Here `boardname` is the name of your board, e.g. for the Adafruit Feather RP2040 you should pass `-DPICO_BOARD=adafruit_feather_rp2040`. See the https://github.com/raspberrypi/pico-sdk/tree/master/src/boards[`boards/` directory] in the Raspberry Pi Pico SDK, and the https://forums.raspberrypi.com/viewtopic.php?f=147&t=304393[forums], for more information. ==== diff --git a/documentation/asciidoc/microcontrollers/rp2040/about_rp2040.adoc b/documentation/asciidoc/microcontrollers/rp2040/about_rp2040.adoc index 5cd43cce9..0fe4b2fbc 100644 --- a/documentation/asciidoc/microcontrollers/rp2040/about_rp2040.adoc +++ b/documentation/asciidoc/microcontrollers/rp2040/about_rp2040.adoc @@ -2,4 +2,4 @@ Welcome to RP2040, a microcontroller designed here at Raspberry Pi. -Whether you have a xref:raspberry-pi-pico.adoc#technical-specification[Raspberry Pi Pico] or another RP2040-based microcontroller board, everything you need to get started is here. You'll find support for getting started with xref:c_sdk.adoc#sdk-setup[C/C++] or xref:micropython.adoc#what-is-micropython[MicroPython] on Raspberry Pi Pico, and links to resources for other boards that use RP2040. There are also links to the technical documentation for both the Raspberry Pi Pico microcontroller board and our RP2040 microcontroller chip. \ No newline at end of file +Whether you have a xref:raspberry-pi-pico.adoc#technical-specification[Raspberry Pi Pico] or another RP2040-based microcontroller board, everything you need to get started is here. You'll find support for getting started with xref:c_sdk.adoc#sdk-setup[C/{cpp}] or xref:micropython.adoc#what-is-micropython[MicroPython] on Raspberry Pi Pico, and links to resources for other boards that use RP2040. There are also links to the technical documentation for both the Raspberry Pi Pico microcontroller board and our RP2040 microcontroller chip.