From Fedora Project Wiki
m (gpio)
mNo edit summary
 
(65 intermediate revisions by 15 users not shown)
Line 1: Line 1:
{{autolang|base=yes}}
{{autolang|base=yes}}


{{admon/tip | The Raspberry Pi 2/3 is now supported in in all stable Fedora releases. The new Raspberry Pi 3 B+ has initial support only in Fedora 28+. Please report issues to the ARM mailing list or IRC channel }}
{{admon/tip | The Raspberry Pi 3 and 4 are supported in in all stable Fedora releases. Please report issues to the ARM mailing list or IRC channel }}


= Introduction =
== Introduction ==


The [https://www.raspberrypi.org Raspberry Pi] is a credit card-sized ARM based single board computer (SBC). Fedora supports the the Raspberry Pi Model B versions 2 and 3 in all current Fedora releases, the 3+ is supported in Fedora 29 without any requirement of third party kernels or scripts to adjust official images. This documentation describes how to get started, and includes a Frequently Asked Questions (FAQ) about what is supported and what isn't.
The [https://www.raspberrypi.org Raspberry Pi] is a credit card-sized ARM based single board computer (SBC). Fedora supports the the Raspberry Pi 3-series of devices including the 3B, 3B+, 3A+, 3CM and 3CM+ and the Raspberry Pi 4 in Fedora 37 and later releases. This documentation describes how to get started, and includes a Frequently Asked Questions (FAQ) about what is supported and what isn't.


= Supported Hardware =
== Supported Hardware ==


We currently support the Raspberry Pi Model B versions 2, 3. and as of Fedora 29 also the 3+
We currently support the Raspberry Pi 3-series of devices (3B, 3B+, 3A+, CM3, CM3+) and the Raspberry Pi 4-series (4B, 400, CM4, CM4s) and the Zero2W.


= Prerequisites =
Fedora IoT lists the Raspberry Pi 4 as one of its [https://docs.fedoraproject.org/en-US/iot/reference-platforms/ Reference Platforms].


* A Raspberry Pi 2, 3 or 3+
Official support for the Zero 5B is under review.
 
=== UEFI support ===
 
The [https://github.com/pftf Pi Firmware Task Force] is working to create a fully featured [https://developer.arm.com/architectures/system-architectures/arm-systemready SystemReady-ES] UEFI port for the RPi3 and RPi4. That project is rapidly evolving. As of version 1.5, Fedora 31+ will boot in ACPI mode on the Raspberry Pi 4 with gradually improving device support as one moves to newer kernels. Given a system running a Linux 5.7+ based kernel, the onboard NIC, PCI/XHCI, Graphics, etc, work. RPi3+DT support in the project is quite complete and mature. Firmware install guides for the [https://github.com/pftf/RPi4#readme RPi4] and [https://github.com/pftf/RPi3#readme RPi3] are found on that project's github. From there the fedora installer DVD [ISO https://getfedora.org/] for aarch64 should be used, or the fedora process for setting up PXE/HTTP boot.
 
== Prerequisites ==
 
* A Raspberry Pi 3-series device or 4.
* Good quality SD Card ([http://elinux.org/RPi_SD_cards eLinux] hosts a compatibility list)
* Good quality SD Card ([http://elinux.org/RPi_SD_cards eLinux] hosts a compatibility list)
* HDMI Monitor or TV, a USB keyboard and mouse
* HDMI Monitor or TV, a USB keyboard and mouse
* A decent power supply. You'll want at least 2A for the RPi2 and 2.5A for the RPi3 and 3+ [https://www.raspberrypi.org/documentation/faqs/#pi-power details here]
* A decent power supply. You'll want at least 2.5A. [https://www.raspberrypi.org/documentation/faqs/#pi-power details here].


For preparation of the SD card:
For preparation of the SD card:
Line 22: Line 30:
* SD card reader
* SD card reader


= Downloading the Fedora ARM image =
== Downloading the Fedora ARM image ==


Official support for the Raspberry Pi 2/3 is available in Fedora! Please read the FAQ for the current status of various features.
Official images for the supported Raspberry Pi devices can be found at the usual location [https://getfedora.org/ Get Fedora]. The various different options are linked from the various Edition, Spins, Labs and other artifact pages.


=== ARMv7 supported images ===
== Preparing the SD card ==
Fedora 29 images can be downloaded here:
* [https://download.fedoraproject.org/pub/fedora/linux/releases/29/Workstation/armhfp/images/Fedora-Workstation-armhfp-29-1.2-sda.raw.xz Fedora Workstation 29] ([https://download.fedoraproject.org/pub/fedora/linux/releases/29/Workstation/armhfp/images/Fedora-Workstation-29-1.2-armhfp-CHECKSUM checksum])
* [https://download.fedoraproject.org/pub/fedora/linux/releases/29/Server/armhfp/images/Fedora-Server-armhfp-29-1.2-sda.raw.xz Fedora Server 29] ([https://download.fedoraproject.org/pub/fedora/linux/releases/29/Server/armhfp/images/Fedora-Server-29-1.2-armhfp-CHECKSUM checksum])
* [https://download.fedoraproject.org/pub/fedora/linux/releases/29/Spins/armhfp/images/Fedora-Minimal-armhfp-29-1.2-sda.raw.xz Fedora 29 Minimal] ([https://download.fedoraproject.org/pub/fedora/linux/releases/29/Spins/armhfp/images/Fedora-Spins-29-1.2-armhfp-CHECKSUM checksum])
* [https://download.fedoraproject.org/pub/fedora/linux/releases/29/Spins/armhfp/images/ Fedora 29 Spins] ([https://download.fedoraproject.org/pub/fedora/linux/releases/29/Spins/armhfp/images/Fedora-Spins-29-1.2-armhfp-CHECKSUM checksums])


=== aarch64 supported images for Raspberry Pi 3 ===
You can quite easily prepare the image on the SD card on Fedora or any Linux distribution, MacOS or Windows. The default settings will provide the user interface on a HDMI monitor with keyboard and mouse support. If you wish to have output over a serial console please see [[#How_do_I_use_a_serial_console.3F | Section in the FAQ]].
Fedora 29 images can be downloaded here:
* [https://dl.fedoraproject.org/pub/fedora-secondary/releases/29/Workstation/aarch64/images/Fedora-Workstation-29-1.2.aarch64.raw.xz Fedora Workstation 29] ([https://dl.fedoraproject.org/pub/fedora-secondary/releases/29/Workstation/aarch64/images/Fedora-Workstation-29-1.2-aarch64-CHECKSUM checksum])
* [https://dl.fedoraproject.org/pub/fedora/linux/releases/29/Server/aarch64/images/Fedora-Server-29-1.2.aarch64.raw.xz Fedora Server 29] ([https://dl.fedoraproject.org/pub/fedora/linux/releases/29/Server/aarch64/images/Fedora-Server-29-1.2-aarch64-CHECKSUM checksum])
* [https://dl.fedoraproject.org/pub/fedora-secondary/releases/29/Spins/aarch64/images/Fedora-Minimal-29-1.2.aarch64.raw.xz Fedora 29 Minimal] ([https://dl.fedoraproject.org/pub/fedora-secondary/releases/29/Spins/aarch64/images/Fedora-Spins-29-1.2-aarch64-CHECKSUM checksum])


= Preparing the SD card =
=== Fedora or other Linux Distributions ===


You can quite easily prepare the image on the SD card on Fedora or any Linux distribution, MacOS or Windows. The default settings will provide the user interface on a HDMI monitor with keyboard and mouse support. If you wish to have output over a serial console please see [[User:Pbrobinson/RPi#How_do_I_use_a_serial_console.3Fthe | Section in the FAQ]].
==== Scripted ====
 
== Fedora or other Linux Distributions ==
===Scripted===
To install using arm-image-installer:
To install using arm-image-installer:
<pre>
<pre>
Line 72: Line 68:
</pre>
</pre>


For the Raspberry Pi 2 use <pre>--target=rpi2</pre> and for the Raspberry Pi 3 or 3+ use <pre>--target=rpi3</pre>.
For the Raspberry Pi 3 or 3+ use <pre>--target=rpi3</pre>, and for the Raspberry Pi 4 use <pre>--target=rpi4</pre>.


===Manual===
==== Manual ====
<pre> xzcat Fedora-IMAGE-NAME.raw.xz | sudo dd status=progress bs=4M of=/dev/XXX # Location of your media (will be sdX or mmcblkX depending on hardware)</pre>
<pre> xzcat Fedora-IMAGE-NAME.raw.xz | sudo dd status=progress bs=4M of=/dev/XXX # Location of your media (will be sdX or mmcblkX depending on hardware)</pre>


== MacOS ==
=== MacOS ===


The Raspberry Pi foundation provides some nice instructions for image copying using a Mac [https://www.raspberrypi.org/documentation/installation/installing-images/mac.md here].  Simply replace any image file references with the name and path of the image downloaded in the step above.
The Raspberry Pi foundation provides some nice instructions for image copying using a Mac [https://www.raspberrypi.org/documentation/installation/installing-images/mac.md here].  Simply replace any image file references with the name and path of the image downloaded in the step above.


== Microsoft Windows ==
=== Microsoft Windows ===


The Raspberry Pi foundation provides some nice instructions for image copying using a Windows [https://www.raspberrypi.org/documentation/installation/installing-images/windows.md here].  Simply replace any image file references with the name and path of the image downloaded in the step above.
The Raspberry Pi foundation provides some nice instructions for image copying using a Windows [https://www.raspberrypi.org/documentation/installation/installing-images/windows.md here].  Simply replace any image file references with the name and path of the image downloaded in the step above.


== Resizing the root partition ==
=== Resizing the root partition ===


The root partition is shrunk to the smallest size possible to ensure a small download. You currently need to resize it manually. Ideally we would like this to happen automatically (great community project idea!).
The root partition is shrunk to the smallest size possible to ensure a small download. You currently need to resize it manually. Ideally we would like this to happen automatically (great community project idea!).
=== Resize before first boot ===
==== Resize before first boot ====


The easiest way to do this before boot on a Linux system is with gparted:
The easiest way to do this is using the arm-image-installer detailed above, otherwise before boot on a Linux system is with gparted:


<pre>gparted /dev/XXX</pre>
<pre>gparted /dev/XXX</pre>


=== Resize after initial-setup ===
==== Resize after initial-setup ====


The other mechanism for doing it is once you've booted the Raspberry Pi and completed the initial setup to create accounts.
The other mechanism for doing it is once you've booted the Raspberry Pi and completed the initial setup to create accounts.
Line 113: Line 109:
pvresize /dev/mmcblk0p3
pvresize /dev/mmcblk0p3
# extend the root filesystem to take up the space just added to the volume that it is in
# extend the root filesystem to take up the space just added to the volume that it is in
lvextend -l +100%FREE /dev/fedora/root
lvextend -l +100%FREE /dev/fedora_fedora/root
# resize root partition for the server image (which uses xfs)
# resize root partition for the server image (which uses xfs)
xfs_growfs -d /
xfs_growfs -d /
</pre>
</pre>


= Booting Fedora on the Raspberry Pi for the first time =
== Booting Fedora on the Raspberry Pi for the first time ==


* Insert the SD card into the Raspberry Pi.
* Insert the SD card into the Raspberry Pi.
Line 127: Line 123:
* You should be presented with a login prompt or a getting started guide (depending on which Desktop/SPIN you're using).
* You should be presented with a login prompt or a getting started guide (depending on which Desktop/SPIN you're using).


= Applying updates and installing software =
== Applying updates and installing software ==


There are no special ways or procedures necessary to install or update the software so you just use standard Fedora installation and update mechanisms such as dnf, gnome-software or any of the other GUI update systems as supported in the various desktop environments.
There are no special ways or procedures necessary to install or update the software so you just use standard Fedora installation and update mechanisms such as dnf, gnome-software or any of the other GUI update systems as supported in the various desktop environments.


= Getting help and reporting issues =
== Getting help and reporting issues ==


So where can you get help if it’s not working? The usual Fedora support forums are:
So where can you get help if it’s not working? The usual Fedora support forums are:
Line 137: Line 133:
* [https://ask.fedoraproject.org/ Ask Fedora]
* [https://ask.fedoraproject.org/ Ask Fedora]
* [https://lists.fedoraproject.org/admin/lists/arm%40lists.fedoraproject.org/ Fedora ARM mailing list]
* [https://lists.fedoraproject.org/admin/lists/arm%40lists.fedoraproject.org/ Fedora ARM mailing list]
* [https://fedoraproject.org/wiki/IRC IRC via the #fedora-arm channel on Freenode]
* [https://matrix.to/#/#arm:fedoraproject.org Fedora Chat on Matix via the #arm:fedoraproject.org room]
 
== Frequently Asked Questions ==
= Frequently Asked Questions =


=== Why do I get a rainbow display when I try and power on my Raspberry Pi? ===
=== Why do I get a rainbow display when I try and power on my Raspberry Pi? ===
Line 147: Line 142:
* There's no OS installed. Check the SD card is properly in place and you've followed the instructions to write out the card.
* There's no OS installed. Check the SD card is properly in place and you've followed the instructions to write out the card.
* Wrong edition of the Raspberry Pi. If you try and use Fedora on a Raspberry Pi 1 or Zero you'll get this as we don't support ARMv6 SoCs.
* Wrong edition of the Raspberry Pi. If you try and use Fedora on a Raspberry Pi 1 or Zero you'll get this as we don't support ARMv6 SoCs.
* Unsupported version of Fedora, eg releases older than Fedora 29 on the RPi 3 B+
* Unsupported version of Fedora, eg releases older than Fedora 37 on the RPi 4


=== Power Supplies ===
=== Power Supplies ===


The biggest single support issue is generally not a powerful enough PSU. The Raspberry Pi 3 Series needs a 2.5W PSU, this is especially important with Fedora 29 where we support higher CPU frequencies which draws more power. PSUs that seemingly worked in the last have been seen to cause issues with Fedora 29 due to this.
The biggest single support issue is generally not a powerful enough PSU. The Raspberry Pi 3 Series needs a 2.5A PSU, this is especially important with Fedora where we support higher CPU frequencies which draws more power. PSUs that seemingly worked in the past have been seen to cause issues with Fedora due to this.


=== What desktop environments are supported? ===
=== What desktop environments are supported? ===


Both 3D/2D work out of the box and most lightweight desktops as shipped in Fedora should work just fine. There is an open source fully accelerated driver for the Video Core IV GPU.
Both 3D/2D work out of the box on Raspberry Pi 3/4 and most lightweight desktops as shipped in Fedora should work just fine. There is an open source fully accelerated driver for the Video Core IV GPU.


=== Will there be more enhancements to the hardware support ===
=== Will there be more enhancements to the hardware support? ===


Yes. New enhancements will be delivered when, and as soon as, they are ready via the standard Fedora updates mechanism. New significate features will be blogged about as they arrive either via [https://fedoramagazine.org/ Fedora Magazine] or the [http://fedoraplanet.org/ Fedora Planet].
Yes. New enhancements will be delivered when, and as soon as, they are ready via the standard Fedora updates mechanism. New significant features will be blogged about as they arrive either via [https://fedoramagazine.org/ Fedora Magazine] or the [http://fedoraplanet.org/ Fedora Planet].


=== What about support for the Raspberry Pi Models A/A+, B/B+ (generation 1), Zero/ZeroW and Compute Module? ===
=== What about support for the Raspberry Pi Models A/A+, B/B+ (generation 1), Zero/ZeroW and Compute Module? ===


THESE ARE NOT SUPPORTED!!!  
THESE ARE NOT SUPPORTED!!!


Fedora doesn't, and NEVER will, support ARMv6 processors. There's been a number of attempts to support these over the years. The current best effort is Pignus based on Fedora 23. More information can be found at [https://pignus.computer the Pignus site]. Support for the Compute Module 3 (CM3) has landed upstream in the 4.20 kernel and we will support a number of devices based on CM3 in Fedora 30.
Fedora doesn't, and NEVER will, support ARMv6 processors. There's been a number of attempts to support these over the years, none are currently active.


=== What USB devices are supported on the Raspberry Pi ===
=== What USB devices are supported on the Raspberry Pi? ===


You should be able to use most USB-2 compatible devices that are supported in Fedora on other devices. There are some limitations to the USB bus of the Raspberry Pi hardware as [https://www.raspberrypi.org/documentation/hardware/raspberrypi/usb/README.md documented here].
You should be able to use most USB-2 compatible devices that are supported in Fedora on other devices. There are some limitations to the USB bus of the Raspberry Pi hardware as [https://www.raspberrypi.org/documentation/hardware/raspberrypi/usb/README.md documented here].
Line 173: Line 168:
=== Is the onboard WiFi and Bluetooth supported on the Raspberry Pi 3? ===
=== Is the onboard WiFi and Bluetooth supported on the Raspberry Pi 3? ===


==== Wifi: ====
==== WiFi ====


Wifi on the Raspberry Pi 3 and 3+ works out of the box with Fedora 29. There was a bug with WiFi on aarch64 that is fixed with 4.19.2-301 kernels. Older stable releases also have this support with the latest kernel/linux-firmware releases.
WiFi on the Raspberry Pi 3-series devices works out of the box with Fedora. WiFi on the Raspberry Pi 4 model B works. WiFi on the Raspberry Pi Zero 2W and Raspberry Pi 400 is currently unsupported.
 
===== Using Wi-Fi on CLI =====


===== Using Wi-Fi on CLI=====
To use Wi-Fi on minimal and server images you can configure the device using command line:
To use Wi-Fi on minimal and server images you can configure the device using command line:
<pre>
<pre>
Line 186: Line 182:
</pre>
</pre>


==== Bluetooth: ====
==== Bluetooth ====
Bluetooth works quite well and seems to be quite stable. The device sometimes has a generic bluetooth address but should over all work just fine without any configuration.
Bluetooth works quite well and seems to be quite stable. The device sometimes has a generic bluetooth address but should over all work just fine without any configuration.
=== Do VLANs work on the onboard wired interface? ===
Yes, although you might need to tune the interface either with
ethtool -K eth0 rx-vlan-filter off
or something like
nmcli connection modify "Wired connection 1" ethtool.feature-rx-vlan-filter off


=== Does sound work? ===
=== Does sound work? ===
Line 193: Line 196:
HDMI audio output is included Fedora however the analog port is not yet supported. Audio output via a USB audio interface should also work fine.
HDMI audio output is included Fedora however the analog port is not yet supported. Audio output via a USB audio interface should also work fine.


=== Does the add-on camera work? ===
=== Does the camera add-on work? ===


Not currently. There is still ongoing work to support this upstream and add the appropriated media acceleration support.
Yes. You need to ensure you're running bcm283x-firmware from 2019, ensure the latest config.txt is in place (no .rpmnew) and edit /boot/efi/config.txt and adjust the gpu_mem setting to be <b>gpu_mem=80</b>.


=== Does accelerated media decode work? ===
=== Does accelerated media decode work? ===


No. There's no upstream kernel support and it relies on code from a number of kernel subsystems to be supported.
No. There's no upstream kernel support and it relies on code from a number of kernel subsystems to be supported. This is unsupported on all Raspberry Pi platforms 3/4 and Zero 2W.


=== Does HDMI-CEC work? ===
=== Does HDMI-CEC work? ===


Yes. It's supported using the new upstream CEC support. There's a /dev/cec0 character device, it can be accessed using any application that supports the IR remote using the rc-cec keymap in the v4l-utils package, there's also a cec-ctl util for use via the command line.
Yes. It's supported using the upstream CEC support. There's a /dev/cec0 character device, it can be accessed using any application that supports the IR remote using the rc-cec keymap in the v4l-utils package, there's also a cec-ctl util for use via the command line.


=== Is the Raspberry Pi Touch Display supported? ===
=== Is the Raspberry Pi Touch Display supported? ===


Work on the official Raspberry Pi Touch Display is ongoing upstream and initial support has landed in the 4.10 kernel, being [https://github.com/anholt/linux/issues/8 tracked upstream]. Fedora will review any missing pieces for support soon. The touchscreen driver isn't yet releases upstream. Support for other displays is not currently planned.
Yes.


=== Is the composite TV out supported? ===
=== Is the composite TV out supported? ===


The composite TV out is not currently supported in a stable Fedora release but the core support has landed upstream in the 4.10 kernel. There's some missing enabling patches currently which we will add to the Fedora kernel soon.
The support should be present in current versions of the Fedora kernel, but this is untested. Note composite output on the Raspberry Pi 4 is disabled by default for performance reasons; it can be enabled with {{code|enable_tvout=1}} in {{filename|config.txt}}.


=== Are the expansion HATs supported? ===
=== Are the expansion HATs supported? ===


The quick answer here is they are not currently supported.
Yes, most HATs are supported in Fedora- for instructions visit this [[Architectures/ARM/Raspberry_Pi/HATs|page]]. Once you've successfully got your HAT working, please update the wiki with the details and any additional notes.
 
The long answer is a lot more complex. Most of the hardware interfaces that are exposed by the 40 pin HAT connector are supported with drivers shipped with Fedora. Drivers for the hardware contained on a lot of the common HATs are also enabled and supported in Fedora. The core means of supporting the HAT add-on boards require the use of device tree overlays. The kernel and the u-boot 2016.09 boot-loader supports the loading over overlays manually. Currently there is no upstream consensus on the means of autoloading these overlays by means of an "overlay manager" (also known as Cape Manager and by numerous other names) by reading the EEPROM ID and loading the appropriate overlay automatically. There's also no consensus on the extensions to the dtc (Device Tree Compiler) to build the binary blob overlays, and no consensus of the exact format of the overlay file. There is now a group of people working to resolve this issue which enable Fedora to better support HATs (Raspberry Pi), Capes (BeagleBone), DIPs (C.H.I.P) and Mezzanine (96boards) before long.
 
The first focus HAT to support will be the official Raspberry Pi Sense HAT. This will be documented using the manual process to build and load the overlay to provide access to the onboard devices as a means of demonstrating how this process works for those wishing to use this manual method in the interim. The link to this documentation will be added here once that is complete.


=== The use of config.txt ===
=== The use of config.txt ===
Line 228: Line 227:
=== Are Device Tree Overlays supported? ===
=== Are Device Tree Overlays supported? ===


There's basic support for overlays in u-boot and the linux kernel but an overlay manager isn't yet upstream.
We support Raspberry Pi overlays via the config.txt option the same as the Raspberry Pi OS. Details can be found on the  [[Architectures/ARM/Raspberry_Pi/HATs|HAT page]].


=== Is GPIO supported? ===
=== Is GPIO supported? ===
Line 236: Line 235:
=== Is SPI supported? ===
=== Is SPI supported? ===


Yes, basic SPI is supported. It will need to be enabled using Device Tree
Yes, basic SPI is supported. It will need to be enabled using Device Tree.


=== Is I2C supported? ===
=== Is I2C supported? ===
Line 244: Line 243:
=== How do I use a serial console? ===
=== How do I use a serial console? ===


The serial console is disabled by default on the Raspberry Pi 2 and 3 because it requires the device to run at significantly slower speeds. To wire up the USB to TTL adapter follow [https://learn.adafruit.com/adafruits-raspberry-pi-lesson-5-using-a-console-cable/connect-the-lead this guide from Adafruit]. You'll need a 3.3 volt USB to TTL Serial Cable like [https://www.adafruit.com/product/954 this one from Adafruit]
The serial console is disabled by default on the Raspberry Pi because it requires the device to run at significantly slower speeds. To wire up the USB to TTL adapter follow [https://learn.adafruit.com/adafruits-raspberry-pi-lesson-5-using-a-console-cable/connect-the-lead this guide from Adafruit]. You'll need a 3.3 volt USB to TTL Serial Cable like [https://www.adafruit.com/product/954 this one from Adafruit]


To enable the serial console follow the specific steps for the Raspberry Pi 2 or 3 as they both differ slightly:
To enable the serial console follow the specific steps:


==== Raspberry Pi 2: ====
==== Raspberry Pi 3 ====
* insert the micro SD card into a PC
* connect the install media (micro SD card or HDD/SSD over USB) into a PC
* on the VFAT partition edit the config.txt file and uncomment the enable_uart line:
* on the VFAT partition edit the config.txt file and uncomment the enable_uart line:
<pre>enable_uart=1</pre>  
<pre>enable_uart=1</pre>  
* on the boot partition edit the extlinux/extlinux.conf file adding "console=tty0 console=ttyAMA0,115200" to the end of the append line so it looks similar to:
* on the boot partition edit the <i>loader/entries/*-<kernel-version>.aarch64.conf</i> file adding "console=tty0 console=ttyS0,115200" in the "options console" line:
<pre>append ro root=UUID="LARGE UUID STRING OF TEXT" console=tty0 console=ttyAMA0,115200</pre>
<pre>options console=ttyS0,115200 console=tty0 root=/dev/mapper/fedora-root ro rd.lvm.lv=fedora/root rhgb quiet</pre>
* Safely unmount the micro SD card
* Safely unmount your install media (sdCard or HDD/SSD over USB)
* Insert micro SD into Raspberry Pi, connect serial console, power on
* Insert install media into Raspberry Pi, connect serial console, power on
* <b>Note:</b> in recent versions of <i>arm-image-installer</i> if you specify the option <i>--addconsole</i> the installer will automatically add the above console settings for you on the VFAT and boot partitions.


==== Raspberry Pi 3: ====
=== It waits too long before GRUB ===
* inset the micro SD card into a PC
<pre>lan78xx_eth Waiting for PHY auto negotiation to complete...</pre>
* on the VFAT partition edit the config.txt file and uncomment the enable_uart line:
That happens without ethernet cable plugged in. You can interrupt the waiting by CTRL+C.
<pre>enable_uart=1</pre>  
* on the boot partition edit the extlinux/extlinux.conf file adding "console=tty0 console=ttyS1,115200" to the end of the append line so it looks similar to:
<pre>append ro root=UUID="LARGE UUID STRING OF TEXT" console=tty0 console=ttyS1,115200</pre>
* Safely unmount the micro SD card
* Insert micro SD into Raspberry Pi, connect serial console, power on


[[Category:Raspberry Pi]]
[[Category:Raspberry Pi]]
[[Category:ARMv7]][[Category:AArch64]]
[[Category:AArch64]]

Latest revision as of 06:13, 6 March 2024

The Raspberry Pi 3 and 4 are supported in in all stable Fedora releases. Please report issues to the ARM mailing list or IRC channel

Introduction

The Raspberry Pi is a credit card-sized ARM based single board computer (SBC). Fedora supports the the Raspberry Pi 3-series of devices including the 3B, 3B+, 3A+, 3CM and 3CM+ and the Raspberry Pi 4 in Fedora 37 and later releases. This documentation describes how to get started, and includes a Frequently Asked Questions (FAQ) about what is supported and what isn't.

Supported Hardware

We currently support the Raspberry Pi 3-series of devices (3B, 3B+, 3A+, CM3, CM3+) and the Raspberry Pi 4-series (4B, 400, CM4, CM4s) and the Zero2W.

Fedora IoT lists the Raspberry Pi 4 as one of its Reference Platforms.

Official support for the Zero 5B is under review.

UEFI support

The Pi Firmware Task Force is working to create a fully featured SystemReady-ES UEFI port for the RPi3 and RPi4. That project is rapidly evolving. As of version 1.5, Fedora 31+ will boot in ACPI mode on the Raspberry Pi 4 with gradually improving device support as one moves to newer kernels. Given a system running a Linux 5.7+ based kernel, the onboard NIC, PCI/XHCI, Graphics, etc, work. RPi3+DT support in the project is quite complete and mature. Firmware install guides for the RPi4 and RPi3 are found on that project's github. From there the fedora installer DVD [ISO https://getfedora.org/] for aarch64 should be used, or the fedora process for setting up PXE/HTTP boot.

Prerequisites

  • A Raspberry Pi 3-series device or 4.
  • Good quality SD Card (eLinux hosts a compatibility list)
  • HDMI Monitor or TV, a USB keyboard and mouse
  • A decent power supply. You'll want at least 2.5A. details here.

For preparation of the SD card:

  • Computer running Windows/MacOS/Linux
  • SD card reader

Downloading the Fedora ARM image

Official images for the supported Raspberry Pi devices can be found at the usual location Get Fedora. The various different options are linked from the various Edition, Spins, Labs and other artifact pages.

Preparing the SD card

You can quite easily prepare the image on the SD card on Fedora or any Linux distribution, MacOS or Windows. The default settings will provide the user interface on a HDMI monitor with keyboard and mouse support. If you wish to have output over a serial console please see Section in the FAQ.

Fedora or other Linux Distributions

Scripted

To install using arm-image-installer:

dnf install -y arm-image-installer

To write the image out use the following:

$ sudo arm-image-installer

Usage: arm-image-installer <options>

   --image=IMAGE    - xz compressed image file name
   --target=TARGET  - target board
   --media=DEVICE   - media device file (/dev/[sdX|mmcblkX])
   --selinux=ON/OFF - Turn SELinux off/on as needed
   --norootpass     - Remove the root password
   -y		    - Assumes yes, will not wait for confirmation
   --version	    - Display version and exit
   --resizefs	    - Resize root filesystem to fill media device
   --addconsole     - Add system console to extlinux.conf
   --addkey=        - /path/to/ssh-public-key

Example: arm-image-installer --image=Fedora-Rawhide.xz --target=Bananapi --media=/dev/mmcblk0

For list of supported boards please check SUPPORTED-BOARDS file.

For the Raspberry Pi 3 or 3+ use

--target=rpi3

, and for the Raspberry Pi 4 use

--target=rpi4

.

Manual

 xzcat Fedora-IMAGE-NAME.raw.xz | sudo dd status=progress bs=4M of=/dev/XXX # Location of your media (will be sdX or mmcblkX depending on hardware)

MacOS

The Raspberry Pi foundation provides some nice instructions for image copying using a Mac here. Simply replace any image file references with the name and path of the image downloaded in the step above.

Microsoft Windows

The Raspberry Pi foundation provides some nice instructions for image copying using a Windows here. Simply replace any image file references with the name and path of the image downloaded in the step above.

Resizing the root partition

The root partition is shrunk to the smallest size possible to ensure a small download. You currently need to resize it manually. Ideally we would like this to happen automatically (great community project idea!).

Resize before first boot

The easiest way to do this is using the arm-image-installer detailed above, otherwise before boot on a Linux system is with gparted:

gparted /dev/XXX

Resize after initial-setup

The other mechanism for doing it is once you've booted the Raspberry Pi and completed the initial setup to create accounts.

# enlarge the 3rd partition (this example uses mmcblk0)
growpart /dev/mmcblk0 3
# grow the volume to take up the rest of the disk
resize2fs /dev/mmcblk0p3
# resize root partition for the armhfp server image (which uses xfs)
xfs_growfs -d /

# Steps for the AArch64 Server image

# enlarge the 3rd partition (this example uses mmcblk0)
growpart /dev/mmcblk0 3
# resize the physical volume
pvresize /dev/mmcblk0p3
# extend the root filesystem to take up the space just added to the volume that it is in
lvextend -l +100%FREE /dev/fedora_fedora/root
# resize root partition for the server image (which uses xfs)
xfs_growfs -d /

Booting Fedora on the Raspberry Pi for the first time

  • Insert the SD card into the Raspberry Pi.
  • Make sure you have a keyboard, mouse, network cable and monitor connected.
  • Power on the Raspberry Pi.
  • You will see Fedora booting and eventually the "Initial setup wizard" will appear.
  • Follow the wizard to set language, timezone and create users.
  • You should be presented with a login prompt or a getting started guide (depending on which Desktop/SPIN you're using).

Applying updates and installing software

There are no special ways or procedures necessary to install or update the software so you just use standard Fedora installation and update mechanisms such as dnf, gnome-software or any of the other GUI update systems as supported in the various desktop environments.

Getting help and reporting issues

So where can you get help if it’s not working? The usual Fedora support forums are:

Frequently Asked Questions

Why do I get a rainbow display when I try and power on my Raspberry Pi?

There's a number of different reasons you might get rainbow output on the display when you're trying to boot as Raspberry Pi. The three common ones we see are:

  • The power supply isn't strong enough. See Prerequisites above.
  • There's no OS installed. Check the SD card is properly in place and you've followed the instructions to write out the card.
  • Wrong edition of the Raspberry Pi. If you try and use Fedora on a Raspberry Pi 1 or Zero you'll get this as we don't support ARMv6 SoCs.
  • Unsupported version of Fedora, eg releases older than Fedora 37 on the RPi 4

Power Supplies

The biggest single support issue is generally not a powerful enough PSU. The Raspberry Pi 3 Series needs a 2.5A PSU, this is especially important with Fedora where we support higher CPU frequencies which draws more power. PSUs that seemingly worked in the past have been seen to cause issues with Fedora due to this.

What desktop environments are supported?

Both 3D/2D work out of the box on Raspberry Pi 3/4 and most lightweight desktops as shipped in Fedora should work just fine. There is an open source fully accelerated driver for the Video Core IV GPU.

Will there be more enhancements to the hardware support?

Yes. New enhancements will be delivered when, and as soon as, they are ready via the standard Fedora updates mechanism. New significant features will be blogged about as they arrive either via Fedora Magazine or the Fedora Planet.

What about support for the Raspberry Pi Models A/A+, B/B+ (generation 1), Zero/ZeroW and Compute Module?

THESE ARE NOT SUPPORTED!!!

Fedora doesn't, and NEVER will, support ARMv6 processors. There's been a number of attempts to support these over the years, none are currently active.

What USB devices are supported on the Raspberry Pi?

You should be able to use most USB-2 compatible devices that are supported in Fedora on other devices. There are some limitations to the USB bus of the Raspberry Pi hardware as documented here.

Is the onboard WiFi and Bluetooth supported on the Raspberry Pi 3?

WiFi

WiFi on the Raspberry Pi 3-series devices works out of the box with Fedora. WiFi on the Raspberry Pi 4 model B works. WiFi on the Raspberry Pi Zero 2W and Raspberry Pi 400 is currently unsupported.

Using Wi-Fi on CLI

To use Wi-Fi on minimal and server images you can configure the device using command line:

# list of networks
nmcli device wifi list
# connect
nmcli device wifi connect $SSID --ask

Bluetooth

Bluetooth works quite well and seems to be quite stable. The device sometimes has a generic bluetooth address but should over all work just fine without any configuration.

Do VLANs work on the onboard wired interface?

Yes, although you might need to tune the interface either with

ethtool -K eth0 rx-vlan-filter off

or something like

nmcli connection modify "Wired connection 1" ethtool.feature-rx-vlan-filter off

Does sound work?

HDMI audio output is included Fedora however the analog port is not yet supported. Audio output via a USB audio interface should also work fine.

Does the camera add-on work?

Yes. You need to ensure you're running bcm283x-firmware from 2019, ensure the latest config.txt is in place (no .rpmnew) and edit /boot/efi/config.txt and adjust the gpu_mem setting to be gpu_mem=80.

Does accelerated media decode work?

No. There's no upstream kernel support and it relies on code from a number of kernel subsystems to be supported. This is unsupported on all Raspberry Pi platforms 3/4 and Zero 2W.

Does HDMI-CEC work?

Yes. It's supported using the upstream CEC support. There's a /dev/cec0 character device, it can be accessed using any application that supports the IR remote using the rc-cec keymap in the v4l-utils package, there's also a cec-ctl util for use via the command line.

Is the Raspberry Pi Touch Display supported?

Yes.

Is the composite TV out supported?

The support should be present in current versions of the Fedora kernel, but this is untested. Note composite output on the Raspberry Pi 4 is disabled by default for performance reasons; it can be enabled with {{{1}}} in config.txt.

Are the expansion HATs supported?

Yes, most HATs are supported in Fedora- for instructions visit this page. Once you've successfully got your HAT working, please update the wiki with the details and any additional notes.

The use of config.txt

The config.txt is only used for basic configuration at the moment. Because of the the use of the opensource vc4 GPU driver most of the video configuration is done within Linux.

The configuration of HATs using config.txt is currently unsupported but is being actively worked on.

Are Device Tree Overlays supported?

We support Raspberry Pi overlays via the config.txt option the same as the Raspberry Pi OS. Details can be found on the HAT page.

Is GPIO supported?

GPIO is supported with the use of libgpiod and associated bindings and utilities. RPI.GPIO is not currently supported.

Is SPI supported?

Yes, basic SPI is supported. It will need to be enabled using Device Tree.

Is I2C supported?

Yes, basic I2C is supported.

How do I use a serial console?

The serial console is disabled by default on the Raspberry Pi because it requires the device to run at significantly slower speeds. To wire up the USB to TTL adapter follow this guide from Adafruit. You'll need a 3.3 volt USB to TTL Serial Cable like this one from Adafruit

To enable the serial console follow the specific steps:

Raspberry Pi 3

  • connect the install media (micro SD card or HDD/SSD over USB) into a PC
  • on the VFAT partition edit the config.txt file and uncomment the enable_uart line:
enable_uart=1
  • on the boot partition edit the loader/entries/*-<kernel-version>.aarch64.conf file adding "console=tty0 console=ttyS0,115200" in the "options console" line:
options console=ttyS0,115200 console=tty0 root=/dev/mapper/fedora-root ro rd.lvm.lv=fedora/root rhgb quiet
  • Safely unmount your install media (sdCard or HDD/SSD over USB)
  • Insert install media into Raspberry Pi, connect serial console, power on
  • Note: in recent versions of arm-image-installer if you specify the option --addconsole the installer will automatically add the above console settings for you on the VFAT and boot partitions.

It waits too long before GRUB

lan78xx_eth Waiting for PHY auto negotiation to complete...

That happens without ethernet cable plugged in. You can interrupt the waiting by CTRL+C.