Installing MCUXpresso Installer in DevContainer

Setting up the correct tools for a development environment can be complex and time consuming. I’m using DevContainers with Docker for almost all of my projects. Because that way I get an isolated development environment. For this I spend time to craft dedicated docker files, to have everything installed correctly with the the right versions.

Outside a docker or DevContainer environment, I’m using the NXP MCUXpresso installer. It is a standalone application which can be used from VS Code to check and install all the necessary tools.

MCUXpresso Installer
MCUXpresso Installer

In this article, I show how to have the NXP MCUXpresso Installer installed in a DevContainer so it can be used with VS Code.

Outline

The MCUXpresso Installer is a standalone tool from NXP. With it I can install the necessary tools and environment for example for Zephyr or MCUXpresso SDK development. It is a very useful tool, because that way I can keep the tools in sync. Plus it checks for the latest available versions and update tools if I want to. It comes both as GUI and CLI version.

In a Docker or DevContainer environment that installer is usually not needed, because I install everything with the docker commands.

The Installer can be launched from the MCUXpresso for VS Code extension:

If not installed, the extension will check it and proposes to download and install it:

MCUXpresso Installer is not installed
MCUXpresso Installer is not installed

To avoid that extra step, I want to install it in the docker image.

DockerFile

In this example, I’m using Ubuntu:

FROM mcr.microsoft.com/devcontainers/cpp:dev-ubuntu24.04

In my docker files I have a ‘apps’ folder for downloading and installing files:

# folder for downloaded files
WORKDIR /apps
RUN mkdir -p /apps

Downloading and installing Debian file

The script below downloads and installs the installer. The docker script runs as root, but I want the Installer installed for the user ‘vscode’. That user is used by my VS Code.

# Download and install MCUXpresso Installer
# INFO: Installation directory: /home/vscode/MCUXpressoInstaller
# INFO: To start the installer, run /home/vscode/MCUXpressoInstaller/MCUXpressoInstaller
RUN \
cd /apps \
&& wget https://www.nxp.com/lgfiles/updates/mcuxpresso/MCUXpressoInstaller.deb.bin \
&& chmod a+x MCUXpressoInstaller.deb.bin \
&& mkdir -p /home/vscode/.local/share/applications
# Install as vscode user
USER vscode
RUN sudo /apps/MCUXpressoInstaller.deb.bin
# Back to root
USER root

GUI Libraries

To run the installer with a GUI in my docker/WSL environment, I have to install a few more libraries:

# Install needed libraries to run the MCUXpresso Installer GUI
# NOTE that while this will run the GUI in the container
RUN \
sudo apt-get update \
&& sudo apt-get install -y \
libnss3 libatk1.0-0 libatk-bridge2.0-0 libatspi2.0-0 \
libdrm2 libgbm1 libxkbcommon0 \
libgtk-3-0 libgdk-pixbuf-2.0-0 \
libcairo2 libcairo-gobject2 \
libpango-1.0-0 libpangocairo-1.0-0 libharfbuzz0b libglib2.0-0 \
libx11-6 libxcomposite1 libxcursor1 libxdamage1 libxext6 \
libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 \
libx11-xcb1 libxcb1 libxcb-dri3-0 libasound2t64\
libfontconfig1 fonts-liberation \
libcups2 libdbus-1-3 libexpat1 libssl3

GUI Version

With this, I can use the Installer inside the DevContainer. And I can launch it from VS Code in the DevContainer:

MCUXpresso Installer running in WSL

CLI Version

There is a CLI/Command Line version of the Installer too. Using it in WSL is a bit tricky, as I have to disable access to the dbus. I run it for example with

unset DBUS_SESSION_BUS_ADDRESS
dbus-run-session -- ./MCUXpressoInstallerCLI list --all
Running CLI Installer inside DevContainer/WSL

Summary

WSL is not officially supported by NXP for the MCUXpresso Installer. With the above Docker script, I can install and run it inside Docker/DevContainer/WSL. The idea is not to use it for installation of tools. The idea is to have a similar developer experience as natively on the host. I can run it as a GUI or CLI version. Having the installer present in the DevContainer is not absolutely needed, but a nice addition to the developer experience.

Happy installing 🙂

Links

What do you think?

This site uses Akismet to reduce spam. Learn how your comment data is processed.