Annotation of wikisrc/ports/evbarm/raspberry_pi.mdwn, revision 1.42

1.1       jakllsch    1: [[!meta title="NetBSD/evbarm on Raspberry Pi"]]
                      2: 
1.39      wiki        3: This page attempts to document and coordinate efforts towards NetBSD/evbarm on [Raspberry Pi](http://www.raspberrypi.org). All board variants are supported.
                      4: 
                      5: Initial 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.
                      6: 
1.3       wiki        7: [[images/raspberrypi.jpg]]
                      8: 
1.26      wiki        9: [[!toc levels=2]]
                     10: 
1.14      wiki       11: <small>([Raspberry Pi image](http://www.flickr.com/photos/42325803@N07/8118758647/) by Christopher Lee used under CC-By-2.0 license)</small>
1.3       wiki       12: 
1.7       wiki       13: # Installation
1.36      wiki       14:  - You may use the rpi.img file created by an evbarm build - evbarm-earmv6hf is recommended. This isn't optimized for Raspberry Pi 2, but allows a single image to be used for all boards.
1.38      wiki       15:    - The Raspberry Pi and Pi 2 ports will be part of the NetBSD 7 release.
1.34      wiki       16:    - The automatic nightly builds can be found in the 'evbarm-earmv6hf/binary/gzimg/' directory on [nyftp.netbsd.org](http://nyftp.netbsd.org/pub/NetBSD-daily/).
                     17:      - The stable build will be under netbsd-7/YYYYMMDDHHMMZ/evbarm-earmv6hf/binary/gzimg/
1.23      skrll      18:      - The HEAD/current build will be under HEAD/YYYYMMDDHHMMZ/evbarm-earmv6hf/binary/gzimg/
                     19:      - For example, http://nyftp.netbsd.org/pub/NetBSD-daily/netbsd-7/201412161700Z/evbarm-earmv6hf/binary/gzimg/
1.19      wiki       20:    - 'releasedir/evbarm/binary/gzimg/' if you run (for example) './build.sh -m evbarm -a earmv6hf -u release'
1.23      skrll      21:    - <i>gunzip and dd</i> this img to your sd card.
1.10      wiki       22: 
1.14      wiki       23:           dd if=rpi.img of=/dev/disk1
                     24: 
                     25:  - Using a serial console
1.19      wiki       26:    - By default the rpi.img is set to use the HDMI output; to change to using a serial console first mount rpi.img (it's a FAT filesystem)
1.14      wiki       27: 
                     28:           edit cmdline.txt and remove '"console=fb"'
                     29: 
1.41      wiki       30:    - Most (all?) USB-to-TTL serial adapters only connect Tx, Rx and ground, and do not connect any flow control lines. An effect of missing flow control is that you see console output, but cannot type anything. If so, adjust your serial console application's flow control settings to "none". 
                     31: 
                     32:       In Kermit, the command is "set flow none".
                     33: 
                     34:       In minicom, run "minicom -s" and set hardware flow control to "no"
                     35: 
1.40      wiki       36:  - Growing the root file-system (**not required with NetBSD -current after 2015-04-07**)
1.17      wiki       37:    - During the partitioning process, do not delete or format the
                     38:      first MSDOS (FAT) partition, as the Raspberry pi firmware is
                     39:      hard coded to boot on the SDCAD / 1st MSDOS partition / Firmware
                     40:      updates and boot loader.
1.10      wiki       41:    - Copy /boot/cmdline.txt to /boot/cmdline.txt.orig
1.15      wiki       42:    - Edit /boot/cmdline.txt and add the '-s' flag to the end of the first line of text to boot into single-user mode.
1.20      wiki       43:    - For the next steps, the root filesystem mustn't be mounted rw. So reboot, and at the prompt to enter the pathname of shell,
                     44:      press return for the default (/bin/sh).
1.10      wiki       45:    - At the # prompt, type
                     46: 
                     47:         "disklabel -i ld0" and press return.
1.19      wiki       48: 
1.15      wiki       49:    - At the partition> prompt type "A" and press return.
1.10      wiki       50: 
                     51:            Adjust disklabel sector from 4194304 to 62333952 [n]?
                     52:            Type "y" and press return.
1.19      wiki       53: 
1.15      wiki       54:    - partition> prompt type "a" and press return.
1.12      wiki       55: 
1.11      wiki       56:            Filesystem type prompt, press return to use the current value (4.2BSD).
                     57:            Start offset prompt, press return to use the current value.
                     58:            Partition size prompt, type "$" and press return to grow the
                     59:            partition to use all available free space.
1.19      wiki       60: 
1.15      wiki       61:    - partition> prompt type "W" to save the changes to the disklabel.
1.11      wiki       62: 
                     63:            Confirm this choice by typing "y" at the Label disk prompt.
1.12      wiki       64:            Type "Q" and press return to quit disklabel.
1.19      wiki       65: 
1.15      wiki       66:    - At the # prompt (shell), type
1.11      wiki       67: 
                     68:            fsck -fy /dev/rld0a
                     69:            resize_ffs -y /dev/rld0a
1.19      wiki       70: 
1.11      wiki       71:    - This may take a few minutes, be patient!
                     72: 
                     73:            fsck -fy /dev/rld0a
1.18      wiki       74:            mount_msdos /dev/ld0e /boot
1.11      wiki       75:            mv /boot/cmdline.txt.orig /boot/cmdline.txt
                     76:            reboot
1.19      wiki       77: 
1.11      wiki       78:     - When the system comes back up, the root file-system will have been expanded to
1.10      wiki       79:           fill the SD card.
1.7       wiki       80: 
1.16      wiki       81: # Installation with sshramdisk image
                     82:  - You may use the  rpi_inst.img.gz file created by an evbarm build.
                     83:  - Connect Ethernet Cable to RPI.
1.19      wiki       84:  - After starting DHCP client, SSH login to with user "sysinst", and password "netbsd".
1.17      wiki       85:    - Be careful to note the ip address given during DHCP so you don't lose your connection
                     86:    - Also for after the sysinst is done and the system reboots
                     87:  - sysinst started!
1.16      wiki       88: 
1.7       wiki       89: # Updating the firmware
1.8       wiki       90:  - [rpi firmware files](https://github.com/raspberrypi/firmware/tree/master/boot)
1.19      wiki       91:    - Copy all files except 'kernel*.img' into /boot and reboot
1.7       wiki       92: 
1.42    ! wiki       93: # Updating the kernel
        !            94:  - Build a new kernel, e.g. using build.sh. It will tell you where the ELF version of the kernel is, e.g.
        !            95: 
        !            96:          ...
        !            97:          Kernels built from RPI2:
        !            98:           /Users/feyrer/work/NetBSD/cvs/src-current/obj.evbarm-Darwin-XXX/sys/arch/evbarm/compile/RPI2/netbsd
        !            99:          ...
        !           100: 
        !           101:  - Besides the "netbsd" kernel in ELF format, there is also a "netbsd.bin" kernel that is in a format that the Raspberry can boot. 
        !           102:  - Depending on your hardware version, copy this either to /boot/kernel.img (old/V1 hardware) or to /boot/kernel7.img (new/V2 hardware)
        !           103:  - reboot
        !           104: 
1.24      wiki      105: # Wireless Networking
                    106:  - A Realtek 802.11n USB adaptor configures as urtwn(4).
1.25      wiki      107:    - Configure with wpa_supplicant in /etc/rc.conf -
1.24      wiki      108: 
                    109:            ifconfig_urtwn0=dhcp
                    110:            dhcpcd=YES
                    111:            dhcpcd_flags="-q -b"
                    112:            wpa_supplicant=YES
                    113:            wpa_supplicant_flags="-B -i urtwn0 -c /etc/wpa_supplicant.conf"
1.25      wiki      114:    - A sample wpa_supplicant.conf can be found at /usr/share/examples/wpa_supplicant/wpa_supplicant.conf
1.24      wiki      115: 
1.27      wiki      116: # GPU
                    117: 
                    118: ## Video playback
1.29      wiki      119: 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.
1.27      wiki      120: 
                    121: ## OpenGL ES
                    122: 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.
                    123: 
1.28      wiki      124: ## Quake 3
1.27      wiki      125: 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:
                    126: 
                    127:  - pak0.pk3 from Quake 3 CD
1.31      snj       128:  - additional pak files from the [games/ioquake3-pk3](http://pkgsrc.se/games/ioquake3-pk3) package
1.27      wiki      129:  - read/write permissions on /dev/vchiq and /dev/wsmouse
                    130: 
1.31      snj       131: Place the pak0.pk3 file in the /usr/pkg/lib/ioquake3/baseq3 directory.
1.27      wiki      132: 
1.32      wiki      133: ## RetroArch / Libretro
                    134: 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:
                    135: 
                    136:  - Install [emulators/retroarch](http://pkgsrc.se/emulators/retroarch)
                    137:  - Install the libretro core for the system you would like to emulate (lets take [emulators/libretro-gambatte](http://pkgsrc.se/emulators/libretro-gambatte), a GameBoy Color emulator, as an example).
                    138:  - Plug in a USB HID compatible Gamepad, such as the Logitech F710 in "DirectInput" mode (set "D/X" switch to "D").
                    139:  - Create a config file for your gamepad using *retroarch-joyconfig*.
                    140: [[!template  id=programlisting text="""
1.35      wiki      141: $ retroarch-joyconfig -o gamepad.cfg
1.32      wiki      142: """]]
                    143:  - Launch the emulator from the command-line (no X required):
                    144: [[!template  id=programlisting text="""
                    145: $ retroarch --appendconfig gamepad.cfg -L /usr/pkg/lib/libretro/gambatte_libretro.so game.gbc
                    146: """]]
                    147: 
1.30      wiki      148: # What works (NetBSD 7.0+)
1.6       wiki      149:  - multi-user boot with root on SD card
                    150:  - serial or graphics console (with EDID query / parsing)
1.23      skrll     151:  - DMA controller driver and sdhc(4) support
                    152:  - Audio: works. man page missing.
1.21      skrll     153:  - I²C: works, could use enhancements, man page
                    154:  - GPIO
                    155:  - RNG
                    156:  - SPI: could use enhancements, man page
1.29      wiki      157:  - GPU (VCHIQ) - 3D and video decode. man page missing.
1.19      wiki      158:  - USB (host) - dwctwo(4)
                    159:  - USB Ethernet - usmsc(4)
1.21      skrll     160:  - X windows.
1.1       jakllsch  161: 
                    162: # What needs work
1.19      wiki      163:  - USB (host); isochronous transfers.
1.37      wiki      164:  - MULTIPROCESSOR support for Raspberry Pi 2

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