<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:webfeeds="http://webfeeds.org/rss/1.0">
    <channel>
        <title><![CDATA[Automation Community]]></title>
        <description><![CDATA[Automation Community]]></description>
        <link>https://community.boschrexroth.com</link>
        <generator>Bettermode RSS Generator</generator>
        <lastBuildDate>Tue, 04 Aug 2026 00:54:17 GMT</lastBuildDate>
        <atom:link href="https://community.boschrexroth.com/rss/feed" rel="self" type="application/rss+xml"/>
        <pubDate>Tue, 04 Aug 2026 00:54:17 GMT</pubDate>
        <copyright><![CDATA[2026 Automation Community]]></copyright>
        <language><![CDATA[en-US]]></language>
        <ttl>60</ttl>
        <webfeeds:icon></webfeeds:icon>
        <webfeeds:related layout="card" target="browser"/>
        <item>
            <title><![CDATA[090F0060, 0C550291 Error when filtering the actual values]]></title>
            <description><![CDATA[Hello Community,

I am getting this error in the motion app, any idea why this comes and how to fix it?

I found the diagnostics but i dont understand could anyone please explain?

https://docs.automation.... [https://docs.automation.boschrexroth.com/doc/2914906033/090f0060-error-when-filtering-the-actual-values/latest/en/]]]></description>
            <link>https://community.boschrexroth.com/ctrlx-motion-itqsnz6e/post/090f0060-0c550291-error-when-filtering-the-actual-values-Z3EUbPdCRQeqWcm</link>
            <guid isPermaLink="true">https://community.boschrexroth.com/ctrlx-motion-itqsnz6e/post/090f0060-0c550291-error-when-filtering-the-actual-values-Z3EUbPdCRQeqWcm</guid>
            <category><![CDATA[CTRLXCORE]]></category>
            <category><![CDATA[CTRLXMOTION]]></category>
            <dc:creator><![CDATA[TechHarbour-57]]></dc:creator>
            <pubDate>Mon, 03 Aug 2026 11:30:16 GMT</pubDate>
            <content:encoded><![CDATA[<p>Hello Community,</p><p>I am getting this error in the motion app, any idea why this comes and how to fix it? </p><figure data-type="image" data-version="v2" data-id="trfLrOfo7WJo965mcPStm" data-size="best-fit" data-align="center"><img src="https://tribe-eu.imgix.net/trfLrOfo7WJo965mcPStm?auto=compress,format" data-id="trfLrOfo7WJo965mcPStm"></figure><p>I found the diagnostics but i dont understand could anyone please explain?</p><p><a href="https://docs.automation.boschrexroth.com/doc/2914906033/090f0060-error-when-filtering-the-actual-values/latest/en/" rel="noopener noreferrer nofollow" class="text-interactive hover:text-interactive-hovered">https://docs.automation.boschrexroth.com/doc/2914906033/090f0060-error-when-filtering-the-actual-values/latest/en/</a></p><p>Thank you</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Adding Axis to the Motion]]></title>
            <description><![CDATA[Step 1:

Step 2:

Step 3:

The axis done appear, but it says i have added it.

I am using the below, firmware in the drive,



I am not able to understand if i am doing something wrong

Could you please help me?]]></description>
            <link>https://community.boschrexroth.com/ctrlx-core-25gnfzl4/post/adding-axis-to-the-motion-YiFqSFFl3LJBz0f</link>
            <guid isPermaLink="true">https://community.boschrexroth.com/ctrlx-core-25gnfzl4/post/adding-axis-to-the-motion-YiFqSFFl3LJBz0f</guid>
            <category><![CDATA[CTRLXCORE]]></category>
            <category><![CDATA[CTRLXMOTION]]></category>
            <dc:creator><![CDATA[TechHarbour-57]]></dc:creator>
            <pubDate>Mon, 03 Aug 2026 09:23:38 GMT</pubDate>
            <content:encoded><![CDATA[<p>Step 1:</p><figure data-type="image" data-version="v2" data-id="IJbUMuskLwTxbSoj2M3Ev" data-size="best-fit" data-align="center"><img src="https://tribe-eu.imgix.net/IJbUMuskLwTxbSoj2M3Ev?auto=compress,format" data-id="IJbUMuskLwTxbSoj2M3Ev"></figure><p>Step 2:</p><figure data-type="image" data-version="v2" data-id="pv147Z7BnknpNsTTBQiFJ" data-size="best-fit" data-align="center"><img src="https://tribe-eu.imgix.net/pv147Z7BnknpNsTTBQiFJ?auto=compress,format" data-id="pv147Z7BnknpNsTTBQiFJ"></figure><p>Step 3:</p><figure data-type="image" data-version="v2" data-id="t1xbraUKQBiGTDShFisuD" data-size="best-fit" data-align="center"><img src="https://tribe-eu.imgix.net/t1xbraUKQBiGTDShFisuD?auto=compress,format" data-id="t1xbraUKQBiGTDShFisuD"></figure><p>The axis done appear, but it says i have added it.</p><p>I am using the below, firmware in the drive,</p><figure data-type="image" data-version="v2" data-id="tWjS5UO32W7utXXV3soJT" data-size="best-fit" data-align="center"><img src="https://tribe-eu.imgix.net/tWjS5UO32W7utXXV3soJT?auto=compress,format" data-id="tWjS5UO32W7utXXV3soJT"></figure><p></p><p>I am not able to understand if i am doing something wrong</p><p>Could you please help me?</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[OPC UA Security between Siemens MTP1200 Unified Comfort Panel and Rexroth ctrlX CORE X3C – Trust Loop with Certificates]]></title>
            <description><![CDATA[Hello everyone,

I am currently working on an interoperability test between a Siemens MTP1200 Unified Comfort Panel and a Rexroth ctrlX CORE X3C using OPC UA.

Has anyone successfully established a secure...]]></description>
            <link>https://community.boschrexroth.com/communication-5ojipb0n/post/opc-ua-security-between-siemens-mtp1200-unified-comfort-panel-and-rexroth-gxZmfowrunmVuoH</link>
            <guid isPermaLink="true">https://community.boschrexroth.com/communication-5ojipb0n/post/opc-ua-security-between-siemens-mtp1200-unified-comfort-panel-and-rexroth-gxZmfowrunmVuoH</guid>
            <dc:creator><![CDATA[Dietrich]]></dc:creator>
            <pubDate>Thu, 30 Jul 2026 13:15:27 GMT</pubDate>
            <content:encoded><![CDATA[<p>Hello everyone,</p><p>I am currently working on an interoperability test between a <strong>Siemens MTP1200 Unified Comfort Panel</strong> and a <strong>Rexroth ctrlX CORE X3C</strong> using OPC UA.</p><p>Has anyone successfully established a <strong>secure OPC UA connection</strong> (Sign &amp; Encrypt) between these two devices?</p><p>Or does anyone know a suitable contact person at Siemens or Rexroth who has experience with this particular combination?</p><p><strong>Important:</strong> This is a <strong>Unified Comfort Panel</strong>, not a classic Comfort Panel. The certificate handling and commissioning process differ significantly from the older Comfort Panel concepts.</p><h2 class="text-xl" data-toc-id="38a006f2-5be2-48df-b20b-5f120782ef0d" id="38a006f2-5be2-48df-b20b-5f120782ef0d">Test Setup</h2><h3 class="text-lg" data-toc-id="088ee322-8ab0-41cd-a5bf-8a8729de0bed" id="088ee322-8ab0-41cd-a5bf-8a8729de0bed">OPC UA Client</h3><ul><li><p>Siemens MTP1200 Unified Comfort Panel</p></li><li><p>TIA Portal V20</p></li></ul><h3 class="text-lg" data-toc-id="eb01961c-393e-41aa-bd9a-73424ec37f5c" id="eb01961c-393e-41aa-bd9a-73424ec37f5c">OPC UA Server</h3><ul><li><p>Rexroth ctrlX CORE X3C</p></li></ul><h2 class="text-xl" data-toc-id="a1d3865f-02bb-4a1d-9c7b-e8bc822794aa" id="a1d3865f-02bb-4a1d-9c7b-e8bc822794aa">Current Status</h2><h3 class="text-lg" data-toc-id="6d342f5d-4695-4f15-a3f5-9c738bb9747f" id="6d342f5d-4695-4f15-a3f5-9c738bb9747f">Communication without encryption</h3><p>OPC UA communication works perfectly when security is disabled (Security Policy = None).</p><ul><li><p>Read access works</p></li><li><p>Write access works</p></li><li><p>Connection is stable</p></li></ul><h3 class="text-lg" data-toc-id="28763520-2b4f-489a-9881-5e7456d393a5" id="28763520-2b4f-489a-9881-5e7456d393a5">Engineering communication</h3><p>Communication between <strong>TIA Portal</strong> and the <strong>ctrlX CORE</strong> also works with encryption enabled, provided that the TIA certificate is imported and marked as <strong>Trusted</strong> on the ctrlX side.</p><p>This indicates that the certificate and trust infrastructure of the ctrlX system is generally working.</p><h2 class="text-xl" data-toc-id="a5328ec7-0cc3-4b85-9f24-10586fee50dd" id="a5328ec7-0cc3-4b85-9f24-10586fee50dd">Security Test Performed</h2><p>The latest test was carried out together with Siemens Support.</p><p>The following certificates were created using the <strong>TIA Portal Certificate Manager</strong>:</p><ul><li><p>Client certificate for the Unified Panel</p></li><li><p>CA certificate for the controller</p></li></ul><p>The client name was configured using the <strong>MAC address of the panel</strong>.</p><p>Unlike previous attempts, an actual certificate exchange could be observed:</p><ol><li><p>The Unified Panel sends its client certificate to the ctrlX CORE.</p></li><li><p>The certificate is accepted and marked as <strong>Trusted</strong> on the ctrlX side.</p></li><li><p>The ctrlX CORE sends its server certificate to the panel.</p></li><li><p>The server certificate is accepted and marked as <strong>Trusted</strong> on the panel.</p></li><li><p>The panel then sends its client certificate again.</p></li><li><p>The secure connection is still not established.</p></li></ol><p>According to Siemens Support, the client certificate of the Unified Panel is rejected by the controller at this stage.</p><h2 class="text-xl" data-toc-id="1e84ca82-916b-4803-99fa-9880dc41ba97" id="1e84ca82-916b-4803-99fa-9880dc41ba97">Observed Behavior</h2><p>The behavior looks very similar to a classic <strong>trust loop</strong>:</p><ul><li><p>Panel sends certificate</p></li><li><p>Controller trusts certificate</p></li><li><p>Controller sends certificate</p></li><li><p>Panel trusts certificate</p></li><li><p>Panel sends certificate again</p></li><li><p>Controller rejects it again</p></li></ul><p>As a result, the secure OPC UA session is never established.</p><h2 class="text-xl" data-toc-id="8ca8b571-b63f-4c57-8733-e4e094e8ef2f" id="8ca8b571-b63f-4c57-8733-e4e094e8ef2f">Questions</h2><p>Has anyone experienced a similar behavior with:</p><ul><li><p>Siemens Unified Panels acting as OPC UA Client</p></li><li><p>Rexroth ctrlX CORE acting as OPC UA Server</p></li><li><p>Certificates generated with the Siemens Certificate Manager</p></li><li><p>CA-based trust configuration</p></li></ul><p>Any experience, hints, or ideas regarding the root cause of such a trust loop would be greatly appreciated.</p><p>Thank you in advance for any feedback.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[General WiFi profile for different WiFi adapters possible?]]></title>
            <description><![CDATA[Hello,

in my company we use the CtrlX CORE X3 with a generic USB WLAN Stick Adapter.
For the setup we configure the Wifi profile in the network interfaces settings (SSID, Security mode, password).
...]]></description>
            <link>https://community.boschrexroth.com/ctrlx-core-25gnfzl4/post/general-wifi-profile-for-different-wifi-adapters-possible-C5b4UVqIZC5h4G2</link>
            <guid isPermaLink="true">https://community.boschrexroth.com/ctrlx-core-25gnfzl4/post/general-wifi-profile-for-different-wifi-adapters-possible-C5b4UVqIZC5h4G2</guid>
            <category><![CDATA[CTRLXCORE]]></category>
            <dc:creator><![CDATA[Pat_Xplorer]]></dc:creator>
            <pubDate>Thu, 30 Jul 2026 11:30:12 GMT</pubDate>
            <content:encoded><![CDATA[<p>Hello,<br><br>in my company we use the CtrlX CORE X3 with a generic USB WLAN Stick Adapter.<br>For the setup we configure the Wifi profile in the network interfaces settings (SSID, Security mode, password).<br>Sometimes we need to replac Core or WiFi adapter at the customer site. In this case we need to send a new WiFi adapter to make sure it's connecting to the internet.<br>Each WiFi adapter comes with unique Mac-address and includes it in the name, e.g. wlx24ec99bfe600.</p><p><br>Is it possible to configure the CtrlX Core in a way that it uses a generic WiFi profile for any WiFi adapter showing up in the network interfaces? If so, how to achive that?<br><br>The goal is to have a reduced installation process and an easier trouble-shooting.</p><p>I am new to the whole system and this is my first post. Let me know if you need any more input. My system shows: core20 20230622, Runtime environment based on Ubuntu 20.04</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Setup ROKIT in a ctrlX CORE]]></title>
            <description><![CDATA[The focus of this HowTo is to set up ROKIT for the first time (Robotics Kit by Bosch Rexroth) and to gain an understanding of the technology generally.

Prerequisite:
ctrlX CORE X5/X7 with following apps...]]></description>
            <link>https://community.boschrexroth.com/store-and-how-to-how-to-qmglrz33/post/setup-rokit-in-ctrlx-PfxBtMOPhMrjDnt</link>
            <guid isPermaLink="true">https://community.boschrexroth.com/store-and-how-to-how-to-qmglrz33/post/setup-rokit-in-ctrlx-PfxBtMOPhMrjDnt</guid>
            <dc:creator><![CDATA[Hamid22]]></dc:creator>
            <pubDate>Thu, 30 Jul 2026 10:12:50 GMT</pubDate>
            <content:encoded><![CDATA[<p>The focus of this HowTo is to set up ROKIT for the first time (Robotics Kit by Bosch Rexroth) and to gain an understanding of the technology generally.</p><p><strong>Prerequisite:<br></strong>ctrlX CORE X5/X7 with following apps:</p><ul><li><p>ROKIT Navigator Client V2.0</p></li><li><p>ROKIT Locator Client V2.0</p></li><li><p>ROKIT Locator Server V2.0 (only for one AGV application)</p></li><li><p>ctrlX OS - Motion V3.6</p></li><li><p>ctrlX OS - PLC V3.6</p></li><li><p>ctrlX OS - Container Engine V3.6</p></li><li><p>ctrlX OS - Node-Red V3.6<br><br>You will find them either under the ctrlX OS apps or under <a href="https://www.boschrexroth.com/de/de/myrexroth/myrexroth-home/collaboration-rooms/?path=%2FCtrlx-Automation%2FctrlX_eShop&amp;_gl=1*1n9rz7f*_ga*MTE4MjYxNzM3OC4xNzMyMjg1NTMz*_ga_1TJGXV7Q4B*MTc0NDYyMjA1Ni4yMjIuMS4xNzQ0NjIyMTAyLjE0LjAuMA..*_gcl_au*MTc2OTQ2NTE5OS4xNzQwMTI0NTUx*_ga_6YFL8JVC3S*MTc0NDYyMjA1Ni4yMjEuMS4xNzQ0NjIyMTAyLjE0LjAuMA..&amp;page=1&amp;search=" rel="noopener noreferrer nofollow" class="text-interactive hover:text-interactive-hovered">this link</a>.<br><br><strong>System Architecture</strong></p></li></ul><figure data-type="image" data-version="v2" data-id="lZ3az2cZyU2ae97ZrIhJN" data-size="best-fit" data-align="center"><img src="https://tribe-eu.imgix.net/lZ3az2cZyU2ae97ZrIhJN?auto=compress,format" data-id="lZ3az2cZyU2ae97ZrIhJN"><figcaption class="!text-center !mx-auto !text-content-subdued !text-xs  !px-0.5 !my-1 !max-w-prose !mt-1 !rounded-none">Fig. 1: System Architecture and Data Flow


</figcaption></figure><p></p><p>The diagram above illustrates the interaction between ROKIT Locator, ROKIT Navigator, the PLC and the Motion App. Here is an explanation of the interaction between these apps:</p><ul><li><p><strong>Localization &amp; Path Planning:</strong>&nbsp;The ROKIT Locator processes the incoming scans to determine the exact pose (x, y and yaw). It provides the pose and the current map of the ROKIT Navigator. The ROKIT Navigator receives VDA5050 commands from the MQTT Dashboard and implements control loops for motion control using information from the ROKIT Locator. It sends these motion commands to the PLC.</p></li><li><p><strong>Machine Logic: </strong>After the Navigator sends the movement commands to the PLC, the PLC handles low-level machine logic, translates the commands into axis profiles and communicates with the Motion app.</p><ul><li><p><strong>Dashboarding:</strong>&nbsp;The Navigator publishes system status and operational data via MQTT, which can be visualized in Node-RED or fleet management systems. Using this dashboard, users can send commands via VDA 5050 protocol to the ROKIT Navigator.</p></li></ul></li></ul><p><strong>Starting the PLC projects and configuring the motion app</strong></p><p>Running the robot requires some kind of logic in which vehicle physics, SafeMotion, etc. are defined. This is mostly done in the form of a PLC program. After starting the PLC program, you should also be able to see in ctrlX OS that the PLC is running.</p><figure data-type="image" data-version="v2" data-id="QFmjWTqyYa1SmtKJexmzD" data-size="best-fit" data-align="center"><img src="https://tribe-eu.imgix.net/QFmjWTqyYa1SmtKJexmzD?auto=compress,format" data-id="QFmjWTqyYa1SmtKJexmzD"><figcaption class="!text-center !mx-auto !text-content-subdued !text-xs  !px-0.5 !my-1 !max-w-prose !mt-1 !rounded-none">Fig. 2: PLC is running</figcaption></figure><p></p><p>Here is a screenshot of the common axis configuration for different drives in the motion app. The axes will be commanded by the PLC project through the axis interface.</p><figure data-type="image" data-version="v2" data-id="Lkh8ZlEjZvANpRdxu9ipf" data-size="best-fit" data-align="center"><img src="https://tribe-eu.imgix.net/Lkh8ZlEjZvANpRdxu9ipf?auto=compress,format" data-id="Lkh8ZlEjZvANpRdxu9ipf"><figcaption class="!text-center !mx-auto !text-content-subdued !text-xs  !px-0.5 !my-1 !max-w-prose !mt-1 !rounded-none">Fig. 3: Axis settings</figcaption></figure><p></p><p><strong>Configuration of the ROKIT Locator and Navigator</strong></p><figure data-type="image" data-version="v2" data-id="JitxLB2qoZp16ttpmShxI" data-size="best-fit" data-align="center"><img src="https://tribe-eu.imgix.net/JitxLB2qoZp16ttpmShxI?auto=compress,format" data-id="JitxLB2qoZp16ttpmShxI"><figcaption class="!text-center !mx-auto !text-content-subdued !text-xs  !px-0.5 !my-1 !max-w-prose !mt-1 !rounded-none">Fig. 3: Taskbar of CtrlX-OS with the 3 ROKIT modules</figcaption></figure><p>When signing in to any of the three ROKIT modules (ROKIT Navigator Client, ROKIT Locator Client, and ROKIT Locator Server), you will be prompted to sign in with a username and password. The default username is "admin"; the default password is "bbZGs3wFsB35" and can later be changed in the settings.</p><figure data-type="image" data-version="v2" data-id="qaJPq9lr8eVN6rv4cQ7uc" data-size="best-fit" data-align="center"><img src="https://tribe-eu.imgix.net/qaJPq9lr8eVN6rv4cQ7uc?auto=compress,format" data-id="qaJPq9lr8eVN6rv4cQ7uc"><figcaption class="!text-center !mx-auto !text-content-subdued !text-xs  !px-0.5 !my-1 !max-w-prose !mt-1 !rounded-none">Fig. 4: Login overview of ROKIT Locator Server</figcaption></figure><p></p><p>First, you can log in to the ROKIT Locator Server and add a new vehicle in Home &gt; Fleet Manager. Every setting for the ROKIT Locator can be configured from the ROKIT Locator Server settings page.</p><p>Now you can configure the sensor connection under Sensor Settings. Depending on your laser scanner, you can select the correct laser type and enter the address of the laser scanner. If you want to use two laser scanners for localization, you need to activate the “Enable Localization on Laser 2” button.</p><p></p><figure data-type="image" data-version="v2" data-id="dvlqiill55ESr6vyh6W2R" data-size="best-fit" data-align="center"><img src="https://tribe-eu.imgix.net/dvlqiill55ESr6vyh6W2R?auto=compress,format" data-id="dvlqiill55ESr6vyh6W2R"><figcaption class="!text-center !mx-auto !text-content-subdued !text-xs  !px-0.5 !my-1 !max-w-prose !mt-1 !rounded-none">Fig. 5: Sensor settings -&gt; configuration in ROKIT Locator</figcaption></figure><p></p><p>Now you need to add the transformation parameters for localization laser 1 (and laser 2) during the calibration.</p><p></p><figure data-type="image" data-version="v2" data-id="G4HepUWRPWkfSBBpYO1gt" data-size="best-fit" data-align="center"><img src="https://tribe-eu.imgix.net/G4HepUWRPWkfSBBpYO1gt?auto=compress,format" data-id="G4HepUWRPWkfSBBpYO1gt"><figcaption class="!text-center !mx-auto !text-content-subdued !text-xs  !px-0.5 !my-1 !max-w-prose !mt-1 !rounded-none">Fig. 6: Sensor settings -&gt; calibration in ROKIT Locator.</figcaption></figure><p></p><p>After the laser scanner and the frame are configured, you can start to recording a map on the Home &gt; Quick Start page. You can then move around the environment unit the map is fully covered and visible in the ROKIT Locator interface. It is recommended to move around the map at least twice times from different directions.</p><p></p><figure data-type="image" data-version="v2" data-id="COz5LCsP1JI10Wpx0Pswm" data-size="best-fit" data-align="center"><img src="https://tribe-eu.imgix.net/COz5LCsP1JI10Wpx0Pswm?auto=compress,format" data-id="COz5LCsP1JI10Wpx0Pswm"><figcaption class="!text-center !mx-auto !text-content-subdued !text-xs  !px-0.5 !my-1 !max-w-prose !mt-1 !rounded-none">Fig. 7: Example overview while recording</figcaption></figure><p></p><p>You can edit and align the recorded map under Home &gt; Maps &gt; Sketches. Afterwards, you can use the edited sketch and assign it to the vehicle.</p><p>&nbsp;</p><figure data-type="image" data-version="v2" data-id="AlhLHM9IuvlNEx19ftqeD" data-size="best-fit" data-align="center"><img src="https://tribe-eu.imgix.net/AlhLHM9IuvlNEx19ftqeD?auto=compress,format" data-id="AlhLHM9IuvlNEx19ftqeD"><figcaption class="!text-center !mx-auto !text-content-subdued !text-xs  !px-0.5 !my-1 !max-w-prose !mt-1 !rounded-none">Fig. 8: Sketch Alignments in ROKIT Locator</figcaption></figure><p></p><p>Now you can open the Live View and start the localization for this vehicle. (Home &gt; Live View &gt; Client List).</p><p></p><figure data-type="image" data-version="v2" data-id="5I1AoM0urjiAh5QrrljaY" data-size="best-fit" data-align="center"><img src="https://tribe-eu.imgix.net/5I1AoM0urjiAh5QrrljaY?auto=compress,format" data-id="5I1AoM0urjiAh5QrrljaY"><figcaption class="!text-center !mx-auto !text-content-subdued !text-xs  !px-0.5 !my-1 !max-w-prose !mt-1 !rounded-none">Fig. 9: Actual outlines (white) vs what the robot thinks the outlines are (red, blue)</figcaption></figure><p></p><p>You can localize the vehicle by performing self-localization, or by driving the vehicle around (e.g., via Foxglove). After a while, the ROKIT Locator will be able to calculate its current position. Once the vehicle has been localized, you can start configuring the ROKIT Navigator Client.</p><p></p><figure data-type="image" data-version="v2" data-id="K4MXOoPqFSGRMBMTUPOAc" data-size="best-fit" data-align="center"><img src="https://tribe-eu.imgix.net/K4MXOoPqFSGRMBMTUPOAc?auto=compress,format" data-id="K4MXOoPqFSGRMBMTUPOAc"><figcaption class="!text-center !mx-auto !text-content-subdued !text-xs  !px-0.5 !my-1 !max-w-prose !mt-1 !rounded-none">Fig. 10: Robot evaluates its position correctly</figcaption></figure><p></p><p>All the settings for the ROKIT Navigator Client can be configured from the Home &gt; Configuration page of the ROKIT Navigator Client.</p><p></p><figure data-type="image" data-version="v2" data-id="CeuM9hXvThdqCD0TdTULG" data-size="best-fit" data-align="center"><img src="https://tribe-eu.imgix.net/CeuM9hXvThdqCD0TdTULG?auto=compress,format" data-id="CeuM9hXvThdqCD0TdTULG"><figcaption class="!text-center !mx-auto !text-content-subdued !text-xs  !px-0.5 !my-1 !max-w-prose !mt-1 !rounded-none">Fig. 11: Configurations in ROKIT Navigator Client</figcaption></figure><p>The following configuration is an example a basic example configuration for ROKIT Navigator. Optimization and customization for your specific application may be required.</p><p>In the Client Motion section, you can set up the interface between the ROKIT Navigator and the vehicle controller (in this case, the PLC).</p><p></p><figure data-type="image" data-version="v2" data-id="5606MHr3NnvWFAEQmRzq5" data-size="best-fit" data-align="center"><img src="https://tribe-eu.imgix.net/5606MHr3NnvWFAEQmRzq5?auto=compress,format" data-id="5606MHr3NnvWFAEQmRzq5"><figcaption class="!text-center !mx-auto !text-content-subdued !text-xs  !px-0.5 !my-1 !max-w-prose !mt-1 !rounded-none">Fig. 12.1: Relevant settings in ROKIT Navigator -&gt; Configuration

</figcaption></figure><p><br>In the Client Sensor section, you can configure the connection to the laser scanner (through the ROKIT Locator) for e.g. obstacle avoidance.</p><p></p><figure data-type="image" data-version="v2" data-id="Z6l65cOur33ZCp8uw4dR3" data-size="best-fit" data-align="center"><img src="https://tribe-eu.imgix.net/Z6l65cOur33ZCp8uw4dR3?auto=compress,format" data-id="Z6l65cOur33ZCp8uw4dR3"></figure><figure data-type="image" data-version="v2" data-id="IPWiFZLf10yNm5QJKc1QH" data-size="best-fit" data-align="center"><img src="https://tribe-eu.imgix.net/IPWiFZLf10yNm5QJKc1QH?auto=compress,format" data-id="IPWiFZLf10yNm5QJKc1QH"></figure><figure data-type="image" data-version="v2" data-id="v7Mc1idDztcCQOPvT6med" data-size="best-fit" data-align="center"><img src="https://tribe-eu.imgix.net/v7Mc1idDztcCQOPvT6med?auto=compress,format" data-id="v7Mc1idDztcCQOPvT6med"></figure><figure data-type="image" data-version="v2" data-id="vn4TJIASGhrxAQiB8tM8q" data-size="best-fit" data-align="center"><img src="https://tribe-eu.imgix.net/vn4TJIASGhrxAQiB8tM8q?auto=compress,format" data-id="vn4TJIASGhrxAQiB8tM8q"></figure><figure data-type="image" data-version="v2" data-id="88uXLSbYtrtch9n179ZgI" data-size="best-fit" data-align="center"><img src="https://tribe-eu.imgix.net/88uXLSbYtrtch9n179ZgI?auto=compress,format" data-id="88uXLSbYtrtch9n179ZgI"></figure><p></p><figure data-type="image" data-version="v2" data-id="MTeQuvfEIJhGl7iqDkFyx" data-size="best-fit" data-align="center"><img src="https://tribe-eu.imgix.net/MTeQuvfEIJhGl7iqDkFyx?auto=compress,format" data-id="MTeQuvfEIJhGl7iqDkFyx"><figcaption class="!text-center !mx-auto !text-content-subdued !text-xs  !px-0.5 !my-1 !max-w-prose !mt-1 !rounded-none">Fig. 12.2: Relevant settings in ROKIT Navigator -&gt; Configuration

</figcaption></figure><p></p><p>In the Client Order and Client Application section, you can configure the interface to the Fleet Manager or to the Node-RED dashboard. Please be aware that the IP address of your MQTT server may be different from that shown in screenshot.</p><p>The ClientOrder.vda5050.mqtt.interface, ClientOrder.vda5050.mqtt.versionOverwrite, ClientApplication.manufacturer, and ClientApplication.serialNumber parameter determine your MQTT topic for the interface to the Node-RED dashboard/ Fleet Manager.</p><p></p><figure data-type="image" data-version="v2" data-id="f5Nztf5H3lFTe7T8nCAav" data-size="best-fit" data-align="center"><img src="https://tribe-eu.imgix.net/f5Nztf5H3lFTe7T8nCAav?auto=compress,format" data-id="f5Nztf5H3lFTe7T8nCAav"></figure><figure data-type="image" data-version="v2" data-id="BTr7BgMZjfDHrgyvtN3xQ" data-size="best-fit" data-align="center"><img src="https://tribe-eu.imgix.net/BTr7BgMZjfDHrgyvtN3xQ?auto=compress,format" data-id="BTr7BgMZjfDHrgyvtN3xQ"></figure><figure data-type="image" data-version="v2" data-id="VMkX0zqmJrv9H14bsYpmH" data-size="best-fit" data-align="center"><img src="https://tribe-eu.imgix.net/VMkX0zqmJrv9H14bsYpmH?auto=compress,format" data-id="VMkX0zqmJrv9H14bsYpmH"><figcaption class="!text-center !mx-auto !text-content-subdued !text-xs  !px-0.5 !my-1 !max-w-prose !mt-1 !rounded-none">Fig. 12.3: Relevant settings in ROKIT Navigator -&gt; Configuration

</figcaption></figure><p></p><p>After configurating the ROKIT Navigator client, you can save it and configure the Node-RED dashboard (see this <a href="https://community.boschrexroth.com/ctrlx-automation-how-tos-qmglrz33/post/rokit-dashboard-with-node-red-for-ctrlx-automation-wlqrZRsOu1p4weS" rel="noopener noreferrer nofollow" class="text-interactive hover:text-interactive-hovered">link</a>) or your Fleet Manager. Finally, you can start Automatic Mode on the Navigator Client and send commands from Node-RED dashboard.</p><p></p><figure data-type="image" data-version="v2" data-id="PKACi7LOB6FmUi0kwJyPX" data-size="best-fit" data-align="center"><img src="https://tribe-eu.imgix.net/PKACi7LOB6FmUi0kwJyPX?auto=compress,format" data-id="PKACi7LOB6FmUi0kwJyPX"><figcaption class="!text-center !mx-auto !text-content-subdued !text-xs  !px-0.5 !my-1 !max-w-prose !mt-1 !rounded-none">Fig. 13: Node-RED Dashboard</figcaption></figure><p></p><p><strong>Related Links:</strong></p><ul><li><p>Regarding configuration tuning, you might also want to take a look at this <a href="https://community.boschrexroth.com/ctrlx-automation-how-tos-qmglrz33/post/cx-rokit-box-vda5050-o79a0yuePvzltHj" rel="noopener noreferrer nofollow" class="text-interactive hover:text-interactive-hovered">HowTo</a>.</p></li><li><p><a href="https://community.boschrexroth.com/ctrlx-automation-how-tos-qmglrz33/post/rokit-dashboard-with-node-red-for-ctrlx-automation-wlqrZRsOu1p4weS" rel="noopener noreferrer nofollow" class="text-interactive hover:text-interactive-hovered">ROKIT Dashboard with Node-RED for ctrlX AUTOMATION</a></p></li><li><p><a href="https://community.boschrexroth.com/ctrlx-os-store-apps-oc2pqqwn" rel="noopener noreferrer nofollow" class="text-interactive hover:text-interactive-hovered">ctrlX OS Store</a></p><ul><li><p><a href="https://community.boschrexroth.com/ctrlx-os-store-apps-oc2pqqwn/post/ctrlx-os---navigator-Xvx5N08RPsquL5m" rel="noopener noreferrer nofollow" class="text-interactive hover:text-interactive-hovered">ctrlX OS – Navigator​</a></p></li><li><p><a href="https://community.boschrexroth.com/ctrlx-os-store-apps-oc2pqqwn/post/ctrlx-os---locator-2qLaLjumnopMx4v" rel="noopener noreferrer nofollow" class="text-interactive hover:text-interactive-hovered">ctrlX OS – Locator​</a></p></li><li><p><a href="https://community.boschrexroth.com/ctrlx-os-store-apps-oc2pqqwn/post/ctrlx-os---motion-YSFFuOOjW6y44qO" rel="noopener noreferrer nofollow" class="text-interactive hover:text-interactive-hovered">ctrlX OS - Motion</a></p></li><li><p><a href="https://community.boschrexroth.com/ctrlx-os-store-apps-oc2pqqwn/post/ctrlx-os---plc-aOZcdG2bmV0fNRE" rel="noopener noreferrer nofollow" class="text-interactive hover:text-interactive-hovered">ctrlX OS - PLC</a></p></li><li><p><a href="https://community.boschrexroth.com/ctrlx-os-store-apps-oc2pqqwn/post/ctrlx-plc-engineering-mOe5IPZnQ4xvbbe" rel="noopener noreferrer nofollow" class="text-interactive hover:text-interactive-hovered">ctrlX PLC Engineering</a></p></li><li><p><a href="https://community.boschrexroth.com/ctrlx-os-store-apps-oc2pqqwn/post/ctrlx-automation---container-engine-ZUngpKh811KnaBg" rel="noopener noreferrer nofollow" class="text-interactive hover:text-interactive-hovered">ctrlX OS - Container Engine</a></p></li><li><p><a href="https://community.boschrexroth.com/ctrlx-os-store-apps-oc2pqqwn/post/ctrlx-automation---node-red-nBGxJdOCUJGvG4I" rel="noopener noreferrer nofollow" class="text-interactive hover:text-interactive-hovered">ctrlX OS - Node-RED</a></p></li></ul></li></ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Limitation on how many FSoE connections can I use]]></title>
            <description><![CDATA[Hello,

We have 40 axes that have STO via fieldbus and we have just one SAFEXC.12,

If we use one SAFEX in the IO Engineering we see that there are just 32 FSoE connections so if we want to handle 40 axes...]]></description>
            <link>https://community.boschrexroth.com/ctrlx-safety-lsqbavkc/post/limitation-on-how-many-fsoe-connections-can-i-use-Qetg8gA35hA8xSd</link>
            <guid isPermaLink="true">https://community.boschrexroth.com/ctrlx-safety-lsqbavkc/post/limitation-on-how-many-fsoe-connections-can-i-use-Qetg8gA35hA8xSd</guid>
            <dc:creator><![CDATA[ericvergara]]></dc:creator>
            <pubDate>Thu, 30 Jul 2026 08:46:14 GMT</pubDate>
            <content:encoded><![CDATA[<p>Hello,</p><p>We have 40 axes that have STO via fieldbus and we have just one SAFEXC.12,</p><p>If we use one SAFEX in the IO Engineering we see that there are just 32 FSoE connections so if we want to handle 40 axes we should use two SAFEX,</p><p>Also we have seen that the SAFEXC.15 has also the same limitation</p><figure data-align="center" data-size="best-fit" data-id="38WrWfks2ohcmyh4i1Lff" data-version="v2" data-type="image"><img data-id="38WrWfks2ohcmyh4i1Lff" src="https://tribe-eu.imgix.net/38WrWfks2ohcmyh4i1Lff?auto=compress,format"></figure><p>The question is, is this a hardware or a software limitation? Is there a way or is it planned in the future to have more FSoE connections?</p><p>Thank you,</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[External Encoder Motor Third Party]]></title>
            <description><![CDATA[Hello,

I'm trying to connect an asynchronous motor with an external encoder to a drive to set it up in a closed-loop system.

The drive is an XCS2-W0023ARN-02ADLM5 (R9114509431) with FWA-XD1-AXS-V-0612N-...]]></description>
            <link>https://community.boschrexroth.com/ctrlx-drive-5thklqt9/post/external-encoder-motor-third-party-7q1SjpkHds5cBZY</link>
            <guid isPermaLink="true">https://community.boschrexroth.com/ctrlx-drive-5thklqt9/post/external-encoder-motor-third-party-7q1SjpkHds5cBZY</guid>
            <category><![CDATA[CTRLXDRIVE]]></category>
            <dc:creator><![CDATA[NilSalvador]]></dc:creator>
            <pubDate>Thu, 30 Jul 2026 06:55:32 GMT</pubDate>
            <content:encoded><![CDATA[<p>Hello,</p><p>I'm trying to connect an asynchronous motor with an external encoder to a drive to set it up in a closed-loop system.</p><p>The drive is an XCS2-W0023ARN-02ADLM5 (R9114509431) with FWA-XD1-AXS-V-0612N-NN-00 firmware , the motor is a TECHTOP T1A712-4 asynchronous motor, and the encoder is a SICK DFS60B-BDAK04096.</p><p>If I connect the motor in open-loop mode (without the encoder), it works perfectly, but when I connect the encoder and switch to closed-loop mode, I get a “disturbed signal” error. I've checked the continuity and the cable connections, and everything shows proper continuity.</p><p>Backup Parameters are in the Zip File</p><p>Thanks,</p><p></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[MB_GroupJog Unlisted Fault]]></title>
            <description><![CDATA[I have a fault when using the MB_GroupJog with a rapid change of the enable bit. I saw this in the application and was able to reproduce with the following code. I think it may be related to the low ...]]></description>
            <link>https://community.boschrexroth.com/ctrlx-motion-itqsnz6e/post/mb-groupjog-unlisted-fault-vfegJH8Cs3gLPiF</link>
            <guid isPermaLink="true">https://community.boschrexroth.com/ctrlx-motion-itqsnz6e/post/mb-groupjog-unlisted-fault-vfegJH8Cs3gLPiF</guid>
            <dc:creator><![CDATA[4acre]]></dc:creator>
            <pubDate>Wed, 29 Jul 2026 23:19:06 GMT</pubDate>
            <content:encoded><![CDATA[<p>I have a fault when using the MB_GroupJog with a rapid change of the enable bit. I saw this in the application and was able to reproduce with the following code. I think it may be related to the low relative acceleration and jerk. </p><figure data-align="center" data-size="best-fit" data-id="sqEM1cO2jNJORXWTjr3MS" data-version="v2" data-type="image"><img data-id="sqEM1cO2jNJORXWTjr3MS" src="https://tribe-eu.imgix.net/sqEM1cO2jNJORXWTjr3MS?auto=compress,format"></figure><p>In most cases when it faults the result is the following: </p><figure data-align="center" data-size="best-fit" data-id="rceybphnfo9vy6O00TGRE" data-version="v2" data-type="image"><img data-id="rceybphnfo9vy6O00TGRE" src="https://tribe-eu.imgix.net/rceybphnfo9vy6O00TGRE?auto=compress,format"></figure><p>However I have seen the following on occasion: </p><figure data-align="center" data-size="best-fit" data-id="vo9Kvij2pXdipJF3w0qFD" data-version="v2" data-type="image"><img data-id="vo9Kvij2pXdipJF3w0qFD" src="https://tribe-eu.imgix.net/vo9Kvij2pXdipJF3w0qFD?auto=compress,format"></figure><p>Why is the fault only properly generated in certain circumstances? What is the proper way to manage the attempt to jog in quick succession? </p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How to run LabJack LJM Application on ctrlX CORE for oversampling data]]></title>
            <description><![CDATA[OVERVIEW

LabJack devices are accessed using the native LabJack LJM library. Python applications use the labjack-ljm Python wrapper to communicate with this library.

On ctrlX CORE, the native library, ...]]></description>
            <link>https://community.boschrexroth.com/store-and-how-to-how-to-qmglrz33/post/how-to-run-labjack-ljm-application-on-ctrlx-core-for-oversampling-data-lMtqhPCusgTLVes</link>
            <guid isPermaLink="true">https://community.boschrexroth.com/store-and-how-to-how-to-qmglrz33/post/how-to-run-labjack-ljm-application-on-ctrlx-core-for-oversampling-data-lMtqhPCusgTLVes</guid>
            <category><![CDATA[CTRLXCORE]]></category>
            <category><![CDATA[HOWTO]]></category>
            <category><![CDATA[PYTHON]]></category>
            <category><![CDATA[SNAP]]></category>
            <category><![CDATA[CTRLXOS]]></category>
            <category><![CDATA[LABJACK]]></category>
            <category><![CDATA[DAQ]]></category>
            <dc:creator><![CDATA[AkashD]]></dc:creator>
            <pubDate>Wed, 29 Jul 2026 18:48:29 GMT</pubDate>
            <content:encoded><![CDATA[<h2 id="b98d9587-74c8-474d-933f-3231791983b4" data-toc-id="b98d9587-74c8-474d-933f-3231791983b4" class="text-xl">Overview</h2><p>LabJack devices are accessed using the native LabJack LJM library. Python applications use the <code>labjack-ljm</code> Python wrapper to communicate with this library.</p><p>On ctrlX CORE, the native library, Python application and required configuration files must be packaged inside a snap.</p><p>Here is the simpler way to install LabJack LJM library in ctrlX OS to communicate with the LabJack T7 device.</p><div data-type="table-of-content"></div><h2 id="34ec718a-2ff0-4354-baa4-5b7ba9c1a4e5" data-toc-id="34ec718a-2ff0-4354-baa4-5b7ba9c1a4e5" class="text-xl">Prerequisites</h2><h3 id="cce6648d-b8f1-4f2a-b4f7-f13904022c22" data-toc-id="cce6648d-b8f1-4f2a-b4f7-f13904022c22" class="text-lg">Hardware</h3><ul><li><p>ctrlX CORE X3/X5/X7</p></li><li><p>LabJack T7</p></li><li><p>Engineering PC</p></li><li><p>Ethernet Cables</p></li><li><p>Signal source for testing AIN0 and AIN1 on LabJack T7</p></li></ul><h3 id="b0c0d69a-4197-4c04-8b44-487ccd8ac536" data-toc-id="b0c0d69a-4197-4c04-8b44-487ccd8ac536" class="text-lg">Software</h3><ul><li><p>ctrlX OS v3.6</p></li><li><p>ctrlX WORKS v3.6</p></li><li><p>App Build Enviornment</p></li><li><p>Snapcraft</p></li><li><p>LabJack LJM 1.23.4 Linux x64 Package</p></li><li><p>Python 3.10</p></li></ul><h3 id="43cdfa29-0611-4c73-8521-a7d92cdd0f1a" data-toc-id="43cdfa29-0611-4c73-8521-a7d92cdd0f1a" class="text-lg">Network configuration</h3><p>The ctrlX CORE and LabJack T7 must be reachable on the same network. For example -</p><ul><li><p>ctrlX CORE - 192.168.1.1</p></li><li><p>LabJack T7 - 192.168.1.9</p></li></ul><h2 id="7d3f17aa-4127-4805-bc44-b65a0658d619" data-toc-id="7d3f17aa-4127-4805-bc44-b65a0658d619" class="text-xl">Step 1: Create the project structure</h2><ul><li><p>Download the LabJack LJM installer for Linux x64 (same as our app build environment) from this external link -- <a href="https://support.labjack.com/docs/ljm-software-installer-downloads-t4-t7-t8-digit" rel="noopener noreferrer nofollow" class="text-interactive hover:text-interactive-hovered">https://support.labjack.com/docs/ljm-software-installer-downloads-t4-t7-t8-digit</a></p></li><li><p>After download, extract the zip file and place the installer file under the folder named 'driver'</p></li><li><p>Create the project structure as shown in the image</p></li></ul><figure data-type="image" data-version="v2" data-id="K9JmTLJIwTJsQPIYeflYA" data-size="best-fit" data-align="left"><img src="https://tribe-eu.imgix.net/K9JmTLJIwTJsQPIYeflYA?auto=compress,format" data-id="K9JmTLJIwTJsQPIYeflYA"><figcaption class="!text-center !mx-auto !text-content-subdued !text-xs  !px-0.5 !my-1 !max-w-prose !mt-1 !rounded-none">Fig. 1: Project structure</figcaption></figure><p></p><h2 id="3e4f9fa2-7f8c-4045-9ac4-6022b313945a" data-toc-id="3e4f9fa2-7f8c-4045-9ac4-6022b313945a" class="text-xl">Step 2: Create the python script</h2><p>Create the python script with the name 'main.py' and place it at the root location of the project folder.</p><p>This python script acts as a wrapper for the LJM library. It tries to establish the connection with LabJack T7, get the device info and reads both analog input channels every 500 milliseconds.</p><pre><code>import time 
from datetime import datetime 
from labjack import ljm 

DEVICE_IP = "192.168.1.9" 
CHANNEL_NAMES = ["AIN0", "AIN1"] 
READ_INTERVAL = 0.5 
TEST_DURATION = 5 


def main(): 
    handle = None 
    
    try: # Open T7 over Ethernet using fixed IP 
        print(f"Trying to connect to T7 at {DEVICE_IP} ...", flush=True) 
        handle = ljm.open(ljm.constants.dtT7, ljm.constants.ctETHERNET, DEVICE_IP) 
        
        print(f"Opened the handle", flush=True) # Get and print device info 
        
        dev_type, conn_type, serial, ip_int, port, max_bytes = ljm.getHandleInfo(handle) 
        print(" Connected to LabJack T7") 
        print(f" Device Type : {dev_type}") 
        print(f" Connection Type : {conn_type}") 
        print(f" Serial Number : {serial}") 
        print(f" IP Address : {ljm.numberToIP(ip_int)}") 
        print(f" Port : {port}") 
        print(f" Max Bytes / MB : {max_bytes}", flush=True) 
        print("\nStarting simple reads (no stream, no file)...", flush=True) 
        
        start_time = time.time() read_count = 0 
        while time.time() - start_time &lt; TEST_DURATION: # Read all requested channels in one call 
            values = ljm.eReadNames(handle, len(CHANNEL_NAMES), CHANNEL_NAMES) 
            read_count += 1 
            ts = datetime.now().strftime("%H:%M:%S.%f")[:-3] 
            line = f"[{ts}] Read #{read_count}: " + ", ".join( f"{name} = {val:.5f} V" for name, val in zip(CHANNEL_NAMES, values) ) 
            print(line) 
            
            time.sleep(READ_INTERVAL) 
            
        print(f"\nFinished test. Total reads: {read_count}", flush=True) 
    
    except ljm.LJMError as e: 
        print(" LJM Library Error:", e, flush=True) 
        
    except Exception as e: 
        print(" Unexpected Error:", e, flush=True) 
        
    finally: 
        if handle is not None: 
            try: 
                ljm.close(handle) 
                print("Closed T7 handle.", flush=True) 
                
            except Exception: 
                print("Got an expection while closing handle", flush=True) 
                
                
if __name__ == "__main__": 
    main()</code></pre><h2 id="189c518e-a793-447f-8521-095d6ac82342" data-toc-id="189c518e-a793-447f-8521-095d6ac82342" class="text-xl">Step 3: Create snapcraft YAML file</h2><p>Create the snapcraft.yaml and place it under the 'snap' folder</p><pre><code>name: ctrlx-labjack-ljm
base: core22
version: '1.2'
summary: LabJack LJM driver for ctrlX CORE 
description: LabJack LJM runtime (C library) packaged for ctrlX CORE. GUI tools are stripped.
grade: stable
confinement: strict

architectures:
  - build-on: [amd64, arm64]
    build-for: [amd64]
  - build-on: [amd64, arm64]
    build-for: [arm64]

parts:
  ljm:
    plugin: dump
    source: ./driver
    stage-packages:
      - libusb-1.0-0
    #   - libstdc++6
    #   - libc6
    override-build: |
      set -eux

      cd "$SNAPCRAFT_PART_SRC"

      chmod +x ./labjack_ljm_installer.run

      ### Install into the snap's filesystem (not the host)
      
      ./labjack_ljm_installer.run --accept --quiet --target "$SNAPCRAFT_PART_INSTALL/usr/local"
      
      ### Remove GUI app (Kipling) and host-specific bits we don't want on ctrlX.
      rm -rf "$SNAPCRAFT_PART_INSTALL/usr/local/labjack_kipling" || true
      rm -f  "$SNAPCRAFT_PART_INSTALL/usr/local/bin/labjack_kipling" || true
      rm -rf "$SNAPCRAFT_PART_INSTALL/opt" || true
      
      echo "Installed LabJack LJM into $SNAPCRAFT_PART_INSTALL/usr/local"

      ### Add a small test script for runtime verification
      mkdir -p "$SNAPCRAFT_PART_INSTALL/bin"
      cat &gt; "$SNAPCRAFT_PART_INSTALL/bin/ljm-info" &lt;&lt; 'EOF'
      #!/bin/sh
      export LD_LIBRARY_PATH="$SNAP/usr/local/ljm/lib:$SNAP/usr/local/lib:$LD_LIBRARY_PATH"
      echo "LJM libs:"
      ls -l "$SNAP/usr/local/ljm/lib"/libLabJackM.so* 2&gt;/dev/null || echo "libLabJackM not found"

      echo "LJM driver installed inside snap at: $SNAP/usr/local"
      echo "Files:"
      
      ls -1 "$SNAP/usr/local" || true
      EOF
      
      chmod +x "$SNAPCRAFT_PART_INSTALL/bin/ljm-info"

  python-ljm:
    plugin: python
    source: .
    # Install LabJack's Python package (gives you `from labjack.ljm import ljm`)
    python-packages:
      - LabJackPython
    after: [ljm]
    override-build: |
      set -eux
      snapcraftctl build

      # Place your script inside the snap (adjust name/path as you like)
      mkdir -p "$SNAPCRAFT_PART_INSTALL/app"
      cp main.py "$SNAPCRAFT_PART_INSTALL/app/main.py"

      # Wrapper to run the script with correct env + library path
      mkdir -p "$SNAPCRAFT_PART_INSTALL/bin"
      cat &gt; "$SNAPCRAFT_PART_INSTALL/bin/ljm-python-demo" &lt;&lt; 'EOF'
      
      #!/bin/sh
      # Make sure LJM's shared library is visible to Python
      export LD_LIBRARY_PATH="$SNAP/usr/local/ljm/lib:$SNAP/usr/local/lib:$LD_LIBRARY_PATH"
      exec "$SNAP/usr/bin/python3" "$SNAP/app/main.py"
      EOF
      chmod +x "$SNAPCRAFT_PART_INSTALL/bin/ljm-python-demo"

apps:
  ljm-python-demo:
    command: bin/ljm-python-demo
    environment:
      LD_LIBRARY_PATH: "$SNAP/usr/local/ljm/lib:$SNAP/usr/local/lib:$LD_LIBRARY_PATH"
    plugs:
      - raw-usb
      - network
      - hardware-observe

plugs:
  raw-usb:
    interface: raw-usb
  hardware-observe:
    interface: hardware-observe</code></pre><p></p><h2 id="36a888ec-4def-431a-9136-a702de4f506f" data-toc-id="36a888ec-4def-431a-9136-a702de4f506f" class="text-xl">Step 4: Build the snap</h2><p>From the project root, run:</p><pre><code>snapcraft clean
snapcraft</code></pre><p>After the successful packaging, the generated file should be similar to:</p><p><code>ctrlx-labjack-ljm_1.2.0_amd64.snap</code></p><p>Download the file to your computer</p><h2 id="e8048fc1-e17f-428e-9157-acc244727a55" data-toc-id="e8048fc1-e17f-428e-9157-acc244727a55" class="text-xl">Step 5: Install the snap on ctrlX CORE</h2><p>Open the ctrlX OS web interface and follow these steps:</p><ol><li><p>Open <strong>Settings</strong></p></li><li><p>Open <strong>Apps</strong></p></li><li><p>Select <strong>Install from file</strong></p></li><li><p>Select <code>labjack-ljm_1.0.0_amd64.snap</code></p></li><li><p>Complete the installation</p></li></ol><figure data-type="image" data-version="v2" data-id="JqpuMqnB1Hqp15JUKup4m" data-size="best-fit" data-align="center"><img src="https://tribe-eu.imgix.net/JqpuMqnB1Hqp15JUKup4m?auto=compress,format" data-id="JqpuMqnB1Hqp15JUKup4m"></figure><p></p><h2 id="0548b6c6-da31-486b-af56-3f54ccffd9b1" data-toc-id="0548b6c6-da31-486b-af56-3f54ccffd9b1" class="text-xl">Step 5: Check the logbook for the output</h2><figure data-type="image" data-version="v2" data-id="vNPx5jLn5wpKMRLLkbrbm" data-size="best-fit" data-align="center"><img src="https://tribe-eu.imgix.net/vNPx5jLn5wpKMRLLkbrbm?auto=compress,format" data-id="vNPx5jLn5wpKMRLLkbrbm"><figcaption class="!text-center !mx-auto !text-content-subdued !text-xs  !px-0.5 !my-1 !max-w-prose !mt-1 !rounded-none">Fig. 2.: Output logs in Logbook from the python script stating successful connection to LabJack T7 device</figcaption></figure><h2 id="d9ba6c71-8606-4cdb-8f31-b4fd357fdcaa" data-toc-id="d9ba6c71-8606-4cdb-8f31-b4fd357fdcaa" class="text-xl">Related links</h2><ul><li><p><a href="https://community.boschrexroth.com/ctrlx-os-store-apps-oc2pqqwn?articles.all20articles.filters=JTVCJTVE" rel="noopener noreferrer nofollow" class="text-interactive hover:text-interactive-hovered">ctrlX OS Store</a></p><ul><li><p><a href="https://community.boschrexroth.com/ctrlx-os-store-apps-oc2pqqwn/post/sdk-for-ctrlx-automation-xDk5sDAU4HTxpO7" rel="noopener noreferrer nofollow" class="text-interactive hover:text-interactive-hovered">SDK for ctrlX AUTOMATION</a></p></li><li><p><a href="https://community.boschrexroth.com/ctrlx-os-store-apps-oc2pqqwn/post/ctrlx-works-xOJLFLUiK4NGm5H" rel="noopener noreferrer nofollow" class="text-interactive hover:text-interactive-hovered">ctrlX WORKS</a></p></li></ul></li><li><p><a href="https://support.labjack.com/docs/ljm-software-installer-downloads-t4-t7-t8-digit" rel="noopener noreferrer nofollow" class="text-interactive hover:text-interactive-hovered">https://support.labjack.com/</a></p></li></ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[ctrlX OPC UA Client fails with Bad_SecurityChecksFailed (0x80130000) against a Siemens WinCC Professional OPC UA Server — works fine from a generic external client with identical settings]]></title>
            <description><![CDATA[I'm trying to connect ctrlX's OPC UA Client app (rexroth-opcua-client) to a Siemens WinCC Professional OPC UA Server (OpcUaServerWinCC.exe, TIA Portal V20), and every connection attempt fails with ...]]></description>
            <link>https://community.boschrexroth.com/communication-5ojipb0n/post/ctrlx-opc-ua-client-fails-with-bad-securitychecksfailed-0x80130000-BUlEsOUDMmKr3cz</link>
            <guid isPermaLink="true">https://community.boschrexroth.com/communication-5ojipb0n/post/ctrlx-opc-ua-client-fails-with-bad-securitychecksfailed-0x80130000-BUlEsOUDMmKr3cz</guid>
            <category><![CDATA[CTRLXCORE]]></category>
            <category><![CDATA[HOWTO]]></category>
            <dc:creator><![CDATA[santobedi]]></dc:creator>
            <pubDate>Wed, 29 Jul 2026 13:48:06 GMT</pubDate>
            <content:encoded><![CDATA[<p>I'm trying to connect ctrlX's OPC UA Client app (<code>rexroth-opcua-client</code>) to a Siemens WinCC Professional OPC UA Server (<code>OpcUaServerWinCC.exe</code>, TIA Portal V20), and every connection attempt fails with <code>Bad_SecurityChecksFailed</code> (<code>0x80130000</code>); this happens identically whether I configure <code>SecurityPolicy</code>/<code>MessageSecurityMode</code> as <code>None</code> or <code>BESTAVAILABLE</code>, always using Anonymous authentication. The odd part: connecting to the exact same server (<code>opc.tcp://&lt;ip&gt;:4862</code>, same Anonymous + None settings) works perfectly using a generic Python OPC UA client (<code>python-opcua</code>) run from my own laptop, both locally on the WinCC machine and from a separate machine over the same network path, so the server does accept anonymous unauthenticated sessions, and it's not a firewall/network-reachability issue. I've also ruled out certificate trust in either direction: no rejected/untrusted certificate ever appears in WinCC's certificate stores after a ctrlX connection attempt, and deleting ctrlX's own Application Instance Certificate and retrying produces the same error. Has anyone run into this specific error connecting ctrlX's OPC UA Client to a third-party server (particularly Siemens WinCC), or know what might differ in how ctrlX constructs its session/identity request compared to a standard client stack?<br><br>Update: I tested with Telegraf app, it can connect the OPC UA server (same server, same Anonymous + None settings), it works fine. The issue is only with OPC UA Client app.</p>]]></content:encoded>
        </item>
    </channel>
</rss>