This page attempts to document and coordinate efforts towards NetBSD/evbarm on Raspberry Pi. All board variants are supported.

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.


  1. What works (and what doesn't yet)
    1. NetBSD 7 before July, 2017
    2. NetBSD 7 after July, 2017 and NetBSD 8
    3. NetBSD current
    4. What needs work
  2. CPU types
  3. Installation
    1. SD card structure
    2. Choosing a version
    3. Getting bits to install
    4. Preparing a uSD card
    5. Installation via ebijun's image
    6. Updating the kernel
  4. Wireless Networking
  5. GPU
    1. Video playback
    2. OpenGL ES
    3. Quake 3
    4. RetroArch / Libretro
  6. Developer notes
    1. Updating the firmware

(Raspberry Pi image by Christopher Lee used under CC-By-2.0 license)

What works (and what doesn't yet)

NetBSD 7 before July, 2017

NetBSD 7 after July, 2017 and NetBSD 8

NetBSD current

What needs work

CPU types

Note that one can also use code for earlier models on later models.


SD card structure

The Raspberry Pi looks for firmware and kernel.img on the first FAT32 partition of the uSD card. A separate kernel (kernel7.img) is used on RPI2 and RPI3.

The NetBSD kernel will then use the FFS partition as the root filesystem.

A 2 GB card is the smallest workable size. The NetBSD filesystem will be expanded to fit.

Choosing a version

First, decide if you want to install a formal release (7.1), a stable branch build (netbsd-7, netbsd-8), or NetBSD-current. Note that 7.1 predates Raspberry Pi 3 support. For people who don't know how to choose among those, netbsd-8 is probably best.

See also "ebijun's image", below, which is NetBSD-current and includes packages.

Getting bits to install

You can either build a release yourself with, or get one from the NetBSD FTP servers.

Both will provide rpi.img.gz and rpi_inst.img.gz. Each is an image to be written to a uSD card, and has a FAT32 partition for booting. In rpi.img.gz, there is also an FFS partition for NetBSD.

Building yourself

Getting sources and building a release with is not special for evbarm. Pick a CPU type alias and pass it to with -m. Examples (the first two are equivalent):

NetBSD FTP servers

NetBSD provides nightly builds on These are equivalent to building yourself.

Preparing a uSD card

Once you have rpi.img.gz (or rpi_inst), put it on a uSD card using gunzip and dd, for example:

Serial Console

By default the rpi.img is set to use the HDMI output. If you wish to use a serial console, first mount the FAT32 partition and then edit cmdline.txt and remove '"console=fb"'.

Enabling ssh

If you want to enable ssh with the standard image, so that you can log in over the net without either a serial or HDMI console, mount the ffs partition, place /root/.ssh/authorized_keys, uncomment PermitRootLogin in /etc/ssh/sshd_config, and comment out the rc_configure=NO in /etc/rc.conf. Besides having to find the IP address, you will have to wait for the partition resizing and reboot.

Installation with sshramdisk image (and hence the FTP site) also creates an image 'rpi_inst.img.gz' specifically for installation without HDMI or a serial console. Note that this image is much smaller and that you will need to fetch the sets over the network. To use this method, write that image to a uSD card as above, and then:

Installation via ebijun's image

As an alternative to the standard installation images, Jun Ebihara provides an install image for Raspberry Pi that includes packages. It is based on NetBSD-current and is built for earmv6hf, and thus will work on Raspberry Pi 1, 2 and 3. This image is typically updated every few weeks.

Updating the kernel

Wireless Networking

Note that the built-in WiFi in the RPI3 is not yet supported.


Video playback

Accelerated video playback is supported in NetBSD 7 with the OMXPlayer application and through GStreamer with the omx plugin.


Accelerated OpenGL ES is supported in NetBSD 7. The GL ES client libraries are included with the misc/raspberrypi-userland package.

Quake 3

A Raspberry Pi optimized build of ioquake3 is available in the games/ioquake3-raspberrypi package. To use it, the following additional resources are required:

Place the pak0.pk3 file in the /usr/pkg/lib/ioquake3/baseq3 directory.

RetroArch / Libretro

Using 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-* packages. To begin using retroarch:

$ retroarch-joyconfig -o gamepad.cfg
$ retroarch --appendconfig gamepad.cfg -L /usr/pkg/lib/libretro/ game.gbc

Developer notes

These notes are for people working on improvements to RPI support in NetBSD.

Updating the firmware

You probably don't want to do this. Firmware updates can break things, and the latest firmware that's been tested is already included in the NetBSD build you installed.

If you're feeling adventurous (or are the port maintainer), here's what to test whenever you try new firmware:

That goes for all of rpi[0123].

Upstream firmware releases are on GitHub. Copy all files except kernel*.img into /boot and reboot.


it seems one of the first steps during the installation process is misleading, on the evbarm / raspberry pi platform. I ran into the issue, so as two mailing lists members recently did (and probably more people giving a try to netbsd on raspberry pi).

I would like to edit this page and add a note about selecting the HEAD installation sets rather than the default:

(A) IP Address during setup: As the net_rp.img install image uses DHCP at boot time, you will need to select DHCP during network configuration, or give your initial setup the very same IP received at boot time. You could change this later, but not on first boot and install run, else it will disconnect your remote connection.

(B) Install sets: As the raspberry pi port is still not part the stable release, you will want to use the HEAD branch to download installation sets. Have a look at and watch for the current YYYYMMDDHHMMZ branch. Use this timestap to adjust host and directory settings:

a: Host b: Base directory pub/NetBSD-daily/HEAD/YYYYMMDDHHMMZ (it will look like pub/NetBSD-daily/HEAD/201305220150Z)

(C) Partitioning: During the partitioning process, do not delete or format the first MSDOS (FAT) partition, as the Raspberry pi firmware is hard coded to boot on the SDCAD / 1st MSDOS partition / Firmware updates and boot loader.

When selecting partition types, remember you are using a SDCARD, nonvolatile flash memory wears slowly as writes are done. You may consider using non journaled filesystems (no log or LFS) and adjust mount options (noatime, nodevmtime).

Kind regards, Mat

Comment by mat [] early Saturday morning, June 1st, 2013
Hey I integrated some of your notes into the page.
Comment by mspo mid-morning Saturday, June 1st, 2013

I have successfully installed NetBSD to my pi from the supplied images, but it is just the core system with no X server. I am a relative newby to Linux, let alone BSD and am slowly working my way around it, but I am struggling with pkg_add because I can't find a source file to match...

I downloaded rpi.img.gz from here:

I followed the instructions on this page, but fall down when trying to add packages

but when following the instructions here: and here:

I cannot find a matching distribution.

uname -a reports: NetBSD rpi 7.0_BETA NetBSD 7.0_BETA (RPI_201501031030Z) evbarm

but the closest I can get is

Should I be looking elsewhere for the repository?

Comment by Jonathan Sunday night, January 4th, 2015
You might want to check out installing pkgsrc and building your own packages - this article may help
Comment by Nick late Monday afternoon, January 5th, 2015

if you get the following error while trying to fetch sets;

ftp: Can't LOOKUP `': Temporary failure in name resolution

Please use the nyftp's IP address instead:

As reported by

Comment by Youri Sunday afternoon, March 22nd, 2015
Can someone please post link to netbsd 7.0 sources? I want to compile latest netbsd for my raspberry pi 2 board.
Comment by alakesh late Sunday afternoon, April 5th, 2015

Can anyone explain if all files (including the subdirectory overlays/ ) need to be copied? "Copy all files except 'kernel*.img' into /boot and reboot"

Or would a subset be sufficient?

Thanks very much -- Tobi

Comment by Tobias N. Sasse at lunch time on Wednesday, April 15th, 2015

Thanks for all the great work and for updating your instructions to reflect the new RPI2 images. Which by the way are awesome and right on par now with what the top competition has, in other words *dora has nothing us now with regards to tuning with gcc on this arch.

Last week I took the armv7 gzimg and added the new RPI2 kernel from another snapshot. Wow it worked, and I felt pretty special until the next time I looked 5 minutes later...and I saw I had just took the long route to reproduce what was already done in the new armv7 rpi2 images. LOL.

On a site note. Please consider updating the "Installation" section example to clarify HEAD/Current images vs Stable. If it's important.

Currently it reads:

"The HEAD/current directory build will be under HEAD/YYYYMMDDHHMMZ/ (for example,"

I would change the "netbsd-7" to "HEAD" as below, if I'm understanding correctly.

"The HEAD/current directory build will be under HEAD/YYYYMMDDHHMMZ/ (for example,"

NetBSD 4 Ever!

Comment by George early Saturday morning, August 15th, 2015

Most of the userland and the kernel in NetBSD 7.0 seem to be built with -mfloat-abi=soft (this is from earmv6hf). Indeed, if you look at the Makefile generated when you're preparing to build a new kernel you will see -mfloat-abi=soft is defined. For example the openssl in base has the following performance characteristics:

Doing md4 for 3s on 16 size blocks: 91199 md4's in 2.68s

If I build a new openssl with -march=armv6k -mfloat-abi=hard -mfpu=vfp' in my/usr/pkg/etc/mk.conf`, I get the following:

Doing md4 for 3s on 16 size blocks: 221820 md4's in 2.85s

That's quite a substantial improvement. Could you please tell me the reasoning behind not doing this in the default distribution?


Comment by josh64 late Wednesday night, October 15th, 2015


I am kaku. How can I use the DS3231 RTC module for raspberry pi ?

Thank you very much!

Comment by hchguoyq at lunch time on Wednesday, December 16th, 2015
Just wondering whether anyone is working on porting either xserver-xorg-video-fbdev or xf86-video-fbturbo to NetBSD? It would be great to have an accelerated X driver. I'd be more than happy to test any driver that is being worked on. :)
Comment by nickdate Thursday afternoon, December 24th, 2015

Trying to boot the latest snapshot on my Pi Zero resulted in 8 flashes of the OK/ACT LED (bootcode.bin and/or start.elf problems, according to the documentation).

This image boots fine on my Pi B+ and Pi 2.

I over-wrote bootcode.bin, start.elf and start_cd.elf on the freshly imaged SD card from an Arch Linux MicroSD that works in the Pi Zero. It now boots. I don't know if these are exactly the correct files, but I suspect they likely require updating in the base image.

I've included MD5 sums of the files for your convenience: From the NetBSD Image (20151231): MD5 (bootcode.bin) = 9a4ad6a12ad7dc1aae279888c25d2252 MD5 (start.elf) = a2c4b9ea3ae986f88ea01e05bef46904 MD5 (start_cd.elf) = 85924312c9b51d1ef5b7ca301bb18d54

Files I copied over that make it bootable (from my Arch Linux Pi Zero environment): MD5 (bootcode.bin) = 6cc6560c0178c10928d14b8768969dab MD5 (start.elf) = f5b2a422d863efe5d47b1ac291ccaa3a MD5 (start_cd.elf) = f0dfc1462c5d9b003b64428fd52406ed

Hope this helps!

Comment by ax0n in the wee hours of Friday night, January 2nd, 2016


I am a total NetBSD-noob and today I figured out how to install NetBSD on my RPi Mod B Ver 1.

I used rpi_inst.img and in order to make pkgin work I had to edit the default ftp repositories.

Browsing the FTP, I saw that inside the following dir:

there was not a dir named 7.0 so I used the only path that made me install pkgin, this one:

Now I am trying to install vim, but inside this dir there is not a vim package. However I can see two vim packages, one for each of these paths:

Said that, my question is: Did I messed up the selection of the mirror? Why only the first path had all the dependecies needed by pkgin? (I am sorry I do not remember which package was missing) Can I (and should I) add all the three paths to install other packages?

For those interested, I wrote down all the steps I followed during installation.

Regards agz

Comment by aggaz late Sunday evening, January 10th, 2016


I want to boot my Raspberry Pi with evbarmeb. evbarmeb - is the Big-endian version of Netbsd, please correct me if I'm wrong.

I'm not able to boot it. I tried the following steps to create the bootable SD Card : 1. wget 2. gunzip armv7.img.gz 3. dd if=armv7.img of=/dev/mmcblk0 bs=4M

But I'm able to boot it with the normal evbarm7hf image.

Thanks, Reemus Kumar

Comment by reemuskumar at lunch time on Saturday, February 27th, 2016
I want to lift-up this theme. This RPi uses slightly different Broadcom chip and I expected, that either evbarm6hf or evbarm7hf kernels will function. But for a moment I'm sitting in front of colorful square on the screen for 10 minutes. I'm newbie in NetBSD, but I have a feeling, that it was stopped for some reason.
Comment by vkhutkO early Wednesday morning, April 27th, 2016
  1. NetBSD rpi 7.99.29 NetBSD 7.99.29 (RPI.201605191830Z) evbarm

  2. I used 800*480 display. I have not hdmi display.

  3. I edit cmdline.txt, remove 'console=fb',display is black
  4. Please help me. Thanks.
Comment by 991776254 in the wee hours of Friday night, May 21st, 2016
Has anyone successfully gotten the RPI2 build running under the Qemu emulator?
Comment by paul late Sunday night, June 20th, 2016
Add a comment