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