Annotation of wikisrc/ports/evbarm/allwinner.mdwn, revision 1.104

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/&lt;boardname&gt;/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.103     wiki      157: ## Pinebook touchpad
                    158: 
                    159: To fix jittery touch input on the touchpad, you can adjust the input sensitivity by creating the file:
                    160: 
1.104   ! wiki      161: [[!template  id=filecontent name="/etc/X11/xorg.conf.d/00-system-touchpad.conf" text="""
1.103     wiki      162: Section "InputDevice"
                    163:         Identifier "Pinebook touchpad"    
                    164:         Driver "mouse"
                    165:         Option "AccelerationProfile" "2"
                    166:         Option "AdaptiveDeceleration" "1"
                    167:         Option "ConstantDeceleration" "2.4" # Pinebook 14"
                    168:         #Option "ConstantDeceleration" "1.2" # Pinebook 11"
                    169: EndSection
                    170: """]]
                    171: 
1.100     wiki      172: ## Pinebook screen
                    173: 
                    174: X11 currently cannot work out the size of the screen, resulting in a very small DPI on a very small screen.
                    175: This file configures X to use an 11.6" screen, which results in very readable a DPI of 190.
                    176: 
                    177: [[!template  id=filecontent name="/etc/X11/xorg.conf.d/01-pinebook-11-screen.conf" text="""
                    178: Section "Monitor"
                    179:         Identifier      "Pinebook 11.6 inch monitor"
                    180:         DisplaySize     256.8 144.5     # millimeters, 11.6 inch screen
                    181: EndSection
                    182: 
                    183: Section "Screen"
                    184:         Identifier      "Default Screen"
                    185:         Monitor         "Pinebook 11.6 inch monitor"
                    186: EndSection
                    187: """]]
                    188: 
                    189: 
1.95      leot      190: # Links
                    191: 
1.96      leot      192: - [[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