Skip to content

Commit

Permalink
Merge pull request #3016 from raspberrypi/develop
Browse files Browse the repository at this point in the history
Push to production
  • Loading branch information
Alasdair Allan committed Jul 23, 2023
2 parents d0eedf5 + fc0c042 commit f87e5e8
Show file tree
Hide file tree
Showing 15 changed files with 82 additions and 45 deletions.
6 changes: 4 additions & 2 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,15 @@ jobs:
uses: py-actions/py-dependency-install@v4
- uses: ruby/setup-ruby@v1
with:
ruby-version: 2.7
ruby-version: 2.7.0
rubygems: 3.3.22
bundler: 2.3.22
bundler-cache: true
- uses: seanmiddleditch/gha-setup-ninja@v3
with:
version: 1.10.2
- name: Install arm-none-eabi-gcc GNU Arm Embedded Toolchain
uses: carlosperate/arm-none-eabi-gcc-action@v1.6.1
uses: carlosperate/arm-none-eabi-gcc-action@v1.6.3
- name: Install Doxygen
run: |
wget https://www.doxygen.nl/files/doxygen-1.9.6.linux.bin.tar.gz
Expand Down
2 changes: 1 addition & 1 deletion Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -36,5 +36,5 @@ gem "wdm", "~> 0.1.0", :install_if => Gem.win_platform?
gem "nokogiri", "~> 1.15"

# So we can add custom element templates
gem 'slim', '~> 3.0.7'
gem 'slim', '~> 5.1.1'
gem 'thread_safe', '~> 0.3.5'
18 changes: 9 additions & 9 deletions Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -57,13 +57,13 @@ GEM
jekyll (>= 3.5, < 5.0)
jekyll-feed (~> 0.9)
jekyll-seo-tag (~> 2.1)
nokogiri (1.15.2)
nokogiri (1.15.3)
mini_portile2 (~> 2.8.2)
racc (~> 1.4)
pathutil (0.16.2)
forwardable-extended (~> 2.6)
public_suffix (5.0.1)
racc (1.7.0)
racc (1.7.1)
rake (13.0.6)
rb-fsevent (0.11.2)
rb-inotify (0.10.1)
Expand All @@ -74,14 +74,14 @@ GEM
sass-embedded (1.58.3)
google-protobuf (~> 3.21)
rake (>= 10.0.0)
slim (3.0.9)
temple (>= 0.7.6, < 0.9)
tilt (>= 1.3.3, < 2.1)
temple (0.8.2)
slim (5.1.1)
temple (~> 0.10.0)
tilt (>= 2.1.0)
temple (0.10.2)
terminal-table (3.0.2)
unicode-display_width (>= 1.1.1, < 3)
thread_safe (0.3.6)
tilt (2.0.11)
tilt (2.2.0)
tzinfo (2.0.6)
concurrent-ruby (~> 1.0)
tzinfo-data (1.2023.3)
Expand All @@ -99,11 +99,11 @@ DEPENDENCIES
jekyll-feed (~> 0.17)
minima (~> 2.0)
nokogiri (~> 1.15)
slim (~> 3.0.7)
slim (~> 5.1.1)
thread_safe (~> 0.3.5)
tzinfo (~> 2.0)
tzinfo-data
wdm (~> 0.1.0)

BUNDLED WITH
2.2.15
2.3.22
28 changes: 22 additions & 6 deletions documentation/asciidoc/accessories/audio/configuration.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ independently. Within the codec itself, other mixers and switches exist to allow
Both the AUX IN and AUX OUT are 1V RMS. It may be necessary to adjust
the AUX IN’s mixer to ensure that the input signal doesn’t saturate the ADC. Similarly, the output mixers can be to be adjusted to get the best possible output.

Preconfigured scripts (loadable ALSA settings) https://github.com/iqaudio/Pi-Codec[are available on GitHub], offering:
Preconfigured scripts (loadable ALSA settings) https://github.com/raspberrypi/Pi-Codec[are available on GitHub], offering:

* Mono MEMS mic recording, mono speaker playback
* Mono MEMS mic recording, mono AUX OUT playback
Expand All @@ -75,7 +75,7 @@ Preconfigured scripts (loadable ALSA settings) https://github.com/iqaudio/Pi-Cod
The Codec Zero needs to know which of these input and output settings are being used each time the Raspberry Pi powers on. Using a Terminal session on your Raspberry Pi, run the following command to download the scripts:

----
$ git clone https://github.com/iqaudio/Pi-Codec.git
$ git clone https://github.com/raspberrypi/Pi-Codec.git
----

If git is not installed, run the following command to install it:
Expand All @@ -87,7 +87,7 @@ $ sudo apt install git
The following command will set your device to use the on-board MEMS microphone and output for speaker playback:

----
$ sudo alsactl restore -f /home/pi/Pi-Codec/IQaudIO_Codec_OnboardMIC_record_and_SPK_playback.state
$ sudo alsactl restore -f /home/pi/Pi-Codec/Codec_Zero_OnboardMIC_record_and_SPK_playback.state
----

In order for your project to operate with your required settings when it is powered on, edit the `/etc/rc.local` file. The contents of this file are run at the end of every boot process, so it is ideal for this purpose. Edit the file:
Expand All @@ -112,7 +112,7 @@ Add the chosen script command above the exit 0 line and then Ctrl X, Y and Enter
#
# By default this script does nothing.
sudo alsactl restore -f /home/pi/Pi-Codec/IQaudIO_Codec_OnboardMIC_record_and_SPK_playback.state
sudo alsactl restore -f /home/pi/Pi-Codec/Codec_Zero_OnboardMIC_record_and_SPK_playback.state
exit 0
----
Expand Down Expand Up @@ -151,16 +151,32 @@ supports the unmute of the DigiAMP{plus} through additional parameters.

Firstly a "one-shot" unmute when kernel module loads.

For Raspberry Pi boards:

----
dtoverlay=rpi-digiampplus,unmute_amp
----

For IQaudIO boards:

----
dtoverlay=iqaudio-dacplus,unmute_amp
dtoverlay=iqaudio-digiampplus,unmute_amp
----

Unmute the amp when an ALSA device is opened by a client. Mute, with a five-second delay
when the ALSA device is closed. (Reopening the device within the five-second close
window will cancel mute.)

For Raspberry Pi boards:

----
dtoverlay=rpi-digiampplus,auto_mute_amp
----

For IQaudIO boards:

----
dtoverlay=iqaudio-dacplus,auto_mute_amp
dtoverlay=iqaudio-digiampplus,auto_mute_amp
----

If you do not want to control the mute state through the device tree, you can also script your own
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -239,5 +239,6 @@ image:images/RPi-S5-conn.png[camera connector, width="65%"]
Other available schematics;

* Camera Module v2 https://datasheets.raspberrypi.com/camera/camera-module-2-schematics.pdf[PDF]
* Camera Module v3 https://datasheets.raspberrypi.com/camera/camera-module-3-schematics.pdf[PDF]
* HQ Camera Module https://datasheets.raspberrypi.com/hq-camera/hq-camera-schematics.pdf[PDF]

Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ NOTE: When building on a Raspberry Pi with 1GB or less of RAM, there is a risk t

==== Building `libcamera-apps` without rebuilding `libcamera`

You can rebuild `libcamera-apps` _without_ first rebuilding the whole of `libcamera` and `libepoxy`. If you do not need support for the X11/GLES preview window then `libepoxy` can be omitted entirely. Mostly this will include Raspberry Pi OS Lite users, and they must be sure to use `-DENABLE_X11=0` when running `cmake` later. These users should run:
You can rebuild `libcamera-apps` _without_ first rebuilding the whole of `libcamera` and `libepoxy`. If you do not need support for the X11/GLES preview window then `libepoxy` can be omitted entirely. Mostly this will include Raspberry Pi OS Lite users, and they must be sure to use `-Denable_egl=false` when running `meson setup` later. These users should run:

----
sudo apt install -y libcamera-dev libjpeg-dev libtiff5-dev
Expand Down Expand Up @@ -57,7 +57,7 @@ All users should then install the following:

----
sudo apt install -y libboost-dev
sudo apt install -y libgnutls28-dev openssl libtiff5-dev
sudo apt install -y libgnutls28-dev openssl libtiff5-dev pybind11-dev
sudo apt install -y qtbase5-dev libqt5core5a libqt5gui5 libqt5widgets5
sudo apt install -y meson
sudo apt install -y cmake
Expand Down Expand Up @@ -133,6 +133,7 @@ First fetch the necessary dependencies for `libcamera-apps`.

----
sudo apt install -y cmake libboost-program-options-dev libdrm-dev libexif-dev
sudo pip3 install ninja meson
----

The `libcamera-apps` build process begins with the following:
Expand All @@ -141,43 +142,43 @@ The `libcamera-apps` build process begins with the following:
cd
git clone https://github.com/raspberrypi/libcamera-apps.git
cd libcamera-apps
mkdir build
cd build
----

At this point you will need to run `cmake` after deciding what extra flags to pass it. The valid flags are:
At this point you will need to run `meson setup` 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 Raspberry Pi 3 or Raspberry Pi 4 devices running a 32-bit OS. Some post-processing features may run more quickly.
* `-Dneon_flags=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.
* `-Denable_libav=true` or `-Denable_libav=false` - this enables or disables the libav encoder integration.

* `-DENABLE_X11=1` or `-DENABLE_X11=0` - this enables or disables the X Windows based preview. You should disable this if your system does not have X Windows installed.
* `-Denable_drm=true` or `-Denable_drm=false` - this enables or disables the DRM/KMS preview rendering. This is what implements the preview window when X Windows is not running.

* `-DENABLE_QT=1` or `-DENABLE_QT=0` - this enables or disables support for the Qt-based implementation of the preview window. You should disable it if you do not have X Windows installed, or if you have no intention of using the Qt-based preview window. The Qt-based preview is normally not recommended because it is computationally very expensive, however it does work with X display forwarding.
* `-Denable_egl=true` or `-Denable_egl=false` - this enables or disables the X Windows based preview. You should disable this if your system does not have X Windows installed.

* `-DENABLE_OPENCV=1` or `-DENABLE_OPENCV=0` - you may choose one of these to force OpenCV-based post-processing stages to be linked (or not). If you enable them, then OpenCV must be installed on your system. Normally they will be built by default if OpenCV is available.
* `-Denable_qt=true` or `-Denable_qt=false` - this enables or disables support for the Qt-based implementation of the preview window. You should disable it if you do not have X Windows installed, or if you have no intention of using the Qt-based preview window. The Qt-based preview is normally not recommended because it is computationally very expensive, however it does work with X display forwarding.

* `-DENABLE_TFLITE=1` or `-DENABLE_TFLITE=0` - choose one of these to enable TensorFlow Lite post-processing stages (or not). By default they will not be enabled. If you enable them then TensorFlow Lite must be available on your system. Depending on how you have built and/or installed TFLite, you may need to tweak the `CMakeLists.txt` file in the `post_processing_stages` directory.
* `-Denable_opencv=true` or `-Denable_opencv=false` - you may choose one of these to force OpenCV-based post-processing stages to be linked (or not). If you enable them, then OpenCV must be installed on your system. Normally they will be built by default if OpenCV is available.

For Raspberry Pi OS users we recommend the following `cmake` command:
* `-Denable_tflite=true` or `-Denable_tflite=false` - choose one of these to enable TensorFlow Lite post-processing stages (or not). By default they will not be enabled. If you enable them then TensorFlow Lite must be available on your system. Depending on how you have built and/or installed TFLite, you may need to tweak the `meson.build` file in the `post_processing_stages` directory.

For Raspberry Pi OS users we recommend the following `meson setup` command:

----
cmake .. -DENABLE_DRM=1 -DENABLE_X11=1 -DENABLE_QT=1 -DENABLE_OPENCV=0 -DENABLE_TFLITE=0
meson setup build -Denable_libav=true -Denable_drm=true -Denable_egl=true -Denable_qt=true -Denable_opencv=false -Denable_tflite=false
----

and for Raspberry Pi OS Lite users:

----
cmake .. -DENABLE_DRM=1 -DENABLE_X11=0 -DENABLE_QT=0 -DENABLE_OPENCV=0 -DENABLE_TFLITE=0
meson setup build -Denable_libav=false -Denable_drm=true -Denable_egl=false -Denable_qt=false -Denable_opencv=false -Denable_tflite=false
----

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.
In both cases, consider `-Dneon_flags=armv8-neon` if you are using a 32-bit OS on a Raspberry Pi 3 or Raspberry Pi 4. Consider `-Denable_opencv=true` if you have installed _OpenCV_ and wish to use OpenCV-based post-processing stages. Finally also consider `-Denable_tflite=true` 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:
After executing the `meson setup` command of your choice, the whole process concludes with the following:

----
make -j4 # use -j1 on Raspberry Pi 3 or earlier devices
sudo make install
meson compile -C build # use -j1 on Raspberry Pi 3 or earlier devices
sudo meson install -C build
sudo ldconfig # this is only necessary on the first build
----

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ video::CQtliTJ41ZE[youtube]

To get started with your Raspberry Pi computer, you'll need the following accessories:

A computer monitor or television. Most should work as a display for the Raspberry Pi, but for best results, you should use a display with HDMI input. You'll also need an appropriate xref:getting-started.adoc#connecting-a-display[display] cable to connect your monitor to your Raspberry Pi.
A computer monitor or television. Most should work as a display for the Raspberry Pi, but for best results, you should use a display with HDMI® input. You'll also need an appropriate xref:getting-started.adoc#connecting-a-display[display] cable to connect your monitor to your Raspberry Pi.

A computer keyboard and mouse

Expand All @@ -31,7 +31,7 @@ NOTE: The Raspberry Pi 4 has two micro HDMI connectors, which require a good-qua
If you're using your Raspberry Pi with a monitor with built-in speakers and are connecting to it using an HDMI cable, you can also use it to output sound. For monitors with a DVI port, you can use an HDMI-to-DVI cable or an HDMI cable with a DVI adapter. In addition, you can use an HDMI-to-VGA adapter for older monitors that only support VGA.


NOTE: Unlike HDMI the DVI and VGA standards do not support audio.
NOTE: Unlike HDMI, the DVI and VGA standards do not support audio.

Finally, some models of Raspberry Pi have a composite out port for connecting to analog devices, but the type of connector varies depending on the model. The original Raspberry Pi used an RCA connector, and a standard RCA composite video lead will work. Other models (Raspberry Pi B+ and later) combine the audio and composite out onto the same 3.5mm jack. This requires a particular type of lead, with audio left on the tip, audio right on ring 1, ground on ring 2, and video on the sleeve. This is the same as leads used on the Zune and on Apple devices.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -576,7 +576,7 @@ Default: `0`

Configures the EEPROM `Write Status Register`. This can be set to either mark the entire EEPROM as write-protected or clear write-protection.

This option must be used in conjunction with the EEPROM `/WP` pin which controls updates to the EEPROM `Write Status Register`. Pulling `/WP` low (CM4 `EEPROM_nEP` or Pi4B `TP5`) does NOT write-protect the EEPROM unless the `Write Status Register` has also been configured.
This option must be used in conjunction with the EEPROM `/WP` pin which controls updates to the EEPROM `Write Status Register`. Pulling `/WP` low (CM4 `EEPROM_nWP` or on a Raspberry Pi 4 `TP5`) does NOT write-protect the EEPROM unless the `Write Status Register` has also been configured.

See the https://www.winbond.com/resource-files/w25x40cl_f%2020140325.pdf[Winbond W25x40cl datasheet] for further details.

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
== Parallel Display Interface (DPI)

[.whitepaper, title="Using a DPI Display on the Raspberry Pi", subtitle="", link=https://pip.raspberrypi.com/categories/685-whitepapers-app-notes/documents/RP-003471-WP/Using-a-DPI-display.pdf]
****
Display Parallel Interface (DPI) displays can be connected to Raspberry Pi devices via the 40-pin general-purpose input/output (GPIO) connector as an alternative to using the dedicated Display Serial Interface (DSI) or High-Definition Multimedia Interface (HDMI) ports. Many third-party DPI displays have been made available to take advantage of this. The Buster (and earlier) Raspberry Pi operating system (OS) and the legacy display stack used Raspberry Pi-specific parameters in config.txt to configure DPI displays. With the move to Bullseye and its use of the Kernel Mode Setting (KMS) graphics driver by default, these config.txt entries are no longer relevant as all control of the display pipeline has shifted to the Linux kernel.

This whitepaper assumes that the Raspberry Pi is running the Raspberry Pi OS (Linux), and is fully up to date with the latest firmware and kernels.
****

An up-to-24-bit parallel RGB interface is available on all Raspberry Pi boards with the 40 way header and the Compute Modules. This interface allows parallel RGB displays to be attached to the Raspberry Pi GPIO either in RGB24 (8 bits for red, green and blue) or RGB666 (6 bits per colour) or RGB565 (5 bits red, 6 green, and 5 blue).

This interface is controlled by the GPU firmware and can be programmed by a user via special config.txt parameters and by enabling the correct Linux Device Tree overlay.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ $ sudo apt install automake autoconf build-essential texinfo libtool libftdi-dev
and then build OpenOCD.

----
$ git clone https://github.com/raspberrypi/openocd.git --branch rp2040 --depth=1 --no-single-branch
$ git clone https://github.com/raspberrypi/openocd.git --branch rp2040-v0.12.0 --depth=1 --no-single-branch
$ cd openocd
$ ./bootstrap
$ ./configure
Expand Down Expand Up @@ -61,7 +61,7 @@ and build OpenOCD from source.

----
$ cd ~/pico
$ git clone https://github.com/raspberrypi/openocd.git --branch rp2040 --depth=1
$ git clone https://github.com/raspberrypi/openocd.git --branch rp2040-v0.12.0 --depth=1
$ cd openocd
$ export PATH="/usr/local/opt/texinfo/bin:$PATH"
$ ./bootstrap
Expand Down Expand Up @@ -98,7 +98,7 @@ Pick all when installing the `mingw-w64-x86_64` toolchain by pressing ENTER.
Close MSYS2 and reopen the 64-bit version to make sure the environment picks up GCC,

----
$ git clone https://github.com/raspberrypi/openocd.git --branch rp2040 --depth=1
$ git clone https://github.com/raspberrypi/openocd.git --branch rp2040-v0.12.0 --depth=1
$ cd openocd
$ ./bootstrap
$ ./configure --disable-werror
Expand Down
1 change: 1 addition & 0 deletions jekyll-assets/_includes/copyright.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,6 @@
<div class="legal-inner">
<p id="copyright">Raspberry Pi documentation is copyright &copy; 2012-{{ site.time | date: '%Y' }} Raspberry Pi Ltd and is licensed under a <a href="https://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International</a> (CC BY-SA) licence.</p>
<p id="copyright">Some content originates from the <a href="http://elinux.org/">eLinux wiki</a>, and is licensed under a <a href="http://creativecommons.org/licenses/by-sa/3.0/">Creative Commons Attribution-ShareAlike 3.0 Unported</a> licence.</p>
<p id="copyright">The terms HDMI, HDMI High-Definition Multimedia Interface, HDMI trade dress and the HDMI Logos are trademarks or registered trademarks of HDMI Licensing Administrator, Inc</p>
</div>
</div>
8 changes: 8 additions & 0 deletions jekyll-assets/css/style.css
Original file line number Diff line number Diff line change
Expand Up @@ -509,6 +509,14 @@ td div.listingblock div.content code {
height: auto;
}

div.imageblock div.title {
font-style: italic;
font-weight: 300;
font-size: 0.8em;
margin-top: -15px;
margin-bottom: 30px;
}

.w10 { width: 10%; }
.w20 { width: 20%; }
.w30 { width: 30%; }
Expand Down
2 changes: 1 addition & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
pyyaml == 6.0
lxml == 4.9.2
lxml == 4.9.3
3 changes: 2 additions & 1 deletion scripts/create_build_adoc.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ def check_no_markdown(filename):
seen_header = False
with open(src_adoc) as in_fh:
for line in in_fh.readlines():
if line.startswith('== '):
if re.match('^=+ ', line) is not None:
if not seen_header:
seen_header = True
if github_edit is not None:
Expand All @@ -81,6 +81,7 @@ def check_no_markdown(filename):
:doctitle: {}
:page-sub_title: {}
:sectanchors:
:figure-caption!:
{}
""".format(output_subdir, includes_dir, '{} - {}'.format(site_config['title'], index_title), index_title, new_contents))
2 changes: 1 addition & 1 deletion scripts/create_build_adoc_include.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ def check_no_markdown(filename):
new_contents = ''
seen_header = False
for line in in_fh.readlines():
if line.startswith('== '):
if re.match('^=+ ', line) is not None:
if not seen_header:
seen_header = True
if github_edit is not None:
Expand Down

0 comments on commit f87e5e8

Please sign in to comment.