<?xml version="1.0" encoding="UTF-8"?>

<rss version="2.0"
 xmlns:blogChannel="http://backend.userland.com/blogChannelModule"
>

<channel>
<title><![CDATA[Dobrica Pavlinušić's random unstructured stuff: CubieBoard]]></title>
<link>https://saturn.ffzg.hr/rot13/index.cgi?cubieboard</link>
<description></description>
<pubDate>Wed, 05 Jun 2019 15:47:05 -0000</pubDate>
<webMaster>root@saturn.ffzg.hr</webMaster>
<generator>Socialtext Workspace v2.19.0.2</generator>

<item>
<title><![CDATA[CubieBoard]]></title>
<link>https://saturn.ffzg.hr/rot13/index.cgi?cubieboard</link>
<description><![CDATA[<div>Creator: Dobrica Pavlinušić</div><hr/><div>Tags: hardware</div><hr/><div class="wiki">
<span class="nlw_phrase"><img alt="cubieboard-ir-module.png" src="https://saturn.ffzg.hr/rot13/index.cgi/cubieboard-ir-module.png?action=attachments_download;page_name=cubieboard;id=20190605154705-0-23339" /><!-- wiki: {image: cubieboard-=ir-=module.png} --></span><br /><br /><span class="nlw_phrase"><a href="https://saturn.ffzg.hr/rot13/index.cgi/cubieboard_schematic_2012-08-08.pdf?action=attachments_download;page_name=cubieboard;id=20180306111005-0-26284">cubieboard_schematic_2012-08-08.pdf</a><!-- wiki: {file: cubieboard_schematic_2012-=08-=08.pdf} --></span><br /><br /><span class="nlw_phrase"><a href="https://saturn.ffzg.hr/rot13/index.cgi/BreadBoard%20V1.0%2003-25%20For%20CubieBoard.pdf?action=attachments_download;page_name=cubieboard;id=20140112210755-0-22383">BreadBoard V1.0 03-25 For CubieBoard.pdf</a><!-- wiki: {file: BreadBoard V1.0 03-=25 For CubieBoard.pdf} --></span><br /><br /><div class="nlw_phrase"><table class="wafl_container">
  <tr>
    <td>
      <div class="wafl_box">
        
          <div class="wafl_titlebox">
            <div class="wafl_title">
              
                Contents: [Dobrica Pavlinušić's random unstructured stuff]
              
            </div>
          </div>
          <div class="wafl_items">
            
              <div class="wiki">
<ul>
<li><span class="nlw_phrase"><a title="section link" href="https://saturn.ffzg.hr/rot13/index.cgi?dobrica_pavlinu%C5%A1i%C4%87_s_random_unstructured_stuff#a20">Dobrica Pavlinušić's random unstructured stuff (A20)</a><!-- wiki: {link: [Dobrica Pavlinušić's random unstructured stuff] A20} --></span></li>
<li><span class="nlw_phrase"><a title="section link" href="https://saturn.ffzg.hr/rot13/index.cgi?dobrica_pavlinu%C5%A1i%C4%87_s_random_unstructured_stuff#running_ubi_ubifs_on_mlc_nand">Dobrica Pavlinušić's random unstructured stuff (Running UBI/UBIFS on MLC NAND)</a><!-- wiki: {link: [Dobrica Pavlinušić's random unstructured stuff] Running UBI/UBIFS on MLC NAND} --></span></li>
<li><span class="nlw_phrase"><a title="section link" href="https://saturn.ffzg.hr/rot13/index.cgi?dobrica_pavlinu%C5%A1i%C4%87_s_random_unstructured_stuff#nand_in_mainline_kernel">Dobrica Pavlinušić's random unstructured stuff (NAND in mainline kernel)</a><!-- wiki: {link: [Dobrica Pavlinušić's random unstructured stuff] NAND in mainline kernel} --></span></li>

<ul>
<li><span class="nlw_phrase"><a title="section link" href="https://saturn.ffzg.hr/rot13/index.cgi?dobrica_pavlinu%C5%A1i%C4%87_s_random_unstructured_stuff#many_bad_blocks">Dobrica Pavlinušić's random unstructured stuff (many bad blocks)</a><!-- wiki: {link: [Dobrica Pavlinušić's random unstructured stuff] many bad blocks} --></span></li>

<ul>
<li><span class="nlw_phrase"><a title="section link" href="https://saturn.ffzg.hr/rot13/index.cgi?dobrica_pavlinu%C5%A1i%C4%87_s_random_unstructured_stuff#cubieboard">Dobrica Pavlinušić's random unstructured stuff (cubieboard)</a><!-- wiki: {link: [Dobrica Pavlinušić's random unstructured stuff] cubieboard} --></span></li>
<li><span class="nlw_phrase"><a title="section link" href="https://saturn.ffzg.hr/rot13/index.cgi?dobrica_pavlinu%C5%A1i%C4%87_s_random_unstructured_stuff#cubieboard2">Dobrica Pavlinušić's random unstructured stuff (cubieboard2)</a><!-- wiki: {link: [Dobrica Pavlinušić's random unstructured stuff] cubieboard2} --></span></li>
</ul>
<li><span class="nlw_phrase"><a title="section link" href="https://saturn.ffzg.hr/rot13/index.cgi?dobrica_pavlinu%C5%A1i%C4%87_s_random_unstructured_stuff#mount_ubifs_filesystem">Dobrica Pavlinušić's random unstructured stuff (mount ubifs filesystem)</a><!-- wiki: {link: [Dobrica Pavlinušić's random unstructured stuff] mount ubifs filesystem} --></span></li>
</ul>
<li><span class="nlw_phrase"><a title="section link" href="https://saturn.ffzg.hr/rot13/index.cgi?dobrica_pavlinu%C5%A1i%C4%87_s_random_unstructured_stuff#u_boot">Dobrica Pavlinušić's random unstructured stuff (u-boot)</a><!-- wiki: {link: [Dobrica Pavlinušić's random unstructured stuff] u-=boot} --></span></li>

<ul>
<li><span class="nlw_phrase"><a title="section link" href="https://saturn.ffzg.hr/rot13/index.cgi?dobrica_pavlinu%C5%A1i%C4%87_s_random_unstructured_stuff#compile_with_nand_support">Dobrica Pavlinušić's random unstructured stuff (compile with nand support)</a><!-- wiki: {link: [Dobrica Pavlinušić's random unstructured stuff] compile with nand support} --></span></li>
</ul>
<li><span class="nlw_phrase"><a title="section link" href="https://saturn.ffzg.hr/rot13/index.cgi?dobrica_pavlinu%C5%A1i%C4%87_s_random_unstructured_stuff#pinout">Dobrica Pavlinušić's random unstructured stuff (pinout)</a><!-- wiki: {link: [Dobrica Pavlinušić's random unstructured stuff] pinout} --></span></li>

<ul>
<li><span class="nlw_phrase"><a title="section link" href="https://saturn.ffzg.hr/rot13/index.cgi?dobrica_pavlinu%C5%A1i%C4%87_s_random_unstructured_stuff#u14_next_to_sata_connector">Dobrica Pavlinušić's random unstructured stuff (U14 (Next to SATA connector))</a><!-- wiki: {link: [Dobrica Pavlinušić's random unstructured stuff] U14 (Next to SATA connector)} --></span></li>
<li><span class="nlw_phrase"><a title="section link" href="https://saturn.ffzg.hr/rot13/index.cgi?dobrica_pavlinu%C5%A1i%C4%87_s_random_unstructured_stuff#u15_between_ethernet_port_and_usb_ports">Dobrica Pavlinušić's random unstructured stuff (U15 (Between Ethernet port and USB ports))</a><!-- wiki: {link: [Dobrica Pavlinušić's random unstructured stuff] U15 (Between Ethernet port and USB ports)} --></span></li>
</ul>
<li><span class="nlw_phrase"><a title="section link" href="https://saturn.ffzg.hr/rot13/index.cgi?dobrica_pavlinu%C5%A1i%C4%87_s_random_unstructured_stuff#disk_speed">Dobrica Pavlinušić's random unstructured stuff (disk speed)</a><!-- wiki: {link: [Dobrica Pavlinušić's random unstructured stuff] disk speed} --></span></li>

<ul>
<li><span class="nlw_phrase"><a title="section link" href="https://saturn.ffzg.hr/rot13/index.cgi?dobrica_pavlinu%C5%A1i%C4%87_s_random_unstructured_stuff#nand">Dobrica Pavlinušić's random unstructured stuff (NAND)</a><!-- wiki: {link: [Dobrica Pavlinušić's random unstructured stuff] NAND} --></span></li>
<li><span class="nlw_phrase"><a title="section link" href="https://saturn.ffzg.hr/rot13/index.cgi?dobrica_pavlinu%C5%A1i%C4%87_s_random_unstructured_stuff#sata">Dobrica Pavlinušić's random unstructured stuff (SATA)</a><!-- wiki: {link: [Dobrica Pavlinušić's random unstructured stuff] SATA} --></span></li>
</ul>
<li><span class="nlw_phrase"><a title="section link" href="https://saturn.ffzg.hr/rot13/index.cgi?dobrica_pavlinu%C5%A1i%C4%87_s_random_unstructured_stuff#gpio">Dobrica Pavlinušić's random unstructured stuff (GPIO)</a><!-- wiki: {link: [Dobrica Pavlinušić's random unstructured stuff] GPIO} --></span></li>
<li><span class="nlw_phrase"><a title="section link" href="https://saturn.ffzg.hr/rot13/index.cgi?dobrica_pavlinu%C5%A1i%C4%87_s_random_unstructured_stuff#camera">Dobrica Pavlinušić's random unstructured stuff (Camera)</a><!-- wiki: {link: [Dobrica Pavlinušić's random unstructured stuff] Camera} --></span></li>
<li><span class="nlw_phrase"><a title="section link" href="https://saturn.ffzg.hr/rot13/index.cgi?dobrica_pavlinu%C5%A1i%C4%87_s_random_unstructured_stuff#hardware">Dobrica Pavlinušić's random unstructured stuff (hardware)</a><!-- wiki: {link: [Dobrica Pavlinušić's random unstructured stuff] hardware} --></span></li>

<ul>
<li><span class="nlw_phrase"><a title="section link" href="https://saturn.ffzg.hr/rot13/index.cgi?dobrica_pavlinu%C5%A1i%C4%87_s_random_unstructured_stuff#leds">Dobrica Pavlinušić's random unstructured stuff (LEDs)</a><!-- wiki: {link: [Dobrica Pavlinušić's random unstructured stuff] LEDs} --></span></li>
</ul>
<li><span class="nlw_phrase"><a title="section link" href="https://saturn.ffzg.hr/rot13/index.cgi?dobrica_pavlinu%C5%A1i%C4%87_s_random_unstructured_stuff#forum">Dobrica Pavlinušić's random unstructured stuff (forum)</a><!-- wiki: {link: [Dobrica Pavlinušić's random unstructured stuff] forum} --></span></li>
<li><span class="nlw_phrase"><a title="section link" href="https://saturn.ffzg.hr/rot13/index.cgi?dobrica_pavlinu%C5%A1i%C4%87_s_random_unstructured_stuff#ina219">Dobrica Pavlinušić's random unstructured stuff (ina219)</a><!-- wiki: {link: [Dobrica Pavlinušić's random unstructured stuff] ina219} --></span></li>

<ul>
<li><span class="nlw_phrase"><a title="section link" href="https://saturn.ffzg.hr/rot13/index.cgi?dobrica_pavlinu%C5%A1i%C4%87_s_random_unstructured_stuff#device_tree">Dobrica Pavlinušić's random unstructured stuff (device tree)</a><!-- wiki: {link: [Dobrica Pavlinušić's random unstructured stuff] device tree} --></span></li>
<li><span class="nlw_phrase"><a title="section link" href="https://saturn.ffzg.hr/rot13/index.cgi?dobrica_pavlinu%C5%A1i%C4%87_s_random_unstructured_stuff#user_land_c">Dobrica Pavlinušić's random unstructured stuff (user-land C)</a><!-- wiki: {link: [Dobrica Pavlinušić's random unstructured stuff] user-=land C} --></span></li>
</ul>
<li><span class="nlw_phrase"><a title="section link" href="https://saturn.ffzg.hr/rot13/index.cgi?dobrica_pavlinu%C5%A1i%C4%87_s_random_unstructured_stuff#spi_flash">Dobrica Pavlinušić's random unstructured stuff (SPI flash)</a><!-- wiki: {link: [Dobrica Pavlinušić's random unstructured stuff] SPI flash} --></span></li>

<ul>
<li><span class="nlw_phrase"><a title="section link" href="https://saturn.ffzg.hr/rot13/index.cgi?dobrica_pavlinu%C5%A1i%C4%87_s_random_unstructured_stuff#flashrom">Dobrica Pavlinušić's random unstructured stuff (flashrom)</a><!-- wiki: {link: [Dobrica Pavlinušić's random unstructured stuff] flashrom} --></span></li>
<li><span class="nlw_phrase"><a title="section link" href="https://saturn.ffzg.hr/rot13/index.cgi?dobrica_pavlinu%C5%A1i%C4%87_s_random_unstructured_stuff#build_u_boot_with_spi_support">Dobrica Pavlinušić's random unstructured stuff (build u-boot with SPI support)</a><!-- wiki: {link: [Dobrica Pavlinušić's random unstructured stuff] build u-=boot with SPI support} --></span></li>
</ul>
<li><span class="nlw_phrase"><a title="section link" href="https://saturn.ffzg.hr/rot13/index.cgi?dobrica_pavlinu%C5%A1i%C4%87_s_random_unstructured_stuff#reset">Dobrica Pavlinušić's random unstructured stuff (reset)</a><!-- wiki: {link: [Dobrica Pavlinušić's random unstructured stuff] reset} --></span></li>
<li><span class="nlw_phrase"><a title="section link" href="https://saturn.ffzg.hr/rot13/index.cgi?dobrica_pavlinu%C5%A1i%C4%87_s_random_unstructured_stuff#external_ir_receiver">Dobrica Pavlinušić's random unstructured stuff (external ir receiver)</a><!-- wiki: {link: [Dobrica Pavlinušić's random unstructured stuff] external ir receiver} --></span></li>
</ul>
</div>

            
            
          </div>
        
      </div>
    </td>
  </tr>
</table>
<!-- wiki: {toc: }
--></div><br /><br /><h1 id="a20">A20</h1>
<ul>
<li>Debian image sunxi_ss crypto <a target="_blank" title="(external link)" href="http://www.cubieforums.com/index.php/topic,1275.0.html">http://www.cubieforums.com/index.php/topic,1275.0.html</a></li>
<li><a target="_blank" title="(external link)" href="http://www.armbian.com/cubieboard-2/">http://www.armbian.com/cubieboard-2/</a></li>
</ul>
<h1 id="running_ubi_ubifs_on_mlc_nand">Running UBI/UBIFS on MLC NAND</h1>
<ul>
<li><a target="_blank" title="(external link)" href="https://events.static.linuxfound.org/sites/events/files/slides/ubi-mlc.pdf">https://events.static.linuxfound.org/sites/events/files/slides/ubi-mlc.pdf</a></li>
<li><a target="_blank" title="(external link)" href="https://youtu.be/9j2pOIiJqYw">https://youtu.be/9j2pOIiJqYw</a></li>
</ul>
<h1 id="nand_in_mainline_kernel">NAND in mainline kernel</h1>
<ul>
<li><a target="_blank" title="(external link)" href="http://linux-sunxi.org/Mainline_NAND_Howto">http://linux-sunxi.org/Mainline_NAND_Howto</a></li>
<li><a target="_blank" title="(external link)" href="http://linux-sunxi.org/MTD_Driver">http://linux-sunxi.org/MTD_Driver</a></li>
</ul>
<p>
Samsung K9GBG08U0A NAND</p>
<ul>
<li><a target="_blank" title="(external link)" href="https://groups.google.com/forum/#!topic/linux-sunxi/PxMmiCe0Deg">https://groups.google.com/forum/#!topic/linux-sunxi/PxMmiCe0Deg</a></li>
<li><a target="_blank" title="(external link)" href="https://www.netdevconf.org/2.1/papers/distributed-switch-architecture.pdf">https://www.netdevconf.org/2.1/papers/distributed-switch-architecture.pdf</a></li>
</ul>
<pre>
dpavlin@cubieboard:~$ dmesg | grep -A 5 nand
[    4.395437] nand: Could not find valid JEDEC parameter page; aborting
[    4.401898] nand: device found, Manufacturer ID: 0xec, Chip ID: 0xd7
[    4.408272] nand: Samsung NAND 4GiB 3,3V 8-bit
[    4.412719] nand: 4096 MiB, MLC, erase size: 1024 KiB, page size: 8192, OOB size: 640
[    4.421299] Bad block table found at page 524160, version 0x25
[    4.427987] Bad block table found at page 524032, version 0x25
[    4.434238] nand_read_bbt: bad block at 0x000001000000
[    4.439379] nand_read_bbt: bad block at 0x000001100000
[    4.445411] 6 ofpart partitions found on MTD device 1c03000.nand
[    4.451420] Creating 6 MTD partitions on &quot;1c03000.nand&quot;:
[    4.456769] 0x000000a00000-0x0001ffa00000 : &quot;rootfs&quot;
[    4.461737] mtd: partition &quot;rootfs&quot; extends beyond the end of device &quot;1c03000.nand&quot; -- size truncated to 0xff600000
[    4.472910] 0x000001000000-0x000001400000 : &quot;env&quot;
[    4.477926] 0x000000c00000-0x000001000000 : &quot;U-Boot.backup&quot;
[    4.483748] 0x000000800000-0x000000c00000 : &quot;U-Boot&quot;
[    4.488997] 0x000000400000-0x000000800000 : &quot;SPL.backup&quot;
[    4.494580] 0x000000000000-0x000000400000 : &quot;SPL&quot;



dpavlin@cubieboard2:~$ dmesg | grep -A 5 nand
[    4.709427] nand: device found, Manufacturer ID: 0xad, Chip ID: 0xd7
[    4.715876] nand: Hynix H27UBG8T2BTR-BC 32G 3.3V 8-bit
[    4.721021] nand: 4096 MiB, MLC, erase size: 2048 KiB, page size: 8192, OOB size: 640
[    4.728997] Scanning device for bad blocks
[    8.484659] 6 ofpart partitions found on MTD device 1c03000.nand
[    8.490678] Creating 6 MTD partitions on &quot;1c03000.nand&quot;:
[    8.496021] 0x000000a00000-0x0001ffa00000 : &quot;rootfs&quot;
[    8.500992] mtd: partition &quot;rootfs&quot; extends beyond the end of device &quot;1c03000.nand&quot; -- size truncated to 0xff600000
[    8.515527] 0x000001000000-0x000001400000 : &quot;env&quot;
[    8.520564] 0x000000c00000-0x000001000000 : &quot;U-Boot.backup&quot;
[    8.526504] 0x000000800000-0x000000c00000 : &quot;U-Boot&quot;
[    8.531755] 0x000000400000-0x000000800000 : &quot;SPL.backup&quot;
[    8.537395] 0x000000000000-0x000000400000 : &quot;SPL&quot;
</pre>
<br /><h2 id="many_bad_blocks">many bad blocks</h2>
<p>
<a target="_blank" title="(external link)" href="http://linux-sunxi.org/Mainline_NAND_Howto#Many_bad_blocks">http://linux-sunxi.org/Mainline_NAND_Howto#Many_bad_blocks</a></p>
<p>
To fix many bad blocks issue you should:</p>
<p>
1. Disable nand-on-flash-bbt in your dts<br />
2. Remove this test: <a target="_blank" title="(external link)" href="http://lxr.free-electrons.com/source/drivers/mtd/nand/nand_base.c?v=4.7#L2940">http://lxr.free-electrons.com/source/drivers/mtd/nand/nand_base.c?v=4.7#L2940</a><br />
3. Boot your new kernel and erase chip with flash_erase /dev/mtd[0-X]<br />
4. Re-introduce the bad block check removed in 2, re-enable nand-on-flash-bbt<br />
&nbsp;&nbsp;&nbsp;and boot the new kernel</p>
<p>
Let's try to do this with armbian.</p>
<h3 id="cubieboard">cubieboard</h3>
<p>
First, enable nand overlay</p>
<pre>
dpavlin@cubieboard:~$ cat /boot/armbianEnv.txt
overlays=nand
</pre>
<br /><p>
Then remove nand-om-flash-btt:</p>
<pre>
dpavlin@cubieboard:/$ cd /boot/dtb-`uname -r`/overlay
dpavlin@cubieboard:/boot/dtb-4.14.23-sunxi/overlay$ 

# backup original
root@cubieboard:/boot/dtb-4.14.23-sunxi/overlay# cp sun4i-a10-nand.dtbo sun4i-a10-nand.dtbo.orig

# remote nand-on-flash-bbt
root@cubieboard:/boot/dtb-4.14.23-sunxi/overlay# dtc -I dtb -O dts sun4i-a10-nand.dtbo | grep -v nand-on-flash-bbt &gt; /tmp/nand.dts
root@cubieboard:/boot/dtb-4.14.23-sunxi/overlay# dtc -I dts -O dtb /tmp/nand.dts &gt; sun4i-a10-nand.dtbo
</pre>
<br /><p>
Compile armbian kernel with this patch applied</p>
<pre>
dpavlin@armbian:~/build$ cp ./patch/kernel/sunxi-dev/nand-disable-badblock-check-for-migration.patch.disabled \
    ./userpatches/kernel/sunxi-next/nand-disable-badblock-check-for-migration.patch
</pre>
<br /><p>
Reboot and check that nand is available:</p>
<pre>
dpavlin@cubieboard:~$ dmesg | grep -A 8 MTD
[   13.696198] 6 ofpart partitions found on MTD device 1c03000.nand
[   13.702205] Creating 6 MTD partitions on &quot;1c03000.nand&quot;:
[   13.707550] 0x000000a00000-0x0001ffa00000 : &quot;rootfs&quot;
[   13.712517] mtd: partition &quot;rootfs&quot; extends beyond the end of device &quot;1c03000.nand&quot; -- size truncated to 0xff600000
[   13.723693] 0x000001000000-0x000001400000 : &quot;env&quot;
[   13.728713] 0x000000c00000-0x000001000000 : &quot;U-Boot.backup&quot;
[   13.734568] 0x000000800000-0x000000c00000 : &quot;U-Boot&quot;
[   13.739778] 0x000000400000-0x000000800000 : &quot;SPL.backup&quot;
[   13.745368] 0x000000000000-0x000000400000 : &quot;SPL&quot;
[   13.751476] sun4i-mdio 1c0b080.mdio: 1c0b080.mdio supply phy not found, using dummy regulator
</pre>
<br /><p>
Now init nand:</p>
<pre>
root@cubieboard:~# mtd_debug info /dev/mtd0
mtd.type = MTD_MLCNANDFLASH
mtd.flags = MTD_CAP_NANDFLASH
mtd.size = 4284481536 (3G)
mtd.erasesize = 1048576 (1M)
mtd.writesize = 8192 (8K)
mtd.oobsize = 640 
regions = 0


root@cubieboard2:~# mtd_debug info /dev/mtd0
mtd.type = MTD_MLCNANDFLASH
mtd.flags = MTD_CAP_NANDFLASH
mtd.size = 4284481536 (3G)
mtd.erasesize = 2097152 (2M)
mtd.writesize = 8192 (8K)
mtd.oobsize = 640 
regions = 0

root@cubieboard:/home/dpavlin# flash_erase /dev/mtd0 0 0
Erasing 1024 Kibyte @ 600000 --  0 % complete libmtd: error!: MEMERASE64 ioctl failed for eraseblock 6 (mtd0)
        error 5 (Input/output error)
flash_erase: error!: /dev/mtd0: MTD Erase failure
             error 5 (Input/output error)
Erasing 1024 Kibyte @ 700000 --  0 % complete libmtd: error!: MEMERASE64 ioctl failed for eraseblock 7 (mtd0)
        error 5 (Input/output error)
flash_erase: error!: /dev/mtd0: MTD Erase failure
             error 5 (Input/output error)
Erasing 1024 Kibyte @ ff500000 -- 100 % complete 


root@cubieboard:/home/dpavlin# ubiformat /dev/mtd0
ubiformat: mtd0 (mlc-nand), size 4284481536 bytes (4.0 GiB), 4086 eraseblocks of 1048576 bytes (1024.0 KiB), min. I/O size 8192 bytes
libscan: scanning eraseblock 4085 -- 100 % complete  
ubiformat: 4084 eraseblocks are supposedly empty
ubiformat: warning!: 2 of 4086 eraseblocks contain non-UBI data
ubiformat: continue? (y/N) y
ubiformat: warning!: only 0 of 4086 eraseblocks have valid erase counter
ubiformat: erase counter 0 will be used for all eraseblocks
ubiformat: note, arbitrary erase counter value may be specified using -e option
ubiformat: continue? (y/N) y
ubiformat: use erase counter 0 for all eraseblocks
ubiformat: formatting eraseblock 6 --  0 % complete  libmtd: error!: MEMERASE64 ioctl failed for eraseblock 6 (mtd0)
        error 5 (Input/output error)

ubiformat: error!: failed to erase eraseblock 6
           error 5 (Input/output error)
ubiformat: mark it as bad? (y/N) y
ubiformat: marking block 6 bad
ubiformat: formatting eraseblock 7 --  0 % complete  libmtd: error!: MEMERASE64 ioctl failed for eraseblock 7 (mtd0)
        error 5 (Input/output error)

ubiformat: error!: failed to erase eraseblock 7
           error 5 (Input/output error)
ubiformat: mark it as bad? (y/N) y
ubiformat: marking block 7 bad
ubiformat: formatting eraseblock 4085 -- 100 % complete  




ubiattach -p /dev/mtd0

ubimkvol /dev/ubi0 -s 2GiB -N root

mount /dev/ubi0_0 /mnt/ -t ubifs

root@cubieboard:~# mount /dev/ubi0_0 /mnt/ -t ubifs
[Wed Feb 28 17:49:38 2018] UBIFS error (pid: 4709): cannot open &quot;/dev/ubi0:root&quot;, error -22
[Wed Feb 28 17:49:43 2018] UBIFS (ubi0:0): background thread &quot;ubifs_bgt0_0&quot; started, PID 4722
[Wed Feb 28 17:49:44 2018] UBIFS (ubi0:0): UBIFS: mounted UBI device 0, volume 0, name &quot;root&quot;
[Wed Feb 28 17:49:44 2018] UBIFS (ubi0:0): LEB size: 1032192 bytes (1008 KiB), min./max. I/O unit sizes: 8192 bytes/8192 bytes
[Wed Feb 28 17:49:44 2018] UBIFS (ubi0:0): FS size: 2137669632 bytes (2038 MiB, 2071 LEBs), journal size 33030144 bytes (31 MiB, 32 LEBs)
[Wed Feb 28 17:49:44 2018] UBIFS (ubi0:0): reserved for root: 4952683 bytes (4836 KiB)
[Wed Feb 28 17:49:44 2018] UBIFS (ubi0:0): media format: w5/r0 (latest is w5/r0), UUID 8E9A30F0-241F-4013-916F-C0B995F22BB1, small LPT model

</pre>
<br /><h3 id="cubieboard2">cubieboard2</h3>
<p>
This is mostly redundant from cubieboard, but with attempt to define mtd partitions correctly</p>
<pre>
root@cubieboard2:/home/dpavlin# ubiformat /dev/mtd0
ubiformat: mtd0 (mlc-nand), size 4273995776 bytes (4.0 GiB), 2038 eraseblocks of 2097152 bytes (2.0 MiB), min. I/O size 8192 bytes
libscan: scanning eraseblock 2037 -- 100 % complete  
ubiformat: 2038 eraseblocks have valid erase counter, mean value is 1
ubiformat: formatting eraseblock 2037 -- 100 % complete  


</pre>
<br /><h2 id="mount_ubifs_filesystem">mount ubifs filesystem</h2>
<pre>
dpavlin@cubieboard:~$ grep ubi /mnt/boot/armbianEnv.txt
rootdev=ubi0:root ubi.mtd=0
rootfstype=ubifs

dpavlin@cubieboard:~$ grep ubi /etc/fstab 
ubi0:root / ubifs defaults,noatime,nodiratime 0 1
</pre>
<br /><h1 id="u_boot">u-boot</h1>
<p>
Original u-boot output</p>
<pre>
HELLO! BOOT0 is starting!
boot0 version : 1.5.1
dram size =1024
Succeed in opening nand flash.
Succeed in reading Boot1 file head.
The size of Boot1 is 0x0003c000.
The file stored in 0X00000000 of block 2 is perfect.
Check is correct.
Ready to disable icache.
Succeed in loading Boot1.
Jump to Boot1.
[       0.133] boot1 version : 1.4.0
[       0.133] pmu type = 3
[       0.134] bat vol = 0
[       0.161] axi:ahb:apb=3:2:2
[       0.161] set dcdc2=1400, clock=1008 successed
[       0.163] key
[       0.175] no key found
[       0.175] flash init start
[       4.051] flash init finish
[       4.052] fs init ok
[       4.053] fattype FAT16
[       4.053] fs mount ok
[       4.060] script finish
[       4.061] power finish
[       4.069] BootMain start
[       4.069] 13
[       4.089] key value = 0
[       4.089] recovery key high 6, low 4
[       4.090] unable to find fastboot_key key_max value
[       4.098] test for multi os boot with display
[       4.100] show pic finish
[       4.103] load kernel start
[       4.127] load kernel successed
[       4.127] start address = 0x4a00000

U-Boot 2011.09-rc1 (Nov 26 2012 - 14:01:52) Allwinner Technology 

CPU:   SUNXI Family
Board: A10-EVB
DRAM:  512 MiB
NAND:  3776 MiB
In:    serial
Out:   serial
Err:   serial
--------fastboot partitions--------
-total partitions:11-
-name-        -start-       -size-      
bootloader  : 1000000       1000000     
env         : 2000000       1000000     
boot        : 3000000       2000000     
system      : 5000000       14000000    
data        : 19000000      20000000    
misc        : 39000000      1000000     
recovery    : 3a000000      2000000     
cache       : 3c000000      8000000     
private     : 44000000      1000000     
sysrecovery : 45000000      14000000    
UDISK       : 59000000      93000000    
-----------------------------------
Hit any key to stop autoboot:  0 
sunxi#
</pre>
<br /><h2 id="compile_with_nand_support">compile with nand support</h2>
<ul>
<li><a target="_blank" title="(external link)" href="https://groups.google.com/forum/#!topic/linux-sunxi/PxMmiCe0Deg">https://groups.google.com/forum/#!topic/linux-sunxi/PxMmiCe0Deg</a></li>
</ul>
<p>
On Cubieboard2 with those patches we get:</p>
<pre>
=&gt; nand info

Device 0: nand0, sector size 2048 KiB
  Page size       8192 b
  OOB size         640 b
  Erase size   2097152 b
  subpagesize     8192 b
  options     0x00001000
  bbt options 0x00070000

# which comparted to booted linux kernel with mtd support....

root@cubieboard2:~# mtd_debug info /dev/mtd0
mtd.type = MTD_MLCNANDFLASH
mtd.flags = MTD_CAP_NANDFLASH
mtd.size = 4284481536 (3G)
mtd.erasesize = 2097152 (2M)
mtd.writesize = 8192 (8K)
mtd.oobsize = 640 
regions = 0

# it looks somewhat OK, but mtdparts doesn't (yet) return anything.
</pre>
<br /><p>
Another day, another try to get mtdparts to display something...</p>
<pre>
root@armbian:~/build/cache/sources/u-boot/v2017.11# grep -i mtd .config
CONFIG_SPL_MTD_SUPPORT=y
CONFIG_CMD_MTDPARTS=y
CONFIG_MTDIDS_DEFAULT=&quot;nand0=sunxi-nand&quot;
CONFIG_MTDPARTS_DEFAULT=&quot;mtdparts=sunxi-nand:4m(spl),4m(spl-backup),4m(uboot),4m(uboot-backup),4m(env),-(UBI)&quot;
# CONFIG_CMD_MTDPARTS_SPREAD is not set
# MTD Support
CONFIG_MTD=y
# CONFIG_MTD_NOR_FLASH is not set
CONFIG_MTD_UBI=y
CONFIG_MTD_UBI_WL_THRESHOLD=4096
CONFIG_MTD_UBI_BEB_LIMIT=20
# CONFIG_MTD_UBI_FASTMAP is not set

=&gt; mtdparts

device nand0 &lt;sunxi-nand&gt;, # parts = 6
 #: name                size            offset          mask_flags
 0: spl                 0x00400000      0x00000000      0
 1: spl-backup          0x00400000      0x00400000      0
 2: uboot               0x00400000      0x00800000      0
 3: uboot-backup        0x00400000      0x00c00000      0
 4: env                 0x00400000      0x01000000      0
 5: UBI                 0xfec00000      0x01400000      0

active partition: nand0,0 - (spl) 0x00400000 @ 0x00000000

defaults:
mtdids  : nand0=sunxi-nand
mtdparts: mtdparts=sunxi-nand:4m(spl),4m(spl-backup),4m(uboot),4m(uboot-backup),4m(env),-(UBI)






</pre>
<br /><p>
Instructions after this are hit-or-miss...</p>
<pre>
dpavlin@klin:/klin/u-boot$ cp configs/Cubieboard_defconfig .config

# add NAND, MTD options, A10 for cubieboard1

# compile while defining flash:

dpavlin@klin:/klin/u-boot$ cat build-cubieboard.sh 
# parametars are probably wrong for your chip!
make V=1 CONFIG_NAND_SUNXI_SPL_ECC_STRENGTH=40 CONFIG_SYS_NAND_PAGE_SIZE=4036 CONFIG_SYS_NAND_OOBSIZE=640 CONFIG_SYS_NAND_BLOCK_SIZE=0x100000


dpavlin@cubieboard:~$ scp 10.60.0.92:/klin/u-boot/u-boot*spl* .

dpavlin@cubieboard:~$ sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/mmcblk0 bs=1024 seek=8 
488+1 records in
488+1 records out
500154 bytes (500 kB) copied, 0.0423498 s, 11.8 MB/s

</pre>
<br /><p>
It would be better to define params in u-boot config file like:</p>
<pre>
CONFIG_SYS_EXTRA_OPTIONS=&quot;SYS_NAND_BLOCK_SIZE=0x40000,SYS_NAND_PAGE_SIZE=4096,SYS_NAND_OOBSIZE=256&quot;
</pre>
<br /><p>
(with correct values of course).</p>
<h1 id="pinout">pinout</h1>
<ul>
<li><a target="_blank" title="(external link)" href="http://docs.cubieboard.org/cubieboard1_and_cubieboard2_gpio_pin">http://docs.cubieboard.org/cubieboard1_and_cubieboard2_gpio_pin</a></li>
</ul>
<h2 id="u14_next_to_sata_connector">U14 (Next to SATA connector)</h2>
<table style="border-collapse: collapse;" class="formatter_table">
<tr>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;"><strong>SPI0</strong></td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">48</td>
<td style="border: 1px solid black;padding: .2em;">PI13 (SPI0-MISO/UART6-RX/EINT25)</td>
<td style="border: 1px solid black;padding: .2em;">47</td>
<td style="border: 1px solid black;padding: .2em;">PI11 (SPI0-CLK/UART5-RX/EINT23)</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">46</td>
<td style="border: 1px solid black;padding: .2em;">PI12 (SPI0-MOSI/UART6-TX/EINT24)</td>
<td style="border: 1px solid black;padding: .2em;">45</td>
<td style="border: 1px solid black;padding: .2em;">PI10 (SPI0-CS/UART5-TX/EINT22)</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;"><strong>LCD</strong></td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">44</td>
<td style="border: 1px solid black;padding: .2em;">3.3V (nc in 2012-08-08)</td>
<td style="border: 1px solid black;padding: .2em;">43</td>
<td style="border: 1px solid black;padding: .2em;">VCC-5V</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">42</td>
<td style="border: 1px solid black;padding: .2em;">Ground</td>
<td style="border: 1px solid black;padding: .2em;">41</td>
<td style="border: 1px solid black;padding: .2em;">SPDIF</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">40</td>
<td style="border: 1px solid black;padding: .2em;">PB10 (LCD0-SCK/LCD-PIO1)</td>
<td style="border: 1px solid black;padding: .2em;">39</td>
<td style="border: 1px solid black;padding: .2em;">PB11 (LCD0-SDA/LCD-PIO2)</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">38</td>
<td style="border: 1px solid black;padding: .2em;">Ground</td>
<td style="border: 1px solid black;padding: .2em;">37</td>
<td style="border: 1px solid black;padding: .2em;">PH7 (LCD0-BL-EN/LCD-PIO0/UART5-RX/EINT7)</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">36</td>
<td style="border: 1px solid black;padding: .2em;">XN_TP (TP-X2)</td>
<td style="border: 1px solid black;padding: .2em;">35</td>
<td style="border: 1px solid black;padding: .2em;">YN_TP (TP-Y2)</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">34</td>
<td style="border: 1px solid black;padding: .2em;">XP_TP (TP-X1)</td>
<td style="border: 1px solid black;padding: .2em;">33</td>
<td style="border: 1px solid black;padding: .2em;">YP_TP (TP-Y1)</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">32</td>
<td style="border: 1px solid black;padding: .2em;">PD25 (LCDDE)</td>
<td style="border: 1px solid black;padding: .2em;">31</td>
<td style="border: 1px solid black;padding: .2em;">PB2 (PWM0)</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">30</td>
<td style="border: 1px solid black;padding: .2em;">PD26 (LCDHSYNC)-VGA-HSYNC</td>
<td style="border: 1px solid black;padding: .2em;">29</td>
<td style="border: 1px solid black;padding: .2em;">PD24 (LCDCLK)</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">28</td>
<td style="border: 1px solid black;padding: .2em;">PD23 (LCDD23)</td>
<td style="border: 1px solid black;padding: .2em;">27</td>
<td style="border: 1px solid black;padding: .2em;">PD27 (LCDVSYNC)-VGA-VSYNC</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">26</td>
<td style="border: 1px solid black;padding: .2em;">PD21 (LCDD21)</td>
<td style="border: 1px solid black;padding: .2em;">25</td>
<td style="border: 1px solid black;padding: .2em;">PD22 (LCDD22)</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">24</td>
<td style="border: 1px solid black;padding: .2em;">PD19 (LCDD19/LVDS1N3)</td>
<td style="border: 1px solid black;padding: .2em;">23</td>
<td style="border: 1px solid black;padding: .2em;">PD20 (LCDD20)</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">22</td>
<td style="border: 1px solid black;padding: .2em;">PD17 (LCDD17/LVDS1NC)</td>
<td style="border: 1px solid black;padding: .2em;">21</td>
<td style="border: 1px solid black;padding: .2em;">PD18 (LCDD18/LVDS1P3)</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">20</td>
<td style="border: 1px solid black;padding: .2em;">Ground</td>
<td style="border: 1px solid black;padding: .2em;">19</td>
<td style="border: 1px solid black;padding: .2em;">PD16 (LCDD16/LVDS1PC)</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">18</td>
<td style="border: 1px solid black;padding: .2em;">PD14 (LCDD14/LVDS1P2)</td>
<td style="border: 1px solid black;padding: .2em;">17</td>
<td style="border: 1px solid black;padding: .2em;">PD15 (LCDD15/LVDS1N2)</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">16</td>
<td style="border: 1px solid black;padding: .2em;">PD12 (LCDD12/LVDS1P1)</td>
<td style="border: 1px solid black;padding: .2em;">15</td>
<td style="border: 1px solid black;padding: .2em;">PD13 (LCDD13/LVDS1N1)</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">14</td>
<td style="border: 1px solid black;padding: .2em;">PD10 (LCDD10/LVDS1P0)</td>
<td style="border: 1px solid black;padding: .2em;">13</td>
<td style="border: 1px solid black;padding: .2em;">PD11 (LCDD11/LVDS1N0)</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">12</td>
<td style="border: 1px solid black;padding: .2em;">PD8 (LCDD8/LVDS0P3)</td>
<td style="border: 1px solid black;padding: .2em;">11</td>
<td style="border: 1px solid black;padding: .2em;">PD9 (LCDD9/LVDS0N3)</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">10</td>
<td style="border: 1px solid black;padding: .2em;">PD7 (LCDD7/LVDS0NC)</td>
<td style="border: 1px solid black;padding: .2em;">9</td>
<td style="border: 1px solid black;padding: .2em;">Ground</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">8</td>
<td style="border: 1px solid black;padding: .2em;">PD5 (LCDD5/LVDS0N2)</td>
<td style="border: 1px solid black;padding: .2em;">7</td>
<td style="border: 1px solid black;padding: .2em;">PD6 (LCDD6/LVDS0PC)</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">6</td>
<td style="border: 1px solid black;padding: .2em;">PD3 (LCDD3/LVDS0N1)</td>
<td style="border: 1px solid black;padding: .2em;">5</td>
<td style="border: 1px solid black;padding: .2em;">PD4 (LCDD4/LNVS0P2)</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">4</td>
<td style="border: 1px solid black;padding: .2em;">PD1 (LCDD1/LVDS0N0)</td>
<td style="border: 1px solid black;padding: .2em;">3</td>
<td style="border: 1px solid black;padding: .2em;">PD2 (LCDD2/LVDS0P1)</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">2</td>
<td style="border: 1px solid black;padding: .2em;">Ground</td>
<td style="border: 1px solid black;padding: .2em;">1</td>
<td style="border: 1px solid black;padding: .2em;">PD0 (LCDD0/LVDSP0)</td>
</tr>
</table>
<br /><h2 id="u15_between_ethernet_port_and_usb_ports">U15 (Between Ethernet port and USB ports)</h2>
<table style="border-collapse: collapse;" class="formatter_table">
<tr>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;"><strong>CSI1/TS</strong></td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">1</td>
<td style="border: 1px solid black;padding: .2em;">VCC-5V</td>
<td style="border: 1px solid black;padding: .2em;">2</td>
<td style="border: 1px solid black;padding: .2em;">PH15 (CSI1-PWR/EINT15)</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">3</td>
<td style="border: 1px solid black;padding: .2em;">CSI1-IO-2V8</td>
<td style="border: 1px solid black;padding: .2em;">4</td>
<td style="border: 1px solid black;padding: .2em;">PH14 (CSI1-RST#/EINT14)</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">5</td>
<td style="border: 1px solid black;padding: .2em;">PG0 (CSI1-PCLK/SDC1-CMD)</td>
<td style="border: 1px solid black;padding: .2em;">6</td>
<td style="border: 1px solid black;padding: .2em;">PB18 (TWI1-SCK)</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">7</td>
<td style="border: 1px solid black;padding: .2em;">PB19 (TWI1-SDA)</td>
<td style="border: 1px solid black;padding: .2em;">8</td>
<td style="border: 1px solid black;padding: .2em;">PG3 (CSI1-VSYNC/SDC1-D1)</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">9</td>
<td style="border: 1px solid black;padding: .2em;">PG2 (CSI1-HSYNC/SDC1-D0)</td>
<td style="border: 1px solid black;padding: .2em;">10</td>
<td style="border: 1px solid black;padding: .2em;">PG1 (CSI1-MCLK/SDC1-CLK)</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">11</td>
<td style="border: 1px solid black;padding: .2em;">PG4 (CSI1-D0/SDC1-D2)</td>
<td style="border: 1px solid black;padding: .2em;">12</td>
<td style="border: 1px solid black;padding: .2em;">PG5 (CSI1-D1/SDC1-D3)</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">13</td>
<td style="border: 1px solid black;padding: .2em;">PG6 (CSI1-D2/UART3-TX)</td>
<td style="border: 1px solid black;padding: .2em;">14</td>
<td style="border: 1px solid black;padding: .2em;">PG7 (CSI1-D3/UART3-RX</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">15</td>
<td style="border: 1px solid black;padding: .2em;">PG8 (CSI1-D4/UART3-RTS)</td>
<td style="border: 1px solid black;padding: .2em;">16</td>
<td style="border: 1px solid black;padding: .2em;">PG9 (CSI1-D5/UART3-CTS)</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">17</td>
<td style="border: 1px solid black;padding: .2em;">PG10 (CSI1-D6/UART4-TX)</td>
<td style="border: 1px solid black;padding: .2em;">18</td>
<td style="border: 1px solid black;padding: .2em;">PG11 (CSI1-D7/UART4-RX)</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">19</td>
<td style="border: 1px solid black;padding: .2em;">Ground</td>
<td style="border: 1px solid black;padding: .2em;">20</td>
<td style="border: 1px solid black;padding: .2em;">Ground</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;"><strong>Analog</strong> <strong>SDIO3</strong></td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">21</td>
<td style="border: 1px solid black;padding: .2em;">FMINL</td>
<td style="border: 1px solid black;padding: .2em;">22</td>
<td style="border: 1px solid black;padding: .2em;">PI4 (SDC3-CMD)</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">23</td>
<td style="border: 1px solid black;padding: .2em;">FMINR</td>
<td style="border: 1px solid black;padding: .2em;">24</td>
<td style="border: 1px solid black;padding: .2em;">PI5 (SDC3-CLK)</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">25</td>
<td style="border: 1px solid black;padding: .2em;">Ground</td>
<td style="border: 1px solid black;padding: .2em;">26</td>
<td style="border: 1px solid black;padding: .2em;">PI6 (SDC3-D0)</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">27</td>
<td style="border: 1px solid black;padding: .2em;">VGA-R</td>
<td style="border: 1px solid black;padding: .2em;">28</td>
<td style="border: 1px solid black;padding: .2em;">PI7 (SDC3-D1)</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">29</td>
<td style="border: 1px solid black;padding: .2em;">VGA-G</td>
<td style="border: 1px solid black;padding: .2em;">30</td>
<td style="border: 1px solid black;padding: .2em;">PI8 (SDC3-D2)</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">31</td>
<td style="border: 1px solid black;padding: .2em;">VGA-B</td>
<td style="border: 1px solid black;padding: .2em;">32</td>
<td style="border: 1px solid black;padding: .2em;">PI9 (SDC3-D3)</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;"><strong>CSI0/TS</strong></td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">33</td>
<td style="border: 1px solid black;padding: .2em;">LCD1-VSYNC</td>
<td style="border: 1px solid black;padding: .2em;">34</td>
<td style="border: 1px solid black;padding: .2em;">PE4 (CSI0-D0)</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">35</td>
<td style="border: 1px solid black;padding: .2em;">LCD1-HSYNC</td>
<td style="border: 1px solid black;padding: .2em;">36</td>
<td style="border: 1px solid black;padding: .2em;">PE5 (CSI0-D1)</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">37</td>
<td style="border: 1px solid black;padding: .2em;">Ground</td>
<td style="border: 1px solid black;padding: .2em;">38</td>
<td style="border: 1px solid black;padding: .2em;">PE6 (CSI0-D2)</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">39</td>
<td style="border: 1px solid black;padding: .2em;">AVCC</td>
<td style="border: 1px solid black;padding: .2em;">40</td>
<td style="border: 1px solid black;padding: .2em;">PE7 (CSI0-D3)</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">41</td>
<td style="border: 1px solid black;padding: .2em;">LRADC0</td>
<td style="border: 1px solid black;padding: .2em;">42</td>
<td style="border: 1px solid black;padding: .2em;">PE8 (CSI0-D4)</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">43</td>
<td style="border: 1px solid black;padding: .2em;">CVBS</td>
<td style="border: 1px solid black;padding: .2em;">44</td>
<td style="border: 1px solid black;padding: .2em;">PE9 (CSI0-D5)</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">45</td>
<td style="border: 1px solid black;padding: .2em;">HPL</td>
<td style="border: 1px solid black;padding: .2em;">46</td>
<td style="border: 1px solid black;padding: .2em;">PE10 (CSI0-D6)</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">47</td>
<td style="border: 1px solid black;padding: .2em;">HPR</td>
<td style="border: 1px solid black;padding: .2em;">48</td>
<td style="border: 1px solid black;padding: .2em;">PE11 (CSI0-D7)</td>
</tr>
</table>
<br /><hr />
<p>
everything below line is for legacy kernel and quite old</p>
<h1 id="disk_speed">disk speed</h1>
<h2 id="nand">NAND</h2>
<pre>
root@cubieboard2:/home/dpavlin# uname -a
Linux cubieboard2 3.4.109-sun7i #4 SMP PREEMPT Sun Oct 11 14:32:15 CEST 2015 armv7l GNU/Linux
root@cubieboard2:/home/dpavlin# hdparm -t /dev/nand

/dev/nand:
 Timing buffered disk reads:  32 MB in  3.22 seconds =   9.94 MB/sec

# this is different, faster sdcard
root@cubieboard2:~# uname -a
Linux cubieboard2 4.3.3-sunxi #3 SMP Mon Dec 28 11:27:16 CET 2015 armv7l GNU/Linux
root@cubieboard2:~# hdparm -tT /dev/mmcblk0

/dev/mmcblk0:
 Timing cached reads:   770 MB in  2.00 seconds = 384.59 MB/sec
 Timing buffered disk reads:  60 MB in  3.05 seconds =  19.67 MB/sec


</pre>
<br /><h2 id="sata">SATA</h2>
<p>
Powered by 2A Nexus 7 power supply (for SATA)</p>
<p>
<a target="_blank" title="(external link)" href="https://groups.google.com/d/searchin/cubieboard/sata/cubieboard/hKJgJneGVmQ/xme3w4Y7XtsJ?fromplusone=1">https://groups.google.com/d/searchin/cubieboard/sata/cubieboard/hKJgJneGVmQ/xme3w4Y7XtsJ?fromplusone=1</a></p>
<pre>
root@debian:~/sunxi-tools# ./bin2fex /boot/script.bin script.fex
fexc-bin: /boot/script.bin: version: 0.1.2
fexc-bin: /boot/script.bin: size: 42144 (76 sections)

root@debian:~/sunxi-tools# cp script.fex script+sata.fex

root@debian:~/sunxi-tools# diff -urw script.fex script+sata.fex 
--- script.fex  2013-05-30 10:41:13.979510762 +0000
+++ script+sata.fex     2013-05-30 10:42:36.380244101 +0000
@@ -595,7 +595,7 @@
 
 [sata_para]
 sata_used = 1
-sata_power_en =
+sata_power_en = port:PB08&lt;1&gt;&lt;default&gt;&lt;default&gt;&lt;0&gt;
 
 [mmc0_para]
 sdc_used = 1

root@debian:~/sunxi-tools# ./fex2bin script+sata.fex /boot/script.bin

root@debian:/etc# git diff
diff --git a/modules b/modules
index d8894c3..9e65a80 100644
--- a/modules
+++ b/modules
@@ -4,3 +4,4 @@
 # at boot time, one per line. Lines beginning with &quot;#&quot; are ignored.
 # Parameters can be specified after the module name.
 
+sw_ahci_platform
</pre>
<br /><p>
Reboot to activate changes and test speed (using 80G intel SSD to have sense of maximum performance)</p>
<pre>
root@debian:~# hdparm -i /dev/sda

/dev/sda:

 Model=INTEL SSDSA2M080G2GC, FwRev=2CV102HD, SerialNo=CVPO035101VN080JGN
 Config={ Fixed }
 RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=0
 BuffType=unknown, BuffSize=unknown, MaxMultSect=16, MultSect=1
 CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=156301488
 IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
 PIO modes:  pio0 pio3 pio4 
 DMA modes:  mdma0 mdma1 mdma2 
 UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5 *udma6 
 AdvancedPM=no WriteCache=enabled
 Drive conforms to: ATA/ATAPI-7 T13 1532D revision 1:  ATA/ATAPI-2,3,4,5,6,7

 * signifies the current active mode

root@debian:~# hdparm -tT /dev/sda

/dev/sda:
 Timing cached reads:   784 MB in  2.00 seconds = 392.08 MB/sec
 Timing buffered disk reads: 460 MB in  3.00 seconds = 153.32 MB/sec
</pre>
<br /><p>
And test with disk:</p>
<pre>
root@debian:~# hdparm -i /dev/sda

/dev/sda:

 Model=ST96812AS, FwRev=7.24, SerialNo=3PJ1GCKE
 Config={ HardSect NotMFM HdSw&gt;15uSec Fixed DTR&gt;10Mbs RotSpdTol&gt;.5% }
 RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=4
 BuffType=unknown, BuffSize=8192kB, MaxMultSect=16, MultSect=off
 CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=117231408
 IORDY=on/off, tPIO={min:240,w/IORDY:120}, tDMA={min:120,rec:120}
 PIO modes:  pio0 pio1 pio2 pio3 pio4 
 DMA modes:  mdma0 mdma1 mdma2 
 UDMA modes: udma0 udma1 udma2 udma3 udma4 *udma5 
 AdvancedPM=yes: unknown setting WriteCache=enabled
 Drive conforms to: Unspecified:  ATA/ATAPI-1,2,3,4,5,6,7

 * signifies the current active mode

root@debian:~# hdparm -tT /dev/sda

/dev/sda:
 Timing cached reads:   746 MB in  2.00 seconds = 372.90 MB/sec
 Timing buffered disk reads: 120 MB in  3.03 seconds =  39.56 MB/sec
</pre>
<br /><h1 id="gpio">GPIO</h1>
<ul>
<li><a target="_blank" title="(external link)" href="https://github.com/gootoomoon/WiringCB-python">https://github.com/gootoomoon/WiringCB-python</a></li>
</ul>
<h1 id="camera">Camera</h1>
<p>
<a href="https://saturn.ffzg.hr/rot13/index.cgi?ov7670" title="(135 months)  toc References http embeddedprogrammer.blogspot.com 2012 07 hacking-ov7670-camera-module-sccb-cheat...">OV7670</a> is supported <a target="_blank" title="(external link)" href="http://linux-sunxi.org/CSI">http://linux-sunxi.org/CSI</a></p>
<ul>
<li><a target="_blank" title="(external link)" href="https://groups.google.com/forum/#!msg/linux-sunxi/DYWwfUFgVlw/_7A5APHyl7UJ">https://groups.google.com/forum/#!msg/linux-sunxi/DYWwfUFgVlw/_7A5APHyl7UJ</a></li>
<li><a target="_blank" title="(external link)" href="https://groups.google.com/forum/#!msg/cubieboard/SWzC9qvpVL8/9cjQ_CPHQzUJ">https://groups.google.com/forum/#!msg/cubieboard/SWzC9qvpVL8/9cjQ_CPHQzUJ</a></li>
</ul>
<h1 id="hardware">hardware</h1>
<ul>
<li><a target="_blank" title="(external link)" href="http://linux-sunxi.org/Cubieboard/ExpansionPorts">http://linux-sunxi.org/Cubieboard/ExpansionPorts</a></li>
<li><a target="_blank" title="(external link)" href="https://linux-sunxi.org/A20/PIO">https://linux-sunxi.org/A20/PIO</a></li>
</ul>
<p>
pinout: <span class="nlw_phrase"><img alt="gpio_defination_large.jpg" src="https://saturn.ffzg.hr/rot13/index.cgi/gpio_defination_large.jpg?action=attachments_download;page_name=cubieboard;id=20160103135534-0-14478" /><!-- wiki: {image: gpio_defination_large.jpg} --></span></p>
<p>
<a target="_blank" title="(external link)" href="https://www.olimex.com/wiki/How_to_add_pwm">https://www.olimex.com/wiki/How_to_add_pwm</a></p>
<pre>
cat /sys/class/pwm-sunxi/pwm0/pin 
PB2

echo 10khz &gt; /sys/class/pwm-sunxi/pwm0/period

echo 25 &gt; /sys/class/pwm-sunxi/pwm0/duty_percent

echo 1 &gt; /sys/class/pwm-sunxi/pwm0/run
</pre>
<br /><h2 id="leds">LEDs</h2>
<pre>
dpavlin@cubieboard2:~$ grep . /sys/class/leds/*/trigger 
/sys/class/leds/blue:ph21:led2/trigger:none battery-charging-or-full battery-charging battery-full battery-charging-blink-full-solid ac-online usb-online mmc0 timer [heartbeat] backlight cpu0 cpu1 default-on 
/sys/class/leds/green:ph20:led1/trigger:[none] battery-charging-or-full battery-charging battery-full battery-charging-blink-full-solid ac-online usb-online mmc0 timer heartbeat backlight cpu0 cpu1 default-on 
</pre>
<br /><h1 id="forum">forum</h1>
<ul>
<li>ov7670 <a target="_blank" title="(external link)" href="http://www.cubieforums.com/index.php/topic,3823.0.html">http://www.cubieforums.com/index.php/topic,3823.0.html</a></li>
<li>LVDS <a target="_blank" title="(external link)" href="http://www.cubieforums.com/index.php/topic,3908.0.html">http://www.cubieforums.com/index.php/topic,3908.0.html</a></li>
</ul>
<h1 id="ina219">ina219</h1>
<h2 id="device_tree">device tree</h2>
<ul>
<li><a target="_blank" title="(external link)" href="https://github.com/dpavlin/sunxi-DT-overlays/blob/cubieboard2/examples/i2c-ina219.dts">https://github.com/dpavlin/sunxi-DT-overlays/blob/cubieboard2/examples/i2c-ina219.dts</a></li>
</ul>
<pre>
dpavlin@cubieboard2:~$ sensors
ina219-i2c-1-40
Adapter: mv64xxx_i2c adapter
in0:          +0.04 V  
in1:          +4.64 V  
power1:       66.88 W  
curr1:       +13.64 A  

iio_hwmon-isa-0000
Adapter: ISA adapter
temp1:        +33.6�C  

root@cubieboard2:~# dmesg | grep ina | tail -1
[ 6597.685287] ina2xx 1-0040: power monitor ina219 (Rshunt = 100 uOhm)

# hum, it should be 10uA, so I changed that in device tree

dpavlin@cubieboard2:~$ dmesg | grep ina219
[   11.594536] ina2xx 1-0040: power monitor ina219 (Rshunt = 10 uOhm)
dpavlin@cubieboard2:~$ sensors
ina219-i2c-1-40
Adapter: mv64xxx_i2c adapter
in0:          +0.02 V  
in1:          +4.75 V  
power1:       85.00 W  
curr1:       +17.97 A  

iio_hwmon-isa-0000
Adapter: ISA adapter
temp1:        +32.5�C  

# still wrong current!

</pre>
<br /><h2 id="user_land_c">user-land C</h2>
<p>
User-land implementation which works: <a target="_blank" title="(external link)" href="https://github.com/ZigFisher/Glutinium/blob/master/i2c-telemetry/src/ina219.c">https://github.com/ZigFisher/Glutinium/blob/master/i2c-telemetry/src/ina219.c</a></p>
<p>
modified a little to provide full timestamp and fflush: <span class="nlw_phrase"><a href="https://saturn.ffzg.hr/rot13/index.cgi/ina219.c?action=attachments_download;page_name=cubieboard;id=20171023104353-0-23625">ina219.c</a><!-- wiki: {file: ina219.c} --></span></p>
<pre>
dpavlin@cubieboard2:~$ ./ina219 -b 1 -i 1
2017-10-23T12:40:24 4744mV  262.2mA
2017-10-23T12:40:26 4756mV  249.1mA
2017-10-23T12:40:27 4776mV  223.0mA
2017-10-23T12:40:28 4772mV  223.8mA
2017-10-23T12:40:29 4760mV  224.0mA
2017-10-23T12:40:30 4768mV  223.0mA
2017-10-23T12:40:31 4772mV  223.1mA
2017-10-23T12:40:32 4748mV  224.6mA
2017-10-23T12:40:33 4776mV  223.1mA
2017-10-23T12:40:34 4768mV  223.5mA
</pre>
<br /><h1 id="spi_flash">SPI flash</h1>
<h2 id="flashrom">flashrom</h2>
<pre>
dpavlin@cubieboard:~$ sudo grep spidev /boot/armbianEnv.txt
overlays=pwm nand uart3 uart4 spi-spidev
#overlays=spi-spidev
param_spidev_spi_bus=0


dpavlin@cubieboard:~$ sudo flashrom -p linux_spi:dev=/dev/spidev0.0
flashrom v0.9.9-2-g51e4303 on Linux 4.14.47-sunxi (armv7l)
flashrom is free software, get the source code at https://flashrom.org

Calibrating delay loop... OK.
Found GigaDevice flash chip &quot;GD25Q80(B)&quot; (1024 kB, SPI) on linux_spi.
No operations were specified.

root@cubieboard:/home/dpavlin# time flashrom -p linux_spi:dev=/dev/spidev0.0 -r /dev/null
flashrom v0.9.9-2-g51e4303 on Linux 4.14.47-sunxi (armv7l)
flashrom is free software, get the source code at https://flashrom.org

Calibrating delay loop... OK.
Found GigaDevice flash chip &quot;GD25Q80(B)&quot; (1024 kB, SPI) on linux_spi.
Reading flash... done.

real    0m11.210s
user    0m0.796s
sys     0m0.381s

</pre>
<br /><h2 id="build_u_boot_with_spi_support">build u-boot with SPI support</h2>
<p>
<a target="_blank" title="(external link)" href="http://linux-sunxi.org/Bootable_SPI_flash">http://linux-sunxi.org/Bootable_SPI_flash</a></p>
<pre>
git clone -b sunxi-spi https://github.com/StephanvanSchaik/u-boot

dpavlin@armbian:~/u-boot$ git diff
diff --git a/configs/Cubieboard_defconfig b/configs/Cubieboard_defconfig
index 0389d4c..cbafac9 100644
--- a/configs/Cubieboard_defconfig
+++ b/configs/Cubieboard_defconfig
@@ -16,3 +16,13 @@ CONFIG_SPL=y
 # CONFIG_SPL_ISO_PARTITION is not set
 # CONFIG_SPL_EFI_PARTITION is not set
 CONFIG_USB_EHCI_HCD=y
+
+CONFIG_CMD_SF=y
+CONFIG_CMD_SPI=y
+CONFIG_DM_SPI_FLASH=y
+CONFIG_SPI_FLASH=y
+CONFIG_SPI_FLASH_MACRONIX=y
+CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_DM_SPI=y
+CONFIG_SUNXI_SPI=y
+
dpavlin@armbian:~/u-boot$ make Cubieboard_defconfig



</pre>
<br /><p>
This doesn't actually work for me (since it's missing device tree overlays), but rebasing to current u-boot master doesn't<br />
produce code which compiles.</p>
<p>
<a target="_blank" title="(external link)" href="https://forum.armbian.com/topic/3252-opi-zero-boot-with-spi/">https://forum.armbian.com/topic/3252-opi-zero-boot-with-spi/</a></p>
<h1 id="reset">reset</h1>
<p>
<a target="_blank" title="(external link)" href="http://linux-sunxi.org/Cubieboard/Reset">http://linux-sunxi.org/Cubieboard/Reset</a></p>
<h1 id="external_ir_receiver">external ir receiver</h1>
<p>
configuration described on <a href="https://saturn.ffzg.hr/rot13/index.cgi?lirc" title="(82 months) Hints about using recent lirc toc ir-ctl install .pre apt install v4l-utils root@nuc2 ir-ctl feature...">lirc</a> page</p>
</div>
<hr/><div>Attachments: BreadBoard V1.0 03-25 For CubieBoard.pdf, cubieboard-ir-module.png, cubieboard_schematic_2012-08-08.pdf, gpio_defination_large.jpg, ina219.c</div>]]></description>
<author>Dobrica Pavlinu&#x161;i&#x107;</author>
<category>hardware</category>
<guid isPermaLink="true">https://saturn.ffzg.hr/rot13/index.cgi?cubieboard</guid>
<pubDate>Wed, 05 Jun 2019 15:47:05 -0000</pubDate>
</item>
</channel>
</rss>