A tool for writing system images to SD cards and USB memory sticks for Laerdal SimPad devices and SimMan3G simulators.
Based on Raspberry Pi Imager.
| Type | Extension | Description |
|---|---|---|
| WIC | .wic, .wic.xz, .wic.gz, .wic.bz2, .wic.zst |
Standard disk image - complete flash of storage device |
| VSI | .vsi |
Versioned Sparse Image - efficient delta updates |
| SPU | .spu |
Software Package Update - firmware files copied to mounted device |
- User Guide - How to use the application
- Schema Notes - JSON manifest format and validation
Download the latest release for your platform from the Releases page:
- Linux: AppImage (x86_64, aarch64) or Debian package
- Windows: ZIP archive or installer
- macOS: DMG (x86_64, arm64)
Install the build dependencies (Debian/Ubuntu):
sudo apt install --no-install-recommends build-essential cmake ninja-build git libgnutls28-devgit clone https://github.com/laerdal/simserver-imager
cd simserver-imagerInstall Qt using aqtinstall:
pip install aqtinstall
aqt install-qt linux desktop 6.8.2 -O ~/QtBuild the application:
cmake -B build -S src \
-G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DQt6_ROOT=~/Qt/6.8.2/gcc_64
cmake --build build --parallel./create-appimage.sh --qt-root=~/Qt/6.8.2/gcc_64- Install Qt 6.8 with MSVC 2022 64-bit toolchain
- Install Visual Studio 2022 with C++ workload
- For the installer, install Inno Setup
Using CMake:
cmake -B build -S src `
-DCMAKE_BUILD_TYPE=Release `
-DQt6_ROOT="C:\Qt\6.8.2\msvc2022_64"
cmake --build build --config Release --parallelDeploy Qt dependencies:
New-Item -ItemType Directory -Force -Path dist
Copy-Item build\Release\laerdal-simserver-imager.exe dist\
& "C:\Qt\6.8.2\msvc2022_64\bin\windeployqt.exe" --qmldir src --release dist\laerdal-simserver-imager.exe- Install Qt 6.8 or build from source using
./qt/build-qt-macos.sh - Xcode Command Line Tools
cmake -B build -S src \
-DCMAKE_BUILD_TYPE=Release \
-DQt6_ROOT=/opt/Qt/6.8.2/macos
cmake --build build --parallelCreate DMG:
cd build
macdeployqt laerdal-simserver-imager.app -qmldir=../src
hdiutil create -volname "Laerdal SimServer Imager" \
-srcfolder laerdal-simserver-imager.app \
-ov -format UDZO \
laerdal-simserver-imager.dmgFor headless/server environments, build without GUI:
cmake -B build -S src \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_CLI_ONLY=ON \
-DQt6_ROOT=~/Qt/6.8.2/gcc_64
cmake --build build --parallelThe scripts/upload-wic-to-cdn.sh script uploads images to Azure Blob Storage and generates the JSON manifest used by the application.
Features:
- Upload WIC, VSI, and SPU files to Azure CDN
- Generate RPI Imager-compatible JSON manifest
- Support for local folders, SSH remote sources, and JSON URLs
- Pattern matching for files and directories
- Append mode to merge with existing CDN manifest
- Skip existing blobs to avoid re-uploading
Prerequisites:
- Azure CLI (
az) with storage extension jqfor JSON processing- SSH access for remote sources
Basic usage:
# Upload from local folder
./scripts/upload-wic-to-cdn.sh /path/to/images
# Upload from remote build server
./scripts/upload-wic-to-cdn.sh user@buildserver:/opt/yocto/deploy/images
# Upload only SPU files, append to existing manifest
./scripts/upload-wic-to-cdn.sh --spu-only --append /path/to/updates
# Dry run to preview changes
./scripts/upload-wic-to-cdn.sh --dry-run /path/to/imagesEnvironment variables:
export AZURE_STORAGE_ACCOUNT="your-account"
export AZURE_STORAGE_KEY="your-key"
export AZURE_STORAGE_CONTAINER="software"
export CDN_BASE_URL="https://your-cdn.blob.core.windows.net"See ./scripts/upload-wic-to-cdn.sh --help for all options.
The app icon is stored as SVG at src/linux/icon/laerdal-simserver-imager.svg.
To regenerate platform-specific icons:
- Windows (.ico):
./src/windows/regenerate_icons_from_svg.sh(requires ImageMagick) - macOS (.icns):
./src/mac/regenerate_icons_from_svg.sh(requires ImageMagick, must run on macOS)
SPDX-License-Identifier: Apache-2.0
Copyright (C) 2025 Laerdal Medical
Based on Raspberry Pi Imager, Copyright (C) 2020-2024 Raspberry Pi Ltd