Skip to content

Firmware Update

Compatible with: LRS4000 multiScan100 multiScan200 picoScan100

The available update methods depend on the product family and firmware. multiScan100 firmware can be updated through SOPAS ET, Sentio Creator, the web UI (SOPASair), or supported REST endpoints. LRS4000 firmware can be updated through SOPAS ET or SICK AppManager. Check the product-specific release notes before updating.

Where to Get the Package

Download the package that matches your device and target version from the device's product page on sick.com under Downloads / Software.

For multiScan100, multiScan200, and picoScan100, Sentio Creator, which can also provide firmware packages as well.

Read the release notes for your device before you update: LRS4000, multiScan100, multiScan200, or picoScan100.

Web GUI

Open the device's firmware page in SOPASair and follow the update workflow.

Firmware update in the Web GUI

Firmware update in the Web GUI.

Sentio Creator

Compatible with: multiScan100 multiScan200 picoScan100

Use Sentio Creator to discover the device, select the firmware version, and install the update.

Firmware update in Sentio Creator

Firmware update in Sentio Creator.

Headless via the REST API

Compatible with: multiScan100 multiScan200 picoScan100

Automate the update with the five steps below. Run them in order; skipping or reordering steps can leave the device in an inconsistent state. After flashing, the device reboots automatically and is unreachable for a few minutes. The update is successful only when the device is back online with the expected version.

Get a Session Token

multiScan200 and picoScan100 use POST /api/CreateSessionToken at Service level with challenge-response in the JSON body. This endpoint also accepts HTTP Basic authentication, which is convenient in scripts:

POST /api/CreateSessionToken
Authorization: Basic <base64(Service:<password>)>
Content-Type: application/json

{}

Basic authentication sends the password only Base64-encoded. Use it only over HTTPS or on an isolated network.

The response contains the session token:

{ "header": { "status": 0 }, "data": { "token": "eyJhbGci..." } }

The multiScan100 REST interface documents /update, RunFirmwareUpdate, and UpdateState, but not CreateSessionToken. Use the authentication flow from the release notes or the OpenAPI file for the installed firmware.

Upload the Package

PUT /api/update with the firmware file as the binary body. On multiScan200 and picoScan100, the X-Session-Token header authorizes this transfer, so Basic Auth is not required here.

PUT /api/update
X-Session-Token: <token>
Content-Type: application/octet-stream

<binary firmware file content>

A 200 OK confirms the package was received.

Start the Update

RunFirmwareUpdate is a protected method requiring challenge-response in the JSON body. Basic Auth and the session token are not accepted here, so fetch a fresh challenge immediately before calling it.

POST /api/RunFirmwareUpdate
Content-Type: application/json

Fetch a fresh challenge and compute the hash for POST:RunFirmwareUpdate, then send it in the JSON body:

{
  "header": {
    "nonce": "...",
    "opaque": "...",
    "realm": "...",
    "user": "Service",
    "response": "<computed hash>"
  }
}

Poll the Update State

GET /api/UpdateState every ~5 s until it reaches Finished (2) or the device becomes unreachable (reboot started). Stop on Error (3) and investigate before retrying.

GET /api/UpdateState

Example response:

{ "data": { "UpdateState": 1 } }

Verify the New Version

After the device is back online, read the identity and compare against the expected version:

GET /api/DeviceIdent

Example response:

{ "data": { "DeviceIdent": { "Name": "picoScan", "Version": "2.3.3.0R" } } }

DeviceIdent.Version and GET /api/FirmwareVersion may format the same firmware version slightly differently, so normalize them before comparing.

UpdateState Values

UpdateState Values: value, state, and meaning.

Value State Meaning
0 Initial No update in progress. Package may be uploaded but flashing hasn't started.
1 Started Flashing in progress. Do not power-cycle the device.
2 Finished Flash complete; the device reboots automatically.
3 Error Update failed. Check package compatibility and retry. Do not power-cycle immediately.

Error Handling

  • PUT /api/update returns 403: Missing or expired session token. Create a fresh token and add X-Session-Token.
  • RunFirmwareUpdate returns header.status 4 (Access Denied) or 10 (Invalid Challenge): Basic Auth or the session token was used instead of challenge-response, or the challenge was invalidated. Use a new challenge for POST:RunFirmwareUpdate.
  • UpdateState = 3 (Error): Wrong package or an unsigned package on firmware V2.2.0 or later. Download the correct .spk.signed and retry.
  • Device never returns: Normal reboot takes 2-5 minutes. Wait and keep UDP sockets open across the reboot.

While UpdateState is Started (1), never power-cycle the device. Allow 2-5 minutes total for the flash and reboot. Keep measurement sockets open across the reboot, so the OS doesn't buffer an ICMP port-unreachable message that would break the first recv() call afterwards (on Windows, apply SIO_UDP_CONNRESET).

On picoScan100, subscribe to the UpdateState WebSocket event instead of polling to get progress pushes during the flash. On multiScan200 and picoScan100, verify integrity after the update with the LFTchecksum: a firmware change updates MD5LinuxRoot and MD5App but leaves MD5Parameters and MD5Calibration untouched.

How to perform a firmware update via HTTP.

How to perform a firmware update with SOPASair.

How to perform a firmware update with SOPAS ET.