Troubleshooting
This page describes problems with LumiScan DMC Reader and how you solve them. Start with the general checks, then find your symptom below: each problem lists its symptoms, the possible causes, a diagnostic procedure and the resolution. Problems of the Data Layer itself are described in Data Layer troubleshooting, licence problems in Licensing troubleshooting.
General checks
-
Read the application log. On ctrlX OS the application log is the system log. The reader writes the reason there when a run fails, when
control/subscribe/executeorcontrol/unsubscribe/executeis refused, when the source of the image stream cannot be subscribed to (the first failure), when frames cannot be read (at most one line every 5 seconds), and when a value in its settings file cannot be used. -
Check the addresses. All nodes are directly under
hdvisionsystems/lumiscan-dmc-reader/; the reader has no modules. Addresses are lower case. Expected: your PLC or client uses exactly these addresses, as listed in the Data Layer Reference. -
Check the image source. The application that publishes the image node, normally LumiScan Cam Driver, must run on the same device (ctrlX OS) or be connected to the same LumiScan Keryx as the reader (PC). Expected: the node named in
input/image-addressprovidesdata,width,heightandpixel-type. -
Check whether a run failed. This reader publishes no
status-codeorstatus-textnode. A failed run leavesoutput/resultsuntouched, holding the previous run’s codes. Readoutput/resultsbefore and after the run and compare, or check the log. See How do I know whether a run failed?. -
Check the settings file of the image stream. The reader keeps its stream settings in
dmc-reader.jsonin the application’s configuration directory:Platform Configuration directory ctrlX OS
/var/snap/rexroth-solutions/common/solutions/activeConfiguration/lumiscan-dmc-readerPC (Windows)
%APP_RESOURCE_DIR%\etc\lumiscan-dmc-reader; withoutAPP_RESOURCE_DIR,C:\ProgramData\HD Vision Systems GmbH\LumiScan Vision Suite\lumiscan-dmc-reader\etc\lumiscan-dmc-readerThe file is read once, at the start of the application: changes made to it by hand take effect at the next start. A value that cannot be used is ignored, and logged; a file that is not valid JSON is ignored, and logged. See Kept in the settings file.
Problem: The reader shuts down during start-up
On ctrlX OS, the reader stops shortly after it starts. Its nodes under hdvisionsystems/lumiscan-dmc-reader disappear from the Data Layer.
-
The ctrlX licence
SWL-W-XCx-DMxxxCRDSxHDVSx-V1NNis not available on the ctrlX OS device on which the reader runs. The licence is checked for up to ten seconds during start-up; if none becomes available, the reader shuts down.
-
Open the ctrlX OS system log - expected: the reason for the shutdown. The system log names the missing licence.
-
Check the licences in the License Manager of ctrlX OS - expected: the ctrlX licence
SWL-W-XCx-DMxxxCRDSxHDVSx-V1NNis available on the device on which the reader runs. One licence seat covers the reader. The Advanced licenceSWL-W-XCx-DMxxxCRDAxHDVSx-V1NNis not needed to start: without it, the reader runs with Standard functions.
-
If the ctrlX licence is missing:
-
Buy the licence
SWL-W-XCx-DMxxxCRDSxHDVSx-V1NNin the ctrlX Store. -
Activate it in the License Manager of ctrlX OS on the device on which the reader runs. Follow the Bosch Rexroth documentation for ctrlX OS.
-
Start the reader again. Expected: it keeps running, and its nodes are on the Data Layer.
-
Send the information listed under Information for support to support, together with the lines of the ctrlX OS system log that name the licence. For licences, contact licenses@hdvisionsystems.com.
Problem: output/results is an empty array
After execute returns, output/results holds an empty array: CodeDetectResultArray.results has no entry. In the image stream, a result on control/subscribe/output/stream/result has an empty results array.
-
The image holds no Data Matrix code. An empty
output/resultsis not an error: it means the image was read successfully and contained no Data Matrix code. A run that found nothing publishes an empty array rather than an error. -
The code is not an ECC 200 Data Matrix code. The reader reads ECC 200 Data Matrix codes. QR codes, Aztec codes and linear barcodes are read by its sibling applications.
-
input/image-addressnames an image node that does not show the code. Each run reads the entire current contents of the image node named there. -
The last run failed, and the empty array is the result of an earlier run. A failed run leaves
output/resultsuntouched. A run fails if the image cannot be read: no address set, an address that does not resolve, a missing or shortdatabuffer, or an unsupported pixel format.
-
Read the application log for the time of the run - expected: no failure. A failed run writes its reason there; on ctrlX OS this is the system log.
-
Read
input/image-address- expected: the address of the image node of the camera that sees the code, for examplehdvisionsystems/lumiscan-cam-driver/camera1/output/image. -
Check the type of the code - expected: an ECC 200 Data Matrix code.
-
If the image holds no Data Matrix code: nothing is wrong with the reader. Call
executeagain when the image node holds a picture with the code. -
If the code is not an ECC 200 Data Matrix code: use the sibling application for its symbology: LumiScan QR Code Reader, LumiScan Aztec Code Reader or LumiScan Barcode Reader. They work the same way.
-
If
input/image-addressnames another image node:-
Write the address of the right image node to
input/image-address. It is the address of the image node itself, not of itsdatachild. The address is remembered. -
Write an empty value to
execute. Expected:output/resultsholds an entry per code.
-
-
If the last run failed: remove the reason the log names: set
input/image-address, correct an address that does not resolve, or make the image source deliver completedatain a supported pixel format (see Requirements). Then write an empty value toexecuteagain. Expected: the log shows no failure for this run.
See Reading a Code and The Result.
Send the information listed under Information for support to support, together with the value of input/image-address, the width, height and pixel-type of that image node, and the symbology of the code.
Problem: control/subscribe/execute is refused
A write to control/subscribe/execute (or to control/unsubscribe/execute) answers DL_INVALID_VALUE (ctrlX OS) or Rejected (PC), or DL_CREATION_FAILED (ctrlX OS) or CreationFailed (PC), instead of DL_OK (ctrlX OS) or Ok (PC). Nothing changed: setting/stream/ still shows the values applied before.
-
DL_INVALID_VALUE/Rejectedfromcontrol/subscribe/execute: stream mode without an address, or a queue size outside1to64. -
DL_INVALID_VALUE/Rejectedfromcontrol/unsubscribe/execute: the address is not the source, or there is no source. -
DL_CREATION_FAILED/CreationFailed: the settings filedmc-reader.jsoncould not be written, for example because it is not valid JSON.
-
Read the answer of the method call - expected:
DL_OKorOk.DL_INVALID_VALUEorRejectedpoints to an input,DL_CREATION_FAILEDorCreationFailedto the settings file. -
Read the application log - expected: the reason for the refusal. On the ctrlX Data Layer a refused call carries no reason; the reader writes it to its log.
-
After a refused
control/subscribe/execute, readcontrol/subscribe/input/enable,control/subscribe/input/addressandcontrol/subscribe/input/queue-size- expected: an address wheneverenableistrue, and a queue size from1to64. -
After a refused
control/unsubscribe/execute, comparecontrol/unsubscribe/input/addresswithsetting/stream/address- expected: the same address. A/at either end does not count. -
After
DL_CREATION_FAILEDorCreationFailed, opendmc-reader.jsonin the configuration directory (see General checks) - expected: a valid JSON file.
-
If stream mode has no address: write the camera’s stream folder, for example
hdvisionsystems/lumiscan-cam-driver/camera1/control/publish/output/stream, tocontrol/subscribe/input/address, then write tocontrol/subscribe/executeagain. Expected:DL_OKorOk. -
If the queue size is outside
1to64: write a value from1to64tocontrol/subscribe/input/queue-size, then write tocontrol/subscribe/executeagain. Expected:DL_OKorOk. -
If the address to drop is not the source: write the address that
setting/stream/addressshows tocontrol/unsubscribe/input/address, then write tocontrol/unsubscribe/executeagain. Ifsetting/stream/addressis empty, there is no source to drop. -
If the settings file could not be written:
-
Correct
dmc-reader.jsonso that it is valid JSON. On a PC,lumiscan-dmc-reader --generate-settings <folder>writes an example to start from. -
Write to
control/subscribe/executeagain. Expected:DL_OKorOk, andsetting/stream/shows the new values.Changes made to the file by hand take effect at the next start of the application.
-
Send the information listed under Information for support to support, together with the answer of the method call, the values of the inputs of control/subscribe (or control/unsubscribe/input/address) and dmc-reader.json.
Problem: The stream runs, but no results arrive, or failed-frames grows
After control/subscribe/execute, no result arrives on control/subscribe/output/stream/result, or the counter control/subscribe/output/stream/statistics/failed-frames grows.
-
The reader’s stream does not run: the inputs of
control/subscribewere written, butcontrol/subscribe/executewas not called. Writing an input alone changes nothing. -
No frames arrive from the source: the Cam Driver’s stream does not run, or
control/subscribe/input/addressis not the camera’s stream folder. The Cam Driver’s stream is not kept across a restart of the Cam Driver. -
The source cannot be subscribed to. The reader then tries it again every 5 seconds while the stream runs.
-
Frames arrive but cannot be read, for example frames in a pixel format the reader does not support, or frames whose pixels do not fill the size they give.
-
Results are published, but your client does not subscribe to
control/subscribe/output/stream/result. A read of the node returns only the latest result.
-
Read
control/subscribe/output/stream/active- expected:true. If it isfalse, readsetting/stream/enableandsetting/stream/address- expected:trueand the camera’s stream folder. -
Read
hdvisionsystems/lumiscan-cam-driver/<camera name>/control/publish/output/stream/active- expected:true. -
Read
control/subscribe/output/stream/statistics/received-framestwice, a few seconds apart - expected: the value grows. The counters are updated about four times a second while the stream runs. -
Read
statistics/failed-framesandcontrol/subscribe/output/stream/last-failure- expected:failed-framesdoes not grow, andlast-failureis empty.last-failuresays why the last frame that could not be read failed; it is emptied when the stream starts. -
Read
statistics/processed-frames- expected: the value grows. Each processed frame has a result published oncontrol/subscribe/output/stream/result. -
Read the application log - expected: no failure to subscribe to the source, and no failed frames.
-
If the reader’s stream does not run:
-
Write the camera’s stream folder to
control/subscribe/input/address. -
Set
control/subscribe/input/enabletotrue. -
Write to
control/subscribe/execute. Expected:DL_OKorOk, thencontrol/subscribe/output/stream/activeistrue.
-
-
If the Cam Driver’s stream does not run: start it, see the Cam Driver manual, Streaming Images. Its stream is not kept across a restart: after every start of the Cam Driver, connect the camera and call its
control/publish/executewithenable=true. The reader’s stream can be started before the Cam Driver’s stream; results arrive once frames do. -
If the address is not the camera’s stream folder: write the folder, for example
hdvisionsystems/lumiscan-cam-driver/camera1/control/publish/output/stream, tocontrol/subscribe/input/addressand write tocontrol/subscribe/execute. The reader reads the folder’sframenode. Expected:received-framesgrows. -
If the source cannot be subscribed to: make sure the Cam Driver runs and publishes the stream folder named in
control/subscribe/input/address. While the stream runs, the reader tries the source again every 5 seconds; for the same address you do not need to execute again. -
If frames cannot be read: read
control/subscribe/output/stream/last-failurefor the reason. Make sure the frames use a supported pixel format:Mono8,Mono12,RGB8,RGB12,BGR8,BGR12,Bayer_GR8,Bayer_RG8,Bayer_GR12orBayer_RG12(see Requirements). Expected:failed-framesstops growing. -
If
processed-framesgrows but your client receives nothing: subscribe tocontrol/subscribe/output/stream/resultto receive each result. Or setcontrol/subscribe/input/keep-latest-outputtotrueand write tocontrol/subscribe/execute: the reader then also writes each stream result tooutput/results. On a PC,krxclient subscribe hdvisionsystems/lumiscan-dmc-reader/control/subscribe/output/stream/result --count 5shows that results arrive; it shows a flatbuffer by its size only.
A frame with no Data Matrix code gives a result with an empty results array, see Problem: output/results is an empty array. See also Reading the statistics and A stream delivers nothing.
The image stream is experimental. It has been tested on Windows with LumiScan Keryx and simulated images only; it has not been verified on Linux (ctrlX OS or Ubuntu), on the ctrlX Data Layer, or with a real camera. Send the information listed under Information for support to support, together with the values of control/subscribe/output/stream/active, control/subscribe/output/stream/last-failure, the counters under control/subscribe/output/stream/statistics/ and setting/stream/, and the value of the Cam Driver’s control/publish/output/stream/active.
Problem: After a restart the reader streams again by itself
After a restart of the application, control/subscribe/output/stream/active is true and results arrive on control/subscribe/output/stream/result, although your program has not executed anything.
-
The reader starts as it was. This is intended:
control/subscribe/executeandcontrol/unsubscribe/executesave what they apply in thestreammember ofdmc-reader.json. After a restart the reader subscribes to the same source and, whenstream.enableistrue, starts its stream at once. -
stream.enablewas set totrueindmc-reader.jsonby hand.truestarts the stream at the start of the application.
-
Read
setting/stream/enableandsetting/stream/address- they show what was applied last, as the settings file keeps it. Expected, if the reader should not stream after a start:setting/stream/enableisfalse. -
Open
dmc-reader.jsonin the configuration directory (see General checks) - expected, if the reader should not stream after a start:stream.enableisfalseor left out.
-
If the reader should not stream after a start: set
control/subscribe/input/enabletofalse, then write tocontrol/subscribe/execute. This stops the stream now and is saved indmc-reader.json, so the reader starts out of stream mode next time. The frame being read is finished first. Expected:control/subscribe/output/stream/activeisfalse, andsetting/stream/enableisfalse. -
If the reader should not keep the source either: write the address that
setting/stream/addressshows tocontrol/unsubscribe/input/address, then write tocontrol/unsubscribe/execute. Stream mode ends with it. Expected:setting/stream/addressis empty.
Send the information listed under Information for support to support, together with dmc-reader.json and the values of setting/stream/.
Information for support
If a problem persists, send this information to support:
-
Software version: the version of LumiScan DMC Reader you run. The files the image stream keeps in
settings-history/in the configuration directory record it assoftware.version. -
Platform: ctrlX OS (ctrlX CORE or ctrlX IPC) and its ctrlX OS version, or a PC with Windows 11 or Ubuntu 24.04.
-
Data Layer: the ctrlX Data Layer (ctrlX OS) or LumiScan Keryx (PC). On a PC, also the broker address the reader uses; each app names it in its log at start.
-
Log: the application log from the time of the error; on ctrlX OS the system log.
-
Time: the date and time of the error.
-
Communication status: the answer of a refused method call (for example
DL_INVALID_VALUE), and the node values that the problem entry asks for. -
Configuration files:
dmc-reader.jsonand the files insettings-history/from the configuration directory (see General checks).
Contact HD Vision Systems customer success at customer.success@hdvisionsystems.com or +49 6221 6721905; for licences, licenses@hdvisionsystems.com.