This project was written in July of 2023 with UUU version 1.5.21 as the latest stable release, but should continue to be applicable to newer releases
What is UUU?- UUU (Universal Update Utility) is the tool offered by NXP to program flash storage devices that are connected to a NXP i.MX SoC (System on Chip)
- UUU is also called MFGTools v3, and replaces all previous versions of MFGTools
- NXP i.MX BSP's (Board Support Packages) for both embedded Linux and Android use UUU scripts to program the flash devices on an i.MX EVK (Evaluation Kit)
- UUU can also be used to program flash devices on a custom design that uses NXP i.MX SoC's
- Custom scripts can be written to automate flash programming for development or production
- UUU supports both Linux and Windows and is tested by NXP on these platforms
- The MacOS version of UUU is untested, so use with caution
- All source code is provided on GitHub and is licensed under the BSD 3-Clause
- UUU communicates with the i.MX SoC using a USB interface when the SoC is placed into serial download mode
- UUU supports all flash types such as eMMC, NAND, QSPI, and SD (Secure Digital)
The project is nxp-imx / mfgtools "Freescale/NXP I.MX Chip image deploy tools"
Releases - Download binaries and source code for the release and pre-release versions
- Each release includes PDF documentation such as the PDF for v1.5.21
- Each release also includes source code and compiled executable applications for Linux and Windows
Wiki - Documentation. On the right side of the Wiki page there are links such as
There are some NXP Community Forum posts on UUU- This post, Universal Update Utility (UUU) Tool, Contains a 2019 September slide deck on UUU: AMF-SOL-T3810.pdf
- This 2019 October slide deck on using UUU with i.MX8: AMF-AUT-T3893
- This 2019 October article on using UUU with the i.MX 8M Mini is a good reference
- This 2016 October slide deck discusses the original Freescale Mfgtool and is a good historical reference: AMF-AUT-T2324.pdf
2023-06-01 v1.5.21
(Refresh)
2023-02-01 v1.5.21
(Original)
2022-08-23 v1.4.243
2022-02-09 v1.4.193
2021-09-24 v1.4.164
2021-06-03 v1.4.139
This section contains critically important information that may save you a lot of time debugging UUU
UUU image download speed is limited by the flash write speed and not by the USB speed, so using USB 2 or USB 3 will make no difference in speed
Although some i.MX EVK are designed to use USB 3 for serial download mode, it is possible to use USB 2 instead of USB 3 for serial download mode in a custom design. Instructions to do this are provided by NXP in the community forum post: i.MX8MM & i.MX8MQ USB2.0 Design Without USB TYPE-C
UUU does not have any inherent fault tolerance, so be mindful about the following
- USB cables must be good quality and as short as possible, so if you experience failures, try different USB cables
- Some PCs have lower quality USB ports, so if you experience failures, try a different computer
- USB hubs have been known to cause problems, so avoid using any externalUSB hubs and be aware that some computers use internal USB hubs
If you experience issues using UUU, try enabling the debug modes when calling UUU on the command line
$ uuu -v (This enables debug verbosity)
$ uuu -V (This enables debug verbosity along with libusb debug info)
There is a UUU snap available in the Canonical Snap store. When I was still using Ubuntu, I was unable to get this to work properly. If this works for you, please let me know in the comments
UUU is updated occasionally, so make sure you are always using the latest released version of UUU
I have been equally successful in running UUU from binaries that I downloaded from the GitHub project, and from using UUU that I compiled locally, both methods are recommended
Linux installation tipsUUU requires root (superuser) privileges to access USB
There may be a method to avoid using sudo when calling UUU but I have not tested this
I place the UUU executive in locations that are already part of the $PATH variable for root and for user
- User:
/usr/local/bin
- Root:
/usr/local/sbin
In order to only install UUU once, I use a symbolic link for the second location
These are the commands that I use for installation of the UUU binary
$ sudo cp uuu /usr/local/bin/uuu
$ sudo ln -s /usr/local/bin/uuu /usr/local/sbin/uuu
My script for downloading UUU source, building, and installing UUU in LinuxI rely on Bash shell script to automate the building and installation process
The script relies on packages that are easily available from the Debian or Ubuntu repositories, and will probably work just as well with Mint, Siduction, and any other Linux distribution that is descended from Debian
Before running the script, check the GitHub project for UUU to update the release tag.
If the script does not build properly, check the GitHub project to see if the package requirements for building have changed
To use the script, make it executable and then run it
$ chmod +x nxp-uuu-build.sh
$ ./nxp-uuu-build.sh
The nxp-uuu-build.sh script is available for download in the attachments section of this Hackster project, or you can copy from the following text
#!/bin/bash
# Build NXP UUU Manufacturing Tools
# https://github.com/nxp-imx/mfgtools
# Change the release tag as needed
Version="uuu_1.5.21"
# Change the build directory as needed
BuildDir="${HOME}/Builds"
# Install required packages
# Works for Ubuntu and Debian. Will probably work for Mint and PopOS.
sudo apt update
sudo apt -y install libusb-1.0-0-dev libbz2-dev libzstd-dev pkg-config cmake libssl-dev g++
# Move to the build directory
mkdir -p "$BuildDir"
pushd "$BuildDir" || exit
# Clone the project and move into it
git clone https://github.com/NXPmicro/mfgtools.git
cd mfgtools || exit
# Check out the specified tag
git checkout "tags/$Version"
# Build
cmake . && make
# Remove old versions of UUU
sudo rm -f /usr/local/sbin/uuu
sudo rm -f /usr/local/bin/uuu
# Install UUU so that both root and users can access it
sudo cp "$BuildDir/mfgtools/uuu/uuu" /usr/local/bin/uuu
sudo ln -s /usr/local/bin/uuu /usr/local/sbin/uuu
# Exit
popd || exit
The endThis is the end of this post. Please let me know in the comments if this has been useful for you, and if not, what could improve.
Comments
Please log in or sign up to comment.