HX520 / K520 MCU Manual
Helix 520 /Karbon 520 Series Industrial Computer MCU Manual

1- Revision History
Revision
Description
Date
1.0
Initial Release
05/27/2025
1.5
Updated for K520 Series Release
07/23/2025
2- Documents and Downloads
3- Feature Overview
The Helix 520 and Karbon 520 Series have an embedded power sequencing controller and support isolated Digital Input Output (DIO) and Controller Area Network (CAN) add-in-cards. OnLogic may provide updates for the embedded sequencing controller over the product’s lifetime for feature enablement or product improvements.
The DIO module has 8 input and 8 output pins, an intrusion detection pin, two contact modes, and supports firmware updates. OnLogic provides our Low Power Micro Controller Unit (LPMCU) command line tool to interact with the DIO microcontroller. Additionally, a custom Python package is provided in Section 2 to programmatically embed LPMCU tool functionality in scripting environments.
The Helix 520 and Karbon 520 Series CAN add-in-card supports a 2 channel CAN 2.0 A/B interface with configurable bitrates from 100k – 1M. It can be programmed on Linux using the socket-can interface, or on Windows via a custom C++ API. More information can be found on the CAN module in Section 5.
3.1- MCU Firmware Update Process
The Helix 520 and Karbon 520 Series support In-System Firmware Updates to both the DIO and power sequence microcontroller using the LPMCU tool from the download link provided in Section 2. To update the embedded sequence controller, the communications port must be enabled in the BIOS (see 3.1.1) before running either the Linux or Windows tool (3.1.2 / 3.1.3). The DIO controller VCOM port is always enabled when the add-in card is installed.
Enable Communication Port in Sequence MCU
Power on the system and repeatedly press the “Delete” key to access the “Front Page” menu
Choose “Setup Utility”
Navigate to Advanced > PCH-IO Configuration > Serial IO Configuration
Locate “UART0 Controller”
Change it to “Communication port <COM>” to enable communication port.
Press F10 to Save & Exit
Using Windows command prompt:
$$ lpmcu-tool.exe -p COMx version
[yyyy-mm-ddThh:mm:ssZ INFO lpmcu_actions] Opening COMx...
[yyyy-mm-ddThh:mm:ssZ INFO lpmcu_actions::connection] Reading the firmware version...
0.0.2
$ lpmcu-tool.exe -p COMx flash path-to-binary/xxxx.bin
[yyyy-mm-ddThh:mm:ssZ INFO lpmcu_actions] Opening COMx...
[yyyy-mm-ddThh:mm:ssZ INFO lpmcu_actions] Reading update file: "path-to-binary/xxxx.bin"
[yyyy-mm-ddThh:mm:ssZ INFO lpmcu_actions::connection] Erasing flash region 000xxxxx-000yyyyy
[yyyy-mm-ddThh:mm:ssZ INFO lpmcu_actions::connection] Writing binary
[yyyy-mm-ddThh:mm:ssZ INFO lpmcu_actions::connection] Requesting MCU reset at next reboot
Done! Shut down system to apply the update.
After completing the firmware update, the system must be shut down (reaching S5 state) in order to allow the new firmware to be loaded and executed properly.
Using Linux-Ubuntu Terminal
// access the lpmcu-tool tool
$ chmod +x ./lpmcu-tool
// to find the ttyS number at MMIO that has baud rate 115200
$ dmesg | grep -i ttyS
$ ./lpmcu-tool -p /dev/ttySx version
$ ./lpmcu-tool -p /dev/ttySx flash xxxx.bin
4- Helix 520 / Karbon 520 Series Isolated DIO Module
The optional digital input/output (DIO) add-in-card (USB-16DIO-01) adds 8 digital inputs, 8 digital outputs, and an additional intrusion (INT) pin to the system.
4.1- DIO Pinouts and Definitions
Pin
Definition
Pin
Definition
-
ISO_GND
+
Power (VIN)/VIO+
DI0
Digital input pin 0
DO0
Digital output pin 0
DI1
Digital input pin 1
DO1
Digital output pin 1
DI2
Digital input pin 2
DO2
Digital output pin 2
DI3
Digital input pin 3
DO3
Digital output pin 3
DI4
Digital input pin 4
DO4
Digital output pin 4
DI5
Digital input pin 5
DO5
Digital output pin 5
DI6
Digital input pin 6
DO6
Digital output pin 6
DI7
Digital input pin 7
DO7
Digital output pin 7
INT
Intrusion
GND*
ISO_GND
*GND is provided as a return path for the intrusion detection switch. It is shared with the DIO - pin (ISO_GND).
4.2- DIO Functionality
The outputs function as open drains. The inputs are high impedance. Both DI and DO can be configured in two modes as detailed in the table below.
Wet contact mode (default)
Dry contact mode
DI
logic 0 - 10 to 30VDC
logic 1 - 0 to 3VDC
logic 0 - shorted to GND
logic 1 - Open
DO
power is supplied externally (5 - 30V)
internal powered
DO Wet Contact Mode (Suitable for Inductive Load Operation)
To function properly, pin V+ of the module should be connected to external power and ground. The high side of the load should be connected to the external power source, and the low side to the module DO pin. Load current should not exceed 150 mA. Voltage ranges should be 5 V to 30 V.
Setup required for Output:

DO Dry-Contact Mode
Voltage is provided by the system. Each DO will output 11 V - 12.6 V when active.
Setup required for Output:

DI Wet Contact Mode
There is no internal pull up to the DI[0:7] pins when set to WET mode. Externally supplied 5 - 30V is recognized as logic 0 and 0 - 3V as logic 1 when DI[0:7] pins are set to wet contact mode.
Setup required for Input:

DI Dry Contact Mode
When the contact type is set to DRY mode, DI[0:7] are pulled up to the internal isolated ~12V supply. An open/floating connection is recognized as logic 0 and a short to GND as logic 1 when DI[0:7] pins are set to dry contact mode.
Setup required for Input:

4.3- Device Usage
The DIO card uses the USB-CDC communication protocol. On Windows, it will show up as “USB Serial Device (COMx)” in the device manager. On Linux, it will show up as “/dev/ttyACMx” in the serial device list.
DIO Programming
The pin states and contact types of DIO add-in-card can be controlled and read from using the LPMCU and Python API.
Command Summary of LPMCU
Command
Description
Parameters
Returns
get-di
Read digital input pin state
Pin val (0-7)
(false:logic 0, true: logic 1)
get-do
Read digital output pin state
Pin val (0-7)
(false:logic 0, true: logic 1)
set-do
Set digital output pin state
Pin val (0-7) | state (false:low, true:high)
set-di-contact
Set digital input contact type*
(false:wet, true:dry)
set-do-contact
Set digital output contact type*
(false:wet, true:dry)
get-di-contact
Read digital input contact type*
(false:wet, true:dry)
get-do-contact
Read digital output contact type*
(false:wet, true:dry)
*See section 4.2 for mode definitions.
From Windows Command Prompt:
// Set digital output contact type as dry
lpmcu-tool.exe -p COMx set-do-contact true
// Set digital output 0
lpmcu-tool.exe -p COMx set-do 0 true
// Clear digital output 0
lpmcu-tool.exe -p COMx set-do 0 false
// Read the state of digital input 0
lpmcu-tool.exe -p COMx get-di 0
Using Ubuntu Terminal:
// Access the lpmcu-tool tool
$ chmod +x ./lpmcu-tool
// Read the state of digital output 0
$ ./lpmcu-tool -p /dev/ttyACMx get-do 0
Python API Link:
Example code, setup instructions, and API specific documentation for the Python DIO utility are available below:
Full Link: https://github.com/onlogic/onlogic-m031-manager
4.4- Intrusion Detection
The Helix 520 / Karbon 520 Series provide an intrusion detection feature which is disabled by default. The DIO INT signal is assigned for intrusion detection. The intrusion detection feature must be enabled from the BIOS setup menu.
Enable Intrusion Detection Steps in BIOS
Navigate to the BIOS Setup Utility Menu.
Select Advanced.
Choose OnLogic Feature Configuration.
Go to Intrusion Detect.
Set to Enabled.
Intrusion Alert Mode
Power Button Emulation (SCI#)
When an intrusion event is detected in the Operating System environment by shorting the INT pin to ground, a power button press is triggered. The resulting action can be a shutdown, hibernation, sleep or nothing, depending on the OS configuration for power button events.
Perform Power Cycle (SMI#)
As soon as an intrusion event is detected, the system will shut down immediately.
4.5- DIO Firmware Update
The Helix 520 / Karbon 520 Series support In-System Firmware Updates for the DIO add-in-card using the lpmcu-tool which can be accessed within the link provided in Section 2. The commands are shown below with example outputs:
Using Windows Command Prompt
$ lpmcu-tool.exe -p COMx version
[yyyy-mm-ddThh:mm:ssZ INFO lpmcu_actions] Opening COMx...
[yyyy-mm-ddThh:mm:ssZ INFO lpmcu_actions::connection] Reading the firmware version...
0.0.2
$ lpmcu-tool.exe -p COMx flash path-to-binary/xxxx.bin
[yyyy-mm-ddThh:mm:ssZ INFO lpmcu_actions] Opening COMx...
[yyyy-mm-ddThh:mm:ssZ INFO lpmcu_actions] Reading update file: "path-to-binary/xxxx.bin"
[yyyy-mm-ddThh:mm:ssZ INFO lpmcu_actions::connection] Erasing flash region 000xxxxx-000yyyyy
[yyyy-mm-ddThh:mm:ssZ INFO lpmcu_actions::connection] Writing binary
[yyyy-mm-ddThh:mm:ssZ INFO lpmcu_actions::connection] Requesting MCU reset at next reboot
Done! Shut down system to apply the update.
Using Ubuntu-Linux Terminal
// access the lpmcu-tool tool
$ chmod +x ./lpmcu-tool
$ dmesg | grep -i ttyACM
$ ./lpmcu-tool -p /dev/ttyACMx version
$ ./lpmcu-tool -p /dev/ttyACMx flash xxxx.bin
After updating the firmware, an AC power cycle is required to allow the new firmware to be loaded and executed properly.
5- Helix 520 / Karbon 520 CAN Module
5.1- CAN-Bus Overview
The optional Helix 520 / Karbon 520 Series CAN (Controller Area Network) add-in-card (USB-02CAN-01) provides a two channel 2.0 A/B interface. The CAN bus consists of two main signal lines: CAN High and CAN Low. CAN High is biased at a high voltage potential of ~3.5 Volts and CAN Low is biased at a low voltage potential of ~1.5 Volts. A nominal voltage measured between the two signal lines will default to ~2.5 Volts, serving as a reliable indicator of the Helix 520 / Karbon 520 Series CAN bus operational status. Additionally, the CAN bus operates in two states: dominant and recessive. The dominant state is represented by logic level 0, while the recessive state is represented by logic level 1. The CAN interface supports configurable bitrates from 10k – 1M.

Diagram of a simplified CAN bus network.
The figure above shows: 1) One termination resistor at each end of the bus, 2) required endpoints of the bus acting as either transmitters or receivers, 3) High and Low CAN bus lines, and 4) additional (optional) network members connected on the same signal lines.
Further details about the CAN bus and its operation can be found in the HX520 Series Product Documentation page.
5.2- Driver Installation and Program Environment Setup
GitHub Repository Location: Driver installation instructions, program environment setup instructions, and example source code are found in this GitHub repository.
Full Link: https://github.com/onlogic/onlogic-f81604n-utilities
Linux: The driver for the CAN add-on-card is included in the Linux kernel and should be automatically present on Linux Kernel 2.6.2+. If not, refer to the Github README in the link above for instructions on installation and usage.
Windows: Helix 520 / Karbon 520 Series systems purchased with Windows pre-installed ship with the drivers pre-installed as well. For post-sale Windows deployments, please refer to the README in the link above.
6- Automotive Ignition Timings (Karbon 520 Series Only)
6.1- Feature Overview
The ignition sense feature can be used to turn Karbon 520 Series units on and off with a battery, or vehicle’s ignition. It can also be used in non-automotive applications using a switch instead.
An example configuration is shown below. The switch connects positive DC power to the IGN pin. The unit will turn on when power is applied to the IGN pin, and turn off when power is removed. These events have configurable delays.

6.2- Enabling and Controlling Ignition Sense
The Karbon 520 Series has three options for controlling automotive settings. The easiest method is to access the BIOS. OnLogic also provides our Low Power Micro Controller Unit (LPMCU) command line tool to interact with the microcontroller; the enabling method is described in Section 3.1.1. Additionally, a custom Python package is provided in Section 2 to programmatically embed LPMCU tool functionality in scripting environments.
Accessing Automotive Settings in the BIOS
Power on the system and repeatedly press the Del to access the BIOS
Arrow down and choose “Setup Utility” by pressing enter

Navigate to the Advanced tab and open the Automotive Ignition menu.

Set Automotive Mode Enabled

The menu reveals the configurable options that can be set by the user

Press F10 to save and exit.
Change Windows Power Button Settings
Ignition sensing simulates a power button press. In Windows, the default behavior of the power button press is to put the system into Sleep mode. You will want to change that to “Shut Down” instead.
Windows “fast startup” will interfere with ignition sensing, so this should be disabled.
6.3- Ignition Sensing Commands
Command
Description
Possible Values
Default
automotive-mode
Enable or disable system automotive ignition mode
true:enabled,
false:disabled
disabled
low-power-enable
Enter a low-power state when the system powers off.
The system can only wake from the power button or ignition switch in this power state.
true:enabled,
false:disabled
enabled
startup-timer
The number of seconds that ignition input must be stable before the system will power on, and input voltage must be recovered from low-voltage shutdown before power on.
1-36000 (seconds)
10
soft-off-timer
The number of seconds until the MCU requests that the system power down via a virtual power button event.
1-36000 (seconds)
10
hard-off-timer
The number of seconds until the MCU forces the system to power down. This starts only after the soft-off timer or low-voltage-timer expires.
1-36000 (seconds)
30
low-voltage-timer
The number of seconds that the input voltage can be lower than the shutdown threshold before the MCU requests that the system power down via a virtual power button event.
1-36000 (seconds)
300
shutdown-voltage
The threshold of input voltage level for triggering a low-voltage shutdown event.
1.0-48.2 (volts)
10.5
input-voltage
The current input voltage level of the system.
0-48 (volts)
6.4- Example Ignition Settings
The following shows an example configuration for automotive timings by LPMCU. Enter each command one by one.
The LPMCU commands set and get are used to configure and retrieve settings.
lpmcu set [command] [value]. This command is used to set or configure parameters related to the LPMCU.
lpmcu get [command]. This command is used to retrieve the current value of a specific LPMCU command.
For further help text, type lpmcu set help or lpmcu get help
From Windows Command Prompt:
// Enables system automotive ignition mode
lpmcu-tool.exe -p COMx set automotive-mode true
// Set the number of seconds that ignition input must be stable before system will power on as 60 seconds
lpmcu-tool.exe -p COMx set startup-timer 60
// Set the number of seconds until MCU requests system to power down via a virtual power button event as 30 seconds
lpmcu-tool.exe -p COMx set soft-off-timer 30
// Set the number of seconds until MCU forces system to power down as 180 seconds. This starts only after soft-off timer or low-voltage-timer expires
lpmcu-tool.exe -p COMx set hard-off-timer 180
// Set the threshold of input voltage level for triggering low-voltage shutdown event as 12.5 volts
lpmcu-tool.exe -p COMx set shutdown-voltage 12.5
// Set the number of seconds that the input voltage can be lower than the shutdown threshold before MCU requests system to power down via a virtual power button event as 120 sec
lpmcu-tool.exe -p COMx set low-voltage-timer 120
// Get the current input voltage level of the system
lpmcu-tool.exe -p COMx get input-voltage
Last updated