shithub: fqa.9front.org

ref: 10373094c6209c9bdddae6124b936977b20ea689
dir: /fqa3.ms/

View raw version
.\" This troff source is processed to create all forms of the
.\" 9FRONT DASH 1 book and the http://fqa.9front.org website.
.\" NOTE: Purely experimental. Methods employed may change.
.\" troff -ms -mpictures fqa3.ms | page
.\" htmlroff -u -ms -mhtml fqa3.ms >fqa3.html
.de FG	\" .FG <basename>
.ie h .html - <img src="\\$1.\\$2" />
.el .BP \\$1.ps
.br
..
.po 1i \" page offset (from left)
.fp 1 R LucidaSans
.fp 2 I LucidaSansI
.fp 3 B LucidaSansB
.fp 4 BI LucidaSansI
.fp 5 CW LucidaCW
.paragraph 0
.margin 0
.HTML "FQA 3 - Hardware
.html - <style type="text/css">body{font-size:10pt}; a{font-size:10pt}</style>
.html - <a href="fqa.html">FQA INDEX</a> |
.html - <a href="fqa2.html">FQA 2 - Getting To Know 9front</a> |
.html - <a href="fqa4.html">FQA 4 - 9front Installation Guide</a>
.html - <hr />
.SH
.LG
.ihtml h1 <h1>
FQA 3 - Hardware
.ihtml h1
.NL
.R
.html - <a href="fqa3.html">html</a> |
.html - <a href="fqa3.pdf">pdf</a> |
.html - <a href="fqa3.ms">troff</a>

.FG hardware jpg

.html - <a name="3.1" />
.ihtml h2 <h2>
.SH
3.1 - Selecting Hardware
.R
.ihtml h2

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
.ihtml a <a href="http://man.9front.org/8/9boot">
.CW 9boot (8),
.ihtml a
.ihtml a <a href="http://man.9front.org/8/realemu">
.CW realemu (8),
.ihtml a
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
.ihtml a <a href="fqa3.html#3.2">
.I
FQA 3.2 - Known Working Hardware
.R
.ihtml a
as well as the
.ihtml a <a href="https:/9p.io/wiki/plan9/Supported_PC_hardware">
various
.ihtml a
.ihtml a <a href="https:/9p.io/wiki/plan9/other_hardware">
supported
.ihtml a
.ihtml a <a href="https:/9p.io/wiki/plan9/virtual_machines">
hardware
.ihtml a
pages on the Bell Labs Plan 9 wiki to help determine if your hardware or VM is supported.

.html - <a name="3.2" />
.ihtml h2 <h2>
.SH
3.2 - Known Working Hardware
.R
.ihtml h2

This list adds to the
.ihtml a <a href="https:/9p.io/wiki/plan9/Supported_PC_hardware">
various
.ihtml a
.ihtml a <a href="https:/9p.io/wiki/plan9/other_hardware">
supported
.ihtml a
.ihtml a <a href="https:/9p.io/wiki/plan9/virtual_machines">
hardware
.ihtml a
pages on the Plan 9 from Bell Labs wiki.
.B 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
.ihtml a <a href="http://man.9front.org/8/plan9.ini">
.CW plan9.ini(8).
.ihtml a

Read:
.ihtml a <a href="fqa1.html#1.3.1.2">
.I
FQA 1.3.1.2 - New Hardware Support
.R
.ihtml a
for information about hardware drivers that are new in 9front.

.html - <a name="3.2.0" />
.ihtml h3 <h3>
.SH
3.2.0 - Input Devices
.R
.ihtml h3

.html - <a name="3.2.0.1">
.ihtml h3 <h3>
.SH
3.2.0.1 - Mice
.R
.ihtml h3

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

.html - <a name="3.2.0.1.1" />
.ihtml h4 <h4>
.SH
3.2.0.1.1 - IBM/Lenovo
.R
.ihtml h4

.html - <a name="n700" />
.SH
N700 Wireless/Bluetooth, 3 button Mouse and Laser Pointer
.R
.ihtml ul <ul>
.IP
Part Number: 888015450
.br
DPI: 1200
.br
"Just works" with USB receiver. No additional driver required.
.LP
.ihtml ul
.FG n700 jpg
.bp
.html - <a name="scrollpoint" />
.SH
ScrollPoint Optical Mouse, 3 button, USB/PS2
.R
.ihtml ul <ul>
.IP
Part Number: 31P7405
.br
DPI: 800
.LP
.ihtml ul
.FG scrollpoint jpg

.html - <a name="3.2.0.2">
.ihtml h3 <h3>
.SH
3.2.0.2 - Keyboards
.R
.ihtml h3

Almost any AT, PS/2, or USB keyboard is going to work. The following are preferred for use with Plan 9.
.bp
.html - <a name="3.2.0.2.1" />
.ihtml h4 <h4>
.SH
3.2.0.2.1 - IBM/Lenovo
.R
.ihtml h4

.html - <a name="1391401" />
.SH
IBM Model M 1391401
.R
.ihtml ul <ul>
.IP
Part Number: 1391401
.LP
.ihtml ul
.FG 1391401 jpg

.html - <a name="SK-8835" />
.SH
IBM UltraNav SK-8835
.R
.ihtml ul <ul>
.IP
Part Number: SK-8835
.LP
.ihtml ul
.FG sk-8835 jpg

.html - <a name="3.2.0.2.2" />
.ihtml h4 <h4>
.SH
3.2.0.2.2 - TEX Electronics
.R
.ihtml h4

.html - <a name="TEX Shinobi" />
.SH
TEX Shinobi
.R
.ihtml ul <ul>
.FG texshinobi png
.ihtml ul

.html - <a name="3.2.0.2.3" />
.ihtml h4 <h4>
.SH
3.2.0.2.3 - MNT Research GmbH
.R
.ihtml h4

.html - <a name="MNT" />
.SH
MNT Reform USB Keyboard
.R
.ihtml ul <ul>
.FG mnt_reform_usb_keyboard png

Configuration:
.ihtml a <a href="http://mnt.stanleylieber.com/reform/">
.CW
http://plan9.stanleylieber.com/hardware/mnt/reform/
.R
.ihtml a
.ihtml ul

.html - <a name="3.2.1" />
.ihtml h3 <h3>
.SH
3.2.1 - Audio
.R
.ihtml h3
Audio support is much improved in 9front, with added support for AC97, Intel HDA, and (ha!) Soundblaster 16.
.html - <br />
.FG soundblaster jpg

.SH Integrated

.SH
AMD FCH Azalia Controller
.R
.ihtml ul <ul>
.IP
vid/did: 1022/780d
.LP
.ihtml ul

.SH
Intel 888 Microsoft UAA bus for HD audio
.R
.ihtml ul <ul>
.IP
vid/did: 8086/284b
.LP
.ihtml ul

.SH
Intel 82801CA/CAM AC97
.R
.ihtml ul <ul>
.IP
vid/did: 8086/2485
.LP
.ihtml ul

.SH
Intel 82801 DB DBM/DA AC 97
.R
.ihtml ul <ul>
.IP
vid/did: 8086/24c5
.LP
.ihtml ul

.SH
Intel 486486 82801IB/IR/IH HD Audio
.R
.ihtml ul <ul>
.IP
vid/did: 8086/293e
.LP
.ihtml ul

.SH
Intel Gemeni Lake
.R
.ihtml ul <ul>
.IP
vid/did 8086/3198
.LP
.ihtml ul

.SH
Intel HD NM10/ICH7
.R
.ihtml ul <ul>
.IP
vid/did: 8086/27d8
.LP
.ihtml ul

.SH
Intel HD 6 Series/C200 Series
.R
.ihtml ul <ul>
.IP
vid/did: 8086/1c20
.LP
.ihtml ul

.SH
Intel HD 7 Series/C210 Series
.R
.ihtml ul <ul>
.IP
vid/did: 8086/1e20
.LP
.ihtml ul

.html - <a name="3.2.2" />
.ihtml h3 <h3>
.SH
3.2.2 - Graphics
.R
.ihtml h3
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.
.html - <br />
.FG glitch jpg

.html - <a name="3.2.2.1" />
.ihtml h4 <h4>
.SH
3.2.2.1 - AGP
.R
.ihtml h4

.SH
NVidia  GeForce FX 5200 128MB VGA output
.R
.ihtml ul <ul>
.IP
vid/did: 10de/0322
.br
.CW
monitor=vesa\ vgasize=1600x1200x32
.R
.br
.CW
monitor=dellst2210\ vgasize=1920x1080x32
.R
.br
.html - <ul><a href="http://plan9.stanleylieber.com/hardware/emachines/t3302/">VGA dump</a></ul>
.LP
.ihtml ul

.SH
NVidia GeForce FX 5700
.R
.ihtml ul <ul>
.IP
vid/did: 10de/0341
.br
.CW
monitor=vesa\ vgasize=1600x1200x32
.br
monitor=dellst2210\ vgasize=1920x1080x32
.R
.br
.html - <ul><a href="http://plan9.stanleylieber.com/hardware/emachines/t3302/sysinfo">VESA BIOS modes</a></ul>
.LP
.ihtml ul
.bp
.html - <a name="3.2.2.2" />
.ihtml h4 <h4>
.SH
3.2.2.2 - Integrated
.R
.ihtml h4

.SH
ATI Mobility Radeon 7500 128MB DVI/VGA output
.R
.ihtml ul <ul>
.IP
vid/did: 1002/4c57
.br
.CW
monitor=vesa\ vgasize=1024x768x32
.R
.br
.html - <ul><a href="http://plan9.stanleylieber.com/hardware/thinkpad/t42/2373-bk4/sysinfo">VESA BIOS modes</a></ul>
.LP
.ihtml ul

.SH
ATI Mobility Radeon FireGL V3200/X600
.R
.ihtml ul <ul>
.IP
vid/did: 1002/3154
.br
.CW
monitor=vesa\ vgasize=1600x1200x32
.R
.br
.html - <ul><a href="http://plan9.stanleylieber.com/hardware/thinkpad/t43p/2669-a92/sysinfo">VESA BIOS modes</a></ul>
.LP
.ihtml ul

.SH
ATI RS880
.R
.ihtml ul <ul>
.IP
.CW
monitor=vesa\ vgasize=1280x1024x32
.R
.br
.html - <ul><a href="http://plan9.stanleylieber.com/hardware/hp/6005sff/sysinfo">VESA BIOS modes</a></ul>
.LP
.ihtml ul

.SH
ATI X1300
.R
.html - <ul><a href="http://plan9.stanleylieber.com/hardware/thinkcentre/m55/8810-d3u/vesa.x1300">VESA BIOS modes</a></ul>

.SH
Intel Mobile 945GM/GMS/GME, 943/940GML Express
.R
.ihtml ul <ul>
.IP
vid/did: 8086/27a6
.br
.CW
monitor=vesa\ vgasize=1400x1050x32
.br
monitor=x60t\ vgasize=1400x1050x32
.R
.br
.html - <ul><a href="http://plan9.stanleylieber.com/hardware/thinkpad/x61t/7767-01u/sysinfo">VESA BIOS modes</a></ul>
.LP
.ihtml ul

.SH
Intel X3100/GM965/PM965/GL960
.R
.ihtml ul <ul>
.IP
vid/did: 8086/2a03
.br
.CW
monitor=vesa\ vgasize=1680x1050x32
.R
.br
.html - <ul><a href="http://plan9.stanleylieber.com/hardware/thinkpad/t61/7659-cto/sysinfo">VESA BIOS modes</a></ul>
.LP
.ihtml ul

.SH
Intel Mobile Intel 4 Series 4500MHD
.R
.ihtml ul <ul>
.IP
vid/did: 8086/2a42, 8086/2a43
.br
.CW
monitor=vesa\ vgasize=1440x900x32
.br
monitor=x301\ vgasize=1440x900x32
.R
.br
.html - <ul><a href="http://plan9.stanleylieber.com/hardware/thinkpad/x301/2776-p6u/sysinfo">VESA BIOS modes</a></ul>
.LP
.ihtml ul

.SH
Intel HD 3rd Gen Core processor Graphics Controller
.R
.ihtml ul <ul>
.IP
vid/did: 8086/0166
.br
.CW
monitor=vesa\ vgasize=1366x768x32
.br
monitor=x230\ vgasize=1366x768x32
.R
.br
.html - <ul><a href="http://plan9.stanleylieber.com/hardware/thinkpad/x230/2306-cto/sysinfo">VESA BIOS modes</a></ul>
.LP
.ihtml ul

.SH
NVidia GeForce FX Go5200 64M
.R
.ihtml ul <ul>
.IP
vid/did: 10de/0324
.br
.CW
monitor=cinema\ vgasize=1152x768x32
.R
.LP
.ihtml ul

.SH
S3 SuperSavage IX/C 16MB
.R
.ihtml ul <ul>
.IP
vid/did: 5333/8c2e
.br
.CW
monitor=t23\ vgasize=1024x768x32
.br
monitor=vesa\ vgasize=1024x768x32
.R
.br
.html - <ul><a href="http://plan9.stanleylieber.com/hardware/thinkpad/t23/2647-hsu/sysinfo">VESA BIOS modes</a></ul>
.LP
.ihtml ul

.html - <a name="3.2.2.3" />
.ihtml h4 <h4>
.SH
3.2.2.3 - PCI Express
.R
.ihtml h4

.SH
NVidia GeForce 6200 AGB
.R
.ihtml ul <ul>
.IP
vid/did: 10de/0220
.LP
.ihtml ul

.SH
NVidia GeForce 6200 LE
.R
.ihtml ul <ul>
.IP
vid/did: 10de/0163
.br
.CW
monitor=e228wfp\ vgasize=1680x1050x32
.R
.LP
.ihtml ul

.SH
NVidia GeForce 8400 GS
.R
.ihtml ul <ul>
.IP
vid/did: 10de/0422
.br
.CW
monitor=vesa\ vgasize=1680x1050x32
.R
.br
.html - <ul><a href="http://plan9.stanleylieber.com/hardware/thinkcentre/m55/8810-d3u/vesa.8400gs">VESA BIOS modes</a></ul>
.LP
.ihtml ul

.SH
NVidia GeForce 8600 GT
.R
.ihtml ul <ul>
.IP
vid/did: 10de/0402
.br
.CW
monitor=vesa\ vgasize=1600x1200x32
.R
.LP
.ihtml ul

.SH
NVidia GeForce GTX 550
.R
.ihtml ul <ul>
.IP
vid/did: 10de/0bee
.br
.CW
monitor=vesa\ vgasize=1600x1200x32
.R
.LP
.ihtml ul

.html - <a name="3.2.3" />
.ihtml h3 <h3>
.SH
3.2.3 - Networking
.R
.ihtml h3

.html - <a name="3.2.3.1" />
.ihtml h4 <h4>
.SH
3.2.3.1 - Ethernet
.R
.ihtml h4

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.

.html - <a name="3.2.3.1.1" />
.ihtml h5 <h5>
.SH
3.2.3.1.1 - Integrated
.R
.ihtml h5

.SH
Broadcom BCM5751M NetXtreme Gigabit
.R
.ihtml ul <ul>
.IP
vid/did: 14e4/167d
.br
tested 100/1000 mbps
.LP
.ihtml ul

.SH
Broadcom BCM5755/5780 NetXtreme Gigabit
.R
.ihtml ul <ul>
.IP
vid/did: 14e4/167b
.br
tested 100/1000 mbps
.LP
.ihtml ul

.SH
Broadcom BCM5782 NetXtreme Gigabit
.R
.ihtml ul <ul>
.IP
vid/did: 14e4/1696
.LP
.ihtml ul

.SH
Intel X553/X550-AT 10GBASE-T
.R
.ihtml ul <ul>
.IP
vid/did: 8086/15c8
.LP
.ihtml ul

.SH
Intel 82540EP Gigabit
.R
.ihtml ul <ul>
.IP
vid/did: 8086/101e
.br
tested 100/1000 mbps
.LP
.ihtml ul

.SH
Intel 82562ET
.R
.ihtml ul <ul>
.IP
tested 10/100 mbps
.LP
.ihtml ul

.SH
Intel 82566MM Gigabit
.R
.ihtml ul <ul>
.IP
vid/did: 8086/1049
.br
tested 100/1000 mbps
.LP
.ihtml ul

.SH
Intel 82567LM 82567LM-2 Gigabit
.R
.ihtml ul <ul>
.IP
vid/did: 8086/10f5
.br
tested 100/1000 mbps
.LP
.ihtml ul

.SH
Intel 82573L Gigabit
.R
.ihtml ul <ul>
.IP
vid/did: 8086/109a
.br
tested: 100/1000 mbps
.LP
.ihtml ul

.SH
Intel 82579LM Gigabit
.R
.ihtml ul <ul>
.IP
vid/did: 8086/1502
.br
tested: 100/1000 mbps
.LP
.ihtml ul

.SH
Intel 82801CAM PRO/100 VE
.R
.ihtml ul <ul>
.IP
vid/did: 8086/1031
.br
tested 10/100 mbps
.LP
.ihtml ul

.SH
Realtek RTL8139
.R
.ihtml ul <ul>
.IP
vid/did: 10ec/8139
.br
tested 10/100/1000 mbps
.LP
.ihtml ul

.SH
Realtek RTL8169/RTL8101E/RTL8102E
.R
.ihtml ul <ul>
.IP
vid/did: 10ec/8136
.br
tested 10/100/1000 mbps
.LP
.ihtml ul

.html - <a name="3.2.3.1.2" />
.ihtml h5 <h5>
.SH
3.2.3.1.2 - USB
.R
.ihtml h5
.SH
Beceem Communications CLEAR Stick
.R
.ihtml ul <ul>
.IP
vid/did 198f:8160
.br
This is a WiMAX device that appears as a USB CDC Ethernet device
.br
Works with nusb/ether
.LP
.ihtml ul

.SH
RNDIS
.R
.ihtml ul <ul>
.IP
Android phones should work
.br
Works with nusb/ether
.LP
.ihtml ul

.html - <a name="3.2.3.1.3" />
.ihtml h5 <h5>
.SH
3.2.3.1.3 - PCMCIA
.R
.ihtml h5
.SH
3Com 3c589c
.R
.ihtml ul <ul>
.IP
Set the following in
.CW plan9.ini :
.CW
irq=3 port=0x300
.R
.LP
.ihtml ul

.html - <a name="3.2.3.2" />
.ihtml h4 <h4>
.SH
3.2.3.2 - WiFi
.R
.ihtml h4

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

Read:
.ihtml a <a href="http://man.9front.org/8/wpa">
.CW wpa (8),
.ihtml a
and
.ihtml a <a href="http://man.9front.org/8/plan9.ini">
.CW plan9.ini (8)
.ihtml a

.html - <a name="3.2.3.2.1" />
.ihtml h5 <h5>
.SH
3.2.3.2.1 - Bridge (external)
.R
.ihtml h5

.SH
Iogear GWU627
.R
.ihtml ul <ul>
.IP
802.11n
.br
connect ethernet port to GWU627
.br
HTTP management interface requires Javascript. Managed to program it using Inferno's
.CW charon
browser, which supports ecmascript 1.0.
.LP
.ihtml ul

.SH
Vonets VAP11G
.R
.ihtml ul <ul>
.IP
802.11g
.br
connect ethernet port to VAP11G
.br
Requires a proprietary Windows program (ships with the device) to program its settings before using it for the first time.
.LP
.ihtml ul

.html - <ul><a href="http://www.vonets.com/serviceView.asp?D_ID=114">manufacturer website</a></ul>

.html - <a name="3.2.3.2.2" />
.ihtml h5 <h5>
.SH
3.2.3.2.2 - Mini-PCI
.R
.ihtml h5

.SH
Actiontec 800MIP
.R
.ihtml ul <ul>
.IP
802.11b
.br
often branded Lucent WaveLAN
.br
.CW
ether0=type=wavelanpci\ ssid=MESH\ station=T42\ irq=11
.R
.LP
.ihtml ul

.html - <ul><a href="http://www.thinkwiki.org/wiki/IBM_High_Rate_Wireless_LAN_Mini-PCI_Adapter_III">probably this chip</a></ul>

.SH
Ralink RT2860
.R
802.11b

.html - <a name="3.2.3.2.3" />
.ihtml h5 <h5>
.SH
3.2.3.2.3 - Mini-PCI Express
.R
.ihtml h5

.SH
Intel Centrino Advanced-N 6205 Taylor Peak (iwl-6005)
.R
.ihtml ul <ul>
.IP
vid/did: 8086/0085
.br
802.11g
.br
.CW
ether0=type=iwl\ essid=MESH
.R
.LP
.ihtml ul

.SH
Intel Centrino Ultimate-N (iwl-6000)
.R
.ihtml ul <ul>
.IP
802.11g
.br
.CW
ether0=type=iwl\ essid=MESH
.R
.LP
.ihtml ul

.SH
Intel Centrino Wireless-N 100
.R
.ihtml ul <ul>
.IP
802.11g
.br
.CW
ether0=type=iwl\ essid=MESH
.R
.LP
.ihtml ul

.SH
Intel Centrino Wireless-N 2230
.R
.ihtml ul <ul>
.IP
802.11g
.br
.CW
ether0=type=iwl\ essid=MESH
.R
.LP
.ihtml ul

.SH
Intel PRO Wireless 3945ABG (wpi-3945abg)
.R
.ihtml ul <ul>
.IP
802.11g
.br
.CW
ether0=type=wpi\ essid=MESH
.R
.LP
.ihtml ul

.SH
Intel WiFi Link 1000/4965/5100/5300/5350 AGN
.R
.ihtml ul <ul>
.IP
802.11g
.br
.CW
ether0=type=iwl\ essid=MESH
.R
.LP
.ihtml ul

.SH
Intel Wireless AC 8260/8265
.R
.ihtml ul <ul>
.IP
802.11g
.br
.CW
ether0=type=iwl\ essid=MESH
.R
.LP
.ihtml ul

.SH
Intel Wireless AC 9260
.R
.ihtml ul <ul>
.IP
802.11g
.br
.CW
ether0=type=iwl\ essid=MESH
.R
.LP
.ihtml ul

.SH
Ralink RT3090
.R
.ihtml ul <ul>
.IP
802.11g
.LP
.ihtml ul

.html - <a name="3.2.3.2.4" />
.ihtml h5 <h5>
.SH
3.2.3.2.4 - PCI
.R
.ihtml h5

.SH
Ralink RT3090
.R
.ihtml ul <ul>
.IP
802.11b
.LP
.ihtml ul

.html - <a name="3.2.3.2.5" />
.ihtml h5 <h5>
.SH
3.2.3.2.5 - PCMCIA
.R
.ihtml h5

.SH
Linksys WPC11
.R
.ihtml ul <ul>
.IP
802.11b
.br
Prism 2.5
.br
ISL37300P
.br
RevA
.LP
.ihtml ul

.SH
Lucent WaveLAN PC24E-H-FC
.R
.ihtml ul <ul>
.IP
802.11b
.br
.CW
ether0=type=wavelan\ essid=MESH\ crypt=off\ station=x61\ irq=11
.R
.LP
.ihtml ul

.html - <a name="3.2.4" />
.ihtml h3 <h3>
.SH
3.2.4 - Tablet Digitizers
.R
.ihtml h3

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).

.html - <a name="3.2.4.1" />
.ihtml h4 <h4>
.SH
3.2.4.1 - Serial
.R
.ihtml h4

.html - <a name="3.2.4.1.1" />
.ihtml h5 <h5>
.SH
3.2.4.1.1 - Integrated
.R
.ihtml h5

.SH
Wacom WACF004
.R
.ihtml ul <ul>
.IP
ThinkPad X4* series tablets

To enable the tablet's serial port in
.CW plan9.ini :
.P1
uart2=type=isa port=0x200 irq=5
.P2
To turn on the tablet:
.P1
aux/wacom; aux/tablet &
.P2
.LP
.ihtml ul

.SH
Wacom WACF008
.R
.ihtml ul <ul>
.IP
ThinkPad X6* series tablets

To enable the tablet's serial port in
.CW plan9.ini :
.P1
uart2=type=isa port=0x200 irq=5
.P2
To turn on the tablet:
.P1
aux/wacom; aux/tablet &
.P2
.LP
.ihtml ul

.html - <a name="3.2.4.2" />
.ihtml h4 <h4>
.SH
3.2.4.2 - USB
.R
.ihtml h4

.html - <a name="3.2.4.2.1" />
.ihtml h5 <h5>
.SH
3.2.4.2.1 - Integrated
.R
.ihtml h5

.SH
Wacom (from ThinkPad X230 Tablet, model unknown)
.R

Treated as a mouse.

.html - <a name="3.2.4.2.2" />
.ihtml h5 <h5>
.SH
3.2.4.2.2 - External
.R
.ihtml h5

.SH
Wacom CTE-640
.R

Treated as a mouse.

.html - <a name="3.2.5" />
.ihtml h3 <h3>
.SH
3.2.5 - Desktop and Laptop Systems
.R
.ihtml h3
.html - <br />
.FG rugged png

The ever-expanding list of supported desktop and laptop systems has been redacted from this book and moved exclusivly online.
Access it here:
.ihtml a <a href="http://plan9.stanleylieber.com/hardware/">
.CW
http://plan9.stanleylieber.com/hardware/
.R
.ihtml a

.FG desktops png

.html - <a name="3.3" />
.ihtml h2 <h2>
.SH
3.3 - Virtual Machines
.R
.ihtml h2

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

.B
Note:
.R
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.

.html - <a name="3.3.1" />
.ihtml h3 <h3>
.SH
3.3.1 - Qemu
.R
.ihtml h3

The following generic setup is tested with qemu 1.5.0 and 2.0.50 running on Linux, using
.ihtml a <a href="fqa3.html#3.3.3">
.I
FQA 3.3.3 - virtio
.R
.ihtml a
for disk and network. This same generic setup should work for most host operating systems.

.html - <a name="3.3.1.1" />
.ihtml h4 <h4>
.SH
3.3.1.1 - Installation
.R
.ihtml h4

Create a sparse disk image:
.P1
qemu-img create -f qcow2 9front.qcow2.img 30G
.P2

Boot the
.ihtml a <a href="fqa1.html#1.11.1">
9front.iso:
.ihtml a
.P1
qemu-system-x86_64 -cpu host -m 1024 \e
-net nic,model=virtio,macaddr=00:20:91:37:33:77 -net user \e
-device virtio-scsi-pci,id=scsi \e
-drive if=none,id=vd0,file=9front.qcow2.img \e
-device scsi-hd,drive=vd0 \e
-drive if=none,id=vd1,file=9front.iso \e
-device scsi-cd,drive=vd1,bootindex=0
.P2

Finally, see:
.ihtml a <a href="fqa4.html#4.3">
.I
FQA 4.3 - Performing a simple install
.R
.ihtml a

.html - <a name="3.3.1.2" />
.ihtml h4 <h4>
.SH
3.3.1.2 - Post-Installation Booting
.R
.ihtml h4
.P1
qemu-system-x86_64 -cpu host -m 1024 \e
-net nic,model=virtio,macaddr=00:20:91:37:33:77 -net user \e
-device virtio-scsi-pci,id=scsi \e
-drive if=none,id=vd0,file=9front.qcow2.img \e
-device scsi-hd,drive=vd0
.P2

.html - <a name="3.3.1.2.1" />
.ihtml h5 <h5>
.SH
3.3.1.2.1 - Multiboot
.R
.ihtml h5

Multiboot can be used to start the 9front kernel directly, skipping the bootloader step:
.P1
qemu -kernel 9pc -initrd plan9.ini
.P2

.html - <a name="3.3.1.4" />
.ihtml h4 <h4>
.SH
3.3.1.4 - Networking
.R
.ihtml h4

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.

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

.html - <a name="3.3.1.4.1" />
.ihtml h5 <h5>
.SH
3.3.1.4.1 - Linux VDE
.R
.ihtml h5

Install
.ihtml a <a href="http://vde.sourceforge.net">
vde2.
.ihtml a

Setup a tap interface:
.P1
sudo tunctl -u $USER -t tap0
.P2

Start a virtual switch connected to the tap interface:
.P1
vde_switch --tap tap0 -daemon
.P2

Connect the switch to the network of the host. Use DHCP:
.P1
slirpvde --dhcp --daemon
.P2

When booting 9front, add the following to the
.CW
qemu
.R
command line arguments:
.P1
-net vde
.P2

.html - <a name="3.3.1.4.2" />
.ihtml h5 <h5>
.SH
3.3.1.4.2 - OpenBSD TAP
.R
.ihtml h5

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

.B 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.

[Continued on next page]

.P1
# 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 192.168.54.1 255.255.255.0 NONE >/etc/hostname.vether0
ed /etc/pf.conf
/ext_if
a
int_if="vether0"

match out from $int_if:network to any nat-to ($ext_if:0)
\&.
w
q
pfctl -f /etc/pf.conf
echo link0 up >/etc/hostname.tap0
echo add vether0 add tap0 up >/etc/hostname.bridge0
sh /etc/netstart
>/etc/dhcpd.conf
ed /etc/dhcpd.conf
i
option domain-name "example.com";
option domain-name-servers 192.168.54.1;

subnet 192.168.54.0 netmask 255.255.255.0 {
	option routers 192.168.54.1;

	range 192.168.54.100 192.168.54.199;
}
\&.
w
q
rcctl enable dhcpd
rcctl start dhcpd
ed /var/unbound/etc/unbound.conf
/interface
a
	interface: 192.168.54.1
\&.
/access-control
a
	access-control: 192.168.54.0/24 allow
\.
w
q
rcctl enable unbound
rcctl start unbound
echo \'permit setenv { -ENV PS1=$DOAS_PS1 SSH_AUTH_SOCK } :wheel\' \e
	>/etc/doas.conf

# as user who is in wheel group
mkdir -p $HOME/9 $HOME/bin
cd $HOME/9
qemu-img -f qcow2 9front.qcow2.img 30G
# adjust url for current iso
wget http://9front.org/iso/9front-5561.df1dc1ff2475.iso.bz2
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
cd
# boot from iso (install)
doas -u root q9 -i
# boot from qcow image (after completing the install)
doas -u root q9
# connect to qemu via vnc
q9 -v
.P2

.html - <a name="3.3.1.4.3" />
.ihtml h5 <h5>
.SH
3.3.1.4.3 - Windows TAP
.R
.ihtml h5

This is tested with the
.ihtml a <a href="http://www.h7.dion.ne.jp/~qemu-win/">
qemu for windows
.ihtml a
distribution. Download and run the installer from
.ihtml a <a href="http://openvpn.net/index.php/open-source/downloads.html">
openvpn
.ihtml a
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:
.P1
qemu.exe -net nic -net tap,ifname="tap-qemu" ...
.P2

.html - <a name="3.3.1.4.4" />
.ihtml h5 <h5>
.SH
3.3.1.4.4 - Linux TAP
.R
.ihtml h5

.I
Contributed by joe9:
.R

on the host:
.P1
sudo ip tuntap add dev tap0 mode tap user joe
sudo ip address add 10.0.0.1/24 dev tap0
.P2
start qemu using (do not need sudo for qemu):
.P1
SDL_VIDEO_X11_DGAMOUSE=0 qemu-system-x86_64 \e
	-cpu host -enable-kvm -m 1024 \e
	-netdev tap,id=eth,ifname=tap0,script=no,downscript=no \e
	-device e1000,netdev=eth,mac=00:20:91:37:33:77 \e
	-device virtio-scsi-pci,id=scsi -drive \e
	if=none,id=vd0,file=9front.qcow2.img \e
	-device scsi-hd,drive=vd0 \e
	-usb -usbdevice tablet -sdl \e
	-ctrl-grab
.P2
on 9front:
add the below line to
.CW /lib/ndb/local
.P1
sys=cirno ether=52540000ee03 ip=10.0.0.2 ipmask=255.255.255.0
	ipgw=10.0.0.1
	dns=10.0.0.1
	dom=cirno.9front
.P2
run:
.CW
ip/ipconfig -N
.R

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

check the communication between the vm and the linux host using (on the linux host):
.P1
sudo tcpdump -nS -vv -i tap0
.P2

.I
Contributed by hiro:
.R

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

To do this, first globally enable forwarding:
.P1
echo 1 > /proc/sys/net/ipv4/ip_forward
.P2
Enable Masquerading for everything comping from the VM's tap device (eth0 being your host's way to the internet):
.P1
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE
.P2
block everything else from being forwarded:
.P1
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s 10.0.0.0/24 -i tap0 -j ACCEPT
iptables -P FORWARD DROP
.P2

.html - <a name="3.3.1.5" />
.ihtml h4 <h4>
.SH
3.3.1.5 - Audio
.R
.ihtml h4

Run qemu with the flag
.CW
-soundhw sb16
.R
and put the following line in
.CW
plan9.ini:
.R
.P1
audio0=type=sb16 port=0x220 irq=5 dma=5
.P2

.B
Note:
.R
.CW
irq
.R
and
.CW
dma
.R
values may vary.

.html - <a name="3.3.1.6" />
.ihtml h4 <h4>
.SH
3.3.1.6 - Graphics
.R
.ihtml h4

Use
.CW monitor=vesa

.B
Note:
.R
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).
.bp
.html - <a name="3.3.2" />
.ihtml h3 <h3>
.SH
3.3.2 - Virtualbox
.R
.ihtml h3

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

.FG virtualbox jpg

Read:
.ihtml a <a href="http://www.landley.net/notes-2015.html#25-06-2015">
.CW
http://www.landley.net/notes-2015.html#25-06-2015
.R
.ihtml a

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

.html - <a name="3.3.2.1" />
.ihtml h4 <h4>
.SH
3.3.2.1 - Ethernet
.R
.ihtml h4
The emulated "Intel PRO/1000 MT Server" ethernet controller is known to work.

.html - <a name="3.3.2.2" />
.ihtml h4 <h4>
.SH
3.3.2.2 - Audio
.R
.ihtml h4

Put the following in
.CW
plan9.ini:
.R
.P1
audio0=type=sb16
.P2

.html - <a name="3.3.2.3" />
.ihtml h4 <h4>
.SH
3.3.2.3 - Graphics
.R
.ihtml h4
Use
.CW monitor=vesa

.html - <a name="3.3.2.4" />
.ihtml h4 <h4>
.SH
3.3.2.4 - Known Working Versions
.R
.ihtml h4

4.3.14 r95030 on Windows 7

4.3.16 on Mac OS X
.html - <a href="https:/ewww.youtube.com/watch?v=n5XAhsHyqow">youtube</a>

4.3.18 r96516 on Linux x86_64 kernel 3.14.22

4.3.18 on Windows 7:
.QS
.ihtml ul <ul>
just tried with vbox 4.3.18 on windows7.  9front boots fine in BIOS
mode, but the PCnet nic dosnt work.  reason is that vbox pIIx pci irq
routing is fucked so the ethernet doesnt get interrupts. if i boot
with *nopcirouting=1, it works fine. theres a option to select the
chipset so i tried ICH9 with IO-APIC enabled.  normal mp mode fails
because of broken mp tables, but works with *acpi=.  also, it works
with UEFI mode (which always uses ACPI).  the usual intel mt server
nic also works (thats what is usually recommended for working arround
the broken ethernet).

pci routing issue has been fixed in latest kernel, should be
available in iso release after 3960.
.QE
.ihtml ul

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

.ihtml ul <ul>
.QS
.P1
General -> Basic
Type: Other
Version: Other/Uknown

System -> Motherboard
Chipset: PIIX3
Pointing Device: PS/2 Mouse
Extended Features: [x] Enable I/O APIC

System -> Processor
Extended Features: [x] PAE/NX (not sure this matters)

System -> Acceleration
[x] Enable VT-x/AMD-V
[x] Enable Nested Paging

Display -> Video
Extended Features: [x] Enable 3D Acceleration (not sure this matters)

Storage -> Attributes
Name: IDE
Type: PIIX4
[x] Use Host I/O Cache

Audio ->
[x] Enable Audio
Host Audio Driver: CoreAudio (Can be PulseAudio or otherwise for Linux, 
etc. Shouldn't be hard to set this)
Audio Controller: Soundblaster 16

Network -> Adapter 1
Attached to: NAT
-> Advanced
Adapter Type: Intel PRO/1000 MT Server
Promiscuous Mode: Deny (Not sure this matters)
.P2
.B Note:
Enabling USB 2.0 Controll in 'Ports -> USB' works just fine in 
9front, mounting under
.CW /shr
flawlessly as long as the host has the Virtualbox Extension Pack running.
.QE
.ihtml ul

.FG vbox.4.2.6 png

.html - <a name="3.3.3" />
.ihtml h3 <h3>
.SH
3.3.3 - Virtio
.R
.ihtml h3

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:
.CW /dev/sdF0

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

.html - <a name="3.3.4" />
.ihtml h3 <h3>
.SH
3.3.4 - bhyve
.R
.ihtml h3

Two different guides (and a bonus video) have appeared elsewhere on the Internet:

FreeBSD Wiki:
.ihtml a <a href="https://wiki.freebsd.org/bhyve/9front">
https://wiki.freebsd.org/bhyve/9front
.ihtml a

9front Wiki:
.ihtml a <a href="http://wiki.9front.org/freebsd-bhyve">
http://wiki.9front.org/freebsd-bhyve
.ihtml a

Watch:
.ihtml a <a href="https://youtu.be/m7igZ1fR7ZA">
https://youtu.be/m7igZ1fR7ZA
.ihtml a

.html - <hr />
.html - <a href="fqa.html">FQA INDEX</a> |
.html - <a href="fqa2.html">FQA 2 - Getting To Know 9front</a> |
.html - <a href="fqa4.html">FQA 4 - 9front Installation Guide</a>