This project was written in July of 2023 with BCU version 1.1.68 as the latest stable release, but should continue to be applicable to newer releases
What is BCU?- BCU is an acronym for Board remote Control Utilities
- BCU is the official power measurement tool for NXP i.MX processors
- BCU provides power measurement capability
- BCU also provides remote control capability such as: board reset and boot mode control
- BCU supports Linux, Windows, and MacOS
- All source code is provided on GitHub and is licensed under the BSD 3-Clause
- BCU communicates with the i.MX SoC using a USB interface
- The project is nxp-imx/bcu "Board Remote Control Utilities"
- Releases - Download binaries and source code for the release and pre-release versions
- Each release includes PDF documentation such as the PDF for v1.1.68
- Each release also includes source code and compiled executable applications for Linux (Ubuntu 18 and 20 are offered), Windows, and MacOS
- Wiki - Documentation. This is a placeholder today but perhaps in the future there will be some useful information
- The Ubuntu 18 version will only run on Ubuntu 18
- The Ubuntu 20 version will run on Ubuntu 20 and later versions of Ubuntu
- The binaries may not run on other distributions
BCU is designed to work with NXP official EVKs (Evaluation Kits)
As of 2023 June, there is support for EVKs using the following NXP devices
- i.MX 93
- i.MX 8ULP
- i.MX 8M Plus
- i.MX 8X Lite
- 2023-06-06 bcu_1.1.68 Release
- 2022-04-20 bcu_1.1.52 Release
Note: The serial download USB interface 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 external USB hubs and be aware that some computers use internal USB hubs
If you are running Ubuntu 18 or newer, then the instructions on the GitHub README.md should work for you
The instructions specify libraries needed to run BCU
They also provide instructions to avoid having to run BCU as root
Note: The process of adding rules for the FTDI interface in the interest of avoiding calling BCU with sudo were only mildly successful for me. I ended up needing to use sudo anyways for BCU commands to be completely successful
Then download either the Ubuntu 18 or Ubuntu 20+ binary release from the releases section of the GitHub project
Installing BCU in Linux the hard wayIf you aren't running Ubuntu, then you may have to build the project from source. I am running Debian 12 Bookworm which is extremely similar to Ubuntu, but the Ubuntu binaries did not work on my system.
NXP provides build instructions in the BCU.pdf document provided with every release: Section 5 "Build Steps", sub-section 5.2 "Linux Version"
If the instructions I am providing in this project do not work for you, please consider the amount of time that has passed since when I wrote these instructions because it is possible that the BCU build process will require different packages, so if things don't build, please check the documentation to see if any package names have changed.
Note: The process of adding rules for the FTDI interface in the interest of avoiding calling BCU with sudo were only mildly successful for me. I ended up needing to use sudo anyways for BCU commands to be completely successful.
Automated build scriptIn the attachment section of this Hackster project you will find a shell script that will automate the process of preparing a Linux system to download, build, install, and prepare to run BCU.
Please note that my instructions are written for Linux distributions that use the APT package manager (Any disto related to Debian, Ubuntu, or Mint)
First, download the shell script nxp-bcu.sh to your computer
Then execute these two commands from the command line in the directory where you downloaded the shell script
$ chmod +x nxp-bcu.sh
$ ./nxp-bcu.sh
Manual build processInstall required packages
$ sudo apt update && sudo apt install libftdi1-2 libyaml-dev openssl \
libssl-dev libconfuse-dev libftdi1-dev libyaml-dev \
openssl pkgconf libncurses5-dev libssl-dev \
libconfuse-dev git make cmake
Note: Ubuntu distro's may also require installing lsb_release
$ sudo apt install lsb_release
Clone the project and check out the specific release tag
$ git clone https://github.com/NXPmicro/bcu.git
$ cd bcu
$ git checkout tags/bcu_1.1.68
Download the required submodules and then make
$ git submodule update --init
$ cmake .
$ make
Remove old versions of BCU from the system (if they exist)
$ sudo rm -f /usr/local/sbin/bcu
$ sudo rm -f /usr/local/bin/bcu
Install BCU so that both root and users can access it
$ sudo cp "bcu" /usr/local/bin/bcu
$ sudo ln -s /usr/local/bin/bcu /usr/local/sbin/bcu
To avoid running BCU as root in Linux we will set rules for the system to follow
Use your favorite editor to create and edit the file
$ sudo vi /etc/udev/rules.d/xx-ftdi.rules
Copy and paste this line into the terminal
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6011", GROUP="dialout", MODE="0660"
The endPlease let me know in the comments if these instructions were useful for you.
If you run into any issues, please share what happened so I can update my instructions.
Comments