.. |br| raw:: html
.. _uuu: UUU - Universal Update Utility ================================ The **U**\ niversal **U**\ pdate **U**\ tility is used to program your board. We actually can use ``uuu`` to flash most of our products. For i.MX6 based modules (TX6 and TXUL series) please continue to use MFGTool. .. note:: Either a Linux PC or :ref:`wsl` is recommended Getting uuu ------------ Get the latest stable file ``uuu`` (for Linux) or ``uuu.exe`` (for Windows) from NXP's official repository: https://github.com/NXPmicro/mfgtools/releases udev Rules ---------- There's no need to call ``uuu`` as sudo. Just update your udev rules as follows. |br| Running ``uuu -udev`` will output a list of 'udev' rules that will allow access to any logged in non-privileged user. |br| Put those rules into **/etc/udev/rules.d/70-uuu.rules**. This can be achieved running the following two commands: .. prompt:: :prompts: $ sudo sh -c "uuu -udev >> /etc/udev/rules.d/70-uuu.rules" sudo udevadm control --reload STM32 based Modules ~~~~~~~~~~~~~~~~~~~ Since STM32 based modules (QSMP/TXMP) appear with an unknown VID/PID, you have to add it to uuu's udev rules manually. Add this line to: ``/etc/udev/rules.d/70-uuu.rules``. Don't forget to reload udev rules - mentioned above. .. code-block:: text SUBSYSTEM=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="0afb", MODE="0666" #STM32 Usage ------ UUU uses the android fastboot protocol. The usual way to flash our modules is to start the **mfg-uboot**, write the default u-boot into eMMC and then flash the Boot-partition and Rootfs as filesystem image. .. tip:: You can use pre-compiled images and scripts from our `Customer Area `_ or your own Yocto built images. Running uuu ------------ On Windows 10 or Linux uuu will work fine. For Windows 7 see :ref:`uuu-win7`. 1. Put the bootmode jumper in place (for Help see :ref:`enabling-bootmode`) and connect your module via OTG-programming port of the baseboard. Reset the board. 2. Get terminal access. If you need help for this see :ref:`ttl-converter-connection`. 2. Open a command line inside the folder where *uuu* is and run the following command. The script-file argument should point to the uuu.auto file generated during the build process and located within the images output folder. .. prompt:: :prompts: $ uuu -v .. tip:: Inside your terminal you should now see progress and information while *uuu* is programming your module. UUU with Custom Files ----------------------- Creating Filesystems ~~~~~~~~~~~~~~~~~~~~~ For e.g. the */boot* partition you can create your own filesystem image. The example below gives you an idea how this is done. It also shows, how existing filesystem images can be mounted. .. prompt:: :prompts: $ dd if=/dev/zero of=bootfs.fat bs=1M count=0 seek=32 mkfs -t vfat bootfs.fat sudo mount -o loop bootfs.fat /mnt/temp/ sudo cp Image imx8mn-tx8m-nd00-mipi-mb.dtb /mnt/temp/ sudo umount /mnt/temp Script Examples [1]_ ~~~~~~~~~~~~~~~~~~~~~~~ .. hint:: Some commands differ depending on the module you are using. +----------------------+---------------------------------------+---------------------------------------+ | Module | Loading bootloader command-set | Comments | +======================+=======================================+=======================================+ | tx8m-1610 | .. code-block:: text | | | | | | | | SDP: boot -f | | | | SDPV: write -f -skipspl | | | | SDPV: jump | | +----------------------+---------------------------------------+---------------------------------------+ | tx8m-1620 | .. code-block:: text | | | | | | | | SDP: boot -f | | | | SDPV: write -f -skipspl | | | | SDPV: jump | | +----------------------+---------------------------------------+---------------------------------------+ | tx8m-nd00 | .. code-block:: text | See `Note`_ below | | | | | | | SDPS: boot -f | | | | SDPV: write -f -skipspl | | | | SDPV: jump | | | | | | +----------------------+---------------------------------------+---------------------------------------+ | tx8p-ml81 | .. code-block:: text | | | | | | | | SDPS: boot -f | | +----------------------+---------------------------------------+---------------------------------------+ | tx8p-ml82 | .. code-block:: text | | | | | | | | SDPS: boot -f | | +----------------------+---------------------------------------+---------------------------------------+ | qsxp-ml81 | .. code-block:: text | | | | | | | | SDPS: boot -f | | +----------------------+---------------------------------------+---------------------------------------+ | qsxm-mm60 | .. code-block:: text | | | | | | | | SDP: boot -f | | | | SDPV: write -f -skipspl | | | | SDPV: jump | | +----------------------+---------------------------------------+---------------------------------------+ | qs8m-mq00 | .. code-block:: text | | | | | | | | SDP: boot -f | | | | SDPV: write -f -skipspl | | | | SDPV: jump | | +----------------------+---------------------------------------+---------------------------------------+ | qs8m-nd00 | .. code-block:: text | See `Note`_ below | | | | | | | SDPS: boot -f | | | | SDPV: write -f -skipspl | | | | SDPV: jump | | | | | | +----------------------+---------------------------------------+---------------------------------------+ .. _Note: .. note:: UUU has a problem reconnecting to i.MX8MNano devices after the first boot stage, resulting in a "libusb TIMEOUT" error. After this just run ``uuu`` again and it will work. You may also start **uuu** in Daemon mode (Option ``-d``) to get around this problem. **Flashing U-Boot to eMMC** .. literalinclude:: ./code/uuu_flash-u-boot.auto :linenos: **Flashing filesystems** .. literalinclude:: ./code/uuu_flash-filesystem.auto :linenos: .. note:: Run ``man fastboot`` on your host to see which possibilities you have with ``FB:`` command in **uuu**. **Importing environment** .. literalinclude:: ./code/uuu_import-env.auto :linenos: .. [1] Further information about **uuu**, and the official documentation can be found in `uuu.pdf `_