UUU (Universal Update Utility)
UUU (Universal Update Utility)
REVISION HISTORY
2579055 Wed Sep 16 Updated UUU default support protocol list nxpfrankli
11:47:32 2020 -0500 (asciidoc)
REVISION HISTORY
1a66a0c Thu Feb 10 16:13:03 Updated UUU default support protocol list allenxh
2022 -0600 (asciidoc)
Contents
1 Introduction 1
1.1 Running environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Typical Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.3 Typical Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.4 License . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.5 What Firmware Need . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.6 Setup auto parameter complete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.6.1 windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.6.2 linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.7 L4.9.123_2.3.0_8MM GA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2 Syntactic 3
3 Usage Example 5
3.1 Basic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.1.1 Download boot loader for imx6\imx7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.1.2 Download boot loader for imx8qxp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.1.3 Download SPL and uboot, such as imx8mq. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.1.4 Burn Android Image to eMMC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.1.5 Burn yocto Image to eMMC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.2 Built-in script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.3 multi boards support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.3.1 For the same boards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.3.2 For the difference boards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.4 Talk with fastboot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.4.1 boot linux kernel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.4.2 write image to emmc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.5 Talk with linux kenrel, transfer file between board and pc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4 Sample scripts 6
5 Supported protocol 6
5.1 SDP: i.MX6/7 ROM download protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
5.1.1 Supported command: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
5.2 HABv4 closed chip support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
5.3 SDPU\SDPV: uboot implement simplified ROM SDP protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
5.4 SDPS: i.MX8QXP and i.MX8QM ROM download protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
5.5 FB: Android fastboot protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
5.5.1 Support command: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
5.6 FBK: Android fastboot protocol, implement at initramfs. See project imx-uuc . . . . . . . . . . . . . . . . . . . 10
5.6.1 Support command: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
5.7 Common command for all protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
UUU (Universal Update Utility) v
8 FAQ 14
9 Build Steps 18
9.1 windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
9.2 linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
12 Release Notes 20
12.1 1.4.193 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
12.1.1 New features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
12.1.2 Bug fixes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
12.2 1.4.165 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
12.2.1 New features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
12.2.2 Bug fixes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
12.3 1.4.139 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
12.3.1 New features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
12.3.2 Bug fixes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
12.4 1.4.72 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
12.4.1 New features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
12.4.2 Bug fixes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
12.5 1.4.43 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
12.5.1 New features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
12.5.2 Bug fixes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
12.6 1.3.191 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
12.6.1 New features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
12.6.2 Bug fixes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
12.7 1.3.154 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
12.7.1 New features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
12.7.2 Bug fixes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
12.8 1.3.134 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
12.8.1 Bug fixes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
UUU (Universal Update Utility) vi
12.9 1.3.130 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
12.9.1 New features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
12.9.2 Bug fixes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
12.101.3.102 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
12.10.1 New features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
12.10.2 Bug fixes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
12.111.3.82 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
12.11.1 New features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
12.11.2 Bug fixes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
12.121.2.135 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
12.12.1 New features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
12.12.2 Bug fixes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
12.131.2.91 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
12.13.1 New features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
12.13.2 Bug fixes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
12.141.2.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
12.14.1 New features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
12.14.2 Bug fixes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
12.151.1.81 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
12.15.1 New features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
12.15.2 Bug fixes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
12.161.1.41 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
12.16.1 New features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
12.16.2 Bug fixes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
13 Known issue 26
UUU (Universal Update Utility) 1 / 26
Introduction
Welcome to the UUU (Universal Update Utility). This is an evolution of MFGTools (aka MFGTools v3).
UUU is Freescale/NXP I.MX Chip image deploy tools.
With the time, the need for an update utility portable to Linux and Windows increased. UUU have the same usage on both
Windows and Linux. It means the same script works on both OS.
UUU is command line tools. look like
uuu (universal update utility) for nxp imx chips -- libuuu-1.0.1-gffd9837
UUU design as common library and UI. So user can easily integrate into their tools with uuu library. UUU also easy run in any
scripts.
PDF of wiki content also is available at release page.
Running environment
• Windows 10, 64bit, early version(below 1.2.0) need install vs2017 redistribute package
Typical Usage
Set board boot pin to serial download mode. Generally iMX ROM will fail back to usb serial download mode if boot failure.
Download uboot
uuu bootloader
Decompress rootfs image and burn into emmc without bootloader (since 1.4.146 and after 2021 Q4 yocto image)
UUU (Universal Update Utility) 2 / 26
Notes: bootloader means bootable image, which included ROM required header. for imx6/7, it should be uboot.imx
generally. for imx8qxp\imx8qm\imx8mm\im8mq, it is flash.bin.
Burn release image into emmc
uuu L4.9.123_2.3.0_8mm-ga.zip
Note: some release combine multi board into one zip package, you need use uuu release.zip/uuu.auto-<boardname>
More usage please refer Example
Typical Script
version number represent the minimum uuu version that uuu can parse this script.
Then flow uuu commands.
UUU command format as
PROTOCOL: CMD
The below is example to boot uboot for imx6 and imx7.
uuu_version 1.0.1
SDP: dcd -f u-boot.imx
SDP: write -f u-boot.imx -ivt 0
SDP: jump -f u-boot.imx -ivt 0
Variable Description
fastboot_dev fastboot flash device, support mmc and sata
fastboot_buffer fastboot download buffer adddress
fastboot_bytes fastboot download file size
emmc_dev eMMC device number
sd_dev sd slot device number
License
uuu is licensed under the BSD license. See LICENSE. The BSD licensed prebuilt Windows binary version of uuu is statically
linked with the LGPL libusb library, which remains LGPL.
(1) prefer enable fastboot. If ROM HID support write additional image to DDR place, you can write kernel\dtb\initramfs to ddr
before jump to uboot. Enable fastboot give more flexibility to change kernel command line.
windows
linux
Enjoy auto [tab] command complete by put below script into /etc/bash_completion.d/uuu
_uuu_autocomplete()
{
COMPREPLY=($(/home/lizhi/source/mfgtools/uuu/uuu $1 $2 $3))
}
complete -o nospace -F _uuu_autocomplete uuu
L4.9.123_2.3.0_8MM GA
It is first official BSP release to support uuu For L4.9.123_2.3.0_8MM GA with i.MX8M Mini, see [?]
Syntactic
uuu -udev linux: show udev rule to avoid sudo each time
uuu -lsusb List connected know devices
uuu -h -H show help, -H means detail helps
Notes: Some board supports super speed (USB3.0). USB 3.0 port path is difference USB 2.0. If use -m to filter port, you need
UUU (Universal Update Utility) 5 / 26
add USB 3.0 port number otherwise fastboot will not be detected.
Usage Example
Basic
uuu uboot.imx
uuu flash.bin
uuu L4.9.123_2.3.0_8mm-ga.zip
Built-in script
Notes:
Some boards have many sd slot. built-in script only work uboot environment ${ ←-
sd_dev} point to slot
Some boards have not emmc chip, emmc build in script does not work for such boards
UUU (Universal Update Utility) 6 / 26
uuu -d -m 1:1 -m 2:1 boardA_uuu.auto monitor port 1:1 and 2:1 for ←-
boardsA.
uuu -d -m 1:3 -m 4:1 boardB_uuu.auto monitor port 1:3 and 4:1 for ←-
boardsB.
Note: please avoid monitor the same port by difference uuu instance, which cause unexpected result.
Notes: Linux/Mac user need add \ before $ to avoid shell replace environment variable.
Extended environment for fastboot
fastboot_buffer Image download address
fastboot_bytes reflect previous download image byte size
Sample scripts
Supported protocol
Supported command:
For boot images not including a DCD table the same image used for SDCard/eMMC boot can be used with UUU tool.
For boot images including a DCD table, the DCD is loaded in OCRAM and must be properly signed.
Since U-Boot v2017.01 a build log containing the U-Boot and DCD addresses and lengths is available just after building U-Boot:
$ cat u-boot-dtb.imx.log
Image Type: Freescale IMX Boot Image
Image Ver: 2 (i.MX53/6/7 compatible)
Mode: DCD
Data Size: 602112 Bytes = 588.00 KiB = 0.57 MiB
Load Address: 877ff420
Entry Point: 87800000
HAB Blocks: 877ff400 00000000 0008ec00
DCD Blocks: 00910000 0000002c 000001c4
Users can copy the information above to create their CSF Authenticate Data command:
Block = 0x877ff400 0x00000000 0x0006DC00 "u-boot-dtb.imx", \
0x00910000 0x0000002c 0x000001c4 "u-boot-dtb.imx"
Alternatively users can also extract the DCD length from the DCD table header:
$ od -x -j 0x2c -N 4 --endian=big u-boot-dtb.imx
0000054 d201 c440
0000060
DCD Header: 0xd2, DCD Length: 0x01c4, DCD Version: 0x40
For the i.MX devices not supporting the skip DCD command (i.MX6Dual/Quad and i.MX6Sololite) the pointer to the DCD table
is cleared in the IVT in order to prevent the HAB library from processing the DCD table again during the authentication process.
There is no need to re-initialize memory when it already contains valid data.
Since the IVT is modified when downloading to the target the binary must be signed with a cleared DCD pointer. However, the
binary must be provided with a valid DCD pointer to allow the UUU tool to locate the DCD table.
The following script can be used to used to handle the DCD pointer:
#!/bin/bash
# DCD address must be cleared for signature, as UUU will clear it.
if [ "$1" == "clear_dcd_addr" ]; then
# store the DCD address
dd if=$2 of=dcd_addr.bin bs=1 count=4 skip=12
# generate a NULL address for the DCD
dd if=/dev/zero of=zero.bin bs=1 count=4
# replace the DCD address with the NULL address
dd if=zero.bin of=$2 seek=12 bs=1 conv=notrunc
fi
# DCD address must be set for mfgtool to localize the DCD table.
if [ "$1" == "set_dcd_addr" ]; then
# restore the DCD address with the original address dd
if=dcd_addr.bin of=$2 seek=12 bs=1 conv=notrunc
rm zero.bin
fi
For the i.MX devices supporting the skip DCD command (i.MX7D, i.MX6UL/ULL, i.MX8MQ and i.MX7ULP), there is no
need to do any modification, UUU tool can download the binary directly.
NOTICE: For i.MX7D only, due to an erratum, the UUU download DCD address (0x00911000) is not aligned with the DCD
address in u-boot (0x00910000), there are two options:
• use the command to specify the DCD address, uuu boot -f u-boot-signed.imx -dcdaddr 0x00911000
• change the csf DCD address when signing the u-boot: Blocks = 0x00911000 0x0000002c 0x000001c4 "u-boot-dtb.imx
Uboot implemented i.MX 6/7 ROM SDP protocol. The support command the same as SDP.
SDPV is upgrade version of SDPU, which support -skipspl option for write command
See below for uboot requirement uboot-config-requirement
Support command:
getvar
ucmd <any uboot command>
acmd <any never returned uboot command, like booti, reboot>
**Some Uboot command need long time to finish. Default FB timeout is 2s. You can use below method to change timeout value
# time out set to 10000ms
FB[-t 10000]: ucmd <any uboot command>
Variable Description
fastboot_dev fastboot flash device, support mmc and sata
fastboot_buffer fastboot download buffer adddress
fastboot_bytes fastboot download file size
emmc_dev eMMC device number
sd_dev sd slot device number
UUU (Universal Update Utility) 10 / 26
Support command:
Linux environment:
Each command in separate process so environment can not be affect next command. Use below method to workaround this
problem.
FBK: ucmd source /tmp/mtd.sh; flash_erase /dev/mtd${nandrootfs} 0 0
Command Description
Done last command for finish whole flow.
Delay Busy wait for millisecond
SH/SHELL run external command
< stdout as command, such as "< echo ucmd print", which
generally used for burn serial number
**Most case user can use uboot fastboot protocol to finish image program work.
In case you have to load kernel to burn whole image.
The below simple map ucl2.xml to uuu script.
ucl2.xml uuu
<CMD state="BootStrap" type="boot" body="BootStrap" SDPS: boot -f flash.bin
file ="firmware/flash.bin" ifdev="MX8QXPB0">Loading
boot image</CMD>
UUU (Universal Update Utility) 11 / 26
<!-- burn dtb -→ <CMD state="Updater" type="push" FBK: ucp fsl-imx8qxp.dtb /tmp
body="send" file="files/fsl-imx8qxp.dtb"
ifdev="MX8QXP MX8QXPB0">Sending Device Tree
file</CMD>
<CMD state="Updater" type="push" body="$ cp $FILE FBK: ucmd cp /tmp/fsl-imx8qxp.dtb /mnt/mmcblk0p1/
/mnt/mmcblk0p1/fsl-imx8qm.dtb" ifdev="MX8QM">write
device tree to sd card</CMD>
<CMD state="Updater" type="push" body="$ umount FBK: ucmd umount /mnt/mmcblk0p1
/mnt/mmcblk0p1">Unmounting vfat partition</CMD>
<!-- burn rootfs -→ <CMD state="Updater" type="push" FBK: ucmd mkfs.ext3 -F -j /dev/mmcblk0p2
body="$ mkfs.ext3 -F -j /dev/mmcblk0p2">Formatting
rootfs partition</CMD>
<!-- burn rootfs -→ <CMD state="Updater" type="push" FBK: ucmd mkfs.ext3 -F -j /dev/mmcblk0p2
body="$ mkfs.ext3 -F -j /dev/mmcblk0p2">Formatting
rootfs partition</CMD>
<CMD state="Updater" type="push" body="$ mkdir -p FBK: ucmd mkdir -p /mnt/mmcblk0p2
/mnt/mmcblk0p2"/>
<CMD state="Updater" type="push" body="$ mount -t FBK: ucmd mount -t ext3 /dev/mmcblk0p2
ext3 /dev/mmcblk0p2 /mnt/mmcblk0p2"/> /mnt/mmcblk0p2
<CMD state="Updater" type="push" body="pipe tar -jxv FBK: acmd tar -jxv -C /mnt/mmcblk0p2
-C /mnt/mmcblk0p2" file="files/rootfs.tar.bz2">Sending FBK: ucp rootfs.tar.bz2 t:-
and writting rootfs</CMD>
<CMD state="Updater" type="push" body="frf">Finishing FBK: sync
rootfs write</CMD>
<CMD state="Updater" type="push" body="$ umount FBK: ucmd umount /mnt/mmcblk0p2
/mnt/mmcblk0p2">Unmounting rootfs partition</CMD>
<CMD state="Updater" type="push" body="$ echo Update done
Complete!">Done</CMD>
Win7 user may face some additional one time setup work because original win7 missed a updated .inf file
Back Ground
Win7 ships with correct winusb.sys file. but is missing an updated .inf that associates with "usb\ms_comp_winusb" devices.
Normally if the USB device supports Microsoft OS descriptors, then it will allow Windows to automatically install the WinUSB
driver. This mechanism is supported "in-box" for Win8 and newer. For Win7 the mechanism is supported through Windows
update. Depending on the update policy for the Win7 machine, the appropriate driver may or may not be already available on the
machine. If it is not already on the machine, user can use the following manual procedure to install the driver if necessary. (copy
from https://www.silabs.com/community/interface/knowledge-base.entry.html/2017/02/06/manually_installwin-A2Jj")
Some windows update also included updated .inf file. You can try run uuu to see what happen. If windows report "can’t install
driver", that means your system missed such update file.
• Download package
• unzip
• run install.bat as administrator permission.
UUU (Universal Update Utility) 13 / 26
Notes:
4.9.123 8MM GA and 4.14 beta release missed a patch. Please apply below patch in uboot
Please make sure you success download uboot and uboot auto launch fastboot command. windows find Usb download device,
NOT SE Blank
If still fail install winusb driver you can try below method. you can try download zadig from https://zadig.akeo.ie/
Choose USB download device and click install.
UUU (Universal Update Utility) 14 / 26
If you already apply patch and still see WCID is red "x", please submit issue.
Notes:
"SE Blank xx" is ROM HID device. PLEASE DON’T CHOOSE IT TO WINUSB. libusb can work well with HID device. Only
"Usb download device" need check
FAQ
>/home/xxx
A.zip/uuu.auto
for example:
uuu A.zip/uuu.auto
for example
id = usb_string_id(c->cdev);
If use bz2 or zip file, it is possible out of memory. Please increase swap partition size in linux. increase virtual memory size in
windows.
Build Steps
windows
linux
• cd mfgtools
• sudo apt-get install libusb-1.0.0-dev libzip-dev libbz2-dev
• cmake .
• make
To talk with uuu, uboot need enable fastboot. fastboot need auto run when detect boot from USB.
CONFIG_CMD_FASTBOOT=y
CONFIG_USB_FUNCTION_FASTBOOT=y
CONFIG_USB_GADGET=y
CONFIG_USB_GADGET_DOWNLOAD=y
CONFIG_USB_GADGET_MANUFACTURER="FSL"
CONFIG_USB_GADGET_VENDOR_NUM=0x0525
CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
CONFIG_CI_UDC=y # UDC need change according system, ←-
some system use CONFIG_USB_DWC3, some use CONFIG_USB_CDNS3
CONFIG_FSL_FASTBOOT=y
CONFIG_FASTBOOT=y
CONFIG_FASTBOOT_BUF_ADDR=0x83800000 # Address need change according ←-
system, generally it can be the same as ${LOADADDR}
CONFIG_FASTBOOT_BUF_SIZE=0x40000000
CONFIG_FASTBOOT_FLASH=y
CONFIG_FASTBOOT_FLASH_MMC_DEV=1
CONFIG_EFI_PARTITION=y
CONFIG_ANDROID_BOOT_IMAGE=y
Device Drivers
USB support
USB gadget support (very last entry)
USB Gadget Drivers (...)
USB functions configurable through configfs
Mass storage
Function filesystem (functionFS)
Release Notes
1.4.193
New features
Bug fixes
• Fixed missed true at else branch at built-in fat_write script and nand_burn_loader
UUU (Universal Update Utility) 21 / 26
1.4.165
New features
• Burn wic file(after 2021 Q4 yocto image) directly. uuu -b emmc_all wic
• Add upload fastboot command support
• Support uboot that use plugin initialize ddr
• Support simple logical check in uuu script
Bug fixes
• fix buildin script bz2 have not replaced with bz2\* if path included space
• fixed #284: deadloop when using built-in script with filename include _
• Fix a potential crash if open usb device 400ms after detect attached
• fix uuu return success even ucp failure
1.4.139
New features
• Add help option -IgSerNum to set windows registry to ignore serial number above too much entry in register when burn many
boards.
• Add snap support
• Add 8ulp support
• Deploy mac image
Bug fixes
• Fixed missed last chunk when meet specific android sparse file
• return out of memory when allocate failure
• -bshow don’t show uuu version information and recover cursor ESC
1.4.72
New features
Bug fixes
• Fix the dead loop when flash specific android super.img. There are bug when split big super.img into small sparse file running
time. The bug trigger if split point at whole sparse chuck.
1.4.43
New features
Bug fixes
1.3.191
New features
Bug fixes
• Workaround problem: some data pattern cause timeout at dell docker hub.
• update 7D free memory address, errata e11166 https://www.nxp.com/docs/en/errata/IMX7DS_3N09P.pdf
• Fix can’t build from source tarball.
1.3.154
New features
Bug fixes
1.3.134
Bug fixes
1.3.130
New features
Bug fixes
1.3.102
New features
Bug fixes
• fixed #136 fix decompress failure if use uncompressed method in zip file.
• fixed something wait forever when download bz2 from http
• fix http request failure at some host (use \r\n at http request)
UUU (Universal Update Utility) 24 / 26
1.3.82
New features
• Add -lsusb option to list all connected known devices to help find usb path when do multi boards support
Bug fixes
1.2.135
New features
• Support i.MX28
• Add Read\write a memory address for i.MX6/i.MX7
• built-in script emmc support burn difference files
• Support i.MX815
Bug fixes
1.2.91
New features
• Support file path include space. need add "" at file path
• Windows version built-in libusb
• New SDPV support to support -skipsql for uboot, which support auto scan uboot position.
Bug fixes
1.2.0
New features
Bug fixes
1.1.81
New features
Bug fixes
1.1.41
New features
Bug fixes
Known issue
• Some old i.MX8MM board HID can’t work in linux system. Need apply ROM patch to fix. Please contact FAE.
• QXP/QM NAND image can’t download by UUU because alignment requirement is difference
• Bz2 file only support one that is generated by pbbz2. there are problem if use bzip2 generate bz2.
• i.MX815 only support 3 boards at the same time.
• Some typeC dell dock USB hub cause transfer timeout if meet some magic data pattern, see branch magic_pattern. Try use
differece hub or direct connect to PC usb port if this happen.