Privacy Policy
E-mail Us Today!
Privacy Policy

Board Features
• Freescale i.MX6Dual/Quad, ARM® Cortex™-A9 core @ 1GHz, Vivante 2D/3D HW Accelerated GPU
• 1GB DDR3 1066 (64 bit)
• Mini HDMI and LVDS (with touch and PWM)
• 1 Micro USB OTG (500 mA)
• 2 USB 2.0 type A (500 mA each) (+1 on internal expansion connector)
• 1 uSD card
• 1 eMMC (up to 16 GB)
• 1 mSATA
• 1 mPCIe x1 + SIM
• 1 Ethernet RJ45 (10/100/1000 Mbit)
• 1 Audio combo (mic + headphones) jack, Line in/out on internal pin header
• SPI, 2xCAN, i2c, 3 UART (3.3V CMOS), 1xRS232 (with RTS/CTS) UART, 44 CPU GPIO
• Lauterbach compatible MIPI60 debug connector with JTAG and TRACE
• Lattice ECP5 FPGA (45K or 85k)
• 1GB DDR3 800
• 1 Ethernet RJ45 (10/100/1000 MBit)
• 44 GPIO
• SERDES (85k)
• 6-24V DC power supply

• 4xMIPI lanes
• 16 bit parallel CSI (shared with TRACE Debug port)

The HW design is reserved intellectual property of Sanitas EG.
The SW is open source (see the various COPYING documents for more informations about the open source licenses).
The demo FPGA FW is open source.


INVENTAMI is not meant to be used in safety critical environment such as life support devices, nuclear power plants, coffee machines, Galaxy class starships . . .

Figure 1. INVENTAMI Top


Read the following notes and precautions carefully.

Better safe than sorry.

Among all the things that can damage your INVENTAMI board, the following are the most easily avoidable:

  • Power Supply Overvoltage
  • Reverse Voltage

If you don’t use the supplied wall adapter, double check the voltage settings of your PSU and the polarity of the connector.

And then we advise you to really pay attention to:

  • Excessive currents flowing through the GPIOs
  • Excessive voltages applied to the GPIOs

In Section 5, “Hardware” you can find, for each pin, the maximum current and voltage allowed.

Power Supply It must provide at least 3A at 7V (21W). The power requisite is a worst case estimate (and refers to the Quad Core CPU, 85k FPGA version of INVENTAMI at full throttle with everything on).

HMI You can use your INVENTAMI either interactively (i.e.: with keyboard, mouse and monitor) or remotely (via SSH).

In the first case you will need:

  • USB keyboard
  • USB mouse
  • HDMI monitor (ideally it must be a shining new FullHD 1920×1080 one)

There should be no problems with input devices, while there is a possibility that the monitor won’t be recognized. We suggest you to avoid using HDMI-to-DVI adapters. These adapters can really be a PITA.

To use it remotely you will need a Ethernet cable and a PC with a SSH client (ssh, putty, …)

It can be helpful to have all the default configurations at hand. So here they are for your convenience.

  • IP:
  • Console serial line: /dev/ttymxc1 115200,8,N,1 (the RS232 one)
  • Single user (root) with no password

This step by step guide will lead you through the procedure to boot your INVENTAMI for the very first time.

Step By Step Procedure – Interactive

  1. Insert the uSD card While INVENTAMI has a on-board eMMC with a preloaded bootloader, the demo Linux kernel and root filesystem are on the supplied uSD.
  2. Connect network (optional) If you want, you can plug your Ethernet cable now, but you can do it later when the board is booted.
  3. Connect the HDMI cable INVENTAMI features FullHD video output on mini HDMI connector. Use the supplied adapter to use a standard HDMI cable.
  4. Connect input You can use a USB hub in order not to use all the USB ports.
  5. Power up INVENTAMI will boot as soon as you connect the power supply.
  6. Enjoy!

Step By Step Procedure – Remote

  1. Insert the uSD card While INVENTAMI has a on-board eMMC with a preloaded bootloader, the demo Linux kernel and root filesystem are on the supplied uSD.
  2. Connect network
  3. Power up INVENTAMI will boot as soon as you connect the power supply.
  4. On the PC try to see if the board is reachable:

    $ ping
  5. Then you can connect using SSH:

    $ ssh root@
  6. Enjoy!

Before going any deeper in the custom setup process description, an explanation of the boot-up process is required for a complete understanding of the following.

At reset, the CPU internal bootloader looks at some pins, BOOT_MODE[0:1], in order to know how to boot. Among all possibilities, only  the following are possible:

  • Boot From Fuses
  • Internal Boot
  • USB OTG Serial Downloader

The boot mode is selected by some pullup/down resistors, while the boot device is selected by means of either some internal fuses or external pull up/down resistors (on some of EIM pins). By default the boot mode is Boot From Fuses and the default boot device is the eMMC for Boot From Fuses and uSD for Internal Boot boot modes. The fuses are OTP, so the configuration cannot be changed. Sorry.

The supplied bootloader (Das U-Boot for the masses), that comes preinstalled on the eMMC, uses a bootscript mechanism to select the boot device and then the kernel to load and rootfs to use. In particular u-boot looks for a file called inventami.bootscript in the first partition of the following devices:

  1. uSD
  2. mSATA
  3. eMMC

The order in which u-boot searches the file is the one depicted. As soon as he finds the file, it executes it.

It is possible to override the fuse selected boot device using u-boot bootmode command.

Here you can find a list of ready to deploy Linux distributions:

  1. [Yocto] Minimal command line only
  2. [Yocto] Minimal command line only with developer tools
  3. [Yocto] Multimedia command line only
  4. [Yocto] Multimedia command line only with developer tools
  5. [Yocto] XFCE
  6. [Yocto] XFCE with developer tools

You can download them from Section 4, “Downloads”.

The following tutorial will help you to create a bootable uSD card for INVENTAMI board, starting from a ready to deploy image. The procedure in its essence is quite elementary: 1. decompress the image 2. write it on the uSD card using the dd tool for Linux users or Win32DiskImager for Windows users.

For a list of ready-out-of-the-box images, take a look at Section 3.2, “Ready To Deploy Distributions”.

3.3.1. Linux

With no uSD card inserted in the reader, from the terminal run:

$ df -h

Then do the same after insering a (formatted) uSD in the reader:

$ df -h

Spot the difference! The devices that had not been listed before are the partitions on uSD card just inserted. Focus on that rows. The first column shows the device name assigned to the uSD card. It will be something like /dev/sdd1 or (less probably) /dev/mmcblk0p1. The last part of the name (“1” or “p1”, respectively) is the partition number, but as we want to write on the whole uSD card, it is necessary to strip that part from the name (e.g.: /dev/sdd or /dev/mmcblk0) in order to know the uSD device name.

Before continuing it is necessary to unmount all the partitions using the umount command. e.g.:

$ sudo umount /dev/sdd1
$ sudo umount /dev/sdd2
Make sure you are using the correct device. Performing the following actions on the wrong device will surely lead to the complete loss of all data on the mistaken device. Double check it before continuing!

Write the image on the uSD card with the command:

$ sudo dd bs=1M if=<img_file_path> of=/dev/<sd_name>

Please be sure that you replaced the argument of input file (if=) with the path of the .img file, and that the device name specified in output file’s argument (of=) is that of the whole uSD card

Once dd has been completed, run the sync command (this will flush the write cache so that it is safe to unmount the uSD card):

$ sudo sync

The uSD card is now ready to be used.

The supplied ready to deploy uSD card images may not suit your needs, or maybe you want to use a distribution that is not officially supported. In these cases, here I will guide you in the process of making a custom uSD card.

To create a custom uSD you need 5 elements:

  • Bootscript
  • Kernel
  • Kernel Device Tree
  • Kernel Modules
  • Root Filesystem

Everything but the root filesystem must be downloaded from Section 4, “Downloads”.

3.4.1. GParted the uSD card

Insert the uSD card in the card reader and launch GParted from command line:

$ sudo gparted

Select the uSD from the drop down menu, e.g. /dev/sdc.

Figure 2. Select the uSD

Make sure you are using the correct label. Performing the following actions on the wrong device will surely lead to the complete loss of all data on the mistaken device. Double check it before continuing!

Remove all the partitions by creating a new partition table from the top menu: Device → Create Partition Table…

Figure 3. Remove all the partitions


If GParted complains about active (mounted) partitions …

Figure 4. Active partitions anybody?


i. unmount them! Right-click on the mounted partition and select unmount from menu.

Figure 5. Unmount


The new partition must be a msdos one.

Figure 6. Think twice about it…


Now you can create 2 partitions: the boot and the rootfs. Right-click on unallocated and select new from menu

Figure 7. How to create a partition


The first partition must be an ext4 one, of at least 16M

Figure 8. Boot partition


The second partition must be an ext4 one, and must be large enough to hold all the rootfs.

Figure 9. Rootfs partition


Apply all the changes. Press the Apply button…

Figure 10. Apply the changes


…and then press Apply button.

Figure 11. Apply the changes


Now you can exit from GParted.

3.4.2. Copy the boot files to the uSD card

Mount the just-created boot partition

$ sudo mount /dev/sdc1 <MOUNT POINT1>
$ sudo mount /dev/sdc2 <MOUNT POINT2>

Extract the tar.gz file containing the bootscript, the device tree and the kernel.


Now you can extract your rootfs on the second partition.

You must add the kernel modules to the rootfs:



$ sync

You are done.

There are some peculiarities of Ubuntu Snappy that make the deployment a little more involved.

The procedure here will destroy all the content on the target device.

3.5.1 Everything but Ubuntu Snappy

From now on, and all along this section, will mean /dev/mmcblk0 for the eMMC and /dev/sda for the mSATA disk. The deploy procedure is the same for both devices: 1. Partition the device 2. Copy files to boot partition 3. Copy files to rootfs partition

To partition the target device, we will use fdisk. From a terminal of a uSD booted INVENTAMI do:
$ fdisk <device>

Create a new MS-DOS partition table by pressing o
Add at least two partitions.
The first have to be 16M.
Press n and create a primary partition type p. Partition number must be 1. First sector must be de default one. Last sector must be +16M.
The second must be large enough to store the rootfs.
Press n and create a primary partition type p. Partition number must be 2. First sector must be the default one. Last sector must be the default one.

Write the partition table and exit w
Format the 2 partitions
$ mkfs.ext4 /dev/<device>1
$ mkfs.ext4 /dev/<device>2

Make some mount points
$ mkdir /mnt/sd1
$ mkdir /mnt/sd3
$ mkdir /mnt/dest1
$ mkdir /mnt/dest2

Mount the destination partitions
$ mount /dev/1 /mnt/dest1
$ mount /dev/2 /mnt/dest2

Mount the uSD boot partition
$ mount /dev/mmcblk1p1 /mnt/sd1
Copy all the files in the boot partition
$ cp /mnt/sd1/* /mnt/dest1

Mount the uSD rootfs
$ mount /dev/mmcblk1p3 /mnt/sd3

Copy all the files in the rootfs partition
$ cd /mnt/dest2
$ tar xvjf /mnt/sd3/<rootfs tar.bz2> .

It can take some time. You are done. Remove the uSD and reboot.

NOTE: Remember that by default the INVENTAMI board will give precedence to the uSD on the eMMC and mSATA as the boot device.

Kernel 3.14.28, v1.0 – tar.gz

• Bootloader
• Boot partition (bootscript, kernel, device trees)
• Kernel modules

uboot, v1.0

Kernel 3.14.28, v1.0 – tar.gz

Kernel 3.14.28, v1.0 – tar.gz

In this section an overview of the hardware is given, just what it is needed to use your INVENTAMI.
For a more complete and in-depth description of the hardware, please refer to INVENTAMI HW Manual.