Diff for /wikisrc/ports/evbarm/raspberry_pi.mdwn between versions 1.126 and 1.129

version 1.126, 2020/01/26 17:15:52 version 1.129, 2020/06/19 13:15:51
Line 1 Line 1
 [[!meta title="NetBSD/evbarm on Raspberry Pi"]]  [[!meta title="NetBSD/evbarm on Raspberry Pi"]]
   
 This page describes the NetBSD/evbarm port on [Raspberry Pi](http://www.raspberrypi.org) hardware.  All [board variants](https://en.wikipedia.org/wiki/Raspberry_Pi#Specifications) earlier than the RPI4 are believed supported, and specific boards known to work are listed.  We use e.g. "RPI2" to refer to "Raspberry Pi 2" to save precious bytes on this page.  This web page is 32-bit (aarch32) centric, as that has been until mid-2018 the only approach.  This page describes the NetBSD/evbarm port on [Raspberry Pi](http://www.raspberrypi.org) hardware.  All [board variants](https://en.wikipedia.org/wiki/Raspberry_Pi#Specifications) earlier than the RPI4 are believed supported, and specific boards known to work are listed.  We use e.g. "RPI2" to refer to "Raspberry Pi 2" to save precious bytes on this page.  This web page is still 32-bit (aarch32) centric, even though as of mid 2020 aarch64 is also a normal approach.
   
 Initial, limited, Raspberry Pi support was introduced in NetBSD 6.0.  NetBSD 7.0 adds complete support for the board, along with introducing support for the quad-core Raspberry Pi 2 board.  Raspberry Pi 3 support was added for NetBSD 8, and backported to NetBSD 7 in July of 2017.  (This page assumes those using NetBSD 7 are using 7.2 or later, but note that everyone uses 8 or -current.)  Initial, limited, Raspberry Pi support was introduced in NetBSD 6.0.  NetBSD 7.0 added complete support for the board, along with introducing support for the quad-core Raspberry Pi 2 board.  Raspberry Pi 3 support was added for NetBSD 8.  NetBSD 9 supports aarch64, meaning using the newer processors in 64-bit mode (via -current in mid 2018).
   
 In mid-2018, -current gained support for 64-bit ARM (aarch64) support.  This will be in NetBSD 9.  Overall, this page takes the view that NetBSD 7 and earlier are obsolete; aside from history, it is written as if those versions don't exist.
   
   The HOWTO is written for what works on formal releases, release branches (e.g. netbsd-9) and NetBSD-current.  It purposefully does not contain instructions about how to get things to work by installing code that is still being tested and not yet in -current.
   
 [[images/raspberrypi.jpg]]  [[images/raspberrypi.jpg]]
   
Line 48  In mid-2018, -current gained support for Line 50  In mid-2018, -current gained support for
   
    These items do not work in the sense that they simply function after a standard install.  Being listed here implies only that there has been list traffic that implies that after taking a bunch of steps (e.g. new firmware, new dtbs, enabling drivers, applying patches), one can end up with the feature working.  The HOWTO explicitly refrains from describing these steps because they are ephemeral.  However, the fact that list traffic indicates success is possible is a clue that proper support is on the horizon, and that is notable.     These items do not work in the sense that they simply function after a standard install.  Being listed here implies only that there has been list traffic that implies that after taking a bunch of steps (e.g. new firmware, new dtbs, enabling drivers, applying patches), one can end up with the feature working.  The HOWTO explicitly refrains from describing these steps because they are ephemeral.  However, the fact that list traffic indicates success is possible is a clue that proper support is on the horizon, and that is notable.
   
  - RPI3, RPI0W builtin WiFi   - RPI3 and RPI0W builtin WiFi
   
 ## What needs documenting if it works  ## What needs documenting if it works
   
Line 70  In mid-2018, -current gained support for Line 72  In mid-2018, -current gained support for
  - RPI2 uses "earmv7hf".   - RPI2 uses "earmv7hf".
  - RPI2-1.2 uses "earmv7hf" or "aarch64" (armv8 CPU hardware)   - RPI2-1.2 uses "earmv7hf" or "aarch64" (armv8 CPU hardware)
  - RPI3 uses "earmv7hf" or "aarch64" (armv8 CPU hardware)   - RPI3 uses "earmv7hf" or "aarch64" (armv8 CPU hardware)
    - RPI4 \todo
   
 Note that one can run a build of earmv6hf on the 2 and 3.  There will still be a kernel7, built to use the 2/3 hardware, but with the armv6 instruction set.  Note that one can run a build of earmv6hf on the 2 and 3.  There will still be a kernel7, built to use the 2/3 hardware, but with the armv6 instruction set.
   
 In theory the code compiled for earmv7hf will be faster, but anecdotal experience is that it doesn't matter that much.  In theory the code compiled for earmv7hf will be faster, but anecdotal experience is that it doesn't matter that much.  \todo Post a link to a quality benchmark.
   
 While the evbarm port has "eb" variants (for big-endian mode), the RPI systems do not support eb and these variants will not work.  Systems built with older CPU architectures (earm, earmv4, earmv5) are not expected to work on RPI.  While the evbarm port has "eb" variants (for big-endian mode), the RPI systems do not support eb and these variants will not work.  Systems built with older CPU architectures (earm, earmv4, earmv5) are not expected to work on RPI.
   
 The RPI2-1.2 and RPI3 have an armv8 CPU that supports aarch64 (64-bit  The RPI2-1.2 and RPI3 have an armv8 CPU that supports aarch64 (64-bit
 mode) in addition to aarch32 (regular 32-bit ARM).  This is supported,  mode) in addition to aarch32 (regular 32-bit ARM).  This is supported,
 from -9 onwards, by the "aarch64" MACHINE_ARCH of evbarm, also  from 9 onwards, by the "aarch64" MACHINE_ARCH of evbarm, also
 available in build.sh via the alias evbarm64.  This is also  available in build.sh via the alias evbarm64.  This is also
 referred to as [[NetBSD/aarch64|aarch64]].  referred to as [[NetBSD/aarch64|aarch64]].
   
Line 96  Note that SD cards generally have limite Line 99  Note that SD cards generally have limite
   
 ## Choosing a version  ## Choosing a version
   
 First, decide if you want to install a formal release (7.2 or 8.0), a stable branch build (netbsd-7, netbsd-8), or NetBSD-current.  For people who don't know how to choose among those, a recent build of netbsd-8 is probably best, with 8.0 the choice for those who value being at exactly a formal release.  First, decide if you want to install a formal release (8.0 or 9.0), a stable branch build (netbsd-8, netbsd-9), or NetBSD-current.  For people who don't know how to choose among those, a recent build of netbsd-9 is probably best, with 9.0 the choice for those who value being at exactly a formal release.
   
 See also "ebijun's image", below, which is NetBSD-current and includes packages.  See also "ebijun's image", below, which is NetBSD-current and includes packages.
   
Line 144  The standard approach is to use a USB ke Line 147  The standard approach is to use a USB ke
   
 By default the rpi.img is set to use the HDMI output.  If you wish to use a serial console, mount the FAT32 partition on another system and edit cmdline.txt and remove '"console=fb"'.  By default the rpi.img is set to use the HDMI output.  If you wish to use a serial console, mount the FAT32 partition on another system and edit cmdline.txt and remove '"console=fb"'.
   
  - Most (all?) USB-to-TTL serial adapters have wires for TX, RX and ground, and not RTS/CTS or other flow control lines.   Thus, your terminal program (or terminal) must be configured to not require flow control; a symptom of misconfiguration is that you see console output, but cannot type anything.  If so, adjust your serial console application's flow control settings to "none".   - Most (all?) USB-to-TTL serial adapters have wires for TX, RX and ground, and not RTS/CTS or other flow control lines.   Thus, your terminal program (or terminal) must be configured to not require flow control; a symptom of misconfiguration is that you see console output, but cannot type anything.  If so, adjust your serial console application's flow control settings to "none".   The serial port is at 115200 baud.
   
    - In Kermit, the command is "set flow none".     - In Kermit, the commands are "set flow none", "set carrier-watch off", "set baud 115200", and, often on NetBSD, "set line /dev/dtyU0".
    - In minicom, run "minicom -s" and set hardware flow control to "no".     - In minicom, run "minicom -s" and set hardware flow control to "no".
   
 ### Enabling ssh for installation without any console  ### Enabling ssh for installation without any console
Line 190  The following pages have been published  Line 193  The following pages have been published 
   
 # Maintaining a system  # Maintaining a system
   
   ## Booting single user
   
   \todo Describe how to boot single user via the serial console and via the fb console.
   
 ## vcgencmd  ## vcgencmd
   
 The program vcgencmd, referenced in the boot section,  can be found in pkgsrc/misc/raspberrypi-userland.  The program vcgencmd, referenced in the boot section,  can be found in pkgsrc/misc/raspberrypi-userland.
Line 207  The program vcgencmd, referenced in the  Line 214  The program vcgencmd, referenced in the 
  - Depending on your hardware version, copy this either to /boot/kernel.img (First generation Pi, Pi Zero hardware) or to /boot/kernel7.img (Pi 2, Pi 3 hardware)   - Depending on your hardware version, copy this either to /boot/kernel.img (First generation Pi, Pi Zero hardware) or to /boot/kernel7.img (Pi 2, Pi 3 hardware)
  - reboot   - reboot
   
   \todo Explain if updating firmware is necessary when e.g. moving from 8 to 9, or 9 to current.
   
 ## Updating the firmware  ## Updating the firmware
   
 A section below describes the process of updating NetBSD's copy of the firmware from upstream, with testing, by NetBSD developers.  This section is about updating a system's firmware from the firmware in a version of NetBSD.  A section below describes the process of updating NetBSD's copy of the firmware from upstream, with testing, by NetBSD developers.  This section is about updating a system's firmware from the firmware in a version of NetBSD.
   
 \todo Explain where the firmware is in the source tree, and if it is in the installed system image (such as /usr/mdec).  Explain how to update a system (presumably /boot) from either an installed system's new firmware files, or the source tree.  Explain any particular cautions.  \todo Explain where the firmware is in the source tree, and note that it is not in the installed system image (such as /usr/mdec).  Explain how to update a system (presumably /boot) from either an installed system's new firmware files, or the source tree.  Explain any particular cautions.
   
 Probably, for the RPI3+, one needs to use -current, or use -8 with firmware from -current.  \todo Defuzz.  
   
 \todo Explain if using updated firmware from one branch (e.g. netbsd-current) on a system using a different branch (e.g. netbsd-8) is safe.  Explain if pullups are done to release branches with new firmware.  \todo Explain if using updated firmware from one branch (e.g. netbsd-current) on a system using a different branch (e.g. netbsd-8) is safe.  Explain if pullups are done to release branches with new firmware.
   
Line 241  The aarch64 kernel can run aarch32 binar Line 248  The aarch64 kernel can run aarch32 binar
 # X11 and GPU  # X11 and GPU
   
 ## Video playback  ## Video playback
   
 Accelerated video playback is supported in NetBSD 7 with the [OMXPlayer](http://pkgsrc.se/multimedia/omxplayer) application and through GStreamer with the [omx](http://pkgsrc.se/multimedia/gst-plugins1-omx) plugin.  Accelerated video playback is supported in NetBSD 7 with the [OMXPlayer](http://pkgsrc.se/multimedia/omxplayer) application and through GStreamer with the [omx](http://pkgsrc.se/multimedia/gst-plugins1-omx) plugin.
   
 ## OpenGL ES  ## OpenGL ES
   
 Accelerated OpenGL ES is supported in NetBSD 7. The GL ES client libraries are included with the [misc/raspberrypi-userland](http://pkgsrc.se/misc/raspberrypi-userland) package.  Accelerated OpenGL ES is supported in NetBSD 7. The GL ES client libraries are included with the [misc/raspberrypi-userland](http://pkgsrc.se/misc/raspberrypi-userland) package.
   
 ## Quake 3  ## Quake 3
   
 A Raspberry Pi optimized build of *ioquake3* is available in the [games/ioquake3-raspberrypi](http://pkgsrc.se/games/ioquake3-raspberrypi) package. To use it, the following additional resources are required:  A Raspberry Pi optimized build of *ioquake3* is available in the [games/ioquake3-raspberrypi](http://pkgsrc.se/games/ioquake3-raspberrypi) package. To use it, the following additional resources are required:
   
  - pak0.pk3 from Quake 3 CD   - pak0.pk3 from Quake 3 CD
Line 256  A Raspberry Pi optimized build of *ioqua Line 266  A Raspberry Pi optimized build of *ioqua
 Place the pak0.pk3 file in the /usr/pkg/lib/ioquake3/baseq3 directory.  Place the pak0.pk3 file in the /usr/pkg/lib/ioquake3/baseq3 directory.
   
 ## RetroArch / Libretro  ## RetroArch / Libretro
   
 Using [emulators/retroarch](http://pkgsrc.se/emulators/retroarch) it is possible to run many emulators at full speed the Raspberry Pi. Emulator cores for various gaming consoles are available in the [emulators/libretro-*](http://pkgsrc.se/search.php?so=libretro-) packages. To begin using retroarch:  Using [emulators/retroarch](http://pkgsrc.se/emulators/retroarch) it is possible to run many emulators at full speed the Raspberry Pi. Emulator cores for various gaming consoles are available in the [emulators/libretro-*](http://pkgsrc.se/search.php?so=libretro-) packages. To begin using retroarch:
   
  - Install [emulators/retroarch](http://pkgsrc.se/emulators/retroarch)   - Install [emulators/retroarch](http://pkgsrc.se/emulators/retroarch)
Line 296  See the anita section in the evbarm page Line 307  See the anita section in the evbarm page
   
 It is not currently known how to emulate a RPI in qemu, and therefore anita does not yet have support for this.  \todo Add a command-line example to run qemu emulating some RPI model.  It is not currently known how to emulate a RPI in qemu, and therefore anita does not yet have support for this.  \todo Add a command-line example to run qemu emulating some RPI model.
   
   
 # Misc notes  # Misc notes
   
 Miscellaneous notes about Raspberry PI.  Miscellaneous notes about Raspberry PI.
   
 ## Power supply needed (or: why there is a little rainbow square in the top-right corner?)  ## Power supply needed (or: why there is a little rainbow square in the top-right corner?)
   
 Raspberry Pi devices are powered by 5V micro USB and a 2.5A (2500mA)  Raspberry Pi devices are powered by 5V micro USB and a 2.5A (2500mA)
 power supply is recommended.  For more information please read:  power supply is recommended.  For more information please read:
   
Line 317  sd0: cache synchronization failed Line 329  sd0: cache synchronization failed
 Using a recommended power supply avoid such issues.  Using a recommended power supply avoid such issues.
   
 ## Xenon death flash (Raspberry Pi 2 is camera-shy)  ## Xenon death flash (Raspberry Pi 2 is camera-shy)
   
 When using laser pointers or xenon flashes in cameras (or other  When using laser pointers or xenon flashes in cameras (or other
 flashes of high-intensity long-wave light) against a Raspberry Pi  flashes of high-intensity long-wave light) against a Raspberry Pi
 2 the Pi can power itself off.  2 the Pi can power itself off.

Removed from v.1.126  
changed lines
  Added in v.1.129


CVSweb for NetBSD wikisrc <wikimaster@NetBSD.org> software: FreeBSD-CVSweb