ref: 16aaa277d94c06585a12c4e26d9af9896ccacdf8
dir: /fqa3.ms/
.\" 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 RTL8156 .R .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. .B Note: .R Some WiFi hardware requires a corresponding firmware blob to exist under .CW /lib/firmware/. Contents of this directory get included into the kernel paqfs when the kernel is rebuilt, so make sure you don't have so much firmware in there that your kernel gets too large for your machine to boot. This, of course, varies from machine to machine. 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 .bp .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 IOgear GWU637 .R .ihtml ul <ul> .IP 802.11n .br connect ethernet port to GWU6 .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=YOUR_AP\ 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 .html - <a name="3.2.3.2.3.1" /> .ihtml h5 <h5> .SH 3.2.3.2.3.1 - iwl .R .ihtml h5 Intel Wireless WiFi Link mini PCI-Express adapters require firmware from .ihtml a <a href="http://git.9front.org/plan9front/firmware/HEAD/info.html"> http://git.9front.org/plan9front/firmware/HEAD/info.html .ihtml a to be present on attach in .CW /lib/firmware or .CW /boot. To limit the selected APs the options .CW essid= and .CW bssid= may be set at boot or in the ether interface clone file using a space as the separator between option and value, e.g. .CW echo essid left-armpit >/net/ether1/clone .R Scan results appear in the ifstats file and can be read out like: .CW cat /net/ether1/ifstats .R Ad-hoc mode or WEP encryption is currently not suppported. Example configuration for .CW plan9.ini: .P1 ether0=type=iwl\ essid=YOUR_AP wpapsk=PASSWORD .P2 List of relevant Intel WiFi cards in their various hardware configurations: .ihtml a <a href="https://ark.intel.com/content/www/us/en/ark/products/series/59485/wireless.html"> https://ark.intel.com/content/www/us/en/ark/products/series/59485/wireless.html .ihtml a .B Note: Many of these cards come in different configurations (sometimes coupled with Bluetooth, sometimes with different physical dimensions, connectors, or antennas). The specific versions listed below are known to work based on user reports or the author's own testing. Every effort has been made to keep this list accurate and up to date. No refunds. .SH Intel Centrino Advanced-N 6205 .R .ihtml ul <ul> .IP vid/did: 8086/0085 .br firmware: iwl-6005 .LP .ihtml ul .SH Intel Centrino Advanced-N 6235 .R .ihtml ul <ul> .IP firmware: iwn-6030 .br vid/did: 8086/088f .LP .ihtml ul .SH Intel Centrino Ultimate-N .R .ihtml ul <ul> .IP firmware: iwl-6000 .LP .ihtml ul .SH Intel Centrino Wireless-N 100 .R .SH Intel Centrino Wireless-N 2200/2230 .R .ihtml ul <ul> .IP vid/did: 8086/0891 .LP .ihtml ul .SH Intel WiFi Link 1000/5350 AGN .R .SH Intel Wireless AC 3160 .R .SH Intel Wireless 4965 AG or AGN .R .ihtml ul <ul> .IP vid/did: 1180/0476 .LP .ihtml ul .SH Intel Wireless 5100 AGN .R .ihtml ul <ul> .IP firmware: iwn-5000 .br vid/did: 104c/ac56 .LP .ihtml ul .SH Intel Ultimate N WiFi Link 5300 .R .ihtml ul <ul> .IP firmware: iwn-5000 .br vid/did: 1180/0476 .LP .ihtml ul .SH Intel 5300 AGN .R .ihtml ul <ul> .IP firmware: iwn-5000 .br vid/did: 8086/444e .LP .ihtml ul .SH Intel Wireless AC 7260 .R .ihtml ul <ul> .IP firmware: iwm-7260 .br vid/did: 8086/08b2 .LP .ihtml ul .SH Intel Wireless AC 8260 .R .ihtml ul <ul> .IP firmware: iwm-8000C-34 .LP .ihtml ul .SH Intel Wireless 8265/8275 .R .ihtml ul <ul> .IP firmware: iwm-8265-34 .br vid/did: 8086/15c0 .LP .ihtml ul .SH Intel Wireless AC 9260 .R .ihtml ul <ul> .IP firmware: iwm-9260-34 .LP .ihtml ul .html - <a name="3.2.3.2.3.2" /> .ihtml h5 <h5> .SH 3.2.3.2.3.2 - wpi .R .ihtml h5 Intel PRO Wireless 3945abg PCI/PCI-Express wireless adapters require firmware from .ihtml a <a href="http://git.9front.org/plan9front/firmware/HEAD/info.html"> http://git.9front.org/plan9front/firmware/HEAD/info.html .ihtml a to be present on attach in .CW /lib/firmware or .CW /boot. See the .CW iwl section above for configuration details. Example configuration for .CW plan9.ini: .P1 ether0=type=wpi\ essid=YOUR_AP wpapsk=PASSWORD .P2 .SH Intel PRO Wireless 3945ABG .R .ihtml ul <ul> .IP firmware: wpi-3945abg .br vid/did: 1180/0476 .LP .ihtml ul .html - <a name="3.2.3.2.3.3" /> .ihtml h5 <h5> .SH 3.2.3.2.3.3 - rt2860 .R .ihtml h5 Ralink Technology PCI/PCI-Express wireless adapters require firmware from .ihtml a <a href="http://firmware.openbsd.org/firmware/"> http://firmware.openbsd.org/firmware/*/ral-firmware*.tgz .ihtml a to be present on attach in .CW /lib/firmware or .CW /boot. See the .CW iwl section above for configuration details. .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=YOUR_AP\ 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. .SH Wacom (from ThinkPad X1 Yoga 3rd Gen, 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 .bp .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.1.1" /> .ihtml h4 <h4> .SH 3.3.1.1.1 - arm64 QCOW .R .ihtml h4 The .ihtml a <a href="http://iso.only9fans.com"> arm64 QCOW image .ihtml a is an arm64 9front image which can be run in QEMU. It is intended to be used under a hypervisor (such as Linux KVM or macOS Hypervisor.framework), and thus uses the most general subset of arm64 features to ensure compatibility across hardware (4K page sizes, GICv3). It currently supports XHCI USB and PCIe devices (used for VirtIO), but it is picky about which peripherals it requires since arm64 does not standardize them. It does not provide a graphical interface, and must be driven via serial (you can however use this to open a drawterm connection, and this is recommended!) Requirements: • virt-2.12 machine type because later versions place ECAM in higher memory • GICv3 • VirtIO devices marked "non-transitional" As well, U-Boot is required to boot the image. As there are no binaries for U-Boot arm64 QEMU, they must be built yourself: .P1 ; git clone https://source.denx.de/u-boot/u-boot.git ; make qemu_arm64_defconfig ; make .P2 This will produce a .CW u-boot.bin which we will use to run the system. Running To boot the system, use the correct machine type, GIC version and pass the QCOW: .P1 qemu-system-aarch64 -M virt-2.12,gic-version=3 \\ -cpu cortex-a72 -m 4G -smp 4 \\ -bios u-boot.bin \\ -drive file=9front.arm64.qcow2,if=none,id=installer \\ -device virtio-blk-pci-non-transitional,drive=installer \\ -serial stdio .P2 For hardware acceleration, pass .CW accel=hvf in the .CW -M line for e.g. macOS Hypervisor.framework. For installation, create an additional disk: .P1 qemu-img create -f qcow2 9front.qcow2 64G .P2 And add it to the QEMU machine as follows: .P1 -drive file=9front.qcow2,if=none,id=disk \\ -device virtio-blk-pci-non-transitional,drive=disk .P2 Then, the machine can be installed as per usual over serial. For networking devices, attach a .CW virtio-net-pci-non-transitional pointed to your network interface (such as user networking). USB Devices USB devices can be attached after adding an XHCI PCIe device: .P1 -device qemu-xhci,id=xhci -device usb-tablet,bus=xhci.0 .P2 .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. .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 .P2 .P1 # 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>