Diff for /wikisrc/ports/evbarm/raspberry_pi.mdwn between versions 1.121 and 1.127

version 1.121, 2019/09/02 20:48:37 version 1.127, 2020/06/19 12:56:59
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.
   
 [[images/raspberrypi.jpg]]  [[images/raspberrypi.jpg]]
   
Line 14  In mid-2018, -current gained support for Line 14  In mid-2018, -current gained support for
   
 # What works (and what doesn't yet)  # What works (and what doesn't yet)
   
   "Works" is primarily relative to the earmv6hf-el and earmv7hf-el CPU targets (32-bit).
   
 ## NetBSD 7 and NetBSD 8  ## NetBSD 7 and NetBSD 8
   
  - RPI1, RPI2, RPI2-1.2, RPI3, RPI3+ (except RPI3 builtin WiFi and bluetooth)   - RPI1, RPI2, RPI2-1.2, RPI3, RPI3+ (except RPI3 builtin WiFi and bluetooth)
Line 33  In mid-2018, -current gained support for Line 35  In mid-2018, -current gained support for
  - I²C: works, could use enhancements, man page   - I²C: works, could use enhancements, man page
  - SPI: could use enhancements, man page   - SPI: could use enhancements, man page
   
   ## NetBSD 9
   
    - aarch64 support (RPI3, and should work on all supported systems with 64-bit CPUs)
    - RPI3 new SD host controller driver
   
 ## NetBSD current  ## NetBSD current
   
  - RPI3+   
  - RPI3 builtin bluetooth   - RPI3 builtin bluetooth
  - RPI3 new SD host controller driver  
  - \todo Verify: RPI2-1.2 and RPI3 aarch64  ## (maybe) NetBSD current, with manual steps
   
      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 and RPI0W builtin WiFi
   
 ## What needs documenting if it works  ## What needs documenting if it works
   
Line 48  In mid-2018, -current gained support for Line 58  In mid-2018, -current gained support for
   
 ## What needs work  ## What needs work
   
  - RPI4 (almost certainly; not clear)   - RPI4 (as of 2020-01, still does not work in current)
  - USB (host); isochronous transfers.   - USB (host); isochronous transfers.
  - RPI3, RPI0W builtin WiFi  
  - RPI0W Bluetooth Low Energy (probably)   - RPI0W Bluetooth Low Energy (probably)
  - aarch64 support is evolving very rapidly, and not yet recommended for production, largely because one must run -current.  
   
 # CPU types  # CPU types
   
Line 62  In mid-2018, -current gained support for Line 70  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,
 in -current only, 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 sometimes  available in build.sh via the alias evbarm64.  This is also
 referred to as [[NetBSD/aarch64|aarch64]].  referred to as [[NetBSD/aarch64|aarch64]].
   
 # Installation  # Installation
Line 88  Note that SD cards generally have limite Line 97  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 136  The standard approach is to use a USB ke Line 145  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 182  The following pages have been published  Line 191  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 199  The program vcgencmd, referenced in the  Line 212  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 294  Miscellaneous notes about Raspberry PI. Line 307  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 reccomended.  For more information please read:  power supply is recommended.  For more information please read:
   
  <https://www.raspberrypi.org/documentation/faqs/#pi-power>   <https://www.raspberrypi.org/documentation/faqs/#pi-power>
   
Line 306  sd0(umass0:0:0:0): generic HBA error Line 319  sd0(umass0:0:0:0): generic HBA error
 sd0: cache synchronization failed  sd0: cache synchronization failed
 """]]  """]]
   
 Using a reccomended 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

Removed from v.1.121  
changed lines
  Added in v.1.127


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