Raspberry pi sources list


Raspberry pi sources list

I compared installed source from an official raspbian and from a raspbian unattended netinstaller.

It appears that sources differs:

I then have a few questions:

— Why does the rpi section in the official raspbian has been replaced by the firmware section in the raspbian unattended netinstaller?
— Why does the ui section in the official raspbian has been deleted from the raspbian unattended netinstaller? Is it because the raspbian unattended netinstaller is mainly used to install headless servers?
— Why is there two sources (mirrordirector.raspbian.org and archive.raspberrypi.org) with the same main section for the single raspbian operating system? One should be enough!

Re: what sources for apt?

It appears that you are looking at ancient history. Wheezy has expired, Jessie has retired, Stretch is the current version of Raspbian.

Looking at a copy of Raspbian Lite 2017-09-07

Languages using left-hand whitespace for syntax are ridiculous

DMs sent on https://twitter.com/DougieLawson or LinkedIn will be answered next month.
Fake doctors — are all on my foes list.

The use of crystal balls and mind reading is prohibited.

Re: what sources for apt?

Re: what sources for apt?

Thanks guys for your answers.

Dougie, you gave some information about raspbian and debian versions. Good. But you did not answered the question. And the question applied to jessie also applies to stretch.

Dirks, you said that both repo are different, and I agree, they contains different packages even if the section name is the same. But you end your post by telling me to browse the repos, which is an endless task!

Is there a way to have a global view about:

— What’s in the firmware section and why it is not included in the default raspbian install?
— What’s in the ui section?
— What’s in the rpi section and why it is not included in the default raspbian ua netinst?

Re: what sources for apt?

As I said the packages in the RPF repo are all additions / modifications made by the RPF. They are not in the Debian repos and as a result of that also not in the Raspbian Repos.

Re rpi / firmware: not really know why that is, but you have to accept that naming and contents can be chosen freely by the repo maintainers.
If the RPF decide to rename ui to pileofrubbish then they can do that. It does not have any impact on other repos (unless they point to the RPF repos of course)

raspbian_ua_netinst is just another distro. It has a different maintainer and has no direct relation to Raspbian / RPF maintainers. It uses some of the Rapsbian stuff and some of RPF stuff and some of its own stuff. There are others that do the same

If you want to know what’s packages you could also have a look at the Packages files.
The one for ui (and armhf / Stretch) is at http://archive.raspberrypi.org/debian/d . f/Packages

Re: what sources for apt?

Thanks for these informations. I was expecting a source of information to get general informations about sections.

And raspbian-ua-netinst default distro is jessie, not yet stretch.

Re: what sources for apt?

raspberrypi-firmware from raspberrypi.org contains the kernel + firmware (bootloaders). The kernel is from the RPF.

The package from raspbian.org is called raspberrypi-firmware-nokernel. The kernel is contained in the separate linux-image-rpi packages. What you are getting is a more debian like kernel.

The ui section contains modified user interface packages. It’s mainly to do with the pixel desktop. The rpi section contains packages specific to the pi, and not part of debian. There is only a couple in there.

If you want to install stretch and are after a pure debian/raspbian install then you can use the netboot installer I posted a few days ago.


Raspberry Pi


rpi-eeprom Public

Installation scripts and binaries for the closed sourced Raspberry Pi 4 EEPROMs

1 Updated Oct 6, 2022

picamera2 Public

New libcamera based python library

1 Updated Oct 6, 2022

documentation Public

The official documentation for Raspberry Pi computers and microcontrollers

9 Updated Oct 6, 2022

pico-sdk Public

33 Updated Oct 6, 2022

linux Public

Kernel source tree for Raspberry Pi-provided kernel builds. Issues unrelated to the linux kernel should be posted on the community forum at https://forums.raspberrypi.com/

50 Updated Oct 5, 2022

ban-hammer Public

One click ban for phpBB 3.1.x line

0 Updated Oct 5, 2022

rpi-firmware Public

Firmware files for the Raspberry Pi

1 Updated Oct 5, 2022

firmware Public

This repository contains pre-compiled binaries of the current Raspberry Pi kernel and modules, userspace libraries, and bootloader/GPU firmware.

1 Updated Oct 5, 2022

libcamera-apps Public

0 Updated Oct 5, 2022

rpi-imager Public

17 Updated Oct 4, 2022

pico-examples Public

29 Updated Oct 3, 2022

usbboot Public

Raspberry Pi USB booting code, moved from tools repository

3 Updated Oct 3, 2022

picoprobe Public

9 Updated Sep 27, 2022

piserver Public

Raspberry Pi Server wizard to serve Raspbian to network booting Pis

0 Updated Sep 26, 2022

style-guide Public

0 Updated Sep 23, 2022

pico-extras Public

9 Updated Sep 22, 2022

pico-tflmicro Public

Pico TensorFlow Lite Port

0 Updated Sep 18, 2022

pico-project-generator Public

Tool to automatically generate a Pico C SDK Project

7 Updated Sep 9, 2022

utils Public

A collection of scripts and simple applications

0 Updated Sep 8, 2022

usb-pid Public

Raspberry Pi Pico PID allocations

0 Updated Sep 2, 2022

picotool Public

6 Updated Sep 1, 2022

libcamera Public

0 Updated Aug 31, 2022

hats Public

5 Updated Aug 23, 2022

openocd Public

3 Updated Aug 21, 2022

userland Public

Source code for ARM side libraries for interfacing to Raspberry Pi GPU.

28 Updated Jul 27, 2022

tools Public

6 Updated Jul 11, 2022

pico-playground Public

1 Updated Jul 9, 2022

pico-micropython-examples Public

Examples to accompany the «Raspberry Pi Pico Python SDK» book.

2 Updated Jul 6, 2022

cmprovision Public

Provisioning system for CM4 products

0 Updated Jul 5, 2022

raspiraw Public

Example app directly receiving raw data from CSI2 sensors

7 Updated Jun 10, 2022

© 2022 GitHub, Inc.

You can’t perform that action at this time.

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.


Raspberry Pi Documentation


Raspberry Pi OS is a free operating system based on Debian, optimised for the Raspberry Pi hardware, and is the recommended operating system for normal use on a Raspberry Pi. The OS comes with over 35,000 packages: precompiled software bundled in a nice format for easy installation on your Raspberry Pi.

Raspberry Pi OS is under active development, with an emphasis on improving the stability and performance of as many Debian packages as possible on Raspberry Pi.

Updating and Upgrading Raspberry Pi OS

It’s important to keep your Raspberry Pi up to date. The first and probably the most important reason is security. A device running Raspberry Pi OS contains millions of lines of code that you rely on. Over time, these millions of lines of code will expose well-known vulnerabilities, which are documented in publicly available databases meaning that they are easy to exploit. The only way to mitigate these exploits as a user of Raspberry Pi OS is to keep your software up to date, as the upstream repositories track CVEs closely and try to mitigate them quickly.

The second reason, related to the first, is that the software you are running on your device most certainly contains bugs. Some bugs are CVEs, but bugs could also be affecting the desired functionality without being related to security. By keeping your software up to date, you are lowering the chances of hitting these bugs.

Using APT

The easiest way to manage installing, upgrading, and removing software is using APT (Advanced Packaging Tool) from Debian. To update software in Raspberry Pi OS, you can use the apt tool from a Terminal window.

Keeping your Operating System up to Date

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:

Copy to Clipboard

Next, upgrade all your installed packages to their latest versions with the following command:

Copy to Clipboard

Note that full-upgrade is used in preference to a simple upgrade , as it also picks up any dependency changes that may have been made.

Generally speaking, doing this regularly will keep your installation up to date for the particular major Raspberry Pi OS release you are using (e.g. Buster). It will not update from one major release to another, for example, Stretch to Buster or Buster to Bullseye.

However, there are occasional changes made in the Raspberry Pi OS image that require manual intervention, for example a newly introduced package. These are not installed with an upgrade, as this command only updates the packages you already have installed.

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 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

When running sudo apt full-upgrade , it will show how much data will be downloaded and how much space it will take up on the SD card. It’s worth checking with df -h that you have enough free disk space, as unfortunately apt will not do this for you. Also be aware that downloaded package files ( .deb files) are kept in /var/cache/apt/archives . You can remove these in order to free up space with sudo apt clean ( sudo apt-get clean in older releases of apt).

Upgrading from Previous Operating System Versions

Upgrading an existing image is possible, but is not guaranteed to work in every circumstance and we do not recommend it. If you do wish to try upgrading your operating system version, we strongly suggest making a backup first — we can accept no responsibility for loss of data from a failed update.

The latest version of Raspberry Pi OS is based on Debian Bullseye. The previous version was based on Buster. If you want to perform an in-place upgrade from Buster to Bullseye (and you’re aware of the risks) see the instructions in the forums.

Searching for Software

You can search the archives for a package with a given keyword with apt-cache search :

Copy to Clipboard

You can view more information about a package before installing it with apt-cache show :

Copy to Clipboard

Installing a Package with APT

Copy to Clipboard

Typing this command should inform the user how much disk space the package will take up and asks for confirmation of the package installation. Entering Y (or just pressing Enter , as yes is the default action) will allow the installation to occur. This can be bypassed by adding the -y flag to the command:

Copy to Clipboard

Installing this package makes tree available for the user.

Uninstalling a Package with APT

You can uninstall a package with apt remove :

Copy to Clipboard

The user is prompted to confirm the removal. Again, the -y flag will auto-confirm.

You can also choose to completely remove the package and its associated configuration files with apt purge :

Copy to Clipboard

Using rpi-update

rpi-update is a command line application that will update your Raspberry Pi OS kernel and VideoCore firmware to the latest pre-release versions.

Pre-release versions of software are not guaranteed to work. You should not use rpi-update on any system unless recommended to do so by a Raspberry Pi engineer. It may leave your system unreliable or even completely broken. It should not be used as part of any regular update process.

The rpi-update script was originally written by Hexxeh, but is now supported by Raspberry Pi engineers. The script source is in the rpi-update repository.

What it does

rpi-update will download the latest pre-release version of the linux kernel, its matching modules, device tree files, along with the latest versions of the VideoCore firmware. It will then install these files to relevant locations on the SD card, overwriting any previous versions.

All the source data used by rpi-update comes from the rpi-firmware repository. This repository simply contains a subset of the data from the official firmware repository, as not all the data from that repo is required.

Running rpi-update

If you are sure that you need to use rpi-update , it is advisable to take a backup of your current system first as running rpi-update could result in a non-booting system.

rpi-update needs to be run as root. Once the update is complete you will need to reboot.

Copy to Clipboard

It has a number of options documented in the rpi-update repository.

How to get back to safety

If you have done an rpi-update and things are not working as you wish, if your Raspberry Pi is still bootable you can return to the stable release using:

Copy to Clipboard

You will need to reboot your Raspberry Pi for these changes to take effect.

Playing Audio and Video

The following documentation refers to Raspberry Pi OS Buster and earlier versions. OMXPlayer has been deprecated in the latest OS release. If you are running Bullseye, VLC is now the recommended alternative.

The simplest way of playing audio and video on Raspberry Pi is to use the installed OMXPlayer application.

This is hardware accelerated, and can play back many popular audio and video file formats. OMXPlayer uses the OpenMAX ( omx ) hardware acceleration interface (API) which is the officially supported media API on Raspberry Pi. OMXPlayer was developed by the Kodi Project’s Edgar Hucek.

The OMXPlayer Application

The simplest command line is omxplayer . The media file can be audio or video or both. For the examples below, we used an H264 video file that is included with the standard Raspberry Pi OS installation.

Copy to Clipboard

By default the audio is sent to the analog port. If you are using a HDMI-equipped display device with speakers, you need to tell omxplayer to send the audio signal over the HDMI link.

Copy to Clipboard

When displaying video, the whole display will be used as output. You can specify which part of the display you want the video to be on using the window option.

Copy to Clipboard

You can also specify which part of the video you want to be displayed: this is called a crop window. This portion of the video will be scaled up to match the display, unless you also use the window option.

Copy to Clipboard

If you are using the Raspberry Pi Touch Display, and you want to use it for video output, use the display option to specify which display to use. n is 5 for HDMI, 4 for the touchscreen. With the Raspberry Pi 4 you have two options for HDMI output. n is 2 for HDMI0 and 7 for HDMI1.

Copy to Clipboard

How to Play Audio

To play an MP3 file, navigate to the location of the .mp3 file in the terminal using cd and then type the following command:

Copy to Clipboard

This will play the audio file example.mp3 through either your monitor’s built-in speakers or your headphones, connected via the headphone jack.

If you need an example file you can download one from here using the following command:

Copy to Clipboard

If you cannot hear anything, make sure your headphones or speakers are connected correctly. Note that omxplayer doesn’t use ALSA and so ignores the audio configuration set by raspi-config or amixer .

If omxplayer’s auto-detection of the correct audio output device fails, you can force output over HDMI with:

Copy to Clipboard

Alternatively, you can force output over the headphone jack with:

Copy to Clipboard

You can even force output over both the headphone jack and HDMI with:

Copy to Clipboard

How to Play Video

To play a video, navigate to the location of your video file in the terminal using cd , then type the following command:

Copy to Clipboard

This will play the example.mp4 in full screen. Hit Ctrl + C to exit.

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

A video sample of the animated film Big Buck Bunny is available on your Raspberry Pi. To play it enter the following command into a terminal window:

Copy to Clipboard

On a Raspberry Pi 4, use the following command for H264 files:

Copy to Clipboard

or for H264, VC1, or MPEG2

Copy to Clipboard

When using VLC, you can improve playback performance by encapsulating the raw H264 stream, for example from the Raspberry Pi Camera Module. This is easily done using ffmpeg . Playback is also improved if VLC is run full screen; either select fullscreen from the user interface, or you can add the —fullscreen options to the vlc command line.

This example command converts video.h264 to a containerised video.mp4 at 30 fps:

ffmpeg -r 30 -i video.h264 -c:v copy video.mp4

Options During Playback

There are a number of options available during playback, actioned by pressing the appropriate key. Not all options will be available on all files. The list of key bindings can be displayed using omxplayer —keys :

Copy to Clipboard

Playing in the Background

omxplayer will close immediately if run in the background without tty (user input), so to run successfully, you need to tell omxplayer not to require any user input using the —no-keys option.

Copy to Clipboard

Adding the & at the end of the command runs the job in the background. You can then check the status of this background job using the jobs command. By default, the job will complete when omxplayer finishes playing, but if necessary, you can stop it at any point using the kill command.

Copy to Clipboard

Using a USB webcam

Rather than using the Raspberry Pi camera module, you can use a standard USB webcam to take pictures and video on your Raspberry Pi.

The quality and configurability of the camera module is highly superior to a standard USB webcam.

First, install the fswebcam package:

Copy to Clipboard

If you are not using the default pi user account, you need to add your username to the video group, otherwise you will see ‘permission denied’ errors.

Copy to Clipboard

To check that the user has been added to the group correctly, use the groups command.

Basic Usage

Enter the command fswebcam followed by a filename and a picture will be taken using the webcam, and saved to the filename specified:

Copy to Clipboard

This command will show the following information:

Copy to Clipboard

The small default resolution used, and the presence of a banner showing the timestamp.

The webcam used in this example has a resolution of 1280 x 720 so to specify the resolution I want the image to be taken at, use the -r flag:

Copy to Clipboard

This command will show the following information:

Copy to Clipboard

Picture now taken at the full resolution of the webcam, with the banner present.

Removing the Banner

Now add the —no-banner flag:

Copy to Clipboard

which shows the following information:

Copy to Clipboard

Now the picture is taken at full resolution with no banner.

Automating Image Capture

You can write a Bash script which takes a picture with the webcam. The script below saves the images in the /home/pi/webcam directory, so create the webcam subdirectory first with:

Copy to Clipboard

To create a script, open up your editor of choice and write the following example code:

Copy to Clipboard

This script will take a picture and name the file with a timestamp. Say we saved it as webcam.sh , we would first make the file executable:

Copy to Clipboard

Copy to Clipboard

Which would run the commands in the file and give the usual output:

Copy to Clipboard

Time-Lapse Captures

You can use cron to schedule taking a picture at a given interval, such as every minute to capture a time-lapse.

First open the cron table for editing:

Copy to Clipboard

This will either ask which editor you would like to use, or open in your default editor. Once you have the file open in an editor, add the following line to schedule taking a picture every minute (referring to the Bash script from above):

Copy to Clipboard

Save and exit and you should see the message:

Copy to Clipboard

Ensure your script does not save each picture taken with the same filename. This will overwrite the picture each time.

Useful Utilities

There are several useful command line


tvservice is a command line application used to get and set information about the display, targeted mainly at HDMI video and audio.

Typing tvservice by itself will display a list of available command line options.

-p, —preferred

Power on the HDMI output with preferred settings.

-o, —off

Powers off the display output.

Powering off the output using this command will also destroy any framebuffers/dispmanx layers associated with the display. These are NOT re-established with a subsequent power on, so will result in a blank screen.

A better option is to use the vcgencmd display_power option, as this will retain any framebuffers, so when the power is turned back on the display will be the returned to the previous power on state.

-e, —explicit=»Group Mode Drive»

Power on the HDMI with the specified settings

Group can be one of CEA , DMT , CEA_3D_SBS , CEA_3D_TB , CEA_3D_FP , CEA_3D_FS .
Mode is one of the modes returned from the -m, —modes option.
Drive can be one of HDMI , DVI .

-t, —ntsc

Use 59.94Hz (NTSC frequency) rather than 60Hz for HDMI mode.

-c, —sdtvon=»Mode Aspect [P]»

Power on the SDTV (composite output) with the specified mode, PAL or NTSC , and the specified aspect, 4:3 , 14:9 , 16:9 . The optional P parameter can be used to specify progressive mode.

-m, —modes=Group

where Group is CEA or DMT .

Shows a list of display modes available in the specified group.

-M, —monitor

Monitors for any HDMI events, for example unplugging or attaching.

-s, —status

Shows the current settings for the display mode, including mode, resolution, and frequency.

-a, —audio

Shows the current settings for the audio mode, including channels, sample rate and sample size.

-d, —dumpid=filename

Save the current EDID to the specified filename. You can then use edidparser to display the data in a human readable form.

-j, —json

When used in combination with the —modes options, displays the mode information in JSON format.

-n, —name

Extracts the display name from the EDID data and shows it.

-l, —list

Lists all attached displays and their display ID.

-v, —device=display

Specifies the ID of the device to use; see the output of —list for available IDs.


The vcgencmd tool is used to output information from the VideoCore GPU on the Raspberry Pi. You can find source code for the vcgencmd utility on Github.

To get a list of all commands which vcgencmd supports, use vcgencmd commands . Some useful commands and their required parameters are listed below.

The vcos command has two useful sub-commands:

version displays the build date and version of the firmware on the VideoCore

log status displays the error log status of the various VideoCore firmware areas


Displays the build date and version of the VideoCore firmware.


Displays the enabled and detected state of the Raspberry Pi camera: 1 means yes, 0 means no. Whilst all firmware except cutdown versions support the camera, this support needs to be enabled by using raspi-config.


Returns the throttled state of the system. This is a bit pattern — a bit being set indicates the following meanings:

Arm frequency capped

Soft temperature limit active

Under-voltage has occurred

Arm frequency capping has occurred

Throttling has occurred

Soft temperature limit has occurred


Returns the temperature of the SoC as measured by its internal temperature sensor; on Raspberry Pi 4, measure_temp pmic returns the temperature of the PMIC.

measure_clock [clock]

This returns the current frequency of the specified clock. The options are:

Image Sensor Pipeline

PWM block (analogue audio output)

SD card interface

Analogue video encoder

Display Parallel Interface

e.g. vcgencmd measure_clock arm

measure_volts [block]

Displays the current voltages used by the specific block.

VC4 core voltage

SDRAM Core Voltage

SDRAM I/O voltage

SDRAM Phy Voltage


Displays the content of the OTP (one-time programmable) memory inside the SoC. These are 32 bit values, indexed from 8 to 64. See the OTP bits page for more details.

get_config [configuration item|int|str]

Display value of the configuration setting specified: alternatively, specify either int (integer) or str (string) to see all configuration items of the given type. For example:

Copy to Clipboard

returns the total memory on the device in megabytes.

get_mem type

Reports on the amount of memory addressable by the ARM and the GPU. To show the amount of ARM-addressable memory use vcgencmd get_mem arm ; to show the amount of GPU-addressable memory use vcgencmd get_mem gpu . Note that on devices with more than 1GB of memory the arm parameter will always return 1GB minus the gpu memory value, since the GPU firmware is only aware of the first 1GB of memory. To get an accurate report of the total memory on the device, see the total_mem configuration item — see get_config section above.

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 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.


Displays the resolution and colour depth of any attached display.


Displays statistics on any OOM (out of memory) events occurring in the VideoCore memory space.


Displays statistics from the relocatable memory allocator on the VideoCore.


Returns the current speed voltage and temperature of the ring oscillator.


Displays the current HDMI settings timings. See Video Config for details of the values returned.


Dump a list of all dispmanx items currently being displayed.

display_power [0 | 1 | -1] [display]

Show current display power state, or set the display power state. vcgencmd display_power 0 will turn off power to the current display. vcgencmd display_power 1 will turn on power to the display. If no parameter is set, this will display the current power state. The final parameter is an optional display ID, as returned by tvservice -l or from the table below, which allows a specific display to be turned on or off.

Note that for the 7″ Raspberry Pi Touch Display this simply turns the backlight on and off. The touch functionality continues to operate as normal.

vcgencmd display_power 0 7 will turn off power to display ID 7, which is HDMI 1 on a Raspberry Pi 4.