Starter Package
The Starter Package is the prebuilt OpenSTLinux image plus the tools to flash it. It gets a board running without building anything from source — the fastest way to confirm the hardware works before committing to a Developer or Distribution Package workflow.
Notes below target the STM32MP135F-DK with STM32MP1-Ecosystem-v5.0.0.
Host requirements
ST officially supports Ubuntu 18.04 and 20.04 for the toolchain. Ubuntu 22.04 works in practice for the Starter Package flow.
Cables
| Purpose | Cable |
|---|---|
| Power | USB Type-C to USB Type-C |
| ST-LINK/V3E debug and console | Micro USB Type-B to USB Type-A |
| USB OTG (flashing) | USB Type-C to USB Type-A |
| SSH / networking | Ethernet |
The board's Ethernet does not support Auto-MDIX, so a crossover path may be needed when connecting directly to a host NIC rather than through a switch.
Software component versions
The v5.0.0 ecosystem bundles:
| Component | Version |
|---|---|
| STM32CubeProgrammer | v2.14.0 |
| Linux kernel | v6.1-stm32mp-r1 (v6.1.28) |
| U-Boot | v2022.10-stm32mp-r1 |
| TF-A | v2.8-stm32mp-r1 |
| OP-TEE | 3.19.0-stm32mp-r1 |
| STM32CubeMP1 Package | v1.6.0 |
| OpenEmbedded | v4.2.1 (Mickledore) |
These versions travel together. Mixing a kernel or U-Boot from a different ecosystem release against this TF-A/OP-TEE is the usual cause of a board that flashes but does not boot — see Boot chain for why each stage depends on the previous one.
Install STM32CubeProgrammer
mkdir -p "$HOME/STM32MPU_workspace" && cd "$HOME/STM32MPU_workspace"
# Confirm the host can reach the internet before downloading
wget -q www.google.com && echo "Internet access OK" \
|| echo "No internet access. You may need to set up a proxy."
export STM32CP_VER=2.14.0
mkdir -p "$HOME/STM32MPU_workspace/tmp"
cd "$HOME/STM32MPU_workspace/tmp"
unzip en.stm32cubeprg-lin-v2-14-0.zip
./SetupSTM32CubeProgrammer-$STM32CP_VER.linux
export PATH="$HOME/STMicroelectronics/STM32Cube/STM32CubeProgrammer/bin:$PATH"
STM32_Programmer_CLI --h
USB access on Linux
CubeProgrammer talks to the board over USB with low-level commands, which need libusb and the udev rules it ships:
sudo apt-get install libusb-1.0-0
cd "$HOME/STMicroelectronics/STM32Cube/STM32CubeProgrammer/Drivers/rules"
sudo cp *.* /etc/udev/rules.d/
Without the udev rules, CubeProgrammer only sees the device as root. Copying them and replugging the board is what lets a normal user flash it.
Download the Starter Package image
export STM32ECO_VER=5.0.0
mkdir -p "$HOME/STM32MPU_workspace/STM32MP1-Ecosystem-v$STM32ECO_VER/Starter-Package"
cd "$HOME/STM32MPU_workspace/STM32MP1-Ecosystem-v$STM32ECO_VER/Starter-Package"
# Download en.flash-stm32mp1-openstlinux-6-1-yocto-mickledore-mp1-v23-06-21.tar.gz
# into this directory, then unpack it to get the per-partition binaries and the
# Flash layout files.
tar xvf en.flash-stm32mp1-openstlinux-6-1-yocto-mickledore-mp1-v23-06-21.tar.gz
Flash the SD card
Put the board into USB (DFU) boot mode, then drive it from CubeProgrammer.
- Set the boot switches to the "no boot / USB" position: raise switches 1–4
toward the numbers, then press 1–4 toward
OPEN. - Connect the host to the board's CN7/USB_OTG port with the Type-A to Type-C cable.
- Power on, then press the reset button.
- Launch STM32CubeProgrammer.
- Top right, change the connection type from
STLINKtoUSB, clickRefresh— the serial number appears if the board is detected — thenConnect. Open Filetab, choose the flash layoutFlashLayout_sdcard_stm32mp135x-dk-optee.tsvunder.../Starter-Package/stm32mp1-openstlinux-.../images/stm32mp1/flashlayout_st-image-weston/optee.- Set
Binaries Pathto the.../images/stm32mp1folder, for example/home/dev/STM32MPU_workspace/STM32MP1-Ecosystem-v5.0.0/Starter-Package/stm32mp1-openstlinux-6.1-yocto-mickledore-mp1-v23.06.21/images/stm32mp1. - Click
Download. Flashing takes about four minutes.
The .tsv flash layout is what maps each binary to its partition; the
Binaries Path is where CubeProgrammer looks up the files the layout names. A
path pointing one directory too high is the usual "file not found" during
download. The columns of that .tsv are documented in
Yocto classes.
Boot the board from the SD card
Set the boot switches to boot from SD:
- Raise switches 2 and 4 toward the numbers.
- Drop switches 1 and 3 toward the numbers.
Serial console
The ST-LINK/V3E exposes a UART as a ttyACM device on the host.
sudo apt-get install minicom -y
ls /dev/ttyACM* # find the instance, usually /dev/ttyACM0
minicom -D /dev/ttyACM0
Press reset; the boot log appears in the minicom window. Log in as root (no
password on the default image).
First commands
cat /etc/build # distribution build information
uname -a # kernel and machine
cat /proc/version # kernel and GCC versions
df -h # free space per mounted filesystem
ifconfig # find the Ethernet interface: eth0 or end0
ifconfig end0 192.168.50.20 # static IP when there is no DHCP server
ip addr show eth0 # the board's IP, for ssh
ssh [email protected] # from the host, once the cable is connected
The interface is named eth0 on some images and end0 on others (systemd
predictable naming). Check with ifconfig before configuring it — see
Networking for static and wireless setup.