Annotation of wikisrc/ports/evbarm/allwinner.mdwn, revision 1.102
1.1 wiki 1: [[!meta title="NetBSD/evbarm on Allwinner Technology SoCs"]]
2:
1.61 wiki 3: NetBSD supports many boards based on Allwinner SoCs. Starting with NetBSD 8.0, FDT is used to configure devices. As a result, a large number of boards and configurations can be supported with a single kernel.
1.49 wiki 4:
1.63 wiki 5: <img src="https://pbs.twimg.com/media/DIRGmsOXcAEJu-j.jpg" width="300">
6: <img src="https://pbs.twimg.com/media/DJYA7SCXUAEvEQk.jpg" width="300">
7:
1.18 wiki 8: [[!toc levels=2]]
9:
1.61 wiki 10: # Supported SoCs
11:
12: <table>
13: <thead>
14: <tr>
15: <th>Family</th>
16: <th>SoC</th>
17: <th>NetBSD version</th>
1.62 wiki 18: <th>Example boards</th>
1.61 wiki 19: <th>Notes</th>
20: </tr>
21: </thead>
22: <tbody>
1.102 ! wiki 23: <tr><td>sun4i</td><td>A10</td><td>9.0</td><td><a href="https://www.olimex.com/Products/OLinuXino/A10/A10-OLinuXino-LIME/open-source-hardware">Olimex A10-OLinuXino-LIME</a><td></td></tr>
1.61 wiki 24: <tr><td>sun5i</td><td>A10s</td><td>-</td><td></td></tr>
1.102 ! wiki 25: <tr><td>sun5i</td><td>A13</td><td>9.0</td><td><a href="https://www.olimex.com/Products/OLinuXino/A13/A13-OLinuXino/open-source-hardware">Olimex A13-OLinuXino</a>, <a href="https://www.olimex.com/Products/OLinuXino/A13/A13-OLinuXino-MICRO/open-source-hardware">Olimex A13-OLinuXino-MICRO</a></td></tr>
! 26: <tr><td>sun5i</td><td>GR8</td><td>9.0</td><td><a href="https://getchip.com/pages/chippro">C.H.I.P. Pro</a></td><td></td></tr>
! 27: <tr><td>sun5i</td><td>R8</td><td>9.0</td><td><a href="https://getchip.com/pages/chip">C.H.I.P.</a>, <a href="https://getchip.com/pages/pocketchip">Pocket C.H.I.P.</a></td><td></td></tr>
! 28: <tr><td>sun6i</td><td>A31</td><td>7.0</td><td><a href="http://linux-sunxi.org/Merrii_Hummingbird_A31">Merrii Hummingbird A31</a></td><td></td></tr>
1.62 wiki 29: <tr><td>sun6i</td><td>A31s</td><td>-</td><td></td><td></td></tr>
1.102 ! wiki 30: <tr><td>sun7i</td><td>A20</td><td>7.0</td><td><a href="https://linux-sunxi.org/Cubietech_Cubieboard2">Cubietech Cubieboard 2</a>, <a href="https://linux-sunxi.org/Cubietruck">Cubietech Cubietruck</a>, <a href="http://linux-sunxi.org/LeMaker_Banana_Pi">LeMaker Banana Pi</a></td><td></td></tr>
1.61 wiki 31: <tr><td>sun8i</td><td>A23</td><td>-</td><td></td></tr>
1.72 wiki 32: <tr><td>sun8i</td><td>A33</td><td>-</td><td><a href="https://www.olimex.com/Products/OLinuXino/A33/A33-OLinuXino/open-source-hardware">Olimex A33-OLinuXino</a></td></tr>
1.71 wiki 33: <tr><td>sun8i</td><td>R40</td><td>-</td><td><a href="http://www.banana-pi.org/m2u.html">Sinovoip Banana Pi BPI-M2U</a></td></tr>
1.102 ! wiki 34: <tr><td>sun8i</td><td>A83T</td><td>8.0</td><td><a href="http://www.banana-pi.org/m3.html">Sinovoip Banana Pi BPI-M3</a></td><td></td></tr>
! 35: <tr><td>sun8i</td><td>H2+</td><td>8.0</td><td><a href="http://www.orangepi.org/orangepizero/">Xunlong Orange Pi Zero</a></td><td></td></tr>
! 36: <tr><td>sun8i</td><td>H3</td><td>8.0</td><td><a href="http://nanopi.io/nanopi-neo.html">FriendlyARM NanoPi NEO</a>, <a href="http://www.orangepi.org/orangepiplus2e/">Xunlong Orange Pi Plus 2E</a></td><td></td></tr>
1.73 wiki 37: <tr><td>sun8i</td><td>V3s</td><td>-</td><td><a href="https://www.indiegogo.com/projects/licheepi-zero-6-extensible-linux-module-on-finger-wifi-diy#/">Lichee Pi Zero</a></td><td></td></tr>
1.102 ! wiki 38: <tr><td>sun9i</td><td>A80</td><td>8.0</td><td><a href="http://linux-sunxi.org/Cubietech_Cubieboard4">Cubietech Cubieboard 4</a></td><td></td></tr>
! 39: <tr><td>sun50i</td><td>A64</td><td>9.0</td><td><a href="https://www.pine64.org/?page_id=1194">Pine64</a>, <a href="https://www.pine64.org/?page_id=3707">Pinebook</a></td><td></td></tr>
! 40: <tr><td>sun50i</td><td>H5</td><td>9.0</td><td><a href="http://www.friendlyarm.com/index.php?route=product/product&path=69&product_id=180">FriendlyARM NanoPi NEO2, <a href="http://www.friendlyarm.com/index.php?route=product/product&path=69&product_id=196">FriendlyARM NanoPi NEO Plus2</a></td><td></td></tr>
! 41: <tr><td>sun50i</td><td>H6</td><td>9.0</td><td><a href="http://www.orangepi.org/OrangePiOneplus/">Orange Pi One Plus</a>, <a href="https://www.pine64.org/?product_cat=pine-h64-boards">Pine H64</a></td></tr>
1.61 wiki 42: </tbody>
43: </table>
44:
1.1 wiki 45:
46: # Supported hardware
1.61 wiki 47:
1.97 wiki 48: Please refer to the [GENERIC (32-bit)](https://nxr.netbsd.org/xref/src/sys/arch/evbarm/conf/GENERIC) or [GENERIC64 (64-bit)](https://nxr.netbsd.org/xref/src/sys/arch/evbarm/conf/GENERIC64) kernel configs for the most up-to-date list of supported hardware.
1.64 wiki 49:
50: <table>
51: <thead>
52: <tr>
53: <th>Device</th>
54: <th>Supported</th>
55: <th>Notes</th>
56: </tr>
57: </thead>
58: <tbody>
1.89 wiki 59: <tr><td>Audio codec</td><td>Yes</td><td>Supported on sun4i, sun5i, sun6i, sun7i, sun8i-h2+, sun8i-h3, sun50i-h5, sun50i-a64</td></tr>
1.91 wiki 60: <tr><td>CAN controller</td><td>Yes</td><td></td></tr>
1.66 wiki 61: <tr><td>Crypto engine</td><td>-</td><td></td></tr>
62: <tr><td>CSI</td><td>-</td><td></td></tr>
1.64 wiki 63: <tr><td>DMA</td><td>Yes</td><td></td></tr>
1.80 wiki 64: <tr><td>Fast Ethernet (sun4i/sun5i/sun7i)</td><td>Yes</td><td></td></tr>
1.64 wiki 65: <tr><td>Framebuffer</td><td>Yes</td><td>Uses simplefb configured by bootloader</td></tr>
66: <tr><td>Gigabit Ethernet (sun6i/sun7i/sun9i)</td><td>Yes</td><td></td></tr>
67: <tr><td>Gigabit Ethernet (sun8i/sun50i)</td><td>Yes</td><td></td></tr>
68: <tr><td>GPIO</td><td>Yes</td><td></td></tr>
1.66 wiki 69: <tr><td>GPU</td><td>-</td><td></td></tr>
1.64 wiki 70: <tr><td>I2C</td><td>Yes</td><td></td></tr>
1.89 wiki 71: <tr><td>I2S/PCM</td><td>Experimental</td><td></td></tr>
1.64 wiki 72: <tr><td>IR transceiver</td><td>-</td><td></td></tr>
1.76 wiki 73: <tr><td>NAND</td><td>Yes</td><td></td></tr>
1.64 wiki 74: <tr><td>P2WI/RSB</td><td>Yes</td><td></td></tr>
1.82 wiki 75: <tr><td>PCIe</td><td>-</td><td>H6</td></tr>
1.87 wiki 76: <tr><td>PWM</td><td>Yes</td><td></td></tr>
1.65 wiki 77: <tr><td>RTC</td><td>Yes</td><td></td></tr>
78: <tr><td>SATA</td><td>Yes</td><td></td></tr>
1.64 wiki 79: <tr><td>SD/MMC</td><td>Yes</td><td></td></tr>
1.101 wiki 80: <tr><td>SMP</td><td>Yes</td><td></td></tr>
1.66 wiki 81: <tr><td>SPDIF</td><td>-</td><td></td></tr>
1.88 wiki 82: <tr><td>SPI</td><td>Yes</td><td></td></tr>
1.67 wiki 83: <tr><td>Thermal sensors</td><td>Yes</td><td></td></tr>
1.68 wiki 84: <tr><td>Touch screen</td><td>Yes</td><td></td></tr>
1.64 wiki 85: <tr><td>UART</td><td>Yes</td><td></td></tr>
86: <tr><td>USB 2.0</td><td>Yes</td><td></td></tr>
1.83 wiki 87: <tr><td>USB 3.0</td><td>Yes</td><td></td></tr>
1.64 wiki 88: <tr><td>USB OTG</td><td>Experimental</td><td></td></tr>
89: <tr><td>Watchdog timer</td><td>Yes</td><td></td></tr>
90: </tbody>
91: </table>
1.14 wiki 92:
1.2 wiki 93: # Installation
94:
1.102 ! wiki 95: - Download or build **armv7.img** (32-bit) or **arm64.img** (64-bit) from NetBSD 9.0 or later
1.61 wiki 96: - Write the image to disk: **dd if=armv7.img of=/dev/rld0d bs=1m conv=sync**
1.97 wiki 97: - Install a board-specific U-Boot (2018.05 or later) from pkgsrc to the SD card
1.94 leot 98: (the `u-boot-sunxi-with-spl.bin`-s are provided by `sysutils/u-boot-<boardname>` packages):
1.93 leot 99: **dd if=/usr/pkg/share/u-boot/<boardname>/u-boot-sunxi-with-spl.bin of=/dev/rld0d bs=1k seek=8 conv=sync**
1.81 wiki 100:
1.95 leot 101: If your SoC has a SATA controller and you would like to install on
102: an hard disk and use a SD card only for u-boot please give a look
1.96 leot 103: to
104: [[NetBSD/evbarm install via sysinst(8) on a SATA hard disk, USB stick or (u)SD card|ports/evbarm/install_using_sysinst]].
1.95 leot 105:
1.81 wiki 106: # Tips and tricks
107:
108: ## Video overscan compensation
109:
110: On some television models, the borders of the screen may be cut off. If your television doesn't have an option to disable overscan, you can enable overscan compensation by entering the following commands at the U-Boot prompt:
111:
112: setenv video-mode sunxi:1280x720-24,overscan_x=32,overscan_y=20
113: saveenv
114: reset
1.90 wiki 115:
116: ## Pinebook function keys
117:
118: The sleep (Fn+Esc), home (Fn+F1), volume down (Fn+F3), volume up (Fn+F4), and mute (Fn+F5) keys on the keyboard are mapped to uhid(4) devices.
119:
120: Create the following config file:
121:
122: [[!template id=filecontent name="/etc/usbhidaction.conf" text="""
123: Consumer:Consumer_Control.Consumer:Volume_Up 1
124: mixerctl -n -w outputs.master++
125: Consumer:Consumer_Control.Consumer:Volume_Down 1
126: mixerctl -n -w outputs.master--
127: Consumer:Consumer_Control.Consumer:Mute 1
128: mixerctl -n -w outputs.mute++
129: Consumer:Consumer_Control.Consumer:AC_Home 1
130: /etc/powerd/scripts/hotkey_button AC_Home pressed
131: Generic_Desktop:System_Control.Generic_Desktop:System_Sleep 1
132: /etc/powerd/scripts/sleep_button System_Sleep pressed
133: """]]
134:
135: Then start two copies of usbhidaction:
136:
137: [[!template id=programlisting text="""
138: # /usr/bin/usbhidaction -c /etc/usbhidaction.conf -f /dev/uhid0 -i -p /var/run/usbhidaction-uhid0.pid
139: # /usr/bin/usbhidaction -c /etc/usbhidaction.conf -f /dev/uhid1 -i -p /var/run/usbhidaction-uhid1.pid
140: """]]
1.95 leot 141:
1.98 wiki 142: ## Pinebook keyboard
143:
144: The new 11" 1080p model has a slightly different keyboard layout to the 14".
145: Using wscons it works perfectly, but using X the \ key next to left shift will display > when pressed.
146: To solve this, you need to change the keyboard layout to altgr-intl. This can be done system wide by creating the file:
147:
148: [[!template id=filecontent name="/etc/X11/xorg.conf.d/00-system-keyboard.conf" text="""
149: Section "InputDevice"
150: Identifier "Pinebook 1080p keyboard"
151: Driver "kbd"
1.99 wiki 152: Option "XkbLayout" "us"
153: Option "XkbVariant" "altgr-intl"
1.98 wiki 154: EndSection
155: """]]
1.95 leot 156:
1.100 wiki 157: ## Pinebook screen
158:
159: X11 currently cannot work out the size of the screen, resulting in a very small DPI on a very small screen.
160: This file configures X to use an 11.6" screen, which results in very readable a DPI of 190.
161:
162: [[!template id=filecontent name="/etc/X11/xorg.conf.d/01-pinebook-11-screen.conf" text="""
163: Section "Monitor"
164: Identifier "Pinebook 11.6 inch monitor"
165: DisplaySize 256.8 144.5 # millimeters, 11.6 inch screen
166: EndSection
167:
168: Section "Screen"
169: Identifier "Default Screen"
170: Monitor "Pinebook 11.6 inch monitor"
171: EndSection
172: """]]
173:
174:
1.95 leot 175: # Links
176:
1.96 leot 177: - [[NetBSD/evbarm install via sysinst(8) on a SATA hard disk, USB stick or (u)SD card|ports/evbarm/install_using_sysinst]]
CVSweb for NetBSD wikisrc <wikimaster@NetBSD.org> software: FreeBSD-CVSweb