File:  [NetBSD Developer Wiki] / wikisrc / ports / evbarm / allwinner.mdwn
Revision 1.103: download - view: text, annotated - select for diffs
Sun Nov 24 14:43:29 2019 UTC (3 months ago) by wiki
Branches: MAIN
CVS tags: HEAD
web commit by jmcneill: Add touchpad sensitivity fix

    1: [[!meta title="NetBSD/evbarm on Allwinner Technology SoCs"]]
    2: 
    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.
    4: 
    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: 
    8: [[!toc levels=2]]
    9: 
   10: # Supported SoCs
   11: 
   12: <table>
   13:   <thead>
   14:     <tr>
   15:       <th>Family</th>
   16:       <th>SoC</th>
   17:       <th>NetBSD version</th>
   18:       <th>Example boards</th>
   19:       <th>Notes</th>
   20:     </tr>
   21:   </thead>
   22:   <tbody>
   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>
   24:     <tr><td>sun5i</td><td>A10s</td><td>-</td><td></td></tr>
   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>
   29:     <tr><td>sun6i</td><td>A31s</td><td>-</td><td></td><td></td></tr>
   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>
   31:     <tr><td>sun8i</td><td>A23</td><td>-</td><td></td></tr>
   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>
   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>
   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>
   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>
   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>
   42:   </tbody>
   43: </table>
   44: 
   45: 
   46: # Supported hardware
   47: 
   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.
   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>
   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>
   60:     <tr><td>CAN controller</td><td>Yes</td><td></td></tr>
   61:     <tr><td>Crypto engine</td><td>-</td><td></td></tr>
   62:     <tr><td>CSI</td><td>-</td><td></td></tr>
   63:     <tr><td>DMA</td><td>Yes</td><td></td></tr>
   64:     <tr><td>Fast Ethernet (sun4i/sun5i/sun7i)</td><td>Yes</td><td></td></tr>
   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>
   69:     <tr><td>GPU</td><td>-</td><td></td></tr>
   70:     <tr><td>I2C</td><td>Yes</td><td></td></tr>
   71:     <tr><td>I2S/PCM</td><td>Experimental</td><td></td></tr>
   72:     <tr><td>IR transceiver</td><td>-</td><td></td></tr>
   73:     <tr><td>NAND</td><td>Yes</td><td></td></tr>
   74:     <tr><td>P2WI/RSB</td><td>Yes</td><td></td></tr>
   75:     <tr><td>PCIe</td><td>-</td><td>H6</td></tr>
   76:     <tr><td>PWM</td><td>Yes</td><td></td></tr>
   77:     <tr><td>RTC</td><td>Yes</td><td></td></tr>
   78:     <tr><td>SATA</td><td>Yes</td><td></td></tr>
   79:     <tr><td>SD/MMC</td><td>Yes</td><td></td></tr>
   80:     <tr><td>SMP</td><td>Yes</td><td></td></tr>
   81:     <tr><td>SPDIF</td><td>-</td><td></td></tr>
   82:     <tr><td>SPI</td><td>Yes</td><td></td></tr>
   83:     <tr><td>Thermal sensors</td><td>Yes</td><td></td></tr>
   84:     <tr><td>Touch screen</td><td>Yes</td><td></td></tr>
   85:     <tr><td>UART</td><td>Yes</td><td></td></tr>
   86:     <tr><td>USB 2.0</td><td>Yes</td><td></td></tr>
   87:     <tr><td>USB 3.0</td><td>Yes</td><td></td></tr>
   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>
   92: 
   93: # Installation
   94: 
   95: - Download or build **armv7.img** (32-bit) or **arm64.img** (64-bit) from NetBSD 9.0 or later
   96: - Write the image to disk: **dd if=armv7.img of=/dev/rld0d bs=1m conv=sync**
   97: - Install a board-specific U-Boot (2018.05 or later) from pkgsrc to the SD card
   98:   (the `u-boot-sunxi-with-spl.bin`-s are provided by `sysutils/u-boot-<boardname>` packages):
   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**
  100: 
  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
  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]].
  105: 
  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
  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: """]]
  141: 
  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"
  152:         Option     "XkbLayout"  "us"
  153:         Option     "XkbVariant" "altgr-intl"
  154: EndSection
  155: """]]
  156: 
  157: ## Pinebook touchpad
  158: 
  159: To fix jittery touch input on the touchpad, you can adjust the input sensitivity by creating the file:
  160: 
  161: [[!template  id=filecontent name="/etc/X11/xorg.conf.d/00-system-keyboard.conf" text="""
  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: 
  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: 
  190: # Links
  191: 
  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