RaspberryPi3

Differences between revisions 7 and 16 (spanning 9 versions)
Revision 7 as of 2016-05-06 01:46:34
Size: 2838
Editor: fo0bar
Comment:
Revision 16 as of 2017-09-26 19:21:30
Size: 3620
Editor: adamsmith
Comment: Removed dated 64bit info
Deletions are marked like this. Additions are marked like this.
Line 5: Line 5:
The [[ARM/RaspberryPi|Raspberry Pi]] 3 was released in early March 2016, shortly before the release of Ubuntu 14.04 (Xenial) LTS, but too short to have proper support. It is possible to run Xenial's kernel and a full Ubuntu installation, but it requires replacing the firmware, bootloader and some other hacks. The [[ARM/RaspberryPi|Raspberry Pi]] 3 was released in early March 2016, shortly before the release of Ubuntu 16.04 (Xenial) LTS, but too short to have proper support. It is possible to run Xenial's kernel and a full Ubuntu installation, but it requires replacing the firmware, bootloader and some other hacks.
Line 7: Line 7:
While the BCM2710 is a 64-bit CPU, as of this writing there is no firmware or kernel support for it arm64 mode yet. As such, you will be left with a 32-bit installation. == Fresh installation ==

One-off raspi3 images are available which include the ppa-rpi3 PPA pre-installed. For installation details, see [[ARM/RaspberryPi]].

== Cross-hardware upgrade ==
Line 12: Line 16:

== Xenial upgrade procedure ==
Line 24: Line 26:
apt-get install binutils # Required by mkknlimg, may not be installed
Line 32: Line 35:
flash-kernel flash-kernel --machine "Raspberry Pi 3 Model B"
Line 56: Line 59:
== 64-bit kernel/userland ==
See [[https://wiki.ubuntu.com/ARM/RaspberryPi#Ubuntu_arm64.2FAArch64|ARM/RaspberryPi]].

Known issues:
 * !VideoCore userland utilities are [[https://github.com/raspberrypi/userland/issues/314|not yet available]] for arm64.
Line 59: Line 68:
 * [[https://bugs.debian.org/823524|Debian: #823524]] - u-boot: Add rpi_3_32b target to u-boot-rpi  * [[https://bugs.launchpad.net/ubuntu/+source/u-boot/+bug/1580323|LP: #1580323]] - u-boot: Pull/merge 2016.05~rc3+dfsg1-1 from Debian experimental
   * Upstream Debian:
[[https://bugs.debian.org/823524|Debian: #823524]] - u-boot: Add rpi_3_32b target to u-boot-rpi
Line 61: Line 71:
 * [[https://bugs.launchpad.net/ubuntu/+source/livecd-rootfs/+bug/1580326|LP: #1580326]] - livecd-rootfs: Add raspi3 subarch
   * [[https://code.launchpad.net/~fo0bar/livecd-rootfs/raspi2-rpi3/+merge/293959|MP: #293959]] - livecd-rootfs: Add raspi3 subarch

Raspberry Pi 3

The Raspberry Pi 3 was released in early March 2016, shortly before the release of Ubuntu 16.04 (Xenial) LTS, but too short to have proper support. It is possible to run Xenial's kernel and a full Ubuntu installation, but it requires replacing the firmware, bootloader and some other hacks.

Fresh installation

One-off raspi3 images are available which include the ppa-rpi3 PPA pre-installed. For installation details, see ARM/RaspberryPi.

Cross-hardware upgrade

This procedure assumes a working Ubuntu Xenial Raspberry Pi 2 installation. You will be converting a few things over to work on the RPi3, then doing a hardware swap from an RPi2 to an RPi3.

Be sure you have proper backups! This is not a foolproof or well-tested procedure; if it breaks, you get to keep both pieces.

Install a PPA which contains updated u-boot-rpi, flash-kernel and linux-firmware-raspi2 packages, and upgrade.

add-apt-repository ppa:ubuntu-raspi2/ppa-rpi3
apt-get update
apt-get -u dist-upgrade

Install the RPi3 u-boot loader.

apt-get install binutils # Required by mkknlimg, may not be installed
wget -O /tmp/mkknlimg https://raw.githubusercontent.com/raspberrypi/tools/master/mkimage/mkknlimg
chmod 0755 /tmp/mkknlimg 
/tmp/mkknlimg --dtok /usr/lib/u-boot/rpi_3_32b/u-boot.bin /boot/firmware/uboot.bin

Remove uboot.env, as the updated flash-kernel package switches to using boot.scr on the RPi3. Run flash-kernel to install the new components.

rm -f /boot/firmware/uboot.env
flash-kernel --machine "Raspberry Pi 3 Model B"

Check that bcm2710-rpi-3-b.dtb and boot.scr have been created in /boot/firmware by flash-kernel.

Modify /boot/firmware/config.txt with at least the following configs:

enable_uart=1
device_tree_address=0x100
device_tree_end=0x8000
kernel=uboot.bin
dtparam=i2c_arm=on
dtparam=spi=on

enable_uart is needed by u-boot for all RPi3 modes, even if you have no intention of using a serial console. The device_tree options are needed to explicitly declare the DTB area, as the DTB is slightly larger than 16,128 bytes, and the bootloader otherwise assumes an address space of 0x100 through 0x4000.

Shut down the system.

poweroff

Swap out the hardware from the RPi2 to the RPi3 and boot.

64-bit kernel/userland

See ARM/RaspberryPi.

Known issues:

Bugs filed

  • LP: #1578505 - flash-kernel: Raspberry Pi 3 support

  • LP: #1580323 - u-boot: Pull/merge 2016.05~rc3+dfsg1-1 from Debian experimental

    • Upstream Debian: Debian: #823524 - u-boot: Add rpi_3_32b target to u-boot-rpi

  • LP: #1578745 - linux-firmware-raspi2: Update firmware for Raspberry Pi 3 support

  • LP: #1580326 - livecd-rootfs: Add raspi3 subarch

ARM/RaspberryPi/RaspberryPi3 (last edited 2017-09-26 19:21:30 by adamsmith)