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 dependencies

  • Root filesystem (optional): Base operating system updates from CCLinux OS

  • Manifest (manifest.raucm): Metadata, slot configuration, and digital signatures

  • Configuration 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

  1. Transfer the bundle to the device:

    scp codesys-ccl4_visu_V3.5.21.20-10_v1x00.raucb ccs@<device-ip>:/data/home/ccs/
    
  2. Install using RAUC:

    rauc install /data/home/ccs/codesys-ccl4_visu_V3.5.21.20-10_v1x00.raucb
    
  3. Reboot to activate the new slot (if required):

    reboot
    

Installation Process

When you install a RAUC bundle, the following happens automatically:

  1. Signature verification: RAUC verifies the bundle is signed by a trusted key

  2. Bundle extraction: The bundle is mounted and contents are extracted

  3. Filesystem updates: Application filesystem is written to the inactive slot

  4. Custom handler execution: hook.sh runs to configure the system:

    • Creates CODESYS configuration directories

    • Copies CODESYSControl.cfg to user configuration location

    • Sets 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

  5. Slot activation: The newly updated slot is marked as bootable

  6. 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/syslog for 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:

  1. Check CodeMeter service:

    systemctl status codemeter.service
    journalctl -u codemeter.service
    
  2. Verify license files:

    ls -la /data/home/ccs/CODESYS/.SoftContainer_CmRuntime.wbb
    ls -la /data/home/ccs/CodeMeter/var/lib/CodeMeter/Backup/Server.ini
    
  3. Manually trigger USB detection:

    udevadm trigger --subsystem-match=usb --attr-match=idVendor=064f
    
  4. 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)

See Also