<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://wikilegacy.armadeus.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=SebastienSz</id>
	<title>ArmadeusWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://wikilegacy.armadeus.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=SebastienSz"/>
	<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=Special:Contributions/SebastienSz"/>
	<updated>2026-04-27T21:31:33Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=EMMC_OPOS93&amp;diff=15288</id>
		<title>EMMC OPOS93</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=EMMC_OPOS93&amp;diff=15288"/>
		<updated>2026-01-30T14:24:48Z</updated>

		<summary type="html">&lt;p&gt;SebastienSz: /* Boot1 partition layout */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: eMMC]]&lt;br /&gt;
&lt;br /&gt;
= OPOS93 eMMC layout =&lt;br /&gt;
&lt;br /&gt;
By default, the 8GB eMMC on [[OPOS93]] module has 4 physical/hardware partitions:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;OPOS93 eMMC partitions&amp;quot;&lt;br /&gt;
|----------------&lt;br /&gt;
| style=&amp;quot;width:80px;background:orange;&amp;quot; align=&amp;quot;center&amp;quot; | Boot0&lt;br /&gt;
| style=&amp;quot;width:80px;background:orange;&amp;quot; align=&amp;quot;center&amp;quot; | Boot1&lt;br /&gt;
| style=&amp;quot;background:red;&amp;quot; | RPMB&lt;br /&gt;
| style=&amp;quot;width:500px;background:green;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | User Data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;OPOS93 eMMC partitions details&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
!Name || U-Boot name || Size || Comment&lt;br /&gt;
|----------------&lt;br /&gt;
|boot0 || mmc dev 0 1 || 4 MBytes || U-Boot is installed on this partition&lt;br /&gt;
|----------------&lt;br /&gt;
|boot1 || mmc dev 0 2 || 4 MBytes || U-Boot env is installed on this partition&lt;br /&gt;
|----------------&lt;br /&gt;
|rpmb || mmc dev 0 3 || 4 MBytes || Not used&lt;br /&gt;
|----------------&lt;br /&gt;
|User Data || mmc dev 0 0 || remaining space (~7,3 GBytes) || Kernel, device tree and rootfs&lt;br /&gt;
|----------------&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Boot0 partition layout ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;OPOS93 eMMC partitions&amp;quot;&lt;br /&gt;
|----------------&lt;br /&gt;
| style=&amp;quot;width:150px;background:orange;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | opos93-u-boot.bin&lt;br /&gt;
| style=&amp;quot;width:300px;background:white;color:black;&amp;quot; align=&amp;quot;center&amp;quot; | ...&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Linux device: &#039;&#039;/dev/mmcblk0boot0&#039;&#039;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;Boot0 partition detail&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Offset (blocks) || Offset (bytes) || Size (bytes) || Comment&lt;br /&gt;
|----------------&lt;br /&gt;
|0 || 0 || 1.3 MiB || Boot image (opos93-u-boot.bin) containing U-Boot, ATF, etc...&lt;br /&gt;
|----------------&lt;br /&gt;
||| || || Free&lt;br /&gt;
|----------------&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Boot1 partition layout ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;OPOS93 eMMC partitions&amp;quot;&lt;br /&gt;
|----------------&lt;br /&gt;
| style=&amp;quot;width:50px;background:orange;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | U-Boot env&lt;br /&gt;
| style=&amp;quot;width:50px;background:orange;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | U-Boot redundant env&lt;br /&gt;
| style=&amp;quot;width:200px;background:white;color:black;&amp;quot; align=&amp;quot;center&amp;quot; | ...&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Linux device: &#039;&#039;/dev/mmcblk0boot1&#039;&#039;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;Boot1 partition detail&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Offset (blocks) || Offset (bytes) || Size (bytes) || Comment&lt;br /&gt;
|----------------&lt;br /&gt;
|0 || 0 || 128 KiB || U-Boot environment&lt;br /&gt;
|----------------&lt;br /&gt;
|256 || 128 KiB || 128 KiB || U-Boot redundant environment&lt;br /&gt;
|----------------&lt;br /&gt;
||| || || Free&lt;br /&gt;
|----------------&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== RPMB partition layout ==&lt;br /&gt;
* Not used !&lt;br /&gt;
&lt;br /&gt;
== User Data partition layout ==&lt;br /&gt;
&lt;br /&gt;
There are 3 partitions on the &amp;quot;User Data&amp;quot; physical partition:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;OPOS93 eMMC partitions&amp;quot;&lt;br /&gt;
|----------------&lt;br /&gt;
| style=&amp;quot;width:50px;background:white;color:black;&amp;quot; align=&amp;quot;center&amp;quot; | ...&lt;br /&gt;
| style=&amp;quot;width:200px;background:green;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | Failsafe/Update (primary)&lt;br /&gt;
| style=&amp;quot;width:200px;background:green;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | Default Rootfs (primary)&lt;br /&gt;
| style=&amp;quot;width:600px;background:green;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | Home/Data (primary)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;OPOS93 eMMC User data partitions details&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
!Name || U-Boot device  || Linux device || Offset (bytes) || Offset (sectors/blocs) || Size || Comment&lt;br /&gt;
|----------------&lt;br /&gt;
|MBR || NA || NA || 0 || 0 || 512 bytes (1 block) || Master Boot Record + some spare space ( -&amp;gt; Don&#039;t touch it :-) )&lt;br /&gt;
|----------------&lt;br /&gt;
|Failsafe || mmc 0:1 || /dev/mmcblk0p1 || 1M || 2048 (0x800) || 512 MBytes (1048576 sectors) || system/rootfs to restore your board in case of problem or setup a safe update mechanism (ext4 formatted)&lt;br /&gt;
|----------------&lt;br /&gt;
|Rootfs || mmc 0:2 || /dev/mmcblk0p2 ||  || 1050624 (0x10800) || 512 MBytes (1048576 sectors) || the default booted rootfs is on this partition (ext4 formatted)&lt;br /&gt;
|----------------&lt;br /&gt;
|Home/Data || mmc 0:3 || /dev/mmcblk0p3 ||  || 2099200 (0x200800) || Rest of space: ~6,3 GBytes (13208542 sectors) || HOME can be stored on this partition (ext4 formatted)&lt;br /&gt;
|----------------&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* By default, when flashed from U-Boot, rootfs and boot are only occupying the size of the .ext4 images used during flashing. If you want to increase the rootfs/boot size to all available free space then, after Linux has booted, use the following commands:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# resize2fs /dev/mmcblk0p2        # for Rootfs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Or with &#039;&#039;apf-config&#039;&#039; command:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# apf-config&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* In menu:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
|     1 Expand Filesystem(s)         OS can then use all eMMC/SD space         |&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rootfs/Boot will then be extended to all the &amp;quot;Rootfs&amp;quot;/&amp;quot;Boot&amp;quot; eMMC partitions space.&lt;br /&gt;
&lt;br /&gt;
==Tips==&lt;br /&gt;
* Commands to partition &#039;&#039;User Data&#039;&#039; from fdisk on Host PC with [[U-Boot UMS on APF &amp;amp; OPOS|U-Boot UMS]]. &#039;&#039;&#039;Check /dev/sdc is the eMMC of your OPOS93 device otherwise you may destroy your PC partition table !!!&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;pre class=host&amp;gt;&lt;br /&gt;
$ sudo echo -e &#039;size=512MiB,type=0x83\nsize=512MiB,type=0x83\ntype=0x83&#039; | sfdisk /dev/sdc&lt;br /&gt;
&lt;br /&gt;
$ sudo mkfs.ext4 -O ^64bit,^metadata_csum,uninit_bg /dev/sdc1&lt;br /&gt;
$ sudo mkfs.ext4 -O ^64bit,^metadata_csum,uninit_bg /dev/sdc2&lt;br /&gt;
$ sudo mkfs.ext4 -O ^64bit,^metadata_csum,uninit_bg /dev/sdc3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* [http://fr.slideshare.net/linaroorg/intro-to-emmc http://fr.slideshare.net/linaroorg/intro-to-emmc]&lt;br /&gt;
* https://fr.wikipedia.org/wiki/Master_boot_record ou http://poloastucien.free.fr/mbr_fat_secteurs_boot_h.html&lt;/div&gt;</summary>
		<author><name>SebastienSz</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=EMMC_OPOS93&amp;diff=15287</id>
		<title>EMMC OPOS93</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=EMMC_OPOS93&amp;diff=15287"/>
		<updated>2026-01-30T14:23:37Z</updated>

		<summary type="html">&lt;p&gt;SebastienSz: /* Boot0 partition layout */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: eMMC]]&lt;br /&gt;
&lt;br /&gt;
= OPOS93 eMMC layout =&lt;br /&gt;
&lt;br /&gt;
By default, the 8GB eMMC on [[OPOS93]] module has 4 physical/hardware partitions:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;OPOS93 eMMC partitions&amp;quot;&lt;br /&gt;
|----------------&lt;br /&gt;
| style=&amp;quot;width:80px;background:orange;&amp;quot; align=&amp;quot;center&amp;quot; | Boot0&lt;br /&gt;
| style=&amp;quot;width:80px;background:orange;&amp;quot; align=&amp;quot;center&amp;quot; | Boot1&lt;br /&gt;
| style=&amp;quot;background:red;&amp;quot; | RPMB&lt;br /&gt;
| style=&amp;quot;width:500px;background:green;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | User Data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;OPOS93 eMMC partitions details&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
!Name || U-Boot name || Size || Comment&lt;br /&gt;
|----------------&lt;br /&gt;
|boot0 || mmc dev 0 1 || 4 MBytes || U-Boot is installed on this partition&lt;br /&gt;
|----------------&lt;br /&gt;
|boot1 || mmc dev 0 2 || 4 MBytes || U-Boot env is installed on this partition&lt;br /&gt;
|----------------&lt;br /&gt;
|rpmb || mmc dev 0 3 || 4 MBytes || Not used&lt;br /&gt;
|----------------&lt;br /&gt;
|User Data || mmc dev 0 0 || remaining space (~7,3 GBytes) || Kernel, device tree and rootfs&lt;br /&gt;
|----------------&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Boot0 partition layout ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;OPOS93 eMMC partitions&amp;quot;&lt;br /&gt;
|----------------&lt;br /&gt;
| style=&amp;quot;width:150px;background:orange;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | opos93-u-boot.bin&lt;br /&gt;
| style=&amp;quot;width:300px;background:white;color:black;&amp;quot; align=&amp;quot;center&amp;quot; | ...&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Linux device: &#039;&#039;/dev/mmcblk0boot0&#039;&#039;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;Boot0 partition detail&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Offset (blocks) || Offset (bytes) || Size (bytes) || Comment&lt;br /&gt;
|----------------&lt;br /&gt;
|0 || 0 || 1.3 MiB || Boot image (opos93-u-boot.bin) containing U-Boot, ATF, etc...&lt;br /&gt;
|----------------&lt;br /&gt;
||| || || Free&lt;br /&gt;
|----------------&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Boot1 partition layout ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;OPOS93 eMMC partitions&amp;quot;&lt;br /&gt;
|----------------&lt;br /&gt;
| style=&amp;quot;width:50px;background:orange;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | U-Boot env&lt;br /&gt;
| style=&amp;quot;width:100px;background:white;color:black;&amp;quot; align=&amp;quot;center&amp;quot; | ...&lt;br /&gt;
| style=&amp;quot;width:50px;background:orange;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | U-Boot redundant env&lt;br /&gt;
| style=&amp;quot;width:100px;background:white;color:black;&amp;quot; align=&amp;quot;center&amp;quot; | ...&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Linux device: &#039;&#039;/dev/mmcblk0boot1&#039;&#039;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;Boot1 partition detail&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Offset (blocks) || Offset (bytes) || Size (bytes) || Comment&lt;br /&gt;
|----------------&lt;br /&gt;
|0 || 0 || 128 KiB || U-Boot environment&lt;br /&gt;
|----------------&lt;br /&gt;
|256 || 128 KiB || 128 KiB || U-Boot redundant environment&lt;br /&gt;
|----------------&lt;br /&gt;
||| || || Free&lt;br /&gt;
|----------------&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== RPMB partition layout ==&lt;br /&gt;
* Not used !&lt;br /&gt;
&lt;br /&gt;
== User Data partition layout ==&lt;br /&gt;
&lt;br /&gt;
There are 3 partitions on the &amp;quot;User Data&amp;quot; physical partition:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;OPOS93 eMMC partitions&amp;quot;&lt;br /&gt;
|----------------&lt;br /&gt;
| style=&amp;quot;width:50px;background:white;color:black;&amp;quot; align=&amp;quot;center&amp;quot; | ...&lt;br /&gt;
| style=&amp;quot;width:200px;background:green;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | Failsafe/Update (primary)&lt;br /&gt;
| style=&amp;quot;width:200px;background:green;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | Default Rootfs (primary)&lt;br /&gt;
| style=&amp;quot;width:600px;background:green;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | Home/Data (primary)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;OPOS93 eMMC User data partitions details&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
!Name || U-Boot device  || Linux device || Offset (bytes) || Offset (sectors/blocs) || Size || Comment&lt;br /&gt;
|----------------&lt;br /&gt;
|MBR || NA || NA || 0 || 0 || 512 bytes (1 block) || Master Boot Record + some spare space ( -&amp;gt; Don&#039;t touch it :-) )&lt;br /&gt;
|----------------&lt;br /&gt;
|Failsafe || mmc 0:1 || /dev/mmcblk0p1 || 1M || 2048 (0x800) || 512 MBytes (1048576 sectors) || system/rootfs to restore your board in case of problem or setup a safe update mechanism (ext4 formatted)&lt;br /&gt;
|----------------&lt;br /&gt;
|Rootfs || mmc 0:2 || /dev/mmcblk0p2 ||  || 1050624 (0x10800) || 512 MBytes (1048576 sectors) || the default booted rootfs is on this partition (ext4 formatted)&lt;br /&gt;
|----------------&lt;br /&gt;
|Home/Data || mmc 0:3 || /dev/mmcblk0p3 ||  || 2099200 (0x200800) || Rest of space: ~6,3 GBytes (13208542 sectors) || HOME can be stored on this partition (ext4 formatted)&lt;br /&gt;
|----------------&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* By default, when flashed from U-Boot, rootfs and boot are only occupying the size of the .ext4 images used during flashing. If you want to increase the rootfs/boot size to all available free space then, after Linux has booted, use the following commands:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# resize2fs /dev/mmcblk0p2        # for Rootfs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Or with &#039;&#039;apf-config&#039;&#039; command:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# apf-config&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* In menu:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
|     1 Expand Filesystem(s)         OS can then use all eMMC/SD space         |&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rootfs/Boot will then be extended to all the &amp;quot;Rootfs&amp;quot;/&amp;quot;Boot&amp;quot; eMMC partitions space.&lt;br /&gt;
&lt;br /&gt;
==Tips==&lt;br /&gt;
* Commands to partition &#039;&#039;User Data&#039;&#039; from fdisk on Host PC with [[U-Boot UMS on APF &amp;amp; OPOS|U-Boot UMS]]. &#039;&#039;&#039;Check /dev/sdc is the eMMC of your OPOS93 device otherwise you may destroy your PC partition table !!!&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;pre class=host&amp;gt;&lt;br /&gt;
$ sudo echo -e &#039;size=512MiB,type=0x83\nsize=512MiB,type=0x83\ntype=0x83&#039; | sfdisk /dev/sdc&lt;br /&gt;
&lt;br /&gt;
$ sudo mkfs.ext4 -O ^64bit,^metadata_csum,uninit_bg /dev/sdc1&lt;br /&gt;
$ sudo mkfs.ext4 -O ^64bit,^metadata_csum,uninit_bg /dev/sdc2&lt;br /&gt;
$ sudo mkfs.ext4 -O ^64bit,^metadata_csum,uninit_bg /dev/sdc3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* [http://fr.slideshare.net/linaroorg/intro-to-emmc http://fr.slideshare.net/linaroorg/intro-to-emmc]&lt;br /&gt;
* https://fr.wikipedia.org/wiki/Master_boot_record ou http://poloastucien.free.fr/mbr_fat_secteurs_boot_h.html&lt;/div&gt;</summary>
		<author><name>SebastienSz</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=EMMC_OPOS93&amp;diff=15286</id>
		<title>EMMC OPOS93</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=EMMC_OPOS93&amp;diff=15286"/>
		<updated>2026-01-30T14:19:17Z</updated>

		<summary type="html">&lt;p&gt;SebastienSz: Created page with &amp;quot;Category: eMMC  = OPOS93 eMMC layout =  By default, the 8GB eMMC on OPOS93 module has 4 physical/hardware partitions:  {| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;OPOS93 eMMC partitions&amp;quot; |---------------- | style=&amp;quot;width:80px;background:orange;&amp;quot; align=&amp;quot;center&amp;quot; | Boot0 | style=&amp;quot;width:80px;background:orange;&amp;quot; align=&amp;quot;center&amp;quot; | Boot1 | style=&amp;quot;background:red;&amp;quot; | RPMB | style=&amp;quot;width:500px;background:green;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | User Data |}   {| bord...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: eMMC]]&lt;br /&gt;
&lt;br /&gt;
= OPOS93 eMMC layout =&lt;br /&gt;
&lt;br /&gt;
By default, the 8GB eMMC on [[OPOS93]] module has 4 physical/hardware partitions:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;OPOS93 eMMC partitions&amp;quot;&lt;br /&gt;
|----------------&lt;br /&gt;
| style=&amp;quot;width:80px;background:orange;&amp;quot; align=&amp;quot;center&amp;quot; | Boot0&lt;br /&gt;
| style=&amp;quot;width:80px;background:orange;&amp;quot; align=&amp;quot;center&amp;quot; | Boot1&lt;br /&gt;
| style=&amp;quot;background:red;&amp;quot; | RPMB&lt;br /&gt;
| style=&amp;quot;width:500px;background:green;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | User Data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;OPOS93 eMMC partitions details&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
!Name || U-Boot name || Size || Comment&lt;br /&gt;
|----------------&lt;br /&gt;
|boot0 || mmc dev 0 1 || 4 MBytes || U-Boot is installed on this partition&lt;br /&gt;
|----------------&lt;br /&gt;
|boot1 || mmc dev 0 2 || 4 MBytes || U-Boot env is installed on this partition&lt;br /&gt;
|----------------&lt;br /&gt;
|rpmb || mmc dev 0 3 || 4 MBytes || Not used&lt;br /&gt;
|----------------&lt;br /&gt;
|User Data || mmc dev 0 0 || remaining space (~7,3 GBytes) || Kernel, device tree and rootfs&lt;br /&gt;
|----------------&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Boot0 partition layout ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;OPOS93 eMMC partitions&amp;quot;&lt;br /&gt;
|----------------&lt;br /&gt;
| style=&amp;quot;width:10px;background:white;color:black;&amp;quot; align=&amp;quot;center&amp;quot; | ...&lt;br /&gt;
| style=&amp;quot;width:40px;background:orange;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | SPL&lt;br /&gt;
| style=&amp;quot;width:100px;background:white;color:black;&amp;quot; align=&amp;quot;center&amp;quot; | ...&lt;br /&gt;
| style=&amp;quot;width:150px;background:orange;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | IMG&lt;br /&gt;
| style=&amp;quot;width:150px;background:white;color:black;&amp;quot; align=&amp;quot;center&amp;quot; | ...&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Linux device: &#039;&#039;/dev/mmcblk0boot0&#039;&#039;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;Boot0 partition detail&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Offset (blocks) || Offset (bytes) || Size (bytes) || Comment&lt;br /&gt;
|----------------&lt;br /&gt;
|0 || 0 || 1.3 MiB || Boot image (opos93-u-boot.bin) containing U-Boot, ATF, etc...&lt;br /&gt;
|----------------&lt;br /&gt;
||| || || Free&lt;br /&gt;
|----------------&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Boot1 partition layout ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;OPOS93 eMMC partitions&amp;quot;&lt;br /&gt;
|----------------&lt;br /&gt;
| style=&amp;quot;width:50px;background:orange;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | U-Boot env&lt;br /&gt;
| style=&amp;quot;width:100px;background:white;color:black;&amp;quot; align=&amp;quot;center&amp;quot; | ...&lt;br /&gt;
| style=&amp;quot;width:50px;background:orange;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | U-Boot redundant env&lt;br /&gt;
| style=&amp;quot;width:100px;background:white;color:black;&amp;quot; align=&amp;quot;center&amp;quot; | ...&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Linux device: &#039;&#039;/dev/mmcblk0boot1&#039;&#039;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;Boot1 partition detail&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Offset (blocks) || Offset (bytes) || Size (bytes) || Comment&lt;br /&gt;
|----------------&lt;br /&gt;
|0 || 0 || 128 KiB || U-Boot environment&lt;br /&gt;
|----------------&lt;br /&gt;
|256 || 128 KiB || 128 KiB || U-Boot redundant environment&lt;br /&gt;
|----------------&lt;br /&gt;
||| || || Free&lt;br /&gt;
|----------------&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== RPMB partition layout ==&lt;br /&gt;
* Not used !&lt;br /&gt;
&lt;br /&gt;
== User Data partition layout ==&lt;br /&gt;
&lt;br /&gt;
There are 3 partitions on the &amp;quot;User Data&amp;quot; physical partition:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;OPOS93 eMMC partitions&amp;quot;&lt;br /&gt;
|----------------&lt;br /&gt;
| style=&amp;quot;width:50px;background:white;color:black;&amp;quot; align=&amp;quot;center&amp;quot; | ...&lt;br /&gt;
| style=&amp;quot;width:200px;background:green;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | Failsafe/Update (primary)&lt;br /&gt;
| style=&amp;quot;width:200px;background:green;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | Default Rootfs (primary)&lt;br /&gt;
| style=&amp;quot;width:600px;background:green;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | Home/Data (primary)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;OPOS93 eMMC User data partitions details&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
!Name || U-Boot device  || Linux device || Offset (bytes) || Offset (sectors/blocs) || Size || Comment&lt;br /&gt;
|----------------&lt;br /&gt;
|MBR || NA || NA || 0 || 0 || 512 bytes (1 block) || Master Boot Record + some spare space ( -&amp;gt; Don&#039;t touch it :-) )&lt;br /&gt;
|----------------&lt;br /&gt;
|Failsafe || mmc 0:1 || /dev/mmcblk0p1 || 1M || 2048 (0x800) || 512 MBytes (1048576 sectors) || system/rootfs to restore your board in case of problem or setup a safe update mechanism (ext4 formatted)&lt;br /&gt;
|----------------&lt;br /&gt;
|Rootfs || mmc 0:2 || /dev/mmcblk0p2 ||  || 1050624 (0x10800) || 512 MBytes (1048576 sectors) || the default booted rootfs is on this partition (ext4 formatted)&lt;br /&gt;
|----------------&lt;br /&gt;
|Home/Data || mmc 0:3 || /dev/mmcblk0p3 ||  || 2099200 (0x200800) || Rest of space: ~6,3 GBytes (13208542 sectors) || HOME can be stored on this partition (ext4 formatted)&lt;br /&gt;
|----------------&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* By default, when flashed from U-Boot, rootfs and boot are only occupying the size of the .ext4 images used during flashing. If you want to increase the rootfs/boot size to all available free space then, after Linux has booted, use the following commands:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# resize2fs /dev/mmcblk0p2        # for Rootfs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Or with &#039;&#039;apf-config&#039;&#039; command:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# apf-config&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* In menu:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
|     1 Expand Filesystem(s)         OS can then use all eMMC/SD space         |&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rootfs/Boot will then be extended to all the &amp;quot;Rootfs&amp;quot;/&amp;quot;Boot&amp;quot; eMMC partitions space.&lt;br /&gt;
&lt;br /&gt;
==Tips==&lt;br /&gt;
* Commands to partition &#039;&#039;User Data&#039;&#039; from fdisk on Host PC with [[U-Boot UMS on APF &amp;amp; OPOS|U-Boot UMS]]. &#039;&#039;&#039;Check /dev/sdc is the eMMC of your OPOS93 device otherwise you may destroy your PC partition table !!!&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;pre class=host&amp;gt;&lt;br /&gt;
$ sudo echo -e &#039;size=512MiB,type=0x83\nsize=512MiB,type=0x83\ntype=0x83&#039; | sfdisk /dev/sdc&lt;br /&gt;
&lt;br /&gt;
$ sudo mkfs.ext4 -O ^64bit,^metadata_csum,uninit_bg /dev/sdc1&lt;br /&gt;
$ sudo mkfs.ext4 -O ^64bit,^metadata_csum,uninit_bg /dev/sdc2&lt;br /&gt;
$ sudo mkfs.ext4 -O ^64bit,^metadata_csum,uninit_bg /dev/sdc3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* [http://fr.slideshare.net/linaroorg/intro-to-emmc http://fr.slideshare.net/linaroorg/intro-to-emmc]&lt;br /&gt;
* https://fr.wikipedia.org/wiki/Master_boot_record ou http://poloastucien.free.fr/mbr_fat_secteurs_boot_h.html&lt;/div&gt;</summary>
		<author><name>SebastienSz</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=Secure_boot_on_OPOS93&amp;diff=15147</id>
		<title>Secure boot on OPOS93</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=Secure_boot_on_OPOS93&amp;diff=15147"/>
		<updated>2024-10-07T16:21:57Z</updated>

		<summary type="html">&lt;p&gt;SebastienSz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
This document is a quick how-to boot a signed boot firmware on the OPOS93 SoM. It summarizes the documents provided by NXP: &lt;br /&gt;
&lt;br /&gt;
* [https://www.nxp.com/doc/an12312 AN12312]&lt;br /&gt;
* https://github.com/nxp-imx/uboot-imx/blob/lf-6.1.22-2.0.0/doc/imx/ahab/introduction_ahab.txt&lt;br /&gt;
* https://github.com/nxp-imx/uboot-imx/blob/lf-6.6.36-2.1.0/doc/imx/ahab/guides/mx8ulp_9x_secure_boot.txt&lt;br /&gt;
&lt;br /&gt;
= Requirements =&lt;br /&gt;
&lt;br /&gt;
== IMX CST TOOL ==&lt;br /&gt;
&lt;br /&gt;
* Download the [https://www.nxp.com/webapp/Download?colCode=IMX_CST_TOOL_NEW IMX CST TOOL] and unarchive it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
tar xf IMX_CST_TOOL_NEW.tgz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== imx-mkimage ==&lt;br /&gt;
&lt;br /&gt;
* Checkout the imx-mkimage:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
git clone -b lf-6.6.36-2.1.0 https://github.com/nxp-imx/imx-mkimage.git&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Latest Armadeus U-Boot ==&lt;br /&gt;
&lt;br /&gt;
* Make sure you have the latest Armadeus U-Boot installed on you OPOS93 SoM. It must have the &#039;&#039;&#039;ahab_status&#039;&#039;&#039; commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
BIOS&amp;gt; ahab_status&lt;br /&gt;
Lifecycle: 0x00000008, OEM Open&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the command is not available on your OPOS93 SoM, update to the latest Armadeus U-Boot.&lt;br /&gt;
&lt;br /&gt;
= Generating a PKI tree =&lt;br /&gt;
&lt;br /&gt;
* To generate your PKI tree, go to the CST TOOL directory and use the script &#039;&#039;&#039;ahab_pki_tree.sh&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ cd cst-3.4.1/&lt;br /&gt;
$ ./keys/ahab_pki_tree.sh&lt;br /&gt;
...&lt;br /&gt;
Do you want to use an existing CA key (y/n)?: n&lt;br /&gt;
Do you want to use Elliptic Curve Cryptography (y/n)?: y&lt;br /&gt;
Enter length for elliptic curve to be used for PKI tree:&lt;br /&gt;
Possible values p256, p384, p521:  p384&lt;br /&gt;
Enter the digest algorithm to use: sha384&lt;br /&gt;
Enter PKI tree duration (years): 5&lt;br /&gt;
Do you want the SRK certificates to have the CA flag set? (y/n)?: y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Generating SRK Table and SRK Hash =&lt;br /&gt;
&lt;br /&gt;
* Generate the SRK Table and SRK Hash with &#039;&#039;&#039;srktool&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ cd crts/&lt;br /&gt;
$ ../linux64/bin/srktool -a -d sha256 -s sha384 -t SRK_1_2_3_4_table.bin \&lt;br /&gt;
  -e SRK_1_2_3_4_fuse.bin -f 1 -c \&lt;br /&gt;
  SRK1_sha384_secp384r1_v3_usr_crt.pem,\&lt;br /&gt;
  SRK2_sha384_secp384r1_v3_usr_crt.pem,\&lt;br /&gt;
  SRK3_sha384_secp384r1_v3_usr_crt.pem,\&lt;br /&gt;
  SRK4_sha384_secp384r1_v3_usr_crt.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Regenerate the SRK HASH (SRK_1_2_3_4_fuse.bin) by using SHA256 with SRK_1_2_3_4_table.bin:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ openssl dgst -binary -sha256 SRK_1_2_3_4_table.bin &amp;gt; SRK_1_2_3_4_fuse.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Check if the hash in the SRK_1_2_3_4_fuse.bin is correct:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ hexdump -C SRK_1_2_3_4_fuse.bin&lt;br /&gt;
0000000 db2959f2 90dfc39c 53394566 e0b75829&lt;br /&gt;
0000020 85e6f3b1 af00983d e5e804fe 7a451024&lt;br /&gt;
&lt;br /&gt;
$ sha256sum SRK_1_2_3_4_table.bin&lt;br /&gt;
db2959f290dfc39c53394566e0b7582985e6f3b1af00983de5e804fe7a451024  SRK_1_2_3_4_table.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Signing the boot image =&lt;br /&gt;
&lt;br /&gt;
* From the images directory of the Armadeus BSP, copy the files needed to generate a boot image (SPL, U-Boot proper, ATF) into the i.MX93 directory of the imx-mkimage tool:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ cp &amp;lt;path to BSP Armadeus&amp;gt;/images/u-boot.bin &amp;lt;path to imx-mkimage&amp;gt;/iMX93/&lt;br /&gt;
$ cp &amp;lt;path to BSP Armadeus&amp;gt;/images/u-boot-spl.bin &amp;lt;path to imx-mkimage&amp;gt;/iMX93/&lt;br /&gt;
$ cp &amp;lt;path to BSP Armadeus&amp;gt;/images/bl31.bin &amp;lt;path to imx-mkimage&amp;gt;/iMX93/&lt;br /&gt;
$ cp &amp;lt;path to BSP Armadeus&amp;gt;/images/lpddr4* &amp;lt;path to imx-mkimage&amp;gt;/iMX93/&lt;br /&gt;
$ cp &amp;lt;path to BSP Armadeus&amp;gt;/images/ahab-container.img &amp;lt;path to imx-mkimage&amp;gt;/iMX93/mx93a1-ahab-container.img&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Signing ATF + U-Boot proper Image container ==&lt;br /&gt;
&lt;br /&gt;
* Generate the u-boot-atf-container.img file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ cd &amp;lt;path to imx-mkimage&amp;gt;&lt;br /&gt;
$ make SOC=iMX9 u-boot-atf-container.img&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Note the offset the imx-mkimage tool outputs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
CST: CONTAINER 0 offset: 0x0&lt;br /&gt;
CST: CONTAINER 0: Signature Block: offset is at 0x110&lt;br /&gt;
        Offsets =       0x0     0x110&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* A CSF description file is needed to sign the u-boot-atf-container.img file. You can download it [https://github.com/nxp-imx/uboot-imx/raw/refs/tags/lf-6.6.36-2.1.0/doc/imx/ahab/csf_examples/csf_uboot_atf.txt here]. In this file, update the offset you previously noted and the eventually the name and path of the keys:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
Source = &amp;quot;../crts/SRK1_sha384_secp384r1_v3_ca_crt.pem&amp;quot;&lt;br /&gt;
...&lt;br /&gt;
[Authenticate Data]&lt;br /&gt;
# Binary to be signed generated by mkimage&lt;br /&gt;
File = &amp;quot;u-boot-atf-container.img&amp;quot;&lt;br /&gt;
# Offsets = Container header  Signature block&lt;br /&gt;
Offsets   = 0x0               0x110&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Sign the u-boot-atf-container.img with the CST TOOL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ cd &amp;lt;path to CST TOOL&amp;gt;&lt;br /&gt;
$ ./linux64/bin/cst -i ~/Downloads/csf_uboot_atf.txt -o signed-u-boot-atf-container.img&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Replace the u-boot-atf-container.img file with the signed-u-boot-atf-container.img file in the iMX93 directory of the imx-mkimage tool:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ cp signed-u-boot-atf-container.img &amp;lt;path to imx-mkimage&amp;gt;/iMX93/u-boot-atf-container.img&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Signing the boot image ==&lt;br /&gt;
&lt;br /&gt;
* Generate the flash.bin file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ cd &amp;lt;path to imx-mkimage&amp;gt;&lt;br /&gt;
$ make SOC=iMX9 flash_singleboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Note the offset the imx-mkimage tool outputs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
CST: CONTAINER 0 offset: 0x400&lt;br /&gt;
CST: CONTAINER 0: Signature Block: offset is at 0x490&lt;br /&gt;
        Offsets =       0x400   0x490&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Another CSF description file is needed to sign the flash.bin file. You can download it [https://github.com/nxp-imx/uboot-imx/raw/refs/tags/lf-6.6.36-2.1.0/doc/imx/ahab/csf_examples/csf_boot_image.txt here]. In this file, update the offset you previously noted and the eventually the name of the keys:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
Source = &amp;quot;../crts/SRK1_sha384_secp384r1_v3_ca_crt.pem&amp;quot;&lt;br /&gt;
...&lt;br /&gt;
[Authenticate Data]&lt;br /&gt;
# Binary to be signed generated by mkimage&lt;br /&gt;
File = &amp;quot;/home/sszy/development/imx-mkimage/iMX93/flash.bin&amp;quot;&lt;br /&gt;
# Offsets = Container header  Signature block (printed out by mkimage)&lt;br /&gt;
Offsets   = 0x400             0x490&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Sign the flash.bin file with the CST TOOL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ cd &amp;lt;path to CST TOOL&amp;gt;&lt;br /&gt;
$ ./linux64/bin/cst -i ~/Downloads/csf_boot_image.txt -o signed-flash.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Flashing U-Boot =&lt;br /&gt;
&lt;br /&gt;
* On your computer, copy the signed boot image into the root directory of your tftp server:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
cp flash-signed.bin /tftproot/opos93-u-boot.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* On your OPOS93, update U-Boot as usual:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
BIOS&amp;gt; run update_uboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Burning SRK hash into the fuses =&lt;br /&gt;
&lt;br /&gt;
* On your host computer, dump the SRK hash:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ od -t x4 SRK_1_2_3_4_fuse.bin&lt;br /&gt;
0000000 db2959f2 90dfc39c 53394566 e0b75829&lt;br /&gt;
0000020 85e6f3b1 af00983d e5e804fe 7a451024&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* On the OPOS93, on U-Boot, burn the SRK hash into the fuses.&lt;br /&gt;
&#039;&#039;&#039;Obviously, don&#039;t burn these values but the ones the previous command outputs with your keys !&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
BIOS&amp;gt; fuse prog 16 0 0xdb2959f2&lt;br /&gt;
BIOS&amp;gt; fuse prog 16 1 0x90dfc39c&lt;br /&gt;
BIOS&amp;gt; fuse prog 16 2 0x53394566&lt;br /&gt;
BIOS&amp;gt; fuse prog 16 3 0xe0b75829&lt;br /&gt;
BIOS&amp;gt; fuse prog 16 4 0x85e6f3b1&lt;br /&gt;
BIOS&amp;gt; fuse prog 16 5 0xaf00983d&lt;br /&gt;
BIOS&amp;gt; fuse prog 16 6 0xe5e804fe&lt;br /&gt;
BIOS&amp;gt; fuse prog 16 7 0x7a451024&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Checking = &lt;br /&gt;
&lt;br /&gt;
* Power off / on the board, and stop the boot into U-Boot. Run the ahab_status command. If everything is ok, there should be no AHAB events:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
BIOS&amp;gt; ahab_status&lt;br /&gt;
Lifecycle: 0x00000008, OEM Open&lt;br /&gt;
&lt;br /&gt;
        No Events Found!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Closing the OPOS93 =&lt;br /&gt;
&lt;br /&gt;
{{Warning|Before closing your OPOS93, make sure everything is ok (double or triple check...), there is no AHAB events and you are able to boot a signed image. A missigned boot image on a closed OPOS93 will make your OPOS93 unrecoverable !}}&lt;br /&gt;
&lt;br /&gt;
* To close your OPOS93, run the &#039;&#039;&#039;ahab_close&#039;&#039;&#039; command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
BIOS&amp;gt; ahab_close&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Reboot and check with the &#039;&#039;&#039;ahab_status&#039;&#039;&#039; command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
BIOS&amp;gt; ahab_status&lt;br /&gt;
Lifecycle: 0x00000020, OEM Closed&lt;br /&gt;
&lt;br /&gt;
        No Events Found!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>SebastienSz</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=Secure_boot_on_OPOS93&amp;diff=15146</id>
		<title>Secure boot on OPOS93</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=Secure_boot_on_OPOS93&amp;diff=15146"/>
		<updated>2024-10-07T16:21:34Z</updated>

		<summary type="html">&lt;p&gt;SebastienSz: Created page with &amp;quot;= Introduction =  This document is a quick how-to boot a signed boot firmware on the OPOS93 SoM. It summarizes the documents provided by NXP:   * [https://www.nxp.com/doc/an12312 AN12312] * https://github.com/nxp-imx/uboot-imx/blob/lf-6.1.22-2.0.0/doc/imx/ahab/introduction_ahab.txt * https://github.com/nxp-imx/uboot-imx/blob/lf-6.6.36-2.1.0/doc/imx/ahab/guides/mx8ulp_9x_secure_boot.txt  = Requirements =  == IMX CST TOOL ==  * Download the [https://www.nxp.com/webapp/Down...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
This document is a quick how-to boot a signed boot firmware on the OPOS93 SoM. It summarizes the documents provided by NXP: &lt;br /&gt;
&lt;br /&gt;
* [https://www.nxp.com/doc/an12312 AN12312]&lt;br /&gt;
* https://github.com/nxp-imx/uboot-imx/blob/lf-6.1.22-2.0.0/doc/imx/ahab/introduction_ahab.txt&lt;br /&gt;
* https://github.com/nxp-imx/uboot-imx/blob/lf-6.6.36-2.1.0/doc/imx/ahab/guides/mx8ulp_9x_secure_boot.txt&lt;br /&gt;
&lt;br /&gt;
= Requirements =&lt;br /&gt;
&lt;br /&gt;
== IMX CST TOOL ==&lt;br /&gt;
&lt;br /&gt;
* Download the [https://www.nxp.com/webapp/Download?colCode=IMX_CST_TOOL_NEW IMX CST TOOL] and unarchive it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
tar xf IMX_CST_TOOL_NEW.tgz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== imx-mkimage ==&lt;br /&gt;
&lt;br /&gt;
* Checkout the imx-mkimage:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
git clone -b lf-6.6.36-2.1.0 https://github.com/nxp-imx/imx-mkimage.git&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Latest Armadeus U-Boot ==&lt;br /&gt;
&lt;br /&gt;
* Make sure you have the latest Armadeus U-Boot installed on you OPOS93 SoM. It must have the &#039;&#039;&#039;ahab_status&#039;&#039;&#039; commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
BIOS&amp;gt; ahab_status&lt;br /&gt;
Lifecycle: 0x00000008, OEM Open&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the command is not available on your OPOS93 SoM, update to the latest Armadeus U-Boot.&lt;br /&gt;
&lt;br /&gt;
= Generating a PKI tree =&lt;br /&gt;
&lt;br /&gt;
* To generate your PKI tree, go to the CST TOOL directory and use the script &#039;&#039;&#039;ahab_pki_tree.sh&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ cd cst-3.4.1/&lt;br /&gt;
$ ./keys/ahab_pki_tree.sh&lt;br /&gt;
...&lt;br /&gt;
Do you want to use an existing CA key (y/n)?: n&lt;br /&gt;
Do you want to use Elliptic Curve Cryptography (y/n)?: y&lt;br /&gt;
Enter length for elliptic curve to be used for PKI tree:&lt;br /&gt;
Possible values p256, p384, p521:  p384&lt;br /&gt;
Enter the digest algorithm to use: sha384&lt;br /&gt;
Enter PKI tree duration (years): 5&lt;br /&gt;
Do you want the SRK certificates to have the CA flag set? (y/n)?: y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Generating SRK Table and SRK Hash =&lt;br /&gt;
&lt;br /&gt;
* Generate the SRK Table and SRK Hash with &#039;&#039;&#039;srktool&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ cd crts/&lt;br /&gt;
$ ../linux64/bin/srktool -a -d sha256 -s sha384 -t SRK_1_2_3_4_table.bin \&lt;br /&gt;
  -e SRK_1_2_3_4_fuse.bin -f 1 -c \&lt;br /&gt;
  SRK1_sha384_secp384r1_v3_usr_crt.pem,\&lt;br /&gt;
  SRK2_sha384_secp384r1_v3_usr_crt.pem,\&lt;br /&gt;
  SRK3_sha384_secp384r1_v3_usr_crt.pem,\&lt;br /&gt;
  SRK4_sha384_secp384r1_v3_usr_crt.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Regenerate the SRK HASH (SRK_1_2_3_4_fuse.bin) by using SHA256 with SRK_1_2_3_4_table.bin:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ openssl dgst -binary -sha256 SRK_1_2_3_4_table.bin &amp;gt; SRK_1_2_3_4_fuse.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Check if the hash in the SRK_1_2_3_4_fuse.bin is correct:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ hexdump -C SRK_1_2_3_4_fuse.bin&lt;br /&gt;
0000000 db2959f2 90dfc39c 53394566 e0b75829&lt;br /&gt;
0000020 85e6f3b1 af00983d e5e804fe 7a451024&lt;br /&gt;
&lt;br /&gt;
$ sha256sum SRK_1_2_3_4_table.bin&lt;br /&gt;
db2959f290dfc39c53394566e0b7582985e6f3b1af00983de5e804fe7a451024  SRK_1_2_3_4_table.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Signing the boot image =&lt;br /&gt;
&lt;br /&gt;
* From the images directory of the Armadeus BSP, copy the files needed to generate a boot image (SPL, U-Boot proper, ATF) into the i.MX93 directory of the imx-mkimage tool:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ cp &amp;lt;path to BSP Armadeus&amp;gt;/images/u-boot.bin &amp;lt;path to imx-mkimage&amp;gt;/iMX93/&lt;br /&gt;
$ cp &amp;lt;path to BSP Armadeus&amp;gt;/images/u-boot-spl.bin &amp;lt;path to imx-mkimage&amp;gt;/iMX93/&lt;br /&gt;
$ cp &amp;lt;path to BSP Armadeus&amp;gt;/images/bl31.bin &amp;lt;path to imx-mkimage&amp;gt;/iMX93/&lt;br /&gt;
$ cp &amp;lt;path to BSP Armadeus&amp;gt;/images/lpddr4* &amp;lt;path to imx-mkimage&amp;gt;/iMX93/&lt;br /&gt;
$ cp &amp;lt;path to BSP Armadeus&amp;gt;/images/ahab-container.img &amp;lt;path to imx-mkimage&amp;gt;/iMX93/mx93a1-ahab-container.img&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Signing ATF + U-Boot proper Image container ==&lt;br /&gt;
&lt;br /&gt;
* Generate the u-boot-atf-container.img file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ cd &amp;lt;path to imx-mkimage&amp;gt;&lt;br /&gt;
$ make SOC=iMX9 u-boot-atf-container.img&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Note the offset the imx-mkimage tool outputs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
CST: CONTAINER 0 offset: 0x0&lt;br /&gt;
CST: CONTAINER 0: Signature Block: offset is at 0x110&lt;br /&gt;
        Offsets =       0x0     0x110&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* A CSF description file is needed to sign the u-boot-atf-container.img file. You can download one [https://github.com/nxp-imx/uboot-imx/raw/refs/tags/lf-6.6.36-2.1.0/doc/imx/ahab/csf_examples/csf_uboot_atf.txt here]. In this file, update the offset you previously noted and the eventually the name and path of the keys:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
Source = &amp;quot;../crts/SRK1_sha384_secp384r1_v3_ca_crt.pem&amp;quot;&lt;br /&gt;
...&lt;br /&gt;
[Authenticate Data]&lt;br /&gt;
# Binary to be signed generated by mkimage&lt;br /&gt;
File = &amp;quot;u-boot-atf-container.img&amp;quot;&lt;br /&gt;
# Offsets = Container header  Signature block&lt;br /&gt;
Offsets   = 0x0               0x110&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Sign the u-boot-atf-container.img with the CST TOOL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ cd &amp;lt;path to CST TOOL&amp;gt;&lt;br /&gt;
$ ./linux64/bin/cst -i ~/Downloads/csf_uboot_atf.txt -o signed-u-boot-atf-container.img&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Replace the u-boot-atf-container.img file with the signed-u-boot-atf-container.img file in the iMX93 directory of the imx-mkimage tool:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ cp signed-u-boot-atf-container.img &amp;lt;path to imx-mkimage&amp;gt;/iMX93/u-boot-atf-container.img&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Signing the boot image ==&lt;br /&gt;
&lt;br /&gt;
* Generate the flash.bin file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ cd &amp;lt;path to imx-mkimage&amp;gt;&lt;br /&gt;
$ make SOC=iMX9 flash_singleboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Note the offset the imx-mkimage tool outputs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
CST: CONTAINER 0 offset: 0x400&lt;br /&gt;
CST: CONTAINER 0: Signature Block: offset is at 0x490&lt;br /&gt;
        Offsets =       0x400   0x490&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Another CSF description file is needed to sign the flash.bin file. You can download it [https://github.com/nxp-imx/uboot-imx/raw/refs/tags/lf-6.6.36-2.1.0/doc/imx/ahab/csf_examples/csf_boot_image.txt here]. In this file, update the offset you previously noted and the eventually the name of the keys:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
Source = &amp;quot;../crts/SRK1_sha384_secp384r1_v3_ca_crt.pem&amp;quot;&lt;br /&gt;
...&lt;br /&gt;
[Authenticate Data]&lt;br /&gt;
# Binary to be signed generated by mkimage&lt;br /&gt;
File = &amp;quot;/home/sszy/development/imx-mkimage/iMX93/flash.bin&amp;quot;&lt;br /&gt;
# Offsets = Container header  Signature block (printed out by mkimage)&lt;br /&gt;
Offsets   = 0x400             0x490&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Sign the flash.bin file with the CST TOOL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ cd &amp;lt;path to CST TOOL&amp;gt;&lt;br /&gt;
$ ./linux64/bin/cst -i ~/Downloads/csf_boot_image.txt -o signed-flash.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Flashing U-Boot =&lt;br /&gt;
&lt;br /&gt;
* On your computer, copy the signed boot image into the root directory of your tftp server:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
cp flash-signed.bin /tftproot/opos93-u-boot.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* On your OPOS93, update U-Boot as usual:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
BIOS&amp;gt; run update_uboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Burning SRK hash into the fuses =&lt;br /&gt;
&lt;br /&gt;
* On your host computer, dump the SRK hash:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ od -t x4 SRK_1_2_3_4_fuse.bin&lt;br /&gt;
0000000 db2959f2 90dfc39c 53394566 e0b75829&lt;br /&gt;
0000020 85e6f3b1 af00983d e5e804fe 7a451024&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* On the OPOS93, on U-Boot, burn the SRK hash into the fuses.&lt;br /&gt;
&#039;&#039;&#039;Obviously, don&#039;t burn these values but the ones the previous command outputs with your keys !&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
BIOS&amp;gt; fuse prog 16 0 0xdb2959f2&lt;br /&gt;
BIOS&amp;gt; fuse prog 16 1 0x90dfc39c&lt;br /&gt;
BIOS&amp;gt; fuse prog 16 2 0x53394566&lt;br /&gt;
BIOS&amp;gt; fuse prog 16 3 0xe0b75829&lt;br /&gt;
BIOS&amp;gt; fuse prog 16 4 0x85e6f3b1&lt;br /&gt;
BIOS&amp;gt; fuse prog 16 5 0xaf00983d&lt;br /&gt;
BIOS&amp;gt; fuse prog 16 6 0xe5e804fe&lt;br /&gt;
BIOS&amp;gt; fuse prog 16 7 0x7a451024&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Checking = &lt;br /&gt;
&lt;br /&gt;
* Power off / on the board, and stop the boot into U-Boot. Run the ahab_status command. If everything is ok, there should be no AHAB events:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
BIOS&amp;gt; ahab_status&lt;br /&gt;
Lifecycle: 0x00000008, OEM Open&lt;br /&gt;
&lt;br /&gt;
        No Events Found!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Closing the OPOS93 =&lt;br /&gt;
&lt;br /&gt;
{{Warning|Before closing your OPOS93, make sure everything is ok (double or triple check...), there is no AHAB events and you are able to boot a signed image. A missigned boot image on a closed OPOS93 will make your OPOS93 unrecoverable !}}&lt;br /&gt;
&lt;br /&gt;
* To close your OPOS93, run the &#039;&#039;&#039;ahab_close&#039;&#039;&#039; command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
BIOS&amp;gt; ahab_close&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Reboot and check with the &#039;&#039;&#039;ahab_status&#039;&#039;&#039; command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
BIOS&amp;gt; ahab_status&lt;br /&gt;
Lifecycle: 0x00000020, OEM Closed&lt;br /&gt;
&lt;br /&gt;
        No Events Found!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>SebastienSz</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=OPOS93_PINOUT&amp;diff=15144</id>
		<title>OPOS93 PINOUT</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=OPOS93_PINOUT&amp;diff=15144"/>
		<updated>2024-02-08T09:59:08Z</updated>

		<summary type="html">&lt;p&gt;SebastienSz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: PINOUT]]&lt;br /&gt;
&lt;br /&gt;
= J1 connector =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-right: auto; border: none; text-align:center;&amp;quot;&lt;br /&gt;
! Comments !! GPIO !! i.MX93 pad name !!  OPOS93 pad name !! Pin !! Pin !! OPOS93 pad name !! i.MX93 pad name !! GPIO !! Comments&lt;br /&gt;
|-&lt;br /&gt;
|| ||  ||  || GND || 1 || 80 || GND ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| ||  ||  || POR_B || 2 || 79 || WDG || WDOG_ANY || GPIO1_IO15 || &lt;br /&gt;
|-&lt;br /&gt;
|| ||  ||  || ONOFF || 3 || 78 || GND ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| ||  ||  || GND || 4 || 77 || USB2_DN || USB2_DN ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || USB2_ID || USB2_ID || 5 || 76 || USB2_DP || USB2_DP ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  ||  || GND || 6 || 75 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| +1V8 ||  || ADC_IN2 || ADC_IN2 || 7 || 74 || ADC_IN0 || ADC_IN0 ||  || +1V8&lt;br /&gt;
|-&lt;br /&gt;
|| +1V8 ||  || ADC_IN3 || ADC_IN3 || 8 || 73 || ADC_IN1 || ADC_IN1 ||  || +1V8&lt;br /&gt;
|-&lt;br /&gt;
|| ||  ||  || GND || 9 || 72 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO1_IO02 || I2C2_SCL || I2C2_SCL || 10 || 71 || I2C1_SCL || I2C1_SCL || GPIO1_IO00 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO1_IO03 || I2C2_SDA || I2C2_SDA || 11 || 70 || I2C1_SDA || I2C1_SDA || GPIO1_IO01 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO1_IO06 || UART2_RXD || UART2_RXD || 12 || 69 || UART1_RXD || UART1_RXD || GPIO1_IO04 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO1_IO05 || UART2_TXD || UART2_TXD || 13 || 68 || UART1_RXD || UART1_TXD ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  ||  || GND || 14 || 67 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO1_IO12 || SAI1_TXC  || SAI1_TXC || 15 || 66 || PDM_CLK || PDM_CLK || GPIO1_IO08 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO1_IO11 || SAI1_TXFS || SAI1_TXFS || 16 || 65 || PDM_BIT_STREAM1 || PDM_BIT_STREAM1  || GPIO1_IO10 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO1_IO14 || SAI1_RXD0 || SAI1_RXD0 || 17 || 64 || PDM_BIT_STREAM0 || PDM_BIT_STREAM0 || GPIO1_IO09 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO1_IO13 || SAI1_TXD0 || SAI1_TXD0 || 18 || 63 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  ||  || GND || 19 || 62 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO00 || GPIO_IO00 || GPIO2_IO00 || 20 || 61 || GPIO2_IO02 || GPIO_IO02 || GPIO2_IO02 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO01 || GPIO_IO01 || GPIO2_IO01 || 21 || 60 || GPIO2_IO03 || GPIO_IO03 || GPIO2_IO03 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO04 || GPIO_IO04 || GPIO2_IO04 || 22 || 59 || GPIO2_IO06 || GPIO_IO06 || GPIO2_IO06 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO05 || GPIO_IO05 || GPIO2_IO05 || 23 || 58 || GPIO2_IO07 || GPIO_IO07 || GPIO2_IO07 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO08 || GPIO_IO08 || GPIO2_IO08 || 24 || 57 || GPIO2_IO10 || GPIO_IO10 || GPIO2_IO10 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO09 || GPIO_IO09 || GPIO2_IO09 || 25 || 56 || GPIO2_IO11 || GPIO_IO11 || GPIO2_IO11 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO12 || GPIO_IO12 || GPIO2_IO12 || 26 || 55 || GPIO2_IO14 || GPIO_IO14 || GPIO2_IO14 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO13 || GPIO_IO13 || GPIO2_IO13 || 27 || 54 || GPIO2_IO15 || GPIO_IO15 || GPIO2_IO15 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO16 || GPIO_IO16 || GPIO2_IO16 || 28 || 53 || GPIO2_IO18 || GPIO_IO18 || GPIO2_IO18 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO17 || GPIO_IO17 || GPIO2_IO17 || 29 || 52 || GPIO2_IO19 || GPIO_IO19 || GPIO2_IO19 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO20 || GPIO_IO20 || GPIO2_IO20 || 30 || 51 || GPIO2_IO22 || GPIO_IO22 || GPIO2_IO22 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO21 || GPIO_IO21 || GPIO2_IO21 || 31 || 50 || GPIO2_IO23 || GPIO_IO23 || GPIO2_IO23 ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  ||  || GND || 32 || 49 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_IO05 || SD2_DAT2 || SD2_DAT2 || 33 || 48 || GPIO2_24 || GPIO_IO24 || GPIO2_IO24 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_IO05 || SD2_DAT3 || SD2_DAT3 || 34 || 47 || GPIO2_25 || GPIO_IO25 || GPIO2_IO25 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_IO02 || SD2_CMD || SD2_CMD || 35 || 46 || GPIO2_26 || GPIO_IO26 || GPIO2_IO26 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_IO01 || SD2_CLK || SD2_CLK || 37 || 45 || GPIO2_27 || GPIO_IO27 || GPIO2_IO27 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_IO03 || SD2_DAT0 || SD2_DAT0 || 37 || 44 || GPIO2_28 || GPIO_IO28 || GPIO2_IO28 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_IO04 || SD2_DAT1 || SD2_DAT1 || 38 || 43 || GPIO2_29 || GPIO_IO29 || GPIO2_IO29 ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  ||  || GND || 38 || 43 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
||/!\ Do Not Use /!\ ||  ||  || 0V8_SOC || 40 || 41 || VDD_1V8 ||  ||  || 100mA maximum !&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= J2 connector =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-right: auto; border: none; text-align:center;&amp;quot;&lt;br /&gt;
! Comments !! GPIO !! i.MX93 pad name !!  OPOS93 pad name !! Pin !! Pin !! OPOS93 pad name !! i.MX93 pad name !! GPIO !! Comments&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 1 || 80 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || MIPI_DSI_D0N || 2 || 79 || LVDS_D0N || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || MIPI_DSI_D0P || 3 || 78 || LVDS_D0P || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || MIPI_DSI_D1N || 4 || 77 || LVDS_D1N || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || MIPI_DSI_D1P || 5 || 76 || LVDS_D1P || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 6 || 75 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || MIPI_DSI_CLKN || 7 || 74 || LVDS_CLKN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || MIPI_DSI_CLKP || 8 || 73 || LVDS_CLKP || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 9 || 72 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || MIPI_DSI_D2N || 10 || 71 || LVDS_D2N || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || MIPI_DSI_D2P || 11 || 70 || LVDS_D2P || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || MIPI_DSI_D3N || 12 || 69 || LVDS_D3N || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || MIPI_DSI_D3P || 13 || 68 || LVDS_D3P || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 14 || 67 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || NVCC_DRAM_1V1 || 15 || 66 || USB1_DP || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || USB1_ID || USB1_ID || 16 || 65 || USB1_DN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| 1V8 max || GPIO4_IO14 || ENET2_MDC || ENET2_MDC || 17 || 64 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| 1V8 max || GPIO4_IO15 || ENET2_MDIO || ENET2_MDIO || 18 || 63 || ENET2_RXD0 || ENET2_RD0 || GPIO4_IO24 || 1V8 max&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 19 || 62 || ENET2_RXD1 || ENET2_RD1 || GPIO4_IO25 || 1V8 max&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_CSI_D0N || MIPI_CSI_D0N || 20 || 61 || ENET2_RDX2 || ENET2_RD2 || GPIO4_IO26 || 1V8 max&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_CSI_D0P || MIPI_CSI_D0P || 21 || 60 || ENET2_RXD3 || ENET2_RD3 || GPIO4_IO27 || 1V8 max&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_CSI_D1N || MIPI_CSI_D1N || 22 || 59 || ENET2_RXEN || ENET2_RX_CTL || GPIO4_IO22 || 1V8 max&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_CSI D1P || MIPI_CSI_D1P || 23 || 58 || ENET2_RXC || ENET2_RXC || GPIO4_IO23 || 1V8 max&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_CSI_CLKN || MIPI_CSI_CLKN || 24 || 57 || ENET2_TXD0 || ENET2_TD0 || GPIO4_IO19 || 1V8 max&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_CSI_CLKP || MIPI_CSI_CLKP || 25 || 56 || ENET2_TXD1 || ENET2_TD1 || GPIO4_IO18 || 1V8 max&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 26 || 55 || ENET2_TXD2 || ENET2_TD2 || GPIO4_IO17 || 1V8 max&lt;br /&gt;
|-&lt;br /&gt;
|| || || || ETH1_TRXN3 || 27 || 54 || ENET2_TXD3 || ENET2_TD3 || GPIO4_IO16 || 1V8 max&lt;br /&gt;
|-&lt;br /&gt;
|| || || || ETH1_TRXP3 || 28 || 53 || ENET2_TXEN || ENET2_TX_CTL || GPIO4_IO20 || 1V8 max&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 29 || 52 || ENET2_TXC || ENET2_TXC || GPIO4_IO21 || 1V8 max&lt;br /&gt;
|-&lt;br /&gt;
|| || || || ETH1_TRXN2 || 30 || 51 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || ETH1_TRXP2 || 31 || 50 || VDD_3V3 || || || Output +3V3. Should be used to power external peripheral / buffer&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 32 || 49 || VDD_3V3 || || || Output +3V3. Should be used to power external peripheral / buffer&lt;br /&gt;
|-&lt;br /&gt;
|| || || || ETH1_TRXN1 || 33 || 48 || VIN || || || Input power supply +3V3.&lt;br /&gt;
|-&lt;br /&gt;
|| || || || ETH1_TRXP1 || 34 || 47 || VIN || || || Input power supply +3V3.&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 35 || 46 || VIN || || || Input power supply +3V3.&lt;br /&gt;
|-&lt;br /&gt;
|| || || || ETH1_TRXN0 || 36 || 45 || VIN || || || Input power supply +3V3.&lt;br /&gt;
|-&lt;br /&gt;
|| || || || ETH1_TRXP0 || 37 || 44 || VIN || || || Input power supply +3V3.&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 38 || 43 || VIN || || || Input power supply +3V3.&lt;br /&gt;
|-&lt;br /&gt;
|| Active high 3V3 || || || ENET1_ACT || 39 || 42 || VIN || || || Input power supply +3V3.&lt;br /&gt;
|-&lt;br /&gt;
|| Active high 3V3 || || || ENET1_100M || 40 || 41 || VIN || || || Input power supply +3V3.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SebastienSz</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=OPOS93_PINOUT&amp;diff=15143</id>
		<title>OPOS93 PINOUT</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=OPOS93_PINOUT&amp;diff=15143"/>
		<updated>2024-02-07T13:22:37Z</updated>

		<summary type="html">&lt;p&gt;SebastienSz: Created page with &amp;quot;Category: PINOUT  = J1 connector =  {| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-right: auto; border: none; text-align:center;&amp;quot; ! Comments !! GPIO !! i.MX93 pad n...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: PINOUT]]&lt;br /&gt;
&lt;br /&gt;
= J1 connector =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-right: auto; border: none; text-align:center;&amp;quot;&lt;br /&gt;
! Comments !! GPIO !! i.MX93 pad name !!  OPOS93 pad name !! Pin !! Pin !! OPOS93 pad name !! i.MX93 pad name !! GPIO !! Comments&lt;br /&gt;
|-&lt;br /&gt;
|| ||  ||  || GND || 1 || 80 || GND ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| ||  ||  || POR_B || 2 || 79 || WDG || WDOG_ANY || GPIO1_IO15 || &lt;br /&gt;
|-&lt;br /&gt;
|| ||  ||  || ONOFF || 3 || 78 || GND ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| ||  ||  || GND || 4 || 77 || USB2_DN || USB2_DN ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || USB2_ID || USB2_ID || 5 || 76 || USB2_DP || USB2_DP ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  ||  || GND || 6 || 75 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| +1V8 ||  || ADC_IN2 || ADC_IN2 || 7 || 74 || ADC_IN0 || ADC_IN0 ||  || +1V8&lt;br /&gt;
|-&lt;br /&gt;
|| +1V8 ||  || ADC_IN3 || ADC_IN3 || 8 || 73 || ADC_IN1 || ADC_IN1 ||  || +1V8&lt;br /&gt;
|-&lt;br /&gt;
|| ||  ||  || GND || 9 || 72 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO1_IO02 || I2C2_SCL || I2C2_SCL || 10 || 71 || I2C1_SCL || I2C1_SCL || GPIO1_IO00 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO1_IO03 || I2C2_SDA || I2C2_SDA || 11 || 70 || I2C1_SDA || I2C1_SDA || GPIO1_IO01 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO1_IO06 || UART2_RXD || UART2_RXD || 12 || 69 || UART1_RXD || UART1_RXD || GPIO1_IO04 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO1_IO05 || UART2_TXD || UART2_TXD || 13 || 68 || UART1_RXD || UART1_TXD ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  ||  || GND || 14 || 67 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO1_IO12 || SAI1_TXC  || SAI1_TXC || 15 || 66 || PDM_CLK || PDM_CLK || GPIO1_IO08 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO1_IO11 || SAI1_TXFS || SAI1_TXFS || 16 || 65 || PDM_BIT_STREAM1 || PDM_BIT_STREAM1  || GPIO1_IO10 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO1_IO14 || SAI1_RXD0 || SAI1_RXD0 || 17 || 64 || PDM_BIT_STREAM0 || PDM_BIT_STREAM0 || GPIO1_IO09 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO1_IO13 || SAI1_TXD0 || SAI1_TXD0 || 18 || 63 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  ||  || GND || 19 || 62 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO00 || GPIO_IO00 || GPIO2_IO00 || 20 || 61 || GPIO2_IO02 || GPIO_IO02 || GPIO2_IO02 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO01 || GPIO_IO01 || GPIO2_IO01 || 21 || 60 || GPIO2_IO03 || GPIO_IO03 || GPIO2_IO03 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO04 || GPIO_IO04 || GPIO2_IO04 || 22 || 59 || GPIO2_IO06 || GPIO_IO06 || GPIO2_IO06 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO05 || GPIO_IO05 || GPIO2_IO05 || 23 || 58 || GPIO2_IO07 || GPIO_IO07 || GPIO2_IO07 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO08 || GPIO_IO08 || GPIO2_IO08 || 24 || 57 || GPIO2_IO10 || GPIO_IO10 || GPIO2_IO10 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO09 || GPIO_IO09 || GPIO2_IO09 || 25 || 56 || GPIO2_IO11 || GPIO_IO11 || GPIO2_IO11 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO12 || GPIO_IO12 || GPIO2_IO12 || 26 || 55 || GPIO2_IO14 || GPIO_IO14 || GPIO2_IO14 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO13 || GPIO_IO13 || GPIO2_IO13 || 27 || 54 || GPIO2_IO15 || GPIO_IO15 || GPIO2_IO15 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO16 || GPIO_IO16 || GPIO2_IO16 || 28 || 53 || GPIO2_IO18 || GPIO_IO18 || GPIO2_IO18 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO17 || GPIO_IO17 || GPIO2_IO17 || 29 || 52 || GPIO2_IO19 || GPIO_IO19 || GPIO2_IO19 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO20 || GPIO_IO20 || GPIO2_IO20 || 30 || 51 || GPIO2_IO22 || GPIO_IO22 || GPIO2_IO22 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO21 || GPIO_IO21 || GPIO2_IO21 || 31 || 50 || GPIO2_IO23 || GPIO_IO23 || GPIO2_IO23 ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  ||  || GND || 32 || 49 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_IO05 || SD2_DAT2 || SD2_DAT2 || 33 || 48 || GPIO2_24 || GPIO_IO24 || GPIO2_24 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_IO05 || SD2_DAT3 || SD2_DAT3 || 34 || 47 || GPIO2_25 || GPIO_IO25 || GPIO2_25 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_IO02 || SD2_CMD || SD2_CMD || 35 || 46 || GPIO2_26 || GPIO_IO26 || GPIO2_26 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_IO01 || SD2_CLK || SD2_CLK || 37 || 45 || GPIO2_27 || GPIO_IO27 || GPIO2_27 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_IO03 || SD2_DAT0 || SD2_DAT0 || 37 || 44 || GPIO2_28 || GPIO_IO28 || GPIO2_28 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_IO04 || SD2_DAT1 || SD2_DAT1 || 38 || 43 || GPIO2_29 || GPIO_IO29 || GPIO2_29 ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  ||  || GND || 38 || 43 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
||/!\ Do Not Use /!\ ||  ||  || 0V8_SOC || 40 || 41 || VDD_1V8 ||  ||  || 100mA maximum !&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= J2 connector =&lt;br /&gt;
&lt;br /&gt;
TBD&lt;/div&gt;</summary>
		<author><name>SebastienSz</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=Santek_ST070015&amp;diff=15132</id>
		<title>Santek ST070015</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=Santek_ST070015&amp;diff=15132"/>
		<updated>2023-02-17T08:53:36Z</updated>

		<summary type="html">&lt;p&gt;SebastienSz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
800x480 7&amp;quot; TFT LCD, proposed as default LCD module on [[APF27Dev]] / [[APF28Dev]] / [[APF51Dev]] / [[APF6Dev]] / [[OPOS6UL]], since start of year 2014.&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
{{Note| &#039;&#039;&#039;The Santek ST070015 replaces the [[Chimei_LW700|LW700_adapt]] board.&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
This adapter board allows you to connect a [http://www.armadeus.com/english/products-peripherals-st0700_adapt.html LCD] to your DevFull.&amp;lt;br&amp;gt;&lt;br /&gt;
The following table summarizes the possibilities to connect the LQW700AT and the Touchscreen to your development board:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;Connection table&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039; &#039;&#039;&#039; || &#039;&#039;&#039;OPOS6ULDEV&#039;&#039;&#039; &lt;br /&gt;
|----------------&lt;br /&gt;
| &#039;&#039;&#039;TFT usage&#039;&#039;&#039; || flat cable (1) connected between TFT_J21 of the OPOS6ULDev and X5 of the LCD_Adapt [[Image:ST0700_Adapt_to_OPOS6ULDev.jpg|Connection between OPOS6ULDev and ST070015_Adapt]]&lt;br /&gt;
|----------------&lt;br /&gt;
| &#039;&#039;&#039;Touchscreen usage&#039;&#039;&#039; || All touchscreen signal are provided by main flat cable.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://www.armadeus.com/english/products-peripherals-st0700_adapt.html Description of armadeus ST070015_adapt]&lt;/div&gt;</summary>
		<author><name>SebastienSz</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=OPOS8MM_PINOUT&amp;diff=15048</id>
		<title>OPOS8MM PINOUT</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=OPOS8MM_PINOUT&amp;diff=15048"/>
		<updated>2021-12-09T14:04:21Z</updated>

		<summary type="html">&lt;p&gt;SebastienSz: /* J2 connector */ Fix GPIOs on pin 49 and 48&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: PINOUT]]&lt;br /&gt;
&lt;br /&gt;
= J2 connector =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-right: auto; border: none; text-align:center;&amp;quot;&lt;br /&gt;
! Comments !! GPIO !! i.MX8MM pad name !!  OPOS8MM pad name !! Pin !! Pin !! OPOS8MM pad name !! i.MX8MM pad name !! GPIO !! Comments&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_DSI_D0_N || DSI_D0_N || 1 || 70 || ECSPI1_MOSI || ECSPI1_MOSI || GPIO5_IO07 || &lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_DSI_D0_P || DSI_D0_P || 2 || 69 || ECSPI1_MISO || ECSPI1_MISO || GPIO5_IO08 || &lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_DSI_D1_N || DSI_D1_N || 3 || 68 || ECSPI1_SCLK || ECSPI1_SCLK || GPIO5_IO06 || &lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_DSI_D1_P || DSI_D1_P || 4 || 67 || ECSPI1_SS0 || ECSPI1_SS0 || GPIO5_IO09 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 5 || 66 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_DSI_CLK_N || DSI_CLK_N || 6 || 65 || ECSPI2_MOSI || ECSPI2_MOSI || GPIO5_IO11 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_DSI_CLK_P || DSI_CLK_P || 7 || 64 || ECSPI2_MISO || ECSPI2_MISO || GPIO5_IO12 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 8 || 63 || ECSPI2_SCLK || ECSPI2_SCLK || GPIO5_IO10 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_DSI_D2_N || DSI_D2_N || 9 || 62 || ECSPI2_SS0 || ECSPI2_SS0 || GPIO5_IO13 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_DSI_D2_P || DSI_D2_P || 10 || 61 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIP_DSI_D3_N || DSI_D3_N || 11 || 60 || ECSPI3_MOSI || UART1_TXD || GPIO5_IO23 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_DSI_D3_P || DSI_D3_P || 12 || 59 || ECSPI3_MISO || UART2_RXD || GPIO5_IO24 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 13 || 58 || ECSPI3_SCLK || UART1_RXD || GPIO5_IO22 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_CSI_D0_N || CSI_D0_N || 14 || 57 || ECSPI3_SS0 || UART2_TXD || GPIO5_IO25 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_CSI_D0_P || CSI_D0_P || 15 || 56 || I2C3_SDA || I2C3_SDA || GPIO5_IO19 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_CSI_D1_N || CSI_D1_N || 16 || 55 || I2C3_SCL || I2C3_SCL || GPIO5_IO18 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_CSI_D1_P || CS_D1_P || 17 || 54 || I2C2_SDA || I2C2_SDA || GPIO5_IO17 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 18 || 53 || I2C2_SCL || I2C2_SCL || GPIO5_IO16 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_CSI_CLK_P || CSI_CLK_P || 19 || 52 || I2C4_SDA || I2C4_SDA || GPIO5_IO21 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPICSI_CLK_N || CSI_CLK_N || 20 || 51 || I2C4_SCL || I2C4_SCL || GPIO5_IO20 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 21 || 50 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_CSI_D2_N || CSI_D2_N || 22 || 49 || UART3_TXD || UART3_TXD || GPIO5_IO27 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_CSI_D2_P || CSI_D2_P || 23 || 48 || UART3_RXD || UART3_RXD || GPIO5_IO26 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_CSI_D3_N || CSI_D3_N || 24 || style=&amp;quot;background: yellow;&amp;quot; | 47 || style=&amp;quot;background: yellow;&amp;quot; | UART4_TXD || style=&amp;quot;background: yellow;&amp;quot; | UART4_TXD || style=&amp;quot;background: yellow;&amp;quot; | GPIO5_IO29 || style=&amp;quot;background: yellow;&amp;quot; rowspan=&amp;quot;2&amp;quot; | Default debug UART in Armadeus BSP.&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_CSI_D3_P || CSI_D3_P || 25 || style=&amp;quot;background: yellow;&amp;quot; | 46 || style=&amp;quot;background: yellow;&amp;quot; | UART4_RXD || style=&amp;quot;background: yellow;&amp;quot; | UART4_RXD || style=&amp;quot;background: yellow;&amp;quot; | GPIO5_IO28&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 26 || 45 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || PCIE_RXN_N || PCIE_RXN_N || 27 || 44 || USB1_DN || USB1_DN ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || PCIE_RXN_P || PCIE_RXN_P || 28 || 43 || USB1_DP || USB1_DP ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 29 || 42 || USB1_ID || USB1_ID ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || PCIE_TXN_N || PCIE_TXN_N || 30 || 41 || USB_VBUS || USB{1,2}_VBUS ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || PCIE_TXN_P || PCIE_TXN_P || 31 || 40 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 32 || 39 || USB2_DN || USB2_DN ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || PCIE_CLK_N || PCIE_CLK_N || 33 || 38 || USB2_DP || USB2_DP ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || PCIE_CLK_P || PCIE_CLK_P || 34 || 37 || USB2_ID || USB2_ID ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 35 || 36 || RTC_VDD ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= J4 connector =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-right: auto; border: none; text-align:center;&amp;quot;&lt;br /&gt;
! Comments !! GPIO !! i.MX8MM pad name !!  OPOS8MM pad name !! Pin !! Pin !! OPOS8MM pad name !! i.MX8MM pad name !! GPIO !! Comments&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || VIN || 1 || 70 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || VIN || 2 || 69 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || VIN || 3 || 68 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || VIN || 4 || 67 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || VDD_3V3 || 5 || 66 || NVCC_SNVS_1V8 ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || ONOFF || ONOFF || 6 || 65 || SYS_RST_B ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 7 || 64 || GND ||  || ||&lt;br /&gt;
|- style=&amp;quot;background: yellow;&amp;quot;&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot; | Not available on OPOS8MM SoM with Bluetooth chip. || GPIO5_IO00 || SAI3_TXC || UART2_TX || 8 || 63 || UART2_RTS || SAI3_RXD || GPIO4_IO30 || rowspan=&amp;quot;2&amp;quot; | Not available on OPOS8MM SoM with Bluetooth chip.&lt;br /&gt;
|- style=&amp;quot;background: yellow;&amp;quot;&lt;br /&gt;
|| GPIO4_IO31 || SAI3_TXFS || UART2_RX || 9 || 62 || UART2_CTS || SAI3_RXC || GPIO4_IO29&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO4_IO21 || SAI2_RXFS || UART1_TX || 10 || 61 || GPIO1_15 || GPIO1_15 || GPIO1_15 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO4_IO22 || SAI2_RXC || UART1_RX || 11 || 60 || GPIO1_14 || GPIO1_14 || GPIO1_14 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO4_IO23 || SAI2_RXD0 || UART1_RTS || 12 || 59 || GPIO1_13 || GPIO1_13 || GPIO1_13 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO4_IO24 || SAI2_TXFS || UART1_CTS || 13 || 58 || GPIO1_12 || GPIO1_12 || GPIO1_12 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_IO05 || SPDIF_EXT_CLK || SPDIF_EXT_CLK || 14 || 57 || GPIO1_11 || GPIO1_11 || GPIO1_11 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_IO03 || SPDIF_TX || SPDIF_TX || 15 || 56 || GPIO1_10 || GPIO1_10 || GPIO1_10 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_IO04 || SPDIF_RX || SPDIF_RX || 16 || 55 || GPIO1_09 || GPIO1_09 || GPIO1_09 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_IO24 || SAI5_RXD3 || SAI5_RXD3 || 17 || 54 || GPIO1_08 || GPIO1_08 || GPIO1_08 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_IO23 || SAI5_RXD2 || SAI5_RXD2 || 18 || 53 || GPIO1_07 || GPIO1_07 || GPIO1_07 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_IO22 || SAI5_RXD1 || SAI5_RXD1 || 19 || 52 || GPIO1_06 || GPIO1_06 || GPIO1_06 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_IO21 || SAI5_RXD0 || SAI5_RXD0 || 20 || 51 || GPIO1_05 || GPIO1_05 || GPIO1_05 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_IO20 || SAI5_RXC || SAI5_RXC || 21 || 50 || GPIO1_04 || GPIO1_04 || GPIO1_04 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_IO25 || SAI5_MCLK || SAI5_MCLK || 22 || 49 || GPIO1_01 || GPIO1_01 || GPIO1_01 ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || BOOT_MODE0 || BOOT_MODE0 || 23 || 48 || GPIO1_00 || GPIO1_00 || GPIO1_00 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO12 || SD2_CD_B || SD2_CD_B || 24 || 47 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO15 || SD2_DATA0 || SD2_DATA0 || 25 || 46 || ETH_TXRXM_D  || ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO16 || SD2_DATA1 || SD2_DATA1 || 26 || 45 || ETH_TXRXP_D ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO14 || SD2_CMD || SD2_CMD || 27 || 44 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || GND || 28 || 43 || ETH_TXRXM_C ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO13 || SD2_CLK || SD2_CLK || 29 || 42 || ETH_TXRXP_C ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || GND || 30 || 41 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO18 || SD2_DATA3 || SD2_DATA3 || 31 || 40 || ETH_TXRXM_B ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO17 || SD2_DATA2 || SD2_DATA2 || 32 || 39 || ETH_TXRXP_B ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || GND || 33 || 38 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || ETH_ACTIVITY || 34 || 37 || ETH_TXRXM_A ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || ETH_LINK# || 35 || 36 || ETH_TXRXP_A ||  ||  ||&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SebastienSz</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=OPOS8MM_PINOUT&amp;diff=15011</id>
		<title>OPOS8MM PINOUT</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=OPOS8MM_PINOUT&amp;diff=15011"/>
		<updated>2021-06-11T09:53:51Z</updated>

		<summary type="html">&lt;p&gt;SebastienSz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: PINOUT]]&lt;br /&gt;
&lt;br /&gt;
= J2 connector =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-right: auto; border: none; text-align:center;&amp;quot;&lt;br /&gt;
! Comments !! GPIO !! i.MX8MM pad name !!  OPOS8MM pad name !! Pin !! Pin !! OPOS8MM pad name !! i.MX8MM pad name !! GPIO !! Comments&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_DSI_D0_N || DSI_D0_N || 1 || 70 || ECSPI1_MOSI || ECSPI1_MOSI || GPIO5_IO07 || &lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_DSI_D0_P || DSI_D0_P || 2 || 69 || ECSPI1_MISO || ECSPI1_MISO || GPIO5_IO08 || &lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_DSI_D1_N || DSI_D1_N || 3 || 68 || ECSPI1_SCLK || ECSPI1_SCLK || GPIO5_IO06 || &lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_DSI_D1_P || DSI_D1_P || 4 || 67 || ECSPI1_SS0 || ECSPI1_SS0 || GPIO5_IO09 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 5 || 66 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_DSI_CLK_N || DSI_CLK_N || 6 || 65 || ECSPI2_MOSI || ECSPI2_MOSI || GPIO5_IO11 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_DSI_CLK_P || DSI_CLK_P || 7 || 64 || ECSPI2_MISO || ECSPI2_MISO || GPIO5_IO12 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 8 || 63 || ECSPI2_SCLK || ECSPI2_SCLK || GPIO5_IO10 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_DSI_D2_N || DSI_D2_N || 9 || 62 || ECSPI2_SS0 || ECSPI2_SS0 || GPIO5_IO13 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_DSI_D2_P || DSI_D2_P || 10 || 61 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIP_DSI_D3_N || DSI_D3_N || 11 || 60 || ECSPI3_MOSI || UART1_TXD || GPIO5_IO23 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_DSI_D3_P || DSI_D3_P || 12 || 59 || ECSPI3_MISO || UART2_RXD || GPIO5_IO24 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 13 || 58 || ECSPI3_SCLK || UART1_RXD || GPIO5_IO22 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_CSI_D0_N || CSI_D0_N || 14 || 57 || ECSPI3_SS0 || UART2_TXD || GPIO5_IO25 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_CSI_D0_P || CSI_D0_P || 15 || 56 || I2C3_SDA || I2C3_SDA || GPIO5_IO19 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_CSI_D1_N || CSI_D1_N || 16 || 55 || I2C3_SCL || I2C3_SCL || GPIO5_IO18 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_CSI_D1_P || CS_D1_P || 17 || 54 || I2C2_SDA || I2C2_SDA || GPIO5_IO17 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 18 || 53 || I2C2_SCL || I2C2_SCL || GPIO5_IO16 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_CSI_CLK_P || CSI_CLK_P || 19 || 52 || I2C4_SDA || I2C4_SDA || GPIO5_IO21 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPICSI_CLK_N || CSI_CLK_N || 20 || 51 || I2C4_SCL || I2C4_SCL || GPIO5_IO20 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 21 || 50 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_CSI_D2_N || CSI_D2_N || 22 || 49 || UART3_TXD || UART3_TXD || GPIO5_IO26 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_CSI_D2_P || CSI_D2_P || 23 || 48 || UART3_RXD || UART3_RXD || GPIO5_IO27 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_CSI_D3_N || CSI_D3_N || 24 || style=&amp;quot;background: yellow;&amp;quot; | 47 || style=&amp;quot;background: yellow;&amp;quot; | UART4_TXD || style=&amp;quot;background: yellow;&amp;quot; | UART4_TXD || style=&amp;quot;background: yellow;&amp;quot; | GPIO5_IO29 || style=&amp;quot;background: yellow;&amp;quot; rowspan=&amp;quot;2&amp;quot; | Default debug UART in Armadeus BSP.&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_CSI_D3_P || CSI_D3_P || 25 || style=&amp;quot;background: yellow;&amp;quot; | 46 || style=&amp;quot;background: yellow;&amp;quot; | UART4_RXD || style=&amp;quot;background: yellow;&amp;quot; | UART4_RXD || style=&amp;quot;background: yellow;&amp;quot; | GPIO5_IO28&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 26 || 45 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || PCIE_RXN_N || PCIE_RXN_N || 27 || 44 || USB1_DN || USB1_DN ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || PCIE_RXN_P || PCIE_RXN_P || 28 || 43 || USB1_DP || USB1_DP ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 29 || 42 || USB1_ID || USB1_ID ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || PCIE_TXN_N || PCIE_TXN_N || 30 || 41 || USB_VBUS || USB{1,2}_VBUS ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || PCIE_TXN_P || PCIE_TXN_P || 31 || 40 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 32 || 39 || USB2_DN || USB2_DN ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || PCIE_CLK_N || PCIE_CLK_N || 33 || 38 || USB2_DP || USB2_DP ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || PCIE_CLK_P || PCIE_CLK_P || 34 || 37 || USB2_ID || USB2_ID ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 35 || 36 || RTC_VDD ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= J4 connector =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-right: auto; border: none; text-align:center;&amp;quot;&lt;br /&gt;
! Comments !! GPIO !! i.MX8MM pad name !!  OPOS8MM pad name !! Pin !! Pin !! OPOS8MM pad name !! i.MX8MM pad name !! GPIO !! Comments&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || VIN || 1 || 70 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || VIN || 2 || 69 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || VIN || 3 || 68 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || VIN || 4 || 67 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || VDD_3V3 || 5 || 66 || NVCC_SNVS_1V8 ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || ONOFF || ONOFF || 6 || 65 || SYS_RST_B ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 7 || 64 || GND ||  || ||&lt;br /&gt;
|- style=&amp;quot;background: yellow;&amp;quot;&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot; | Not available on OPOS8MM SoM with Bluetooth chip. || GPIO5_IO00 || SAI3_TXC || UART2_TX || 8 || 63 || UART2_RTS || SAI3_RXD || GPIO4_IO30 || rowspan=&amp;quot;2&amp;quot; | Not available on OPOS8MM SoM with Bluetooth chip.&lt;br /&gt;
|- style=&amp;quot;background: yellow;&amp;quot;&lt;br /&gt;
|| GPIO4_IO31 || SAI3_TXFS || UART2_RX || 9 || 62 || UART2_CTS || SAI3_RXC || GPIO4_IO29&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO4_IO21 || SAI2_RXFS || UART1_TX || 10 || 61 || GPIO1_15 || GPIO1_15 || GPIO1_15 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO4_IO22 || SAI2_RXC || UART1_RX || 11 || 60 || GPIO1_14 || GPIO1_14 || GPIO1_14 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO4_IO23 || SAI2_RXD0 || UART1_RTS || 12 || 59 || GPIO1_13 || GPIO1_13 || GPIO1_13 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO4_IO24 || SAI2_TXFS || UART1_CTS || 13 || 58 || GPIO1_12 || GPIO1_12 || GPIO1_12 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_IO05 || SPDIF_EXT_CLK || SPDIF_EXT_CLK || 14 || 57 || GPIO1_11 || GPIO1_11 || GPIO1_11 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_IO03 || SPDIF_TX || SPDIF_TX || 15 || 56 || GPIO1_10 || GPIO1_10 || GPIO1_10 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_IO04 || SPDIF_RX || SPDIF_RX || 16 || 55 || GPIO1_09 || GPIO1_09 || GPIO1_09 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_IO24 || SAI5_RXD3 || SAI5_RXD3 || 17 || 54 || GPIO1_08 || GPIO1_08 || GPIO1_08 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_IO23 || SAI5_RXD2 || SAI5_RXD2 || 18 || 53 || GPIO1_07 || GPIO1_07 || GPIO1_07 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_IO22 || SAI5_RXD1 || SAI5_RXD1 || 19 || 52 || GPIO1_06 || GPIO1_06 || GPIO1_06 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_IO21 || SAI5_RXD0 || SAI5_RXD0 || 20 || 51 || GPIO1_05 || GPIO1_05 || GPIO1_05 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_IO20 || SAI5_RXC || SAI5_RXC || 21 || 50 || GPIO1_04 || GPIO1_04 || GPIO1_04 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_IO25 || SAI5_MCLK || SAI5_MCLK || 22 || 49 || GPIO1_01 || GPIO1_01 || GPIO1_01 ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || BOOT_MODE0 || BOOT_MODE0 || 23 || 48 || GPIO1_00 || GPIO1_00 || GPIO1_00 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO12 || SD2_CD_B || SD2_CD_B || 24 || 47 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO15 || SD2_DATA0 || SD2_DATA0 || 25 || 46 || ETH_TXRXM_D  || ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO16 || SD2_DATA1 || SD2_DATA1 || 26 || 45 || ETH_TXRXP_D ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO14 || SD2_CMD || SD2_CMD || 27 || 44 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || GND || 28 || 43 || ETH_TXRXM_C ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO13 || SD2_CLK || SD2_CLK || 29 || 42 || ETH_TXRXP_C ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || GND || 30 || 41 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO18 || SD2_DATA3 || SD2_DATA3 || 31 || 40 || ETH_TXRXM_B ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO17 || SD2_DATA2 || SD2_DATA2 || 32 || 39 || ETH_TXRXP_B ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || GND || 33 || 38 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || ETH_ACTIVITY || 34 || 37 || ETH_TXRXM_A ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || ETH_LINK# || 35 || 36 || ETH_TXRXP_A ||  ||  ||&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SebastienSz</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=OPOS8MP_PINOUT&amp;diff=14996</id>
		<title>OPOS8MP PINOUT</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=OPOS8MP_PINOUT&amp;diff=14996"/>
		<updated>2021-06-01T07:20:48Z</updated>

		<summary type="html">&lt;p&gt;SebastienSz: /* J4 connector */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= J3 connector =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-right: auto; border: none; text-align:center;&amp;quot;&lt;br /&gt;
! Comments !! GPIO !! i.MX8MP pad name !!  OPOS8MP pad name !! Pin !! Pin !! OPOS8MP pad name !! i.MX8MP pad name !! GPIO !! Comments&lt;br /&gt;
|-&lt;br /&gt;
|| || || || VIN || 1 || 120 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || VIN || 2 || 119 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 3 || 118 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 4 || 117 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || VDD_3V3 || 5 || 116 || SYS_RST_B || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || NVCC_SVNS_1V8 || 6 || 115 || UART2_TXD || UART2_TXD || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 7 || 114 || UART2_RXD || UART2_RXD || ||&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot; | Not available on OPOS8MP SoM with Bluetooth chip. || GPIO5_22 || UART1_RXD || UART1_RXD || 8 || 113 || UART4_RXD || UART4_RXD || GPIO5_28 || rowspan=&amp;quot;2&amp;quot; | Default debug UART in Armadeus BSP.&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO5_23 || UART4_TXD || UART4_TXD || 9 || 112 || UART4_TXD || UART4_TXD || GPIO5_29&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_26 || UART3_RXD || UART3_RXD || 10 || 111 || I2C2_SDA || I2C2_SDA || GPIO5_17 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_27 || UART3_TXD || UART3_TXD || 11 || 110 || I2C2_SCL || I2C2_SCL || GPIO5_16 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_19 || I2C3_SDA || I2C3_SDA || 12 || 109 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_18 || I2C3_SCL || I2C3_SCL || 13 || 108 || UART1_RTS || SAI2_RXD0 || GPIO4_23 || Not available on OPOS8MP SoM with Bluetooth chip.&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_21 || I2C4_SDA || I2C4_SDA || 14 || 107 || SAI2_RXFS || SAI2_RXFS || GPIO4_21 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_20 || I2C4_SCL || I2C4_SCL || 15 || 106 || SAI2_RXC || SAI2_RXC || GPIO4_22 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 16 || 105 || SAI2_TXD0 || SAI2_TXD0 || GPIO4_26 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO4_3 || SAI1_RXD1 || SAI1_RXD1 || 17 || 104 || UART1_CTS || SAI2_TXFS || GPIO4_24 || Not available on OPOS8MP SoM with Bluetooth chip.&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO4_2 || SAI1_RXD0 || SAI1_RXD0 || 18 || 103 || SAI2_TXC || SAI2_TXC || GPIO4_25 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO4_20 || SAI1_MCLK || SAI1_MCLK || 19 || 102 || SAI2_MCLK || SAI2_MCLK || GPIO4_27 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO4_18 || SAI1_TXD6 || SAI1_TXD6 || 20 || 101 || SAI3_RXD || SAI3_RXD || GPIO4_30 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO4_19 || SAI1_TXD7 || SAI1_TXD7 || 21 || 100 || SAI3_RXFS || SAI3_RXFS || GPIO4_28 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_24 || SAI5_RXD3 || SAI5_RXD3 || 22 || 99 || SAI3_RXC || SAI3_RXC || GPIO4_29 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_23 || SAI5_RXD2 || SAI5_RXD2 || 23 || 98 || SAI3_TXD || SAI3_TXD || GPIO5_1 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_22 || SAI5_RXD1 || SAI5_RXD1 || 24 || 97 || SAI3_TXFS || SAI3_TXFS || GPIO4_31 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_21 || SAI5_RXD0 || SAI5_RXD0 || 25 || 96 || SAI3_TXC || SAI3_TXC || GPIO5_0 || &lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_19 || SAI5_RXFS || SAI5_RXFS || 26 || 95 || SAI3_MCLK || SAI3_MCLK || GPIO5_2 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_20 || SAI5_RXC || SAI5_RXC || 27 || 94 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_25 || SAI5_MCLK || SAI5_MCLK || 28 || 93 || ECSPI2_SCLK || ECSPI2_SCLK || GPIO5_10 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_3 || SPDIF_TX || SPDIF_TX || 29 || 92 || ECSPI2_SS0 || ECSPI2_SCLK || GPIO5_13 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_4 || SPDIF_TX || SPDIF_TX || 30 || 91 || ECSPI2_MISO || ECSPI2_MISO || GPIO5_12 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_5 || SPDIF_EXT_CLK || SPDIF_EXT_CLK || 31 || 90 || ECSPI2_MOSI || ECSPI2_MOSI || GPIO5_11 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 32 || 89 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_6 || ECSPI1_SCLK || ECSPI1_SCLK || 33 || 88 || HDMI_TXC_N || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_9 || ECSPI1_SS0 || ECSPI1_SS0 || 34 || 87 || HDMI_TXC_P || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_12 || ECSPI1_MISO || ECSPI1_MISO || 35 || 86 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_11 || ECSPI1_MOSI || ECSPI1_MOSI || 36 || 85 || HDMI_TX0_N || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_12 || SD2_CD_B || SD2_CD_B || 37 || 84 || HDMI_TX0_P || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_15 || SD2_DAT0 || SD2_DAT0 || 38 || 83 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_16 || SD2_DAT1 || SD2_DAT1 || 39 || 82 || HDMI_TX1_N || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_14 || SD2_CMD || SD2_CMD || 40 || 81 || HDMI_TX1_P || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 41 || 80 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_13 || SD2_CLK || SD2_CLK || 42 || 79 || HDMI_CEC || HDMI_CEC || GPIO3_28 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 43 || 78 || HDMI_DDC_SCL || HDMI_DDC_SCL || GPIO3_26 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO_2_18 || SD2_DAT3 || SD2_DAT3 || 44 || 77 || HDMI_DDC_SDA || HDMI_DDC_SDA || GPIO3_27 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO_2_17 || SD2_DAT2 || SD2_DAT2 || 45 || 76 || HDMI_HDP || HDMI_HDP || GPIO3_26 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 46 || 75 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || ETH_QOS_TXRXP_A || 47 || 74 || ETH_TXRXP_A || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || ETH_QOS_TXRXM_A || 48 || 73 || ETH_TXRXM_A || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 49 || 72 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || ETH_QOS_TXRXP_B || 50 || 74 || ETH_TXRXP_B || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || ETH_QOS_TXRXM_B || 51 || 71 || ETH_TXRXM_B || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 52 || 69 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || ETH_QOS_TXRXP_C || 53 || 68 || ETH_TXRXP_B || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || ETH_QOS_TXRXM_C || 54 || 67 || ETH_TXRXM_B || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 55 || 66 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || ETH_QOS_TXRXP_D || 56 || 65 || ETH_TXRXP_C || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || ETH_QOS_TXRXM_D || 57 || 64 || ETH_TXRXM_C || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 58 || 63 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || ETH_QOS_ACTIVITY# || 59 || 62 || ETH_ACTIVITY# || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || ETH_QOS_LINK# || 60 || 61 || ETH_LINK# || || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= J4 connector =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-right: auto; border: none; text-align:center;&amp;quot;&lt;br /&gt;
! Comments !! GPIO !! i.MX8MP pad name !!  OPOS8MP pad name !! Pin !! Pin !! OPOS8MP pad name !! i.MX8MP pad name !! GPIO !! Comments&lt;br /&gt;
|-&lt;br /&gt;
|| || || USB1_RX_N || USB1_RX_N || 1 || 120 || GPIO1_IO15 || GPIO1_IO15 || GPIO1_15 || &lt;br /&gt;
|-&lt;br /&gt;
|| || || USB1_RX_P || USB1_RX_P || 2 || 119 || GPIO1_IO14 || GPIO1_IO14 || GPIO1_14 || &lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 3 || 118 || GPIO1_IO13 || GPIO1_IO13 || GPIO1_13 || &lt;br /&gt;
|-&lt;br /&gt;
|| || || USB1_TX_N || USB1_TX_N || 4 || 117 || GPIO1_IO12 || GPIO1_IO12 || GPIO1_12 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || USB1_TX_P || USB1_TX_P || 5 || 116 || GPIO1_IO11 || GPIO1_IO11 || GPIO1_11 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 6 || 115 || GPIO1_IO10 || GPIO1_IO10 || GPIO1_10 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || USB2_RX_N || USB2_RX_N || 7 || 114 || GPIO1_IO09 || GPIO1_IO09 || GPIO1_9 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || USB2_RX_P || USB2_RX_P || 8 || 113 || GPIO1_IO08 || GPIO1_IO08 || GPIO1_8 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 9 || 112 || GPIO1_IO07 || GPIO1_IO07 || GPIO1_7 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || USB2_TX_N || USB2_TX_N || 10 || 111 || GPIO1_IO06 || GPIO1_IO06 || GPIO1_6 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || USB2_TX_P || USB2_TX_P || 11 || 110 || GPIO1_IO05 || GPIO1_IO05 || GPIO1_5 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 12 || 109 || GPIO1_IO04 || GPIO1_IO04 || GPIO1_4 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || PCIE_RX_N || PCIE_RX_N || 13 || 108 || GPIO1_IO01 || GPIO1_IO01 || GPIO1_1 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || PCIE_RX_P || PCIE_RX_P || 14 || 107 || GPIO1_IO00 || GPIO1_IO00 || GPIO1_0 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 15 || 106 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || PCIE_TX_N || PCIE_TX_N || 16 || 105 || USB1_ID || USB1_ID || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || PCIE_TX_P || PCIE_TX_P || 17 || 104 || USB1_VBUS || USB1_VBUS || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 18 || 103 || USB1_DN || USB1_DN || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || PCIE_CLK_N || PCIE_CLK_N || 19 || 102 || USB1_DP || USB1_DP || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || PCIE_CLK_P || PCIE_CLK_P || 20 || 101 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 21 || 100 || USB2_ID || USB2_ID || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || DSI_DO_P || DSI_DO_P || 22 || 99 || USB2_VBUS || USB2_VBUS || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || DSI_DO_N || DSI_DO_N || 23 || 98 || USB2_DN || USB2_DN || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || DSI_D1_P || DSI_D1_P || 24 || 97 || USB2_DP || USB2_DP || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || DSI_D1_N || DSI_D1_N || 25 || 96 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 26 || 95 || BOOT_MODE0 || BOOT_MODE0 || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || DSI_CLK_P || DSI_CLK_P || 27 || 94 || JTAG_TDO || JTAG_TDO || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || DSI_CLK_N || DSI_CLK_N || 28 || 93 || JTAG_TMS || JTAG_TMS || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 29 || 92 || JTAG_TDI || JTAG_TDI || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || DSI_D2_P || DSI_D2_P || 30 || 91 || JTAG_TCK || JTAG_TCK || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || DSI_D2_N || DSI_D2_N || 31 || 90 || ONOFF || ONOFF || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || DSI_D3_P || DSI_D3_P || 32 || 89 || PMIC_ON_REQ || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || DSI_D3_N || DSI_D3_N || 33 || 38 || POR_B || POR_B ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 34 || 87 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || CSI2_D3_P || CSI2_D3_P || 35 || 86 || CSI1_D0_P || CSI1_D0_P || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || CSI2_D3_N || CSI2_D3_N || 36 || 85 || CSI1_D0_N || CSI1_D0_N || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || CSI2_D2_P || CSI2_D2_P || 37 || 84 || CSI1_D1_P || CSI1_D1_P || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || CSI2_D2_N || CSI2_D2_N || 38 || 83 || CSI1_D1_N || CSI1_D1_N || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 39 || 82 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || CSI2_CLK_P || CSI2_CLK_P || 40 || 81 || CSI1_CLK_P || CSI1_CLK_P || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || CSI2_CLK_N || CSI2_CLK_N || 41 || 80 || CSI1_CLK_N || CSI1_CLK_N || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 42 || 79 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || CSI2_D1_P || CSI2_D1_P || 43 || 78 || CSI1_D2_P || CSI1_D2_P || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || CSI2_D1_N || CSI2_D1_N || 44 || 77 || CSI1_D2_N || CSI1_D2_N || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || CSI2_D0_P || CSI2_D0_P || 45 || 76 || CSI1_D3_P || CSI1_D3_P || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || CSI2_D0_N || CSI2_D0_N || 46 || 75 || CSI1_D3_N || CSI1_D3_N || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 47 || 74 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || LVDS1_D0_P || LVDS1_D0_P || 48 || 73 || LVDS0_D0_P || LVDS0_D0_P || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || LVDS1_D0_N || LVDS1_D0_N || 49 || 73 || LVDS0_D0_N || LVDS0_D0_N || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || LVDS1_D1_P || LVDS1_D1_P || 50 || 71 || LVDS0_D1_P || LVDS0_D1_P || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || LVDS1_D1_N || LVDS1_D1_N || 51 || 70 || LVDS0_D1_N || LVDS0_D1_N || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 52 || 69 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || LVDS1_CLK_P || LVDS1_CLK_P || 53 || 68 || LVDS0_CLK_P || LVDS0_CLK_P || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || LVDS1_CLK_N || LVDS1_CLK_N || 54 || 67 || LVDS0_CLK_N || LVDS0_CLK_N || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 55 || 66 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || LVDS1_D2_P || LVDS1_D2_P || 56 || 65 || LVDS0_D2_P || LVDS0_D2_P || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || LVDS1_D2_N || LVDS1_D2_N || 57 || 64 || LVDS0_D2_N || LVDS0_D2_N || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || LVDS1_D3_P || LVDS1_D3_P || 58 || 63 || LVDS0_D3_P || LVDS0_D3_P || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || LVDS1_D3_N || LVDS1_D3_N || 59 || 62 || LVDS0_D3_N || LVDS0_D3_N || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 60 || 61 || GND || || ||&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SebastienSz</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=OPOS8MP_PINOUT&amp;diff=14995</id>
		<title>OPOS8MP PINOUT</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=OPOS8MP_PINOUT&amp;diff=14995"/>
		<updated>2021-06-01T07:19:48Z</updated>

		<summary type="html">&lt;p&gt;SebastienSz: /* J3 connector */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= J3 connector =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-right: auto; border: none; text-align:center;&amp;quot;&lt;br /&gt;
! Comments !! GPIO !! i.MX8MP pad name !!  OPOS8MP pad name !! Pin !! Pin !! OPOS8MP pad name !! i.MX8MP pad name !! GPIO !! Comments&lt;br /&gt;
|-&lt;br /&gt;
|| || || || VIN || 1 || 120 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || VIN || 2 || 119 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 3 || 118 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 4 || 117 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || VDD_3V3 || 5 || 116 || SYS_RST_B || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || NVCC_SVNS_1V8 || 6 || 115 || UART2_TXD || UART2_TXD || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 7 || 114 || UART2_RXD || UART2_RXD || ||&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot; | Not available on OPOS8MP SoM with Bluetooth chip. || GPIO5_22 || UART1_RXD || UART1_RXD || 8 || 113 || UART4_RXD || UART4_RXD || GPIO5_28 || rowspan=&amp;quot;2&amp;quot; | Default debug UART in Armadeus BSP.&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO5_23 || UART4_TXD || UART4_TXD || 9 || 112 || UART4_TXD || UART4_TXD || GPIO5_29&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_26 || UART3_RXD || UART3_RXD || 10 || 111 || I2C2_SDA || I2C2_SDA || GPIO5_17 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_27 || UART3_TXD || UART3_TXD || 11 || 110 || I2C2_SCL || I2C2_SCL || GPIO5_16 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_19 || I2C3_SDA || I2C3_SDA || 12 || 109 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_18 || I2C3_SCL || I2C3_SCL || 13 || 108 || UART1_RTS || SAI2_RXD0 || GPIO4_23 || Not available on OPOS8MP SoM with Bluetooth chip.&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_21 || I2C4_SDA || I2C4_SDA || 14 || 107 || SAI2_RXFS || SAI2_RXFS || GPIO4_21 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_20 || I2C4_SCL || I2C4_SCL || 15 || 106 || SAI2_RXC || SAI2_RXC || GPIO4_22 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 16 || 105 || SAI2_TXD0 || SAI2_TXD0 || GPIO4_26 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO4_3 || SAI1_RXD1 || SAI1_RXD1 || 17 || 104 || UART1_CTS || SAI2_TXFS || GPIO4_24 || Not available on OPOS8MP SoM with Bluetooth chip.&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO4_2 || SAI1_RXD0 || SAI1_RXD0 || 18 || 103 || SAI2_TXC || SAI2_TXC || GPIO4_25 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO4_20 || SAI1_MCLK || SAI1_MCLK || 19 || 102 || SAI2_MCLK || SAI2_MCLK || GPIO4_27 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO4_18 || SAI1_TXD6 || SAI1_TXD6 || 20 || 101 || SAI3_RXD || SAI3_RXD || GPIO4_30 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO4_19 || SAI1_TXD7 || SAI1_TXD7 || 21 || 100 || SAI3_RXFS || SAI3_RXFS || GPIO4_28 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_24 || SAI5_RXD3 || SAI5_RXD3 || 22 || 99 || SAI3_RXC || SAI3_RXC || GPIO4_29 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_23 || SAI5_RXD2 || SAI5_RXD2 || 23 || 98 || SAI3_TXD || SAI3_TXD || GPIO5_1 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_22 || SAI5_RXD1 || SAI5_RXD1 || 24 || 97 || SAI3_TXFS || SAI3_TXFS || GPIO4_31 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_21 || SAI5_RXD0 || SAI5_RXD0 || 25 || 96 || SAI3_TXC || SAI3_TXC || GPIO5_0 || &lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_19 || SAI5_RXFS || SAI5_RXFS || 26 || 95 || SAI3_MCLK || SAI3_MCLK || GPIO5_2 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_20 || SAI5_RXC || SAI5_RXC || 27 || 94 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_25 || SAI5_MCLK || SAI5_MCLK || 28 || 93 || ECSPI2_SCLK || ECSPI2_SCLK || GPIO5_10 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_3 || SPDIF_TX || SPDIF_TX || 29 || 92 || ECSPI2_SS0 || ECSPI2_SCLK || GPIO5_13 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_4 || SPDIF_TX || SPDIF_TX || 30 || 91 || ECSPI2_MISO || ECSPI2_MISO || GPIO5_12 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_5 || SPDIF_EXT_CLK || SPDIF_EXT_CLK || 31 || 90 || ECSPI2_MOSI || ECSPI2_MOSI || GPIO5_11 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 32 || 89 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_6 || ECSPI1_SCLK || ECSPI1_SCLK || 33 || 88 || HDMI_TXC_N || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_9 || ECSPI1_SS0 || ECSPI1_SS0 || 34 || 87 || HDMI_TXC_P || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_12 || ECSPI1_MISO || ECSPI1_MISO || 35 || 86 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_11 || ECSPI1_MOSI || ECSPI1_MOSI || 36 || 85 || HDMI_TX0_N || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_12 || SD2_CD_B || SD2_CD_B || 37 || 84 || HDMI_TX0_P || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_15 || SD2_DAT0 || SD2_DAT0 || 38 || 83 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_16 || SD2_DAT1 || SD2_DAT1 || 39 || 82 || HDMI_TX1_N || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_14 || SD2_CMD || SD2_CMD || 40 || 81 || HDMI_TX1_P || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 41 || 80 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_13 || SD2_CLK || SD2_CLK || 42 || 79 || HDMI_CEC || HDMI_CEC || GPIO3_28 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 43 || 78 || HDMI_DDC_SCL || HDMI_DDC_SCL || GPIO3_26 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO_2_18 || SD2_DAT3 || SD2_DAT3 || 44 || 77 || HDMI_DDC_SDA || HDMI_DDC_SDA || GPIO3_27 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO_2_17 || SD2_DAT2 || SD2_DAT2 || 45 || 76 || HDMI_HDP || HDMI_HDP || GPIO3_26 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 46 || 75 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || ETH_QOS_TXRXP_A || 47 || 74 || ETH_TXRXP_A || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || ETH_QOS_TXRXM_A || 48 || 73 || ETH_TXRXM_A || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 49 || 72 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || ETH_QOS_TXRXP_B || 50 || 74 || ETH_TXRXP_B || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || ETH_QOS_TXRXM_B || 51 || 71 || ETH_TXRXM_B || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 52 || 69 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || ETH_QOS_TXRXP_C || 53 || 68 || ETH_TXRXP_B || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || ETH_QOS_TXRXM_C || 54 || 67 || ETH_TXRXM_B || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 55 || 66 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || ETH_QOS_TXRXP_D || 56 || 65 || ETH_TXRXP_C || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || ETH_QOS_TXRXM_D || 57 || 64 || ETH_TXRXM_C || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 58 || 63 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || ETH_QOS_ACTIVITY# || 59 || 62 || ETH_ACTIVITY# || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || ETH_QOS_LINK# || 60 || 61 || ETH_LINK# || || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= J4 connector =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-right: auto; border: none; text-align:center;&amp;quot;&lt;br /&gt;
! Comments !! GPIO !! i.MX8MP pad name !!  OPOS8MP pad name !! Pin !! Pin !! OPOS8MP pad name !! i.MX8MP pad name !! GPIO !! Comments&lt;br /&gt;
|-&lt;br /&gt;
|| || || USB1_RX_N || USB1_RX_N || 1 || 120 || GPIO1_IO15 || GPIO1_IO15 || GPIO1_15 || &lt;br /&gt;
|-&lt;br /&gt;
|| || || USB1_RX_P || USB1_RX_P || 2 || 119 || GPIO1_IO14 || GPIO1_IO14 || GPIO1_14 || &lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 3 || 118 || GPIO1_IO13 || GPIO1_IO13 || GPIO1_13 || &lt;br /&gt;
|-&lt;br /&gt;
|| || || USB1_TX_N || USB1_TX_N || 4 || 117 || GPIO1_IO12 || GPIO1_IO12 || GPIO1_12 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || USB1_TX_P || USB1_TX_P || 5 || 116 || GPIO1_IO11 || GPIO1_IO11 || GPIO1_11 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 6 || 115 || GPIO1_IO10 || GPIO1_IO10 || GPIO1_10 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || USB2_RX_N || USB2_RX_N || 7 || 114 || GPIO1_IO09 || GPIO1_IO09 || GPIO1_9 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || USB2_RX_P || USB2_RX_P || 8 || 113 || GPIO1_IO08 || GPIO1_IO08 || GPIO1_8 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 9 || 112 || GPIO1_IO07 || GPIO1_IO07 || GPIO1_7 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || USB2_TX_N || USB2_TX_N || 10 || 111 || GPIO1_IO06 || GPIO1_IO06 || GPIO1_6 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || USB2_TX_P || USB2_TX_P || 11 || 110 || GPIO1_IO05 || GPIO1_IO05 || GPIO1_5 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 12 || 109 || GPIO1_IO04 || GPIO1_IO04 || GPIO1_4 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || PCIE_RX_N || PCIE_RX_N || 13 || 108 || GPIO1_IO01 || GPIO1_IO01 || GPIO1_1 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || PCIE_RX_P || PCIE_RX_P || 14 || 107 || GPIO1_IO00 || GPIO1_IO00 || GPIO1_0 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 15 || 106 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || PCIE_TX_N || PCIE_TX_N || 16 || 105 || USB1_ID || USB1_ID || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || PCIE_TX_P || PCIE_TX_P || 17 || 104 || USB1_VBUS || USB1_VBUS || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 18 || 103 || USB1_DN || USB1_DN || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || PCIE_CLK_N || PCIE_CLK_N || 19 || 102 || USB1_DP || USB1_DP || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || PCIE_CLK_P || PCIE_CLK_P || 20 || 101 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 21 || 100 || USB2_ID || USB2_ID || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || DSI_DO_P || DSI_DO_P || 22 || 99 || USB2_VBUS || USB2_VBUS || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || DSI_DO_N || DSI_DO_N || 23 || 98 || USB2_DN || USB2_DN || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || DSI_D1_P || DSI_D1_P || 24 || 97 || USB2_DP || USB2_DP || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || DSI_D1_N || DSI_D1_N || 25 || 96 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 26 || 95 || BOOT_MODE0 || BOOT_MODE0 || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || DSI_CLK_P || DSI_CLK_P || 27 || 94 || JTAG_TDO || JTAG_TDO || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || DSI_CLK_N || DSI_CLK_N || 28 || 93 || JTAG_TMS || JTAG_TMS || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 29 || 92 || JTAG_TDI || JTAG_TDI || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || DSI_D2_P || DSI_D2_P || 30 || 91 || JTAG_TCK || JTAG_TCK || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || DSI_D2_N || DSI_D2_N || 31 || 90 || ONOFF || ONOFF || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || DSI_D3_P || DSI_D3_P || 32 || 89 || PMIC_ON_REQ || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || DSI_D3_N || DSI_D3_N || 33 || 38 || POR_B || POR_B ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 34 || 87 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || CSI2_D3_P || CSI2_D3_P || 35 || 86 || CSI1_D0_P || CSI1_D0_P || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || CSI2_D3_N || CSI2_D3_N || 36 || 85 || CSI1_D0_N || CSI1_D0_N || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || CSI2_D2_P || CSI2_D2_P || 37 || 84 || CSI1_D1_P || CSI1_D1_P || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || CSI2_D2_N || CSI2_D2_N || 38 || 83 || CSI1_D1_N || CSI1_D1_N || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 39 || 82 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || CSI2_CLK_P || CSI2_CLK_P || 40 || 81 || CSI1_CLK_P || CSI1_CLK_P || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || CSI2_CLK_N || CSI2_CLK_N || 41 || 80 || CSI1_CLK_N || CSI1_CLK_N || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 42 || 79 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || CSI2_D1_P || CSI2_D1_P || 43 || 78 || CSI1_D2_P || CSI1_D2_P || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || CSI2_D1_N || CSI2_D1_N || 44 || 77 || CSI1_D2_N || CSI1_D2_N || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || CSI2_D0_P || CSI2_D0_P || 45 || 76 || CSI1_D3_P || CSI1_D3_P || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || CSI2_D0_N || CSI2_D0_N || 46 || 75 || CSI1_D3_N || CSI1_D3_N || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 47 || 74 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || LVDS1_D0_P || LVDS1_DO_P || 48 || 73 || LVDS0_D0_P || LVDS0_D0_P || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || LVDS1_D0_N || LVDS1_DO_N || 49 || 73 || LVDS0_D0_N || LVDS0_D0_N || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || LVDS1_D1_P || LVDS1_D1_P || 50 || 71 || LVDS0_D1_P || LVDS0_D1_P || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || LVDS1_D1_N || LVDS1_D1_N || 51 || 70 || LVDS0_D1_N || LVDS0_D1_N || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 52 || 69 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || LVDS1_CLK_P || LVDS1_CLK_P || 53 || 68 || LVDS0_CLK_P || LVDS0_CLK_P || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || LVDS1_CLK_N || LVDS1_CLK_N || 54 || 67 || LVDS0_CLK_N || LVDS0_CLK_N || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 55 || 66 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || LVDS1_D2_P || LVDS1_D2_P || 56 || 65 || LVDS0_D2_P || LVDS0_D2_P || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || LVDS1_D2_N || LVDS1_D2_N || 57 || 64 || LVDS0_D2_N || LVDS0_D2_N || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || LVDS1_D3_P || LVDS1_D3_P || 58 || 63 || LVDS0_D3_P || LVDS0_D3_P || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || LVDS1_D3_N || LVDS1_D3_N || 59 || 62 || LVDS0_D3_N || LVDS0_D3_N || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 60 || 61 || GND || || ||&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SebastienSz</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=OPOS8MP_PINOUT&amp;diff=14994</id>
		<title>OPOS8MP PINOUT</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=OPOS8MP_PINOUT&amp;diff=14994"/>
		<updated>2021-06-01T06:39:31Z</updated>

		<summary type="html">&lt;p&gt;SebastienSz: /* J4 connector */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= J3 connector =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-right: auto; border: none; text-align:center;&amp;quot;&lt;br /&gt;
! Comments !! GPIO !! i.MX8MP pad name !!  OPOS8MP pad name !! Pin !! Pin !! OPOS8MP pad name !! i.MX8MP pad name !! GPIO !! Comments&lt;br /&gt;
|-&lt;br /&gt;
|| || || || VIN || 1 || 120 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || VIN || 2 || 119 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 3 || 118 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 4 || 117 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || VDD_3V3 || 5 || 116 || SYS_RST_B || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || NVCC_SVNS_1V8 || 6 || 115 || UART2_TXD || UART2_TXD || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 7 || 114 || UART2_RXD || UART2_RXD || ||&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot; | Not available on OPOS8MP SoM with Bluetooth chip. || GPIO5_22 || UART1_RXD || UART1_RXD || 8 || 113 || UART4_RXD || UART4_RXD || GPIO5_28 || rowspan=&amp;quot;2&amp;quot; | Default debug UART in Armadeus BSP.&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO5_23 || UART1_TXD || UART1_TXD || 9 || 112 || UART1_TXD || UART1_TXD || GPIO5_29&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_26 || UART3_RXD || UART3_RXD || 10 || 111 || I2C2_SDA || I2C2_SDA || GPIO5_17 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_27 || UART3_TXD || UART3_TXD || 11 || 110 || I2C2_SCL || I2C2_SCL || GPIO5_16 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_19 || I2C3_SDA || I2C3_SDA || 12 || 109 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_18 || I2C3_SCL || I2C3_SCL || 13 || 108 || UART1_RTS || SAI2_RXD0 || GPIO4_23 || Not available on OPOS8MP SoM with Bluetooth chip.&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_21 || I2C4_SDA || I2C4_SDA || 14 || 107 || SAI2_RXFS || SAI2_RXFS || GPIO4_21 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_20 || I2C4_SCL || I2C4_SCL || 15 || 106 || SAI2_RXC || SAI2_RXC || GPIO4_22 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 16 || 105 || SAI2_TXD0 || SAI2_TXD0 || GPIO4_26 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO4_3 || SAI1_RXD1 || SAI1_RXD1 || 17 || 104 || UART1_CTS || SAI2_TXFS || GPIO4_24 || Not available on OPOS8MP SoM with Bluetooth chip.&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO4_2 || SAI1_RXD0 || SAI1_RXD0 || 18 || 103 || SAI2_TXC || SAI2_TXC || GPIO4_25 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO4_20 || SAI1_MCLK || SAI1_MCLK || 19 || 102 || SAI2_MCLK || SAI2_MCLK || GPIO4_27 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO4_18 || SAI1_TXD6 || SAI1_TXD6 || 20 || 101 || SAI3_RXD || SAI3_RXD || GPIO4_30 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO4_19 || SAI1_TXD7 || SAI1_TXD7 || 21 || 100 || SAI3_RXFS || SAI3_RXFS || GPIO4_28 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_24 || SAI5_RXD3 || SAI5_RXD3 || 22 || 99 || SAI3_RXC || SAI3_RXC || GPIO4_29 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_23 || SAI5_RXD2 || SAI5_RXD2 || 23 || 98 || SAI3_TXD || SAI3_TXD || GPIO5_1 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_22 || SAI5_RXD1 || SAI5_RXD1 || 24 || 97 || SAI3_TXFS || SAI3_TXFS || GPIO4_31 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_21 || SAI5_RXD0 || SAI5_RXD0 || 25 || 96 || SAI3_TXC || SAI3_TXC || GPIO5_0 || &lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_19 || SAI5_RXFS || SAI5_RXFS || 26 || 95 || SAI3_MCLK || SAI3_MCLK || GPIO5_2 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_20 || SAI5_RXC || SAI5_RXC || 27 || 94 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_25 || SAI5_MCLK || SAI5_MCLK || 28 || 93 || ECSPI2_SCLK || ECSPI2_SCLK || GPIO5_10 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_3 || SPDIF_TX || SPDIF_TX || 29 || 92 || ECSPI2_SS0 || ECSPI2_SCLK || GPIO5_13 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_4 || SPDIF_TX || SPDIF_TX || 30 || 91 || ECSPI2_MISO || ECSPI2_MISO || GPIO5_12 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_5 || SPDIF_EXT_CLK || SPDIF_EXT_CLK || 31 || 90 || ECSPI2_MOSI || ECSPI2_MOSI || GPIO5_11 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 32 || 89 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_6 || ECSPI1_SCLK || ECSPI1_SCLK || 33 || 88 || HDMI_TXC_N || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_9 || ECSPI1_SS0 || ECSPI1_SS0 || 34 || 87 || HDMI_TXC_P || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_12 || ECSPI1_MISO || ECSPI1_MISO || 35 || 86 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_11 || ECSPI1_MOSI || ECSPI1_MOSI || 36 || 85 || HDMI_TX0_N || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_12 || SD2_CD_B || SD2_CD_B || 37 || 84 || HDMI_TX0_P || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_15 || SD2_DAT0 || SD2_DAT0 || 38 || 83 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_16 || SD2_DAT1 || SD2_DAT1 || 39 || 82 || HDMI_TX1_N || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_14 || SD2_CMD || SD2_CMD || 40 || 81 || HDMI_TX1_P || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 41 || 80 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_13 || SD2_CLK || SD2_CLK || 42 || 79 || HDMI_CEC || HDMI_CEC || GPIO3_28 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 43 || 78 || HDMI_DDC_SCL || HDMI_DDC_SCL || GPIO3_26 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO_2_18 || SD2_DAT3 || SD2_DAT3 || 44 || 77 || HDMI_DDC_SDA || HDMI_DDC_SDA || GPIO3_27 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO_2_17 || SD2_DAT2 || SD2_DAT2 || 45 || 76 || HDMI_HDP || HDMI_HDP || GPIO3_26 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 46 || 75 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || ETH_QOS_TXRXP_A || 47 || 74 || ETH_TXRXP_A || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || ETH_QOS_TXRXM_A || 48 || 73 || ETH_TXRXM_A || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 49 || 72 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || ETH_QOS_TXRXP_B || 50 || 74 || ETH_TXRXP_B || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || ETH_QOS_TXRXM_B || 51 || 71 || ETH_TXRXM_B || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 52 || 69 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || ETH_QOS_TXRXP_C || 53 || 68 || ETH_TXRXP_B || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || ETH_QOS_TXRXM_C || 54 || 67 || ETH_TXRXM_B || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 55 || 66 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || ETH_QOS_TXRXP_D || 56 || 65 || ETH_TXRXP_C || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || ETH_QOS_TXRXM_D || 57 || 64 || ETH_TXRXM_C || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 58 || 63 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || ETH_QOS_ACTIVITY# || 59 || 62 || ETH_ACTIVITY# || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || ETH_QOS_LINK# || 60 || 61 || ETH_LINK# || || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= J4 connector =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-right: auto; border: none; text-align:center;&amp;quot;&lt;br /&gt;
! Comments !! GPIO !! i.MX8MP pad name !!  OPOS8MP pad name !! Pin !! Pin !! OPOS8MP pad name !! i.MX8MP pad name !! GPIO !! Comments&lt;br /&gt;
|-&lt;br /&gt;
|| || || USB1_RX_N || USB1_RX_N || 1 || 120 || GPIO1_IO15 || GPIO1_IO15 || GPIO1_15 || &lt;br /&gt;
|-&lt;br /&gt;
|| || || USB1_RX_P || USB1_RX_P || 2 || 119 || GPIO1_IO14 || GPIO1_IO14 || GPIO1_14 || &lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 3 || 118 || GPIO1_IO13 || GPIO1_IO13 || GPIO1_13 || &lt;br /&gt;
|-&lt;br /&gt;
|| || || USB1_TX_N || USB1_TX_N || 4 || 117 || GPIO1_IO12 || GPIO1_IO12 || GPIO1_12 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || USB1_TX_P || USB1_TX_P || 5 || 116 || GPIO1_IO11 || GPIO1_IO11 || GPIO1_11 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 6 || 115 || GPIO1_IO10 || GPIO1_IO10 || GPIO1_10 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || USB2_RX_N || USB2_RX_N || 7 || 114 || GPIO1_IO09 || GPIO1_IO09 || GPIO1_9 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || USB2_RX_P || USB2_RX_P || 8 || 113 || GPIO1_IO08 || GPIO1_IO08 || GPIO1_8 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 9 || 112 || GPIO1_IO07 || GPIO1_IO07 || GPIO1_7 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || USB2_TX_N || USB2_TX_N || 10 || 111 || GPIO1_IO06 || GPIO1_IO06 || GPIO1_6 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || USB2_TX_P || USB2_TX_P || 11 || 110 || GPIO1_IO05 || GPIO1_IO05 || GPIO1_5 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 12 || 109 || GPIO1_IO04 || GPIO1_IO04 || GPIO1_4 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || PCIE_RX_N || PCIE_RX_N || 13 || 108 || GPIO1_IO01 || GPIO1_IO01 || GPIO1_1 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || PCIE_RX_P || PCIE_RX_P || 14 || 107 || GPIO1_IO00 || GPIO1_IO00 || GPIO1_0 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 15 || 106 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || PCIE_TX_N || PCIE_TX_N || 16 || 105 || USB1_ID || USB1_ID || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || PCIE_TX_P || PCIE_TX_P || 17 || 104 || USB1_VBUS || USB1_VBUS || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 18 || 103 || USB1_DN || USB1_DN || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || PCIE_CLK_N || PCIE_CLK_N || 19 || 102 || USB1_DP || USB1_DP || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || PCIE_CLK_P || PCIE_CLK_P || 20 || 101 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 21 || 100 || USB2_ID || USB2_ID || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || DSI_DO_P || DSI_DO_P || 22 || 99 || USB2_VBUS || USB2_VBUS || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || DSI_DO_N || DSI_DO_N || 23 || 98 || USB2_DN || USB2_DN || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || DSI_D1_P || DSI_D1_P || 24 || 97 || USB2_DP || USB2_DP || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || DSI_D1_N || DSI_D1_N || 25 || 96 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 26 || 95 || BOOT_MODE0 || BOOT_MODE0 || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || DSI_CLK_P || DSI_CLK_P || 27 || 94 || JTAG_TDO || JTAG_TDO || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || DSI_CLK_N || DSI_CLK_N || 28 || 93 || JTAG_TMS || JTAG_TMS || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 29 || 92 || JTAG_TDI || JTAG_TDI || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || DSI_D2_P || DSI_D2_P || 30 || 91 || JTAG_TCK || JTAG_TCK || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || DSI_D2_N || DSI_D2_N || 31 || 90 || ONOFF || ONOFF || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || DSI_D3_P || DSI_D3_P || 32 || 89 || PMIC_ON_REQ || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || DSI_D3_N || DSI_D3_N || 33 || 38 || POR_B || POR_B ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 34 || 87 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || CSI2_D3_P || CSI2_D3_P || 35 || 86 || CSI1_D0_P || CSI1_D0_P || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || CSI2_D3_N || CSI2_D3_N || 36 || 85 || CSI1_D0_N || CSI1_D0_N || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || CSI2_D2_P || CSI2_D2_P || 37 || 84 || CSI1_D1_P || CSI1_D1_P || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || CSI2_D2_N || CSI2_D2_N || 38 || 83 || CSI1_D1_N || CSI1_D1_N || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 39 || 82 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || CSI2_CLK_P || CSI2_CLK_P || 40 || 81 || CSI1_CLK_P || CSI1_CLK_P || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || CSI2_CLK_N || CSI2_CLK_N || 41 || 80 || CSI1_CLK_N || CSI1_CLK_N || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 42 || 79 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || CSI2_D1_P || CSI2_D1_P || 43 || 78 || CSI1_D2_P || CSI1_D2_P || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || CSI2_D1_N || CSI2_D1_N || 44 || 77 || CSI1_D2_N || CSI1_D2_N || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || CSI2_D0_P || CSI2_D0_P || 45 || 76 || CSI1_D3_P || CSI1_D3_P || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || CSI2_D0_N || CSI2_D0_N || 46 || 75 || CSI1_D3_N || CSI1_D3_N || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 47 || 74 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || LVDS1_D0_P || LVDS1_DO_P || 48 || 73 || LVDS0_D0_P || LVDS0_D0_P || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || LVDS1_D0_N || LVDS1_DO_N || 49 || 73 || LVDS0_D0_N || LVDS0_D0_N || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || LVDS1_D1_P || LVDS1_D1_P || 50 || 71 || LVDS0_D1_P || LVDS0_D1_P || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || LVDS1_D1_N || LVDS1_D1_N || 51 || 70 || LVDS0_D1_N || LVDS0_D1_N || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 52 || 69 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || LVDS1_CLK_P || LVDS1_CLK_P || 53 || 68 || LVDS0_CLK_P || LVDS0_CLK_P || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || LVDS1_CLK_N || LVDS1_CLK_N || 54 || 67 || LVDS0_CLK_N || LVDS0_CLK_N || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 55 || 66 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || LVDS1_D2_P || LVDS1_D2_P || 56 || 65 || LVDS0_D2_P || LVDS0_D2_P || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || LVDS1_D2_N || LVDS1_D2_N || 57 || 64 || LVDS0_D2_N || LVDS0_D2_N || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || LVDS1_D3_P || LVDS1_D3_P || 58 || 63 || LVDS0_D3_P || LVDS0_D3_P || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || LVDS1_D3_N || LVDS1_D3_N || 59 || 62 || LVDS0_D3_N || LVDS0_D3_N || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 60 || 61 || GND || || ||&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SebastienSz</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=OPOS8MP_PINOUT&amp;diff=14993</id>
		<title>OPOS8MP PINOUT</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=OPOS8MP_PINOUT&amp;diff=14993"/>
		<updated>2021-05-31T16:02:30Z</updated>

		<summary type="html">&lt;p&gt;SebastienSz: Created page with &amp;quot;= J3 connector =  {| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-right: auto; border: none; text-align:center;&amp;quot; ! Comments !! GPIO !! i.MX8MP pad name !!  OPOS8MP pad n...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= J3 connector =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-right: auto; border: none; text-align:center;&amp;quot;&lt;br /&gt;
! Comments !! GPIO !! i.MX8MP pad name !!  OPOS8MP pad name !! Pin !! Pin !! OPOS8MP pad name !! i.MX8MP pad name !! GPIO !! Comments&lt;br /&gt;
|-&lt;br /&gt;
|| || || || VIN || 1 || 120 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || VIN || 2 || 119 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 3 || 118 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 4 || 117 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || VDD_3V3 || 5 || 116 || SYS_RST_B || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || NVCC_SVNS_1V8 || 6 || 115 || UART2_TXD || UART2_TXD || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 7 || 114 || UART2_RXD || UART2_RXD || ||&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot; | Not available on OPOS8MP SoM with Bluetooth chip. || GPIO5_22 || UART1_RXD || UART1_RXD || 8 || 113 || UART4_RXD || UART4_RXD || GPIO5_28 || rowspan=&amp;quot;2&amp;quot; | Default debug UART in Armadeus BSP.&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO5_23 || UART1_TXD || UART1_TXD || 9 || 112 || UART1_TXD || UART1_TXD || GPIO5_29&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_26 || UART3_RXD || UART3_RXD || 10 || 111 || I2C2_SDA || I2C2_SDA || GPIO5_17 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_27 || UART3_TXD || UART3_TXD || 11 || 110 || I2C2_SCL || I2C2_SCL || GPIO5_16 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_19 || I2C3_SDA || I2C3_SDA || 12 || 109 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_18 || I2C3_SCL || I2C3_SCL || 13 || 108 || UART1_RTS || SAI2_RXD0 || GPIO4_23 || Not available on OPOS8MP SoM with Bluetooth chip.&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_21 || I2C4_SDA || I2C4_SDA || 14 || 107 || SAI2_RXFS || SAI2_RXFS || GPIO4_21 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_20 || I2C4_SCL || I2C4_SCL || 15 || 106 || SAI2_RXC || SAI2_RXC || GPIO4_22 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 16 || 105 || SAI2_TXD0 || SAI2_TXD0 || GPIO4_26 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO4_3 || SAI1_RXD1 || SAI1_RXD1 || 17 || 104 || UART1_CTS || SAI2_TXFS || GPIO4_24 || Not available on OPOS8MP SoM with Bluetooth chip.&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO4_2 || SAI1_RXD0 || SAI1_RXD0 || 18 || 103 || SAI2_TXC || SAI2_TXC || GPIO4_25 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO4_20 || SAI1_MCLK || SAI1_MCLK || 19 || 102 || SAI2_MCLK || SAI2_MCLK || GPIO4_27 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO4_18 || SAI1_TXD6 || SAI1_TXD6 || 20 || 101 || SAI3_RXD || SAI3_RXD || GPIO4_30 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO4_19 || SAI1_TXD7 || SAI1_TXD7 || 21 || 100 || SAI3_RXFS || SAI3_RXFS || GPIO4_28 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_24 || SAI5_RXD3 || SAI5_RXD3 || 22 || 99 || SAI3_RXC || SAI3_RXC || GPIO4_29 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_23 || SAI5_RXD2 || SAI5_RXD2 || 23 || 98 || SAI3_TXD || SAI3_TXD || GPIO5_1 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_22 || SAI5_RXD1 || SAI5_RXD1 || 24 || 97 || SAI3_TXFS || SAI3_TXFS || GPIO4_31 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_21 || SAI5_RXD0 || SAI5_RXD0 || 25 || 96 || SAI3_TXC || SAI3_TXC || GPIO5_0 || &lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_19 || SAI5_RXFS || SAI5_RXFS || 26 || 95 || SAI3_MCLK || SAI3_MCLK || GPIO5_2 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_20 || SAI5_RXC || SAI5_RXC || 27 || 94 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_25 || SAI5_MCLK || SAI5_MCLK || 28 || 93 || ECSPI2_SCLK || ECSPI2_SCLK || GPIO5_10 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_3 || SPDIF_TX || SPDIF_TX || 29 || 92 || ECSPI2_SS0 || ECSPI2_SCLK || GPIO5_13 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_4 || SPDIF_TX || SPDIF_TX || 30 || 91 || ECSPI2_MISO || ECSPI2_MISO || GPIO5_12 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_5 || SPDIF_EXT_CLK || SPDIF_EXT_CLK || 31 || 90 || ECSPI2_MOSI || ECSPI2_MOSI || GPIO5_11 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 32 || 89 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_6 || ECSPI1_SCLK || ECSPI1_SCLK || 33 || 88 || HDMI_TXC_N || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_9 || ECSPI1_SS0 || ECSPI1_SS0 || 34 || 87 || HDMI_TXC_P || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_12 || ECSPI1_MISO || ECSPI1_MISO || 35 || 86 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_11 || ECSPI1_MOSI || ECSPI1_MOSI || 36 || 85 || HDMI_TX0_N || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_12 || SD2_CD_B || SD2_CD_B || 37 || 84 || HDMI_TX0_P || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_15 || SD2_DAT0 || SD2_DAT0 || 38 || 83 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_16 || SD2_DAT1 || SD2_DAT1 || 39 || 82 || HDMI_TX1_N || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_14 || SD2_CMD || SD2_CMD || 40 || 81 || HDMI_TX1_P || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 41 || 80 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_13 || SD2_CLK || SD2_CLK || 42 || 79 || HDMI_CEC || HDMI_CEC || GPIO3_28 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 43 || 78 || HDMI_DDC_SCL || HDMI_DDC_SCL || GPIO3_26 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO_2_18 || SD2_DAT3 || SD2_DAT3 || 44 || 77 || HDMI_DDC_SDA || HDMI_DDC_SDA || GPIO3_27 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO_2_17 || SD2_DAT2 || SD2_DAT2 || 45 || 76 || HDMI_HDP || HDMI_HDP || GPIO3_26 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 46 || 75 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || ETH_QOS_TXRXP_A || 47 || 74 || ETH_TXRXP_A || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || ETH_QOS_TXRXM_A || 48 || 73 || ETH_TXRXM_A || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 49 || 72 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || ETH_QOS_TXRXP_B || 50 || 74 || ETH_TXRXP_B || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || ETH_QOS_TXRXM_B || 51 || 71 || ETH_TXRXM_B || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 52 || 69 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || ETH_QOS_TXRXP_C || 53 || 68 || ETH_TXRXP_B || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || ETH_QOS_TXRXM_C || 54 || 67 || ETH_TXRXM_B || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 55 || 66 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || ETH_QOS_TXRXP_D || 56 || 65 || ETH_TXRXP_C || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || ETH_QOS_TXRXM_D || 57 || 64 || ETH_TXRXM_C || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 58 || 63 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || ETH_QOS_ACTIVITY# || 59 || 62 || ETH_ACTIVITY# || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || ETH_QOS_LINK# || 60 || 61 || ETH_LINK# || || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= J4 connector =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-right: auto; border: none; text-align:center;&amp;quot;&lt;br /&gt;
! Comments !! GPIO !! i.MX8MP pad name !!  OPOS8MP pad name !! Pin !! Pin !! OPOS8MP pad name !! i.MX8MP pad name !! GPIO !! Comments&lt;br /&gt;
|-&lt;br /&gt;
|| || || USB1_RX_N || USB1_RX_N || 1 || 120 || GPIO1_IO15 || GPIO1_IO15 || GPIO1_15 || &lt;br /&gt;
|-&lt;br /&gt;
|| || || USB1_RX_P || USB1_RX_P || 2 || 119 || GPIO1_IO14 || GPIO1_IO14 || GPIO1_14 || &lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 3 || 118 || GPIO1_IO13 || GPIO1_IO13 || GPIO1_13 || &lt;br /&gt;
|-&lt;br /&gt;
|| || || USB1_TX_N || USB1_TX_N || 4 || 117 || GPIO1_IO12 || GPIO1_IO12 || GPIO1_12 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || USB1_TX_P || USB1_TX_P || 5 || 116 || GPIO1_IO11 || GPIO1_IO11 || GPIO1_11 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 6 || 115 || GPIO1_IO10 || GPIO1_IO10 || GPIO1_10 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || USB2_RX_N || USB2_RX_N || 7 || 114 || GPIO1_IO09 || GPIO1_IO09 || GPIO1_9 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || USB2_RX_P || USB2_RX_P || 8 || 113 || GPIO1_IO08 || GPIO1_IO08 || GPIO1_8 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 9 || 112 || GPIO1_IO07 || GPIO1_IO07 || GPIO1_7 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || USB2_TX_N || USB2_TX_N || 10 || 111 || GPIO1_IO06 || GPIO1_IO06 || GPIO1_6 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || USB2_TX_P || USB2_TX_P || 11 || 110 || GPIO1_IO05 || GPIO1_IO05 || GPIO1_5 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 12 || 109 || GPIO1_IO04 || GPIO1_IO04 || GPIO1_4 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || PCIE_RX_N || PCIE_RX_N || 13 || 108 || GPIO1_IO01 || GPIO1_IO01 || GPIO1_1 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || PCIE_RX_P || PCIE_RX_P || 14 || 107 || GPIO1_IO00 || GPIO1_IO00 || GPIO1_0 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 15 || 106 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || PCIE_TX_N || PCIE_TX_N || 16 || 105 || USB1_ID || USB1_ID || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || PCIE_TX_P || PCIE_TX_P || 17 || 104 || USB1_VBUS || USB1_VBUS || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 18 || 103 || USB1_DN || USB1_DN || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || PCIE_CLK_N || PCIE_CLK_N || 19 || 102 || USB1_DP || USB1_DP || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || PCIE_CLK_P || PCIE_CLK_P || 20 || 101 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 21 || 100 || USB2_ID || USB2_ID || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || DSI_DO_P || DSI_DO_P || 22 || 99 || USB2_VBUS || USB2_VBUS || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || DSI_DO_N || DSI_DO_N || 23 || 98 || USB2_DN || USB2_DN || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || DSI_D1_P || DSI_D1_P || 24 || 97 || USB2_DP || USB2_DP || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || DSI_D1_N || DSI_D1_N || 25 || 96 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 26 || 95 || BOOT_MODE0 || BOOT_MODE0 || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || DSI_CLK_P || DSI_CLK_P || 27 || 94 || JTAG_TDO || JTAG_TDO || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || DSI_CLK_N || DSI_CLK_N || 28 || 93 || JTAG_TMS || JTAG_TMS || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 29 || 92 || JTAG_TDI || JTAG_TDI || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || DSI_D2_P || DSI_D2_P || 30 || 91 || JTAG_TCK || JTAG_TCK || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || DSI_D2_N || DSI_D2_N || 31 || 90 || ONOFF || ONOFF || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || DSI_D3_P || DSI_D3_P || 32 || 89 || PMIC_ON_REQ || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || DSI_D3_N || DSI_D3_N || 33 || 38 || POR_B || POR_B ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 34 || 87 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || CSI2_D3_P || CSI2_D3_P || 35 || 86 || CSI1_D0_P || CSI1_D0_P || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || CSI2_D3_N || CSI2_D3_N || 36 || 85 || CSI1_D0_N || CSI1_D0_N || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || CSI2_D2_P || CSI2_D2_P || 37 || 84 || CSI1_D1_P || CSI1_D1_P || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || CSI2_D2_N || CSI2_D2_N || 38 || 83 || CSI1_D1_N || CSI1_D1_N || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 39 || 82 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || CSI2_CLK_P || CSI2_CLK_P || 40 || 81 || CSI1_CLK_P || CSI1_CLK_P || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || CSI2_CLK_N || CSI2_CLK_N || 41 || 80 || CSI1_CLK_N || CSI1_CLK_N || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 42 || 79 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || CSI2_D1_P || CSI2_D1_P || 43 || 78 || CSI1_D2_P || CSI1_D2_P || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || CSI2_D1_N || CSI2_D1_N || 44 || 77 || CSI1_D2_N || CSI1_D2_N || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || CSI2_D0_P || CSI2_D0_P || 45 || 76 || CSI1_D3_P || CSI1_D3_P || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || CSI2_D0_N || CSI2_D0_N || 46 || 75 || CSI1_D3_N || CSI1_D3_N || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 47 || 74 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || LVDS1_DO_P || LVDS1_DO_P || 48 || 73 || LVDS0_DO_P || LVDS0_DO_P || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || LVDS1_DO_N || LVDS1_DO_N || 49 || 73 || LVDS0_DO_N || LVDS0_DO_N || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || LVDS1_D1_P || LVDS1_D1_P || 50 || 71 || LVDS0_D1_P || LVDS0_D1_P || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || LVDS1_D1_N || LVDS1_D1_N || 51 || 70 || LVDS0_D1_N || LVDS0_D1_N || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 52 || 69 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || LVDS1_CLK_P || LVDS1_CLK_P || 53 || 68 || LVDS0_CLK_P || LVDS0_CLK_P || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || LVDS1_CLK_N || LVDS1_CLK_N || 54 || 67 || LVDS0_CLK_N || LVDS0_CLK_N || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 55 || 66 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || LVDS1_D2_P || LVDS1_D2_P || 56 || 65 || LVDS0_D2_P || LVDS0_D2_P || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || LVDS1_D2_N || LVDS1_D2_N || 57 || 64 || LVDS0_D2_N || LVDS0_D2_N || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || LVDS1_D3_P || LVDS1_D3_P || 58 || 63 || LVDS0_D3_P || LVDS0_D3_P || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || LVDS1_D3_N || LVDS1_D3_N || 59 || 62 || LVDS0_D3_N || LVDS0_D3_N || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 60 || 61 || GND || || ||&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SebastienSz</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=U-Boot_UMS_on_APF_%26_OPOS&amp;diff=14991</id>
		<title>U-Boot UMS on APF &amp; OPOS</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=U-Boot_UMS_on_APF_%26_OPOS&amp;diff=14991"/>
		<updated>2021-05-21T13:23:30Z</updated>

		<summary type="html">&lt;p&gt;SebastienSz: /* Links */ add link the the OPOS8MM eMMC data partition page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page gather instructions for using U-Boot&#039;s USB Mass Storage gadget mode (or UMS) usage on [[APF6]] and [[OPOS6UL]](NANO). This mode allows you to flash rootfs images bigger than the available module RAM, ex: &amp;gt; 200MBytes on the [[OPOS6UL]](NANO). Indeed &#039;&#039;run update_rootfs&#039;&#039; script uses RAM to store images while uploading from TFTP, which can be short for big rootfs. UMS also allows you to backup your rootfs on your Host.&lt;br /&gt;
&lt;br /&gt;
* First, keep your USB debug cable and connect a second USB cable on [[APF6_Dev]] or [[OPOS6ULDev]]&#039;s OTG port. &lt;br /&gt;
* Under U-Boot type:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
BIOS&amp;gt; ums 0 mmc 0&lt;br /&gt;
UMS: disk start sector: 0x0, count: 0x760000&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* On your Host computer you should see the [[eMMC]] partition like a standard USB key.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ dmesg | tail&lt;br /&gt;
[...]&lt;br /&gt;
[26828.348088] sd 13:0:0:0: [sdc] Mode Sense: 0f 00 00 00&lt;br /&gt;
[26828.348395] sd 13:0:0:0: [sdc] Write cache: enabled, read cache: enabled, doesn&#039;t support DPO or FUA&lt;br /&gt;
[26828.354177]  sdc: sdc1 sdc2&lt;br /&gt;
[26828.356782] sd 13:0:0:0: [sdc] Attached SCSI disk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here the device is &#039;&#039;/dev/sdc&#039;&#039; and all partitions have been automounted by the Host:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
[26830.002168] EXT4-fs (sdc1): mounting ext2 file system using the ext4 subsystem&lt;br /&gt;
[26830.054358] EXT4-fs (sdc2): mounting ext2 file system using the ext4 subsystem&lt;br /&gt;
[26830.078638] EXT4-fs (sdc2): warning: mounting unchecked fs, running e2fsck is recommended&lt;br /&gt;
[26830.114382] EXT4-fs (sdc2): mounted filesystem without journal. Opts: (null)&lt;br /&gt;
[26830.135564] EXT4-fs (sdc1): warning: mounting unchecked fs, running e2fsck is recommended&lt;br /&gt;
[26830.268450] EXT4-fs (sdc1): mounted filesystem without journal. Opts: (null)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{Warning| Before doing the following procedure, be sure that your device name is correct. &#039;&#039;&#039;You can erase all your Host datas if you do it wrong !!!&#039;&#039;&#039;}}&lt;br /&gt;
* The rootfs is under the sdc2 and is named &amp;quot;ROOTFS&amp;quot;. On your debian/ubuntu Host it might be auto-mounted under &#039;&#039;/media/usb1&#039;&#039;, if no other USB key is present on system and if you activated auto-mounting.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ ls /media/usb1/&lt;br /&gt;
bin  boot  dev  etc  home  init  lib  lib32  linuxrc  lost+found  media  mnt  opt  proc  root  run  sbin  sys  tmp  usr  var&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To flash entire rootfs, first erase all files on this partition:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo umount /media/usb1            (if partition is auto-mounted)&lt;br /&gt;
$ sudo mkfs.ext4 -L ROOTFS -O ^64bit,^metadata_csum,uninit_bg /dev/sdc2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Update your rootfs==&lt;br /&gt;
* Then, you have 2 methods to update your rootfs:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! tar method !! dd method&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* Then mount it under an arbitrary directory:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo mkdir /tmp/rootfs&lt;br /&gt;
$ sudo mount /dev/sdc2 /tmp/rootfs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Untar the archive generated by your bsp (in &#039;&#039;buildroot/output/images/&#039;&#039;)&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ make shell_env&lt;br /&gt;
$ . armadeus_env.sh&lt;br /&gt;
$ sudo tar -xvf $ARMADEUS_ROOTFS_TAR -C /tmp/rootfs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* then umount the filesystem:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo umount /tmp/rootfs/&lt;br /&gt;
$ sync&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
* One alternative way to untaring is to use &#039;&#039;dd&#039;&#039;:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo dd if=/tftpboot/xxx-rootfs.ext4 of=/dev/sdc2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
(replace xxx with the name of your module)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Once finished, you can kill the U-Boot&#039;s USB gadget process with a Ctrl-C:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
BIOS&amp;gt; ums 0 mmc 0&lt;br /&gt;
UMS: disk start sector: 0x0, count: 0x760000&lt;br /&gt;
CTRL+C - Operation aborted&lt;br /&gt;
BIOS&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Backup your rootfs==&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo dd  if=/dev/sdc2 of=/home/xxx/rootfs_xxx.ext4       (takes time ;-) )&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* check if it succeed:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo mount -o loop /home/xxx/rootfs_xxx.ext4 /media/mmc/&lt;br /&gt;
$ ls /media/mmc/boot/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Troubleshots==&lt;br /&gt;
* UMS was reported not working on Windows 7/8 hosts with Virtual Box Ubuntu 15.04 emulated machines...&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* [[EMMC_OPOS6UL#User_Data_partition_layout|OPOS6UL eMMC Data partition]]&lt;br /&gt;
* [[EMMC_OPOS8MM#User_Data_partition_layout|OPOS8MM eMMC Data partition]]&lt;br /&gt;
&lt;br /&gt;
[[Category:U-Boot]]&lt;/div&gt;</summary>
		<author><name>SebastienSz</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=WPA_supplicant&amp;diff=14983</id>
		<title>WPA supplicant</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=WPA_supplicant&amp;diff=14983"/>
		<updated>2021-02-25T08:43:27Z</updated>

		<summary type="html">&lt;p&gt;SebastienSz: use -D nl80211 instead of wext&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;When dealing with &amp;quot;strong&amp;quot; encryption of Wi-Fi networks, you have to setup a WPA or WPA2 configuration.&lt;br /&gt;
To handle the requirements of these protocols during association, a userspace daemon is needed: it is called a &amp;quot;WPA supplicant&amp;quot;.&lt;br /&gt;
The most used one on Linux is &#039;&#039;wpa_supplicant&#039;&#039;; we will see here how to install and configure it.&lt;br /&gt;
&lt;br /&gt;
{{Note|&#039;&#039;wpa_supplicant&#039;&#039; is also able to handle WEP or unencrypted connections}}&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
* Done by default if your board supports Wi-Fi connectivity. Otherwise:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ make menuconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
Package Selection for the target  ---&amp;gt;&lt;br /&gt;
    Networking  ---&amp;gt;&lt;br /&gt;
        [*]   wpa_supplicant&lt;br /&gt;
        [ ]     Enable WPA with EAP&lt;br /&gt;
        [*]     Install wpa_cli binary&lt;br /&gt;
        [*]     Install wpa_passphrase binary&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EAP is only needed if you plan to use WPA in Enterprise mode == with a Radius server.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
&#039;&#039;wpa_supplicant&#039;&#039; needs a configuration file in &#039;&#039;/etc/wpa_supplicant.conf&#039;&#039;.&lt;br /&gt;
For your convience a generic &#039;&#039;/etc/wpa_supplicant.conf&#039;&#039; is already installed in the Armadeus BSP (releases &amp;gt; 5.2).&lt;br /&gt;
Here is an example (WPA pre-shared key (TKIP)):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel&lt;br /&gt;
update_config=1&lt;br /&gt;
network={&lt;br /&gt;
	ssid=&amp;quot;&#039;&#039;SSID&#039;&#039;&amp;quot;&lt;br /&gt;
	scan_ssid=1  # only if ssid is hidden&lt;br /&gt;
	proto=WPA&lt;br /&gt;
	key_mgmt=WPA-PSK&lt;br /&gt;
	pairwise=TKIP&lt;br /&gt;
	psk=&amp;quot;&#039;&#039;PASSPHRASE&#039;&#039;&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
You can adapt &#039;&#039;/etc/wpa_supplicant.conf&#039;&#039; manually.&lt;br /&gt;
* If your key needs to be encrypted, use the &#039;&#039;wpa_passphrase&#039;&#039; tool to add your network (SSID/PASSPHRASE) automatically:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # wpa_passphrase &amp;quot;mynetworkSSID&amp;quot; &amp;quot;mynetworkPASSPHRASE&amp;quot; &amp;gt;&amp;gt; /etc/wpa_supplicant.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Be sure to have your Wi-Fi chipset driver loaded:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # modprobe libertas_sdio&lt;br /&gt;
or&lt;br /&gt;
 # modprobe wlcore_sdio&lt;br /&gt;
or&lt;br /&gt;
 # modprobe rt73usb&lt;br /&gt;
 # modprobe rt2800_usb&lt;br /&gt;
 # modprobe zd1211rw&lt;br /&gt;
 # modprobe rtl8187&lt;br /&gt;
 # modprobe r8712u&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Bring up the wireless interface:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # ip link set dev wlan0 up&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
or (as you prefer):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # ifconfig wlan0 up&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Then you can create the Wi-Fi connection with WPA Supplicant:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # wpa_supplicant -Dnl80211 -i wlan0 -c /etc/wpa_supplicant.conf -B&lt;br /&gt;
 # wpa_cli -B -a /etc/wpa_supplicant/wpa_cli-action.sh&lt;br /&gt;
 # /etc/wpa_supplicant/wpa_cli-action.sh wlan0 CONNECTED # to force ip renewal if needed&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Then you can check your Wi-Fi interface is available:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# iwconfig wlan0&lt;br /&gt;
wlan0     IEEE 802.11abgn  ESSID:&amp;quot;xxxx_xxxx&amp;quot;  &lt;br /&gt;
          Mode:Managed  Frequency:5.2 GHz  Access Point: 00:xx:xx:xx:xx:xx   &lt;br /&gt;
          Bit Rate=24 Mb/s   Tx-Power=20 dBm   &lt;br /&gt;
          Retry  long limit:7   RTS thr:off   Fragment thr:off&lt;br /&gt;
          Encryption key:off&lt;br /&gt;
          Power Management:on&lt;br /&gt;
          Link Quality=29/70  Signal level=-81 dBm  &lt;br /&gt;
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0&lt;br /&gt;
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0&lt;br /&gt;
&lt;br /&gt;
# ifconfig wlan0&lt;br /&gt;
wlan0     Link encap:Ethernet  HWaddr 00:xx:xx:xx:xx:xx  &lt;br /&gt;
          inet addr:192.168.0.20  Bcast:192.168.0.255  Mask:255.255.255.0&lt;br /&gt;
          inet6 addr: 2a01:e35:2e35:f60:219:88ff:fe15:4237/64 Scope:Global&lt;br /&gt;
          inet6 addr: fe80::219:88ff:fe15:4237/64 Scope:Link&lt;br /&gt;
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1&lt;br /&gt;
          RX packets:80 errors:0 dropped:0 overruns:0 frame:0&lt;br /&gt;
          TX packets:14 errors:0 dropped:0 overruns:0 carrier:0&lt;br /&gt;
          collisions:0 txqueuelen:1000 &lt;br /&gt;
          RX bytes:14238 (13.9 KiB)  TX bytes:2797 (2.7 KiB)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Automate things at startup==&lt;br /&gt;
===Standard method===&lt;br /&gt;
* In default BSP you have a &#039;&#039;/etc/init.d/S40Network&#039;&#039; script which will automatically starts all network interfaces configured in &#039;&#039;/etc/network/interfaces&#039;&#039;.&lt;br /&gt;
* All you have to do is to add your Wi-Fi interface configuration in &#039;&#039;/etc/network/interfaces&#039;&#039;, like for example on [[OPOS6UL]]:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
auto wlan0&lt;br /&gt;
iface wlan0 inet dhcp&lt;br /&gt;
        pre-up modprobe brcmfmac&lt;br /&gt;
        pre-up sleep 3&lt;br /&gt;
        pre-up wpa_supplicant -Dwext -i wlan0 -c /etc/wpa_supplicant.conf -B&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Other methods===&lt;br /&gt;
* You can also choose to use a custom startup script. Here is an init script example, to adapt to your Wi-Fi driver (update WIFIDRIVERS in the source) and to place into &#039;&#039;/etc/init.d/S61wifi&#039;&#039; (do not forget to give it execution rigths with &#039;&#039;chmod a+x /etc/init.d/S61wifi&#039;&#039;):&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# Starts Wi-Fi services&lt;br /&gt;
#&lt;br /&gt;
# do not forget to update your wpa_supplicant configuration&lt;br /&gt;
# wpa_passphrase &amp;quot;mynetworrssid&amp;quot; &amp;quot;mynetworkpassphrase&amp;quot; &amp;gt;&amp;gt; /etc/wpa_supplicant.conf&lt;br /&gt;
# &lt;br /&gt;
export WIFIDRIVERS=libertas_sdio&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
	start)&lt;br /&gt;
		echo &amp;quot;Starting Wi-Fi&amp;quot;&lt;br /&gt;
		modprobe $WIFIDRIVERS&lt;br /&gt;
		ip link set dev wlan0 up&lt;br /&gt;
		wpa_supplicant -Dwext -i wlan0 -c /etc/wpa_supplicant.conf -B&lt;br /&gt;
		wpa_cli -B -a /etc/wpa_supplicant/wpa_cli-action.sh&lt;br /&gt;
	;;&lt;br /&gt;
&lt;br /&gt;
	stop)&lt;br /&gt;
                echo &amp;quot;Stoping Wi-Fi&amp;quot;&lt;br /&gt;
		wpa_cli -i wlan0 disconnect&lt;br /&gt;
		wpa_cli -i wlan0 terminate&lt;br /&gt;
		ip link set dev wlan0 down&lt;br /&gt;
		rmmod -a $WIFIDRIVERS&lt;br /&gt;
	;;&lt;br /&gt;
&lt;br /&gt;
	restart)&lt;br /&gt;
		$0 stop&lt;br /&gt;
		sleep 1&lt;br /&gt;
		$0 start&lt;br /&gt;
	;;&lt;br /&gt;
&lt;br /&gt;
	*)&lt;br /&gt;
		echo &amp;quot;Usage: $0 {start|stop|restart}&amp;quot;&lt;br /&gt;
		exit 1&lt;br /&gt;
	;;&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
exit 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stop it==&lt;br /&gt;
To stop WPA Supplicant daemon and switch off the connexion, you can use this command:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # wpa_cli terminate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
or by using the S61wifi script here above:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # /etc/init.d/S61wifi stop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* [http://hostap.epitest.fi/gitweb/gitweb.cgi?p=hostap.git;a=blob_plain;f=wpa_supplicant/README wpa_supplicant README]&lt;br /&gt;
* [http://hostap.epitest.fi/wpa_supplicant/ wpa_supplicant Webpage]&lt;br /&gt;
&lt;br /&gt;
[[Category:Wireless]]&lt;br /&gt;
[[Category:Security]]&lt;br /&gt;
[[Category:WiFi]]&lt;br /&gt;
[[Category:Network]]&lt;/div&gt;</summary>
		<author><name>SebastienSz</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=OPOS8MM_PINOUT&amp;diff=14982</id>
		<title>OPOS8MM PINOUT</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=OPOS8MM_PINOUT&amp;diff=14982"/>
		<updated>2021-02-22T08:50:59Z</updated>

		<summary type="html">&lt;p&gt;SebastienSz: /* J2 connector */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= J2 connector =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-right: auto; border: none; text-align:center;&amp;quot;&lt;br /&gt;
! Comments !! GPIO !! i.MX8MM pad name !!  OPOS8MM pad name !! Pin !! Pin !! OPOS8MM pad name !! i.MX8MM pad name !! GPIO !! Comments&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_DSI_D0_N || DSI_D0_N || 1 || 70 || ECSPI1_MOSI || ECSPI1_MOSI || GPIO5_IO07 || &lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_DSI_D0_P || DSI_D0_P || 2 || 69 || ECSPI1_MISO || ECSPI1_MISO || GPIO5_IO08 || &lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_DSI_D1_N || DSI_D1_N || 3 || 68 || ECSPI1_SCLK || ECSPI1_SCLK || GPIO5_IO06 || &lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_DSI_D1_P || DSI_D1_P || 4 || 67 || ECSPI1_SS0 || ECSPI1_SS0 || GPIO5_IO09 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 5 || 66 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_DSI_CLK_N || DSI_CLK_N || 6 || 65 || ECSPI2_MOSI || ECSPI2_MOSI || GPIO5_IO11 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_DSI_CLK_P || DSI_CLK_P || 7 || 64 || ECSPI2_MISO || ECSPI2_MISO || GPIO5_IO12 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 8 || 63 || ECSPI2_SCLK || ECSPI2_SCLK || GPIO5_IO10 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_DSI_D2_N || DSI_D2_N || 9 || 62 || ECSPI2_SS0 || ECSPI2_SS0 || GPIO5_IO13 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_DSI_D2_P || DSI_D2_P || 10 || 61 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIP_DSI_D3_N || DSI_D3_N || 11 || 60 || ECSPI3_MOSI || UART1_TXD || GPIO5_IO23 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_DSI_D3_P || DSI_D3_P || 12 || 59 || ECSPI3_MISO || UART2_RXD || GPIO5_IO24 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 13 || 58 || ECSPI3_SCLK || UART1_RXD || GPIO5_IO22 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_CSI_D0_N || CSI_D0_N || 14 || 57 || ECSPI3_SS0 || UART2_TXD || GPIO5_IO25 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_CSI_D0_P || CSI_D0_P || 15 || 56 || I2C3_SDA || I2C3_SDA || GPIO5_IO19 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_CSI_D1_N || CSI_D1_N || 16 || 55 || I2C3_SCL || I2C3_SCL || GPIO5_IO18 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_CSI_D1_P || CS_D1_P || 17 || 54 || I2C2_SDA || I2C2_SDA || GPIO5_IO17 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 18 || 53 || I2C2_SCL || I2C2_SCL || GPIO5_IO16 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_CSI_CLK_P || CSI_CLK_P || 19 || 52 || I2C4_SDA || I2C4_SDA || GPIO5_IO21 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPICSI_CLK_N || CSI_CLK_N || 20 || 51 || I2C4_SCL || I2C4_SCL || GPIO5_IO20 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 21 || 50 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_CSI_D2_N || CSI_D2_N || 22 || 49 || UART3_TXD || UART3_TXD || GPIO5_IO26 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_CSI_D2_P || CSI_D2_P || 23 || 48 || UART3_RXD || UART3_RXD || GPIO5_IO27 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_CSI_D3_N || CSI_D3_N || 24 || style=&amp;quot;background: yellow;&amp;quot; | 47 || style=&amp;quot;background: yellow;&amp;quot; | UART4_TXD || style=&amp;quot;background: yellow;&amp;quot; | UART4_TXD || style=&amp;quot;background: yellow;&amp;quot; | GPIO5_IO29 || style=&amp;quot;background: yellow;&amp;quot; rowspan=&amp;quot;2&amp;quot; | Default debug UART in Armadeus BSP.&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_CSI_D3_P || CSI_D3_P || 25 || style=&amp;quot;background: yellow;&amp;quot; | 46 || style=&amp;quot;background: yellow;&amp;quot; | UART4_RXD || style=&amp;quot;background: yellow;&amp;quot; | UART4_RXD || style=&amp;quot;background: yellow;&amp;quot; | GPIO5_IO28&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 26 || 45 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || PCIE_RXN_N || PCIE_RXN_N || 27 || 44 || USB1_DN || USB1_DN ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || PCIE_RXN_P || PCIE_RXN_P || 28 || 43 || USB1_DP || USB1_DP ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 29 || 42 || USB1_ID || USB1_ID ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || PCIE_TXN_N || PCIE_TXN_N || 30 || 41 || USB_VBUS || USB{1,2}_VBUS ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || PCIE_TXN_P || PCIE_TXN_P || 31 || 40 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 32 || 39 || USB2_DN || USB2_DN ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || PCIE_CLK_N || PCIE_CLK_N || 33 || 38 || USB2_DP || USB2_DP ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || PCIE_CLK_P || PCIE_CLK_P || 34 || 37 || USB2_ID || USB2_ID ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 35 || 36 || RTC_VDD ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= J4 connector =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-right: auto; border: none; text-align:center;&amp;quot;&lt;br /&gt;
! Comments !! GPIO !! i.MX8MM pad name !!  OPOS8MM pad name !! Pin !! Pin !! OPOS8MM pad name !! i.MX8MM pad name !! GPIO !! Comments&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || VIN || 1 || 70 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || VIN || 2 || 69 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || VIN || 3 || 68 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || VIN || 4 || 67 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || VDD_3V3 || 5 || 66 || NVCC_SNVS_1V8 ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || ONOFF || ONOFF || 6 || 65 || SYS_RST_B ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 7 || 64 || GND ||  || ||&lt;br /&gt;
|- style=&amp;quot;background: yellow;&amp;quot;&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot; | Not available on OPOS8MM SoM with Bluetooth chip. || GPIO5_IO00 || SAI3_TXC || UART2_TX || 8 || 63 || UART2_RTS || SAI3_RXD || GPIO4_IO30 || rowspan=&amp;quot;2&amp;quot; | Not available on OPOS8MM SoM with Bluetooth chip.&lt;br /&gt;
|- style=&amp;quot;background: yellow;&amp;quot;&lt;br /&gt;
|| GPIO4_IO31 || SAI3_TXFS || UART2_RX || 9 || 62 || UART2_CTS || SAI3_RXC || GPIO4_IO29&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO4_IO21 || SAI2_RXFS || UART1_TX || 10 || 61 || GPIO1_15 || GPIO1_15 || GPIO1_15 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO4_IO22 || SAI2_RXC || UART1_RX || 11 || 60 || GPIO1_14 || GPIO1_14 || GPIO1_14 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO4_IO23 || SAI2_RXD0 || UART1_RTS || 12 || 59 || GPIO1_13 || GPIO1_13 || GPIO1_13 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO4_IO24 || SAI2_TXFS || UART1_CTS || 13 || 58 || GPIO1_12 || GPIO1_12 || GPIO1_12 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_IO05 || SPDIF_EXT_CLK || SPDIF_EXT_CLK || 14 || 57 || GPIO1_11 || GPIO1_11 || GPIO1_11 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_IO03 || SPDIF_TX || SPDIF_TX || 15 || 56 || GPIO1_10 || GPIO1_10 || GPIO1_10 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_IO04 || SPDIF_RX || SPDIF_RX || 16 || 55 || GPIO1_09 || GPIO1_09 || GPIO1_09 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_IO24 || SAI5_RXD3 || SAI5_RXD3 || 17 || 54 || GPIO1_08 || GPIO1_08 || GPIO1_08 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_IO23 || SAI5_RXD2 || SAI5_RXD2 || 18 || 53 || GPIO1_07 || GPIO1_07 || GPIO1_07 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_IO22 || SAI5_RXD1 || SAI5_RXD1 || 19 || 52 || GPIO1_06 || GPIO1_06 || GPIO1_06 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_IO21 || SAI5_RXD0 || SAI5_RXD0 || 20 || 51 || GPIO1_05 || GPIO1_05 || GPIO1_05 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_IO20 || SAI5_RXC || SAI5_RXC || 21 || 50 || GPIO1_04 || GPIO1_04 || GPIO1_04 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_IO25 || SAI5_MCLK || SAI5_MCLK || 22 || 49 || GPIO1_01 || GPIO1_01 || GPIO1_01 ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || BOOT_MODE0 || BOOT_MODE0 || 23 || 48 || GPIO1_00 || GPIO1_00 || GPIO1_00 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO12 || SD2_CD_B || SD2_CD_B || 24 || 47 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO15 || SD2_DATA0 || SD2_DATA0 || 25 || 46 || ETH_TXRXM_D  || ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO16 || SD2_DATA1 || SD2_DATA1 || 26 || 45 || ETH_TXRXP_D ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO14 || SD2_CMD || SD2_CMD || 27 || 44 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || GND || 28 || 43 || ETH_TXRXM_C ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO13 || SD2_CLK || SD2_CLK || 29 || 42 || ETH_TXRXP_C ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || GND || 30 || 41 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO18 || SD2_DATA3 || SD2_DATA3 || 31 || 40 || ETH_TXRXM_B ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO17 || SD2_DATA2 || SD2_DATA2 || 32 || 39 || ETH_TXRXP_B ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || GND || 33 || 38 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || ETH_ACTIVITY || 34 || 37 || ETH_TXRXM_A ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || ETH_LINK# || 35 || 36 || ETH_TXRXP_A ||  ||  ||&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SebastienSz</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=OPOS8MM_PINOUT&amp;diff=14981</id>
		<title>OPOS8MM PINOUT</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=OPOS8MM_PINOUT&amp;diff=14981"/>
		<updated>2021-02-22T08:38:08Z</updated>

		<summary type="html">&lt;p&gt;SebastienSz: /* J2 connector */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= J2 connector =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-right: auto; border: none; text-align:center;&amp;quot;&lt;br /&gt;
! Comments !! GPIO !! i.MX8MM pad name !!  OPOS8MM pad name !! Pin !! Pin !! OPOS8MM pad name !! i.MX8MM pad name !! GPIO !! Comments&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_DSI_D0_N || DSI_D0_N || 1 || 70 || ECSPI1_MOSI || ECSPI1_MOSI || GPIO5_IO07 || &lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_DSI_D0_P || DSI_D0_P || 2 || 69 || ECSPI1_MISO || ECSPI1_MISO || GPIO5_IO08 || &lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_DSI_D1_N || DSI_D1_N || 3 || 68 || ECSPI1_SCLK || ECSPI1_SCLK || GPIO5_IO06 || &lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_DSI_D1_P || DSI_D1_P || 4 || 67 || ECSPI1_SS0 || ECSPI1_SS0 || GPIO5_IO09 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 5 || 66 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_DSI_CLK_N || DSI_CLK_N || 6 || 65 || ECSPI2_MOSI || ECSPI2_MOSI || GPIO5_IO11 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_DSI_CLK_P || DSI_CLK_P || 7 || 64 || ECSPI2_MISO || ECSPI2_MISO || GPIO5_IO12 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 8 || 63 || ECSPI2_SCLK || ECSPI2_SCLK || GPIO5_IO10 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_DSI_D2_N || DSI_D2_N || 9 || 62 || ECSPI2_SS0 || ECSPI2_SS0 || GPIO5_IO13 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_DSI_D2_P || DSI_D2_P || 10 || 61 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIP_DSI_D3_N || DSI_D3_N || 11 || 60 || ECSPI3_MOSI || UART1_TXD || GPIO5_IO23 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_DSI_D3_P || DSI_D3_P || 12 || 59 || ECSPI3_MISO || UART2_RXD || GPIO5_IO24 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 13 || 58 || ECSPI3_SCLK || UART1_RXD || GPIO5_IO22 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_CSI_D0_N || CSI_D0_N || 14 || 57 || ECSPI3_SS0 || UART2_TXD || GPIO5_IO25 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_CSI_D0_P || CSI_D0_P || 15 || 56 || I2C3_SDA || I2C3_SDA || GPIO5_IO19 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_CSI_D1_N || CSI_D1_N || 16 || 55 || I2C3_SCL || I2C3_SCL || GPIO5_IO18 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_CSI_D1_P || CS_D1_P || 17 || 54 || I2C2_SDA || I2C2_SDA || GPIO5_IO17 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 18 || 53 || I2C2_SCL || I2C2_SCL || GPIO5_IO16 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_CSI_CLK_P || CSI_CLK_P || 19 || 52 || I2C4_SDA || I2C4_SDA || GPIO5_IO21 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPICSI_CLK_N || CSI_CLK_N || 20 || 51 || I2C4_SCL || I2C4_SCL || GPIO5_IO20 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 21 || 50 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_CSI_D2_N || CSI_D2_N || 22 || 49 || UART3_TXD || UART3_TXD || GPIO5_IO26 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_CSI_D2_P || CSI_D2_P || 23 || 48 || UART3_RXD || UART3_RXD || GPIO5_IO27 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_CSI_D3_N || CSI_D3_N || 24 || 47 || UART4_TXD || UART4_TXD || GPIO5_IO29 || rowspan=&amp;quot;2&amp;quot; | Default debug UART in Armadeus BSP.&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_CSI_D3_P || CSI_D3_P || 25 || 46 || UART4_RXD || UART4_RXD || GPIO5_IO28&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 26 || 45 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || PCIE_RXN_N || PCIE_RXN_N || 27 || 44 || USB1_DN || USB1_DN ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || PCIE_RXN_P || PCIE_RXN_P || 28 || 43 || USB1_DP || USB1_DP ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 29 || 42 || USB1_ID || USB1_ID ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || PCIE_TXN_N || PCIE_TXN_N || 30 || 41 || USB_VBUS || USB{1,2}_VBUS ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || PCIE_TXN_P || PCIE_TXN_P || 31 || 40 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 32 || 39 || USB2_DN || USB2_DN ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || PCIE_CLK_N || PCIE_CLK_N || 33 || 38 || USB2_DP || USB2_DP ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || PCIE_CLK_P || PCIE_CLK_P || 34 || 37 || USB2_ID || USB2_ID ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 35 || 36 || RTC_VDD ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= J4 connector =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-right: auto; border: none; text-align:center;&amp;quot;&lt;br /&gt;
! Comments !! GPIO !! i.MX8MM pad name !!  OPOS8MM pad name !! Pin !! Pin !! OPOS8MM pad name !! i.MX8MM pad name !! GPIO !! Comments&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || VIN || 1 || 70 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || VIN || 2 || 69 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || VIN || 3 || 68 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || VIN || 4 || 67 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || VDD_3V3 || 5 || 66 || NVCC_SNVS_1V8 ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || ONOFF || ONOFF || 6 || 65 || SYS_RST_B ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 7 || 64 || GND ||  || ||&lt;br /&gt;
|- style=&amp;quot;background: yellow;&amp;quot;&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot; | Not available on OPOS8MM SoM with Bluetooth chip. || GPIO5_IO00 || SAI3_TXC || UART2_TX || 8 || 63 || UART2_RTS || SAI3_RXD || GPIO4_IO30 || rowspan=&amp;quot;2&amp;quot; | Not available on OPOS8MM SoM with Bluetooth chip.&lt;br /&gt;
|- style=&amp;quot;background: yellow;&amp;quot;&lt;br /&gt;
|| GPIO4_IO31 || SAI3_TXFS || UART2_RX || 9 || 62 || UART2_CTS || SAI3_RXC || GPIO4_IO29&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO4_IO21 || SAI2_RXFS || UART1_TX || 10 || 61 || GPIO1_15 || GPIO1_15 || GPIO1_15 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO4_IO22 || SAI2_RXC || UART1_RX || 11 || 60 || GPIO1_14 || GPIO1_14 || GPIO1_14 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO4_IO23 || SAI2_RXD0 || UART1_RTS || 12 || 59 || GPIO1_13 || GPIO1_13 || GPIO1_13 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO4_IO24 || SAI2_TXFS || UART1_CTS || 13 || 58 || GPIO1_12 || GPIO1_12 || GPIO1_12 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_IO05 || SPDIF_EXT_CLK || SPDIF_EXT_CLK || 14 || 57 || GPIO1_11 || GPIO1_11 || GPIO1_11 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_IO03 || SPDIF_TX || SPDIF_TX || 15 || 56 || GPIO1_10 || GPIO1_10 || GPIO1_10 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_IO04 || SPDIF_RX || SPDIF_RX || 16 || 55 || GPIO1_09 || GPIO1_09 || GPIO1_09 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_IO24 || SAI5_RXD3 || SAI5_RXD3 || 17 || 54 || GPIO1_08 || GPIO1_08 || GPIO1_08 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_IO23 || SAI5_RXD2 || SAI5_RXD2 || 18 || 53 || GPIO1_07 || GPIO1_07 || GPIO1_07 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_IO22 || SAI5_RXD1 || SAI5_RXD1 || 19 || 52 || GPIO1_06 || GPIO1_06 || GPIO1_06 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_IO21 || SAI5_RXD0 || SAI5_RXD0 || 20 || 51 || GPIO1_05 || GPIO1_05 || GPIO1_05 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_IO20 || SAI5_RXC || SAI5_RXC || 21 || 50 || GPIO1_04 || GPIO1_04 || GPIO1_04 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_IO25 || SAI5_MCLK || SAI5_MCLK || 22 || 49 || GPIO1_01 || GPIO1_01 || GPIO1_01 ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || BOOT_MODE0 || BOOT_MODE0 || 23 || 48 || GPIO1_00 || GPIO1_00 || GPIO1_00 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO12 || SD2_CD_B || SD2_CD_B || 24 || 47 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO15 || SD2_DATA0 || SD2_DATA0 || 25 || 46 || ETH_TXRXM_D  || ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO16 || SD2_DATA1 || SD2_DATA1 || 26 || 45 || ETH_TXRXP_D ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO14 || SD2_CMD || SD2_CMD || 27 || 44 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || GND || 28 || 43 || ETH_TXRXM_C ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO13 || SD2_CLK || SD2_CLK || 29 || 42 || ETH_TXRXP_C ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || GND || 30 || 41 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO18 || SD2_DATA3 || SD2_DATA3 || 31 || 40 || ETH_TXRXM_B ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO17 || SD2_DATA2 || SD2_DATA2 || 32 || 39 || ETH_TXRXP_B ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || GND || 33 || 38 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || ETH_ACTIVITY || 34 || 37 || ETH_TXRXM_A ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || ETH_LINK# || 35 || 36 || ETH_TXRXP_A ||  ||  ||&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SebastienSz</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=OPOS8MM_PINOUT&amp;diff=14980</id>
		<title>OPOS8MM PINOUT</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=OPOS8MM_PINOUT&amp;diff=14980"/>
		<updated>2021-02-22T08:34:29Z</updated>

		<summary type="html">&lt;p&gt;SebastienSz: /* J2 connector */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= J2 connector =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-right: auto; border: none; text-align:center;&amp;quot;&lt;br /&gt;
! Comments !! GPIO !! i.MX8MM pad name !!  OPOS8MM pad name !! Pin !! Pin !! OPOS8MM pad name !! i.MX8MM pad name !! GPIO !! Comments&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_DSI_D0_N || DSI_D0_N || 1 || 70 || ECSPI1_MOSI || ECSPI1_MOSI || GPIO5_IO07 || &lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_DSI_D0_P || DSI_D0_P || 2 || 69 || ECSPI1_MISO || ECSPI1_MISO || GPIO5_IO08 || &lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_DSI_D1_N || DSI_D1_N || 3 || 68 || ECSPI1_SCLK || ECSPI1_SCLK || GPIO5_IO06 || &lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_DSI_D1_P || DSI_D1_P || 4 || 67 || ECSPI1_SS0 || ECSPI1_SS0 || GPIO5_IO09 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 5 || 66 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_DSI_CLK_N || DSI_CLK_N || 6 || 65 || ECSPI2_MOSI || ECSPI2_MOSI || GPIO5_IO11 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_DSI_CLK_P || DSI_CLK_P || 7 || 64 || ECSPI2_MISO || ECSPI2_MISO || GPIO5_IO12 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 8 || 63 || ECSPI2_SCLK || ECSPI2_SCLK || GPIO5_IO10 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_DSI_D2_N || DSI_D2_N || 9 || 62 || ECSPI2_SS0 || ECSPI2_SS0 || GPIO5_IO13 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_DSI_D2_P || DSI_D2_P || 10 || 61 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIP_DSI_D3_N || DSI_D3_N || 11 || 60 || ECSPI3_MOSI || UART1_TXD || GPIO5_IO23 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_DSI_D3_P || DSI_D3_P || 12 || 59 || ECSPI3_MISO || UART2_RXD || GPIO5_IO24 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 13 || 58 || ECSPI3_SCLK || UART1_RXD || GPIO5_IO22 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_CSI_D0_N || CSI_D0_N || 14 || 57 || ECSPI3_SS0 || UART2_TXD || GPIO5_IO25 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_CSI_D0_P || CSI_D0_P || 15 || 56 || I2C3_SDA || I2C3_SDA || GPIO5_IO19 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_CSI_D1_N || CSI_D1_N || 16 || 55 || I2C3_SCL || I2C3_SCL || GPIO5_IO18 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_CSI_D1_P || CS_D1_P || 17 || 54 || I2C2_SDA || I2C2_SDA || GPIO5_IO17 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 18 || 53 || I2C2_SCL || I2C2_SCL || GPIO5_IO16 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_CSI_CLK_P || CSI_CLK_P || 19 || 52 || I2C4_SDA || I2C4_SDA || GPIO5_IO21 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPICSI_CLK_N || CSI_CLK_N || 20 || 51 || I2C4_SCL || I2C4_SCL || GPIO5_IO20 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 21 || 50 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_CSI_D2_N || CSI_D2_N || 22 || 49 || UART3_TXD || UART3_TXD || GPIO5_IO26 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_CSI_D2_P || CSI_D2_P || 23 || 48 || UART3_RXD || UART3_RXD || GPIO5_IO27 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_CSI_D3_N || CSI_D3_N || 24 || 47 || UART4_TXD || UART4_TXD || GPIO5_IO29 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || MIPI_CSI_D3_P || CSI_D3_P || 25 || 46 || UART4_RXD || UART4_RXD || GPIO5_IO28 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 26 || 45 || GND || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || PCIE_RXN_N || PCIE_RXN_N || 27 || 44 || USB1_DN || USB1_DN ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || PCIE_RXN_P || PCIE_RXN_P || 28 || 43 || USB1_DP || USB1_DP ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 29 || 42 || USB1_ID || USB1_ID ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || PCIE_TXN_N || PCIE_TXN_N || 30 || 41 || USB_VBUS || USB{1,2}_VBUS ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || PCIE_TXN_P || PCIE_TXN_P || 31 || 40 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 32 || 39 || USB2_DN || USB2_DN ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || PCIE_CLK_N || PCIE_CLK_N || 33 || 38 || USB2_DP || USB2_DP ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || PCIE_CLK_P || PCIE_CLK_P || 34 || 37 || USB2_ID || USB2_ID ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 35 || 36 || RTC_VDD ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= J4 connector =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-right: auto; border: none; text-align:center;&amp;quot;&lt;br /&gt;
! Comments !! GPIO !! i.MX8MM pad name !!  OPOS8MM pad name !! Pin !! Pin !! OPOS8MM pad name !! i.MX8MM pad name !! GPIO !! Comments&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || VIN || 1 || 70 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || VIN || 2 || 69 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || VIN || 3 || 68 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || VIN || 4 || 67 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || VDD_3V3 || 5 || 66 || NVCC_SNVS_1V8 ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || ONOFF || ONOFF || 6 || 65 || SYS_RST_B ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 7 || 64 || GND ||  || ||&lt;br /&gt;
|- style=&amp;quot;background: yellow;&amp;quot;&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot; | Not available on OPOS8MM SoM with Bluetooth chip. || GPIO5_IO00 || SAI3_TXC || UART2_TX || 8 || 63 || UART2_RTS || SAI3_RXD || GPIO4_IO30 || rowspan=&amp;quot;2&amp;quot; | Not available on OPOS8MM SoM with Bluetooth chip.&lt;br /&gt;
|- style=&amp;quot;background: yellow;&amp;quot;&lt;br /&gt;
|| GPIO4_IO31 || SAI3_TXFS || UART2_RX || 9 || 62 || UART2_CTS || SAI3_RXC || GPIO4_IO29&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO4_IO21 || SAI2_RXFS || UART1_TX || 10 || 61 || GPIO1_15 || GPIO1_15 || GPIO1_15 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO4_IO22 || SAI2_RXC || UART1_RX || 11 || 60 || GPIO1_14 || GPIO1_14 || GPIO1_14 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO4_IO23 || SAI2_RXD0 || UART1_RTS || 12 || 59 || GPIO1_13 || GPIO1_13 || GPIO1_13 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO4_IO24 || SAI2_TXFS || UART1_CTS || 13 || 58 || GPIO1_12 || GPIO1_12 || GPIO1_12 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_IO05 || SPDIF_EXT_CLK || SPDIF_EXT_CLK || 14 || 57 || GPIO1_11 || GPIO1_11 || GPIO1_11 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_IO03 || SPDIF_TX || SPDIF_TX || 15 || 56 || GPIO1_10 || GPIO1_10 || GPIO1_10 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_IO04 || SPDIF_RX || SPDIF_RX || 16 || 55 || GPIO1_09 || GPIO1_09 || GPIO1_09 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_IO24 || SAI5_RXD3 || SAI5_RXD3 || 17 || 54 || GPIO1_08 || GPIO1_08 || GPIO1_08 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_IO23 || SAI5_RXD2 || SAI5_RXD2 || 18 || 53 || GPIO1_07 || GPIO1_07 || GPIO1_07 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_IO22 || SAI5_RXD1 || SAI5_RXD1 || 19 || 52 || GPIO1_06 || GPIO1_06 || GPIO1_06 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_IO21 || SAI5_RXD0 || SAI5_RXD0 || 20 || 51 || GPIO1_05 || GPIO1_05 || GPIO1_05 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_IO20 || SAI5_RXC || SAI5_RXC || 21 || 50 || GPIO1_04 || GPIO1_04 || GPIO1_04 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_IO25 || SAI5_MCLK || SAI5_MCLK || 22 || 49 || GPIO1_01 || GPIO1_01 || GPIO1_01 ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || BOOT_MODE0 || BOOT_MODE0 || 23 || 48 || GPIO1_00 || GPIO1_00 || GPIO1_00 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO12 || SD2_CD_B || SD2_CD_B || 24 || 47 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO15 || SD2_DATA0 || SD2_DATA0 || 25 || 46 || ETH_TXRXM_D  || ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO16 || SD2_DATA1 || SD2_DATA1 || 26 || 45 || ETH_TXRXP_D ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO14 || SD2_CMD || SD2_CMD || 27 || 44 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || GND || 28 || 43 || ETH_TXRXM_C ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO13 || SD2_CLK || SD2_CLK || 29 || 42 || ETH_TXRXP_C ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || GND || 30 || 41 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO18 || SD2_DATA3 || SD2_DATA3 || 31 || 40 || ETH_TXRXM_B ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO17 || SD2_DATA2 || SD2_DATA2 || 32 || 39 || ETH_TXRXP_B ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || GND || 33 || 38 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || ETH_ACTIVITY || 34 || 37 || ETH_TXRXM_A ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || ETH_LINK# || 35 || 36 || ETH_TXRXP_A ||  ||  ||&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SebastienSz</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=OPOS8MM_PINOUT&amp;diff=14979</id>
		<title>OPOS8MM PINOUT</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=OPOS8MM_PINOUT&amp;diff=14979"/>
		<updated>2021-02-22T08:29:28Z</updated>

		<summary type="html">&lt;p&gt;SebastienSz: /* J4 connector */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= J2 connector =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-right: auto; border: none; text-align:center;&amp;quot;&lt;br /&gt;
! GPIO !! i.MX8MM pad name !!  OPOS8MM pad name !! Pin !! Pin !! OPOS8MM pad name !! i.MX8MM pad name !! GPIO&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D0_N || DSI_D0_N || 1 || 70 || ECSPI1_MOSI || ECSPI1_MOSI || GPIO5_IO07&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D0_P || DSI_D0_P || 2 || 69 || ECSPI1_MISO || ECSPI1_MISO || GPIO5_IO08&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D1_N || DSI_D1_N || 3 || 68 || ECSPI1_SCLK || ECSPI1_SCLK || GPIO5_IO06&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D1_P || DSI_D1_P || 4 || 67 || ECSPI1_SS0 || ECSPI1_SS0 || GPIO5_IO09&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 5 || 66 || GND || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_CLK_N || DSI_CLK_N || 6 || 65 || ECSPI2_MOSI || ECSPI2_MOSI || GPIO5_IO11&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_CLK_P || DSI_CLK_P || 7 || 64 || ECSPI2_MISO || ECSPI2_MISO || GPIO5_IO12&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 8 || 63 || ECSPI2_SCLK || ECSPI2_SCLK || GPIO5_IO10&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D2_N || DSI_D2_N || 9 || 62 || ECSPI2_SS0 || ECSPI2_SS0 || GPIO5_IO13&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D2_P || DSI_D2_P || 10 || 61 || GND ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| || MIP_DSI_D3_N || DSI_D3_N || 11 || 60 || ECSPI3_MOSI || UART1_TXD || GPIO5_IO23&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D3_P || DSI_D3_P || 12 || 59 || ECSPI3_MISO || UART2_RXD || GPIO5_IO24&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 13 || 58 || ECSPI3_SCLK || UART1_RXD || GPIO5_IO22&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D0_N || CSI_D0_N || 14 || 57 || ECSPI3_SS0 || UART2_TXD || GPIO5_IO25&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D0_P || CSI_D0_P || 15 || 56 || I2C3_SDA || I2C3_SDA || GPIO5_IO19&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D1_N || CSI_D1_N || 16 || 55 || I2C3_SCL || I2C3_SCL || GPIO5_IO18&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D1_P || CS_D1_P || 17 || 54 || I2C2_SDA || I2C2_SDA || GPIO5_IO17&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 18 || 53 || I2C2_SCL || I2C2_SCL || GPIO5_IO16&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_CLK_P || CSI_CLK_P || 19 || 52 || I2C4_SDA || I2C4_SDA || GPIO5_IO21&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPICSI_CLK_N || CSI_CLK_N || 20 || 51 || I2C4_SCL || I2C4_SCL || GPIO5_IO20&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 21 || 50 || GND || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D2_N || CSI_D2_N || 22 || 49 || UART3_TXD || UART3_TXD || GPIO5_IO26&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D2_P || CSI_D2_P || 23 || 48 || UART3_RXD || UART3_RXD || GPIO5_IO27&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D3_N || CSI_D3_N || 24 || 47 || UART4_TXD || UART4_TXD || GPIO5_IO29&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D3_P || CSI_D3_P || 25 || 46 || UART4_RXD || UART4_RXD || GPIO5_IO28&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 26 || 45 || GND || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || PCIE_RXN_N || PCIE_RXN_N || 27 || 44 || USB1_DN || USB1_DN || &lt;br /&gt;
|-&lt;br /&gt;
|| || PCIE_RXN_P || PCIE_RXN_P || 28 || 43 || USB1_DP || USB1_DP || &lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 29 || 42 || USB1_ID || USB1_ID || &lt;br /&gt;
|-&lt;br /&gt;
|| || PCIE_TXN_N || PCIE_TXN_N || 30 || 41 || USB_VBUS || USB{1,2}_VBUS || &lt;br /&gt;
|-&lt;br /&gt;
|| || PCIE_TXN_P || PCIE_TXN_P || 31 || 40 || GND ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 32 || 39 || USB2_DN || USB2_DN || &lt;br /&gt;
|-&lt;br /&gt;
|| || PCIE_CLK_N || PCIE_CLK_N || 33 || 38 || USB2_DP || USB2_DP || &lt;br /&gt;
|-&lt;br /&gt;
|| || PCIE_CLK_P || PCIE_CLK_P || 34 || 37 || USB2_ID || USB2_ID || &lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 35 || 36 || RTC_VDD ||  || &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= J4 connector =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-right: auto; border: none; text-align:center;&amp;quot;&lt;br /&gt;
! Comments !! GPIO !! i.MX8MM pad name !!  OPOS8MM pad name !! Pin !! Pin !! OPOS8MM pad name !! i.MX8MM pad name !! GPIO !! Comments&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || VIN || 1 || 70 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || VIN || 2 || 69 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || VIN || 3 || 68 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || VIN || 4 || 67 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || VDD_3V3 || 5 || 66 || NVCC_SNVS_1V8 ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || ONOFF || ONOFF || 6 || 65 || SYS_RST_B ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 7 || 64 || GND ||  || ||&lt;br /&gt;
|- style=&amp;quot;background: yellow;&amp;quot;&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot; | Not available on OPOS8MM SoM with Bluetooth chip. || GPIO5_IO00 || SAI3_TXC || UART2_TX || 8 || 63 || UART2_RTS || SAI3_RXD || GPIO4_IO30 || rowspan=&amp;quot;2&amp;quot; | Not available on OPOS8MM SoM with Bluetooth chip.&lt;br /&gt;
|- style=&amp;quot;background: yellow;&amp;quot;&lt;br /&gt;
|| GPIO4_IO31 || SAI3_TXFS || UART2_RX || 9 || 62 || UART2_CTS || SAI3_RXC || GPIO4_IO29&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO4_IO21 || SAI2_RXFS || UART1_TX || 10 || 61 || GPIO1_15 || GPIO1_15 || GPIO1_15 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO4_IO22 || SAI2_RXC || UART1_RX || 11 || 60 || GPIO1_14 || GPIO1_14 || GPIO1_14 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO4_IO23 || SAI2_RXD0 || UART1_RTS || 12 || 59 || GPIO1_13 || GPIO1_13 || GPIO1_13 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO4_IO24 || SAI2_TXFS || UART1_CTS || 13 || 58 || GPIO1_12 || GPIO1_12 || GPIO1_12 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_IO05 || SPDIF_EXT_CLK || SPDIF_EXT_CLK || 14 || 57 || GPIO1_11 || GPIO1_11 || GPIO1_11 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_IO03 || SPDIF_TX || SPDIF_TX || 15 || 56 || GPIO1_10 || GPIO1_10 || GPIO1_10 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_IO04 || SPDIF_RX || SPDIF_RX || 16 || 55 || GPIO1_09 || GPIO1_09 || GPIO1_09 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_IO24 || SAI5_RXD3 || SAI5_RXD3 || 17 || 54 || GPIO1_08 || GPIO1_08 || GPIO1_08 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_IO23 || SAI5_RXD2 || SAI5_RXD2 || 18 || 53 || GPIO1_07 || GPIO1_07 || GPIO1_07 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_IO22 || SAI5_RXD1 || SAI5_RXD1 || 19 || 52 || GPIO1_06 || GPIO1_06 || GPIO1_06 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_IO21 || SAI5_RXD0 || SAI5_RXD0 || 20 || 51 || GPIO1_05 || GPIO1_05 || GPIO1_05 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_IO20 || SAI5_RXC || SAI5_RXC || 21 || 50 || GPIO1_04 || GPIO1_04 || GPIO1_04 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_IO25 || SAI5_MCLK || SAI5_MCLK || 22 || 49 || GPIO1_01 || GPIO1_01 || GPIO1_01 ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || BOOT_MODE0 || BOOT_MODE0 || 23 || 48 || GPIO1_00 || GPIO1_00 || GPIO1_00 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO12 || SD2_CD_B || SD2_CD_B || 24 || 47 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO15 || SD2_DATA0 || SD2_DATA0 || 25 || 46 || ETH_TXRXM_D  || ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO16 || SD2_DATA1 || SD2_DATA1 || 26 || 45 || ETH_TXRXP_D ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO14 || SD2_CMD || SD2_CMD || 27 || 44 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || GND || 28 || 43 || ETH_TXRXM_C ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO13 || SD2_CLK || SD2_CLK || 29 || 42 || ETH_TXRXP_C ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || GND || 30 || 41 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO18 || SD2_DATA3 || SD2_DATA3 || 31 || 40 || ETH_TXRXM_B ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO17 || SD2_DATA2 || SD2_DATA2 || 32 || 39 || ETH_TXRXP_B ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || GND || 33 || 38 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || ETH_ACTIVITY || 34 || 37 || ETH_TXRXM_A ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || ETH_LINK# || 35 || 36 || ETH_TXRXP_A ||  ||  ||&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SebastienSz</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=OPOS8MM_PINOUT&amp;diff=14978</id>
		<title>OPOS8MM PINOUT</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=OPOS8MM_PINOUT&amp;diff=14978"/>
		<updated>2021-02-22T08:28:56Z</updated>

		<summary type="html">&lt;p&gt;SebastienSz: /* J4 connector */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= J2 connector =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-right: auto; border: none; text-align:center;&amp;quot;&lt;br /&gt;
! GPIO !! i.MX8MM pad name !!  OPOS8MM pad name !! Pin !! Pin !! OPOS8MM pad name !! i.MX8MM pad name !! GPIO&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D0_N || DSI_D0_N || 1 || 70 || ECSPI1_MOSI || ECSPI1_MOSI || GPIO5_IO07&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D0_P || DSI_D0_P || 2 || 69 || ECSPI1_MISO || ECSPI1_MISO || GPIO5_IO08&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D1_N || DSI_D1_N || 3 || 68 || ECSPI1_SCLK || ECSPI1_SCLK || GPIO5_IO06&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D1_P || DSI_D1_P || 4 || 67 || ECSPI1_SS0 || ECSPI1_SS0 || GPIO5_IO09&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 5 || 66 || GND || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_CLK_N || DSI_CLK_N || 6 || 65 || ECSPI2_MOSI || ECSPI2_MOSI || GPIO5_IO11&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_CLK_P || DSI_CLK_P || 7 || 64 || ECSPI2_MISO || ECSPI2_MISO || GPIO5_IO12&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 8 || 63 || ECSPI2_SCLK || ECSPI2_SCLK || GPIO5_IO10&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D2_N || DSI_D2_N || 9 || 62 || ECSPI2_SS0 || ECSPI2_SS0 || GPIO5_IO13&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D2_P || DSI_D2_P || 10 || 61 || GND ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| || MIP_DSI_D3_N || DSI_D3_N || 11 || 60 || ECSPI3_MOSI || UART1_TXD || GPIO5_IO23&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D3_P || DSI_D3_P || 12 || 59 || ECSPI3_MISO || UART2_RXD || GPIO5_IO24&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 13 || 58 || ECSPI3_SCLK || UART1_RXD || GPIO5_IO22&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D0_N || CSI_D0_N || 14 || 57 || ECSPI3_SS0 || UART2_TXD || GPIO5_IO25&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D0_P || CSI_D0_P || 15 || 56 || I2C3_SDA || I2C3_SDA || GPIO5_IO19&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D1_N || CSI_D1_N || 16 || 55 || I2C3_SCL || I2C3_SCL || GPIO5_IO18&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D1_P || CS_D1_P || 17 || 54 || I2C2_SDA || I2C2_SDA || GPIO5_IO17&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 18 || 53 || I2C2_SCL || I2C2_SCL || GPIO5_IO16&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_CLK_P || CSI_CLK_P || 19 || 52 || I2C4_SDA || I2C4_SDA || GPIO5_IO21&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPICSI_CLK_N || CSI_CLK_N || 20 || 51 || I2C4_SCL || I2C4_SCL || GPIO5_IO20&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 21 || 50 || GND || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D2_N || CSI_D2_N || 22 || 49 || UART3_TXD || UART3_TXD || GPIO5_IO26&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D2_P || CSI_D2_P || 23 || 48 || UART3_RXD || UART3_RXD || GPIO5_IO27&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D3_N || CSI_D3_N || 24 || 47 || UART4_TXD || UART4_TXD || GPIO5_IO29&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D3_P || CSI_D3_P || 25 || 46 || UART4_RXD || UART4_RXD || GPIO5_IO28&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 26 || 45 || GND || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || PCIE_RXN_N || PCIE_RXN_N || 27 || 44 || USB1_DN || USB1_DN || &lt;br /&gt;
|-&lt;br /&gt;
|| || PCIE_RXN_P || PCIE_RXN_P || 28 || 43 || USB1_DP || USB1_DP || &lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 29 || 42 || USB1_ID || USB1_ID || &lt;br /&gt;
|-&lt;br /&gt;
|| || PCIE_TXN_N || PCIE_TXN_N || 30 || 41 || USB_VBUS || USB{1,2}_VBUS || &lt;br /&gt;
|-&lt;br /&gt;
|| || PCIE_TXN_P || PCIE_TXN_P || 31 || 40 || GND ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 32 || 39 || USB2_DN || USB2_DN || &lt;br /&gt;
|-&lt;br /&gt;
|| || PCIE_CLK_N || PCIE_CLK_N || 33 || 38 || USB2_DP || USB2_DP || &lt;br /&gt;
|-&lt;br /&gt;
|| || PCIE_CLK_P || PCIE_CLK_P || 34 || 37 || USB2_ID || USB2_ID || &lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 35 || 36 || RTC_VDD ||  || &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= J4 connector =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-right: auto; border: none; text-align:center;&amp;quot;&lt;br /&gt;
! Comments ! GPIO !! i.MX8MM pad name !!  OPOS8MM pad name !! Pin !! Pin !! OPOS8MM pad name !! i.MX8MM pad name !! GPIO !! Comments&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || VIN || 1 || 70 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || VIN || 2 || 69 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || VIN || 3 || 68 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || VIN || 4 || 67 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || VDD_3V3 || 5 || 66 || NVCC_SNVS_1V8 ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || ONOFF || ONOFF || 6 || 65 || SYS_RST_B ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || || GND || 7 || 64 || GND ||  || ||&lt;br /&gt;
|- style=&amp;quot;background: yellow;&amp;quot;&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot; | Not available on OPOS8MM SoM with Bluetooth chip. || GPIO5_IO00 || SAI3_TXC || UART2_TX || 8 || 63 || UART2_RTS || SAI3_RXD || GPIO4_IO30 || rowspan=&amp;quot;2&amp;quot; | Not available on OPOS8MM SoM with Bluetooth chip.&lt;br /&gt;
|- style=&amp;quot;background: yellow;&amp;quot;&lt;br /&gt;
|| GPIO4_IO31 || SAI3_TXFS || UART2_RX || 9 || 62 || UART2_CTS || SAI3_RXC || GPIO4_IO29&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO4_IO21 || SAI2_RXFS || UART1_TX || 10 || 61 || GPIO1_15 || GPIO1_15 || GPIO1_15 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO4_IO22 || SAI2_RXC || UART1_RX || 11 || 60 || GPIO1_14 || GPIO1_14 || GPIO1_14 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO4_IO23 || SAI2_RXD0 || UART1_RTS || 12 || 59 || GPIO1_13 || GPIO1_13 || GPIO1_13 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO4_IO24 || SAI2_TXFS || UART1_CTS || 13 || 58 || GPIO1_12 || GPIO1_12 || GPIO1_12 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_IO05 || SPDIF_EXT_CLK || SPDIF_EXT_CLK || 14 || 57 || GPIO1_11 || GPIO1_11 || GPIO1_11 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_IO03 || SPDIF_TX || SPDIF_TX || 15 || 56 || GPIO1_10 || GPIO1_10 || GPIO1_10 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO5_IO04 || SPDIF_RX || SPDIF_RX || 16 || 55 || GPIO1_09 || GPIO1_09 || GPIO1_09 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_IO24 || SAI5_RXD3 || SAI5_RXD3 || 17 || 54 || GPIO1_08 || GPIO1_08 || GPIO1_08 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_IO23 || SAI5_RXD2 || SAI5_RXD2 || 18 || 53 || GPIO1_07 || GPIO1_07 || GPIO1_07 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_IO22 || SAI5_RXD1 || SAI5_RXD1 || 19 || 52 || GPIO1_06 || GPIO1_06 || GPIO1_06 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_IO21 || SAI5_RXD0 || SAI5_RXD0 || 20 || 51 || GPIO1_05 || GPIO1_05 || GPIO1_05 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_IO20 || SAI5_RXC || SAI5_RXC || 21 || 50 || GPIO1_04 || GPIO1_04 || GPIO1_04 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO3_IO25 || SAI5_MCLK || SAI5_MCLK || 22 || 49 || GPIO1_01 || GPIO1_01 || GPIO1_01 ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || BOOT_MODE0 || BOOT_MODE0 || 23 || 48 || GPIO1_00 || GPIO1_00 || GPIO1_00 ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO12 || SD2_CD_B || SD2_CD_B || 24 || 47 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO15 || SD2_DATA0 || SD2_DATA0 || 25 || 46 || ETH_TXRXM_D  || ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO16 || SD2_DATA1 || SD2_DATA1 || 26 || 45 || ETH_TXRXP_D ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO14 || SD2_CMD || SD2_CMD || 27 || 44 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || GND || 28 || 43 || ETH_TXRXM_C ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO13 || SD2_CLK || SD2_CLK || 29 || 42 || ETH_TXRXP_C ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || GND || 30 || 41 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO18 || SD2_DATA3 || SD2_DATA3 || 31 || 40 || ETH_TXRXM_B ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || GPIO2_IO17 || SD2_DATA2 || SD2_DATA2 || 32 || 39 || ETH_TXRXP_B ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || GND || 33 || 38 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || ETH_ACTIVITY || 34 || 37 || ETH_TXRXM_A ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ||  || ETH_LINK# || 35 || 36 || ETH_TXRXP_A ||  ||  ||&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SebastienSz</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=OPOS8MM_PINOUT&amp;diff=14977</id>
		<title>OPOS8MM PINOUT</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=OPOS8MM_PINOUT&amp;diff=14977"/>
		<updated>2021-02-18T09:53:29Z</updated>

		<summary type="html">&lt;p&gt;SebastienSz: /* J4 connector */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= J2 connector =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-right: auto; border: none; text-align:center;&amp;quot;&lt;br /&gt;
! GPIO !! i.MX8MM pad name !!  OPOS8MM pad name !! Pin !! Pin !! OPOS8MM pad name !! i.MX8MM pad name !! GPIO&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D0_N || DSI_D0_N || 1 || 70 || ECSPI1_MOSI || ECSPI1_MOSI || GPIO5_IO07&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D0_P || DSI_D0_P || 2 || 69 || ECSPI1_MISO || ECSPI1_MISO || GPIO5_IO08&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D1_N || DSI_D1_N || 3 || 68 || ECSPI1_SCLK || ECSPI1_SCLK || GPIO5_IO06&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D1_P || DSI_D1_P || 4 || 67 || ECSPI1_SS0 || ECSPI1_SS0 || GPIO5_IO09&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 5 || 66 || GND || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_CLK_N || DSI_CLK_N || 6 || 65 || ECSPI2_MOSI || ECSPI2_MOSI || GPIO5_IO11&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_CLK_P || DSI_CLK_P || 7 || 64 || ECSPI2_MISO || ECSPI2_MISO || GPIO5_IO12&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 8 || 63 || ECSPI2_SCLK || ECSPI2_SCLK || GPIO5_IO10&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D2_N || DSI_D2_N || 9 || 62 || ECSPI2_SS0 || ECSPI2_SS0 || GPIO5_IO13&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D2_P || DSI_D2_P || 10 || 61 || GND ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| || MIP_DSI_D3_N || DSI_D3_N || 11 || 60 || ECSPI3_MOSI || UART1_TXD || GPIO5_IO23&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D3_P || DSI_D3_P || 12 || 59 || ECSPI3_MISO || UART2_RXD || GPIO5_IO24&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 13 || 58 || ECSPI3_SCLK || UART1_RXD || GPIO5_IO22&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D0_N || CSI_D0_N || 14 || 57 || ECSPI3_SS0 || UART2_TXD || GPIO5_IO25&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D0_P || CSI_D0_P || 15 || 56 || I2C3_SDA || I2C3_SDA || GPIO5_IO19&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D1_N || CSI_D1_N || 16 || 55 || I2C3_SCL || I2C3_SCL || GPIO5_IO18&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D1_P || CS_D1_P || 17 || 54 || I2C2_SDA || I2C2_SDA || GPIO5_IO17&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 18 || 53 || I2C2_SCL || I2C2_SCL || GPIO5_IO16&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_CLK_P || CSI_CLK_P || 19 || 52 || I2C4_SDA || I2C4_SDA || GPIO5_IO21&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPICSI_CLK_N || CSI_CLK_N || 20 || 51 || I2C4_SCL || I2C4_SCL || GPIO5_IO20&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 21 || 50 || GND || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D2_N || CSI_D2_N || 22 || 49 || UART3_TXD || UART3_TXD || GPIO5_IO26&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D2_P || CSI_D2_P || 23 || 48 || UART3_RXD || UART3_RXD || GPIO5_IO27&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D3_N || CSI_D3_N || 24 || 47 || UART4_TXD || UART4_TXD || GPIO5_IO29&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D3_P || CSI_D3_P || 25 || 46 || UART4_RXD || UART4_RXD || GPIO5_IO28&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 26 || 45 || GND || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || PCIE_RXN_N || PCIE_RXN_N || 27 || 44 || USB1_DN || USB1_DN || &lt;br /&gt;
|-&lt;br /&gt;
|| || PCIE_RXN_P || PCIE_RXN_P || 28 || 43 || USB1_DP || USB1_DP || &lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 29 || 42 || USB1_ID || USB1_ID || &lt;br /&gt;
|-&lt;br /&gt;
|| || PCIE_TXN_N || PCIE_TXN_N || 30 || 41 || USB_VBUS || USB{1,2}_VBUS || &lt;br /&gt;
|-&lt;br /&gt;
|| || PCIE_TXN_P || PCIE_TXN_P || 31 || 40 || GND ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 32 || 39 || USB2_DN || USB2_DN || &lt;br /&gt;
|-&lt;br /&gt;
|| || PCIE_CLK_N || PCIE_CLK_N || 33 || 38 || USB2_DP || USB2_DP || &lt;br /&gt;
|-&lt;br /&gt;
|| || PCIE_CLK_P || PCIE_CLK_P || 34 || 37 || USB2_ID || USB2_ID || &lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 35 || 36 || RTC_VDD ||  || &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= J4 connector =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-right: auto; border: none; text-align:center;&amp;quot;&lt;br /&gt;
! GPIO !! i.MX8MM pad name !!  OPOS8MM pad name !! Pin !! Pin !! OPOS8MM pad name !! i.MX8MM pad name !! GPIO !! Comments&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || VIN || 1 || 70 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || VIN || 2 || 69 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || VIN || 3 || 68 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || VIN || 4 || 67 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || VDD_3V3 || 5 || 66 || NVCC_SNVS_1V8 ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ONOFF || ONOFF || 6 || 65 || SYS_RST_B ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 7 || 64 || GND ||  || ||&lt;br /&gt;
|- style=&amp;quot;background: yellow;&amp;quot;&lt;br /&gt;
|| GPIO5_IO00 || SAI3_TXC || UART2_TX || 8 || 63 || UART2_RTS || SAI3_RXD || GPIO4_IO30 || rowspan=&amp;quot;2&amp;quot; | Not available on OPOS8MM SoM with Bluetooth chip.&lt;br /&gt;
|- style=&amp;quot;background: yellow;&amp;quot;&lt;br /&gt;
|| GPIO4_IO31 || SAI3_TXFS || UART2_RX || 9 || 62 || UART2_CTS || SAI3_RXC || GPIO4_IO29&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO4_IO21 || SAI2_RXFS || UART1_TX || 10 || 61 || GPIO1_15 || GPIO1_15 || GPIO1_15 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO4_IO22 || SAI2_RXC || UART1_RX || 11 || 60 || GPIO1_14 || GPIO1_14 || GPIO1_14 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO4_IO23 || SAI2_RXD0 || UART1_RTS || 12 || 59 || GPIO1_13 || GPIO1_13 || GPIO1_13 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO4_IO24 || SAI2_TXFS || UART1_CTS || 13 || 58 || GPIO1_12 || GPIO1_12 || GPIO1_12 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO5_IO05 || SPDIF_EXT_CLK || SPDIF_EXT_CLK || 14 || 57 || GPIO1_11 || GPIO1_11 || GPIO1_11 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO5_IO03 || SPDIF_TX || SPDIF_TX || 15 || 56 || GPIO1_10 || GPIO1_10 || GPIO1_10 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO5_IO04 || SPDIF_RX || SPDIF_RX || 16 || 55 || GPIO1_09 || GPIO1_09 || GPIO1_09 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO3_IO24 || SAI5_RXD3 || SAI5_RXD3 || 17 || 54 || GPIO1_08 || GPIO1_08 || GPIO1_08 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO3_IO23 || SAI5_RXD2 || SAI5_RXD2 || 18 || 53 || GPIO1_07 || GPIO1_07 || GPIO1_07 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO3_IO22 || SAI5_RXD1 || SAI5_RXD1 || 19 || 52 || GPIO1_06 || GPIO1_06 || GPIO1_06 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO3_IO21 || SAI5_RXD0 || SAI5_RXD0 || 20 || 51 || GPIO1_05 || GPIO1_05 || GPIO1_05 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO3_IO20 || SAI5_RXC || SAI5_RXC || 21 || 50 || GPIO1_04 || GPIO1_04 || GPIO1_04 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO3_IO25 || SAI5_MCLK || SAI5_MCLK || 22 || 49 || GPIO1_01 || GPIO1_01 || GPIO1_01 ||&lt;br /&gt;
|-&lt;br /&gt;
||  || BOOT_MODE0 || BOOT_MODE0 || 23 || 48 || GPIO1_00 || GPIO1_00 || GPIO1_00 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO2_IO12 || SD2_CD_B || SD2_CD_B || 24 || 47 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO2_IO15 || SD2_DATA0 || SD2_DATA0 || 25 || 46 || ETH_TXRXM_D  || ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| GPIO2_IO16 || SD2_DATA1 || SD2_DATA1 || 26 || 45 || ETH_TXRXP_D ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO2_IO14 || SD2_CMD || SD2_CMD || 27 || 44 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || GND || 28 || 43 || ETH_TXRXM_C ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO2_IO13 || SD2_CLK || SD2_CLK || 29 || 42 || ETH_TXRXP_C ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || GND || 30 || 41 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO2_IO18 || SD2_DATA3 || SD2_DATA3 || 31 || 40 || ETH_TXRXM_B ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO2_IO17 || SD2_DATA2 || SD2_DATA2 || 32 || 39 || ETH_TXRXP_B ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || GND || 33 || 38 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || ETH_ACTIVITY || 34 || 37 || ETH_TXRXM_A ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || ETH_LINK# || 35 || 36 || ETH_TXRXP_A ||  ||  ||&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SebastienSz</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=OPOS8MM_PINOUT&amp;diff=14976</id>
		<title>OPOS8MM PINOUT</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=OPOS8MM_PINOUT&amp;diff=14976"/>
		<updated>2021-02-18T09:53:06Z</updated>

		<summary type="html">&lt;p&gt;SebastienSz: /* J4 connector */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= J2 connector =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-right: auto; border: none; text-align:center;&amp;quot;&lt;br /&gt;
! GPIO !! i.MX8MM pad name !!  OPOS8MM pad name !! Pin !! Pin !! OPOS8MM pad name !! i.MX8MM pad name !! GPIO&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D0_N || DSI_D0_N || 1 || 70 || ECSPI1_MOSI || ECSPI1_MOSI || GPIO5_IO07&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D0_P || DSI_D0_P || 2 || 69 || ECSPI1_MISO || ECSPI1_MISO || GPIO5_IO08&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D1_N || DSI_D1_N || 3 || 68 || ECSPI1_SCLK || ECSPI1_SCLK || GPIO5_IO06&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D1_P || DSI_D1_P || 4 || 67 || ECSPI1_SS0 || ECSPI1_SS0 || GPIO5_IO09&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 5 || 66 || GND || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_CLK_N || DSI_CLK_N || 6 || 65 || ECSPI2_MOSI || ECSPI2_MOSI || GPIO5_IO11&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_CLK_P || DSI_CLK_P || 7 || 64 || ECSPI2_MISO || ECSPI2_MISO || GPIO5_IO12&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 8 || 63 || ECSPI2_SCLK || ECSPI2_SCLK || GPIO5_IO10&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D2_N || DSI_D2_N || 9 || 62 || ECSPI2_SS0 || ECSPI2_SS0 || GPIO5_IO13&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D2_P || DSI_D2_P || 10 || 61 || GND ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| || MIP_DSI_D3_N || DSI_D3_N || 11 || 60 || ECSPI3_MOSI || UART1_TXD || GPIO5_IO23&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D3_P || DSI_D3_P || 12 || 59 || ECSPI3_MISO || UART2_RXD || GPIO5_IO24&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 13 || 58 || ECSPI3_SCLK || UART1_RXD || GPIO5_IO22&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D0_N || CSI_D0_N || 14 || 57 || ECSPI3_SS0 || UART2_TXD || GPIO5_IO25&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D0_P || CSI_D0_P || 15 || 56 || I2C3_SDA || I2C3_SDA || GPIO5_IO19&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D1_N || CSI_D1_N || 16 || 55 || I2C3_SCL || I2C3_SCL || GPIO5_IO18&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D1_P || CS_D1_P || 17 || 54 || I2C2_SDA || I2C2_SDA || GPIO5_IO17&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 18 || 53 || I2C2_SCL || I2C2_SCL || GPIO5_IO16&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_CLK_P || CSI_CLK_P || 19 || 52 || I2C4_SDA || I2C4_SDA || GPIO5_IO21&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPICSI_CLK_N || CSI_CLK_N || 20 || 51 || I2C4_SCL || I2C4_SCL || GPIO5_IO20&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 21 || 50 || GND || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D2_N || CSI_D2_N || 22 || 49 || UART3_TXD || UART3_TXD || GPIO5_IO26&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D2_P || CSI_D2_P || 23 || 48 || UART3_RXD || UART3_RXD || GPIO5_IO27&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D3_N || CSI_D3_N || 24 || 47 || UART4_TXD || UART4_TXD || GPIO5_IO29&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D3_P || CSI_D3_P || 25 || 46 || UART4_RXD || UART4_RXD || GPIO5_IO28&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 26 || 45 || GND || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || PCIE_RXN_N || PCIE_RXN_N || 27 || 44 || USB1_DN || USB1_DN || &lt;br /&gt;
|-&lt;br /&gt;
|| || PCIE_RXN_P || PCIE_RXN_P || 28 || 43 || USB1_DP || USB1_DP || &lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 29 || 42 || USB1_ID || USB1_ID || &lt;br /&gt;
|-&lt;br /&gt;
|| || PCIE_TXN_N || PCIE_TXN_N || 30 || 41 || USB_VBUS || USB{1,2}_VBUS || &lt;br /&gt;
|-&lt;br /&gt;
|| || PCIE_TXN_P || PCIE_TXN_P || 31 || 40 || GND ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 32 || 39 || USB2_DN || USB2_DN || &lt;br /&gt;
|-&lt;br /&gt;
|| || PCIE_CLK_N || PCIE_CLK_N || 33 || 38 || USB2_DP || USB2_DP || &lt;br /&gt;
|-&lt;br /&gt;
|| || PCIE_CLK_P || PCIE_CLK_P || 34 || 37 || USB2_ID || USB2_ID || &lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 35 || 36 || RTC_VDD ||  || &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= J4 connector =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-right: auto; border: none; text-align:center;&amp;quot;&lt;br /&gt;
! GPIO !! i.MX8MM pad name !!  OPOS8MM pad name !! Pin !! Pin !! OPOS8MM pad name !! i.MX8MM pad name !! GPIO !! Comments&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || VIN || 1 || 70 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || VIN || 2 || 69 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || VIN || 3 || 68 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || VIN || 4 || 67 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || VDD_3V3 || 5 || 66 || NVCC_SNVS_1V8 ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ONOFF || ONOFF || 6 || 65 || SYS_RST_B ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 7 || 64 || GND ||  || ||&lt;br /&gt;
|- style=&amp;quot;background: yellow;&amp;quot;&lt;br /&gt;
|| GPIO5_IO00 || SAI3_TXC || UART2_TX || 8 || 63 || UART2_RTS || SAI3_RXD || GPIO4_IO30 || rowspan=&amp;quot;2&amp;quot; | Not available on OPOS8MM SoM with Bluetooth chip.&lt;br /&gt;
|- style=&amp;quot;background: yellow;&amp;quot;&lt;br /&gt;
|| GPIO4_IO31 || SAI3_TXFS || UART2_RX || 9 || 62 || UART2_CTS || SAI3_RXC || GPIO4_IO29 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO4_IO21 || SAI2_RXFS || UART1_TX || 10 || 61 || GPIO1_15 || GPIO1_15 || GPIO1_15 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO4_IO22 || SAI2_RXC || UART1_RX || 11 || 60 || GPIO1_14 || GPIO1_14 || GPIO1_14 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO4_IO23 || SAI2_RXD0 || UART1_RTS || 12 || 59 || GPIO1_13 || GPIO1_13 || GPIO1_13 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO4_IO24 || SAI2_TXFS || UART1_CTS || 13 || 58 || GPIO1_12 || GPIO1_12 || GPIO1_12 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO5_IO05 || SPDIF_EXT_CLK || SPDIF_EXT_CLK || 14 || 57 || GPIO1_11 || GPIO1_11 || GPIO1_11 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO5_IO03 || SPDIF_TX || SPDIF_TX || 15 || 56 || GPIO1_10 || GPIO1_10 || GPIO1_10 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO5_IO04 || SPDIF_RX || SPDIF_RX || 16 || 55 || GPIO1_09 || GPIO1_09 || GPIO1_09 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO3_IO24 || SAI5_RXD3 || SAI5_RXD3 || 17 || 54 || GPIO1_08 || GPIO1_08 || GPIO1_08 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO3_IO23 || SAI5_RXD2 || SAI5_RXD2 || 18 || 53 || GPIO1_07 || GPIO1_07 || GPIO1_07 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO3_IO22 || SAI5_RXD1 || SAI5_RXD1 || 19 || 52 || GPIO1_06 || GPIO1_06 || GPIO1_06 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO3_IO21 || SAI5_RXD0 || SAI5_RXD0 || 20 || 51 || GPIO1_05 || GPIO1_05 || GPIO1_05 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO3_IO20 || SAI5_RXC || SAI5_RXC || 21 || 50 || GPIO1_04 || GPIO1_04 || GPIO1_04 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO3_IO25 || SAI5_MCLK || SAI5_MCLK || 22 || 49 || GPIO1_01 || GPIO1_01 || GPIO1_01 ||&lt;br /&gt;
|-&lt;br /&gt;
||  || BOOT_MODE0 || BOOT_MODE0 || 23 || 48 || GPIO1_00 || GPIO1_00 || GPIO1_00 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO2_IO12 || SD2_CD_B || SD2_CD_B || 24 || 47 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO2_IO15 || SD2_DATA0 || SD2_DATA0 || 25 || 46 || ETH_TXRXM_D  || ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| GPIO2_IO16 || SD2_DATA1 || SD2_DATA1 || 26 || 45 || ETH_TXRXP_D ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO2_IO14 || SD2_CMD || SD2_CMD || 27 || 44 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || GND || 28 || 43 || ETH_TXRXM_C ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO2_IO13 || SD2_CLK || SD2_CLK || 29 || 42 || ETH_TXRXP_C ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || GND || 30 || 41 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO2_IO18 || SD2_DATA3 || SD2_DATA3 || 31 || 40 || ETH_TXRXM_B ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO2_IO17 || SD2_DATA2 || SD2_DATA2 || 32 || 39 || ETH_TXRXP_B ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || GND || 33 || 38 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || ETH_ACTIVITY || 34 || 37 || ETH_TXRXM_A ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || ETH_LINK# || 35 || 36 || ETH_TXRXP_A ||  ||  ||&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SebastienSz</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=OPOS8MM_PINOUT&amp;diff=14975</id>
		<title>OPOS8MM PINOUT</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=OPOS8MM_PINOUT&amp;diff=14975"/>
		<updated>2021-02-18T09:44:41Z</updated>

		<summary type="html">&lt;p&gt;SebastienSz: /* J4 connector */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= J2 connector =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-right: auto; border: none; text-align:center;&amp;quot;&lt;br /&gt;
! GPIO !! i.MX8MM pad name !!  OPOS8MM pad name !! Pin !! Pin !! OPOS8MM pad name !! i.MX8MM pad name !! GPIO&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D0_N || DSI_D0_N || 1 || 70 || ECSPI1_MOSI || ECSPI1_MOSI || GPIO5_IO07&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D0_P || DSI_D0_P || 2 || 69 || ECSPI1_MISO || ECSPI1_MISO || GPIO5_IO08&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D1_N || DSI_D1_N || 3 || 68 || ECSPI1_SCLK || ECSPI1_SCLK || GPIO5_IO06&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D1_P || DSI_D1_P || 4 || 67 || ECSPI1_SS0 || ECSPI1_SS0 || GPIO5_IO09&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 5 || 66 || GND || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_CLK_N || DSI_CLK_N || 6 || 65 || ECSPI2_MOSI || ECSPI2_MOSI || GPIO5_IO11&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_CLK_P || DSI_CLK_P || 7 || 64 || ECSPI2_MISO || ECSPI2_MISO || GPIO5_IO12&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 8 || 63 || ECSPI2_SCLK || ECSPI2_SCLK || GPIO5_IO10&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D2_N || DSI_D2_N || 9 || 62 || ECSPI2_SS0 || ECSPI2_SS0 || GPIO5_IO13&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D2_P || DSI_D2_P || 10 || 61 || GND ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| || MIP_DSI_D3_N || DSI_D3_N || 11 || 60 || ECSPI3_MOSI || UART1_TXD || GPIO5_IO23&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D3_P || DSI_D3_P || 12 || 59 || ECSPI3_MISO || UART2_RXD || GPIO5_IO24&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 13 || 58 || ECSPI3_SCLK || UART1_RXD || GPIO5_IO22&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D0_N || CSI_D0_N || 14 || 57 || ECSPI3_SS0 || UART2_TXD || GPIO5_IO25&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D0_P || CSI_D0_P || 15 || 56 || I2C3_SDA || I2C3_SDA || GPIO5_IO19&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D1_N || CSI_D1_N || 16 || 55 || I2C3_SCL || I2C3_SCL || GPIO5_IO18&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D1_P || CS_D1_P || 17 || 54 || I2C2_SDA || I2C2_SDA || GPIO5_IO17&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 18 || 53 || I2C2_SCL || I2C2_SCL || GPIO5_IO16&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_CLK_P || CSI_CLK_P || 19 || 52 || I2C4_SDA || I2C4_SDA || GPIO5_IO21&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPICSI_CLK_N || CSI_CLK_N || 20 || 51 || I2C4_SCL || I2C4_SCL || GPIO5_IO20&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 21 || 50 || GND || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D2_N || CSI_D2_N || 22 || 49 || UART3_TXD || UART3_TXD || GPIO5_IO26&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D2_P || CSI_D2_P || 23 || 48 || UART3_RXD || UART3_RXD || GPIO5_IO27&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D3_N || CSI_D3_N || 24 || 47 || UART4_TXD || UART4_TXD || GPIO5_IO29&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D3_P || CSI_D3_P || 25 || 46 || UART4_RXD || UART4_RXD || GPIO5_IO28&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 26 || 45 || GND || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || PCIE_RXN_N || PCIE_RXN_N || 27 || 44 || USB1_DN || USB1_DN || &lt;br /&gt;
|-&lt;br /&gt;
|| || PCIE_RXN_P || PCIE_RXN_P || 28 || 43 || USB1_DP || USB1_DP || &lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 29 || 42 || USB1_ID || USB1_ID || &lt;br /&gt;
|-&lt;br /&gt;
|| || PCIE_TXN_N || PCIE_TXN_N || 30 || 41 || USB_VBUS || USB{1,2}_VBUS || &lt;br /&gt;
|-&lt;br /&gt;
|| || PCIE_TXN_P || PCIE_TXN_P || 31 || 40 || GND ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 32 || 39 || USB2_DN || USB2_DN || &lt;br /&gt;
|-&lt;br /&gt;
|| || PCIE_CLK_N || PCIE_CLK_N || 33 || 38 || USB2_DP || USB2_DP || &lt;br /&gt;
|-&lt;br /&gt;
|| || PCIE_CLK_P || PCIE_CLK_P || 34 || 37 || USB2_ID || USB2_ID || &lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 35 || 36 || RTC_VDD ||  || &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= J4 connector =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-right: auto; border: none; text-align:center;&amp;quot;&lt;br /&gt;
! GPIO !! i.MX8MM pad name !!  OPOS8MM pad name !! Pin !! Pin !! OPOS8MM pad name !! i.MX8MM pad name !! GPIO !! Comments&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || VIN || 1 || 70 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || VIN || 2 || 69 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || VIN || 3 || 68 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || VIN || 4 || 67 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || VDD_3V3 || 5 || 66 || NVCC_SNVS_1V8 ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ONOFF || ONOFF || 6 || 65 || SYS_RST_B ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 7 || 64 || GND ||  || ||&lt;br /&gt;
|- style=&amp;quot;background: yellow;&amp;quot;&lt;br /&gt;
|| GPIO5_IO00 || SAI3_TXC || UART2_TX || 8 || 63 || UART2_RTS || SAI3_RXD || GPIO4_IO30 || rowspan=&amp;quot;2&amp;quot; | Not available on OPOS8MM SoM with Bluetooth chip.&lt;br /&gt;
|- style=&amp;quot;background: yellow;&amp;quot;&lt;br /&gt;
|| GPIO5_IO00 || SAI3_TXC || UART2_TX || 8 || 63 || UART2_RTS || SAI3_RXD || GPIO4_IO30&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO4_IO31 || SAI3_TXFS || UART2_RX || 9 || 62 || UART2_CTS || SAI3_RXC || GPIO4_IO29 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO4_IO21 || SAI2_RXFS || UART1_TX || 10 || 61 || GPIO1_15 || GPIO1_15 || GPIO1_15 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO4_IO22 || SAI2_RXC || UART1_RX || 11 || 60 || GPIO1_14 || GPIO1_14 || GPIO1_14 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO4_IO23 || SAI2_RXD0 || UART1_RTS || 12 || 59 || GPIO1_13 || GPIO1_13 || GPIO1_13 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO4_IO24 || SAI2_TXFS || UART1_CTS || 13 || 58 || GPIO1_12 || GPIO1_12 || GPIO1_12 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO5_IO05 || SPDIF_EXT_CLK || SPDIF_EXT_CLK || 14 || 57 || GPIO1_11 || GPIO1_11 || GPIO1_11 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO5_IO03 || SPDIF_TX || SPDIF_TX || 15 || 56 || GPIO1_10 || GPIO1_10 || GPIO1_10 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO5_IO04 || SPDIF_RX || SPDIF_RX || 16 || 55 || GPIO1_09 || GPIO1_09 || GPIO1_09 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO3_IO24 || SAI5_RXD3 || SAI5_RXD3 || 17 || 54 || GPIO1_08 || GPIO1_08 || GPIO1_08 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO3_IO23 || SAI5_RXD2 || SAI5_RXD2 || 18 || 53 || GPIO1_07 || GPIO1_07 || GPIO1_07 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO3_IO22 || SAI5_RXD1 || SAI5_RXD1 || 19 || 52 || GPIO1_06 || GPIO1_06 || GPIO1_06 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO3_IO21 || SAI5_RXD0 || SAI5_RXD0 || 20 || 51 || GPIO1_05 || GPIO1_05 || GPIO1_05 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO3_IO20 || SAI5_RXC || SAI5_RXC || 21 || 50 || GPIO1_04 || GPIO1_04 || GPIO1_04 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO3_IO25 || SAI5_MCLK || SAI5_MCLK || 22 || 49 || GPIO1_01 || GPIO1_01 || GPIO1_01 ||&lt;br /&gt;
|-&lt;br /&gt;
||  || BOOT_MODE0 || BOOT_MODE0 || 23 || 48 || GPIO1_00 || GPIO1_00 || GPIO1_00 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO2_IO12 || SD2_CD_B || SD2_CD_B || 24 || 47 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO2_IO15 || SD2_DATA0 || SD2_DATA0 || 25 || 46 || ETH_TXRXM_D  || ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| GPIO2_IO16 || SD2_DATA1 || SD2_DATA1 || 26 || 45 || ETH_TXRXP_D ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO2_IO14 || SD2_CMD || SD2_CMD || 27 || 44 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || GND || 28 || 43 || ETH_TXRXM_C ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO2_IO13 || SD2_CLK || SD2_CLK || 29 || 42 || ETH_TXRXP_C ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || GND || 30 || 41 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO2_IO18 || SD2_DATA3 || SD2_DATA3 || 31 || 40 || ETH_TXRXM_B ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO2_IO17 || SD2_DATA2 || SD2_DATA2 || 32 || 39 || ETH_TXRXP_B ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || GND || 33 || 38 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || ETH_ACTIVITY || 34 || 37 || ETH_TXRXM_A ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || ETH_LINK# || 35 || 36 || ETH_TXRXP_A ||  ||  ||&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SebastienSz</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=OPOS8MM_PINOUT&amp;diff=14974</id>
		<title>OPOS8MM PINOUT</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=OPOS8MM_PINOUT&amp;diff=14974"/>
		<updated>2021-02-18T09:44:34Z</updated>

		<summary type="html">&lt;p&gt;SebastienSz: /* J2 connector */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= J2 connector =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-right: auto; border: none; text-align:center;&amp;quot;&lt;br /&gt;
! GPIO !! i.MX8MM pad name !!  OPOS8MM pad name !! Pin !! Pin !! OPOS8MM pad name !! i.MX8MM pad name !! GPIO&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D0_N || DSI_D0_N || 1 || 70 || ECSPI1_MOSI || ECSPI1_MOSI || GPIO5_IO07&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D0_P || DSI_D0_P || 2 || 69 || ECSPI1_MISO || ECSPI1_MISO || GPIO5_IO08&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D1_N || DSI_D1_N || 3 || 68 || ECSPI1_SCLK || ECSPI1_SCLK || GPIO5_IO06&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D1_P || DSI_D1_P || 4 || 67 || ECSPI1_SS0 || ECSPI1_SS0 || GPIO5_IO09&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 5 || 66 || GND || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_CLK_N || DSI_CLK_N || 6 || 65 || ECSPI2_MOSI || ECSPI2_MOSI || GPIO5_IO11&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_CLK_P || DSI_CLK_P || 7 || 64 || ECSPI2_MISO || ECSPI2_MISO || GPIO5_IO12&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 8 || 63 || ECSPI2_SCLK || ECSPI2_SCLK || GPIO5_IO10&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D2_N || DSI_D2_N || 9 || 62 || ECSPI2_SS0 || ECSPI2_SS0 || GPIO5_IO13&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D2_P || DSI_D2_P || 10 || 61 || GND ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| || MIP_DSI_D3_N || DSI_D3_N || 11 || 60 || ECSPI3_MOSI || UART1_TXD || GPIO5_IO23&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D3_P || DSI_D3_P || 12 || 59 || ECSPI3_MISO || UART2_RXD || GPIO5_IO24&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 13 || 58 || ECSPI3_SCLK || UART1_RXD || GPIO5_IO22&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D0_N || CSI_D0_N || 14 || 57 || ECSPI3_SS0 || UART2_TXD || GPIO5_IO25&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D0_P || CSI_D0_P || 15 || 56 || I2C3_SDA || I2C3_SDA || GPIO5_IO19&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D1_N || CSI_D1_N || 16 || 55 || I2C3_SCL || I2C3_SCL || GPIO5_IO18&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D1_P || CS_D1_P || 17 || 54 || I2C2_SDA || I2C2_SDA || GPIO5_IO17&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 18 || 53 || I2C2_SCL || I2C2_SCL || GPIO5_IO16&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_CLK_P || CSI_CLK_P || 19 || 52 || I2C4_SDA || I2C4_SDA || GPIO5_IO21&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPICSI_CLK_N || CSI_CLK_N || 20 || 51 || I2C4_SCL || I2C4_SCL || GPIO5_IO20&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 21 || 50 || GND || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D2_N || CSI_D2_N || 22 || 49 || UART3_TXD || UART3_TXD || GPIO5_IO26&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D2_P || CSI_D2_P || 23 || 48 || UART3_RXD || UART3_RXD || GPIO5_IO27&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D3_N || CSI_D3_N || 24 || 47 || UART4_TXD || UART4_TXD || GPIO5_IO29&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D3_P || CSI_D3_P || 25 || 46 || UART4_RXD || UART4_RXD || GPIO5_IO28&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 26 || 45 || GND || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || PCIE_RXN_N || PCIE_RXN_N || 27 || 44 || USB1_DN || USB1_DN || &lt;br /&gt;
|-&lt;br /&gt;
|| || PCIE_RXN_P || PCIE_RXN_P || 28 || 43 || USB1_DP || USB1_DP || &lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 29 || 42 || USB1_ID || USB1_ID || &lt;br /&gt;
|-&lt;br /&gt;
|| || PCIE_TXN_N || PCIE_TXN_N || 30 || 41 || USB_VBUS || USB{1,2}_VBUS || &lt;br /&gt;
|-&lt;br /&gt;
|| || PCIE_TXN_P || PCIE_TXN_P || 31 || 40 || GND ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 32 || 39 || USB2_DN || USB2_DN || &lt;br /&gt;
|-&lt;br /&gt;
|| || PCIE_CLK_N || PCIE_CLK_N || 33 || 38 || USB2_DP || USB2_DP || &lt;br /&gt;
|-&lt;br /&gt;
|| || PCIE_CLK_P || PCIE_CLK_P || 34 || 37 || USB2_ID || USB2_ID || &lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 35 || 36 || RTC_VDD ||  || &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= J4 connector =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-right: auto; border: none;&amp;quot;&lt;br /&gt;
! GPIO !! i.MX8MM pad name !!  OPOS8MM pad name !! Pin !! Pin !! OPOS8MM pad name !! i.MX8MM pad name !! GPIO !! Comments&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || VIN || 1 || 70 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || VIN || 2 || 69 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || VIN || 3 || 68 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || VIN || 4 || 67 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || VDD_3V3 || 5 || 66 || NVCC_SNVS_1V8 ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ONOFF || ONOFF || 6 || 65 || SYS_RST_B ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 7 || 64 || GND ||  || ||&lt;br /&gt;
|- style=&amp;quot;background: yellow;&amp;quot;&lt;br /&gt;
|| GPIO5_IO00 || SAI3_TXC || UART2_TX || 8 || 63 || UART2_RTS || SAI3_RXD || GPIO4_IO30 || rowspan=&amp;quot;2&amp;quot; | Not available on OPOS8MM SoM with Bluetooth chip.&lt;br /&gt;
|- style=&amp;quot;background: yellow;&amp;quot;&lt;br /&gt;
|| GPIO5_IO00 || SAI3_TXC || UART2_TX || 8 || 63 || UART2_RTS || SAI3_RXD || GPIO4_IO30&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO4_IO31 || SAI3_TXFS || UART2_RX || 9 || 62 || UART2_CTS || SAI3_RXC || GPIO4_IO29 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO4_IO21 || SAI2_RXFS || UART1_TX || 10 || 61 || GPIO1_15 || GPIO1_15 || GPIO1_15 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO4_IO22 || SAI2_RXC || UART1_RX || 11 || 60 || GPIO1_14 || GPIO1_14 || GPIO1_14 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO4_IO23 || SAI2_RXD0 || UART1_RTS || 12 || 59 || GPIO1_13 || GPIO1_13 || GPIO1_13 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO4_IO24 || SAI2_TXFS || UART1_CTS || 13 || 58 || GPIO1_12 || GPIO1_12 || GPIO1_12 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO5_IO05 || SPDIF_EXT_CLK || SPDIF_EXT_CLK || 14 || 57 || GPIO1_11 || GPIO1_11 || GPIO1_11 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO5_IO03 || SPDIF_TX || SPDIF_TX || 15 || 56 || GPIO1_10 || GPIO1_10 || GPIO1_10 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO5_IO04 || SPDIF_RX || SPDIF_RX || 16 || 55 || GPIO1_09 || GPIO1_09 || GPIO1_09 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO3_IO24 || SAI5_RXD3 || SAI5_RXD3 || 17 || 54 || GPIO1_08 || GPIO1_08 || GPIO1_08 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO3_IO23 || SAI5_RXD2 || SAI5_RXD2 || 18 || 53 || GPIO1_07 || GPIO1_07 || GPIO1_07 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO3_IO22 || SAI5_RXD1 || SAI5_RXD1 || 19 || 52 || GPIO1_06 || GPIO1_06 || GPIO1_06 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO3_IO21 || SAI5_RXD0 || SAI5_RXD0 || 20 || 51 || GPIO1_05 || GPIO1_05 || GPIO1_05 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO3_IO20 || SAI5_RXC || SAI5_RXC || 21 || 50 || GPIO1_04 || GPIO1_04 || GPIO1_04 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO3_IO25 || SAI5_MCLK || SAI5_MCLK || 22 || 49 || GPIO1_01 || GPIO1_01 || GPIO1_01 ||&lt;br /&gt;
|-&lt;br /&gt;
||  || BOOT_MODE0 || BOOT_MODE0 || 23 || 48 || GPIO1_00 || GPIO1_00 || GPIO1_00 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO2_IO12 || SD2_CD_B || SD2_CD_B || 24 || 47 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO2_IO15 || SD2_DATA0 || SD2_DATA0 || 25 || 46 || ETH_TXRXM_D  || ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| GPIO2_IO16 || SD2_DATA1 || SD2_DATA1 || 26 || 45 || ETH_TXRXP_D ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO2_IO14 || SD2_CMD || SD2_CMD || 27 || 44 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || GND || 28 || 43 || ETH_TXRXM_C ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO2_IO13 || SD2_CLK || SD2_CLK || 29 || 42 || ETH_TXRXP_C ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || GND || 30 || 41 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO2_IO18 || SD2_DATA3 || SD2_DATA3 || 31 || 40 || ETH_TXRXM_B ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO2_IO17 || SD2_DATA2 || SD2_DATA2 || 32 || 39 || ETH_TXRXP_B ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || GND || 33 || 38 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || ETH_ACTIVITY || 34 || 37 || ETH_TXRXM_A ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || ETH_LINK# || 35 || 36 || ETH_TXRXP_A ||  ||  ||&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SebastienSz</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=OPOS8MM_PINOUT&amp;diff=14973</id>
		<title>OPOS8MM PINOUT</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=OPOS8MM_PINOUT&amp;diff=14973"/>
		<updated>2021-02-18T09:43:13Z</updated>

		<summary type="html">&lt;p&gt;SebastienSz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= J2 connector =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-right: auto; border: none;&amp;quot;&lt;br /&gt;
! GPIO !! i.MX8MM pad name !!  OPOS8MM pad name !! Pin !! Pin !! OPOS8MM pad name !! i.MX8MM pad name !! GPIO&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D0_N || DSI_D0_N || 1 || 70 || ECSPI1_MOSI || ECSPI1_MOSI || GPIO5_IO07&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D0_P || DSI_D0_P || 2 || 69 || ECSPI1_MISO || ECSPI1_MISO || GPIO5_IO08&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D1_N || DSI_D1_N || 3 || 68 || ECSPI1_SCLK || ECSPI1_SCLK || GPIO5_IO06&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D1_P || DSI_D1_P || 4 || 67 || ECSPI1_SS0 || ECSPI1_SS0 || GPIO5_IO09&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 5 || 66 || GND || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_CLK_N || DSI_CLK_N || 6 || 65 || ECSPI2_MOSI || ECSPI2_MOSI || GPIO5_IO11&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_CLK_P || DSI_CLK_P || 7 || 64 || ECSPI2_MISO || ECSPI2_MISO || GPIO5_IO12&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 8 || 63 || ECSPI2_SCLK || ECSPI2_SCLK || GPIO5_IO10&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D2_N || DSI_D2_N || 9 || 62 || ECSPI2_SS0 || ECSPI2_SS0 || GPIO5_IO13&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D2_P || DSI_D2_P || 10 || 61 || GND ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| || MIP_DSI_D3_N || DSI_D3_N || 11 || 60 || ECSPI3_MOSI || UART1_TXD || GPIO5_IO23&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D3_P || DSI_D3_P || 12 || 59 || ECSPI3_MISO || UART2_RXD || GPIO5_IO24&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 13 || 58 || ECSPI3_SCLK || UART1_RXD || GPIO5_IO22&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D0_N || CSI_D0_N || 14 || 57 || ECSPI3_SS0 || UART2_TXD || GPIO5_IO25&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D0_P || CSI_D0_P || 15 || 56 || I2C3_SDA || I2C3_SDA || GPIO5_IO19&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D1_N || CSI_D1_N || 16 || 55 || I2C3_SCL || I2C3_SCL || GPIO5_IO18&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D1_P || CS_D1_P || 17 || 54 || I2C2_SDA || I2C2_SDA || GPIO5_IO17&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 18 || 53 || I2C2_SCL || I2C2_SCL || GPIO5_IO16&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_CLK_P || CSI_CLK_P || 19 || 52 || I2C4_SDA || I2C4_SDA || GPIO5_IO21&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPICSI_CLK_N || CSI_CLK_N || 20 || 51 || I2C4_SCL || I2C4_SCL || GPIO5_IO20&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 21 || 50 || GND || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D2_N || CSI_D2_N || 22 || 49 || UART3_TXD || UART3_TXD || GPIO5_IO26&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D2_P || CSI_D2_P || 23 || 48 || UART3_RXD || UART3_RXD || GPIO5_IO27&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D3_N || CSI_D3_N || 24 || 47 || UART4_TXD || UART4_TXD || GPIO5_IO29&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D3_P || CSI_D3_P || 25 || 46 || UART4_RXD || UART4_RXD || GPIO5_IO28&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 26 || 45 || GND || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || PCIE_RXN_N || PCIE_RXN_N || 27 || 44 || USB1_DN || USB1_DN || &lt;br /&gt;
|-&lt;br /&gt;
|| || PCIE_RXN_P || PCIE_RXN_P || 28 || 43 || USB1_DP || USB1_DP || &lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 29 || 42 || USB1_ID || USB1_ID || &lt;br /&gt;
|-&lt;br /&gt;
|| || PCIE_TXN_N || PCIE_TXN_N || 30 || 41 || USB_VBUS || USB{1,2}_VBUS || &lt;br /&gt;
|-&lt;br /&gt;
|| || PCIE_TXN_P || PCIE_TXN_P || 31 || 40 || GND ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 32 || 39 || USB2_DN || USB2_DN || &lt;br /&gt;
|-&lt;br /&gt;
|| || PCIE_CLK_N || PCIE_CLK_N || 33 || 38 || USB2_DP || USB2_DP || &lt;br /&gt;
|-&lt;br /&gt;
|| || PCIE_CLK_P || PCIE_CLK_P || 34 || 37 || USB2_ID || USB2_ID || &lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 35 || 36 || RTC_VDD ||  || &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= J4 connector =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-right: auto; border: none;&amp;quot;&lt;br /&gt;
! GPIO !! i.MX8MM pad name !!  OPOS8MM pad name !! Pin !! Pin !! OPOS8MM pad name !! i.MX8MM pad name !! GPIO !! Comments&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || VIN || 1 || 70 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || VIN || 2 || 69 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || VIN || 3 || 68 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || VIN || 4 || 67 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || VDD_3V3 || 5 || 66 || NVCC_SNVS_1V8 ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ONOFF || ONOFF || 6 || 65 || SYS_RST_B ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 7 || 64 || GND ||  || ||&lt;br /&gt;
|- style=&amp;quot;background: yellow;&amp;quot;&lt;br /&gt;
|| GPIO5_IO00 || SAI3_TXC || UART2_TX || 8 || 63 || UART2_RTS || SAI3_RXD || GPIO4_IO30 || rowspan=&amp;quot;2&amp;quot; | Not available on OPOS8MM SoM with Bluetooth chip.&lt;br /&gt;
|- style=&amp;quot;background: yellow;&amp;quot;&lt;br /&gt;
|| GPIO5_IO00 || SAI3_TXC || UART2_TX || 8 || 63 || UART2_RTS || SAI3_RXD || GPIO4_IO30&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO4_IO31 || SAI3_TXFS || UART2_RX || 9 || 62 || UART2_CTS || SAI3_RXC || GPIO4_IO29 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO4_IO21 || SAI2_RXFS || UART1_TX || 10 || 61 || GPIO1_15 || GPIO1_15 || GPIO1_15 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO4_IO22 || SAI2_RXC || UART1_RX || 11 || 60 || GPIO1_14 || GPIO1_14 || GPIO1_14 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO4_IO23 || SAI2_RXD0 || UART1_RTS || 12 || 59 || GPIO1_13 || GPIO1_13 || GPIO1_13 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO4_IO24 || SAI2_TXFS || UART1_CTS || 13 || 58 || GPIO1_12 || GPIO1_12 || GPIO1_12 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO5_IO05 || SPDIF_EXT_CLK || SPDIF_EXT_CLK || 14 || 57 || GPIO1_11 || GPIO1_11 || GPIO1_11 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO5_IO03 || SPDIF_TX || SPDIF_TX || 15 || 56 || GPIO1_10 || GPIO1_10 || GPIO1_10 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO5_IO04 || SPDIF_RX || SPDIF_RX || 16 || 55 || GPIO1_09 || GPIO1_09 || GPIO1_09 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO3_IO24 || SAI5_RXD3 || SAI5_RXD3 || 17 || 54 || GPIO1_08 || GPIO1_08 || GPIO1_08 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO3_IO23 || SAI5_RXD2 || SAI5_RXD2 || 18 || 53 || GPIO1_07 || GPIO1_07 || GPIO1_07 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO3_IO22 || SAI5_RXD1 || SAI5_RXD1 || 19 || 52 || GPIO1_06 || GPIO1_06 || GPIO1_06 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO3_IO21 || SAI5_RXD0 || SAI5_RXD0 || 20 || 51 || GPIO1_05 || GPIO1_05 || GPIO1_05 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO3_IO20 || SAI5_RXC || SAI5_RXC || 21 || 50 || GPIO1_04 || GPIO1_04 || GPIO1_04 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO3_IO25 || SAI5_MCLK || SAI5_MCLK || 22 || 49 || GPIO1_01 || GPIO1_01 || GPIO1_01 ||&lt;br /&gt;
|-&lt;br /&gt;
||  || BOOT_MODE0 || BOOT_MODE0 || 23 || 48 || GPIO1_00 || GPIO1_00 || GPIO1_00 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO2_IO12 || SD2_CD_B || SD2_CD_B || 24 || 47 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO2_IO15 || SD2_DATA0 || SD2_DATA0 || 25 || 46 || ETH_TXRXM_D  || ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| GPIO2_IO16 || SD2_DATA1 || SD2_DATA1 || 26 || 45 || ETH_TXRXP_D ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO2_IO14 || SD2_CMD || SD2_CMD || 27 || 44 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || GND || 28 || 43 || ETH_TXRXM_C ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO2_IO13 || SD2_CLK || SD2_CLK || 29 || 42 || ETH_TXRXP_C ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || GND || 30 || 41 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO2_IO18 || SD2_DATA3 || SD2_DATA3 || 31 || 40 || ETH_TXRXM_B ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO2_IO17 || SD2_DATA2 || SD2_DATA2 || 32 || 39 || ETH_TXRXP_B ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || GND || 33 || 38 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || ETH_ACTIVITY || 34 || 37 || ETH_TXRXM_A ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || ETH_LINK# || 35 || 36 || ETH_TXRXP_A ||  ||  ||&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SebastienSz</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=OPOS8MM_PINOUT&amp;diff=14972</id>
		<title>OPOS8MM PINOUT</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=OPOS8MM_PINOUT&amp;diff=14972"/>
		<updated>2021-02-18T09:35:54Z</updated>

		<summary type="html">&lt;p&gt;SebastienSz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ J2 connector&lt;br /&gt;
|-&lt;br /&gt;
! GPIO !! i.MX8MM pad name !!  OPOS8MM pad name !! Pin !! Pin !! OPOS8MM pad name !! i.MX8MM pad name !! GPIO&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D0_N || DSI_D0_N || 1 || 70 || ECSPI1_MOSI || ECSPI1_MOSI || GPIO5_IO07&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D0_P || DSI_D0_P || 2 || 69 || ECSPI1_MISO || ECSPI1_MISO || GPIO5_IO08&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D1_N || DSI_D1_N || 3 || 68 || ECSPI1_SCLK || ECSPI1_SCLK || GPIO5_IO06&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D1_P || DSI_D1_P || 4 || 67 || ECSPI1_SS0 || ECSPI1_SS0 || GPIO5_IO09&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 5 || 66 || GND || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_CLK_N || DSI_CLK_N || 6 || 65 || ECSPI2_MOSI || ECSPI2_MOSI || GPIO5_IO11&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_CLK_P || DSI_CLK_P || 7 || 64 || ECSPI2_MISO || ECSPI2_MISO || GPIO5_IO12&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 8 || 63 || ECSPI2_SCLK || ECSPI2_SCLK || GPIO5_IO10&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D2_N || DSI_D2_N || 9 || 62 || ECSPI2_SS0 || ECSPI2_SS0 || GPIO5_IO13&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D2_P || DSI_D2_P || 10 || 61 || GND ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| || MIP_DSI_D3_N || DSI_D3_N || 11 || 60 || ECSPI3_MOSI || UART1_TXD || GPIO5_IO23&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D3_P || DSI_D3_P || 12 || 59 || ECSPI3_MISO || UART2_RXD || GPIO5_IO24&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 13 || 58 || ECSPI3_SCLK || UART1_RXD || GPIO5_IO22&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D0_N || CSI_D0_N || 14 || 57 || ECSPI3_SS0 || UART2_TXD || GPIO5_IO25&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D0_P || CSI_D0_P || 15 || 56 || I2C3_SDA || I2C3_SDA || GPIO5_IO19&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D1_N || CSI_D1_N || 16 || 55 || I2C3_SCL || I2C3_SCL || GPIO5_IO18&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D1_P || CS_D1_P || 17 || 54 || I2C2_SDA || I2C2_SDA || GPIO5_IO17&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 18 || 53 || I2C2_SCL || I2C2_SCL || GPIO5_IO16&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_CLK_P || CSI_CLK_P || 19 || 52 || I2C4_SDA || I2C4_SDA || GPIO5_IO21&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPICSI_CLK_N || CSI_CLK_N || 20 || 51 || I2C4_SCL || I2C4_SCL || GPIO5_IO20&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 21 || 50 || GND || &lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D2_N || CSI_D2_N || 22 || 49 || UART3_TXD || UART3_TXD || GPIO5_IO26&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D2_P || CSI_D2_P || 23 || 48 || UART3_RXD || UART3_RXD || GPIO5_IO27&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D3_N || CSI_D3_N || 24 || 47 || UART4_TXD || UART4_TXD || GPIO5_IO29&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D3_P || CSI_D3_P || 25 || 46 || UART4_RXD || UART4_RXD || GPIO5_IO28&lt;br /&gt;
|-&lt;br /&gt;
|| || GND || 26 || 45 || GND || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || PCIE_RXN_N || PCIE_RXN_N || 27 || 44 || USB1_DN || USB1_DN || &lt;br /&gt;
|-&lt;br /&gt;
|| || PCIE_RXN_P || PCIE_RXN_P || 28 || 43 || USB1_DP || USB1_DP || &lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 29 || 42 || USB1_ID || USB1_ID || &lt;br /&gt;
|-&lt;br /&gt;
|| || PCIE_TXN_N || PCIE_TXN_N || 30 || 41 || USB_VBUS || USB{1,2}_VBUS || &lt;br /&gt;
|-&lt;br /&gt;
|| || PCIE_TXN_P || PCIE_TXN_P || 31 || 40 || GND ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| || GND || 32 || 39 || USB2_DN || USB2_DN || &lt;br /&gt;
|-&lt;br /&gt;
|| || PCIE_CLK_N || PCIE_CLK_N || 33 || 38 || USB2_DP || USB2_DP || &lt;br /&gt;
|-&lt;br /&gt;
|| || PCIE_CLK_P || PCIE_CLK_P || 34 || 37 || USB2_ID || USB2_ID || &lt;br /&gt;
|-&lt;br /&gt;
|| || GND || 35 || 36 || RTC_VDD ||  || &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ J4 connector&lt;br /&gt;
|-&lt;br /&gt;
! GPIO !! i.MX8MM pad name !!  OPOS8MM pad name !! Pin !! Pin !! OPOS8MM pad name !! i.MX8MM pad name !! GPIO !! Comments&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || VIN || 1 || 70 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || VIN || 2 || 69 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || VIN || 3 || 68 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || VIN || 4 || 67 || VIN || || ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || VDD_3V3 || 5 || 66 || NVCC_SNVS_1V8 ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ONOFF || ONOFF || 6 || 65 || SYS_RST_B ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 7 || 64 || GND ||  ||&lt;br /&gt;
|- style=&amp;quot;background: yellow;&amp;quot;&lt;br /&gt;
|| GPIO5_IO00 || SAI3_TXC || UART2_TX || 8 || 63 || UART2_RTS || SAI3_RXD || GPIO4_IO30 || rowspan=&amp;quot;2&amp;quot; | Not available on OPOS8MM with Bluetooth chip.&lt;br /&gt;
|- style=&amp;quot;background: yellow;&amp;quot;&lt;br /&gt;
|| GPIO5_IO00 || SAI3_TXC || UART2_TX || 8 || 63 || UART2_RTS || SAI3_RXD || GPIO4_IO30&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO4_IO31 || SAI3_TXFS || UART2_RX || 9 || 62 || UART2_CTS || SAI3_RXC || GPIO4_IO29 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO4_IO21 || SAI2_RXFS || UART1_TX || 10 || 61 || GPIO1_15 || GPIO1_15 || GPIO1_15 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO4_IO22 || SAI2_RXC || UART1_RX || 11 || 60 || GPIO1_14 || GPIO1_14 || GPIO1_14 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO4_IO23 || SAI2_RXD0 || UART1_RTS || 12 || 59 || GPIO1_13 || GPIO1_13 || GPIO1_13 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO4_IO24 || SAI2_TXFS || UART1_CTS || 13 || 58 || GPIO1_12 || GPIO1_12 || GPIO1_12 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO5_IO05 || SPDIF_EXT_CLK || SPDIF_EXT_CLK || 14 || 57 || GPIO1_11 || GPIO1_11 || GPIO1_11 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO5_IO03 || SPDIF_TX || SPDIF_TX || 15 || 56 || GPIO1_10 || GPIO1_10 || GPIO1_10 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO5_IO04 || SPDIF_RX || SPDIF_RX || 16 || 55 || GPIO1_09 || GPIO1_09 || GPIO1_09 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO3_IO24 || SAI5_RXD3 || SAI5_RXD3 || 17 || 54 || GPIO1_08 || GPIO1_08 || GPIO1_08 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO3_IO23 || SAI5_RXD2 || SAI5_RXD2 || 18 || 53 || GPIO1_07 || GPIO1_07 || GPIO1_07 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO3_IO22 || SAI5_RXD1 || SAI5_RXD1 || 19 || 52 || GPIO1_06 || GPIO1_06 || GPIO1_06 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO3_IO21 || SAI5_RXD0 || SAI5_RXD0 || 20 || 51 || GPIO1_05 || GPIO1_05 || GPIO1_05 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO3_IO20 || SAI5_RXC || SAI5_RXC || 21 || 50 || GPIO1_04 || GPIO1_04 || GPIO1_04 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO3_IO25 || SAI5_MCLK || SAI5_MCLK || 22 || 49 || GPIO1_01 || GPIO1_01 || GPIO1_01 ||&lt;br /&gt;
|-&lt;br /&gt;
||  || BOOT_MODE0 || BOOT_MODE0 || 23 || 48 || GPIO1_00 || GPIO1_00 || GPIO1_00 ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO2_IO12 || SD2_CD_B || SD2_CD_B || 24 || 47 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO2_IO15 || SD2_DATA0 || SD2_DATA0 || 25 || 46 || ETH_TXRXM_D  || ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| GPIO2_IO16 || SD2_DATA1 || SD2_DATA1 || 26 || 45 || ETH_TXRXP_D ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO2_IO14 || SD2_CMD || SD2_CMD || 27 || 44 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || GND || 28 || 43 || ETH_TXRXM_C ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO2_IO13 || SD2_CLK || SD2_CLK || 29 || 42 || ETH_TXRXP_C ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || GND || 30 || 41 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO2_IO18 || SD2_DATA3 || SD2_DATA3 || 31 || 40 || ETH_TXRXM_B ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO2_IO17 || SD2_DATA2 || SD2_DATA2 || 32 || 39 || ETH_TXRXP_B ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || GND || 33 || 38 || GND ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || ETH_ACTIVITY || 34 || 37 || ETH_TXRXM_A ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || ETH_LINK# || 35 || 36 || ETH_TXRXP_A ||  ||  ||&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SebastienSz</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=OPOS8MM_PINOUT&amp;diff=14971</id>
		<title>OPOS8MM PINOUT</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=OPOS8MM_PINOUT&amp;diff=14971"/>
		<updated>2021-02-18T09:21:41Z</updated>

		<summary type="html">&lt;p&gt;SebastienSz: Created page with &amp;quot;{| class=&amp;quot;wikitable&amp;quot; |+ J2 connector |- ! GPIO !! i.MX8MM pad name !!  OPOS8MM pad name !! Pin !! Pin !! OPOS8MM pad name !! i.MX8MM pad name !! GPIO |- || || MIPI_DSI_D0_N ||...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ J2 connector&lt;br /&gt;
|-&lt;br /&gt;
! GPIO !! i.MX8MM pad name !!  OPOS8MM pad name !! Pin !! Pin !! OPOS8MM pad name !! i.MX8MM pad name !! GPIO&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D0_N || DSI_D0_N || 1 || 70 || ECSPI1_MOSI || ECSPI1_MOSI || GPIO5_IO07&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D0_P || DSI_D0_P || 2 || 69 || ECSPI1_MISO || ECSPI1_MISO || GPIO5_IO08&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D1_N || DSI_D1_N || 3 || 68 || ECSPI1_SCLK || ECSPI1_SCLK || GPIO5_IO06&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D1_P || DSI_D1_P || 4 || 67 || ECSPI1_SS0 || ECSPI1_SS0 || GPIO5_IO09&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 5 || 66 || GND || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_CLK_N || DSI_CLK_N || 6 || 65 || ECSPI2_MOSI || ECSPI2_MOSI || GPIO5_IO11&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_CLK_P || DSI_CLK_P || 7 || 64 || ECSPI2_MISO || ECSPI2_MISO || GPIO5_IO12&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 8 || 63 || ECSPI2_SCLK || ECSPI2_SCLK || GPIO5_IO10&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D2_N || DSI_D2_N || 9 || 62 || ECSPI2_SS0 || ECSPI2_SS0 || GPIO5_IO13&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D2_P || DSI_D2_P || 10 || 61 || GND ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| || MIP_DSI_D3_N || DSI_D3_N || 11 || 60 || ECSPI3_MOSI || UART1_TXD || GPIO5_IO23&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_DSI_D3_P || DSI_D3_P || 12 || 59 || ECSPI3_MISO || UART2_RXD || GPIO5_IO24&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 13 || 58 || ECSPI3_SCLK || UART1_RXD || GPIO5_IO22&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D0_N || CSI_D0_N || 14 || 57 || ECSPI3_SS0 || UART2_TXD || GPIO5_IO25&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D0_P || CSI_D0_P || 15 || 56 || I2C3_SDA || I2C3_SDA || GPIO5_IO19&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D1_N || CSI_D1_N || 16 || 55 || I2C3_SCL || I2C3_SCL || GPIO5_IO18&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D1_P || CS_D1_P || 17 || 54 || I2C2_SDA || I2C2_SDA || GPIO5_IO17&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 18 || 53 || I2C2_SCL || I2C2_SCL || GPIO5_IO16&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_CLK_P || CSI_CLK_P || 19 || 52 || I2C4_SDA || I2C4_SDA || GPIO5_IO21&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPICSI_CLK_N || CSI_CLK_N || 20 || 51 || I2C4_SCL || I2C4_SCL || GPIO5_IO20&lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 21 || 50 || GND || &lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D2_N || CSI_D2_N || 22 || 49 || UART3_TXD || UART3_TXD || GPIO5_IO26&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D2_P || CSI_D2_P || 23 || 48 || UART3_RXD || UART3_RXD || GPIO5_IO27&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D3_N || CSI_D3_N || 24 || 47 || UART4_TXD || UART4_TXD || GPIO5_IO29&lt;br /&gt;
|-&lt;br /&gt;
|| || MIPI_CSI_D3_P || CSI_D3_P || 25 || 46 || UART4_RXD || UART4_RXD || GPIO5_IO28&lt;br /&gt;
|-&lt;br /&gt;
|| || GND || 26 || 45 || GND || ||&lt;br /&gt;
|-&lt;br /&gt;
|| || PCIE_RXN_N || PCIE_RXN_N || 27 || 44 || USB1_DN || USB1_DN || &lt;br /&gt;
|-&lt;br /&gt;
|| || PCIE_RXN_P || PCIE_RXN_P || 28 || 43 || USB1_DP || USB1_DP || &lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 29 || 42 || USB1_ID || USB1_ID || &lt;br /&gt;
|-&lt;br /&gt;
|| || PCIE_TXN_N || PCIE_TXN_N || 30 || 41 || USB_VBUS || USB{1,2}_VBUS || &lt;br /&gt;
|-&lt;br /&gt;
|| || PCIE_TXN_P || PCIE_TXN_P || 31 || 40 || GND ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| || GND || 32 || 39 || USB2_DN || USB2_DN || &lt;br /&gt;
|-&lt;br /&gt;
|| || PCIE_CLK_N || PCIE_CLK_N || 33 || 38 || USB2_DP || USB2_DP || &lt;br /&gt;
|-&lt;br /&gt;
|| || PCIE_CLK_P || PCIE_CLK_P || 34 || 37 || USB2_ID || USB2_ID || &lt;br /&gt;
|-&lt;br /&gt;
|| || GND || 35 || 36 || RTC_VDD ||  || &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ J4 connector&lt;br /&gt;
|-&lt;br /&gt;
! GPIO !! i.MX8MM pad name !!  OPOS8MM pad name !! Pin !! Pin !! OPOS8MM pad name !! i.MX8MM pad name !! GPIO&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || VIN || 1 || 70 || VIN || ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || VIN || 2 || 69 || VIN || ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || VIN || 3 || 68 || VIN || ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || VIN || 4 || 67 || VIN || ||&lt;br /&gt;
|-&lt;br /&gt;
|| ||  || VDD_3V3 || 5 || 66 || NVCC_SNVS_1V8 ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|| || ONOFF || ONOFF || 6 || 65 || SYS_RST_B ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| || || GND || 7 || 64 || GND || &lt;br /&gt;
|-&lt;br /&gt;
|| GPIO5_IO00 || SAI3_TXC || UART2_TX || 8 || 63 || UART2_RTS || SAI3_RXD || GPIO4_IO30&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO5_IO00 || SAI3_TXC || UART2_TX || 8 || 63 || UART2_RTS || SAI3_RXD || GPIO4_IO30&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO4_IO31 || SAI3_TXFS || UART2_RX || 9 || 62 || UART2_CTS || SAI3_RXC || GPIO4_IO29&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO4_IO21 || SAI2_RXFS || UART1_TX || 10 || 61 || GPIO1_15 || GPIO1_15 || GPIO1_15&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO4_IO22 || SAI2_RXC || UART1_RX || 11 || 60 || GPIO1_14 || GPIO1_14 || GPIO1_14&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO4_IO23 || SAI2_RXD0 || UART1_RTS || 12 || 59 || GPIO1_13 || GPIO1_13 || GPIO1_13&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO4_IO24 || SAI2_TXFS || UART1_CTS || 13 || 58 || GPIO1_12 || GPIO1_12 || GPIO1_12&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO5_IO05 || SPDIF_EXT_CLK || SPDIF_EXT_CLK || 14 || 57 || GPIO1_11 || GPIO1_11 || GPIO1_11&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO5_IO03 || SPDIF_TX || SPDIF_TX || 15 || 56 || GPIO1_10 || GPIO1_10 || GPIO1_10&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO5_IO04 || SPDIF_RX || SPDIF_RX || 16 || 55 || GPIO1_09 || GPIO1_09 || GPIO1_09&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO3_IO24 || SAI5_RXD3 || SAI5_RXD3 || 17 || 54 || GPIO1_08 || GPIO1_08 || GPIO1_08&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO3_IO23 || SAI5_RXD2 || SAI5_RXD2 || 18 || 53 || GPIO1_07 || GPIO1_07 || GPIO1_07&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO3_IO22 || SAI5_RXD1 || SAI5_RXD1 || 19 || 52 || GPIO1_06 || GPIO1_06 || GPIO1_06&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO3_IO21 || SAI5_RXD0 || SAI5_RXD0 || 20 || 51 || GPIO1_05 || GPIO1_05 || GPIO1_05&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO3_IO20 || SAI5_RXC || SAI5_RXC || 21 || 50 || GPIO1_04 || GPIO1_04 || GPIO1_04&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO3_IO25 || SAI5_MCLK || SAI5_MCLK || 22 || 49 || GPIO1_01 || GPIO1_01 || GPIO1_01&lt;br /&gt;
|-&lt;br /&gt;
||  || BOOT_MODE0 || BOOT_MODE0 || 23 || 48 || GPIO1_00 || GPIO1_00 || GPIO1_00&lt;br /&gt;
|-&lt;br /&gt;
|| GPIO2_IO12 || SD2_CD_B || SD2_CD_B || 24 || 47 || GND ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| GPIO2_IO15 || SD2_DATA0 || SD2_DATA0 || 25 || 46 || ETH_TXRXM_D ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| GPIO2_IO16 || SD2_DATA1 || SD2_DATA1 || 26 || 45 || ETH_TXRXP_D ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| GPIO2_IO14 || SD2_CMD || SD2_CMD || 27 || 44 || GND ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| ||  || GND || 28 || 43 || ETH_TXRXM_C ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| GPIO2_IO13 || SD2_CLK || SD2_CLK || 29 || 42 || ETH_TXRXP_C ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| ||  || GND || 30 || 41 || GND ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| GPIO2_IO18 || SD2_DATA3 || SD2_DATA3 || 31 || 40 || ETH_TXRXM_B ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| GPIO2_IO17 || SD2_DATA2 || SD2_DATA2 || 32 || 39 || ETH_TXRXP_B ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| ||  || GND || 33 || 38 || GND ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| ||  || ETH_ACTIVITY || 34 || 37 || ETH_TXRXM_A ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| ||  || ETH_LINK# || 35 || 36 || ETH_TXRXP_A ||  || &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SebastienSz</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=Bluetooth&amp;diff=14960</id>
		<title>Bluetooth</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=Bluetooth&amp;diff=14960"/>
		<updated>2020-12-07T08:34:08Z</updated>

		<summary type="html">&lt;p&gt;SebastienSz: Add OPOS8MM to bring up section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page will give you all the informations needed to have a running Bluetooth configuration on your Armadeus board.&lt;br /&gt;
&lt;br /&gt;
==Hardware==&lt;br /&gt;
First you have to get a compatible hardware. Currently there are 6 solutions:&lt;br /&gt;
* You have an [[OPOS8MM]] or an [[OPOS6UL]] board with the Wi-Fi/Bluetooth chip integrated.&lt;br /&gt;
* You have an [[APF6]] board with the Wi-Fi/Bluetooth chip integrated. The chip is on the [[APF6]] Dual and Quad boards by default.&lt;br /&gt;
* You have an [[APF51Dev]] board, then you&#039;re a lucky man because Bluetooth is integrated on the board ;-)&lt;br /&gt;
* If you have an [[APF27Dev]], then you can get a [[Wireless extension board]] with Wi-Fi/Bluetooth option from Armadeus Systems&lt;br /&gt;
* Otherwise: get a cheap USB&amp;lt;-&amp;gt;Bluetooth adapter (requires an USB Host port) or a RS232&amp;lt;-&amp;gt;Bluetooth adapter&lt;br /&gt;
&lt;br /&gt;
===Tested USB adapters===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;Supported USB&amp;lt;-&amp;gt;Bluetooth dongle&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot;&lt;br /&gt;
!&#039;&#039;&#039;Model&#039;&#039;&#039; || colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;Status&amp;lt;br&amp;gt; APF9328 / APF27&#039;&#039;&#039; ||&#039;&#039;&#039;Chipset&#039;&#039;&#039; || &#039;&#039;&#039;Comments&#039;&#039;&#039;&lt;br /&gt;
|----------------&lt;br /&gt;
|&#039;&#039;&#039;BELKIN - Mini Bluetooth Adapter&#039;&#039;&#039; [[Image:Belkin_Mini_Bluetooth.jpg]] || style=&amp;quot;background:#ffff00;&amp;quot; | TBT || style=&amp;quot;background:#ff0000;&amp;quot; | KO || Product: BLUETOOTH USB +EDR ADAPTER v2.1 UHE &amp;lt;br&amp;gt; Manufacturer: Broadcom Corp&lt;br /&gt;
  || # hciconfig hci1 up piscan&lt;br /&gt;
btusb_submit_intr_urb: hci1 urb c3bdac40 submission failed (28)&amp;lt;br&amp;gt;&lt;br /&gt;
Can&#039;t init device hci1: Input/output error (5)&lt;br /&gt;
&lt;br /&gt;
|----------------&lt;br /&gt;
|&#039;&#039;&#039;TRUST - Bluetooth 2.1 USB Adapter&#039;&#039;&#039; [[Image:Trust_Small_Bluetooth.jpg]] || style=&amp;quot;background:#ffff00;&amp;quot; | TBT || style=&amp;quot;background:#ff0000;&amp;quot; | KO || Product: BCM2046B1 &amp;lt;br&amp;gt; Manufacturer: Broadcom ||  # hciconfig hci1 up piscan&lt;br /&gt;
btusb_submit_intr_urb: hci1 urb c3bdac40 submission failed (28)&amp;lt;br&amp;gt;&lt;br /&gt;
Can&#039;t init device hci1: Input/output error (5)&lt;br /&gt;
|----------------&lt;br /&gt;
|&#039;&#039;&#039;[http://www.rueducommerce.fr/Peripheriques-Reseaux-wifi/Adaptateur-USB-Bluetooth/Adaptateur-USB-Bluetooth/RUEDUCOMMERCE/2848164-Mini-adaptateur-USB-Bluetooth-portee-100m-19x15x5-39-mm.htm RUEDUCOMMERCE - Mini adaptateur USB Bluetooth&#039;&#039;&#039;] [[Image:RDC_USB_Bluetooth.jpg]]|| style=&amp;quot;background:#ffff00;&amp;quot; | TBT || style=&amp;quot;background:#00ff00;&amp;quot; | OK || Manufacturer: Cambridge Silicon Radio || &lt;br /&gt;
|----------------&lt;br /&gt;
|&#039;&#039;&#039;GIGABYTE - GN-BTD01&#039;&#039;&#039; [[Image:Gigabyte_gn-btd01.jpg]]|| style=&amp;quot;background:#ffff00;&amp;quot; | TBT || style=&amp;quot;background:#00ff00;&amp;quot; | OK || Manufacturer: Cambridge Silicon Radio || Bluetooth 1.1 ?&lt;br /&gt;
|----------------&lt;br /&gt;
|&#039;&#039;&#039;BELKIN - F8T003 v2&#039;&#039;&#039; || style=&amp;quot;background:#ffff00;&amp;quot; | TBT || style=&amp;quot;background:#00ff00;&amp;quot; | OK || Manufacturer: Cambridge Silicon Radio || &lt;br /&gt;
|----------------&lt;br /&gt;
|&#039;&#039;&#039;D-LINK - DBT-122&#039;&#039;&#039; || style=&amp;quot;background:#ffff00;&amp;quot; | TBT || style=&amp;quot;background:#00ff00;&amp;quot; | OK || Product: BCM2035 &amp;lt;br&amp;gt; Manufacturer: Broadcom || &lt;br /&gt;
|----------------&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Bluetooth Linux stack is divided into several parts:&lt;br /&gt;
* kernel drivers&lt;br /&gt;
* userland libraries/daemon (bluez)&lt;br /&gt;
&lt;br /&gt;
===Driver installation===&lt;br /&gt;
* (Done by default on [[APF27]], [[APF51]], [[APF6]] and [[OPOS6UL]])&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ make linux-menuconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
[*] Networking support  ---&amp;gt;&lt;br /&gt;
    &amp;lt;M&amp;gt;   Bluetooth subsystem support  ---&amp;gt;&lt;br /&gt;
        --- Bluetooth subsystem support&lt;br /&gt;
            &amp;lt;M&amp;gt;   L2CAP protocol support &lt;br /&gt;
            &amp;lt;M&amp;gt;   SCO links support&lt;br /&gt;
            &amp;lt;M&amp;gt;   RFCOMM protocol support&lt;br /&gt;
                [*]     RFCOMM TTY support&lt;br /&gt;
            &amp;lt;M&amp;gt;   BNEP protocol support&lt;br /&gt;
                [ ]     Multicast filter support (NEW)&lt;br /&gt;
                [ ]     Protocol filter support (NEW)&lt;br /&gt;
            &amp;lt;M&amp;gt;   HIDP protocol support&lt;br /&gt;
            Bluetooth device drivers  ---&amp;gt;&lt;br /&gt;
                &amp;lt;M&amp;gt; HCI USB driver &lt;br /&gt;
                &amp;lt; &amp;gt; HCI SDIO driver (NEW)&lt;br /&gt;
                &amp;lt;M&amp;gt; HCI UART driver&lt;br /&gt;
                    [*]   UART (H4) protocol support &lt;br /&gt;
                    [*]   BCSP protocol support &lt;br /&gt;
                    [ ]   HCILL protocol support (NEW)&lt;br /&gt;
                &amp;lt; &amp;gt; HCI BCM203x USB driver (NEW)&lt;br /&gt;
                &amp;lt; &amp;gt; HCI BPA10x USB driver (NEW)&lt;br /&gt;
                &amp;lt; &amp;gt; HCI BlueFRITZ! USB driver (NEW)&lt;br /&gt;
                &amp;lt; &amp;gt; HCI VHCI (Virtual HCI device) driver (NEW)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Bluez installation===&lt;br /&gt;
(Done by default on [[APF51]], [[APF6]] and [[OPOS6UL]])&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ make menuconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
Package Selection for the target  ---&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    [*] XML handling  ---&amp;gt;&lt;br /&gt;
        [*]   libxml2&lt;br /&gt;
    ...&lt;br /&gt;
    [*] Hardware handling  ---&amp;gt;&lt;br /&gt;
        [*]   dbus&lt;br /&gt;
              XML library to use (libxml2)&lt;br /&gt;
    ...&lt;br /&gt;
    Networking applications  ---&amp;gt;&lt;br /&gt;
    [*] bluez&lt;br /&gt;
    [*] bluez-utils&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Custom Bring up (each hardware may have a different init sequence)==&lt;br /&gt;
&lt;br /&gt;
===OPOS8MM===&lt;br /&gt;
&lt;br /&gt;
OPOS8MM has a Bluetooth chip connected to the i.MX8MM UART2 (&#039;&#039;/dev/ttymxc2&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
* Start the Bluetooth deamon&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# /usr/libexec/bluetooth/bluetoothd &amp;amp;&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Power on the chip.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# gpioset 2 16=1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Attach the chip.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# btattach -B /dev/ttymxc1 -P bcm -S 921600 &amp;amp;&lt;br /&gt;
Attaching Primary controller to /dev/ttymxc1&lt;br /&gt;
Switched line discipline from 0 to 15&lt;br /&gt;
Device index 0 attached&lt;br /&gt;
Bluetooth: hci0: BCM: chip id 107&lt;br /&gt;
Bluetooth: hci0: BCM: features 0x2f&lt;br /&gt;
Bluetooth: hci0: BCM4345C0&lt;br /&gt;
Bluetooth: hci0: BCM4345C0 (003.001.025) build 0000&lt;br /&gt;
Bluetooth: hci0: BCM4345C0 (003.001.025) build 0127 # this message takes few seconds to appear&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Bluetooth#Common Bring up|Go to &amp;quot;Common Bring up&amp;quot; section]]&lt;br /&gt;
&lt;br /&gt;
===OPOS6UL===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;put summary here&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! width=&amp;quot;50%&amp;quot; | OPOS6UL !! width=&amp;quot;50%&amp;quot; | OPOS6ULNANO&lt;br /&gt;
|-&lt;br /&gt;
| OPOS6UL has a CM-43438 chip (based on BCM43438), connected to the i.MX6UL UART8 (&#039;&#039;/dev/ttymxc7&#039;&#039;)&lt;br /&gt;
| OPOS6ULNANO has a Murata module with CYM4343 chipset, connected to the i.MX6UL UART3 (&#039;&#039;/dev/ttymxc2&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;# export BTRESET=42&amp;lt;/pre&amp;gt; &amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;# export BTDEV=/dev/ttymxc7&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;# export BTRESET=99&amp;lt;/pre&amp;gt; &amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;# export BTDEV=/dev/ttymxc2&amp;lt;/pre&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Start the bluetooth deamon and attach your chipset to the kernel bluez UART driver:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# /usr/libexec/bluetooth/bluetoothd &amp;amp;&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Wake up the chip&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# echo $BTRESET &amp;gt; /sys/class/gpio/export&lt;br /&gt;
# echo out &amp;gt; /sys/class/gpio/gpio$BTRESET/direction&lt;br /&gt;
# echo 0 &amp;gt; /sys/class/gpio/gpio$BTRESET/value&lt;br /&gt;
# sleep 1&lt;br /&gt;
# echo 1 &amp;gt; /sys/class/gpio/gpio$BTRESET/value&lt;br /&gt;
# sleep 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Attach the chip. Before running the following command, be sure that the file &#039;&#039;/etc/firmware/BCM43430A1.hcd&#039;&#039; exists (if not, it can be obtained (wget) [https://github.com/OpenELEC/misc-firmware/blob/master/firmware/brcm/BCM43430A1.hcd here ?] or [https://aur.archlinux.org/cgit/aur.git/plain/BCM43430A1.hcd?h=pi-bluetooth here]) !&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# hciattach -t 30 $BTDEV bcm43xx 921600 flow&lt;br /&gt;
bcm43xx_init&lt;br /&gt;
Set Controller UART speed to 921600 bit/s&lt;br /&gt;
Flash firmware /etc/firmware/BCM43430A1.hcd&lt;br /&gt;
Set Controller UART speed to 921600 bit/s&lt;br /&gt;
Device setup complete&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* To choose bluetooth MAC address, add it to &#039;&#039;hciattach&#039;&#039; command&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# hciattach -t 30 $BTDEV bcm43xx 921600 flow bdaddr 11:22:33:44:55:66&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* [[Bluetooth#Common Bring up|Go to &amp;quot;Common Bring up&amp;quot; section]]&lt;br /&gt;
&lt;br /&gt;
===APF6===&lt;br /&gt;
* APF6 has a jorjin chip connected to the i.MX6 UART2 (ttymxc1)&lt;br /&gt;
&lt;br /&gt;
* Start the bluetooth deamon and attach your chipset to the kernel bluez UART driver:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# /usr/sbin/bluetoothd&lt;br /&gt;
NET: Registered protocol family 31&lt;br /&gt;
Bluetooth: HCI device and connection manager initialized&lt;br /&gt;
Bluetooth: HCI socket layer initialized&lt;br /&gt;
Bluetooth: L2CAP socket layer initialized&lt;br /&gt;
Bluetooth: SCO socket layer initialized&lt;br /&gt;
Bluetooth: BNEP (Ethernet Emulation) ver 1.3&lt;br /&gt;
Bluetooth: BNEP socket layer initialized&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or if you are using BlueZ 5&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# /usr/libexec/bluetooth/bluetoothd &amp;amp;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Wake up the chip&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# export BTRESET=43&lt;br /&gt;
# echo $BTRESET &amp;gt; /sys/class/gpio/export&lt;br /&gt;
# echo out &amp;gt; /sys/class/gpio/gpio$BTRESET/direction&lt;br /&gt;
# echo 0 &amp;gt; /sys/class/gpio/gpio$BTRESET/value&lt;br /&gt;
# sleep 1&lt;br /&gt;
# echo 1 &amp;gt; /sys/class/gpio/gpio$BTRESET/value&lt;br /&gt;
# sleep 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Attach the chip. Before running the following command, be sure that the file &#039;&#039;/lib/firmware/TIInit_7.6.15.bts&#039;&#039; exists ! You can download it [https://github.com/TI-ECS/bt-firmware/blob/master/TIInit_7.6.15.bts here] (click on the &#039;Raw&#039; button)&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# /usr/sbin/hciattach -s 115200 ttymxc1 texas 115200&lt;br /&gt;
Found a Texas Instruments&#039; chip!&lt;br /&gt;
Firmware file : /lib/firmware/TIInit_7.6.15.bts&lt;br /&gt;
Loaded BTS script version 1&lt;br /&gt;
Device setup complete&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Bluetooth#Common Bring up|Go to &amp;quot;Common Bring up&amp;quot; section]]&lt;br /&gt;
&lt;br /&gt;
===APF51Dev===&lt;br /&gt;
* [[APF51Dev]] has a CSR BlueCore 4 chipset connected to the i.MX51 UART3 (ttymxc1)&lt;br /&gt;
&lt;br /&gt;
* On recent kernel using device tree, you have to &amp;quot;wake up&amp;quot; the chip:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# export BTRESET=60&lt;br /&gt;
# echo $BTRESET &amp;gt; /sys/class/gpio/export&lt;br /&gt;
# echo out &amp;gt; /sys/class/gpio/gpio$BTRESET/direction&lt;br /&gt;
# echo 0 &amp;gt; /sys/class/gpio/gpio$BTRESET/value&lt;br /&gt;
# sleep 1&lt;br /&gt;
# echo 1 &amp;gt; /sys/class/gpio/gpio$BTRESET/value&lt;br /&gt;
# sleep 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Start the bluetooth deamon and attach your chipset to the kernel bluez UART driver:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# /usr/sbin/bluetoothd&lt;br /&gt;
# /usr/sbin/hciattach -s 115200 ttymxc1 csr 115200&lt;br /&gt;
&lt;br /&gt;
CSR build ID 0x00-0x37&lt;br /&gt;
Bluetooth: Core ver 2.15&lt;br /&gt;
NET: Registered protocol family 31&lt;br /&gt;
Bluetooth: HCI device and connection manager initialized&lt;br /&gt;
Bluetooth: HCI socket layer initialized&lt;br /&gt;
Bluetooth: HCI UART driver ver 2.2&lt;br /&gt;
Bluetooth: HCI H4 protocol initialized&lt;br /&gt;
Bluetooth: HCI BCSP protocol initialized&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Bluetooth#Common Bring up|Go to &amp;quot;Common Bring up&amp;quot; section]]&lt;br /&gt;
&lt;br /&gt;
===APF27Dev + APW===&lt;br /&gt;
* [[Wireless extension board|APW]] has a CSR BlueCore 4 chipset connected to the i.MX27 serial port ttySMX5 (UART6)&lt;br /&gt;
* Reset it:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# source /usr/bin/gpio_helpers.sh&lt;br /&gt;
# gpio_mode PB14 1&lt;br /&gt;
# gpio_set_value PB14 0; sleep 1; gpio_set_value PB14 1; sleep 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Attach it to the kernel bluez UART driver:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# /usr/sbin/hciattach -s 921600 ttySMX5 csr 921600&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* [[Bluetooth#Common Bring up|Go to &amp;quot;Common Bring up&amp;quot; section]]&lt;br /&gt;
&lt;br /&gt;
===USB module===&lt;br /&gt;
* Make sure your hardware is connected to the APF. &#039;&#039;&#039;If using an USB dongle&#039;&#039;&#039;, load corresponding driver:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# modprobe btusb&lt;br /&gt;
Bluetooth: Core ver 2.14&lt;br /&gt;
NET: Registered protocol family 31&lt;br /&gt;
Bluetooth: HCI device and connection manager initialized&lt;br /&gt;
Bluetooth: HCI socket layer initialized&lt;br /&gt;
Bluetooth: Generic Bluetooth USB driver ver 0.4&lt;br /&gt;
usbcore: registered new interface driver btusb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Common Bring up==&lt;br /&gt;
* Now that your hardware Bluetooth interface is up, check if it was correctly detected by BlueZ:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# hciconfig&lt;br /&gt;
hci0:   Type: USB or UART&lt;br /&gt;
        BD Address: 00:00:00:00:00:00 ACL MTU: 0:0 SCO MTU: 0:0&lt;br /&gt;
        DOWN&lt;br /&gt;
        RX bytes:0 acl:0 sco:0 events:0 errors:0&lt;br /&gt;
        TX bytes:0 acl:0 sco:0 commands:0 errors:0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* If interface is DOWN, bring it up:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# hciconfig hci0 up piscan&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Check your Bluetooth device is correctly initialized:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# hcitool dev&lt;br /&gt;
Devices:&lt;br /&gt;
        hci0    00:10:60:D1:92:0F&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* From Bluez5, everything can now be done with &#039;&#039;bluetoohctl&#039;&#039; interactive command:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# bluetoothctl &lt;br /&gt;
[NEW] Controller 5C:F3:70:34:D6:66 BlueZ 5.43 [default]&lt;br /&gt;
[bluetooth]# power on&lt;br /&gt;
Changing power on succeeded&lt;br /&gt;
[CHG] Controller 5C:F3:70:34:D6:66 Powered: yes&lt;br /&gt;
&lt;br /&gt;
[bluetooth]# scan on&lt;br /&gt;
Discovery started&lt;br /&gt;
[CHG] Controller 5C:F3:70:34:D6:66 Discovering: yes&lt;br /&gt;
&lt;br /&gt;
[bluetooth]# agent on&lt;br /&gt;
Agent registered&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
===Scanning network===&lt;br /&gt;
* To get surrounding devices addresses and names:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# hcitool scan&lt;br /&gt;
Scanning ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* To get surrounding devices addresses and classes:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# hcitool inq&lt;br /&gt;
Inquiring ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Get info on a given device===&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# hcitool info 00:19:0E:xx:xx:xx&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Pinging other devices===&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# l2ping 00:19:0E:xx:xx:xx&lt;br /&gt;
Ping: 00:19:0E:xx:xx:xx from 00:19:88:xx:xx:xx (data size 44) ...&lt;br /&gt;
44 bytes from 00:19:0E:xx:xx:xx id 0 time 38.05ms&lt;br /&gt;
44 bytes from 00:19:0E:xx:xx:xx id 1 time 37.09ms&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here 00:19:0E:xx:xx:xx is the Bluetooth MAC address of the Host.&lt;br /&gt;
&lt;br /&gt;
===Change advertising name===&lt;br /&gt;
* to change your module&#039;s name on Bluetooth network:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# hciconfig hci0 name ARMADEUS&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* From bluez5, you can also specify advertising name in &#039;&#039;/etc/bluetooth/main.conf&#039;&#039; file (%h = hostname, %d = device number):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
[General]&lt;br /&gt;
Name = OPOS&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
or specify it from &#039;&#039;bluetoothctl&#039;&#039; tool:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# bluetoothctl&lt;br /&gt;
[bluetooth]# system-alias OPOSxxx&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Advanced usages: Setup a Terminal between a PC and your APF through Bluetooth==&lt;br /&gt;
===On the APF===&lt;br /&gt;
* the first step is to create the corresponding node for the future connection:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# mknod /dev/rfcomm0 c 216 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* then, listen to an incoming connection, on the &#039;&#039;rfcomm0&#039;&#039; (here channel 7 is chosen):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# rfcomm -i hci0 listen /dev/rfcomm0 7 &amp;amp;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{Note|If RFCOMM protocol is not built statically in your kernel, you might need to load it before use with: &amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;# modprobe rfcomm &amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Note|If you plan to connect from your smartphone, don&#039;t specify a channel number as most apps will try to connect to channel 1: &amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;# rfcomm -i hci0 listen /dev/rfcomm0 &amp;amp;&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
* and the last step, when the connection is open, is to connect a terminal (through getty) to the device &#039;&#039;/dev/rfcomm0&#039;&#039;:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# getty 38400 /dev/rfcomm0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===On your Host PC===&lt;br /&gt;
* after the two first steps on the APF, you need to connect the PC to the APF with the same channel (7):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ rfcomm connect 0 00:19:88:2B:xx:xx 7             (replace 00:19:88:2B:xx:xx with the Bluetooth @ of your APF)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* and configure &#039;&#039;minicom&#039;&#039; (&#039;&#039;$HOME/.minirc.dfl&#039;&#039;):&lt;br /&gt;
 pu port             /dev/rfcomm0&lt;br /&gt;
 pu baudrate         38400&lt;br /&gt;
 pu bits             8&lt;br /&gt;
 pu parity           N&lt;br /&gt;
 pu stopbits         1&lt;br /&gt;
* when &#039;&#039;getty&#039;&#039; is running on the APF/OPOS, you could you connect with &#039;&#039;minicom&#039;&#039;:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ minicom -o&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* it could be a good idea to create an additional user account for remotely login through Bluetooth, by following [[Adding_users|these instructions]].&lt;br /&gt;
&lt;br /&gt;
===On your Android smartphone===&lt;br /&gt;
You can also setup a serial terminal connection between your OPOS and your Android smartphone. Procedure is quite similar to the one above for PC, except:&lt;br /&gt;
* install &amp;quot;BlueTerm&amp;quot; or &amp;quot;Serial Bluetooth Terminal&amp;quot; app on your smartphone&lt;br /&gt;
* if using bluez-5, launch bluetooth daemon in compatibility mode:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# bluetoothctl --version&lt;br /&gt;
bluetoothctl: 5.54&lt;br /&gt;
# /usr/libexec/bluetooth/bluetoothd --compat &amp;amp;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* use sdptool to add RFCOMM profile to Bluetooth stack:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# sdptool add SP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* connect your app to right Bluetooth device... that&#039;s it ;-) (you may have to configure your app in terminal mode, with no echo and extended receive buffer)&lt;br /&gt;
&lt;br /&gt;
==Advanced usages: Using a Bluetooth keyboard on your APF==&lt;br /&gt;
The only thing needed after having a Bluetooth correctly configured is to use this command :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# hidd --connect keyboard_bdaddr&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Advanced usages: Controlling your board from an android device (using rfcomm)==&lt;br /&gt;
&lt;br /&gt;
===With your own App===&lt;br /&gt;
The following section shows how to send commands to the board from an android device via Bluetooth. The goal is to control the two LEDs present on the board. An [[APF51Dev]] and a Samsung Galaxy Tab 2 are used in this example.&lt;br /&gt;
&lt;br /&gt;
On the APF:&lt;br /&gt;
&lt;br /&gt;
* Enable the SPP profile. Here, it is using the channel 1.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# sdptool add --channel=1 SP&lt;br /&gt;
Serial Port service registered&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Listen incoming connections on the channel 1. The script &#039;&#039;serial-server.sh&#039;&#039; is located in &#039;&#039;demos/android/android_remote_controller&#039;&#039;.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# rfcomm listen hci0 1 ./serial-server.sh {}&lt;br /&gt;
Waiting for connection on channel 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On the android device:&lt;br /&gt;
&lt;br /&gt;
* Deploy the app on your device. The app is available [ftp://ftp2.armadeus.com/armadeusw/apf-remote-controller.tar.gz here as source] or [ftp://ftp2.armadeus.com/armadeusw/apf-remote-controller.apk here as apk].&lt;br /&gt;
* Start the app.&lt;br /&gt;
* Enjoy :-)&lt;br /&gt;
&lt;br /&gt;
===With Bluetooth Electronics App===&lt;br /&gt;
* This application from [http://www.keuwl.com/apps/bluetoothelectronics/ keuwl.com], can be found on Google store and is very practical to design control panel on your Android device and make then control your Bluetooh device). It is generally used with Arduino and HC-06 Bluetooth module but we will see it works perfectly on APF/OPOS SoM.&lt;br /&gt;
* Bluetooth Electronics uses RFCOMM to talk with device and so communication can be seen as a serial port&lt;br /&gt;
* Again, use &#039;&#039;rfcomm&#039;&#039; command line tool to listen for your Android device connection:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
[bluetooth]# power on&lt;br /&gt;
...&lt;br /&gt;
# rfcomm -i hci0 listen /dev/rfcomm0 &amp;amp;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Discover/pair/connect the APF/OPOS SoM from Bluetooth Electronics app&lt;br /&gt;
* Then configure &#039;&#039;/dev/rfcomm0&#039;&#039; created by rfcomm:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# stty -F /dev/rfcomm0 raw -echo -echoe -echok 9600&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* and use this new serial port from your application...&lt;br /&gt;
* here a sample application is given; it runs on [[OPOS6UL]] and allows to light on/off the user LED, get processor temperature, get CPU usage and send text to LCD from Bluetooth Electronics panel. Serial protocol is very simple and can be guessed from [https://sourceforge.net/p/armadeus/code/ci/master/tree/target/demos/android/bluetooth-electronics/opos6ul-server.py source code].&lt;br /&gt;
&lt;br /&gt;
[[File:Bluetooth_Electronics.png]]&lt;br /&gt;
&lt;br /&gt;
==Advanced usages: Others==&lt;br /&gt;
* [[TCP/IP with Bluetooth]]&lt;br /&gt;
* [[OBEX]] transfers&lt;br /&gt;
* [[Wiimote]]&lt;br /&gt;
&lt;br /&gt;
{{Note|On iOS, it is &#039;&#039;&#039;not&#039;&#039;&#039; possible to use standard Bluetooth devices that are not registered through [https://developer.apple.com/programs/mfi/ MFi Program]. The only way to communicate with your modules is to have a Bluetooth Low Energy interface and corresponding iOS software}}&lt;br /&gt;
&lt;br /&gt;
==Bluetooth Low Energy (BLE)==&lt;br /&gt;
* This protocol enhancement for low energy networks is only available on [[APF6]], [[OPOS6UL]] and [[OPOS6UL_NANO]] modules with corresponding Wi-Fi+BLE hardware option.&lt;br /&gt;
&lt;br /&gt;
* To scan for BLE devices (&#039;&#039;hci0&#039;&#039; interface should be up):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# hcitool hci0 lescan&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Most operations can then be done with &#039;&#039;bluetoothctl&#039;&#039;:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# bluetoothctl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===APF/OPOS as BLE device===&lt;br /&gt;
* Most of the job consist in developing a GATT server implementing desired functionalities/characteristics. Some examples are given in Bluez sources. For example (&#039;&#039;python&#039;&#039; is needed and &#039;&#039;bluetoothd&#039;&#039; should have been launched with &#039;&#039;--experimental&#039;&#039; option):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# hciconfig hci0 up&lt;br /&gt;
# /root/example-gatt-server&lt;br /&gt;
# hciconfig hci0 leadv         (to start BLE Advertising)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* You can then use &#039;&#039;BLE Scanner&#039;&#039; or &#039;&#039;LightBlue&#039;&#039; Android/iOS app.&lt;br /&gt;
* For &amp;quot;iBeacon&amp;quot; stuff, [http://www.wadewegner.com/2014/05/create-an-ibeacon-transmitter-with-the-raspberry-pi/ this tutorial] may serve as a starting example.&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* http://www.bluez.org/&lt;br /&gt;
* http://www.hanscees.com/bluezhowto.html&lt;br /&gt;
* [http://doc.ubuntu-fr.org/bluetooth_materiel-soutenu Dongle USB&amp;lt;-&amp;gt;Bluetooth supportés sous Ubuntu]&lt;br /&gt;
* [http://www.unixgarden.com/index.php/comprendre/bluetooth-installation-et-utilisation GLMF n°88 - Bluetooth, installation et utilisation]&lt;br /&gt;
* [http://www.unixgarden.com/index.php/embarque/communication-de-donnees-et-d’images-issues-de-la-carte-fox-par-bluetooth GLMF n°95 - Communication de données et d&#039;images issues de la carte Fox par Bluetooth]&lt;br /&gt;
&lt;br /&gt;
[[Category:Wireless]]&lt;br /&gt;
[[Category:Bluetooth]]&lt;/div&gt;</summary>
		<author><name>SebastienSz</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=EMMC_OPOS8MM&amp;diff=14955</id>
		<title>EMMC OPOS8MM</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=EMMC_OPOS8MM&amp;diff=14955"/>
		<updated>2020-10-14T07:32:03Z</updated>

		<summary type="html">&lt;p&gt;SebastienSz: /* User Data partition layout */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: eMMC]]&lt;br /&gt;
&lt;br /&gt;
= OPOS8MM eMMC layout =&lt;br /&gt;
&lt;br /&gt;
By default, the 4GB eMMC on [[OPOS8MM]] module has 4 physical/hardware partitions:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;OPOS8MM eMMC partitions&amp;quot;&lt;br /&gt;
|----------------&lt;br /&gt;
| style=&amp;quot;width:80px;background:orange;&amp;quot; align=&amp;quot;center&amp;quot; | Boot0&lt;br /&gt;
| style=&amp;quot;width:80px;background:orange;&amp;quot; align=&amp;quot;center&amp;quot; | Boot1&lt;br /&gt;
| style=&amp;quot;background:red;&amp;quot; | RPMB&lt;br /&gt;
| style=&amp;quot;width:500px;background:green;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | User Data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;OPOS8MM eMMC partitions details&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
!Name || U-Boot name || Size || Comment&lt;br /&gt;
|----------------&lt;br /&gt;
|boot0 || mmc dev 0 1 || 2MBytes || U-Boot is installed on this partition&lt;br /&gt;
|----------------&lt;br /&gt;
|boot1 || mmc dev 0 2 || 2MBytes || U-Boot env is installed on this partition&lt;br /&gt;
|----------------&lt;br /&gt;
|rpmb || mmc dev 0 3 || 512KBytes || Not used&lt;br /&gt;
|----------------&lt;br /&gt;
|User Data || mmc dev 0 0 || remaining space (~3,7GBytes) || Kernel, device tree and rootfs&lt;br /&gt;
|----------------&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Boot0 partition layout ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;OPOS8MM eMMC partitions&amp;quot;&lt;br /&gt;
|----------------&lt;br /&gt;
| style=&amp;quot;width:10px;background:white;color:black;&amp;quot; align=&amp;quot;center&amp;quot; | ...&lt;br /&gt;
| style=&amp;quot;width:40px;background:orange;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | SPL&lt;br /&gt;
| style=&amp;quot;width:100px;background:white;color:black;&amp;quot; align=&amp;quot;center&amp;quot; | ...&lt;br /&gt;
| style=&amp;quot;width:150px;background:orange;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | IMG&lt;br /&gt;
| style=&amp;quot;width:150px;background:white;color:black;&amp;quot; align=&amp;quot;center&amp;quot; | ...&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Linux device: &#039;&#039;/dev/mmcblk0boot0&#039;&#039;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;Boot0 partition detail&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Offset (blocks) || Offset (bytes) || Size (bytes) || Comment&lt;br /&gt;
|----------------&lt;br /&gt;
||| || || Free&lt;br /&gt;
|----------------&lt;br /&gt;
|0x42 || 33 KiB (0x8400) || 215 KiB || U-Boot SPL (opos8mm-u-boot.spl)&lt;br /&gt;
|----------------&lt;br /&gt;
||| || || Free&lt;br /&gt;
|----------------&lt;br /&gt;
|0x300 || 384 KiB (0x6000) || ~700 KiB || U-Boot IMG (opos8mm-u-boot.itb)&lt;br /&gt;
|----------------&lt;br /&gt;
||| || || Free&lt;br /&gt;
|----------------&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Boot1 partition layout ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;OPOS8MM eMMC partitions&amp;quot;&lt;br /&gt;
|----------------&lt;br /&gt;
| style=&amp;quot;width:50px;background:orange;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | U-Boot env&lt;br /&gt;
| style=&amp;quot;width:100px;background:white;color:black;&amp;quot; align=&amp;quot;center&amp;quot; | ...&lt;br /&gt;
| style=&amp;quot;width:50px;background:orange;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | U-Boot redundant env&lt;br /&gt;
| style=&amp;quot;width:100px;background:white;color:black;&amp;quot; align=&amp;quot;center&amp;quot; | ...&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Linux device: &#039;&#039;/dev/mmcblk0boot1&#039;&#039;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;Boot1 partition detail&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Offset (blocks) || Offset (bytes) || Size (bytes) || Comment&lt;br /&gt;
|----------------&lt;br /&gt;
|0 || 0 || 16 KiB || U-Boot environment&lt;br /&gt;
|----------------&lt;br /&gt;
||| || || Free&lt;br /&gt;
|----------------&lt;br /&gt;
|||  || 16 KiB || U-Boot redundant environment&lt;br /&gt;
|----------------&lt;br /&gt;
||| || || Free&lt;br /&gt;
|----------------&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== RPMB partition layout ==&lt;br /&gt;
* Not used !&lt;br /&gt;
&lt;br /&gt;
== User Data partition layout ==&lt;br /&gt;
&lt;br /&gt;
There are 3 partitions on the &amp;quot;User Data&amp;quot; physical partition:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;OPOS8MM eMMC partitions&amp;quot;&lt;br /&gt;
|----------------&lt;br /&gt;
| style=&amp;quot;width:50px;background:white;color:black;&amp;quot; align=&amp;quot;center&amp;quot; | ...&lt;br /&gt;
| style=&amp;quot;width:200px;background:green;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | Failsafe/Update (primary)&lt;br /&gt;
| style=&amp;quot;width:200px;background:green;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | Default Rootfs (primary)&lt;br /&gt;
| style=&amp;quot;width:600px;background:green;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | Home/Data (primary)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;OPOS8MM eMMC User data partitions details&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
!Name || U-Boot device  || Linux device || Offset (bytes) || Offset (sectors/blocs) || Size || Comment&lt;br /&gt;
|----------------&lt;br /&gt;
|MBR || NA || NA || 0 || 0 || 512 bytes (1 block) || Master Boot Record + some spare space ( -&amp;gt; Don&#039;t touch it :-) )&lt;br /&gt;
|----------------&lt;br /&gt;
|Failsafe || mmc 0:1 || /dev/mmcblk0p1 || 1M || 2048 (0x800) || 512 MBytes (1048576 sectors) || system/rootfs to restore your board in case of problem or setup a safe update mechanism (ext4 formatted)&lt;br /&gt;
|----------------&lt;br /&gt;
|Rootfs || mmc 0:2 || /dev/mmcblk0p2 ||  || 1050624 (0x10800) || 512 MBytes (1048576 sectors) || the default booted rootfs is on this partition (ext4 formatted)&lt;br /&gt;
|----------------&lt;br /&gt;
|Home/Data || mmc 0:3 || /dev/mmcblk0p3 ||  || 2099200 (0x200800) || Rest of space: ~2,7 GBytes (5634048 sectors) || HOME can be stored on this partition (ext4 formatted)&lt;br /&gt;
|----------------&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* By default, when flashed from U-Boot, rootfs and boot are only occupying the size of the .ext4 images used during flashing. If you want to increase the rootfs/boot size to all available free space then, after Linux has booted, use the following commands:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# resize2fs /dev/mmcblk0p2        # for Rootfs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Or with &#039;&#039;apf-config&#039;&#039; command:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# apf-config&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* In menu:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
|     1 Expand Filesystem(s)         OS can then use all eMMC/SD space         |&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rootfs/Boot will then be extended to all the &amp;quot;Rootfs&amp;quot;/&amp;quot;Boot&amp;quot; eMMC partitions space.&lt;br /&gt;
&lt;br /&gt;
==Tips==&lt;br /&gt;
* Commands to partition &#039;&#039;User Data&#039;&#039; from fdisk on Host PC with [[U-Boot UMS on APF &amp;amp; OPOS|U-Boot UMS]]. &#039;&#039;&#039;Check /dev/sdc is your OPOS8MM device otherwise you may destroy your PC partition table !!!&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;pre class=host&amp;gt;&lt;br /&gt;
$ sudo echo -e &#039;size=512MiB,type=0x83\nsize=512MiB,type=0x83\ntype=0x83&#039; | sfdisk /dev/sdc&lt;br /&gt;
&lt;br /&gt;
$ sudo mkfs.ext4 -O ^64bit,^metadata_csum,uninit_bg /dev/sdc1&lt;br /&gt;
$ sudo mkfs.ext4 -O ^64bit,^metadata_csum,uninit_bg /dev/sdc2&lt;br /&gt;
$ sudo mkfs.ext4 -O ^64bit,^metadata_csum,uninit_bg /dev/sdc3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* [http://fr.slideshare.net/linaroorg/intro-to-emmc http://fr.slideshare.net/linaroorg/intro-to-emmc]&lt;br /&gt;
* https://fr.wikipedia.org/wiki/Master_boot_record ou http://poloastucien.free.fr/mbr_fat_secteurs_boot_h.html&lt;/div&gt;</summary>
		<author><name>SebastienSz</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=EMMC_OPOS8MM&amp;diff=14954</id>
		<title>EMMC OPOS8MM</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=EMMC_OPOS8MM&amp;diff=14954"/>
		<updated>2020-10-13T15:25:37Z</updated>

		<summary type="html">&lt;p&gt;SebastienSz: Created page with &amp;quot;Category: eMMC  = OPOS8MM eMMC layout =  By default, the 4GB eMMC on OPOS8MM module has 4 physical/hardware partitions:  {| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot;...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: eMMC]]&lt;br /&gt;
&lt;br /&gt;
= OPOS8MM eMMC layout =&lt;br /&gt;
&lt;br /&gt;
By default, the 4GB eMMC on [[OPOS8MM]] module has 4 physical/hardware partitions:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;OPOS8MM eMMC partitions&amp;quot;&lt;br /&gt;
|----------------&lt;br /&gt;
| style=&amp;quot;width:80px;background:orange;&amp;quot; align=&amp;quot;center&amp;quot; | Boot0&lt;br /&gt;
| style=&amp;quot;width:80px;background:orange;&amp;quot; align=&amp;quot;center&amp;quot; | Boot1&lt;br /&gt;
| style=&amp;quot;background:red;&amp;quot; | RPMB&lt;br /&gt;
| style=&amp;quot;width:500px;background:green;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | User Data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;OPOS8MM eMMC partitions details&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
!Name || U-Boot name || Size || Comment&lt;br /&gt;
|----------------&lt;br /&gt;
|boot0 || mmc dev 0 1 || 2MBytes || U-Boot is installed on this partition&lt;br /&gt;
|----------------&lt;br /&gt;
|boot1 || mmc dev 0 2 || 2MBytes || U-Boot env is installed on this partition&lt;br /&gt;
|----------------&lt;br /&gt;
|rpmb || mmc dev 0 3 || 512KBytes || Not used&lt;br /&gt;
|----------------&lt;br /&gt;
|User Data || mmc dev 0 0 || remaining space (~3,7GBytes) || Kernel, device tree and rootfs&lt;br /&gt;
|----------------&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Boot0 partition layout ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;OPOS8MM eMMC partitions&amp;quot;&lt;br /&gt;
|----------------&lt;br /&gt;
| style=&amp;quot;width:10px;background:white;color:black;&amp;quot; align=&amp;quot;center&amp;quot; | ...&lt;br /&gt;
| style=&amp;quot;width:40px;background:orange;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | SPL&lt;br /&gt;
| style=&amp;quot;width:100px;background:white;color:black;&amp;quot; align=&amp;quot;center&amp;quot; | ...&lt;br /&gt;
| style=&amp;quot;width:150px;background:orange;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | IMG&lt;br /&gt;
| style=&amp;quot;width:150px;background:white;color:black;&amp;quot; align=&amp;quot;center&amp;quot; | ...&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Linux device: &#039;&#039;/dev/mmcblk0boot0&#039;&#039;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;Boot0 partition detail&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Offset (blocks) || Offset (bytes) || Size (bytes) || Comment&lt;br /&gt;
|----------------&lt;br /&gt;
||| || || Free&lt;br /&gt;
|----------------&lt;br /&gt;
|0x42 || 33 KiB (0x8400) || 215 KiB || U-Boot SPL (opos8mm-u-boot.spl)&lt;br /&gt;
|----------------&lt;br /&gt;
||| || || Free&lt;br /&gt;
|----------------&lt;br /&gt;
|0x300 || 384 KiB (0x6000) || ~700 KiB || U-Boot IMG (opos8mm-u-boot.itb)&lt;br /&gt;
|----------------&lt;br /&gt;
||| || || Free&lt;br /&gt;
|----------------&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Boot1 partition layout ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;OPOS8MM eMMC partitions&amp;quot;&lt;br /&gt;
|----------------&lt;br /&gt;
| style=&amp;quot;width:50px;background:orange;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | U-Boot env&lt;br /&gt;
| style=&amp;quot;width:100px;background:white;color:black;&amp;quot; align=&amp;quot;center&amp;quot; | ...&lt;br /&gt;
| style=&amp;quot;width:50px;background:orange;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | U-Boot redundant env&lt;br /&gt;
| style=&amp;quot;width:100px;background:white;color:black;&amp;quot; align=&amp;quot;center&amp;quot; | ...&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Linux device: &#039;&#039;/dev/mmcblk0boot1&#039;&#039;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;Boot1 partition detail&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Offset (blocks) || Offset (bytes) || Size (bytes) || Comment&lt;br /&gt;
|----------------&lt;br /&gt;
|0 || 0 || 16 KiB || U-Boot environment&lt;br /&gt;
|----------------&lt;br /&gt;
||| || || Free&lt;br /&gt;
|----------------&lt;br /&gt;
|||  || 16 KiB || U-Boot redundant environment&lt;br /&gt;
|----------------&lt;br /&gt;
||| || || Free&lt;br /&gt;
|----------------&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== RPMB partition layout ==&lt;br /&gt;
* Not used !&lt;br /&gt;
&lt;br /&gt;
== User Data partition layout ==&lt;br /&gt;
&lt;br /&gt;
There are 3 partitions on the &amp;quot;User Data&amp;quot; physical partition:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;OPOS8MM eMMC partitions&amp;quot;&lt;br /&gt;
|----------------&lt;br /&gt;
| style=&amp;quot;width:50px;background:white;color:black;&amp;quot; align=&amp;quot;center&amp;quot; | ...&lt;br /&gt;
| style=&amp;quot;width:100px;background:green;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | Failsafe/Update (primary)&lt;br /&gt;
| style=&amp;quot;width:600px;background:green;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | Default Rootfs (primary)&lt;br /&gt;
| style=&amp;quot;width:600px;background:green;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | Home/Data (primary)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;OPOS8MM eMMC User data partitions details&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
!Name || U-Boot device  || Linux device || Offset (bytes) || Offset (sectors/blocs) || Size || Comment&lt;br /&gt;
|----------------&lt;br /&gt;
|MBR || NA || NA || 0 || 0 || 512 bytes (1 block) || Master Boot Record + some spare space ( -&amp;gt; Don&#039;t touch it :-) )&lt;br /&gt;
|----------------&lt;br /&gt;
|Failsafe || mmc 0:1 || /dev/mmcblk0p1 || 1M || 2048 (0x800) || 512 MBytes (1048576 sectors) || system/rootfs to restore your board in case of problem or setup a safe update mechanism (ext4 formatted)&lt;br /&gt;
|----------------&lt;br /&gt;
|Rootfs || mmc 0:2 || /dev/mmcblk0p2 ||  || 1050624 (0x10800) || 512 MBytes (1048576 sectors) || the default booted rootfs is on this partition (ext4 formatted)&lt;br /&gt;
|----------------&lt;br /&gt;
|Home/Data || mmc 0:3 || /dev/mmcblk0p3 ||  || 2099200 (0x200800) || Rest of space: ~2,7 GBytes (5634048 sectors) || HOME can be stored on this partition (ext4 formatted)&lt;br /&gt;
|----------------&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* By default, when flashed from U-Boot, rootfs and boot are only occupying the size of the .ext4 images used during flashing. If you want to increase the rootfs/boot size to all available free space then, after Linux has booted, use the following commands:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# resize2fs /dev/mmcblk0p2        # for Rootfs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Or with &#039;&#039;apf-config&#039;&#039; command:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# apf-config&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* In menu:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
|     1 Expand Filesystem(s)         OS can then use all eMMC/SD space         |&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rootfs/Boot will then be extended to all the &amp;quot;Rootfs&amp;quot;/&amp;quot;Boot&amp;quot; eMMC partitions space.&lt;br /&gt;
&lt;br /&gt;
==Tips==&lt;br /&gt;
* Commands to partition &#039;&#039;User Data&#039;&#039; from fdisk on Host PC with [[U-Boot UMS on APF &amp;amp; OPOS|U-Boot UMS]]. &#039;&#039;&#039;Check /dev/sdc is your OPOS8MM device otherwise you may destroy your PC partition table !!!&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;pre class=host&amp;gt;&lt;br /&gt;
$ sudo echo -e &#039;size=512MiB,type=0x83\nsize=512MiB,type=0x83\ntype=0x83&#039; | sfdisk /dev/sdc&lt;br /&gt;
&lt;br /&gt;
$ sudo mkfs.ext4 -O ^64bit,^metadata_csum,uninit_bg /dev/sdc1&lt;br /&gt;
$ sudo mkfs.ext4 -O ^64bit,^metadata_csum,uninit_bg /dev/sdc2&lt;br /&gt;
$ sudo mkfs.ext4 -O ^64bit,^metadata_csum,uninit_bg /dev/sdc3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* [http://fr.slideshare.net/linaroorg/intro-to-emmc http://fr.slideshare.net/linaroorg/intro-to-emmc]&lt;br /&gt;
* https://fr.wikipedia.org/wiki/Master_boot_record ou http://poloastucien.free.fr/mbr_fat_secteurs_boot_h.html&lt;/div&gt;</summary>
		<author><name>SebastienSz</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=Linux_Debug&amp;diff=14818</id>
		<title>Linux Debug</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=Linux_Debug&amp;diff=14818"/>
		<updated>2019-05-03T08:31:09Z</updated>

		<summary type="html">&lt;p&gt;SebastienSz: /* Observing systems clocks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Tips to do debugging under Linux.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
On this page, you will find usefull informations for debugging your Linux kernel/drivers.&lt;br /&gt;
&lt;br /&gt;
==Testing your custom Linux kernel before flashing it==&lt;br /&gt;
&lt;br /&gt;
You can test a linux kernel you&#039;ve generated without having to reflash your board and destroy your currently working image.&lt;br /&gt;
Indeed Linux kernel images can be loaded and started from SDRAM with U-Boot:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; run download_kernel &lt;br /&gt;
MAC: 00:1e:ac:00:00:02&lt;br /&gt;
operating at 100M full duplex mode&lt;br /&gt;
Using dm9000 device&lt;br /&gt;
TFTP from server 192.168.0.104; our IP address is 192.168.0.10&lt;br /&gt;
Filename &#039;apf9328-linux.bin&#039;.&lt;br /&gt;
Load address: 0x8000000&lt;br /&gt;
Loading: #################################################################&lt;br /&gt;
	 #################################################################&lt;br /&gt;
	 #################################################################&lt;br /&gt;
	 #################################################################&lt;br /&gt;
	 #################################################################&lt;br /&gt;
	 ########&lt;br /&gt;
done&lt;br /&gt;
Bytes transferred = 1703940 (1a0004 hex)&lt;br /&gt;
BIOS&amp;gt; bootm&lt;br /&gt;
## Booting kernel from Legacy Image at 08000000 ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Changing processor registers from Linux user space with imxregs==&lt;br /&gt;
&lt;br /&gt;
This tool allows you to access i.MX registers from Linux userspace/console. This way you can debug your driver or access i.MX hardware functionnalities directly from Linux console.&lt;br /&gt;
&lt;br /&gt;
In recent releases (&amp;gt;= 3.0) you should find this tool in &#039;&#039;/usr/bin/&#039;&#039; on your board.&lt;br /&gt;
&lt;br /&gt;
===Unlock registers access===&lt;br /&gt;
{{Note | On [[APF51]]/[[APF28]]/[[OPOS6UL]] you don&#039;t have to explicitly unlock registers in U-Boot to access them under Linux, like explained just above}}&lt;br /&gt;
&lt;br /&gt;
* To use it, you must clear i.MX PAR_1 &amp;amp; PAR_2 registers (registers access rights) &#039;&#039;&#039;before&#039;&#039;&#039; launching Linux kernel, so in U-Boot type (example here is for APF9328):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; mw.l 0x00200008 0&lt;br /&gt;
 BIOS&amp;gt; mw.l 0x00210008 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* on APF27:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; mw 10000008 0&lt;br /&gt;
 BIOS&amp;gt; mw 10020008 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you use it frequently, a small script &#039;&#039;unlock_regs&#039;&#039; has been defined in U-Boot, and you can call it before booting your board:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; run unlock_regs&lt;br /&gt;
 BIOS&amp;gt; boot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Usage===&lt;br /&gt;
* Then in Linux console/terminal, launch &#039;&#039;imxregs&#039;&#039; like that:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # imxregs REGISTER_NAME    (give it the register name as printed in i.MX Ref Manual or just the begining of the name)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
or&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # imxregs    (to dump all supported registers)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Examples===&lt;br /&gt;
* Show OCR1 registers of each GPIO Port:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # imxregs OCR1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Write 0x00000123 to OCR1_D register:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # imxregs OCR1_D 123&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Changing FPGA IP&#039;s registers from Linux user space==&lt;br /&gt;
&lt;br /&gt;
See [[FPGA_register|fpgaregs]] tool.&lt;br /&gt;
&lt;br /&gt;
==Using DebugFS==&lt;br /&gt;
DebugFS is a in-kernel filesystem, similar to procfs or sysfs, that allows Linux driver to easily communicate debug informations to user space. Full documentation: http://lxr.linux.no/linux+v2.6.32/Documentation/filesystems/debugfs.txt or http://www.linuxtopia.org/online_books/linux_kernel/kernel_configuration/ch09s07.html&lt;br /&gt;
===Mounting it===&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# mount -t debugfs none /sys/kernel/debug&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===Showing already allocated GPIOs===&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# cat /sys/kernel/debug/gpio&lt;br /&gt;
GPIOs 0-31, gpio-0:          &lt;br /&gt;
 gpio-5   (LCD                 ) in  lo&lt;br /&gt;
 gpio-6   (LCD                 ) in  lo&lt;br /&gt;
 gpio-7   (LCD                 ) in  lo&lt;br /&gt;
 gpio-8   (LCD                 ) in  lo&lt;br /&gt;
....&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Showing clock tree===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
Device Drivers  ---&amp;gt;&lt;br /&gt;
    Common Clock Framework  ---&amp;gt;&lt;br /&gt;
        [*]   DebugFS representation of clock tree&lt;br /&gt;
&lt;br /&gt;
| Creates a directory hierarchy in debugfs for visualizing the clk&lt;br /&gt;
| tree structure.  Each directory contains read-only members&lt;br /&gt;
| that export information specific to that clk node: clk_rate,&lt;br /&gt;
| clk_flags, clk_prepare_count, clk_enable_count &amp;amp; clk_notifier_count. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
all clocks are availables under &#039;&#039;/sys/kernel/debug/clk&#039;&#039;:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# mount -t debugfs none /sys/kernel/debug/&lt;br /&gt;
# cat /sys/kernel/debug/clk/clk_summary&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Tracers==&lt;br /&gt;
* http://lxr.linux.no/#linux+v3.0.22/Documentation/trace/ftrace.txt#L1016&lt;br /&gt;
&lt;br /&gt;
===Function profiler===&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ make linux-menuconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
Kernel hacking  ---&amp;gt;&lt;br /&gt;
    [*] Tracers  ---&amp;gt;&lt;br /&gt;
        [*]   Kernel Function Tracer&lt;br /&gt;
        ...&lt;br /&gt;
        [*]   Kernel function profiler&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 This option enables the kernel function profiler. A file is created&lt;br /&gt;
 in debugfs called function_profile_enabled which defaults to zero.&lt;br /&gt;
 When a 1 is echoed into this file profiling begins, and when a&lt;br /&gt;
 zero is entered, profiling stops. A &amp;quot;functions&amp;quot; file is created in&lt;br /&gt;
 the trace_stats directory; this file shows the list of functions that&lt;br /&gt;
 have been hit and their counters.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Observing system clocks==&lt;br /&gt;
&lt;br /&gt;
You can &amp;quot;export&amp;quot; and observe some clocks:&lt;br /&gt;
* On OPOS6UL/L: signal CLKO1 is available on pad JTAG_TMS (pin 7 of J36) and signal CLKO2 is available on pad JTAG_TDO (pin 13 of J36).&lt;br /&gt;
&lt;br /&gt;
Example on OPOS6UL/L:&lt;br /&gt;
&lt;br /&gt;
Mux CLKO1 and CLKO2 signals on JTAG_TMS and JTAG_DO:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# devmem 0x20E0048 32 3&lt;br /&gt;
# devmem 0x20E004C 32 3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Export ARM clock (divided by 8) on CLKO2:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# devmem 0x20C4060 32 0x1EA0001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See the reference manual of the OPOS6UL/L for the others clocks &amp;quot;exportable&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* http://www-users.cs.umn.edu/~boutcher/kprobes/&lt;br /&gt;
* http://tree.celinuxforum.org/CelfPubWiki/PatchArchive&lt;/div&gt;</summary>
		<author><name>SebastienSz</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=Linux_Debug&amp;diff=14817</id>
		<title>Linux Debug</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=Linux_Debug&amp;diff=14817"/>
		<updated>2019-05-03T08:30:54Z</updated>

		<summary type="html">&lt;p&gt;SebastienSz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Tips to do debugging under Linux.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
On this page, you will find usefull informations for debugging your Linux kernel/drivers.&lt;br /&gt;
&lt;br /&gt;
==Testing your custom Linux kernel before flashing it==&lt;br /&gt;
&lt;br /&gt;
You can test a linux kernel you&#039;ve generated without having to reflash your board and destroy your currently working image.&lt;br /&gt;
Indeed Linux kernel images can be loaded and started from SDRAM with U-Boot:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; run download_kernel &lt;br /&gt;
MAC: 00:1e:ac:00:00:02&lt;br /&gt;
operating at 100M full duplex mode&lt;br /&gt;
Using dm9000 device&lt;br /&gt;
TFTP from server 192.168.0.104; our IP address is 192.168.0.10&lt;br /&gt;
Filename &#039;apf9328-linux.bin&#039;.&lt;br /&gt;
Load address: 0x8000000&lt;br /&gt;
Loading: #################################################################&lt;br /&gt;
	 #################################################################&lt;br /&gt;
	 #################################################################&lt;br /&gt;
	 #################################################################&lt;br /&gt;
	 #################################################################&lt;br /&gt;
	 ########&lt;br /&gt;
done&lt;br /&gt;
Bytes transferred = 1703940 (1a0004 hex)&lt;br /&gt;
BIOS&amp;gt; bootm&lt;br /&gt;
## Booting kernel from Legacy Image at 08000000 ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Changing processor registers from Linux user space with imxregs==&lt;br /&gt;
&lt;br /&gt;
This tool allows you to access i.MX registers from Linux userspace/console. This way you can debug your driver or access i.MX hardware functionnalities directly from Linux console.&lt;br /&gt;
&lt;br /&gt;
In recent releases (&amp;gt;= 3.0) you should find this tool in &#039;&#039;/usr/bin/&#039;&#039; on your board.&lt;br /&gt;
&lt;br /&gt;
===Unlock registers access===&lt;br /&gt;
{{Note | On [[APF51]]/[[APF28]]/[[OPOS6UL]] you don&#039;t have to explicitly unlock registers in U-Boot to access them under Linux, like explained just above}}&lt;br /&gt;
&lt;br /&gt;
* To use it, you must clear i.MX PAR_1 &amp;amp; PAR_2 registers (registers access rights) &#039;&#039;&#039;before&#039;&#039;&#039; launching Linux kernel, so in U-Boot type (example here is for APF9328):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; mw.l 0x00200008 0&lt;br /&gt;
 BIOS&amp;gt; mw.l 0x00210008 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* on APF27:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; mw 10000008 0&lt;br /&gt;
 BIOS&amp;gt; mw 10020008 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you use it frequently, a small script &#039;&#039;unlock_regs&#039;&#039; has been defined in U-Boot, and you can call it before booting your board:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; run unlock_regs&lt;br /&gt;
 BIOS&amp;gt; boot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Usage===&lt;br /&gt;
* Then in Linux console/terminal, launch &#039;&#039;imxregs&#039;&#039; like that:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # imxregs REGISTER_NAME    (give it the register name as printed in i.MX Ref Manual or just the begining of the name)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
or&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # imxregs    (to dump all supported registers)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Examples===&lt;br /&gt;
* Show OCR1 registers of each GPIO Port:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # imxregs OCR1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Write 0x00000123 to OCR1_D register:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # imxregs OCR1_D 123&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Changing FPGA IP&#039;s registers from Linux user space==&lt;br /&gt;
&lt;br /&gt;
See [[FPGA_register|fpgaregs]] tool.&lt;br /&gt;
&lt;br /&gt;
==Using DebugFS==&lt;br /&gt;
DebugFS is a in-kernel filesystem, similar to procfs or sysfs, that allows Linux driver to easily communicate debug informations to user space. Full documentation: http://lxr.linux.no/linux+v2.6.32/Documentation/filesystems/debugfs.txt or http://www.linuxtopia.org/online_books/linux_kernel/kernel_configuration/ch09s07.html&lt;br /&gt;
===Mounting it===&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# mount -t debugfs none /sys/kernel/debug&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===Showing already allocated GPIOs===&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# cat /sys/kernel/debug/gpio&lt;br /&gt;
GPIOs 0-31, gpio-0:          &lt;br /&gt;
 gpio-5   (LCD                 ) in  lo&lt;br /&gt;
 gpio-6   (LCD                 ) in  lo&lt;br /&gt;
 gpio-7   (LCD                 ) in  lo&lt;br /&gt;
 gpio-8   (LCD                 ) in  lo&lt;br /&gt;
....&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Showing clock tree===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
Device Drivers  ---&amp;gt;&lt;br /&gt;
    Common Clock Framework  ---&amp;gt;&lt;br /&gt;
        [*]   DebugFS representation of clock tree&lt;br /&gt;
&lt;br /&gt;
| Creates a directory hierarchy in debugfs for visualizing the clk&lt;br /&gt;
| tree structure.  Each directory contains read-only members&lt;br /&gt;
| that export information specific to that clk node: clk_rate,&lt;br /&gt;
| clk_flags, clk_prepare_count, clk_enable_count &amp;amp; clk_notifier_count. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
all clocks are availables under &#039;&#039;/sys/kernel/debug/clk&#039;&#039;:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# mount -t debugfs none /sys/kernel/debug/&lt;br /&gt;
# cat /sys/kernel/debug/clk/clk_summary&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Tracers==&lt;br /&gt;
* http://lxr.linux.no/#linux+v3.0.22/Documentation/trace/ftrace.txt#L1016&lt;br /&gt;
&lt;br /&gt;
===Function profiler===&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ make linux-menuconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
Kernel hacking  ---&amp;gt;&lt;br /&gt;
    [*] Tracers  ---&amp;gt;&lt;br /&gt;
        [*]   Kernel Function Tracer&lt;br /&gt;
        ...&lt;br /&gt;
        [*]   Kernel function profiler&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 This option enables the kernel function profiler. A file is created&lt;br /&gt;
 in debugfs called function_profile_enabled which defaults to zero.&lt;br /&gt;
 When a 1 is echoed into this file profiling begins, and when a&lt;br /&gt;
 zero is entered, profiling stops. A &amp;quot;functions&amp;quot; file is created in&lt;br /&gt;
 the trace_stats directory; this file shows the list of functions that&lt;br /&gt;
 have been hit and their counters.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Observing systems clocks==&lt;br /&gt;
&lt;br /&gt;
You can &amp;quot;export&amp;quot; and observe some clocks:&lt;br /&gt;
* On OPOS6UL/L: signal CLKO1 is available on pad JTAG_TMS (pin 7 of J36) and signal CLKO2 is available on pad JTAG_TDO (pin 13 of J36).&lt;br /&gt;
&lt;br /&gt;
Example on OPOS6UL/L:&lt;br /&gt;
&lt;br /&gt;
Mux CLKO1 and CLKO2 signals on JTAG_TMS and JTAG_DO:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# devmem 0x20E0048 32 3&lt;br /&gt;
# devmem 0x20E004C 32 3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Export ARM clock (divided by 8) on CLKO2:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# devmem 0x20C4060 32 0x1EA0001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See the reference manual of the OPOS6UL/L for the others clocks &amp;quot;exportable&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* http://www-users.cs.umn.edu/~boutcher/kprobes/&lt;br /&gt;
* http://tree.celinuxforum.org/CelfPubWiki/PatchArchive&lt;/div&gt;</summary>
		<author><name>SebastienSz</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=U-Boot_UMS_on_APF_%26_OPOS&amp;diff=14762</id>
		<title>U-Boot UMS on APF &amp; OPOS</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=U-Boot_UMS_on_APF_%26_OPOS&amp;diff=14762"/>
		<updated>2019-03-25T08:05:29Z</updated>

		<summary type="html">&lt;p&gt;SebastienSz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page gather instructions for using U-Boot&#039;s USB Mass Storage gadget mode (or UMS) usage on [[APF6]] and [[OPOS6UL]](NANO). This mode allows you to flash rootfs images bigger than the available module RAM, ex: &amp;gt; 200MBytes on the [[OPOS6UL]](NANO). Indeed &#039;&#039;run update_rootfs&#039;&#039; script uses RAM to store images while uploading from TFTP, which can be short for big rootfs. UMS also allows you to backup your rootfs on your Host.&lt;br /&gt;
&lt;br /&gt;
* First, keep your USB debug cable and connect a second USB cable on [[APF6_Dev]] or [[OPOS6ULDev]]&#039;s OTG port. &lt;br /&gt;
* Under U-Boot type:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
BIOS&amp;gt; ums 0 mmc 0&lt;br /&gt;
UMS: disk start sector: 0x0, count: 0x760000&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* On your Host computer you should see the [[eMMC]] partition like a standard USB key.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ dmesg | tail&lt;br /&gt;
[...]&lt;br /&gt;
[26828.348088] sd 13:0:0:0: [sdc] Mode Sense: 0f 00 00 00&lt;br /&gt;
[26828.348395] sd 13:0:0:0: [sdc] Write cache: enabled, read cache: enabled, doesn&#039;t support DPO or FUA&lt;br /&gt;
[26828.354177]  sdc: sdc1 sdc2&lt;br /&gt;
[26828.356782] sd 13:0:0:0: [sdc] Attached SCSI disk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here the device is &#039;&#039;/dev/sdc&#039;&#039; and all partitions have been automounted by the Host:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
[26830.002168] EXT4-fs (sdc1): mounting ext2 file system using the ext4 subsystem&lt;br /&gt;
[26830.054358] EXT4-fs (sdc2): mounting ext2 file system using the ext4 subsystem&lt;br /&gt;
[26830.078638] EXT4-fs (sdc2): warning: mounting unchecked fs, running e2fsck is recommended&lt;br /&gt;
[26830.114382] EXT4-fs (sdc2): mounted filesystem without journal. Opts: (null)&lt;br /&gt;
[26830.135564] EXT4-fs (sdc1): warning: mounting unchecked fs, running e2fsck is recommended&lt;br /&gt;
[26830.268450] EXT4-fs (sdc1): mounted filesystem without journal. Opts: (null)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{Warning| Before doing the following procedure, be sure that your device name is correct. &#039;&#039;&#039;You can erase all your Host datas if you do it wrong !!!&#039;&#039;&#039;}}&lt;br /&gt;
* The rootfs is under the sdc2 and is named &amp;quot;ROOTFS&amp;quot;. On your debian/ubuntu Host it might be auto-mounted under &#039;&#039;/media/usb1&#039;&#039;, if no other USB key is present on system and if you activated auto-mounting.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ ls /media/usb1/&lt;br /&gt;
bin  boot  dev  etc  home  init  lib  lib32  linuxrc  lost+found  media  mnt  opt  proc  root  run  sbin  sys  tmp  usr  var&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To flash entire rootfs, first erase all files on this partition:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo umount /media/usb1            (if partition is auto-mounted)&lt;br /&gt;
$ sudo mkfs.ext4 -L ROOTFS -O ^64bit,^metadata_csum,uninit_bg /dev/sdc2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Update your rootfs==&lt;br /&gt;
* Then, you have 2 methods to update your rootfs:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! tar method !! dd method&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* Then mount it under an arbitrary directory:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo mkdir /tmp/rootfs&lt;br /&gt;
$ sudo mount /dev/sdc2 /tmp/rootfs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Untar the archive generated by your bsp (in &#039;&#039;buildroot/output/images/&#039;&#039;)&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ make shell_env&lt;br /&gt;
$ . armadeus_env.sh&lt;br /&gt;
$ sudo tar -xvf $ARMADEUS_ROOTFS_TAR -C /tmp/rootfs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* then umount the filesystem:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo umount /tmp/rootfs/&lt;br /&gt;
$ sync&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
* One alternative way to untaring is to use &#039;&#039;dd&#039;&#039;:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo dd if=/tftpboot/xxx-rootfs.ext4 of=/dev/sdc2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
(replace xxx with the name of your module)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Once finished, you can kill the U-Boot&#039;s USB gadget process with a Ctrl-C:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
BIOS&amp;gt; ums 0 mmc 0&lt;br /&gt;
UMS: disk start sector: 0x0, count: 0x760000&lt;br /&gt;
CTRL+C - Operation aborted&lt;br /&gt;
BIOS&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Backup your rootfs==&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo dd  if=/dev/sdc2 of=/home/xxx/rootfs_xxx.ext4       (takes time ;-) )&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* check if it succeed:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo mount -o loop /home/xxx/rootfs_xxx.ext4 /media/mmc/&lt;br /&gt;
$ ls /media/mmc/boot/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Troubleshots==&lt;br /&gt;
* UMS was reported not working on Windows 7/8 hosts with Virtual Box Ubuntu 15.04 emulated machines...&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* [[EMMC_OPOS6UL#User_Data_partition_layout|OPOS6UL eMMC Data partition]]&lt;br /&gt;
&lt;br /&gt;
[[Category:U-Boot]]&lt;/div&gt;</summary>
		<author><name>SebastienSz</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=EMMC_OPOS6UL&amp;diff=14761</id>
		<title>EMMC OPOS6UL</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=EMMC_OPOS6UL&amp;diff=14761"/>
		<updated>2019-03-25T08:04:56Z</updated>

		<summary type="html">&lt;p&gt;SebastienSz: /* Tips */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: eMMC]]&lt;br /&gt;
&lt;br /&gt;
= OPOS6UL eMMC layout =&lt;br /&gt;
&lt;br /&gt;
By default, the 4GB eMMC on [[OPOS6UL]] module has 4 physical/hardware partitions:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;OPOS6UL eMMC partitions&amp;quot;&lt;br /&gt;
|----------------&lt;br /&gt;
| style=&amp;quot;width:80px;background:orange;&amp;quot; align=&amp;quot;center&amp;quot; | Boot0&lt;br /&gt;
| style=&amp;quot;width:80px;background:orange;&amp;quot; align=&amp;quot;center&amp;quot; | Boot1&lt;br /&gt;
| style=&amp;quot;background:red;&amp;quot; | RPMB&lt;br /&gt;
| style=&amp;quot;width:500px;background:green;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | User Data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;OPOS6UL eMMC partitions details&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
!Name || U-Boot name || Size || Comment&lt;br /&gt;
|----------------&lt;br /&gt;
|boot0 || mmc dev 0 1 || 4MBytes || U-Boot is installed on this partition&lt;br /&gt;
|----------------&lt;br /&gt;
|boot1 || mmc dev 0 2 || 4MBytes || Not used&lt;br /&gt;
|----------------&lt;br /&gt;
|rpmb || mmc dev 0 3 || 512KBytes || Not used&lt;br /&gt;
|----------------&lt;br /&gt;
|User Data || mmc dev 0 0 || remaining space (~3,7GBytes) || Kernel, device tree and rootfs&lt;br /&gt;
|----------------&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Boot0 partition layout ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;OPOS6UL eMMC partitions&amp;quot;&lt;br /&gt;
|----------------&lt;br /&gt;
| style=&amp;quot;width:10px;background:white;color:black;&amp;quot; align=&amp;quot;center&amp;quot; | .&lt;br /&gt;
| style=&amp;quot;width:40px;background:orange;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | SPL&lt;br /&gt;
| style=&amp;quot;width:150px;background:orange;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | IMG&lt;br /&gt;
| style=&amp;quot;width:100px;background:white;color:black;&amp;quot; align=&amp;quot;center&amp;quot; | ...&lt;br /&gt;
| style=&amp;quot;width:30px;background:orange;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | ENV1&lt;br /&gt;
| style=&amp;quot;width:150px;background:white;color:black;&amp;quot; align=&amp;quot;center&amp;quot; | ...&lt;br /&gt;
| style=&amp;quot;width:30px;background:orange;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | ENV2&lt;br /&gt;
| style=&amp;quot;width:150px;background:white;color:black;&amp;quot; align=&amp;quot;center&amp;quot; | ...&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Linux device: &#039;&#039;/dev/mmcblk0boot0&#039;&#039;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;Boot0 partition detail&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Offset (blocks) || Offset (bytes) || Size (bytes) || Comment&lt;br /&gt;
|----------------&lt;br /&gt;
|0 || 0 || 1 KB (0x400) || Free&lt;br /&gt;
|----------------&lt;br /&gt;
|0x02 || 1 KB (0x400) || 68 KB || U-Boot SPL (opos6ul-u-boot.spl)&lt;br /&gt;
|----------------&lt;br /&gt;
|0x8a || 69 KB (0x11400) || 512 KB || U-Boot IMG (opos6ul-u-boot.img)&lt;br /&gt;
|----------------&lt;br /&gt;
||| || || Free&lt;br /&gt;
|----------------&lt;br /&gt;
|0x800 (2048) || 1024 KB (0x100000) || 10 KB (0x2800) || U-Boot environment&lt;br /&gt;
|----------------&lt;br /&gt;
||| || || Free&lt;br /&gt;
|----------------&lt;br /&gt;
|0xc00 (3072) || 1536 KB (0x180000) || 10 KB (0x2800) || Redundant U-Boot environment&lt;br /&gt;
|----------------&lt;br /&gt;
||| || || Free&lt;br /&gt;
|----------------&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Boot1 partition layout ==&lt;br /&gt;
* Not used !&lt;br /&gt;
&lt;br /&gt;
== RPMB partition layout ==&lt;br /&gt;
* Not used !&lt;br /&gt;
&lt;br /&gt;
== User Data partition layout ==&lt;br /&gt;
&lt;br /&gt;
There are 3 partitions on the &amp;quot;User Data&amp;quot; physical partition:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;OPOS6UL eMMC partitions&amp;quot;&lt;br /&gt;
|----------------&lt;br /&gt;
| style=&amp;quot;width:50px;background:white;color:black;&amp;quot; align=&amp;quot;center&amp;quot; | ...&lt;br /&gt;
| style=&amp;quot;width:100px;background:green;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | Failsafe/Update (primary)&lt;br /&gt;
| style=&amp;quot;width:600px;background:green;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | Default Rootfs (primary)&lt;br /&gt;
| style=&amp;quot;width:600px;background:green;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | Home/Data (primary)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;OPOS6UL eMMC User data partitions details&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
!Name || U-Boot device  || Linux device || Offset (bytes) || Offset (sectors/blocs) || Size || Comment&lt;br /&gt;
|----------------&lt;br /&gt;
|MBR || NA || NA || 0 || 0 || 512 bytes (1 block) || Master Boot Record + some spare space ( -&amp;gt; Don&#039;t touch it :-) )&lt;br /&gt;
|----------------&lt;br /&gt;
|Failsafe || mmc 0:1 || /dev/mmcblk0p1 || 1M || 2048 (0x800) || 128MBytes (262144 sectors) || system/rootfs to restore your board in case of problem or setup a safe update mechanism (ext4 formatted)&lt;br /&gt;
|----------------&lt;br /&gt;
|Rootfs || mmc 0:2 || /dev/mmcblk0p2 ||  || 264192 (0x40800) || 2GBytes (4194304 sectors) || the default booted rootfs is on this partition (ext4 formatted)&lt;br /&gt;
|----------------&lt;br /&gt;
|Home/Data || mmc 0:3 || /dev/mmcblk0p3 ||  || 4458496 (0x440800) || Rest of space: ~1,5GBytes (3176448 sectors) || HOME can be stored on this partition (ext4 formatted)&lt;br /&gt;
|----------------&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* By default, when flashed from U-Boot, rootfs and boot are only occupying the size of the .ext4 images used during flashing. If you want to increase the rootfs/boot size to all available free space then, after Linux has booted, use the following commands:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# resize2fs /dev/mmcblk0p2        # for Rootfs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Or with &#039;&#039;apf-config&#039;&#039; command:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# apf-config&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* In menu:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
|     1 Expand Filesystem(s)         OS can then use all eMMC/SD space         |&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rootfs/Boot will then be extended to all the &amp;quot;Rootfs&amp;quot;/&amp;quot;Boot&amp;quot; eMMC partitions space.&lt;br /&gt;
&lt;br /&gt;
==Tips==&lt;br /&gt;
* Commands to partition &#039;&#039;User Data&#039;&#039; from fdisk on Host PC with [[U-Boot UMS on APF &amp;amp; OPOS|U-Boot UMS]]. &#039;&#039;&#039;Check /dev/sdc is your OPOS6UL device otherwise you may destroy your PC partition table !!!&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;pre class=host&amp;gt;&lt;br /&gt;
$ sudo fdisk /dev/sdc&lt;br /&gt;
n&lt;br /&gt;
p&lt;br /&gt;
1&lt;br /&gt;
2048&lt;br /&gt;
+128M&lt;br /&gt;
n&lt;br /&gt;
p&lt;br /&gt;
2&lt;br /&gt;
264192&lt;br /&gt;
+2G&lt;br /&gt;
n&lt;br /&gt;
p&lt;br /&gt;
3&lt;br /&gt;
4458496&lt;br /&gt;
7634943&lt;br /&gt;
w&lt;br /&gt;
&lt;br /&gt;
$ sudo mkfs.ext4 -O ^64bit,^metadata_csum,uninit_bg /dev/sdc1&lt;br /&gt;
$ sudo mkfs.ext4 -O ^64bit,^metadata_csum,uninit_bg /dev/sdc2&lt;br /&gt;
$ sudo mkfs.ext4 -O ^64bit,^metadata_csum,uninit_bg /dev/sdc3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* [http://fr.slideshare.net/linaroorg/intro-to-emmc http://fr.slideshare.net/linaroorg/intro-to-emmc]&lt;br /&gt;
* https://fr.wikipedia.org/wiki/Master_boot_record ou http://poloastucien.free.fr/mbr_fat_secteurs_boot_h.html&lt;/div&gt;</summary>
		<author><name>SebastienSz</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=OPOS6ULDev_used_with_an_OPOS6UL_NANO&amp;diff=14745</id>
		<title>OPOS6ULDev used with an OPOS6UL NANO</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=OPOS6ULDev_used_with_an_OPOS6UL_NANO&amp;diff=14745"/>
		<updated>2018-11-07T11:06:04Z</updated>

		<summary type="html">&lt;p&gt;SebastienSz: /* Errata */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: OPOS6UL_NANO]]&lt;br /&gt;
&lt;br /&gt;
{{Under_Construction}}&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
The Armadeus System&#039;s standard development board/baseboard for the [[OPOS6UL]] module, the [[OPOS6ULDev]], can also be used to evaluate [[OPOS6UL_NANO]] SoM. For this you will require a SODIMM adapter... and accept some limitations due to the lack of GPIOs on [[OPOS6UL_NANO]] modules, compared to [[OPOS6UL]]. Consider this usage as temporary, until [[OPOS6UL_NANO]] get the development board it deserves... Don&#039;t hesitate to do some lobby to Armadeus Systems hardware team ;-)...&lt;br /&gt;
&lt;br /&gt;
[[Image:OPOS6UL_Dev_with_NANO.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Errata==&lt;br /&gt;
* On [[OPOS6UL_Dev]] boards with hardware revision &amp;lt;= 1.2, the USB ports won&#039;t be powered unless you do an hardware modification. This modification consist of forcing to 3.3V, the 2 signals USB_OTG1_PWR &amp;amp; USB_OTG2_PWR on U3/AP2152 chip.&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
&lt;br /&gt;
* [[Datasheet#OPOS6ULDev | Datasheet and schematics]]&lt;br /&gt;
* [http://www.opossom.com/english/products-development_boards-opos6ul_dev.html Product page on Armadeus Systems website]&lt;br /&gt;
&lt;br /&gt;
==Feature list==&lt;br /&gt;
{{Note|&lt;br /&gt;
* You can&#039;t use CAN interfaces of [[OPOS6ULDev]]. CAN buses might be output on LCD connector but will require an additional PHY.&lt;br /&gt;
* 2nd Ethernet port is not available.&lt;br /&gt;
* You won&#039;t see anything on LCD unless you force LCD Backlight pin to Logic 1.&lt;br /&gt;
* RPi connector connected buses are different of the ones when using an OPOS6UL SOM.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot; summary=&amp;quot;Hardware add-ons by functionalities&amp;quot;&lt;br /&gt;
|----------------&lt;br /&gt;
|- style=&amp;quot;background:#f4f4f4; color:black; -moz-border-radius:18px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
===Audio===&lt;br /&gt;
* [[S/PDIF]]: audio in/out&lt;br /&gt;
* [[ALSA]]&lt;br /&gt;
&lt;br /&gt;
===Video Out===&lt;br /&gt;
* [[LCD]]&lt;br /&gt;
* [[FrameBuffer]]&lt;br /&gt;
&lt;br /&gt;
===Video In===&lt;br /&gt;
*[[Camera interface]]&lt;br /&gt;
||&lt;br /&gt;
===User Input===&lt;br /&gt;
* [[Tslib|Touchscreen]]&lt;br /&gt;
&lt;br /&gt;
===Wired communication===&lt;br /&gt;
* [[Uart|UART]]&lt;br /&gt;
* [[SPI]]&lt;br /&gt;
* [[I2C]]&lt;br /&gt;
* [[USB Host]] &lt;br /&gt;
* [[USB_OTG]]&lt;br /&gt;
* [[USB_Gadget]]&lt;br /&gt;
* [[OneWire_GPIO_bus_Master|1-wire]]&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
===Wireless communication===&lt;br /&gt;
* [[Wifi|Wi-Fi usage on Linux]]&lt;br /&gt;
* [[Bluetooth|Bluetooth usage on Linux]]&lt;br /&gt;
&lt;br /&gt;
===Other===&lt;br /&gt;
* [[I.MX6UL_internal_ADC|ADC]]&lt;br /&gt;
* [[GPIOlib]]&lt;br /&gt;
* [[JTAG]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Connectors==&lt;br /&gt;
* RPi compatible connector (J3):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; summary=&amp;quot;RPi compatible connector of OPOS6ULDev with NANO SoM&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot;&lt;br /&gt;
! Linux GPIO or device !! i.M6UL Mux !! wiringPi N° !! RPi name !! Function !! J3 Pin !! J3 Pin !! Function !! RPi name !! wiringPi N° !! i.M6UL Mux !! Linux GPIO or device&lt;br /&gt;
|-&lt;br /&gt;
| - ||  ||  || || &#039;&#039;&#039;3.3V&#039;&#039;&#039; || style=&amp;quot;color:yellow;background:black;&amp;quot; align=center | &#039;&#039;&#039;1&#039;&#039;&#039; || style=&amp;quot;color:yellow;background:black;&amp;quot; align=center | &#039;&#039;&#039;2&#039;&#039;&#039; || &#039;&#039;&#039;5V&#039;&#039;&#039; || || || || -&lt;br /&gt;
|-&lt;br /&gt;
| i2c-1 || UART5_RX_DATA || || SDA1 || I2C data|| style=&amp;quot;color:yellow;background:black;&amp;quot; align=center | &#039;&#039;&#039;3&#039;&#039;&#039; || style=&amp;quot;color:yellow;background:black;&amp;quot; align=center | &#039;&#039;&#039;4&#039;&#039;&#039; || &#039;&#039;&#039;5V&#039;&#039;&#039; || || || || -&lt;br /&gt;
|-&lt;br /&gt;
| i2c-1 || UART5_TX_DATA || || SCL1 || I2C clock || style=&amp;quot;color:yellow;background:black;&amp;quot; align=center | &#039;&#039;&#039;5&#039;&#039;&#039; || style=&amp;quot;color:yellow;background:black;&amp;quot; align=center  | &#039;&#039;&#039;6&#039;&#039;&#039; || &#039;&#039;&#039;GND&#039;&#039;&#039; || || || || -&lt;br /&gt;
|-&lt;br /&gt;
| gpio9 || GPIO1_IO09__GPIO1_IO09 || 7 || GPIO7 || GPIO / AIN9 || style=&amp;quot;color:yellow;background:black;&amp;quot; align=center | &#039;&#039;&#039;7&#039;&#039;&#039; || style=&amp;quot;color:yellow;background:black;&amp;quot; align=center | &#039;&#039;&#039;8&#039;&#039;&#039; || UART Tx || TxD || || UART2_TX_DATA__UART2_DCE_TX || ttymxc1&lt;br /&gt;
|-&lt;br /&gt;
| || ||  || || &#039;&#039;&#039;GND&#039;&#039;&#039; || style=&amp;quot;color:yellow;background:black;&amp;quot; align=center | &#039;&#039;&#039;9&#039;&#039;&#039; || style=&amp;quot;color:yellow;background:black;&amp;quot; align=center | &#039;&#039;&#039;10&#039;&#039;&#039; || UART Rx || RxD  ||  || UART2_RX_DATA__UART2_DCE_RX || ttymxc1&lt;br /&gt;
|-&lt;br /&gt;
| gpio113 || CSI_MCLK__GPIO4_IO17 || 0 || GPIO0 || GPIO || style=&amp;quot;color:yellow;background:black;&amp;quot; align=center | &#039;&#039;&#039;11&#039;&#039;&#039; || style=&amp;quot;color:yellow;background:black;&amp;quot; align=center  | &#039;&#039;&#039;12&#039;&#039;&#039; || GPIO / AIN8 || GPIO1 || || GPIO1_IO08__GPIO1_IO08 || gpio8&lt;br /&gt;
|-&lt;br /&gt;
| gpio114 || CSI_PIXCLK__GPIO4_IO18 || || GPIO2 || GPIO || style=&amp;quot;color:yellow;background:black;&amp;quot; align=center | &#039;&#039;&#039;13&#039;&#039;&#039; || style=&amp;quot;color:yellow;background:black;&amp;quot; align=center  | &#039;&#039;&#039;14&#039;&#039;&#039; || &#039;&#039;&#039;GND&#039;&#039;&#039; || || || || &lt;br /&gt;
|-&lt;br /&gt;
| gpio122 || CSI_DATA05__GPIO4_IO26 || || GPIO3 || GPIO || style=&amp;quot;color:yellow;background:black;&amp;quot; align=center | &#039;&#039;&#039;15&#039;&#039;&#039; || style=&amp;quot;color:yellow;background:black;&amp;quot; align=center  | &#039;&#039;&#039;16&#039;&#039;&#039; || GPIO || GPIO4 || 4 || CSI_VSYNC__GPIO4_IO19 || gpio115&lt;br /&gt;
|-&lt;br /&gt;
| || || || || &#039;&#039;&#039;3,3V&#039;&#039;&#039; || style=&amp;quot;color:yellow;background:black;&amp;quot; align=center | &#039;&#039;&#039;17&#039;&#039;&#039; || style=&amp;quot;color:yellow;background:black;&amp;quot; align=center  | &#039;&#039;&#039;18&#039;&#039;&#039; || GPIO || GPIO5 || 5 || CSI_HSYNC__GPIO4_IO20 || gpio116&lt;br /&gt;
|-&lt;br /&gt;
| spidev1.x || CSI_DATA02__ECSPI2_MOSI || || || SPI MOSI || style=&amp;quot;color:yellow;background:black;&amp;quot; align=center | &#039;&#039;&#039;19&#039;&#039;&#039; || style=&amp;quot;color:yellow;background:black;&amp;quot; align=center  | &#039;&#039;&#039;20&#039;&#039;&#039; || &#039;&#039;&#039;GND&#039;&#039;&#039; || || || ||  &lt;br /&gt;
|-&lt;br /&gt;
| spidev1.x || CSI_DATA03__ECSPI2_MISO || || || SPI MISO || style=&amp;quot;color:yellow;background:black;&amp;quot; align=center | &#039;&#039;&#039;21&#039;&#039;&#039; || style=&amp;quot;color:yellow;background:black;&amp;quot; align=center  | &#039;&#039;&#039;22&#039;&#039;&#039; || GPIO || GPIO6 || 6 || CSI_DATA07__GPIO4_IO28 || gpio124 &lt;br /&gt;
|-&lt;br /&gt;
| spidev1.x || CSI_DATA00__ECSPI2_SCLK || || || SPI CLK || style=&amp;quot;color:yellow;background:black;&amp;quot; align=center | &#039;&#039;&#039;23&#039;&#039;&#039; || style=&amp;quot;color:yellow;background:black;&amp;quot; align=center  | &#039;&#039;&#039;24&#039;&#039;&#039; || SPI_CS0 || || || CSI_DATA01__GPIO4_IO22 || spidev1.0&lt;br /&gt;
|-&lt;br /&gt;
| || || || || &#039;&#039;&#039;GND&#039;&#039;&#039; || style=&amp;quot;color:yellow;background:black;&amp;quot; align=center | &#039;&#039;&#039;25&#039;&#039;&#039; || style=&amp;quot;color:yellow;background:black;&amp;quot; align=center  | &#039;&#039;&#039;26&#039;&#039;&#039; || NC || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| i2c-0 || UART4_RX_DATA__I2C1_SDA || || || I2C Data || style=&amp;quot;color:yellow;background:black;&amp;quot; align=center | &#039;&#039;&#039;27&#039;&#039;&#039; || style=&amp;quot;color:yellow;background:black;&amp;quot; align=center | &#039;&#039;&#039;28&#039;&#039;&#039; || I2C clock || || || UART4_TX_DATA__I2C1_SCL || i2c-0&lt;br /&gt;
|-&lt;br /&gt;
| || || || || NC || style=&amp;quot;color:yellow;background:black;&amp;quot; align=center | &#039;&#039;&#039;29&#039;&#039;&#039; || style=&amp;quot;color:yellow;background:black;&amp;quot; align=center | &#039;&#039;&#039;30&#039;&#039;&#039; || &#039;&#039;&#039;GND&#039;&#039;&#039; || || || ||  &lt;br /&gt;
|-&lt;br /&gt;
| || || || || NC || style=&amp;quot;color:yellow;background:black;&amp;quot; align=center | &#039;&#039;&#039;31&#039;&#039;&#039; || style=&amp;quot;color:yellow;background:black;&amp;quot; align=center | &#039;&#039;&#039;32&#039;&#039;&#039; || NC || || || || &lt;br /&gt;
|-&lt;br /&gt;
| || || || || NC || style=&amp;quot;color:yellow;background:black;&amp;quot; align=center | &#039;&#039;&#039;33&#039;&#039;&#039; || style=&amp;quot;color:yellow;background:black;&amp;quot; align=center | &#039;&#039;&#039;34&#039;&#039;&#039; || &#039;&#039;&#039;GND&#039;&#039;&#039; || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| || || || || NC || style=&amp;quot;color:yellow;background:black;&amp;quot; align=center | &#039;&#039;&#039;35&#039;&#039;&#039; || style=&amp;quot;color:yellow;background:black;&amp;quot; align=center | &#039;&#039;&#039;36&#039;&#039;&#039; || NC || || || || &lt;br /&gt;
|-&lt;br /&gt;
| || || || || NC || style=&amp;quot;color:yellow;background:black;&amp;quot; align=center | &#039;&#039;&#039;37&#039;&#039;&#039; || style=&amp;quot;color:yellow;background:black;&amp;quot; align=center | &#039;&#039;&#039;38&#039;&#039;&#039; || NC || || || || &lt;br /&gt;
|-&lt;br /&gt;
| || || || || &#039;&#039;&#039;GND&#039;&#039;&#039; || style=&amp;quot;color:yellow;background:black;&amp;quot; align=center | &#039;&#039;&#039;39&#039;&#039;&#039; || style=&amp;quot;color:yellow;background:black;&amp;quot; align=center | &#039;&#039;&#039;40&#039;&#039;&#039; || NC || || || || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Tested RPi shields/hats==&lt;br /&gt;
* [[Dragino Lora/GPS HAT]]... TO BE RETESTED !!!!&lt;br /&gt;
&lt;br /&gt;
==Tips==&lt;br /&gt;
===Bootstrap===&lt;br /&gt;
* [[Bootstrap]] jumpers are &#039;&#039;&#039;not&#039;&#039;&#039; connected to [[OPOS6UL_NANO]] and so not useful with this SoM&lt;br /&gt;
&lt;br /&gt;
===U-Boot===&lt;br /&gt;
* Use OPOS6ULDev &amp;quot;User&amp;quot; LED in U-Boot scripts:&lt;br /&gt;
** ON: &amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt; BIOS&amp;gt; gpio set 3 &amp;lt;/pre&amp;gt;&lt;br /&gt;
** OFF: &amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt; BIOS&amp;gt; gpio clear 3 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Linux===&lt;br /&gt;
* to activate login in Framebuffer console, please uncomment &#039;&#039;/etc/inittab&#039;&#039; line 35 this way:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# Set up a getty on LCD&lt;br /&gt;
tty1::respawn:/sbin/getty 38400 tty1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Links=&lt;br /&gt;
* RaspberryPi is a registered trademark of RaspberryPi Foundation.&lt;br /&gt;
&lt;br /&gt;
[[Category:DevelopmentBoards]]&lt;br /&gt;
[[Category:Hardware]]&lt;/div&gt;</summary>
		<author><name>SebastienSz</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=GIT&amp;diff=14736</id>
		<title>GIT</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=GIT&amp;diff=14736"/>
		<updated>2018-09-17T12:19:22Z</updated>

		<summary type="html">&lt;p&gt;SebastienSz: /* U-Boot */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: U-Boot]]&lt;br /&gt;
[[Category: BSP]]&lt;br /&gt;
[[Category: GIT]]&lt;br /&gt;
[[Category: Buildroot]]&lt;br /&gt;
&lt;br /&gt;
We have migrated our Source Code Management tool to GIT scm since some time now (Armadeus software release 3.1 was the last one available under SVN management tool).&lt;br /&gt;
This page aims to help you to use our new GIT tool.&lt;br /&gt;
&lt;br /&gt;
==Install GIT==&lt;br /&gt;
&lt;br /&gt;
*Install the following packages if needed:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
git-core gitk git-gui&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* If you want to send us patches through email, you will need to install these additional packages:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
git-email&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In that case you may need to install/configure &#039;&#039;sendmail&#039;&#039; or &#039;&#039;postfix&#039;&#039; or &#039;&#039;exim&#039;&#039; mail server ([http://www.au.debian.org/releases/stable/s390/ch08s05.html.en]).&lt;br /&gt;
&lt;br /&gt;
==How to use GIT (for everyone)==&lt;br /&gt;
===Tutorials===&lt;br /&gt;
# [http://git-scm.com/course/svn.html GIT-SVN Crash course ]&lt;br /&gt;
# [http://www.kernel.org/pub/software/scm/git/docs/everyday.html Everyday GIT With 20 Commands Or So]&lt;br /&gt;
# [http://git-scm.com GIT website]&lt;br /&gt;
&lt;br /&gt;
===Basics===&lt;br /&gt;
* Update your repository to the latest version on SF:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;gt;&lt;br /&gt;
$ git pull&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How to use GIT (Developers)==&lt;br /&gt;
*Get the Armadeus GIT/SF repository in the &#039;&#039;armadeus&#039;&#039; directory (will be created):&lt;br /&gt;
{{Note| This is the &#039;&#039;&#039;Read Only&#039;&#039;&#039; method for people wanting to get the latest features. You won&#039;t be able to &amp;quot;push&amp;quot; your modifications directly (send us a patch instead).}}&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ git clone git://git.code.sf.net/p/armadeus/code armadeus&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Before beginning to do your modifications don&#039;t forget to update your view:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ git pull&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*If you have modified some armadeus files and want to revert few files only&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ git checkout path_to_file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*If you have modified some armadeus files and want to revert all your changes&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ git clean -dfx&lt;br /&gt;
$ make apf9328_defconfig or make apf27_defconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*If &#039;&#039;git pull&#039;&#039; fails with an error: &amp;quot;Untracked working tree file &#039;{SOMEFILE}&#039;&amp;quot;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ rm -rf {SOMEFILE}&lt;br /&gt;
$ git pull&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Providing modifications===&lt;br /&gt;
Developers wanting to propose their development should provide us a patch against the latest GIT revision available.&lt;br /&gt;
The process to follow is:&lt;br /&gt;
* Have a working view, let&#039;s call it armadeus&lt;br /&gt;
* update your it:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ git pull&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
====Quick way====&lt;br /&gt;
* do your modifications&lt;br /&gt;
* test them ;-)&lt;br /&gt;
* do a patch:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ git diff &amp;gt; my_changes.patch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* send it on the armadeus-forum mailing list with your usual mail client&lt;br /&gt;
====Clean way====&lt;br /&gt;
* create a branch for your work (here &#039;&#039;my_work&#039;&#039;):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ git branch&lt;br /&gt;
* master&lt;br /&gt;
$ git branch my_work&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* make it the working branch:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ git checkout my_work&lt;br /&gt;
Switched to branch &#039;my_work&#039;&lt;br /&gt;
$ git branch&lt;br /&gt;
  master&lt;br /&gt;
* my_work&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* do a commit for each unitary change&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ git add xxx/xxx/xxx&lt;br /&gt;
$ git commit -m &amp;quot;blah blah blah&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* when work is finished, ask git to generate signed patches (&#039;&#039;0001-toto.patch&#039;&#039;, &#039;&#039;0002-toto.patch&#039;&#039;, one for each commit....):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ git format-patch -M master..my_work -s&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* then you can send them to the armadeus-forum mailing list (if james.bond@007.com can send mail to this list):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ git send-email --from=james.bond@007.com --to=armadeus-forum@lists.sourceforge.net --smtp-server=smtp.xxx.xx 0001-toto.patch 0002-toto.patch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* if your work is accepted, you can rebase your branch and then delete it ?:&lt;br /&gt;
 TBDJB&lt;br /&gt;
http://elinux.org/Git_usage&lt;br /&gt;
&lt;br /&gt;
==How to use GIT (Armadeus integrators)==&lt;br /&gt;
* Get the GIT/SF repository in Read/Write mode (for integrators only) in the &#039;&#039;armadeus&#039;&#039; directory (will be created):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ git clone ssh://USER@git.code.sf.net/p/armadeus/code armadeus&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Before the first commit, define your global personnal data:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;gt;&lt;br /&gt;
$ git config --global user.name &amp;quot;James Bond&amp;quot;&lt;br /&gt;
$ git config --global user.email &amp;quot;james.bond@007.com&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* If you want colors:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;gt;&lt;br /&gt;
$ git config --global color.diff auto&lt;br /&gt;
$ git config --global color.status auto&lt;br /&gt;
$ git config --global color.branch auto&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Update your repository to the latest version on SF:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;gt;&lt;br /&gt;
$ git pull&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Do your changes and commit to your &#039;&#039;&#039;local&#039;&#039;&#039; repository (here add &#039;&#039;fileorpath&#039;&#039;):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;gt;&lt;br /&gt;
$ git add fileorpath&lt;br /&gt;
$ git commit -m &#039;Explain what I changed&#039;&lt;br /&gt;
or &lt;br /&gt;
$ git commit -a -m &#039;Explain what I changed&#039;        (if you have local modifications (=not versioned files) and wants GIT to ignore them)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Commit someone else work&#039;s:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;gt;&lt;br /&gt;
$ git commit -m &amp;quot;Message...&amp;quot; --author &amp;quot;FirstName Name &amp;lt;email@address.com&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Update your repository to the latest version on SF:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;gt;&lt;br /&gt;
$ git pull&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Push your changes to SF:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;gt;&lt;br /&gt;
$ git push&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Tag a revision:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;gt;&lt;br /&gt;
$ git tag -m &amp;quot;Creates TAG for Armadeus 3.1 release&amp;quot; release-3.1&lt;br /&gt;
$ git push --tags origin master&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===Commit with someone else identity===&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;gt;&lt;br /&gt;
$ git commit --author &amp;quot;Firstname Lastname &amp;lt;email@address.com&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
=== U-Boot ===&lt;br /&gt;
For the OPOS6UL, OPOS6UL_Nano and the OPOS6UL_SP boards, Armadeus BSP will download U-Boot from specific [https://sourceforge.net/p/armadeus/u-boot/ci/master/tree/ armadeus uboot git] :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 git clone git://git.code.sf.net/p/armadeus/u-boot armadeus-u-boot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>SebastienSz</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=U-Boot_Splash_Screen&amp;diff=14569</id>
		<title>U-Boot Splash Screen</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=U-Boot_Splash_Screen&amp;diff=14569"/>
		<updated>2018-03-15T07:15:08Z</updated>

		<summary type="html">&lt;p&gt;SebastienSz: /* Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
On this page you will learn how to activate LCD support in U-Boot and display a Splash Screen at boot.&lt;br /&gt;
{{Note|The following instructions have only be tested on [[OPOS6UL]].}}&lt;br /&gt;
&lt;br /&gt;
=Installation=&lt;br /&gt;
* Save your image as BMP file (in Gimp use Run-Length (RLE) encoding, no alpha channel and no color informations (compatibility options). If the RLE option is grayed out, go to Image &amp;gt; Mode and select Indexed...)&lt;br /&gt;
* Activate LCD in U-Boot (here ST0700):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
BIOS&amp;gt; setenv videomode video=ctfb:x:800,y:480,depth:18,pclk:33033,le:8,ri:4,up:2,lo:4,hs:64,vs:4,sync:0,vmode:0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Test it=&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
BIOS&amp;gt; tftpboot ${loadaddr} xxx.bmp&lt;br /&gt;
BIOS&amp;gt; bmp info ${loadaddr}&lt;br /&gt;
Image size    : 296 x 72&lt;br /&gt;
Bits per pixel: 8&lt;br /&gt;
Compression   : 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
BIOS&amp;gt; bmp display ${loadaddr} 100 50&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Deploy it=&lt;br /&gt;
* Here we assume that logo is stored in &#039;&#039;/boot&#039;&#039; directory of rootfs eMMC partition as &#039;&#039;logo.bmp&#039;&#039;:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
BIOS&amp;gt; setenv splashimage 0x80000000&lt;br /&gt;
BIOS&amp;gt; setenv splashfile /boot/logo.bmp&lt;br /&gt;
BIOS&amp;gt; setenv splashsource mmc_fs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Continuity with Linux Boot Logo=&lt;br /&gt;
* If you want Linux to keep your U-Boot Logo during boot process, then some tweaks are needed:&lt;br /&gt;
** define CONFIG_SYS_MEM_TOP_HIDE in U-Boot configuration file, here we reserve 2MBytes: &amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;#define CONFIG_SYS_MEM_TOP_HIDE         (2 &amp;lt;&amp;lt; 20)&amp;lt;/source&amp;gt;&lt;br /&gt;
* Force framebuffer RAM address in U-Boot LCD driver ([[OPOS6UL]] has 256MBytes (0x10000000) RAM starting at physical 0x80000000):&amp;lt;source lang=&amp;quot;diff&amp;quot;&amp;gt;@@ -197,8 +197,8 @@&lt;br /&gt;
 	panel.memSize = mode.xres * mode.yres * panel.gdfBytesPP;&lt;br /&gt;
 &lt;br /&gt;
 	/* Allocate framebuffer */&lt;br /&gt;
-	fb = memalign(ARCH_DMA_MINALIGN,&lt;br /&gt;
-		      roundup(panel.memSize, ARCH_DMA_MINALIGN));&lt;br /&gt;
+	fb = (void *)0x8fe00000; /*memalign(ARCH_DMA_MINALIGN,&lt;br /&gt;
+		      roundup(panel.memSize, ARCH_DMA_MINALIGN));*/&lt;br /&gt;
 	if (!fb) {&lt;br /&gt;
 		printf(&amp;quot;MXSFB: Error allocating framebuffer!\n&amp;quot;);&lt;br /&gt;
 		return NULL;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Tell Linux to not print cursor on Framebuffer and to not use last 2M of RAM: &amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;BIOS&amp;gt; setenv extrabootargs vt.global_cursor_default=0 mem=248M&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Force framebuffer RAM address to same value in Linux LCD driver: &amp;lt;source lang=&amp;quot;diff&amp;quot;&amp;gt;@@ -825,17 +824,18 @@&lt;br /&gt;
        var-&amp;gt;vmode = FB_VMODE_NONINTERLACED;&lt;br /&gt;
&lt;br /&gt;
        /* Memory allocation for framebuffer */&lt;br /&gt;
+#define FORCED_FB_ADDR 0x8fe00000&lt;br /&gt;
        fb_size = SZ_2M;&lt;br /&gt;
-       fb_virt = dma_alloc_wc(dev, PAGE_ALIGN(fb_size), &amp;amp;fb_phys, GFP_KERNEL);&lt;br /&gt;
+       fb_virt = ioremap_wc(FORCED_FB_ADDR, fb_size);&lt;br /&gt;
        if (!fb_virt)&lt;br /&gt;
                return -ENOMEM;&lt;br /&gt;
&lt;br /&gt;
+       fb_phys = FORCED_FB_ADDR;&lt;br /&gt;
        fb_info-&amp;gt;fix.smem_start = fb_phys;&lt;br /&gt;
        fb_info-&amp;gt;screen_base = fb_virt;&lt;br /&gt;
        fb_info-&amp;gt;screen_size = fb_info-&amp;gt;fix.smem_len = fb_size;&lt;br /&gt;
&lt;br /&gt;
-       if (mxsfb_restore_mode(host, vmode))&lt;br /&gt;
-               memset(fb_virt, 0, fb_size);&lt;br /&gt;
+       mxsfb_restore_mode(host, vmode);&lt;br /&gt;
&lt;br /&gt;
        return 0;&lt;br /&gt;
 }&amp;lt;/source&amp;gt;&lt;br /&gt;
* Remove following options of your Linux config file:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;diff&amp;quot;&amp;gt;-CONFIG_FRAMEBUFFER_CONSOLE=y&lt;br /&gt;
-CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y&lt;br /&gt;
-CONFIG_FONTS=y&lt;br /&gt;
-CONFIG_FONT_8x8=y&lt;br /&gt;
-CONFIG_FONT_8x16=y&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Reflash all that on your board and... That&#039;s it ! ;-)&lt;br /&gt;
&lt;br /&gt;
=Links=&lt;br /&gt;
* http://www.denx.de/wiki/DULG/UBootSplashScreen&lt;br /&gt;
&lt;br /&gt;
[[Category:Boot Logo]]&lt;/div&gt;</summary>
		<author><name>SebastienSz</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=EMMC_OPOS6UL&amp;diff=14447</id>
		<title>EMMC OPOS6UL</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=EMMC_OPOS6UL&amp;diff=14447"/>
		<updated>2017-09-15T09:49:26Z</updated>

		<summary type="html">&lt;p&gt;SebastienSz: /* Boot0 partition layout */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: eMMC]]&lt;br /&gt;
&lt;br /&gt;
= OPOS6UL eMMC layout =&lt;br /&gt;
&lt;br /&gt;
By default, the 4GB eMMC on [[OPOS6UL]] module has 4 physical/hardware partitions:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;OPOS6UL eMMC partitions&amp;quot;&lt;br /&gt;
|----------------&lt;br /&gt;
| style=&amp;quot;width:80px;background:orange;&amp;quot; align=&amp;quot;center&amp;quot; | Boot0&lt;br /&gt;
| style=&amp;quot;width:80px;background:orange;&amp;quot; align=&amp;quot;center&amp;quot; | Boot1&lt;br /&gt;
| style=&amp;quot;background:red;&amp;quot; | RPMB&lt;br /&gt;
| style=&amp;quot;width:500px;background:green;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | User Data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;OPOS6UL eMMC partitions details&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
!Name || U-Boot name || Size || Comment&lt;br /&gt;
|----------------&lt;br /&gt;
|boot0 || mmc dev 0 1 || 4MBytes || U-Boot is installed on this partition&lt;br /&gt;
|----------------&lt;br /&gt;
|boot1 || mmc dev 0 2 || 4MBytes || Not used&lt;br /&gt;
|----------------&lt;br /&gt;
|rpmb || mmc dev 0 3 || 512KBytes || Not used&lt;br /&gt;
|----------------&lt;br /&gt;
|User Data || mmc dev 0 0 || remaining space (~3,7GBytes) || Kernel, device tree and rootfs&lt;br /&gt;
|----------------&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Boot0 partition layout ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;OPOS6UL eMMC partitions&amp;quot;&lt;br /&gt;
|----------------&lt;br /&gt;
| style=&amp;quot;width:10px;background:white;color:black;&amp;quot; align=&amp;quot;center&amp;quot; | .&lt;br /&gt;
| style=&amp;quot;width:40px;background:orange;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | SPL&lt;br /&gt;
| style=&amp;quot;width:150px;background:orange;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | IMG&lt;br /&gt;
| style=&amp;quot;width:100px;background:white;color:black;&amp;quot; align=&amp;quot;center&amp;quot; | ...&lt;br /&gt;
| style=&amp;quot;width:30px;background:orange;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | ENV1&lt;br /&gt;
| style=&amp;quot;width:150px;background:white;color:black;&amp;quot; align=&amp;quot;center&amp;quot; | ...&lt;br /&gt;
| style=&amp;quot;width:30px;background:orange;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | ENV2&lt;br /&gt;
| style=&amp;quot;width:150px;background:white;color:black;&amp;quot; align=&amp;quot;center&amp;quot; | ...&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Linux device: &#039;&#039;/dev/mmcblk0boot0&#039;&#039;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;Boot0 partition detail&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Offset (blocks) || Offset (bytes) || Size (bytes) || Comment&lt;br /&gt;
|----------------&lt;br /&gt;
|0 || 0 || 1 KB (0x400) || Free&lt;br /&gt;
|----------------&lt;br /&gt;
|0x02 || 1 KB (0x400) || 68 KB || U-Boot SPL (opos6ul-u-boot.spl)&lt;br /&gt;
|----------------&lt;br /&gt;
|0x8a || 69 KB (0x11400) || 512 KB || U-Boot IMG (opos6ul-u-boot.img)&lt;br /&gt;
|----------------&lt;br /&gt;
||| || || Free&lt;br /&gt;
|----------------&lt;br /&gt;
|0x800 (2048) || 1024 KB (0x100000) || 10 KB (0x2800) || U-Boot environment&lt;br /&gt;
|----------------&lt;br /&gt;
||| || || Free&lt;br /&gt;
|----------------&lt;br /&gt;
|0xc00 (3072) || 1536 KB (0x180000) || 10 KB (0x2800) || Redundant U-Boot environment&lt;br /&gt;
|----------------&lt;br /&gt;
||| || || Free&lt;br /&gt;
|----------------&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Boot1 partition layout ==&lt;br /&gt;
* Not used !&lt;br /&gt;
&lt;br /&gt;
== RPMB partition layout ==&lt;br /&gt;
* Not used !&lt;br /&gt;
&lt;br /&gt;
== User Data partition layout ==&lt;br /&gt;
&lt;br /&gt;
There are 3 partitions on the &amp;quot;User Data&amp;quot; physical partition:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;OPOS6UL eMMC partitions&amp;quot;&lt;br /&gt;
|----------------&lt;br /&gt;
| style=&amp;quot;width:50px;background:white;color:black;&amp;quot; align=&amp;quot;center&amp;quot; | ...&lt;br /&gt;
| style=&amp;quot;width:100px;background:green;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | Failsafe/Update (primary)&lt;br /&gt;
| style=&amp;quot;width:600px;background:green;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | Default Rootfs (primary)&lt;br /&gt;
| style=&amp;quot;width:600px;background:green;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | Home/Data (primary)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;OPOS6UL eMMC User data partitions details&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
!Name || U-Boot device  || Linux device || Offset (bytes) || Offset (sectors/blocs) || Size || Comment&lt;br /&gt;
|----------------&lt;br /&gt;
|MBR || NA || NA || 0 || 0 || 512 bytes (1 block) || Master Boot Record + some spare space ( -&amp;gt; Don&#039;t touch it :-) )&lt;br /&gt;
|----------------&lt;br /&gt;
|Failsafe || mmc 0:1 || /dev/mmcblk0p1 || 1M || 2048 (0x800) || 128MBytes (262144 sectors) || system/rootfs to restore your board in case of problem or setup a safe update mechanism (ext4 formatted)&lt;br /&gt;
|----------------&lt;br /&gt;
|Rootfs || mmc 0:2 || /dev/mmcblk0p2 ||  || 264192 (0x40800) || 2GBytes (4194304 sectors) || the default booted rootfs is on this partition (ext4 formatted)&lt;br /&gt;
|----------------&lt;br /&gt;
|Home/Data || mmc 0:3 || /dev/mmcblk0p3 ||  || 4458496 (0x440800) || Rest of space: ~1,5GBytes (3176448 sectors) || HOME can be stored on this partition (ext4 formatted)&lt;br /&gt;
|----------------&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* By default, when flashed from U-Boot, rootfs and boot are only occupying the size of the .ext4 images used during flashing. If you want to increase the rootfs/boot size to all available free space then, after Linux has booted, use the following commands:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# resize2fs /dev/mmcblk0p2        # for Rootfs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Or with &#039;&#039;apf-config&#039;&#039; command:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# apf-config&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* In menu:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
|     1 Expand Filesystem(s)         OS can then use all eMMC/SD space         |&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rootfs/Boot will then be extended to all the &amp;quot;Rootfs&amp;quot;/&amp;quot;Boot&amp;quot; eMMC partitions space.&lt;br /&gt;
&lt;br /&gt;
==Tips==&lt;br /&gt;
* Commands to partition &#039;&#039;User Data&#039;&#039; from fdisk on Host PC with [[U-Boot UMS on APF &amp;amp; OPOS|U-Boot UMS]]. &#039;&#039;&#039;Check /dev/sdc is your OPOS6UL device otherwise you may destroy your PC partition table !!!&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;pre class=host&amp;gt;&lt;br /&gt;
$ sudo fdisk /dev/sdc&lt;br /&gt;
n&lt;br /&gt;
p&lt;br /&gt;
1&lt;br /&gt;
2048&lt;br /&gt;
+128M&lt;br /&gt;
n&lt;br /&gt;
p&lt;br /&gt;
2&lt;br /&gt;
264192&lt;br /&gt;
+2G&lt;br /&gt;
n&lt;br /&gt;
p&lt;br /&gt;
3&lt;br /&gt;
4458496&lt;br /&gt;
7634943&lt;br /&gt;
w&lt;br /&gt;
&lt;br /&gt;
$ sudo mkfs.ext4 -O ^64bit /dev/sdc1&lt;br /&gt;
$ sudo mkfs.ext4 -O ^64bit /dev/sdc2&lt;br /&gt;
$ sudo mkfs.ext4 -O ^64bit /dev/sdc3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* [http://fr.slideshare.net/linaroorg/intro-to-emmc http://fr.slideshare.net/linaroorg/intro-to-emmc]&lt;br /&gt;
* https://fr.wikipedia.org/wiki/Master_boot_record ou http://poloastucien.free.fr/mbr_fat_secteurs_boot_h.html&lt;/div&gt;</summary>
		<author><name>SebastienSz</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=Network_File_System_configuration&amp;diff=14357</id>
		<title>Network File System configuration</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=Network_File_System_configuration&amp;diff=14357"/>
		<updated>2017-06-20T06:49:46Z</updated>

		<summary type="html">&lt;p&gt;SebastienSz: /* NFS server on your development Host */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
On this page, you will find usefull informations to configure NFS ([[wikipedia:Network_File_System_(protocol)|Network File System]]) on your Host and your Target.&lt;br /&gt;
&lt;br /&gt;
==NFS server on your development Host==&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
* On Fedora, NFS is part of your distribution so you normally don&#039;t need to install it.&lt;br /&gt;
* On Ubuntu/Kubuntu:&lt;br /&gt;
 $ sudo apt-get install nfs-kernel-server&lt;br /&gt;
* On OpenSUSE:&lt;br /&gt;
 $ sudo zypper install yast2-nfs-server&lt;br /&gt;
* On Gentoo: &lt;br /&gt;
 # emerge -av nfs-utils&lt;br /&gt;
&lt;br /&gt;
You can also take a look at the [https://wiki.gentoo.org/wiki/Nfs-utils gentoo wiki]&lt;br /&gt;
===Configuration===&lt;br /&gt;
====/etc/exports====&lt;br /&gt;
* You have to declare the directory where you&#039;re going to store the files you want to share accross the network. For that you have to modify the &#039;&#039;&#039;/etc/exports&#039;&#039;&#039; file with (for example):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo vim /etc/exports&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and add it (at the end of the file):&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
# Directory for Armadeus:&lt;br /&gt;
/local/export     192.168.0.0/255.255.255.0(ro,no_root_squash,sync)&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
:In that case your Host will authorize all client from the subnet 192.168.*.* to access &#039;&#039;/local/export&#039;&#039; in &#039;&#039;&#039;read only&#039;&#039;&#039; mode. If you want read/write access from your APF to your exported dir, then replace &#039;&#039;ro&#039;&#039; with &#039;&#039;rw&#039;&#039;.&amp;lt;br&amp;gt;&lt;br /&gt;
* In order to use the same folder through TFTP and NFS, using the default U-Boot scripts for example, it recommended to export your /tftpboot folder as well:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
# Directory for Armadeus:&lt;br /&gt;
/local/export     192.168.0.0/255.255.255.0(ro,no_root_squash,sync)&lt;br /&gt;
/tftpboot     192.168.0.0/255.255.255.0(ro,no_root_squash,sync)&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* If not existing, create your export directory (for example):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo mkdir -p /local/export&lt;br /&gt;
$ sudo chown -R $USER:$GROUP /local/export/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====/etc/hosts====&lt;br /&gt;
* You have to declare your APF/OPOS board in the PC hosts list, to fully support NFS access from U-Boot. For such purpose you have to update the &#039;&#039;/etc/hosts&#039;&#039; file with your preferred editor (as root):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo vim /etc/hosts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and add the IP address of your board after the localhost definition for example :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
127.0.0.1	localhost&lt;br /&gt;
192.168.0.10	apf&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Restart of NFS server====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;Restart of NFS server depending on your distribution&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;On Fedora&#039;&#039;&#039; || &#039;&#039;&#039;On Ubuntu/Kubuntu/debian&#039;&#039;&#039;  || &#039;&#039;&#039;On OpenSUSE&#039;&#039;&#039; || &#039;&#039;&#039;On Gentoo&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 # /sbin/service nfs restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Next time you boot, you can check your NFS server status with:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 # /sbin/service nfs status&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and if not started then:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 # /sbin/service nfs start&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|| &amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ sudo /etc/init.d/nfs-kernel-server restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Next time you boot, you can check your NFS server status with:&lt;br /&gt;
&#039;&#039;System Settings-&amp;gt;System services&#039;&#039;&lt;br /&gt;
|| &amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 # /etc/init.d/nfsserver restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|| &amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 # /etc/init.d/nfs restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==NFS usage on your Armadeus board==&lt;br /&gt;
&lt;br /&gt;
===Mount the NFS partition manually ===&lt;br /&gt;
* check if mount point is existing (for example we will take &#039;&#039;/mnt/nfs&#039;&#039;):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# ls /mnt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* if not existing, create the mount point:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # mkdir -p /mnt/nfs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* mount it (for example):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # mount -t nfs 192.168.0.2:/local/export /mnt/nfs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here 192.168.0.2 is your Host IP address and &#039;&#039;/local/export&#039;&#039; the name of your Host directory you want to mount.&lt;br /&gt;
&lt;br /&gt;
{{Note| On some nfs server (for exemple with debian wheezy) there is a warning when we mount nfs partition. But the filesystem is mounted :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# mount /mnt/nfs/&lt;br /&gt;
svc: failed to register lockdv1 RPC service (errno 97).&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Mount the NFS partition automatically at each boot from FLASH===&lt;br /&gt;
&lt;br /&gt;
* login to your Armadeus board as root&lt;br /&gt;
* open the &#039;&#039;&#039;/etc/fstab&#039;&#039;&#039; file and add this line:&lt;br /&gt;
 &amp;lt;host-ip&amp;gt;:/&amp;lt;path-to-shared-folder&amp;gt; /mnt/&amp;lt;path-to-mount-folder&amp;gt; nfs hard,intr,rsize=8192,wsize=8192 0 0&lt;br /&gt;
example:&lt;br /&gt;
 192.168.0.2:/local/export /mnt/nfs nfs hard,intr,rsize=8192,wsize=8192 0 0&lt;br /&gt;
* check your modification:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # mount /mnt/nfs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* reboot your board&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* and enjoy the result&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # df&lt;br /&gt;
 # ls /mnt/nfs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
When you have a problem, verify that the NFS server is running on the host:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ /etc/init.d/nfs-kernel-server status&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
or&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ /sbin/service nfs status&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Boot from NFS===&lt;br /&gt;
This boot procedure is usefull to test a modified rootfs and/or a linux kernel keeping safe the original flash memory content of your board.&lt;br /&gt;
* on your Host, expand generated rootfs image to your NFS export dir (for example if your NFS export dir is &#039;&#039;/tftpboot&#039;&#039; on your Host) and you want to boot on it using the U-Boot script nfsboot:&lt;br /&gt;
&amp;lt;pre class=host&amp;gt;&lt;br /&gt;
 $ make shell_env&lt;br /&gt;
 $ source armadeus_env.sh&lt;br /&gt;
 $ sudo mkdir -p /tftpboot/$ARMADEUS_BOARD_NAME-root/boot&lt;br /&gt;
 $ sudo tar xvf $ARMADEUS_ROOTFS_TAR -C /tftpboot/$ARMADEUS_BOARD_NAME-root&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* The copy of the Linux kernel to the NFS &#039;&#039;/boot&#039;&#039; folder, makes possible to also download it with NFS when booting the board:&lt;br /&gt;
&amp;lt;pre class=host&amp;gt;&lt;br /&gt;
 $ sudo cp $ARMADEUS_BINARIES/$ARMADEUS_BOARD_NAME-linux.bin /tftpboot/$ARMADEUS_BOARD_NAME-root/boot/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* With recent (3.10+) kernels, you also have to copy the Device Tree blobs:&lt;br /&gt;
&amp;lt;pre class=host&amp;gt;&lt;br /&gt;
 $ sudo mkdir -p /tftpboot/$ARMADEUS_BOARD_NAME-root/boot/dtbs&lt;br /&gt;
 $ sudo cp $ARMADEUS_BINARIES/*.dtb /tftpboot/$ARMADEUS_BOARD_NAME-root/boot/dtbs/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* On your board, in U-Boot, check if the &#039;&#039;rootpath&#039;&#039; envt variable is set accordingly:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; printenv rootpath&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* If not, then set it (by default U-boot is configured to use the following path &#039;&#039;/tftpboot/apfXXXX-root&#039;&#039;) where apfXXXX may be apf9328, apf27, apf28, apf51, apf6:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; setenv rootpath /tftpboot/${board_name}-root&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* save it:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; saveenv&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* then boot with:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; run nfsboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Summary of the required Packages:===&lt;br /&gt;
* portmap (Buildroot)&lt;br /&gt;
* nfs (busybox)&lt;br /&gt;
* nfs support (Linux, activated by default in Armadeus configuration)&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
===RPC: Program not registered===&lt;br /&gt;
* If &#039;&#039;nfsd&#039;&#039; and &#039;&#039;mountd&#039;&#039; daemons are not running on your Host, then you will get a message like:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
mount: RPC: Program not registered&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* In that case, restart the NFS service on your Host (see [[Network_File_System_configuration#Restart_of_NFS_server|above]]).&lt;br /&gt;
&lt;br /&gt;
===Portmap===&lt;br /&gt;
* To successfully mount a NFS drive, &#039;&#039;portmap&#039;&#039; daemon should be running on your APF, if not, system will hang during some minutes when you launch the mount !!&lt;br /&gt;
To check if &#039;&#039;portmap&#039;&#039; is running, look at the running processes:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # ps faux&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If portmap is not listed, then launch it manually:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # /etc/init.d/S13portmap&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Connection refused===&lt;br /&gt;
* If you get this on your APF when trying to mount:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
mount: mounting 192.168.0.2:/local/export on /mnt/nfs/ failed: Connection refused&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* then your kernel might need some extra options:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
mount -o port=2049,nolock,proto=tcp 192.168.0.2:/local/export /mnt/nfs/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==NFS Server under Windows==&lt;br /&gt;
For those who want to use the NFS service on Windows, a small and FREE NFS server is available [http://www.freedownloadscenter.com/Utilities/Misc__Utilities/nfsAxe.html here].&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* http://www.denx.de/wiki/view/DULG/SystemSetup#Section_4.8.&lt;br /&gt;
&lt;br /&gt;
[[Category:Network]]&lt;/div&gt;</summary>
		<author><name>SebastienSz</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=Network_File_System_configuration&amp;diff=14356</id>
		<title>Network File System configuration</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=Network_File_System_configuration&amp;diff=14356"/>
		<updated>2017-06-20T06:39:18Z</updated>

		<summary type="html">&lt;p&gt;SebastienSz: /* NFS server on your development Host */ Gentoo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
On this page, you will find usefull informations to configure NFS ([[wikipedia:Network_File_System_(protocol)|Network File System]]) on your Host and your Target.&lt;br /&gt;
&lt;br /&gt;
==NFS server on your development Host==&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
* On Fedora, NFS is part of your distribution so you normally don&#039;t need to install it.&lt;br /&gt;
* On Ubuntu/Kubuntu:&lt;br /&gt;
 $ sudo apt-get install nfs-kernel-server&lt;br /&gt;
* On OpenSUSE:&lt;br /&gt;
 $ sudo zypper install yast2-nfs-server&lt;br /&gt;
* On Gentoo:&lt;br /&gt;
 # emerge -av nfs-utils&lt;br /&gt;
===Configuration===&lt;br /&gt;
====/etc/exports====&lt;br /&gt;
* You have to declare the directory where you&#039;re going to store the files you want to share accross the network. For that you have to modify the &#039;&#039;&#039;/etc/exports&#039;&#039;&#039; file with (for example):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo vim /etc/exports&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and add it (at the end of the file):&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
# Directory for Armadeus:&lt;br /&gt;
/local/export     192.168.0.0/255.255.255.0(ro,no_root_squash,sync)&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
:In that case your Host will authorize all client from the subnet 192.168.*.* to access &#039;&#039;/local/export&#039;&#039; in &#039;&#039;&#039;read only&#039;&#039;&#039; mode. If you want read/write access from your APF to your exported dir, then replace &#039;&#039;ro&#039;&#039; with &#039;&#039;rw&#039;&#039;.&amp;lt;br&amp;gt;&lt;br /&gt;
* In order to use the same folder through TFTP and NFS, using the default U-Boot scripts for example, it recommended to export your /tftpboot folder as well:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
# Directory for Armadeus:&lt;br /&gt;
/local/export     192.168.0.0/255.255.255.0(ro,no_root_squash,sync)&lt;br /&gt;
/tftpboot     192.168.0.0/255.255.255.0(ro,no_root_squash,sync)&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* If not existing, create your export directory (for example):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo mkdir -p /local/export&lt;br /&gt;
$ sudo chown -R $USER:$GROUP /local/export/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====/etc/hosts====&lt;br /&gt;
* You have to declare your APF/OPOS board in the PC hosts list, to fully support NFS access from U-Boot. For such purpose you have to update the &#039;&#039;/etc/hosts&#039;&#039; file with your preferred editor (as root):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo vim /etc/hosts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and add the IP address of your board after the localhost definition for example :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
127.0.0.1	localhost&lt;br /&gt;
192.168.0.10	apf&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Restart of NFS server====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;Restart of NFS server depending on your distribution&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;On Fedora&#039;&#039;&#039; || &#039;&#039;&#039;On Ubuntu/Kubuntu/debian&#039;&#039;&#039;  || &#039;&#039;&#039;On OpenSUSE&#039;&#039;&#039; || &#039;&#039;&#039;On Gentoo&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 # /sbin/service nfs restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Next time you boot, you can check your NFS server status with:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 # /sbin/service nfs status&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and if not started then:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 # /sbin/service nfs start&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|| &amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ sudo /etc/init.d/nfs-kernel-server restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Next time you boot, you can check your NFS server status with:&lt;br /&gt;
&#039;&#039;System Settings-&amp;gt;System services&#039;&#039;&lt;br /&gt;
|| &amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 # /etc/init.d/nfsserver restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|| &amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 # /etc/init.d/nfs restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==NFS usage on your Armadeus board==&lt;br /&gt;
&lt;br /&gt;
===Mount the NFS partition manually ===&lt;br /&gt;
* check if mount point is existing (for example we will take &#039;&#039;/mnt/nfs&#039;&#039;):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# ls /mnt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* if not existing, create the mount point:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # mkdir -p /mnt/nfs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* mount it (for example):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # mount -t nfs 192.168.0.2:/local/export /mnt/nfs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here 192.168.0.2 is your Host IP address and &#039;&#039;/local/export&#039;&#039; the name of your Host directory you want to mount.&lt;br /&gt;
&lt;br /&gt;
{{Note| On some nfs server (for exemple with debian wheezy) there is a warning when we mount nfs partition. But the filesystem is mounted :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# mount /mnt/nfs/&lt;br /&gt;
svc: failed to register lockdv1 RPC service (errno 97).&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Mount the NFS partition automatically at each boot from FLASH===&lt;br /&gt;
&lt;br /&gt;
* login to your Armadeus board as root&lt;br /&gt;
* open the &#039;&#039;&#039;/etc/fstab&#039;&#039;&#039; file and add this line:&lt;br /&gt;
 &amp;lt;host-ip&amp;gt;:/&amp;lt;path-to-shared-folder&amp;gt; /mnt/&amp;lt;path-to-mount-folder&amp;gt; nfs hard,intr,rsize=8192,wsize=8192 0 0&lt;br /&gt;
example:&lt;br /&gt;
 192.168.0.2:/local/export /mnt/nfs nfs hard,intr,rsize=8192,wsize=8192 0 0&lt;br /&gt;
* check your modification:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # mount /mnt/nfs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* reboot your board&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* and enjoy the result&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # df&lt;br /&gt;
 # ls /mnt/nfs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
When you have a problem, verify that the NFS server is running on the host:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ /etc/init.d/nfs-kernel-server status&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
or&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ /sbin/service nfs status&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Boot from NFS===&lt;br /&gt;
This boot procedure is usefull to test a modified rootfs and/or a linux kernel keeping safe the original flash memory content of your board.&lt;br /&gt;
* on your Host, expand generated rootfs image to your NFS export dir (for example if your NFS export dir is &#039;&#039;/tftpboot&#039;&#039; on your Host) and you want to boot on it using the U-Boot script nfsboot:&lt;br /&gt;
&amp;lt;pre class=host&amp;gt;&lt;br /&gt;
 $ make shell_env&lt;br /&gt;
 $ source armadeus_env.sh&lt;br /&gt;
 $ sudo mkdir -p /tftpboot/$ARMADEUS_BOARD_NAME-root/boot&lt;br /&gt;
 $ sudo tar xvf $ARMADEUS_ROOTFS_TAR -C /tftpboot/$ARMADEUS_BOARD_NAME-root&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* The copy of the Linux kernel to the NFS &#039;&#039;/boot&#039;&#039; folder, makes possible to also download it with NFS when booting the board:&lt;br /&gt;
&amp;lt;pre class=host&amp;gt;&lt;br /&gt;
 $ sudo cp $ARMADEUS_BINARIES/$ARMADEUS_BOARD_NAME-linux.bin /tftpboot/$ARMADEUS_BOARD_NAME-root/boot/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* With recent (3.10+) kernels, you also have to copy the Device Tree blobs:&lt;br /&gt;
&amp;lt;pre class=host&amp;gt;&lt;br /&gt;
 $ sudo mkdir -p /tftpboot/$ARMADEUS_BOARD_NAME-root/boot/dtbs&lt;br /&gt;
 $ sudo cp $ARMADEUS_BINARIES/*.dtb /tftpboot/$ARMADEUS_BOARD_NAME-root/boot/dtbs/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* On your board, in U-Boot, check if the &#039;&#039;rootpath&#039;&#039; envt variable is set accordingly:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; printenv rootpath&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* If not, then set it (by default U-boot is configured to use the following path &#039;&#039;/tftpboot/apfXXXX-root&#039;&#039;) where apfXXXX may be apf9328, apf27, apf28, apf51, apf6:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; setenv rootpath /tftpboot/${board_name}-root&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* save it:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; saveenv&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* then boot with:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; run nfsboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Summary of the required Packages:===&lt;br /&gt;
* portmap (Buildroot)&lt;br /&gt;
* nfs (busybox)&lt;br /&gt;
* nfs support (Linux, activated by default in Armadeus configuration)&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
===RPC: Program not registered===&lt;br /&gt;
* If &#039;&#039;nfsd&#039;&#039; and &#039;&#039;mountd&#039;&#039; daemons are not running on your Host, then you will get a message like:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
mount: RPC: Program not registered&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* In that case, restart the NFS service on your Host (see [[Network_File_System_configuration#Restart_of_NFS_server|above]]).&lt;br /&gt;
&lt;br /&gt;
===Portmap===&lt;br /&gt;
* To successfully mount a NFS drive, &#039;&#039;portmap&#039;&#039; daemon should be running on your APF, if not, system will hang during some minutes when you launch the mount !!&lt;br /&gt;
To check if &#039;&#039;portmap&#039;&#039; is running, look at the running processes:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # ps faux&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If portmap is not listed, then launch it manually:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # /etc/init.d/S13portmap&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Connection refused===&lt;br /&gt;
* If you get this on your APF when trying to mount:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
mount: mounting 192.168.0.2:/local/export on /mnt/nfs/ failed: Connection refused&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* then your kernel might need some extra options:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
mount -o port=2049,nolock,proto=tcp 192.168.0.2:/local/export /mnt/nfs/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==NFS Server under Windows==&lt;br /&gt;
For those who want to use the NFS service on Windows, a small and FREE NFS server is available [http://www.freedownloadscenter.com/Utilities/Misc__Utilities/nfsAxe.html here].&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* http://www.denx.de/wiki/view/DULG/SystemSetup#Section_4.8.&lt;br /&gt;
&lt;br /&gt;
[[Category:Network]]&lt;/div&gt;</summary>
		<author><name>SebastienSz</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=I.MX6UL_internal_ADC&amp;diff=14343</id>
		<title>I.MX6UL internal ADC</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=I.MX6UL_internal_ADC&amp;diff=14343"/>
		<updated>2017-05-18T09:52:19Z</updated>

		<summary type="html">&lt;p&gt;SebastienSz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
This description uses Linux kernel &amp;gt;= 4.8.&lt;br /&gt;
&lt;br /&gt;
i.MX6UL (processor of [[OPOS6UL]] has an integrated 12 bits 16 channels Analog to Digital Converter.&lt;br /&gt;
&lt;br /&gt;
Only channels 0-6 may be used to generic conversions and channels 2, 3, 4, 5 are used for the touchscreen on [[OPOS6ULDev]].&lt;br /&gt;
&lt;br /&gt;
* Channel 1 is available on J21 pin 40 of [[OPOS6ULDev]] (AIN1/YNLR: muxed with touchscreen)&lt;br /&gt;
* Channel 2 is available on J21 pin 38 of [[OPOS6ULDev]] (AIN2/YPLL: muxed with touchscreen)&lt;br /&gt;
* Channel 3 is available on J21 pin 39 of [[OPOS6ULDev]] (AIN3/XNUR: muxed with touchscreen)&lt;br /&gt;
* Channel 4 is available on J21 pin 37 of [[OPOS6ULDev]] (AIN4/XPUL: muxed with touchscreen)&lt;br /&gt;
* Channel 8 is available on J3 pin 12 of [[OPOS6ULDev]] (AIN8)&lt;br /&gt;
* Channel 9 is available on J3 pin  7 of [[OPOS6ULDev]] (AIN9)&lt;br /&gt;
&lt;br /&gt;
== Driver ==&lt;br /&gt;
Driver is by default included if you choose an [[OPOS6UL]] as target.&lt;br /&gt;
&lt;br /&gt;
Otherwise, you can select it that way:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
[  ] $ make linux-menuconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
Device Drivers  ---&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;*&amp;gt; Industrial I/O support  ---&amp;gt;&lt;br /&gt;
            ...&lt;br /&gt;
            Analog to digital converters&lt;br /&gt;
                ...&lt;br /&gt;
                &amp;lt;*&amp;gt; Freescale vf610 ADC driver&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then compile the distribution :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
[  ] $ make linux &amp;amp;&amp;amp; make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Use it ==&lt;br /&gt;
&lt;br /&gt;
=== Read channels value ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# cd /sys/bus/iio/devices/iio:device0&lt;br /&gt;
# ls&lt;br /&gt;
buffer                         in_voltage5_raw&lt;br /&gt;
current_timestamp_clock        in_voltage6_raw&lt;br /&gt;
dev                            in_voltage7_raw&lt;br /&gt;
in_conversion_mode             in_voltage8_raw&lt;br /&gt;
in_temp_input                  in_voltage9_raw&lt;br /&gt;
in_voltage0_raw                in_voltage_sampling_frequency&lt;br /&gt;
in_voltage10_raw               in_voltage_scale&lt;br /&gt;
in_voltage11_raw               name&lt;br /&gt;
in_voltage12_raw               of_node&lt;br /&gt;
in_voltage13_raw               power&lt;br /&gt;
in_voltage14_raw               sampling_frequency_available&lt;br /&gt;
in_voltage15_raw               scan_elements&lt;br /&gt;
in_voltage1_raw                subsystem&lt;br /&gt;
in_voltage2_raw                trigger&lt;br /&gt;
in_voltage3_raw                uevent&lt;br /&gt;
in_voltage4_raw&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To read ADC value just «cat» the corresponding input file:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# cat in_voltage1_raw       for channel 1 (ADC1_IN1)&lt;br /&gt;
4095&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All values are not converted (ie. directly show the register content). To have the mV value, you must do: value_mV = read_value * 3300/4095&lt;br /&gt;
&lt;br /&gt;
==AsDevices==&lt;br /&gt;
* You can access this device from your C/C++ application using &#039;&#039;as_adc_xxx_iio&#039;&#039; functions from [[AsDevices]]&lt;br /&gt;
* &#039;&#039;target/demos/oscillo&#039;&#039; is a &amp;quot;good&amp;quot; example to start with...&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* http://www.at91.com/linux4sam/bin/view/Linux4SAM/IioAdcDriver&lt;br /&gt;
&lt;br /&gt;
[[Category:Linux drivers]]&lt;br /&gt;
[[Category:Analog to Digital Converter]]&lt;br /&gt;
[[Category:Industrial Input Output]]&lt;/div&gt;</summary>
		<author><name>SebastienSz</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=LinuxInstall&amp;diff=14341</id>
		<title>LinuxInstall</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=LinuxInstall&amp;diff=14341"/>
		<updated>2017-05-05T11:32:01Z</updated>

		<summary type="html">&lt;p&gt;SebastienSz: /* Get Armadeus software */ Don&amp;#039;t use buildroot-update branch anymore&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;How-To install Armadeus Software Development Kit (SDK) on Linux systems. This SDK is currently based on the (excellent) [http://buildroot.net/ Buildroot].&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The installation was successfully tested on the following distributions:&lt;br /&gt;
* Debian Lenny (5.0),  Squeeze (6.0.x), Wheezy (7.2), Jessie (8.0)&lt;br /&gt;
* X/KUbuntu Edgy Eft (6.10), Gutsy Gibbon (7.10), Hardy Heron (8.04) &amp;amp; Jaunty Jackalope (9.04)&lt;br /&gt;
* Ubuntu  Lucid Lynx (10.04) (32 &amp;amp; 64bits), 12.04 LTS (32 &amp;amp; 64bits), 13.10 (32 &amp;amp; 64bits), 14.04 &amp;amp; 15.04.&lt;br /&gt;
* Mandriva 2006&lt;br /&gt;
* Fedora Core 3 &amp;amp; 4, Fedora 10, Laughlin (14)&lt;br /&gt;
* Red Hat Enterprise 5.2&lt;br /&gt;
* Gentoo 10.0 (32 &amp;amp; 64 bits)&lt;br /&gt;
* SuSE 10.1, OpenSUSE 11.3 - 12.3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The installation may fail on:&#039;&#039;&#039;&lt;br /&gt;
* Ubuntu Karmic Koala (9.10): tslib fails to build&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;APF28 requirements:&#039;&#039;&#039;&lt;br /&gt;
* APF28 board requires a Linux distribution with (GNU) tar version 1.20 or later to compile the Linux Kernel - Please update or upgrade your Linux distribution. &lt;br /&gt;
&lt;br /&gt;
==Prerequisites for Linux installation==&lt;br /&gt;
{{Note|From here we assume that your Linux system has a &#039;&#039;make&#039;&#039; version &#039;&#039;&#039;greater or equal to&#039;&#039;&#039; 3.81. To check it: &lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ make -v&lt;br /&gt;
GNU Make 3.81&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
For armadeus up to 3.4, make should be &#039;&#039;&#039;strictly&#039;&#039;&#039; make-3.81 (make-3.82 is too strict). A Fedora (14 and 15) -specific solution can be found later; other recent distributions such as mageia1 also have make-3.82, and a generic solution, based on configure&amp;amp;&amp;amp; make&amp;amp;&amp;amp; sudo make install can be used to install make-3.81 (which can be retrieved from http://ftp.gnu.org/gnu/make/make-6.81.tar.gz) in /usr/local/bin (and , according to one&#039;s PATH, make 3-81 can be invoked directly or as /usr/local/bin/make). &lt;br /&gt;
 &lt;br /&gt;
Depending on your distribution, some additional packages are required:&lt;br /&gt;
&lt;br /&gt;
===Debian/Ubuntu based systems===&lt;br /&gt;
[[Ubuntu/Debian installation prerequisites]]&lt;br /&gt;
&lt;br /&gt;
===Mandriva based systems=== &lt;br /&gt;
[[Mandriva installation prerequisites]]&lt;br /&gt;
&lt;br /&gt;
===RPM-based systems (RedHat, Fedora, CentOS)===&lt;br /&gt;
[[RedHat/Fedora installation prerequisites]]&lt;br /&gt;
&lt;br /&gt;
===OpenSuse based systems===&lt;br /&gt;
[[OpenSuse installation prerequisites]]&lt;br /&gt;
&lt;br /&gt;
===Gentoo based systems===&lt;br /&gt;
[[Gentoo installation prerequisites]]&lt;br /&gt;
&lt;br /&gt;
==Get Armadeus software==&lt;br /&gt;
* &#039;&#039;&#039;If you are a &amp;quot;careful&amp;quot; user&#039;&#039;&#039;, then download [https://sourceforge.net/projects/armadeus/files/ the latest stable installation tarball from SourceForge] and detar it wherever you want:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ tar xjvf armadeus-6.0.tar.bz2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;If you want the latest snapshot or if you have an [[OPOS6UL]]&#039;&#039;&#039;, the whole development tree can be checked out from our [[GIT]] repository.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ git clone git://git.code.sf.net/p/armadeus/code armadeus&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* depending on your previous choice, a directory named &#039;&#039;armadeus/&#039;&#039; or &#039;&#039;armadeus-6.0/&#039;&#039; will be created on your hard-disk and will contain all the files you need.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarks&#039;&#039;&#039;:&lt;br /&gt;
* &#039;&#039;&#039;Do not use spaces&#039;&#039;&#039; in the directory name !&lt;br /&gt;
* &#039;&#039;&#039;Do not use a directory path beginning with /usr.&#039;&#039;&#039; It is a known bug of Buildroot (until BR2012.11, at 2012-12).&lt;br /&gt;
* GIT write/push accesses are limited to the integrators ([[User:JulienB|JulienB]], [[User:SebastienSz|SebastienSz]], [[User:Jorasse|Jorasse]], [[User:FabienM|FabienM]], [[User:SebastienR|SebastienR]])&lt;br /&gt;
&lt;br /&gt;
==Configure SDK/BSP options==&lt;br /&gt;
{{Note|If you are new to Armadeus and have troubles compiling armadeus-5.x/armadeus-6.x using the following instructions, you may find some hints here: [[Releases]]}}&lt;br /&gt;
*Go to the directory where you put the Armadeus sources:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ cd armadeus/  (or armadeus-6.0/)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*The first time you compile an Armadeus distribution you have to specify the target (here the [[APF9328]]) to work with. &lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make apf9328_defconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This command reloads the default configuration to support your target and automatically start a Buildroot&#039;s configuration menu.&lt;br /&gt;
&lt;br /&gt;
* Current valid default configurations are:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
apf9328_defconfig  apf27_defconfig  pps_defconfig  apf28_defconfig  apf51_defconfig  pps51_defconfig apf6_defconfig apf6legacy_defconfig opos6ul_defconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For PPS boards, please see [[APF27_PPS]] or [[PPS51]] Wiki pages, as these boards have specific build.&lt;br /&gt;
&lt;br /&gt;
* After some downloads, you will get the Buildroot configuration interface:&lt;br /&gt;
&lt;br /&gt;
{{Note|If you ever made changes during the following steps, at any time, you can reload the default configuration with:&lt;br /&gt;
 $ make xxx_defconfig       (xxx depending on your module name)}}&lt;br /&gt;
&lt;br /&gt;
[[Image:Menuconfig3.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
*If you are not familiar with Buildroot here are some tips:&lt;br /&gt;
*# you can move the highlighted item with the &amp;quot;up&amp;quot;/&amp;quot;down&amp;quot; arrow keys&lt;br /&gt;
*# with the &amp;quot;left&amp;quot;/&amp;quot;right&amp;quot; arrow keys you can choose between &amp;quot;Select&amp;quot;, &amp;quot;Exit&amp;quot; or &amp;quot;Help&amp;quot; buttons&lt;br /&gt;
*# &amp;quot;space&amp;quot;/&amp;quot;enter&amp;quot;:&lt;br /&gt;
*#* selects the currently highlighted item if you are on the &amp;quot;Select&amp;quot; button&lt;br /&gt;
*#* go back in previous menu if you are on &amp;quot;Exit&amp;quot; button&lt;br /&gt;
*#* show you some Help for current item if you are on &amp;quot;Help&amp;quot; button&lt;br /&gt;
*# for more Help about Buildroot commands, select &amp;quot;Help&amp;quot; in the main configuration screen&lt;br /&gt;
&lt;br /&gt;
* Update the memory configuration of your board (&#039;&#039;&#039;if needed&#039;&#039;&#039;; by default BSP is configured for the minimal memory configuration available on the corresponding board):&lt;br /&gt;
&lt;br /&gt;
:In menu:&lt;br /&gt;
:&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;System configuration  ---&amp;gt;    [*] Armadeus Device Support  ---&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:you can check and change the quantity of RAM available on your Armadeus board:&lt;br /&gt;
:[[Image:Build_config_memory.png]]&lt;br /&gt;
:For [[APF9328]] the memory can be either 16 or 32MiB (be sure to select 1 RAM chip)&lt;br /&gt;
:For [[APF27]] it could be either 64MiB or 128MiB (2 x 64MiB) (in that case be sure to select 2 chips of 64MiB instead of 1 chip of 128MiB).&lt;br /&gt;
:For [[APF51]] it could be either 256MiB or 512MiB (2x256MiB) (in such case be sure to select 2 chips of 256MiB instead of 1 chip of 512).&lt;br /&gt;
:For [[APF28]] The memory can be 128, 256, 512 or 1024MiB (be sure to select 1 RAM chip).&lt;br /&gt;
:For [[APF6]]/[[APF6SP]] The memory can be 512 Mbytes or 1Gbytes with ram chip size of 512Mbytes.&lt;br /&gt;
:For [[OPOS6UL]] The memory size is automatically detected so you don&#039;t care ;-)&lt;br /&gt;
&lt;br /&gt;
* You may decrease the compilation time by increasing the number of parallel jobs running simultaneously on your system (the result is not guaranteed). This option is located in:&lt;br /&gt;
:&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;Build Options ---&amp;gt;    (0) Number of jobs to run simultaneously&amp;lt;/pre&amp;gt;&lt;br /&gt;
0 means that Buildroot will try to guess automatically how much parallel jobs it can launch.&lt;br /&gt;
&lt;br /&gt;
* During the SDK/BSP build, a lot of software archives are downloaded from Internet. The downloaded files are put by default in the &#039;&#039;armadeus/downloads/&#039;&#039; directory. &#039;&#039;&#039;If you have several views or plan to build the toolchain several times&#039;&#039;&#039;, we advise you to put all the downloaded files in &#039;&#039;/local/downloads&#039;&#039; (for example). This is done by configuring Buildroot to use this directory for all your views. Nevertheless, Buildroot will be downloaded separately for each build environment you set up.&lt;br /&gt;
:&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;Build options  ---&amp;gt;    (...) Download dir&amp;lt;/pre&amp;gt;&lt;br /&gt;
:[[Image:Build_config_download.png]]&lt;br /&gt;
{{Note|Of course, &#039;&#039;/local/downloads&#039;&#039; should exists on your system and you should have writing rights on it !}}&lt;br /&gt;
* In recent Buildroot you can also use the following method:&lt;br /&gt;
 export BR2_DL_DIR=/local/downloads&lt;br /&gt;
&lt;br /&gt;
* After the build, we advise you to copy all the files in &#039;&#039;downloads/&#039;&#039; / &#039;&#039;/local/downloads&#039;&#039; on a removable medium, in case you want to install the development tools on other systems, without to have to reload all the archives.&lt;br /&gt;
&lt;br /&gt;
* Now, Exit the configuration tool and save your configuration&lt;br /&gt;
&lt;br /&gt;
* You can come back to this configuration menu, by typing (your changes will be kept): &lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
make menuconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Launch build==&lt;br /&gt;
 $ make&lt;br /&gt;
The toolchain and the full distribution are automatically built. During this procedure, several files are downloaded from Internet. &amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Please wait for a while.... it takes at least one hour for the first run!&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
By default, the downloaded files/tarball are put in the &#039;&#039;armadeus/downloads/&#039;&#039; directory. Please see the previous chapter to know how to optimize that if you plan to build several views or want to build faster.&lt;br /&gt;
&lt;br /&gt;
==Enjoy the result==&lt;br /&gt;
The generated binary files can be found in the subdirectory &#039;&#039;buildroot/output/images&#039;&#039;:&lt;br /&gt;
*&#039;&#039;apf9328-u-boot.brec&#039;&#039; (only on [[APF9328]]): BRecord image that can be used with the bootstrap, if U-Boot is not installed or not working (see [[BootLoader]] page)&lt;br /&gt;
*&#039;&#039;xxx-u-boot.bin&#039;&#039;: U-Boot image file to be used with U-Boot itself, (see [[BootLoader#Update_U-Boot | updating U-Boot]])&lt;br /&gt;
*&#039;&#039;xxx-linux.bin&#039;&#039;: Linux image to use with U-Boot, (see [[Target_Software_Installation#Linux_kernel_installation | updating Linux]])&lt;br /&gt;
*&#039;&#039;xxx-rootfs.jffs2&#039;&#039;: JFFS2 filesystem/rootfs image to use with U-Boot, (see [[Target_Software_Installation#Linux_rootfs_installation | updating rootfs]])&lt;br /&gt;
*&#039;&#039;xxx-rootfs.ubi&#039;&#039; (not supported on [[APF9328]]): [[UBIFS|UBI]] filesystem/rootfs image to use with U-Boot, (see [[Target_Software_Installation#Linux_rootfs_installation | updating rootfs]])&lt;br /&gt;
*&#039;&#039;xxx-rootfs.ext4&#039;&#039;: EXT4 filesystem/rootfs image to use with U-Boot, (on [[APF6]] and [[OPOS6UL]])&lt;br /&gt;
*&#039;&#039;xxx-rootfs.tar&#039;&#039;: for an NFS/MMC based rootfs, (see [[Network_Configuration#Boot_from_NFS | Booting from NFS]] &amp;amp; [[MultiMediaCard#Booting_from_MMC.2FSD | Booting from a MMC/SD]])&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Please note the new naming convention of binary files and directories (since Armadeus 4.0)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;buildroot/output/build&#039;&#039;: contains all the build results for target root filesystem, Linux, Busybox and U-Boot...&lt;br /&gt;
*&#039;&#039;buildroot/output/toolchain/&#039;&#039;: cross compilation toolchain&#039;s build dir. Binaries usable for cross-compilation are in &#039;&#039;buildroot/output/host/usr/bin&#039;&#039;.&lt;br /&gt;
*&#039;&#039;buildroot/output/target/&#039;&#039;: target filessytem before generating rootfs images&lt;br /&gt;
&lt;br /&gt;
More information is available in the  [http://buildroot.uclibc.org/buildroot.html Buildroot&#039;s documentation]&lt;br /&gt;
&lt;br /&gt;
* Note: Previous versions (3.x) of Armadeus SDK stored the generated binary files at a different place: &#039;&#039; &#039;&#039;buildroot/binaries/XX/&#039;&#039; (where XX was the name of your board).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You then copy the binary image to your server directory:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ cp buildroot/output/images/* /tftpboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==To keep your local copy/repository up-to-date with the armadeus GIT repository==&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ git pull&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will update your working directory to the latest release.&lt;br /&gt;
&lt;br /&gt;
Note: if &amp;quot;git pull&amp;quot; fails because a directory or a file already exists, then do:&lt;br /&gt;
 $ rm -rf &amp;lt;this-directory/file&amp;gt;&lt;br /&gt;
 $ git pull&lt;br /&gt;
&lt;br /&gt;
You can do a:&lt;br /&gt;
 $ make apfXX_defconfig&lt;br /&gt;
to have the latest features automatically activated.&lt;br /&gt;
&lt;br /&gt;
You have to do a &#039;&#039;&#039;make&#039;&#039;&#039; to rebuild binary files and then upload the binary files to your target.&lt;br /&gt;
&lt;br /&gt;
Note: if definitively everything goes wrong while it worked before the last update.&lt;br /&gt;
You can apply the following procedure (all your modifications in buildroot will be lost):&lt;br /&gt;
 $ rm -rf buildroot/&lt;br /&gt;
 $ rm Makefile&lt;br /&gt;
 $ git pull&lt;br /&gt;
 $ make apfXX_defconfig&lt;br /&gt;
 $ make&lt;br /&gt;
 $ cp buildroot/output/images/* /tftpboot&lt;br /&gt;
&lt;br /&gt;
Enjoy!&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>SebastienSz</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=I.MX6UL_internal_ADC&amp;diff=14340</id>
		<title>I.MX6UL internal ADC</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=I.MX6UL_internal_ADC&amp;diff=14340"/>
		<updated>2017-04-25T14:47:43Z</updated>

		<summary type="html">&lt;p&gt;SebastienSz: /* Introduction */ pin 12 and 9 are on J3&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
This description uses Linux kernel &amp;gt;= 4.8.&lt;br /&gt;
&lt;br /&gt;
i.MX6UL (processor of [[OPOS6UL]] has an integrated 12 bits 16 channels Analog to Digital Converter.&lt;br /&gt;
&lt;br /&gt;
Only channels 0-6 may be used to generic conversions and channels 2, 3, 4, 5 are used for the touchscreen on [[OPOS6ULDev]].&lt;br /&gt;
&lt;br /&gt;
* Channel 1 is available on J21 pin 40 of [[OPOS6ULDev]] (AIN1/YNLR: muxed with touchscreen)&lt;br /&gt;
* Channel 2 is available on J21 pin 38 of [[OPOS6ULDev]] (AIN2/YPLL: muxed with touchscreen)&lt;br /&gt;
* Channel 3 is available on J21 pin 39 of [[OPOS6ULDev]] (AIN3/XNUR: muxed with touchscreen)&lt;br /&gt;
* Channel 4 is available on J21 pin 37 of [[OPOS6ULDev]] (AIN4/XPUL: muxed with touchscreen)&lt;br /&gt;
* Channel 8 is available on J3 pin 12 of [[OPOS6ULDev]] (AIN8)&lt;br /&gt;
* Channel 9 is available on J3 pin  9 of [[OPOS6ULDev]] (AIN9)&lt;br /&gt;
&lt;br /&gt;
== Driver ==&lt;br /&gt;
Driver is by default included if you choose an [[OPOS6UL]] as target.&lt;br /&gt;
&lt;br /&gt;
Otherwise, you can select it that way:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
[  ] $ make linux-menuconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
Device Drivers  ---&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;*&amp;gt; Industrial I/O support  ---&amp;gt;&lt;br /&gt;
            ...&lt;br /&gt;
            Analog to digital converters&lt;br /&gt;
                ...&lt;br /&gt;
                &amp;lt;*&amp;gt; Freescale vf610 ADC driver&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then compile the distribution :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
[  ] $ make linux &amp;amp;&amp;amp; make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Use it ==&lt;br /&gt;
&lt;br /&gt;
=== Read channels value ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# cd /sys/bus/iio/devices/iio:device0&lt;br /&gt;
# ls&lt;br /&gt;
buffer                         in_voltage5_raw&lt;br /&gt;
current_timestamp_clock        in_voltage6_raw&lt;br /&gt;
dev                            in_voltage7_raw&lt;br /&gt;
in_conversion_mode             in_voltage8_raw&lt;br /&gt;
in_temp_input                  in_voltage9_raw&lt;br /&gt;
in_voltage0_raw                in_voltage_sampling_frequency&lt;br /&gt;
in_voltage10_raw               in_voltage_scale&lt;br /&gt;
in_voltage11_raw               name&lt;br /&gt;
in_voltage12_raw               of_node&lt;br /&gt;
in_voltage13_raw               power&lt;br /&gt;
in_voltage14_raw               sampling_frequency_available&lt;br /&gt;
in_voltage15_raw               scan_elements&lt;br /&gt;
in_voltage1_raw                subsystem&lt;br /&gt;
in_voltage2_raw                trigger&lt;br /&gt;
in_voltage3_raw                uevent&lt;br /&gt;
in_voltage4_raw&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To read ADC value just «cat» the corresponding input file:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# cat in_voltage1_raw       for channel 1 (ADC1_IN1)&lt;br /&gt;
4095&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All values are not converted (ie. directly show the register content). To have the mV value, you must do: value_mV = read_value * 3300/4095&lt;br /&gt;
&lt;br /&gt;
==AsDevices==&lt;br /&gt;
* You can access this device from your C/C++ application using &#039;&#039;as_adc_xxx_iio&#039;&#039; functions from [[AsDevices]]&lt;br /&gt;
* &#039;&#039;target/demos/oscillo&#039;&#039; is a &amp;quot;good&amp;quot; example to start with...&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* http://www.at91.com/linux4sam/bin/view/Linux4SAM/IioAdcDriver&lt;br /&gt;
&lt;br /&gt;
[[Category:Linux drivers]]&lt;br /&gt;
[[Category:Analog to Digital Converter]]&lt;br /&gt;
[[Category:Industrial Input Output]]&lt;/div&gt;</summary>
		<author><name>SebastienSz</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=MultiMediaCard&amp;diff=14322</id>
		<title>MultiMediaCard</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=MultiMediaCard&amp;diff=14322"/>
		<updated>2017-04-03T07:31:27Z</updated>

		<summary type="html">&lt;p&gt;SebastienSz: /* Prepare your card */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Instructions to use the MultiMediaCard (MMC/SD) on your Armadeus board&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
You can use standard MMC/SD/miniSD/microSD cards with your Armadeus board:&lt;br /&gt;
* with an APF9328 DevLight V1, you must have [[MMC/SD | the corresponding connector attached to your development board.]] and use an adaptor for miniSD and microSD,&lt;br /&gt;
* with an APF9328 DevLight V2, you can use the onboard microSD connector,&lt;br /&gt;
* with an [[APF9328DevFull]], you can use the MMC/SD onboard connector and an adaptor for miniSD and microSD,&lt;br /&gt;
* with an [[APF27Dev]], an [[APF28Dev]], an [[APF51Dev]] or an [[APF6Dev]], you can use the onboard microSD connector.&lt;br /&gt;
&lt;br /&gt;
All needed drivers are included in the standard Armadeus Linux image.&lt;br /&gt;
&lt;br /&gt;
==Card insertion==&lt;br /&gt;
You should see something like that on the Linux console:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # imx-mmc imx-mmc.0: card inserted&lt;br /&gt;
 mmc0: host does not support reading read-only switch. assuming write-enable.&lt;br /&gt;
 mmc0: new SD card at address 01b0&lt;br /&gt;
 mmcblk0: mmc0:01b0 SD512 500224KiB&lt;br /&gt;
  mmcblk0: p1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mounting the MMC/SD from Linux==&lt;br /&gt;
&lt;br /&gt;
* Just mount the MMC like you will do on your PC:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # mount /dev/mmcblk0p1 /media/mmc             (on all APF *except* APF6)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # mount /dev/mmcblk1p1 /media/mmc             (on APF6)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Then, you can access the MMC&#039;s files from the &#039;&#039;/media/mmc&#039;&#039; directory. Filesystem should be automagically detected.&lt;br /&gt;
* Of course if you have several partitions on your MMC/SD they will be named p1/p2/p3...&lt;br /&gt;
* If you have problems with vfat code page, [[MultiMediaCard#VFAT_Code_Page|include the missing code page into the kernel]].&lt;br /&gt;
&lt;br /&gt;
==Booting from MMC/SD==&lt;br /&gt;
When your rootfs is too big to be put on the APF Flash, you can always use a MMC/SD like a Hard Drive and boot from it (this is possible because standard Armadeus kernel is compiled with the MMC driver built in).&lt;br /&gt;
&lt;br /&gt;
===Prepare your card===&lt;br /&gt;
* On your APF board (to avoid to crash your Host HD), create a good partition table on MMC (X is the id of the device, for example 1 on [[APF6]]):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # /sbin/fdisk /dev/mmcblkX&lt;br /&gt;
&lt;br /&gt;
 Delete all existing partion with &#039;d&#039;&lt;br /&gt;
 Create a primary partion: &#039;n&#039; then &#039;p&#039; then &#039;1&#039; then 2x&#039;ENTER&#039;&lt;br /&gt;
 Change bootflag to Linux: &#039;t&#039; then &#039;83&#039;&lt;br /&gt;
 Save partition table: &#039;w&#039;&lt;br /&gt;
 (To quit without saving: &#039;m&#039;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* If your APF has the &#039;&#039;mkfs&#039;&#039; tools, then format your MMC:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # mkfs.ext4 -O ^64bit /dev/mmcblkXp1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Otherwise, on your PC, format your MMC with Ext2 or Ext3/4 filesystems (booting on FAT is bad :-) ):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ sudo mkfs.ext2 /dev/sdX1   (replace X with your MMC reader drive letter, if your Laptop has an integrated&lt;br /&gt;
                                           MMC reader then use mmcblk0p1 instead of sdX1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* If not automatically detected/mounted by your distribution, mount your MMC/SD on your Host filesystem (for example in &#039;&#039;/media/mmc&#039;&#039;):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ sudo mkdir -p /media/mmc&lt;br /&gt;
 $ sudo mount /dev/sdX1 /media/mmc    (replace X with your MMC reader drive letter, if your Laptop has an integrated&lt;br /&gt;
                                                   MMC reader then use mmcblk0p1 instead of sdX1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Put your rootfs and Linux kernel on the MMC/SD===&lt;br /&gt;
* Buildroot should be configured by default to generate a tar-ed rootfs, &#039;&#039;&#039;if not&#039;&#039;&#039; (no *.tar in &#039;&#039;buildroot/output/images/&#039;&#039;) then you can activate it with:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ make menuconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
Filesystem images  ---&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
    [*] tar the root filesystem&lt;br /&gt;
          Compression method (no compression)  ---&amp;gt;&lt;br /&gt;
    ()    other random options to pass to tar&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Then you have to uncompress the tar-ed rootfs to the MMC/SD card (mounted as &#039;&#039;/media/mmc&#039;&#039; on your PC in the following instructions). &lt;br /&gt;
{{Note | The APF51 (with U-Boot version older than 2013.04) and the APF9328 do not load the kernel from the SD card but use the one in Flash instead. }}&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ make shell_env&lt;br /&gt;
$ source armadeus_env.sh&lt;br /&gt;
$ sudo tar xvf $ARMADEUS_ROOTFS_TAR -C /media/mmc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* You can also copy the Linux kernel to the rootfs &#039;&#039;/boot&#039;&#039; folder and dtb files for recent kernel supporting it:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo mkdir -p /media/mmc/boot/dtbs&lt;br /&gt;
$ sudo cp $ARMADEUS_BINARIES/$ARMADEUS_BOARD_NAME-linux.bin /media/mmc/boot/&lt;br /&gt;
$ sudo cp $ARMADEUS_BINARIES/*.dtb /media/mmc/boot/dtbs/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Then umount your MMC/SD from your PC:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo umount /media/mmc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Boot===&lt;br /&gt;
* Insert the MMC/SD/microSD in the corresponding slot of your Armadeus board and then under U-Boot do:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; run mmcboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* if you want to automatically boot from SD at each startup, modify the &#039;&#039;bootcmd&#039;&#039; U-Boot macro:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; setenv bootcmd run mmcboot&lt;br /&gt;
 BIOS&amp;gt; saveenv&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
(default bootcmd when you receive your board is &#039;&#039;run jffsboot&#039;&#039; = boot from FLASH)&lt;br /&gt;
&lt;br /&gt;
==Performances==&lt;br /&gt;
* [[MMC/SD#Supported_Cards| Show tested cards performances]]&lt;br /&gt;
&lt;br /&gt;
==Troubleshots==&lt;br /&gt;
===VFAT Code Page===&lt;br /&gt;
If you encounter this message (or something similar):&lt;br /&gt;
 Unable to load NLS charset cp437&lt;br /&gt;
 FAT: codepage cp437 not found&lt;br /&gt;
you have to add the charset to the supported kernel ones:&lt;br /&gt;
 $ make linux-menuconfig&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
File systems  ---&amp;gt; &lt;br /&gt;
    -*- Native language support  ---&amp;gt;&lt;br /&gt;
        &amp;lt;*&amp;gt;   Codepage 437 (United States, Canada)&lt;br /&gt;
        ...&lt;br /&gt;
        &amp;lt;*&amp;gt;   NLS ISO 8859-1  (Latin 1; Western European Languages)&lt;br /&gt;
        ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==U-Boot usage==&lt;br /&gt;
SD cards can also be used with U-Boot.&lt;br /&gt;
The following commands are useful:&lt;br /&gt;
* Scan the MMC:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
BIOS&amp;gt; mmc rescan&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* List the MMC content:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
BIOS&amp;gt; fatls mmc 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Load the file xxx.bin in RAM:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
BIOS&amp;gt; fatload mmc 0 ${loadaddr} xxx.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
&lt;br /&gt;
* http://en.wikipedia.org/wiki/MultiMedia_Card&lt;br /&gt;
&lt;br /&gt;
[[Category:MassStorage]]&lt;/div&gt;</summary>
		<author><name>SebastienSz</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=EMMC_OPOS6UL&amp;diff=14321</id>
		<title>EMMC OPOS6UL</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=EMMC_OPOS6UL&amp;diff=14321"/>
		<updated>2017-04-03T07:29:46Z</updated>

		<summary type="html">&lt;p&gt;SebastienSz: /* Tips */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= OPOS6UL eMMC layout =&lt;br /&gt;
&lt;br /&gt;
By default, the 4GB eMMC on [[OPOS6UL]] module has 4 physical/hardware partitions:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;OPOS6UL eMMC partitions&amp;quot;&lt;br /&gt;
|----------------&lt;br /&gt;
| style=&amp;quot;width:80px;background:orange;&amp;quot; align=&amp;quot;center&amp;quot; | Boot0&lt;br /&gt;
| style=&amp;quot;width:80px;background:orange;&amp;quot; align=&amp;quot;center&amp;quot; | Boot1&lt;br /&gt;
| style=&amp;quot;background:red;&amp;quot; | RPMB&lt;br /&gt;
| style=&amp;quot;width:500px;background:green;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | User Data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;OPOS6UL eMMC partitions details&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
!Name || U-Boot name || Size || Comment&lt;br /&gt;
|----------------&lt;br /&gt;
|boot0 || mmc dev 0 1 || 4MBytes || U-Boot is installed on this partition&lt;br /&gt;
|----------------&lt;br /&gt;
|boot1 || mmc dev 0 2 || 4MBytes || Not used&lt;br /&gt;
|----------------&lt;br /&gt;
|rpmb || mmc dev 0 3 || 512KBytes || Not used&lt;br /&gt;
|----------------&lt;br /&gt;
|User Data || mmc dev 0 0 || remaining space (~3,7GBytes) || Kernel, device tree and rootfs&lt;br /&gt;
|----------------&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Boot0 partition layout ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;OPOS6UL eMMC partitions&amp;quot;&lt;br /&gt;
|----------------&lt;br /&gt;
| style=&amp;quot;width:10px;background:white;color:black;&amp;quot; align=&amp;quot;center&amp;quot; | .&lt;br /&gt;
| style=&amp;quot;width:40px;background:orange;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | SPL&lt;br /&gt;
| style=&amp;quot;width:150px;background:orange;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | IMG&lt;br /&gt;
| style=&amp;quot;width:100px;background:white;color:black;&amp;quot; align=&amp;quot;center&amp;quot; | ...&lt;br /&gt;
| style=&amp;quot;width:30px;background:orange;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | ENV1&lt;br /&gt;
| style=&amp;quot;width:150px;background:white;color:black;&amp;quot; align=&amp;quot;center&amp;quot; | ...&lt;br /&gt;
| style=&amp;quot;width:30px;background:orange;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | ENV2&lt;br /&gt;
| style=&amp;quot;width:150px;background:white;color:black;&amp;quot; align=&amp;quot;center&amp;quot; | ...&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Linux device: &#039;&#039;/dev/mmcblk2boot0&#039;&#039;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;Boot0 partition detail&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Offset (blocks) || Offset (bytes) || Size (bytes) || Comment&lt;br /&gt;
|----------------&lt;br /&gt;
|0 || 0 || 1 KB (0x400) || Free&lt;br /&gt;
|----------------&lt;br /&gt;
|0x02 || 1 KB (0x400) || 68 KB || U-Boot SPL (apf6-u-boot.spl)&lt;br /&gt;
|----------------&lt;br /&gt;
|0x8a || 69 KB (0x11400) || 512 KB || U-Boot IMG (apf6-u-boot.img)&lt;br /&gt;
|----------------&lt;br /&gt;
||| || || Free&lt;br /&gt;
|----------------&lt;br /&gt;
|0x800 (2048) || 1024 KB (0x100000) || 10 KB (0x2800) || U-Boot environment&lt;br /&gt;
|----------------&lt;br /&gt;
||| || || Free&lt;br /&gt;
|----------------&lt;br /&gt;
|0xc00 (3072) || 1536 KB (0x180000) || 10 KB (0x2800) || Redundant U-Boot environment&lt;br /&gt;
|----------------&lt;br /&gt;
||| || || Free&lt;br /&gt;
|----------------&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Boot1 partition layout ==&lt;br /&gt;
* Not used !&lt;br /&gt;
&lt;br /&gt;
== RPMB partition layout ==&lt;br /&gt;
* Not used !&lt;br /&gt;
&lt;br /&gt;
== User Data partition layout ==&lt;br /&gt;
&lt;br /&gt;
There are 3 partitions on the &amp;quot;User Data&amp;quot; physical partition:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;OPOS6UL eMMC partitions&amp;quot;&lt;br /&gt;
|----------------&lt;br /&gt;
| style=&amp;quot;width:50px;background:white;color:black;&amp;quot; align=&amp;quot;center&amp;quot; | ...&lt;br /&gt;
| style=&amp;quot;width:100px;background:green;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | Failsafe/Update (primary)&lt;br /&gt;
| style=&amp;quot;width:600px;background:green;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | Default Rootfs (primary)&lt;br /&gt;
| style=&amp;quot;width:600px;background:green;color:white;&amp;quot; align=&amp;quot;center&amp;quot; | Home/Data (primary)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;OPOS6UL eMMC User data partitions details&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
!Name || U-Boot device  || Linux device || Offset (bytes) || Offset (sectors/blocs) || Size || Comment&lt;br /&gt;
|----------------&lt;br /&gt;
|MBR || NA || NA || 0 || 0 || 512 bytes (1 block) || Master Boot Record + some spare space ( -&amp;gt; Don&#039;t touch it :-) )&lt;br /&gt;
|----------------&lt;br /&gt;
|Failsafe || mmc 0:1 || /dev/mmcblk0p1 || 1M || 2048 (0x800) || 128MBytes (262144 sectors) || system/rootfs to restore your board in case of problem or setup a safe update mechanism (ext4 formatted)&lt;br /&gt;
|----------------&lt;br /&gt;
|Rootfs || mmc 0:2 || /dev/mmcblk0p2 ||  || 264192 (0x40800) || 2GBytes (4194304 sectors) || the default booted rootfs is on this partition (ext4 formatted)&lt;br /&gt;
|----------------&lt;br /&gt;
|Home/Data || mmc 0:3 || /dev/mmcblk0p3 ||  || 4458496 (0x440800) || Rest of space: ~1,5GBytes (3176448 sectors) || HOME can be stored on this partition (ext4 formatted)&lt;br /&gt;
|----------------&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* By default, when flashed from U-Boot, rootfs and boot are only occupying the size of the .ext4 images used during flashing. If you want to increase the rootfs/boot size to all available free space then, after Linux has booted, use the following commands:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# resize2fs /dev/mmcblk0p2        # for Rootfs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Or with &#039;&#039;apf-config&#039;&#039; command:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# apf-config&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* In menu:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
|     1 Expand Filesystem(s)         OS can then use all eMMC/SD space         |&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rootfs/Boot will then be extended to all the &amp;quot;Rootfs&amp;quot;/&amp;quot;Boot&amp;quot; eMMC partitions space.&lt;br /&gt;
&lt;br /&gt;
==Tips==&lt;br /&gt;
* Commands to partition &#039;&#039;User Data&#039;&#039; from fdisk on Host PC with [[U-Boot UMS on APF &amp;amp; OPOS|U-Boot UMS]]. &#039;&#039;&#039;Check /dev/sdc is your OPOS6UL device otherwise you may destroy your PC partition table !!!&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;pre class=host&amp;gt;&lt;br /&gt;
$ sudo fdisk /dev/sdc&lt;br /&gt;
n&lt;br /&gt;
p&lt;br /&gt;
1&lt;br /&gt;
2048&lt;br /&gt;
+128M&lt;br /&gt;
n&lt;br /&gt;
p&lt;br /&gt;
2&lt;br /&gt;
264192&lt;br /&gt;
+2G&lt;br /&gt;
n&lt;br /&gt;
p&lt;br /&gt;
3&lt;br /&gt;
4458496&lt;br /&gt;
7634943&lt;br /&gt;
w&lt;br /&gt;
&lt;br /&gt;
$ sudo mkfs.ext4 -O ^64bit /dev/sdc1&lt;br /&gt;
$ sudo mkfs.ext4 -O ^64bit /dev/sdc2&lt;br /&gt;
$ sudo mkfs.ext4 -O ^64bit /dev/sdc3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* [http://fr.slideshare.net/linaroorg/intro-to-emmc http://fr.slideshare.net/linaroorg/intro-to-emmc]&lt;br /&gt;
* https://fr.wikipedia.org/wiki/Master_boot_record ou http://poloastucien.free.fr/mbr_fat_secteurs_boot_h.html&lt;/div&gt;</summary>
		<author><name>SebastienSz</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=U-Boot_UMS_on_APF_%26_OPOS&amp;diff=14320</id>
		<title>U-Boot UMS on APF &amp; OPOS</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=U-Boot_UMS_on_APF_%26_OPOS&amp;diff=14320"/>
		<updated>2017-04-03T07:28:36Z</updated>

		<summary type="html">&lt;p&gt;SebastienSz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Infos for U-Boot&#039;s USB Mass Storage gadget mode (or UMS) usage on [[APF6]] and [[OPOS6UL]]. This mode allows you to flash rootfs bigger than the available module RAM, ex: &amp;gt; 200MBytes on the [[OPOS6UL]]. Indeed &#039;&#039;run update_rootfs&#039;&#039; script uses RAM to store images while uploading from TFTP, which can be short for big rootfs.&lt;br /&gt;
&lt;br /&gt;
* First, keep your USB debug cable and connect a second USB cable on [[APF6_Dev]] or [[OPOS6ULDev]]&#039;s OTG port. &lt;br /&gt;
* Under U-Boot type:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
BIOS&amp;gt; ums 0 mmc 0&lt;br /&gt;
UMS: disk start sector: 0x0, count: 0x760000&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* On your Host computer you should see the [[eMMC]] partition like a standard USB key.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ dmesg | tail&lt;br /&gt;
[...]&lt;br /&gt;
[26828.348088] sd 13:0:0:0: [sdc] Mode Sense: 0f 00 00 00&lt;br /&gt;
[26828.348395] sd 13:0:0:0: [sdc] Write cache: enabled, read cache: enabled, doesn&#039;t support DPO or FUA&lt;br /&gt;
[26828.354177]  sdc: sdc1 sdc2&lt;br /&gt;
[26828.356782] sd 13:0:0:0: [sdc] Attached SCSI disk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here the device is &#039;&#039;/dev/sdc&#039;&#039; and all partitions have been automounted by the Host:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
[26830.002168] EXT4-fs (sdc1): mounting ext2 file system using the ext4 subsystem&lt;br /&gt;
[26830.054358] EXT4-fs (sdc2): mounting ext2 file system using the ext4 subsystem&lt;br /&gt;
[26830.078638] EXT4-fs (sdc2): warning: mounting unchecked fs, running e2fsck is recommended&lt;br /&gt;
[26830.114382] EXT4-fs (sdc2): mounted filesystem without journal. Opts: (null)&lt;br /&gt;
[26830.135564] EXT4-fs (sdc1): warning: mounting unchecked fs, running e2fsck is recommended&lt;br /&gt;
[26830.268450] EXT4-fs (sdc1): mounted filesystem without journal. Opts: (null)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{Warning| Before doing the following procedure, be sure that your device name is correct. &#039;&#039;&#039;You can erase all your Host datas if you do it wrong !!!&#039;&#039;&#039;}}&lt;br /&gt;
* The rootfs is under the sdc2 and is named &amp;quot;rootfs&amp;quot;. In debian/ubuntu it might be auto-mounted under &#039;&#039;/media/usb1&#039;&#039;, if no other USB key is present on system and if you activated auto-mounting.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ ls /media/usb1/&lt;br /&gt;
bin  boot  dev  etc  home  init  lib  lib32  linuxrc  lost+found  media  mnt  opt  proc  root  run  sbin  sys  tmp  usr  var&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To flash entire rootfs, first erase all files on this partition:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo umount /media/usb1            (if partition is auto-mounted)&lt;br /&gt;
$ sudo mkfs.ext4 -L ROOTFS -O ^64bit /dev/sdc2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Then, you have 2 methods to update your rootfs:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! tar method !! dd method&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* Then mount it under an arbitrary directory:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo mkdir /tmp/rootfs&lt;br /&gt;
$ sudo mount /dev/sdc2 /tmp/rootfs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Untar the archive generated by your bsp (in &#039;&#039;buildroot/output/images/&#039;&#039;)&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ make shell_env&lt;br /&gt;
$ . armadeus_env.sh&lt;br /&gt;
$ sudo tar -xvf $ARMADEUS_ROOTFS_TAR -C /tmp/rootfs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* then umount the filesystem:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo umount /tmp/rootfs/&lt;br /&gt;
$ sync&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
* One alternative way to untaring is to use &#039;&#039;dd&#039;&#039;:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo dd if=/tftpboot/xxx-rootfs.ext4 of=/dev/sdc2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
(replace xxx with the name of your module)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Once finished, you can kill the U-Boot&#039;s USB gadget process with a Ctrl-C:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
BIOS&amp;gt; ums 0 mmc 0&lt;br /&gt;
UMS: disk start sector: 0x0, count: 0x760000&lt;br /&gt;
CTRL+C - Operation aborted&lt;br /&gt;
BIOS&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:U-Boot]]&lt;/div&gt;</summary>
		<author><name>SebastienSz</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=Bluetooth&amp;diff=14243</id>
		<title>Bluetooth</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=Bluetooth&amp;diff=14243"/>
		<updated>2017-02-13T16:44:50Z</updated>

		<summary type="html">&lt;p&gt;SebastienSz: /* Custom Bring up (each hardware may have a different init sequence) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page will give you all the informations needed to have a running Bluetooth configuration on your Armadeus board.&lt;br /&gt;
&lt;br /&gt;
==Hardware==&lt;br /&gt;
First you have to get a compatible hardware. Currently there are 5 solutions:&lt;br /&gt;
* You have an [[OPOS6UL]] board with the wifi/bluetooth chip integrated.&lt;br /&gt;
* You have an [[APF6]] board with the wifi/bluetooth chip integrated. The chip is on the [[APF6]] Dual and Quad boards by default.&lt;br /&gt;
* You have an [[APF51Dev]] board, then you&#039;re a lucky man because Bluetooth is integrated on the board ;-)&lt;br /&gt;
* If you have an [[APF27Dev]], then you can get a [[Wireless extension board]] with WiFi/Bluetooth option from ARMadeus Systems&lt;br /&gt;
* Otherwise: get a cheap USB&amp;lt;-&amp;gt;Bluetooth adapter (requires an USB Host port) or a RS232&amp;lt;-&amp;gt;Bluetooth adapter&lt;br /&gt;
&lt;br /&gt;
===Tested USB adapters===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;Supported USB&amp;lt;-&amp;gt;Bluetooth dongle&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot;&lt;br /&gt;
!&#039;&#039;&#039;Model&#039;&#039;&#039; || colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;Status&amp;lt;br&amp;gt; APF9328 / APF27&#039;&#039;&#039; ||&#039;&#039;&#039;Chipset&#039;&#039;&#039; || &#039;&#039;&#039;Comments&#039;&#039;&#039;&lt;br /&gt;
|----------------&lt;br /&gt;
|&#039;&#039;&#039;BELKIN - Mini Bluetooth Adapter&#039;&#039;&#039; [[Image:Belkin_Mini_Bluetooth.jpg]] || style=&amp;quot;background:#ffff00;&amp;quot; | TBT || style=&amp;quot;background:#ff0000;&amp;quot; | KO || Product: BLUETOOTH USB +EDR ADAPTER v2.1 UHE &amp;lt;br&amp;gt; Manufacturer: Broadcom Corp&lt;br /&gt;
  || # hciconfig hci1 up piscan&lt;br /&gt;
btusb_submit_intr_urb: hci1 urb c3bdac40 submission failed (28)&amp;lt;br&amp;gt;&lt;br /&gt;
Can&#039;t init device hci1: Input/output error (5)&lt;br /&gt;
&lt;br /&gt;
|----------------&lt;br /&gt;
|&#039;&#039;&#039;TRUST - Bluetooth 2.1 USB Adapter&#039;&#039;&#039; [[Image:Trust_Small_Bluetooth.jpg]] || style=&amp;quot;background:#ffff00;&amp;quot; | TBT || style=&amp;quot;background:#ff0000;&amp;quot; | KO || Product: BCM2046B1 &amp;lt;br&amp;gt; Manufacturer: Broadcom ||  # hciconfig hci1 up piscan&lt;br /&gt;
btusb_submit_intr_urb: hci1 urb c3bdac40 submission failed (28)&amp;lt;br&amp;gt;&lt;br /&gt;
Can&#039;t init device hci1: Input/output error (5)&lt;br /&gt;
|----------------&lt;br /&gt;
|&#039;&#039;&#039;[http://www.rueducommerce.fr/Peripheriques-Reseaux-wifi/Adaptateur-USB-Bluetooth/Adaptateur-USB-Bluetooth/RUEDUCOMMERCE/2848164-Mini-adaptateur-USB-Bluetooth-portee-100m-19x15x5-39-mm.htm RUEDUCOMMERCE - Mini adaptateur USB Bluetooth&#039;&#039;&#039;] [[Image:RDC_USB_Bluetooth.jpg]]|| style=&amp;quot;background:#ffff00;&amp;quot; | TBT || style=&amp;quot;background:#00ff00;&amp;quot; | OK || Manufacturer: Cambridge Silicon Radio || &lt;br /&gt;
|----------------&lt;br /&gt;
|&#039;&#039;&#039;GIGABYTE - GN-BTD01&#039;&#039;&#039; [[Image:Gigabyte_gn-btd01.jpg]]|| style=&amp;quot;background:#ffff00;&amp;quot; | TBT || style=&amp;quot;background:#00ff00;&amp;quot; | OK || Manufacturer: Cambridge Silicon Radio || Bluetooth 1.1 ?&lt;br /&gt;
|----------------&lt;br /&gt;
|&#039;&#039;&#039;BELKIN - F8T003 v2&#039;&#039;&#039; || style=&amp;quot;background:#ffff00;&amp;quot; | TBT || style=&amp;quot;background:#00ff00;&amp;quot; | OK || Manufacturer: Cambridge Silicon Radio || &lt;br /&gt;
|----------------&lt;br /&gt;
|&#039;&#039;&#039;D-LINK - DBT-122&#039;&#039;&#039; || style=&amp;quot;background:#ffff00;&amp;quot; | TBT || style=&amp;quot;background:#00ff00;&amp;quot; | OK || Product: BCM2035 &amp;lt;br&amp;gt; Manufacturer: Broadcom || &lt;br /&gt;
|----------------&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Bluetooth Linux stack is divided into several parts:&lt;br /&gt;
* kernel drivers&lt;br /&gt;
* userland libraries/daemon (bluez)&lt;br /&gt;
&lt;br /&gt;
===Driver installation===&lt;br /&gt;
* (Done by default on [[APF27]], [[APF51]], [[APF6]] and [[OPOS6ul]])&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ make linux-menuconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
[*] Networking support  ---&amp;gt;&lt;br /&gt;
    &amp;lt;M&amp;gt;   Bluetooth subsystem support  ---&amp;gt;&lt;br /&gt;
        --- Bluetooth subsystem support&lt;br /&gt;
            &amp;lt;M&amp;gt;   L2CAP protocol support &lt;br /&gt;
            &amp;lt;M&amp;gt;   SCO links support&lt;br /&gt;
            &amp;lt;M&amp;gt;   RFCOMM protocol support&lt;br /&gt;
                [*]     RFCOMM TTY support&lt;br /&gt;
            &amp;lt;M&amp;gt;   BNEP protocol support&lt;br /&gt;
                [ ]     Multicast filter support (NEW)&lt;br /&gt;
                [ ]     Protocol filter support (NEW)&lt;br /&gt;
            &amp;lt;M&amp;gt;   HIDP protocol support&lt;br /&gt;
            Bluetooth device drivers  ---&amp;gt;&lt;br /&gt;
                &amp;lt;M&amp;gt; HCI USB driver &lt;br /&gt;
                &amp;lt; &amp;gt; HCI SDIO driver (NEW)&lt;br /&gt;
                &amp;lt;M&amp;gt; HCI UART driver&lt;br /&gt;
                    [*]   UART (H4) protocol support &lt;br /&gt;
                    [*]   BCSP protocol support &lt;br /&gt;
                    [ ]   HCILL protocol support (NEW)&lt;br /&gt;
                &amp;lt; &amp;gt; HCI BCM203x USB driver (NEW)&lt;br /&gt;
                &amp;lt; &amp;gt; HCI BPA10x USB driver (NEW)&lt;br /&gt;
                &amp;lt; &amp;gt; HCI BlueFRITZ! USB driver (NEW)&lt;br /&gt;
                &amp;lt; &amp;gt; HCI VHCI (Virtual HCI device) driver (NEW)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Bluez installation===&lt;br /&gt;
(Done by default on [[APF51]], [[APF6]] and [[OPOS6UL]])&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ make menuconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
Package Selection for the target  ---&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    [*] XML handling  ---&amp;gt;&lt;br /&gt;
        [*]   libxml2&lt;br /&gt;
    ...&lt;br /&gt;
    [*] Hardware handling  ---&amp;gt;&lt;br /&gt;
        [*]   dbus&lt;br /&gt;
              XML library to use (libxml2)&lt;br /&gt;
    ...&lt;br /&gt;
    Networking applications  ---&amp;gt;&lt;br /&gt;
    [*] bluez&lt;br /&gt;
    [*] bluez-utils&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Custom Bring up (each hardware may have a different init sequence)==&lt;br /&gt;
&lt;br /&gt;
===OPOS6UL===&lt;br /&gt;
* OPOS6UL has a CM-43438 chip (based on BCM43438) connected to the i.MX6UL UART8 (ttymxc7)&lt;br /&gt;
&lt;br /&gt;
* Start the bluetooth deamon and attach your chipset to the kernel bluez UART driver:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# /usr/libexec/bluetooth/bluetoothd &amp;amp;&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Wake up the chip&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# export BTRESET=42&lt;br /&gt;
# echo $BTRESET &amp;gt; /sys/class/gpio/export&lt;br /&gt;
# echo out &amp;gt; /sys/class/gpio/gpio$BTRESET/direction&lt;br /&gt;
# echo 0 &amp;gt; /sys/class/gpio/gpio$BTRESET/value&lt;br /&gt;
# sleep 1&lt;br /&gt;
# echo 1 &amp;gt; /sys/class/gpio/gpio$BTRESET/value&lt;br /&gt;
# sleep 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Attach the chip. Before running the following command, be sure that the file /etc/firmware/BCM43430A1.hcd exists !&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# hciattach -t 30 /dev/ttymxc7 bcm43xx 921600 flow&lt;br /&gt;
bcm43xx_init&lt;br /&gt;
Set Controller UART speed to 921600 bit/s&lt;br /&gt;
Flash firmware /etc/firmware/BCM43430A1.hcd&lt;br /&gt;
Set Controller UART speed to 921600 bit/s&lt;br /&gt;
Device setup complete&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===APF6===&lt;br /&gt;
* APF6 has a jorjin chip connected to the i.MX6 UART2 (ttymxc1)&lt;br /&gt;
&lt;br /&gt;
* Start the bluetooth deamon and attach your chipset to the kernel bluez UART driver:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# /usr/sbin/bluetoothd&lt;br /&gt;
NET: Registered protocol family 31&lt;br /&gt;
Bluetooth: HCI device and connection manager initialized&lt;br /&gt;
Bluetooth: HCI socket layer initialized&lt;br /&gt;
Bluetooth: L2CAP socket layer initialized&lt;br /&gt;
Bluetooth: SCO socket layer initialized&lt;br /&gt;
Bluetooth: BNEP (Ethernet Emulation) ver 1.3&lt;br /&gt;
Bluetooth: BNEP socket layer initialized&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or if you are using BlueZ 5&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# /usr/libexec/bluetooth/bluetoothd &amp;amp;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Wake up the chip&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# export BTRESET=43&lt;br /&gt;
# echo $BTRESET &amp;gt; /sys/class/gpio/export&lt;br /&gt;
# echo out &amp;gt; /sys/class/gpio/gpio$BTRESET/direction&lt;br /&gt;
# echo 0 &amp;gt; /sys/class/gpio/gpio$BTRESET/value&lt;br /&gt;
# sleep 1&lt;br /&gt;
# echo 1 &amp;gt; /sys/class/gpio/gpio$BTRESET/value&lt;br /&gt;
# sleep 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Attach the chip. Before running the following command, be sure that the file /lib/firmware/TIInit_7.6.15.bts exists ! You can download it [https://github.com/TI-ECS/bt-firmware/blob/master/TIInit_7.6.15.bts here] (click on the &#039;Raw&#039; button)&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# /usr/sbin/hciattach -s 115200 ttymxc1 texas 115200&lt;br /&gt;
Found a Texas Instruments&#039; chip!&lt;br /&gt;
Firmware file : /lib/firmware/TIInit_7.6.15.bts&lt;br /&gt;
Loaded BTS script version 1&lt;br /&gt;
Device setup complete&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Bluetooth#Common Bring up|Go to &amp;quot;Common Bring up&amp;quot; section]]&lt;br /&gt;
&lt;br /&gt;
===APF51Dev===&lt;br /&gt;
* [[APF51Dev]] has a CSR BlueCore 4 chipset connected to the i.MX51 UART3 (ttymxc1)&lt;br /&gt;
&lt;br /&gt;
* On recent kernel using device tree, you have to &amp;quot;wake up&amp;quot; the chip:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# export BTRESET=60&lt;br /&gt;
# echo $BTRESET &amp;gt; /sys/class/gpio/export&lt;br /&gt;
# echo out &amp;gt; /sys/class/gpio/gpio$BTRESET/direction&lt;br /&gt;
# echo 0 &amp;gt; /sys/class/gpio/gpio$BTRESET/value&lt;br /&gt;
# sleep 1&lt;br /&gt;
# echo 1 &amp;gt; /sys/class/gpio/gpio$BTRESET/value&lt;br /&gt;
# sleep 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Start the bluetooth deamon and attach your chipset to the kernel bluez UART driver:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# /usr/sbin/bluetoothd&lt;br /&gt;
# /usr/sbin/hciattach -s 115200 ttymxc1 csr 115200&lt;br /&gt;
&lt;br /&gt;
CSR build ID 0x00-0x37&lt;br /&gt;
Bluetooth: Core ver 2.15&lt;br /&gt;
NET: Registered protocol family 31&lt;br /&gt;
Bluetooth: HCI device and connection manager initialized&lt;br /&gt;
Bluetooth: HCI socket layer initialized&lt;br /&gt;
Bluetooth: HCI UART driver ver 2.2&lt;br /&gt;
Bluetooth: HCI H4 protocol initialized&lt;br /&gt;
Bluetooth: HCI BCSP protocol initialized&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Bluetooth#Common Bring up|Go to &amp;quot;Common Bring up&amp;quot; section]]&lt;br /&gt;
&lt;br /&gt;
===APF27Dev + APW===&lt;br /&gt;
* [[Wireless extension board|APW]] has a CSR BlueCore 4 chipset connected to the i.MX27 serial port ttySMX5 (UART6)&lt;br /&gt;
* Reset it:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# source /usr/bin/gpio_helpers.sh&lt;br /&gt;
# gpio_mode PB14 1&lt;br /&gt;
# gpio_set_value PB14 0; sleep 1; gpio_set_value PB14 1; sleep 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Attach it to the kernel bluez UART driver:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# /usr/sbin/hciattach -s 921600 ttySMX5 csr 921600&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* [[Bluetooth#Common Bring up|Go to &amp;quot;Common Bring up&amp;quot; section]]&lt;br /&gt;
&lt;br /&gt;
===USB module===&lt;br /&gt;
* Make sure your hardware is connected to the APF. &#039;&#039;&#039;If using an USB dongle&#039;&#039;&#039;, load corresponding driver:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# modprobe btusb&lt;br /&gt;
Bluetooth: Core ver 2.14&lt;br /&gt;
NET: Registered protocol family 31&lt;br /&gt;
Bluetooth: HCI device and connection manager initialized&lt;br /&gt;
Bluetooth: HCI socket layer initialized&lt;br /&gt;
Bluetooth: Generic Bluetooth USB driver ver 0.4&lt;br /&gt;
usbcore: registered new interface driver btusb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Common Bring up==&lt;br /&gt;
* Check if Bluetooth interface was detected:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# hciconfig&lt;br /&gt;
hci0:   Type: USB or UART&lt;br /&gt;
        BD Address: 00:00:00:00:00:00 ACL MTU: 0:0 SCO MTU: 0:0&lt;br /&gt;
        DOWN&lt;br /&gt;
        RX bytes:0 acl:0 sco:0 events:0 errors:0&lt;br /&gt;
        TX bytes:0 acl:0 sco:0 commands:0 errors:0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* If interface is DOWN, bring it up:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# hciconfig hci0 up piscan&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Check your Bluetooth device is correctly initialized:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# hcitool dev&lt;br /&gt;
Devices:&lt;br /&gt;
        hci0    00:10:60:D1:92:0F&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
===Scanning network===&lt;br /&gt;
* To get surrounding devices addresses and names:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# hcitool scan&lt;br /&gt;
Scanning ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* To get surrounding devices addresses and classes:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# hcitool inq&lt;br /&gt;
Inquiring ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Get info on a given device===&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# hcitool info 00:19:0E:xx:xx:xx&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Pinging other devices===&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# l2ping 00:19:0E:xx:xx:xx&lt;br /&gt;
Ping: 00:19:0E:xx:xx:xx from 00:19:88:xx:xx:xx (data size 44) ...&lt;br /&gt;
44 bytes from 00:19:0E:xx:xx:xx id 0 time 38.05ms&lt;br /&gt;
44 bytes from 00:19:0E:xx:xx:xx id 1 time 37.09ms&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here 00:19:0E:xx:xx:xx is the Bluetooth MAC address of the Host.&lt;br /&gt;
&lt;br /&gt;
==Advanced usages==&lt;br /&gt;
===Setup a Terminal between a PC and your APF through Bluetooth===&lt;br /&gt;
On the APF :&lt;br /&gt;
* the first step is to create the corresponding node for the future connection:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# mknod /dev/rfcomm0 c 216 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* then, listen to an incoming connection, on the rfcomm0 (here channel 7 is choosen):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# rfcomm -i hci0 listen /dev/rfcomm0 7 &amp;amp;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* and the last step, when the connection is open, is to connect a terminal (through getty) to the device &#039;&#039;/dev/rfcomm0&#039;&#039;:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# getty 38400 /dev/rfcomm0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On the PC :&lt;br /&gt;
*after the two first steps on the APF, you need to connect the PC to the APF with the same channel (7):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ rfcomm connect 0 00:19:88:2B:xx:xx 7             (replace 00:19:88:2B:xx:xx with the Bluetooth @ of your APF)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* and configure minicom (&#039;&#039;$HOME/.minirc.dfl&#039;&#039;):&lt;br /&gt;
 pu port             /dev/rfcomm0&lt;br /&gt;
 pu baudrate         38400&lt;br /&gt;
 pu bits             8&lt;br /&gt;
 pu parity           N&lt;br /&gt;
 pu stopbits         1&lt;br /&gt;
* when getty is running on the APF, you could you connect with minicom:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ minicom -o&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* it could be a good idea to create an additional user account for remotely login through Bluetooth, by following [[Adding_users|these instructions]].&lt;br /&gt;
===Using a Bluetooth keyboard on your APF===&lt;br /&gt;
The only thing needed after having a bluetooth correctly configured is to use this command :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ hidd --connect keyboard_bdaddr&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Controlling your board from an android device (using rfcomm)===&lt;br /&gt;
The following section shows how to send commands to the board from an android device via Bluetooth. The goal is to control the two LEDs present on the board. An APF51dev and a Samsung Galaxy Tab 2 are used in this example.&lt;br /&gt;
&lt;br /&gt;
On the APF:&lt;br /&gt;
&lt;br /&gt;
* Enable the SPP profile. Here, it is using the channel 1.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# sdptool add --channel=1 SP&lt;br /&gt;
Serial Port service registered&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Listen incomming connections on the channel 1. The script &#039;&#039;serial-server.sh&#039;&#039; is located in &#039;&#039;demos/android/android_remote_controller&#039;&#039;.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# rfcomm listen hci0 1 ./serial-server.sh {}&lt;br /&gt;
Waiting for connection on channel 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On the android device:&lt;br /&gt;
&lt;br /&gt;
* Deploy the app on your device. The app is avalaible [ftp://ftp2.armadeus.com/armadeusw/apf-remote-controller.tar.gz here as source] or [ftp://ftp2.armadeus.com/armadeusw/apf-remote-controller.apk here as apk].&lt;br /&gt;
* Start the app.&lt;br /&gt;
* Enjoy :-)&lt;br /&gt;
&lt;br /&gt;
===Others===&lt;br /&gt;
* [[TCP/IP with Bluetooth]]&lt;br /&gt;
* [[OBEX]] transfers&lt;br /&gt;
* [[Wiimote]]&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* http://www.bluez.org/&lt;br /&gt;
* http://www.hanscees.com/bluezhowto.html&lt;br /&gt;
* [http://doc.ubuntu-fr.org/bluetooth_materiel-soutenu Dongle USB&amp;lt;-&amp;gt;Bluetooth supportés sous Ubuntu]&lt;br /&gt;
* [http://www.unixgarden.com/index.php/comprendre/bluetooth-installation-et-utilisation GLMF n°88 - Bluetooth, installation et utilisation]&lt;br /&gt;
* [http://www.unixgarden.com/index.php/embarque/communication-de-donnees-et-d’images-issues-de-la-carte-fox-par-bluetooth GLMF n°95 - Communication de données et d&#039;images issues de la carte Fox par Bluetooth]&lt;br /&gt;
&lt;br /&gt;
[[Category:Wireless]]&lt;br /&gt;
[[Category:Bluetooth]]&lt;/div&gt;</summary>
		<author><name>SebastienSz</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=Bluetooth&amp;diff=14242</id>
		<title>Bluetooth</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=Bluetooth&amp;diff=14242"/>
		<updated>2017-02-13T16:44:33Z</updated>

		<summary type="html">&lt;p&gt;SebastienSz: /* Custom Bring up (each hardware may have a different init sequence) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page will give you all the informations needed to have a running Bluetooth configuration on your Armadeus board.&lt;br /&gt;
&lt;br /&gt;
==Hardware==&lt;br /&gt;
First you have to get a compatible hardware. Currently there are 5 solutions:&lt;br /&gt;
* You have an [[OPOS6UL]] board with the wifi/bluetooth chip integrated.&lt;br /&gt;
* You have an [[APF6]] board with the wifi/bluetooth chip integrated. The chip is on the [[APF6]] Dual and Quad boards by default.&lt;br /&gt;
* You have an [[APF51Dev]] board, then you&#039;re a lucky man because Bluetooth is integrated on the board ;-)&lt;br /&gt;
* If you have an [[APF27Dev]], then you can get a [[Wireless extension board]] with WiFi/Bluetooth option from ARMadeus Systems&lt;br /&gt;
* Otherwise: get a cheap USB&amp;lt;-&amp;gt;Bluetooth adapter (requires an USB Host port) or a RS232&amp;lt;-&amp;gt;Bluetooth adapter&lt;br /&gt;
&lt;br /&gt;
===Tested USB adapters===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;Supported USB&amp;lt;-&amp;gt;Bluetooth dongle&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot;&lt;br /&gt;
!&#039;&#039;&#039;Model&#039;&#039;&#039; || colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;Status&amp;lt;br&amp;gt; APF9328 / APF27&#039;&#039;&#039; ||&#039;&#039;&#039;Chipset&#039;&#039;&#039; || &#039;&#039;&#039;Comments&#039;&#039;&#039;&lt;br /&gt;
|----------------&lt;br /&gt;
|&#039;&#039;&#039;BELKIN - Mini Bluetooth Adapter&#039;&#039;&#039; [[Image:Belkin_Mini_Bluetooth.jpg]] || style=&amp;quot;background:#ffff00;&amp;quot; | TBT || style=&amp;quot;background:#ff0000;&amp;quot; | KO || Product: BLUETOOTH USB +EDR ADAPTER v2.1 UHE &amp;lt;br&amp;gt; Manufacturer: Broadcom Corp&lt;br /&gt;
  || # hciconfig hci1 up piscan&lt;br /&gt;
btusb_submit_intr_urb: hci1 urb c3bdac40 submission failed (28)&amp;lt;br&amp;gt;&lt;br /&gt;
Can&#039;t init device hci1: Input/output error (5)&lt;br /&gt;
&lt;br /&gt;
|----------------&lt;br /&gt;
|&#039;&#039;&#039;TRUST - Bluetooth 2.1 USB Adapter&#039;&#039;&#039; [[Image:Trust_Small_Bluetooth.jpg]] || style=&amp;quot;background:#ffff00;&amp;quot; | TBT || style=&amp;quot;background:#ff0000;&amp;quot; | KO || Product: BCM2046B1 &amp;lt;br&amp;gt; Manufacturer: Broadcom ||  # hciconfig hci1 up piscan&lt;br /&gt;
btusb_submit_intr_urb: hci1 urb c3bdac40 submission failed (28)&amp;lt;br&amp;gt;&lt;br /&gt;
Can&#039;t init device hci1: Input/output error (5)&lt;br /&gt;
|----------------&lt;br /&gt;
|&#039;&#039;&#039;[http://www.rueducommerce.fr/Peripheriques-Reseaux-wifi/Adaptateur-USB-Bluetooth/Adaptateur-USB-Bluetooth/RUEDUCOMMERCE/2848164-Mini-adaptateur-USB-Bluetooth-portee-100m-19x15x5-39-mm.htm RUEDUCOMMERCE - Mini adaptateur USB Bluetooth&#039;&#039;&#039;] [[Image:RDC_USB_Bluetooth.jpg]]|| style=&amp;quot;background:#ffff00;&amp;quot; | TBT || style=&amp;quot;background:#00ff00;&amp;quot; | OK || Manufacturer: Cambridge Silicon Radio || &lt;br /&gt;
|----------------&lt;br /&gt;
|&#039;&#039;&#039;GIGABYTE - GN-BTD01&#039;&#039;&#039; [[Image:Gigabyte_gn-btd01.jpg]]|| style=&amp;quot;background:#ffff00;&amp;quot; | TBT || style=&amp;quot;background:#00ff00;&amp;quot; | OK || Manufacturer: Cambridge Silicon Radio || Bluetooth 1.1 ?&lt;br /&gt;
|----------------&lt;br /&gt;
|&#039;&#039;&#039;BELKIN - F8T003 v2&#039;&#039;&#039; || style=&amp;quot;background:#ffff00;&amp;quot; | TBT || style=&amp;quot;background:#00ff00;&amp;quot; | OK || Manufacturer: Cambridge Silicon Radio || &lt;br /&gt;
|----------------&lt;br /&gt;
|&#039;&#039;&#039;D-LINK - DBT-122&#039;&#039;&#039; || style=&amp;quot;background:#ffff00;&amp;quot; | TBT || style=&amp;quot;background:#00ff00;&amp;quot; | OK || Product: BCM2035 &amp;lt;br&amp;gt; Manufacturer: Broadcom || &lt;br /&gt;
|----------------&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Bluetooth Linux stack is divided into several parts:&lt;br /&gt;
* kernel drivers&lt;br /&gt;
* userland libraries/daemon (bluez)&lt;br /&gt;
&lt;br /&gt;
===Driver installation===&lt;br /&gt;
* (Done by default on [[APF27]], [[APF51]], [[APF6]] and [[OPOS6ul]])&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ make linux-menuconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
[*] Networking support  ---&amp;gt;&lt;br /&gt;
    &amp;lt;M&amp;gt;   Bluetooth subsystem support  ---&amp;gt;&lt;br /&gt;
        --- Bluetooth subsystem support&lt;br /&gt;
            &amp;lt;M&amp;gt;   L2CAP protocol support &lt;br /&gt;
            &amp;lt;M&amp;gt;   SCO links support&lt;br /&gt;
            &amp;lt;M&amp;gt;   RFCOMM protocol support&lt;br /&gt;
                [*]     RFCOMM TTY support&lt;br /&gt;
            &amp;lt;M&amp;gt;   BNEP protocol support&lt;br /&gt;
                [ ]     Multicast filter support (NEW)&lt;br /&gt;
                [ ]     Protocol filter support (NEW)&lt;br /&gt;
            &amp;lt;M&amp;gt;   HIDP protocol support&lt;br /&gt;
            Bluetooth device drivers  ---&amp;gt;&lt;br /&gt;
                &amp;lt;M&amp;gt; HCI USB driver &lt;br /&gt;
                &amp;lt; &amp;gt; HCI SDIO driver (NEW)&lt;br /&gt;
                &amp;lt;M&amp;gt; HCI UART driver&lt;br /&gt;
                    [*]   UART (H4) protocol support &lt;br /&gt;
                    [*]   BCSP protocol support &lt;br /&gt;
                    [ ]   HCILL protocol support (NEW)&lt;br /&gt;
                &amp;lt; &amp;gt; HCI BCM203x USB driver (NEW)&lt;br /&gt;
                &amp;lt; &amp;gt; HCI BPA10x USB driver (NEW)&lt;br /&gt;
                &amp;lt; &amp;gt; HCI BlueFRITZ! USB driver (NEW)&lt;br /&gt;
                &amp;lt; &amp;gt; HCI VHCI (Virtual HCI device) driver (NEW)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Bluez installation===&lt;br /&gt;
(Done by default on [[APF51]], [[APF6]] and [[OPOS6UL]])&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ make menuconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
Package Selection for the target  ---&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    [*] XML handling  ---&amp;gt;&lt;br /&gt;
        [*]   libxml2&lt;br /&gt;
    ...&lt;br /&gt;
    [*] Hardware handling  ---&amp;gt;&lt;br /&gt;
        [*]   dbus&lt;br /&gt;
              XML library to use (libxml2)&lt;br /&gt;
    ...&lt;br /&gt;
    Networking applications  ---&amp;gt;&lt;br /&gt;
    [*] bluez&lt;br /&gt;
    [*] bluez-utils&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Custom Bring up (each hardware may have a different init sequence)==&lt;br /&gt;
&lt;br /&gt;
===OPOS6UL===&lt;br /&gt;
* OPOS6UL has a CM-43438 chip (based on BCM43438) connected to the i.MX6UL UART8 (ttymxc7)&lt;br /&gt;
&lt;br /&gt;
* Start the bluetooth deamon and attach your chipset to the kernel bluez UART driver:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# /usr/libexec/bluetooth/bluetoothd &amp;amp;&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Wake up the chip&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# export BTRESET=42&lt;br /&gt;
# echo $BTRESET &amp;gt; /sys/class/gpio/export&lt;br /&gt;
# echo out &amp;gt; /sys/class/gpio/gpio$BTRESET/direction&lt;br /&gt;
# echo 0 &amp;gt; /sys/class/gpio/gpio$BTRESET/value&lt;br /&gt;
# sleep 1&lt;br /&gt;
# echo 1 &amp;gt; /sys/class/gpio/gpio$BTRESET/value&lt;br /&gt;
# sleep 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Attach the chip. Before running the following command, be sure that the file /etc/firmware/BCM43430A1.hcd exists !&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# hciattach -t 30 /dev/ttymxc7 bcm43xx 921600 flow&lt;br /&gt;
bcm43xx_init&lt;br /&gt;
Set Controller UART speed to 921600 bit/s&lt;br /&gt;
Flash firmware /etc/firmware/BCM43430A1.hcd&lt;br /&gt;
Set Controller UART speed to 921600 bit/s&lt;br /&gt;
Device setup complete&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===APF6===&lt;br /&gt;
* APF6 has a jorjin chip connected to the i.MX6 UART2 (ttymxc1)&lt;br /&gt;
&lt;br /&gt;
* Start the bluetooth deamon and attach your chipset to the kernel bluez UART driver:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# /usr/sbin/bluetoothd&lt;br /&gt;
NET: Registered protocol family 31&lt;br /&gt;
Bluetooth: HCI device and connection manager initialized&lt;br /&gt;
Bluetooth: HCI socket layer initialized&lt;br /&gt;
Bluetooth: L2CAP socket layer initialized&lt;br /&gt;
Bluetooth: SCO socket layer initialized&lt;br /&gt;
Bluetooth: BNEP (Ethernet Emulation) ver 1.3&lt;br /&gt;
Bluetooth: BNEP socket layer initialized&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or if you are using BlueZ 5&lt;br /&gt;
&amp;lt;/pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# /usr/libexec/bluetooth/bluetoothd &amp;amp;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Wake up the chip&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# export BTRESET=43&lt;br /&gt;
# echo $BTRESET &amp;gt; /sys/class/gpio/export&lt;br /&gt;
# echo out &amp;gt; /sys/class/gpio/gpio$BTRESET/direction&lt;br /&gt;
# echo 0 &amp;gt; /sys/class/gpio/gpio$BTRESET/value&lt;br /&gt;
# sleep 1&lt;br /&gt;
# echo 1 &amp;gt; /sys/class/gpio/gpio$BTRESET/value&lt;br /&gt;
# sleep 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Attach the chip. Before running the following command, be sure that the file /lib/firmware/TIInit_7.6.15.bts exists ! You can download it [https://github.com/TI-ECS/bt-firmware/blob/master/TIInit_7.6.15.bts here] (click on the &#039;Raw&#039; button)&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# /usr/sbin/hciattach -s 115200 ttymxc1 texas 115200&lt;br /&gt;
Found a Texas Instruments&#039; chip!&lt;br /&gt;
Firmware file : /lib/firmware/TIInit_7.6.15.bts&lt;br /&gt;
Loaded BTS script version 1&lt;br /&gt;
Device setup complete&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Bluetooth#Common Bring up|Go to &amp;quot;Common Bring up&amp;quot; section]]&lt;br /&gt;
&lt;br /&gt;
===APF51Dev===&lt;br /&gt;
* [[APF51Dev]] has a CSR BlueCore 4 chipset connected to the i.MX51 UART3 (ttymxc1)&lt;br /&gt;
&lt;br /&gt;
* On recent kernel using device tree, you have to &amp;quot;wake up&amp;quot; the chip:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# export BTRESET=60&lt;br /&gt;
# echo $BTRESET &amp;gt; /sys/class/gpio/export&lt;br /&gt;
# echo out &amp;gt; /sys/class/gpio/gpio$BTRESET/direction&lt;br /&gt;
# echo 0 &amp;gt; /sys/class/gpio/gpio$BTRESET/value&lt;br /&gt;
# sleep 1&lt;br /&gt;
# echo 1 &amp;gt; /sys/class/gpio/gpio$BTRESET/value&lt;br /&gt;
# sleep 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Start the bluetooth deamon and attach your chipset to the kernel bluez UART driver:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# /usr/sbin/bluetoothd&lt;br /&gt;
# /usr/sbin/hciattach -s 115200 ttymxc1 csr 115200&lt;br /&gt;
&lt;br /&gt;
CSR build ID 0x00-0x37&lt;br /&gt;
Bluetooth: Core ver 2.15&lt;br /&gt;
NET: Registered protocol family 31&lt;br /&gt;
Bluetooth: HCI device and connection manager initialized&lt;br /&gt;
Bluetooth: HCI socket layer initialized&lt;br /&gt;
Bluetooth: HCI UART driver ver 2.2&lt;br /&gt;
Bluetooth: HCI H4 protocol initialized&lt;br /&gt;
Bluetooth: HCI BCSP protocol initialized&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Bluetooth#Common Bring up|Go to &amp;quot;Common Bring up&amp;quot; section]]&lt;br /&gt;
&lt;br /&gt;
===APF27Dev + APW===&lt;br /&gt;
* [[Wireless extension board|APW]] has a CSR BlueCore 4 chipset connected to the i.MX27 serial port ttySMX5 (UART6)&lt;br /&gt;
* Reset it:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# source /usr/bin/gpio_helpers.sh&lt;br /&gt;
# gpio_mode PB14 1&lt;br /&gt;
# gpio_set_value PB14 0; sleep 1; gpio_set_value PB14 1; sleep 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Attach it to the kernel bluez UART driver:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# /usr/sbin/hciattach -s 921600 ttySMX5 csr 921600&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* [[Bluetooth#Common Bring up|Go to &amp;quot;Common Bring up&amp;quot; section]]&lt;br /&gt;
&lt;br /&gt;
===USB module===&lt;br /&gt;
* Make sure your hardware is connected to the APF. &#039;&#039;&#039;If using an USB dongle&#039;&#039;&#039;, load corresponding driver:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# modprobe btusb&lt;br /&gt;
Bluetooth: Core ver 2.14&lt;br /&gt;
NET: Registered protocol family 31&lt;br /&gt;
Bluetooth: HCI device and connection manager initialized&lt;br /&gt;
Bluetooth: HCI socket layer initialized&lt;br /&gt;
Bluetooth: Generic Bluetooth USB driver ver 0.4&lt;br /&gt;
usbcore: registered new interface driver btusb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Common Bring up==&lt;br /&gt;
* Check if Bluetooth interface was detected:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# hciconfig&lt;br /&gt;
hci0:   Type: USB or UART&lt;br /&gt;
        BD Address: 00:00:00:00:00:00 ACL MTU: 0:0 SCO MTU: 0:0&lt;br /&gt;
        DOWN&lt;br /&gt;
        RX bytes:0 acl:0 sco:0 events:0 errors:0&lt;br /&gt;
        TX bytes:0 acl:0 sco:0 commands:0 errors:0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* If interface is DOWN, bring it up:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# hciconfig hci0 up piscan&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Check your Bluetooth device is correctly initialized:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# hcitool dev&lt;br /&gt;
Devices:&lt;br /&gt;
        hci0    00:10:60:D1:92:0F&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
===Scanning network===&lt;br /&gt;
* To get surrounding devices addresses and names:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# hcitool scan&lt;br /&gt;
Scanning ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* To get surrounding devices addresses and classes:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# hcitool inq&lt;br /&gt;
Inquiring ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Get info on a given device===&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# hcitool info 00:19:0E:xx:xx:xx&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Pinging other devices===&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# l2ping 00:19:0E:xx:xx:xx&lt;br /&gt;
Ping: 00:19:0E:xx:xx:xx from 00:19:88:xx:xx:xx (data size 44) ...&lt;br /&gt;
44 bytes from 00:19:0E:xx:xx:xx id 0 time 38.05ms&lt;br /&gt;
44 bytes from 00:19:0E:xx:xx:xx id 1 time 37.09ms&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here 00:19:0E:xx:xx:xx is the Bluetooth MAC address of the Host.&lt;br /&gt;
&lt;br /&gt;
==Advanced usages==&lt;br /&gt;
===Setup a Terminal between a PC and your APF through Bluetooth===&lt;br /&gt;
On the APF :&lt;br /&gt;
* the first step is to create the corresponding node for the future connection:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# mknod /dev/rfcomm0 c 216 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* then, listen to an incoming connection, on the rfcomm0 (here channel 7 is choosen):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# rfcomm -i hci0 listen /dev/rfcomm0 7 &amp;amp;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* and the last step, when the connection is open, is to connect a terminal (through getty) to the device &#039;&#039;/dev/rfcomm0&#039;&#039;:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# getty 38400 /dev/rfcomm0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On the PC :&lt;br /&gt;
*after the two first steps on the APF, you need to connect the PC to the APF with the same channel (7):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ rfcomm connect 0 00:19:88:2B:xx:xx 7             (replace 00:19:88:2B:xx:xx with the Bluetooth @ of your APF)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* and configure minicom (&#039;&#039;$HOME/.minirc.dfl&#039;&#039;):&lt;br /&gt;
 pu port             /dev/rfcomm0&lt;br /&gt;
 pu baudrate         38400&lt;br /&gt;
 pu bits             8&lt;br /&gt;
 pu parity           N&lt;br /&gt;
 pu stopbits         1&lt;br /&gt;
* when getty is running on the APF, you could you connect with minicom:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ minicom -o&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* it could be a good idea to create an additional user account for remotely login through Bluetooth, by following [[Adding_users|these instructions]].&lt;br /&gt;
===Using a Bluetooth keyboard on your APF===&lt;br /&gt;
The only thing needed after having a bluetooth correctly configured is to use this command :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ hidd --connect keyboard_bdaddr&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Controlling your board from an android device (using rfcomm)===&lt;br /&gt;
The following section shows how to send commands to the board from an android device via Bluetooth. The goal is to control the two LEDs present on the board. An APF51dev and a Samsung Galaxy Tab 2 are used in this example.&lt;br /&gt;
&lt;br /&gt;
On the APF:&lt;br /&gt;
&lt;br /&gt;
* Enable the SPP profile. Here, it is using the channel 1.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# sdptool add --channel=1 SP&lt;br /&gt;
Serial Port service registered&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Listen incomming connections on the channel 1. The script &#039;&#039;serial-server.sh&#039;&#039; is located in &#039;&#039;demos/android/android_remote_controller&#039;&#039;.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# rfcomm listen hci0 1 ./serial-server.sh {}&lt;br /&gt;
Waiting for connection on channel 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On the android device:&lt;br /&gt;
&lt;br /&gt;
* Deploy the app on your device. The app is avalaible [ftp://ftp2.armadeus.com/armadeusw/apf-remote-controller.tar.gz here as source] or [ftp://ftp2.armadeus.com/armadeusw/apf-remote-controller.apk here as apk].&lt;br /&gt;
* Start the app.&lt;br /&gt;
* Enjoy :-)&lt;br /&gt;
&lt;br /&gt;
===Others===&lt;br /&gt;
* [[TCP/IP with Bluetooth]]&lt;br /&gt;
* [[OBEX]] transfers&lt;br /&gt;
* [[Wiimote]]&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* http://www.bluez.org/&lt;br /&gt;
* http://www.hanscees.com/bluezhowto.html&lt;br /&gt;
* [http://doc.ubuntu-fr.org/bluetooth_materiel-soutenu Dongle USB&amp;lt;-&amp;gt;Bluetooth supportés sous Ubuntu]&lt;br /&gt;
* [http://www.unixgarden.com/index.php/comprendre/bluetooth-installation-et-utilisation GLMF n°88 - Bluetooth, installation et utilisation]&lt;br /&gt;
* [http://www.unixgarden.com/index.php/embarque/communication-de-donnees-et-d’images-issues-de-la-carte-fox-par-bluetooth GLMF n°95 - Communication de données et d&#039;images issues de la carte Fox par Bluetooth]&lt;br /&gt;
&lt;br /&gt;
[[Category:Wireless]]&lt;br /&gt;
[[Category:Bluetooth]]&lt;/div&gt;</summary>
		<author><name>SebastienSz</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=Qt&amp;diff=14096</id>
		<title>Qt</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=Qt&amp;diff=14096"/>
		<updated>2016-10-26T12:01:45Z</updated>

		<summary type="html">&lt;p&gt;SebastienSz: /* Launching you Qt application */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
This page will summarize the process to build, install and use Qt on your APF board. It will focus on Qt5.&lt;br /&gt;
&lt;br /&gt;
= Compiling Qt =&lt;br /&gt;
&lt;br /&gt;
Select Qt5 from the BuildRoot menuconfig&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
Target packages ---&amp;gt;&lt;br /&gt;
   Graphic libraries and applications (graphic/text) ---&amp;gt;&lt;br /&gt;
      [*] Qt5 ---&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Under the Qt5 submenu, you can select the features and Qt modules you need. The most important ones are described below.&lt;br /&gt;
&lt;br /&gt;
Select the following option to accept de free license of Qt. If you don&#039;t select the option here, the building of Qt will stop and ask you to accept it.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
[*] Approve free license&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To dispaly UI you will need the gui module and the widgets module. You need to select de graphical platform you want. For example linuxfb for the framebuffer. You can also set the default graphical platform here instead of passing to your Qt application with the -platform parameter.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
[*] gui module&lt;br /&gt;
[*]   widgets module&lt;br /&gt;
-*-   linuxfb support&lt;br /&gt;
...&lt;br /&gt;
(linuxfb)    Default graphical platform&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To support the touchscreen, enable Tslib support.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
[*]    Enable Tslib support&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can then select the Qt modules you need. For example:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;qt5xmlpatterns&#039;&#039;&#039; if you need to read or write XML files.&lt;br /&gt;
* &#039;&#039;&#039;qt5serialport&#039;&#039;&#039; if you need to use UARTs from you Qt application&lt;br /&gt;
&lt;br /&gt;
= Compiling your Qt application =&lt;br /&gt;
&lt;br /&gt;
Once Qt is compiled, you need to compile and deploy your application. You can do this from Qt Creator. You need to create a &amp;quot;Kit&amp;quot; for your APF board. See the Qt Creator [http://doc.qt.io/qtcreator/index.html documentation] You will need the following informations:&lt;br /&gt;
* The debugger path is &#039;&#039;&#039;buildroot/output/host/usr/bin/arm-linux-gnueabihf-gdb&#039;&#039;&#039;&lt;br /&gt;
* The compiler path is &#039;&#039;&#039;buildroot/output/host/usr/bin/arm-linux-gnueabihf-g++&#039;&#039;&#039;&lt;br /&gt;
* The qmake paths is &#039;&#039;&#039;buildroot/output/host/usr/bin/qmake&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Launching your Qt application =&lt;br /&gt;
If you want to use the tslib you need to active it first&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
export QT_QPA_FB_TSLIB=1 # for the framebuffer backend&lt;br /&gt;
export QT_QPA_EGLFS_TSLIB=1 # for openGL backend&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and specify the input device&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
export TSLIB_TSDEVICE=/dev/input/event0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# ./flightinfo -plaform linuxfb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Qt Embedded [http://doc.qt.io/qt-5.6/embedded-linux.html documentation] describes all the options you can pass to the Qt framework.&lt;/div&gt;</summary>
		<author><name>SebastienSz</name></author>
	</entry>
</feed>