Complete build test successful: - 4098/4098 tasks succeeded - TMPDIR on /srv/yocto/tmp (63GB volume) - EULA fix: ACCEPT_FSL_EULA = "1" in local.conf - Output: tq-image-small-debug + device trees - Build time: ~3.5 hours (2 parallel jobs, 8GB RAM)
TQMa6UL Yocto BSP – Mirror & Build Documentation
Project ID: TQMA6-YOCTO-2038 Date: 2026-03-01 Target Hardware: TQMa6UL-AB (i.MX6 UltraLite) on MBa6ULx Carrier Yocto Version: Scarthgap (5.0.11) LTS Objective: Create offline mirror for software approval, ensure 2038 compliance
Overview
This project addresses the requirement to migrate from legacy PTXdist-based BSP to Yocto Project for TQMa6UL hardware. The primary drivers are Year 2038 compliance for military/long-term deployments and support for Qt-based graphical applications.
2038 Problem Context
The Year 2038 Problem (Y2K38) affects 32-bit systems using signed 32-bit time_t:
- Maximum representable time: 03:14:07 UTC on 19 January 2038
- Systems will overflow and behave unpredictably after this date
- Critical for military/aerospace systems with 15+ year service life
Solution
Yocto Scarthgap (5.0 LTS) provides 2038 compliance with both C libraries:
- glibc 2.39: 64-bit
time_ton 32-bit ARM (default since glibc 2.34 in Yocto) - musl 1.2+: 64-bit
time_tunconditionally since 2020
Board Identification
| Field | Value |
|---|---|
| SoM | TQMa6UL (sticker: TQMA6U-AB) |
| SoC | NXP i.MX6 UltraLite (Cortex-A7, single core) |
| Carrier | MBa6ULx |
| Machine | tqma6ul-multi-mba6ulx |
| BSP Config | mainline (not imx!) |
⚠️ Critical: The TQMa6UL machines are only available in the
mainlineconfig template. Theimxconfig does NOT include this board.
Distro Selection
The BSP provides two main distribution families:
| Distro | C Library | Init | Qt | Use Case |
|---|---|---|---|---|
dumpling-wayland |
glibc | systemd | Qt6 ✅ | Recommended – full-featured, Qt/GUI support |
spaetzle |
musl | busybox | ❌ blocked | Minimal/headless only |
poky |
glibc | sysvinit | configurable | Yocto upstream default |
Recommendation: dumpling-wayland
Use dumpling-wayland if you need:
- Qt5/Qt6 graphical applications
- glibc compatibility for third-party software
- systemd, Wayland, WiFi, Bluetooth, OpenGL
- Full
tq-image-qt6support
Note:
spaetzleexplicitly blocks Qt images:SKIP_RECIPE[tq-image-qt6] = "not buildable with spaetzle"Qt5 is not included in the BSP layers. If needed, add
meta-qt5manually.
Both distros are 2038-safe
| Distro | C Library | time_t | 2038-safe? |
|---|---|---|---|
dumpling-wayland |
glibc 2.39 | 64-bit | ✅ |
spaetzle |
musl 1.2+ | 64-bit | ✅ |
Verified Build Configuration
Tested 2026-03-01 on Debian 13 (Python 3.13):
spaetzle (minimal, musl)
TARGET_SYS = arm-tq-linux-musleabi
MACHINE = tqma6ul-multi-mba6ulx
DISTRO = spaetzle
DISTRO_VERSION = 5.0.11
TUNE_FEATURES = arm vfp cortexa7 neon thumb callconvention-hard
dumpling-wayland (full, glibc) – recommended
# Setup with dumpling-wayland instead:
export ACCEPT_FSL_EULA=1
export MACHINE=tqma6ul-multi-mba6ulx
. ./setup-environment build_ut mainline
# Edit conf/local.conf:
# DISTRO = "dumpling-wayland"
# ACCEPT_FSL_EULA = "1"
Expected output:
TARGET_SYS = arm-tq-linux-gnueabi
DISTRO = dumpling-wayland
Quick Start
1. Prerequisites (Debian 13 / Ubuntu 22.04+)
sudo apt install -y \
git python3 jq bash grep gawk wget diffstat \
chrpath cpio texinfo gcc g++ make file tar \
bzip2 gzip xz-utils zstd lz4 patch perl \
python3-pexpect socat unzip rsync bc \
libsdl1.2-dev xterm
2. Clone & Setup
mkdir -p ~/UT && cd ~/UT
git clone --recurse-submodules https://github.com/tq-systems/ci-meta-tq.git
cd ci-meta-tq
export ACCEPT_FSL_EULA=1
export MACHINE=tqma6ul-multi-mba6ulx
. ./setup-environment build_ut mainline
echo 'ACCEPT_FSL_EULA = "1"' >> build_ut/conf/local.conf
# For Qt/GUI applications, switch to dumpling-wayland:
# echo 'DISTRO = "dumpling-wayland"' >> build_ut/conf/local.conf
3. Optional: Redirect Storage
mkdir -p ~/.yocto
cat > ~/.yocto/site.conf << 'EOF'
DL_DIR ?= "/srv/yocto/downloads"
SSTATE_DIR ?= "/srv/yocto/sstate-cache"
EOF
4. Fetch & Build
# Fetch all sources (for mirror creation)
bitbake tq-image-small-debug --runall=fetch
# Build
bitbake tq-image-small-debug
# Or with dumpling-wayland: build Qt6 image
# bitbake tq-image-qt6
Available Images
| Image | spaetzle | dumpling-wayland | Description |
|---|---|---|---|
tq-image-small |
✅ | ✅ | Minimal |
tq-image-small-debug |
✅ | ✅ | Minimal + debug |
tq-image-generic |
❌ | ✅ | Full-featured |
tq-image-weston |
❌ | ✅ | Wayland compositor |
tq-image-qt6 |
❌ | ✅ | Qt6 demo image |
core-image-minimal |
✅ | ✅ | Yocto bare minimum |
Documentation
| Document | Description |
|---|---|
| 2038 Compliance Analysis | Detailed 2038 risk assessment |
| Mirror Creation Guide | Step-by-step build instructions |
| License Summary | License overview and compliance |
| License Table (CSV) | For import into spreadsheets |
| Air-Gapped Deployment | Offline build setup |
Air-Gapped / Offline Deployment
# 1. On connected machine: fetch all sources
bitbake tq-image-qt6 --runall=fetch # or tq-image-small-debug
# 2. Package the mirror
tar czf yocto-mirror-tqma6ul.tar.gz -C /srv/yocto downloads/
# 3. On air-gapped machine: extract + configure
tar xzf yocto-mirror-tqma6ul.tar.gz -C /srv/yocto/
# Add to local.conf:
# SOURCE_MIRROR_URL = "file:///srv/yocto/downloads/"
# INHERIT += "own-mirrors"
# BB_NO_NETWORK = "1"
Softwarefreigabeantrag (PDF)
The complete approval document is available as PDF:
docs/softwarefreigabe.pdf (13 pages, LaTeX source: docs/softwarefreigabe.tex)
Contents: title page, build configuration, complete 264-package license table, proprietary component assessment, military use evaluation, compliance checklist.
Complete License & Source Table
The file docs/03-license-analysis/UT-license-table.csv
contains the complete inventory of all 264 source packages in the build graph,
extracted via bitbake -e with fully resolved download URLs.
| Metric | Value |
|---|---|
| Total packages | 264 |
| Download URLs resolved | 224 (85%) |
| Packages without URL | 40 (meta-packages, virtual providers) |
| Extraction method | bitbake -e <recipe> per package |
License Distribution
| License | Count | Military Use |
|---|---|---|
| MIT | 41 | Approved |
| GPL-2.0-only | 32 | Approved (source required) |
| GPL-2.0-or-later | 22 | Approved (source required) |
| BSD-3-Clause | 19 | Approved |
| GPL-3.0-or-later | 13 | Review (anti-tivoization) |
| GPL-3.0-only | 11 | Review (anti-tivoization) |
| Proprietary | 2 | Review required |
See docs/03-license-analysis/UT-license-table-excel.md for import instructions.
Known Issues
| Issue | Severity | Notes |
|---|---|---|
| Python 3.13 fork() warnings | Cosmetic | Does not affect build |
| Debian 13 not validated | Cosmetic | Build works correctly |
spaetzle blocks Qt/Weston images |
By design | Use dumpling-wayland |