All pages
Powered by GitBook
1 of 1

Loading...

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

Helix 520 and Karbon 520 Series computers feature 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 improvement.

The DIO module has 8 input and 8 output pins, an intrusion detection pin, two contact modes, and supports firmware updates. OnLogic provides a Low-Power Microcontroller Unit (LPMCU) command line utility to interact with the DIO microcontroller. Additionally, a custom Python package is provided in to natively embed the LPMCU tool functionality in scripting environments.

The CAN add-in card provides a two-channel CAN 2.0 A/B interface with configurable bitrates from 100 kbit/s to 1 Mbit/s. The CAN bus can be controlled programmatically on Linux using the interface or on Windows via a custom C++ API. More information on the CAN module can be found in .

Helix 520 and Karbon 520 Series computers support In-System Firmware Updates to both the DIO and power sequence microcontroller using the LPMCU tool from the download link provided in . To update the embedded sequence controller, the communications port must be enabled in the BIOS (see 3.1.1) before running either the Windows or Linux tool (3.1.2 / 3.1.3). The DIO controller VCOM port is always enabled when the add-in card is installed.

  1. Power on the system and repeatedly press the “Delete” key to access the “Front Page” menu

  2. Choose “Setup Utility”

  3. Navigate to Advanced > PCH-IO Configuration > Serial IO Configuration

  4. Locate “UART0 Controller”

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.

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.

Pin
Definition
Pin
Definition

*GND is provided as a return path for the intrusion detection switch. It is shared with the DIO - pin (ISO_GND).

The digital outputs (DO) are open-drain, and the digital inputs (DI) are high-impedance. Both DI and DO support two operating modes: wet contact and dry contact. The table below defines the logic levels for each mode based on the voltage state at the DIO terminal.

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:

Voltage is provided by the system. Each DO will output 11 V - 12.6 V when active.

Setup required for Output:

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:

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:

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.

The pin states and contact types of the DIO add-in-card can be controlled and read from using the LPMCU tool and Python API.

Command Summary of LPMCU

*See section 4.2 for mode definitions.

From Windows Command Prompt:

Using Ubuntu Terminal:

Python API Link:

Example code, setup instructions, and API specific documentation for the Python DIO utility are available below:

Full Link:

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.

  1. Navigate to the BIOS Setup Utility Menu.

  2. Select Advanced.

  3. Choose OnLogic Feature Configuration.

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.

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:

After updating the firmware, an AC power cycle is required to allow the new firmware to be loaded and executed properly.

The optional Helix 520 / Karbon 520 Series CAN add-in card (USB-02CAN-01) provides a two-channel CAN 2.0 A/B interface. The CAN bus consists of two signal lines: CAN High and CAN Low. In the dominant state, CAN High is driven to a high voltage potential of ~3.5 Volts and CAN Low is driven to a low voltage potential of ~1.5 Volts. A nominal voltage of ~2.5 Volts measured on each signal line relative to ground while the bus is idle serves 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 10 kbit/s to 1 Mbit/s.

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.

GitHub Repository Location: Driver installation instructions, program environment setup instructions, and example source code are found in .

Full Link:

Linux: The driver for the CAN add-in-card is included in the Linux kernel and should automatically be 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. To install the CAN add-in-card driver on non-OEM provided Windows images, please refer to the README in the link above.

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.

The Karbon 520 Series has three options for controlling automotive settings. The simplest method is to set them through the dedicated BIOS page. The LPMCU command-line tool can also configure automotive settings, provided that the access port in Windows is correctly enabled as described in . Additionally, the custom Python package provided in Section 2 can programmatically embed ignition sensing feature control within 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. Change the power button press behavior to “Shut Down” instead.

  • Windows “fast startup” will interfere with ignition sensing, so this should be disabled.

The following shows an example configuration for automotive timings by the LPMCU command line utility. Enter each command consecutively.

The set and get commands featured within the LPMCU tool 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:

Change it to “Communication port <COM>” to the enable communication port.

  • Press F10 to Save & Exit

  • 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

    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)

    Go to Intrusion Detect.
  • Set to Enabled.

  • 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)

    1.5

    Updated for K520 Series Release

    07/23/2025

    Description

    Link

    LPMCU Tool and Python Package

    Download

    CAN BUS Driver Installation and Program Environment

    Instructions and Repository Link

    -

    ISO_GND

    +

    Power (VIN)/VIO+

    DI0

    Wet Contact Mode (Default Mode of Operation)

    Dry Contact Mode

    DI

    Logic 1: 0 to 3 VDC

    Logic 0: 5 to 30 VDC (from external source)

    Logic 1: Open

    Logic 0: Shorted to GND

    DO

    Low-side switch.

    Logic 1: Floating. Pulled high by an external source (5 to 30 VDC) when connected through a resistive or inductive load.

    Logic 0: Ground. Low-impedance path to isolated ground.

    Supply voltage (5-30 VDC) must be provided externally.

    Command

    Description

    Parameters

    Returns

    get di

    Read digital input pin state

    Pin val (0-7)

    (false:logic 0, true: logic 1)

    Command

    Description

    Possible Values

    Default

    automotive-mode

    Enable or disable system automotive ignition mode

    true:enabled,

    false:disabled

    disabled

    2- Documents and Downloads

    3- Feature Overview

    3.1- MCU Firmware Update Process

    3.1.1- Enable Communication Port in Sequence MCU

    3.1.2- Using Windows command prompt:

    3.1.3- Using Linux-Ubuntu Terminal

    4- Helix 520 / Karbon 520 Series Isolated DIO Module

    4.1- DIO Pinouts and Definitions

    4.2- DIO Functionality

    DO Wet Contact Mode (Suitable for Inductive Load Operation)

    DO Dry Contact Mode

    DI Wet Contact Mode

    DI Dry Contact Mode

    4.3- Device Usage

    DIO Programming

    4.4- Intrusion Detection

    Enable Intrusion Detection Steps in BIOS

    Intrusion Alert Mode

    4.5- DIO Firmware Update

    Using Windows Command Prompt

    Using Ubuntu-Linux Terminal

    5- Helix 520 / Karbon 520 CAN Module

    5.1- CAN-Bus Overview

    5.2- Driver Installation and Program Environment Setup

    6- Automotive Ignition Timings (Karbon 520 Series Only)

    6.1- Feature Overview

    6.2- Enabling and Controlling Ignition Sense

    6.3- Ignition Sensing Commands

    6.4- Example Ignition Settings

    Section 2
    SocketCAN
    Section 5
    Section 2
    https://github.com/onlogic/onlogic-m031-manager
    this GitHub repository
    https://github.com/onlogic/onlogic-f81604n-utilities
    Section 3.1.1

    Digital input pin 0

    Logic 1: High. Pulled high by internal power (11-12.6 VDC). Logic 0: Ground. Low-impedance path to isolated ground.

    get do

    low-power-enable

    $$ 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.
    
    // 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
    // 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
    // Access the lpmcu-tool tool
    $ chmod +x ./lpmcu-tool
    
    // Read the state of digital output 0
    $ ./lpmcu-tool -p /dev/ttyACMx get do 0
    $ 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.
    
    // 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
    // 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