RAUC Bundle Installation¶
Overview¶
Starting with CCLinux OS 4.x, CODESYS Runtime packages are distributed as RAUC (Robust Auto-Update Controller) bundles. RAUC provides atomic, fail-safe updates with cryptographic verification and rollback capability.
What are RAUC Bundles?¶
RAUC bundles are signed, compressed update packages that contain:
Application filesystem (
appfs.ext4): CODESYS runtime binaries, libraries, and dependenciesRoot filesystem (optional): Base operating system updates from CCLinux OS
Manifest (
manifest.raucm): Metadata, slot configuration, and digital signaturesConfiguration files: Required for post-installation setup
Custom handlers: Scripts that run during installation for device-specific configuration
Security Features¶
dm-verity: Read-only filesystem verification ensures integrity
Cryptographic signatures: Bundles are signed with CrossControl development keys
Atomic updates: Installation either completes fully or rolls back on failure
Slot system: A/B partition scheme allows safe updates without downtime
Installation¶
Prerequisites¶
CCpilot device running CCLinux OS 4.2.0 or later
RAUC installed and configured (included in CCLinux OS)
Network or USB access to transfer the bundle
Sufficient free space in the target slot
Installing a Bundle¶
Transfer the bundle to the device:
scp codesys-ccl4_visu_V3.5.21.20-10_v1x00.raucb ccs@<device-ip>:/data/home/ccs/
Install using RAUC:
rauc install /data/home/ccs/codesys-ccl4_visu_V3.5.21.20-10_v1x00.raucb
Reboot to activate the new slot (if required):
reboot
Installation Process¶
When you install a RAUC bundle, the following happens automatically:
Signature verification: RAUC verifies the bundle is signed by a trusted key
Bundle extraction: The bundle is mounted and contents are extracted
Filesystem updates: Application filesystem is written to the inactive slot
Custom handler execution:
hook.shruns to configure the system:Creates CODESYS configuration directories
Copies
CODESYSControl.cfgto user configuration locationSets up CodeMeter licensing directories and permissions
Configures CodeMeter server settings
Creates package marker file for tracking installed version
Triggers USB device updates for CodeMeter dongles
Slot activation: The newly updated slot is marked as bootable
Reboot (manual or automatic): System boots into the updated partition
Post-Installation¶
After installation and reboot:
CODESYS runtime is automatically started via systemd services
CodeMeter licensing service is configured and running
Application is accessible via network (default port 1217 for CODESYS, 8080 for WebVisu)
Check service status:
systemctl status codesys.service
systemctl status codemeter.service
View CODESYS logs:
journalctl -u codesys.service -f
Bundle Variants¶
Four variants are available for each device type:
| Variant | Description | Includes Visu | Includes WebVisu |
|---|---|---|---|
| novisu | Runtime only | ❌ | ❌ |
| visu | Local visualization | ✅ | ❌ |
| webvisu | Web visualization | ❌ | ✅ |
| visuwebvisu | Both visualizations | ✅ | ✅ |
Choose the variant that matches your CODESYS license and application requirements.
Device Types¶
RAUC bundles are device-specific. Supported devices:
v700: CCpilot V700
vx10: CCpilot V510, V705, V710
v1x00: CCpilot V1000, V1200
v1x90: CCpilot V1090, V1290
Always use the bundle matching your device type (indicated in the filename).
Troubleshooting¶
Installation Fails¶
If installation fails, check the system logs:
journalctl -u rauc -f
Common issues:
Signature verification failed: Bundle may be corrupted or unsigned
Insufficient space: Check available space in target partition
Handler script failed: Check
/var/log/syslogfor custom handler errors
Rollback¶
If the new installation doesn’t boot correctly, RAUC automatically rolls back to the previous working slot after 3 failed boot attempts.
Manual rollback to previous slot:
rauc status # Check which slot is active
# To manually boot to other slot
rauc status mark-active [booted | other]
reboot
Checking Installation Status¶
View current slot and bundle information:
rauc status
Check installed package version:
ls -la /data/home/ccs/packages/
CodeMeter License Issues¶
If CodeMeter is not working after installation:
Check CodeMeter service:
systemctl status codemeter.service journalctl -u codemeter.service
Verify license files:
ls -la /data/home/ccs/CODESYS/.SoftContainer_CmRuntime.wbb ls -la /data/home/ccs/CodeMeter/var/lib/CodeMeter/Backup/Server.ini
Manually trigger USB detection:
udevadm trigger --subsystem-match=usb --attr-match=idVendor=064f
Restart CodeMeter:
systemctl restart codemeter.service
Advanced: Bundle Contents¶
To inspect a RAUC bundle without installing:
# Extract bundle (requires squashfs-tools)
unsquashfs codesys-ccl4_visu_V3.5.21.20-10_v1x00.raucb
# View contents
ls -la squashfs-root/
# Read manifest
cat squashfs-root/manifest.raucm
Bundle structure:
squashfs-root/
├── manifest.raucm # Bundle manifest
├── appfs.ext4 # Application filesystem image
├── ccpilot-v1x00-release-v1x00.ext4 # Root filesystem (from CCLinux)
├── hook.sh # Post-install script
├── CODESYSControl.cfg # CODESYS configuration
├── codesys-launch.sh # Launch script
├── Server.ini # CodeMeter configuration
├── .SoftContainer_CmRuntime.wbb # CodeMeter license (optional)
└── .UFC_SoftContainer_CmRuntime.WibuCmLif # CodeMeter license (optional)