FQA INDEX | FQA 2 - Getting To Know 9front | FQA 4 - 9front Installation Guide

FQA 3 - Hardware

html | pdf | troff

3.1 - Selecting Hardware

Selecting appropriate hardware to run your 9front system on is important, as it can mean the difference between success and failure of a project. Fortunately, most common PC hardware is at least minimally functional in Plan 9 (excluding certain exotic audio, VGA, and WiFi devices). Nowadays, thanks to 9boot(8), realemu(8), and the VESA driver, it is at least very likely that your PC will boot. In addition, most popular virtualization platforms are reasonably well supported.

Check FQA 3.2 - Known Working Hardware as well as the various supported hardware pages on the Bell Labs Plan 9 wiki to help determine if your hardware or VM is supported.

3.2 - Known Working Hardware

This list adds to the various supported hardware pages on the Plan 9 from Bell Labs wiki. Note: NONE of these lists are all-inclusive. Some drivers listed on the Bell Labs wiki have not been tested by 9front developers. The following list consists of hardware, 1.) that we have actually used, or 2.) about which we have received reliable reports from users.

Some drivers and their options are also documented in plan9.ini(8).

Read: FQA - New Hardware Support for information about hardware drivers that are new in 9front.

3.2.0 - Input Devices - Mice

Almost any PS/2 or USB mouse is going to work. The following are preferred for use with Plan 9. - IBM/Lenovo

N700 Wireless/Bluetooth, 3 button Mouse and Laser Pointer

ScrollPoint Optical Mouse, 3 button, USB/PS2 - Keyboards

Almost any AT, PS/2, or USB keyboard is going to work. The following are preferred for use with Plan 9. - IBM/Lenovo

IBM Model M 1391401

IBM UltraNav SK-8835

3.2.1 - Audio

Audio support is much improved in 9front, with added support for AC97, Intel HDA, and (ha!) Soundblaster 16.

AMD FCH Azalia Controller

Intel 888 Microsoft UAA bus for HD audio

Intel 82801CA/CAM AC97

Intel 82801 DB DBM/DA AC 97

Intel 486486 82801IB/IR/IH HD Audio

Intel HD NM10/ICH7

Intel HD 6 Series/C200 Series

Intel HD 7 Series/C210 Series

3.2.2 - Graphics

Many video cards for which there exists no native VGA driver can be made to work with the generic VESA driver. Examples are provided below. - AGP

NVidia GeForce FX 5200 128MB VGA output

NVidia GeForce FX 5700 - Integrated

ATI Mobility Radeon 7500 128MB DVI/VGA output

ATI Mobility Radeon FireGL V3200/X600


ATI X1300

Intel Mobile 945GM/GMS/GME, 943/940GML Express

Intel X3100/GM965/PM965/GL960

Intel Mobile Intel 4 Series 4500MHD

Intel HD 3rd Gen Core processor Graphics Controller

NVidia GeForce FX Go5200 64M

S3 SuperSavage IX/C 16MB - PCI Express

NVidia GeForce 6200 LE

NVidia GeForce 8400 GS

NVidia GeForce 8600 GT

NVidia GeForce GTX 550

3.2.3 - Networking - Ethernet

Ethernet is well supported across many vendors and chipsets. 9front introduces a "medium-to-low quality" driver for Broadcom BCM57xx cards, previously unsupported by Plan 9. - Integrated

Broadcom BCM5751M NetXtreme Gigabit

Broadcom BCM5755/5780 NetXtreme Gigabit

Broadcom BCM5782 NetXtreme Gigabit

Intel 82540EP Gigabit

Intel 82562ET

Intel 82566MM Gigabit

Intel 82567LM 82567LM-2 Gigabit

Intel 82573L Gigabit

Intel 82579LM Gigabit

Intel 82801CAM PRO/100 VE

Realtek RTL8139

Realtek RTL8169/RTL8101E/RTL8102E - USB

Beceem Communications CLEAR Stick


3Com 3c589c - WiFi

9front adds support for several WiFi adapters from Ralink and Intel, as well as support for WPA and WPA2.

Read: wpa(8), and plan9.ini(8) - Bridge (external)

Iogear GWU627

Vonets VAP11G - Mini-PCI

Actiontec 800MIP

Ralink RT2860 802.11b - Mini-PCI Express

Intel Centrino Advanced-N 6205 Taylor Peak (iwl-6005)

Intel Centrino Ultimate-N (iwl-6000)

Intel Centrino Wireless-N 100

Intel Centrino Wireless-N 2230

Intel PRO Wireless 3945ABG (wpi-3945abg)

Intel WiFi Link 1000/4965/5100/5300/5350 AGN

Ralink RT3090 - PCI

Ralink RT3090 - PCMCIA

Linksys WPC11

Lucent WaveLAN PC24E-H-FC

3.2.4 - Tablet Digitizers

Support for Wacom serial tablets was added in 2012. The touchscreen digitizers in some Lenovo ThinkPads (notably, the X230) also seem to function without need of any drivers (presumably, controlled by the BIOS). - Serial - Integrated

Wacom WACF004

Wacom WACF008

3.2.5 - Laptops - Acer

Aspire 5100 (donated by some poor kid) - IBM/Lenovo - ThinkPad
ThinkPads are the best supported laptops in 9front because ThinkPads are what the developers use.
























X41 tablet



X60 Tablet



X61 Tablet















X230 Tablet


X230 Tablet








2776-P6U - Toshiba - Satellite


3.2.6 - Desktops - eMachines

T3302 - Igel

4210 LX Winestra - Soekris

net6501-70 - IBM/Lenovo - ThinkCentre



3.3 - Virtual Machines

9front has been tested on several virtual machines. Details below.

Note: As a general rule it is a good idea to manually specify a unique MAC address for each virtual machine instance running on the network, to avoid collisions.

3.3.1 - Qemu

The following generic setup is tested with qemu 1.5.0 and 2.0.50 running on Linux, using FQA 3.3.3 - virtio for disk and network. This same generic setup should work for most host operating systems. - Installation

Create a sparse disk image:

qemu-img create -f qcow2 9front.qcow2.img 30G

Boot the 9front.iso:

qemu-system-x86_64 -cpu host -enable-kvm -m 1024 \

-net nic,model=virtio,macaddr=52:54:00:00:EE:03 -net user \

-device virtio-scsi-pci,id=scsi \

-drive if=none,id=vd0,file=9front.qcow2.img -device scsi-hd,drive=vd0 \

-drive if=none,id=vd1,file=9front.iso -device scsi-cd,drive=vd1,bootindex=0

Finally, see: FQA 4.3 - Performing a simple install - Post-Installation Booting

qemu-system-x86_64 -cpu host -enable-kvm -m 1024 \

-net nic,model=virtio,macaddr=52:54:00:00:EE:03 -net user \

-device virtio-scsi-pci,id=scsi \

-drive if=none,id=vd0,file=9front.qcow2.img -device scsi-hd,drive=vd0 - Multiboot

Multiboot can be used to start the 9front kernel directly, skipping the bootloader step:

-qemu -kernel 9pcf -initrd plan9.ini - Networking

User networking is the default and works the same on every platform. More advanced options are particular to specific host operating systems; several are described below.

Note: On many operating systems ICMP is limited to the superuser. One consequence is that a VM running with guest networking cannot ping remote hosts. - Linux VDE

Install vde2.

Setup a tap interface:

sudo tunctl -u $USER -t tap0

Start a virtual switch connected to the tap interface:

vde_switch --tap tap0 -daemon

Connect the switch to the network of the host. Use DHCP:

slirpvde --dhcp --daemon

When booting 9front, add the following to the qemu command line arguments:

-net vde - OpenBSD TAP

Tested: OpenBSD/amd64 6.0-STABLE, qemu-2.6.0

Note: Read over this first. Be careful not to clobber any system settings you may already have configured. If you don’t understand something, read the relevant man pages until you do. Feel free to substitute arbitrary network values below.

# as root

pkg_add bzip2 plan9port qemu ssvnc wget

cp -f /usr/local/plan9/bin/rc /bin/ # for scripts

sysctl net.inet.ip.forwarding=1

echo  ’net.inet.ip.forwarding=1’ >>/etc/sysctl.conf

echo inet NONE >/etc/hostname.vether0

ed /etc/pf.conf




match out from $int_if:network to any nat-to ($ext_if:0)



pfctl -f /etc/pf.conf

echo link0 up >/etc/hostname.tap0

echo add vether0 add tap0 up >/etc/hostname.bridge0

sh /etc/netstart


ed /etc/dhcpd.conf


option domain-name "example.com";

option domain-name-servers;

subnet netmask {

    option routers;





rcctl enable dhcpd

rcctl start dhcpd

ed /var/unbound/etc/unbound.conf






    access-control: allow



rcctl enable unbound

rcctl start unbound

echo 'permit setenv { -ENV PS1=$DOAS_PS1 SSH_AUTH_SOCK } :wheel' \


# as user who is in wheel group

mkdir -p $HOME/9 $HOME/bin

cd $HOME/9

qemu-img -f qcow2 9front.qcow2.img 30G

wget http://9front.org/iso/9front-5561.df1dc1ff2475.iso.bz2 # adjust for current iso

bunzip2 9front-5561.df1dc1ff2475.iso.bz2

mv 9front-5561.df1dc1ff2475.iso 9front.iso

cd $HOME/bin

wget http://openbsd.stanleylieber.com/rc/q9

chmod 775 q9


doas -u root q9 -i  # boot from iso (install)

doas -u root q9 # boot from qcow image (after completing the install)

q9 -v   # connect to qemu via vnc - Windows TAP

This is tested with the qemu for windows distribution. Download and run the installer from openvpn to install the windows TAP driver. Create a new TAP interface with the "Add a new TAP virtual ethernet adapter" from the openvpn start menu. Go to the network manager and rename that new TAP interface to something more sane like: "qemu-tap". Configure ip addresses or bridge that interface with the network manager.

Now you should be able to run qemu on that interface:

qemu.exe -net nic -net tap,ifname="tap-qemu" ... - Linux TAP

Contributed by joe9:

on the host:

sudo ip tuntap add dev tap0 mode tap user joe

sudo ip address add dev tap0

start qemu using (do not need sudo for qemu):

SDL_VIDEO_X11_DGAMOUSE=0 qemu-system-x86_64 \

    -cpu host -enable-kvm -m 1024 \

    -netdev tap,id=eth,ifname=tap0,script=no,downscript=no \

    -device e1000,netdev=eth,mac=52:54:00:00:EE:03 \

    -device virtio-scsi-pci,id=scsi -drive \

    if=none,id=vd0,file=9front.qcow2.img -device scsi-hd,drive=vd0 \

    -usb -usbdevice tablet -sdl -ctrl-grab # post install booting

on 9front: add the below line to /lib/ndb/local

sys=cirno ether=52540000EE03 ip= ipmask= ipgw=



run: ip/ipconfig -N

Now, "ping" from linux host and "ip/ping" from qemu 9front should work.

check the communication between the vm and the linux host using (on the linux host):

sudo tcpdump -nS -vv -i tap0

Contributed by hiro:

If you want to enable internet access enable NAT forwarding on the linux host (as root).

To do this, first globally enable forwarding:

echo 1 > /proc/sys/net/ipv4/ip_forward

Enable Masquerading for everything comping from the VM’s tap device (eth0 being your host’s way to the internet):

iptables -t nat -A POSTROUTING -s -o eth0 -j MASQUERADE

block everything else from being forwarded:

iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

iptables -A FORWARD -s -i tap0 -j ACCEPT

iptables -P FORWARD DROP - Audio

Run qemu with the flag -soundhw sb16 and put the following line in plan9.ini:

audio0=type=sb16 port=0x220 irq=5 dma=5

Note: irq and dma values may vary. - Graphics

Use monitor=vesa

Note: Some versions of QEMU running on OSX have exhibited graphical glitches when using a 16-bit color mode (for example: 1024x768x16. Try a 32-bit mode instead (for example: 1024x768x32).

3.3.2 - Virtualbox

Don’t use Virtualbox. It tends to break between versions.

Read: http://www.landley.net/notes-2015.html#25-06-2015

If you can’t be dissuaded, the following sections detail empircal observations re: Virtualbox. - Ethernet

The emulated "Intel PRO/1000 MT Server" ethernet controller is known to work. - Audio

Put the following in plan9.ini:

audio0=type=sb16 - Graphics

Use monitor=vesa - Known Working Versions

4.3.14 r95030 on Windows 7

4.3.16 on Mac OS X


4.3.18 r96516 on Linux x86_64 kernel 3.14.22

4.3.18 on Windows 7:

4.3.20 r96996 on Mac OS X 10.6.8/10.9 and Ubuntu 14.04/14.10:

3.3.3 - Virtio

Current versions of qemu/kvm and virtualbox as of 3.1 support faster paravirtualized devices. Presently, 9front provides drivers for virtio hard disk and network.

The virtio-blk disk device should show up as: /dev/sdF0

The virtio-scsi disk device should show up as: /dev/sd00

FQA INDEX | FQA 2 - Getting To Know 9front | FQA 4 - 9front Installation Guide