1. Home
  2. OnLogic Systems
  3. Rugged Line
  4. Karbon Series
  5. Karbon 800 Series Technical Resources

Karbon 800 Series Technical Resources

Documents and Downloads

Spec Sheets & Dimensional Drawings: K801 / K802 / K803 / K804

K800 Series Product Manual

K800 Series BIOS Manual

PuTTy Tool

Drivers

K800 Windows 11 Drivers ( or INF files for server deployment)

K800 Windows 10 Drivers (Follow our guide for Installing via Device Manager)

BIOS Updates

Bios VersionLink
B005Download
Update the BIOS with the downloaded file(s) above. You can follow this how-to guide for assistance on installing the update.
You can check the current BIOS version of your system within the BIOS itself. Navigate to:
Setup Utility -> Press Up to show the current BIOS version

Microcontroller Updates

Microcontroller VersionChangelogLink
v1.3.1.2– CANbus fixes: Fully reset CAN peripheral when bus is opened, fixes unresponsive interfacesDownload
Download the .BIN firmware file for your system above. Follow this guide to update the Microcontroller on your system.

Frequently Asked Questions (FAQ)

How do I enable auto power on?

Enter the BIOS and go to Advanced > PCH-IO Configuration > State After G3. Set it to [s0 State]. See below for a step by step guide.

How do I configure RAID?

Follow our RAID setup guide here:

Which LAN ports support PoE?

The K800 can be configured with optional PoE hardware, adding PoE functionality to existing ports, or adding additional PoE ports. Check your configuration to see if your unit has PoE installed.

The optional PoE module supports the 802.3at standard @ up to 25.5 watts per port.

PoE can be added to the native Ethernet ports on either ports 1 & 2 (on the x2 LAN models), or ports 2 & 3 (on the x6 LAN models). Additional ports may be added with the Karbon Modbay cards.
K800 series 2-LAN model:

K800 series 6-LAN model:

What Operating Systems are supported?

Windows 10 IoT 2021 and Windows 11 are supported. In most applications it is NOT necessary to disable the e-cores.

The K800 also supports Ubuntu 22.04 for Intel IoT with Kernel version 5.17 or newer. Older Ubuntu and Kernel versions are not supported on the K800 series.

What chipset do the Ethernet ports uses?

The onboard LAN ports use the I225. The optional 10gig Modbay expansion card uses the X550.

What Baudrate is supported on the K800 COM ports?

The K800 series supports up to 115200 baudrate on the COM ports. Higher baud rates can be achieved by implementing the CAN port. See how to do this through the Embedded Microcontroller MCU.

How do I disable TurboBoost on the CPU?

TurboBoost can be disabled in the BIOS of the system. Navigate to Advanced and set Expert Mode to Enabled. Then, go to:
Power & Performance -> CPU – Power Management Control -> Boot Performance -> Set to Max Non-Turbo Performance

How do I enable the external SIM slot?

The K800 series can be configured with an internal modem, the AMIT series modems. If configured with a SIM card, this would be installed internally, directly on the modem. However the modem can be configured to use the external SIM slots to allow easier switching by users. It is recommended to configure the following BIOS setting to enable both external SIM slots:

Setup Utility -> Advanced page -> PCH-IO -> OnLogic Feature Configuration -> SIM Card Muxing -> Set to “Mode 4
Make sure to Save & Reset via the F10 function key or through the Exit page.

How do I use the integrated video ports, instead of the GPU?

The K800 series can be configured with a GPU. For some customers this is used to drive multiple high-resolution displays, and the video output will automatically output through the GPU. However in some cases you may want to use the GPU for specific computational applications, and use the integrated DisplayPorts. To enable this option, you will want to change the “Primary Display” output in the BIOS. Navigate to:

Setup Utility -> Advanced page -> Set “Expert Mode” to Enabled
Then go to:
Setup Utility -> Advanced -> System Agent (SA) Configuration -> Graphics Configuration -> Primary Display -> Change to “IGFX”
Make sure to Save & Reset via the F10 function key or through the Exit page.


Connecting the power supply

If you need to assemble the system’s power input connector, follow these steps to locate and wire the correct parts.

  • Unbox the power brick and grab the 5 pin green/black terminal block from the accessory box.
  • Using a flathead screwdriver, turn the two indicated screws counter-clockwise a few turns.
  • The metal holes at the bottom will open up.
  • Insert the power supply wires as shown
  • Turn the screws clockwise to tighten. Firmly hand tighten.
  • Connect the green/black terminal block to the K700. It is now ready for use. Note that the labeling on the back of the system matches the wires you just installed.
  • Higher wattage configurations of the K700-X2 may use all 4 wires but they are not needed on the K700-SE model.

Enabling Auto Power On

The K800 can be configured to turn on automatically when DC power is connected. This is useful for power outage recovery or if the unit is mounted in a hard to reach location. You can enable Auto Power On by following the steps listed below.

  • Note: In future revisions the name of this setting will be changed. “Auto power ON’ under the Power tab will be the new name and location.
  1. Power on the system and press Del a few times to access the “Front Page” menu
  2. Choose “Setup Utility”
  3. Navigate to Advanced > PCH-IO Configuration
  1. Locate “State After G3”
  2. Change it to”s0 State” to enable auto power on.
  1. Press F10 to Save & Exit

Disassembly

K801 Disassembly

Opening the system does not void the manufacturer’s warranty, however, some precautions are necessary to avoid damaging the unit. Damage caused while opening or modifying the system internals may not be covered by the warranty.

  • Perform this disassembly in an area free of static discharge
  • Before beginning, touch a grounded metal surface to discharge your body of static electricity
  1. Turn the unit upside down and remove the 6 screws from the bottom plate.
  2. Pry the bottom plate off
  1. In case the thermal pads become displaced during disassembly, a reference guide is shown below. Note that the blue film will not be present as it is removed during initial assembly.

K802 Disassembly

Opening the system does not void the manufacturer’s warranty, however, some precautions are necessary to avoid damaging the unit. Damage caused while opening or modifying the system internals may not be covered by the warranty.

  • Perform this disassembly in an area free of static discharge
  • Before beginning, touch a grounded metal surface to discharge your body of static electricity
  1. Turn the unit upside down and remove the 6 screws from the bottom plate.
  2. Pry the bottom plate off
  1. Unplug the SATA power and data cables (if equipped)
  1. Grab the metal plate where shown
  2. Lift upwards and pull towards you to remove the plate
  1. In case the thermal pads become displaced during disassembly, a reference guide is shown below. Note that the blue film will not be present as it is removed during initial assembly.

K803 Disassembly

Opening the system does not void the manufacturer’s warranty, however, some precautions are necessary to avoid damaging the unit. Damage caused while opening or modifying the system internals may not be covered by the warranty.

  • Perform this disassembly in an area free of static discharge
  • Before beginning, touch a grounded metal surface to discharge your body of static electricity
  1. Turn the unit upside down and remove the 6 screws from the bottom plate.
  2. Pry the bottom plate off
  1. The internals of the system can now be accessed.
  2. The riser card (for PCIe installation) can be difficult to install/remove. It is not recommended to remove this part, but if needed, the metal plate can be lifted upwards slightly. For example to access the RAM slots.
    Any damage caused while removing/installing the mid-plate is not covered by warranty.

Installing a PCIe Card (K803)

  1. Remove the retaining screw from the outside of the case.
  2. Remove the metal slot cover.
  1. Insert the PCIe card into the slot. Ensure it fully seats.
  2. Loosen the screws on the brace bracket. Move the bracket so it touches the card. This will prevent it from moving.
  3. Tighten the screws back down.
  1. Reinstall the external mounting screw.
  2. Card installation complete.

K804 Disassembly

Opening the system does not void the manufacturer’s warranty, however, some precautions are necessary to avoid damaging the unit. Damage caused while opening or modifying the system internals may not be covered by the warranty.

  • Perform this disassembly in an area free of static discharge
  • Before beginning, touch a grounded metal surface to discharge your body of static electricity
  1. Turn the system upside down and remove the 6 Torx T8 screws from the sides.
  2. Remove the bottom plate.

Installation of Parts

Installing a PCIe Card

PCIe cards can be installed to the K700-X2, K803, and K804 expansion bays. The maximum dimensions for a PCIe card depend on the platform, and are as follows:

K700-X2 Max PCIe Dimensions: Single OR Double slot height, 211 x 129 x 41mm (8.31″ x 5.08″ x 1.61″ in)
K803 Max PCIe Dimensions: Single slot height, 111mm H x 241mm L (4.4” H x 9.5″ L in)
K804 Max PCIe Dimensions: Single OR Double slot height, 111mm H x 241mm L (4.4” H x 9.5″ L in)

  1. Remove the two exterior screws from the PCIe retention bracket.
  2. Remove any PCIe blanks.
  3. If you are installing a single slot card, snap them apart and reinstall 1 PCIe blank into the upper slot.

  1. Insert the PCIe card
  2. Ensure it clicks into the slot and the backplate slots into the system.
  3. Connect any required PCIe 6/8 pin power connectors. Cables can be found in your accessory box.
    Note: PCIe power board may be optional, depending on the system’s configuration.
  1. Reinstall the retention clip and hand tighten both screws.
  2. Reinstall the bottom cover and the process is complete.

Installing the optional External Fan

The external fan is an optional add-on for the K700 & K800 series, which provides active cooling. This adds a 120mm case fan and moves approximately 110 CFM of airflow.

The K700 and K800 series use the same external fan. It can be installed by removing the branding plate (on the top of the system) and installing the following screws:

  • x2 on the top (under the branding plate)
  • x1 on the side

The external fan uses a magnetic dust filter. The filter should be cleaned regularly. If the filter is misplaced, our replacement part SKU is FANCPD-MESH. This can be ordered by reaching out to our sales team.

Installing M.2 Storage

  1. Slide M.2 storage drive into slot
  2. Gently press drive down flat and secure with M.2 screw
  3. Apply thermal pad

Installing the PoE module

The PoE kit includes the PoE modules itself, plus needed standoffs, screws, and thermal pad for the installation.

  • Install the standoffs. Gently hand tighten – they are fragile.
  • Install PoE module onto connector. Double check that the pins align.
  • Install 2x screws
  • Peel and stick thermal pad

Troubleshooting

Clearing the CMOS

If the K800 fails to power on or is otherwise unresponsive, a CMOS reset may help. Follow the procedure outlined below to clear the CMOS.

  1. Unplug the system completely – remove power and all peripherals
  2. Use a long, thin tool, such as a straighten a paperclip
  3. Locate the unlabeled CMOS reset hole next to the HDD LED
  4. Using the tool/paperclip, depress the button inside for 30 seconds.
  1. Reconnect the system and turn it back on.
  2. Do not touch the system for 2 minutes. It may reboot several times while it reconfigures the CMOS.
  3. If successful, the unit should boot back up and run normally. It is now ready to use again. If the unit is still not responsive, reboot it one more time and then contact OnLogic Tech Support.

Can’t access the BIOS, System loads straight into the OS

The system supports Fast Boot, which is a configurable BIOS setting. With Fast Boot enabled, the unit will disable booting to Network, Optical, and USB/removable drives. Video and USB devices (such as keyboards) will not initialize until the OS loads. This can make it difficult to reinstall an OS, or change any BIOS settings, and make the BIOS harder to access. To enter the BIOS follow the steps below for your specific OS.

Windows

From the Start Menu, hold Shift and click Restart to access the Recovery screen, then go to “Advanced” and select “UEFI Firmware Settings”. The system will reboot and allow access in the the BIOS. You may need to repeatedly press DEL/F2 keys while the system is rebooting.

Linux

From Terminal, run the following command:
systemctl reboot --firmware-setup

This will trigger the system to reboot and allow access into the the BIOS. You may need to repeatedly press DEL/F2 keys while the system is rebooting.

Once you’ve accessed the BIOS, you can find the Fast Boot setting under the Boot tab.

10Gb Ethernet Modbay disappears from OS

K800 series systems outfitted with the 10Gb Modbay (MODBAY-10GLAN01) may experience issues while in use, causing the ports to crash and become unusable. To fix this issue, download this file and follow the Update Instructions.
Note that the system must be booted into a Windows environment for this Update. A temporary Windows installation can be used on the system, or the unit(s) can be returned to OnLogic. Contact OnLogic Tech Support for RMA details.

Orders shipped after 11/20/2023 already have this update applied

10Gb Ethernet Modbay limited speed

If you have a 10 Gb Modbay installed in your system, and it is not operating at full speed, you may need to update the ethernet controller firmware. It should be at least version 3.6 or higher.

There are different update steps depending on if you’re running Windows or Linux. Download the relevant steps and follow the steps in the downloaded file:

WindowsLinux

CAN bus connection instability

If you experience issues with using or accessing the CAN bus on your K800 system, this can be resolved by updating to the latest microcontroller firmware. Download the firmware at the top of this page, and follow this guide:

Accessing the Microcontroller (MCU)

The embedded microcontroller unit (MCU) is used to interface and control various aspects of the system such as CAN, DIO, and ignition sensing. To communicate with the MCU, follow the steps below for your installed OS.

Windows

  1. Download the PuTTy tool from putty.org
  2. Look in Device Manager and find the highest numbered USB serial device, COM5 in this example
  3. Open Putty. Set the connection type to Serial and change COM1 to the COM # you found in the previous step. This example uses COM5.
  4. Click “Open”. This will open a virtual connection to the MCU (no physical cable is required)
  1. To confirm you have the correct port open, type “help” and press enter. The help text should appear. If it does not, try a different COM port.

Linux

  1. Use a program such as PuTTy to interface with the microcontroller (MCU). You can run the following command to install it (you will need an active internet connection for this):
    sudo install putty
  2. The MCU will typically enumerate as ttyACM0. It enumerates as a serial-interfaceable USB device. If you run into issues accessing ttyACM0, you can run the following command to identify the other port(s):
    sudo dmesg | grep tty
  1. In this example, the MCU is on ttyACM0. Open PuTTy, enter the port #, and set the connection type as “Serial”. The other settings can be left on their defaults (i.e. baudrate = 9600).
  1. To confirm you have the correct port open, type “help” and press enter. The help text should appear. If it does not, try a different port #.

Microcontroller Commands

A full list of microcontroller commands be be found here in the User MCU Shell documentation here:

Automotive Timings

Feature Overview

The ignition sense feature can be used to turn the Karbon unit 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.

Enabling and controlling ignition sense

Ignition sensing can be enabled and adjusted through a virtual COM connection to the system’s microcontroller (MCU). You can open this communication to the MCU using a program such as PuTTy. Refer to the steps above, Accessing the Microcontroller (MCU), for help accessing the MCU.

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.

Example ignition settings

The following shows an example configuration for automotive timings. Enter each command one by one.

For further help text, type lpmcu config

CommandEffect
lpmcu config automotive-mode trueEnables automotive mode
Command:
lpmcu config startup-timer [X]

Example:
lpmcu config startup-timer 10
Effect:
turn on X seconds after IGN pin receives power

Example:
turn on 10 seconds after IGN pin receives power
Command:
lpmcu config hard-off-timer [X]

Example:
lpmcu config hard-off-timer 60
Effect:
force shutdown system after X seconds (failsafe to protect battery)

Example:
force shutdown system after 60 seconds (failsafe to protect battery)
Command:
lpmcu config soft-off-timer [X]

Example:
lpmcu config soft-off-timer 20
Effect:
shutdown X seconds after IGN pin loses power

Example:
shutdown 20 seconds after IGN pin loses power

CAN & DIO

The Karbon 800 has an embedded NXP i.MX RT1050-series microcontroller that can communicate with the host processor over USB. Its features include:

  • Configuring the system LEDs
  • Reading/writing the system DIO
  • Using system Digital Outputs in PWM mode
  • Configuring system automotive settings
  • Managing the system CAN interface

To provide access to these features, the MCU supports a composite USB-CDC VCOM connection (VID: 0x353F, PID: 0xA101):

  • Interface 0: A UART terminal supporting commands for a range of features
  • Interface 2: A dedicate USB serial CAN interface
C:\Users>python -m serial.tools.list_ports -v

COM15
    desc: USB Serial Device (COM15)
    hwid: USB VID:PID=353F:A101 SER=500100D20F3861D2 LOCATION=1-11:x.2 <--- CAN Port
COM16
    desc: USB Serial Device (COM16)
    hwid: USB VID:PID=353F:A101 SER=500100D20F3861D2 LOCATION=1-11:x.0 <--- UART Port

The MCU shell is a fully-featured virtual UART shell exposed over the MCU’s first USB CDC-ACM interface. This shell supports both command history and line editing, and can optionally serve as an output target for driver log messages. For a complete command reference see, the shell command reference.

Firmware Updates
In order to support over-the-air firmware updates, the K800 has a two stage bootloader; a ROM bootloader, that can be started with physical access to the system, and a USB bootloader that supports updates from the OS.

Entering the ROM Bootloader (manual):
1. Detach the K800 system from wall power
2. Use a paper clip to depress the settings switch located above the front USB 3.0 ports
3. With the switch held down, re-attach system power
4. The MCU should now boot into the NXP ROM bootloader

Entering the USB Bootloader (manual):
1. Boot the K800 to the operating system
2. Use a paper clip to depress the settings switch located above the front USB 3.0 ports
3. With the switch held down, send the ‘reset’ command to the MCU’s UART port
4. The MCU should now boot into the second stage USB bootloader

DIO/CAN/Power Switch header

The Karbon 800 series 20-Pin header provides the following interfaces: 8-bit (4-in, 4-out) Digital Input Output (DIO) or General Purpose Input Output (GPIO) with optically isolated terminals, one CAN bus connection, and an optional external power switch connection.

The DIO is optically isolated, meaning that the terminal is separated from other motherboard features for protection. The DIO terminal requires external power from a 5~48V DC source through Pin 20 with GND to Pin 19 in order to function.

The Isolated Power Supply (ISO PSU) can be a voltage source from 5~48V to interface with external digital IO. The maximum power draw from the supply should not exceed 0.6A under normal operating conditions. Individual DOut pins will be damaged by loads in excess of 150mA. The ISO PSU must be a DC Limited Power Source (LPS) power supply.

Mating power switch cables should be a twisted-pair wire with floating shield to assure proper
immunity to EMI/RFI. It is recommended to keep wires at less than 3 meters in length. Any remote power switch connected between pins 1 and 2 should be momentary contact type only.

Connection Diagrams

DIO & LEDs

Examples:

All digital inputs/outputs support reading the current logical state of the pin. Digital outputs additionally support setting the output state of the pin, and digital inputs support reporting the transition count of the pin (both edges). The K800 also support configuring digital outputs as PWMs, and configuring the PWM output’s pulse and duty cycle. For a additional command reference see, the shell command reference. The DIO can also be changed to Byte Mode as documented below.

# Turn on LED 0 output
uart:~$ dio set LED0 0 true
# Check the state of Digital Input 0
uart:~$: dio get DIO0 input 0

Byte Mode

When using byte mode, DIO commands are sent in the form of command packets, and each command will receive a status (and optional data) as a response.

The command header is eight bytes in length:

BytesDescriptionOptions
0The message ‘start of frame’ byte.Must be 0x01, or the message will be rejected. For non request/response frames, it is instead set as 0x02
1Indicates the kind of command transmittedMust be one of the Valid Command Kinds
2 – 3The status of the last commandShould be zero when sending a command, one of Status Codes when receiving
4The length of the transfered command dataMust be less than 56, and equal to the length of the command body in bytes
5-7ReservedMust be 0x00
Command Header

All command headers must indicate the type of data to follow, by setting the command kind:

KindValue (u8)SizeDescription
DIO0x008 bytesCommands that get and set the state of MCU controlled digital IO banks
CAN0x016 bytesSideband configuration and reporting for CAN devices
Reset0x020 bytesCauses a cold-reset of the microcontroller
Version0x038 bytesReports the firmware version of the running application image
Ignition0x0410 bytesConfigures automotive and power features on supported devices
Disable0x050 bytesDisables byte processing of incoming data, and returns to an interactive shell
Valid Command Kinds

Each command sent will recieve a response from the microcontroller. This response may contain data, but can always be examined to determine if the command succeeded.

CodeValueDescription
Success0x0000The last command was processed successfully
Invalid Device0x0001The device indicated by the command exceeded the number of devices available to the system
Unbound Device0x0002The device targetted exists, but the MCU was unable to attach to and communicate with it
DIO – Invalid Pin0x0003The target pin exceeded the number of inputs or outputs actually present
DIO – Pin Read Failed0x0004Reading the state of the targetted pin failed for an unknown reason
DIO – Pin Write Faield0x0005Writing the state of the targetted pin failed for an unknown reason
DIO – Set Mode Unsupported0x0006Setting the DIO mode to push-pull or sink-source is not supported
Invalid Command0x0007The subcommand requested was outside of the valid range for the message kind
Bad Message Kind0x0008The message kind was not one of Valid Command Kinds
Version – Read Failed0x0009Reading the application version failed for an unknown reason
Status Codes

The DIO command format is as follows:

BytesDescriptionOptions
0The DIO action to perform on the deviceMust be one of DIO Actions
1The bank of digital IO to target, or the number of devicesMust be between 0 and the number of DIO banks available on the platform
2The pin index to get or setThe output pin index starts at 0, the input index starts at 0 + n-outputs
3The current state of the pin (if read), or the state to set (if written), or the mode to set (mode 0=sourcing, mode 1=sinking)0 or 1
4 – 7The edge-count of the pin, or the number of inputs/outputs0 – MAX_UNSIGNED_INT (u32)
DIO Actions

The digital IO command supports the following actions:

ActionValue (u8)Description
Get0x00Read the state and count of an input, or just the state of an output
Set0x01Set the logical state of a digital output
Set Count0x02Set the edge count of a digital input to the passed value
Set Mode0x03Switch between sink-source and open-collector drive mode on supported hardware
Num Devices0x04Reports the number of DIO banks available on the device
Num Outputs0x05Reports the number of outputs available to the indicated device
Num Inputs0x06Reports the number of inputs available to the indicated device
DIO Actions

CAN

The Karbon 800 has an on-board CAN (Controller Area Network) 2.0 A/B interface. In general, 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. The nominal voltage measured between the two signal lines is ~2.5 Volts, serving as a reliable indicator of the K800 CAN bus operational status. Additionally, the CAN bus operates in two states: dominant and recessive. Dominance is represented by logic level 0 and recessive is represented by logic level 1. The K800 CAN interface supports configurable bitrates from 100k – 1M and two message parsing modes: slcan and std. 

slcan: an abbreviation for serial line can, is a virtualizing protocol used to transmit CAN messages over serial communication. This bridges the gap between the operating system and the unique differential signaling utilized in the CAN protocol. slcan makes the CAN bus appear as a network interface on the operating system, and can be even be identified as such when looking through the kernel buffer on Ubuntu via

sudo dmesg

Specifically, the K800 supports the following bitrates using slcan interface:

10     20     50     100    125    250    500    800    1000  Kbits/s

std: CAN bus send and receive messages are communicated in their native CAN format. This allows for direct low-level communication between the in-system K800 microcontroller and CAN-compatible devices. The std method of operating the CAN bus can be used without the need for intermediate serialization to communicate with an operating system. 

Further details about the CAN bus can be found in the provided resources:

  1. https://en.wikipedia.org/wiki/CAN_bus#Frames 
  2. https://community.nxp.com/t5/NXP-Tech-Blog/101-Controller-Area-Network-CAN-standard/ba-p/1217054

Configuring the K80X as a CAN device

This section describes the physical connection and software configuration needed to set up the K80X platform as a CAN controller in either the Microsoft Windows or Ubuntu Linux based operating systems. Example programs are written in both Python (for both Windows and Linux) and Bash (for Linux).

Materials Required:

  1. Hookup or twisted pair wires
  2. 120 Ohm termination resistors (depending on the CAN setup)
  3. CAN member devices compliant with CAN 2.0 A/B. In our example we will use a second K80X to act as the endpoint device.

Example Network Implementation:

Diagram of a simplified CAN bus network. The figure above shows: 1) Two termination resistors 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.

Operation Instructions:

The use of the K800 CAN bus can be achieved in four steps. 

Step 1: Locate CAN High and CAN Low terminals on the 20-Pin header next to the system power button.

Step 2: Connect CAN Low, CAN High, and (commonly used) ground wires to their designated locations using the Dinkle 0159-0320 20 pin connector. Additionally, bridge CAN Low and CAN High terminals with the proper termination resistor (120 Ohm in this example).

Step 3: Configure the second K80X system with the same wiring connecting the CAN High and Can Low signals of each system. Ensure a second 120 Ohm resistor is used as close as possible to the second K80X 20 Pin connector.

Step 4: Activate the software interface to operate the CAN bus.

The GitHub repository here:

https://github.com/onlogic/K800-CAN-supplemental-material

Provides two utilities with instructions on controlling CAN bus parameters and sending/receiving CAN data in the code comments. Both the software utilities use slcan as the interface to communicate with the CAN bus. The installation commands for required dependencies are included in the header comments of each respective code file.

Python3 CAN Utility [Ubuntu and Windows Compatible] : https://github.com/onlogic/K800-CAN-supplemental-material/blob/main/k800_can_utility.py

Usage on Windows: 

python k800_can_utility.py [-h] [-m {s,r}] [-b {10,20,50,100,125,250,500,750,1000}] [-l {off,on}]

Usage on Linux:   

sudo python3 k800_can_utility.py [-h] [-m {s,r}] [-b {10,20,50,100,125,250,500,750,1000}] [-l {off,on}]

NOTE: Run the Python CAN utility with sudo privileges on Ubuntu. 

Output of —help flag for the Python command line argument:

python k800_can_utility.py --help

usage: k800_can_utility.py [-h] [-m {s,r}] [-b {10,20,50,100,125,250,500,750,1000}] [-l {off,on}]

K800 CAN Bus Utility

options:
  -h, --help            show this help message and exit

  -m {s,r}, --mode {s,r
                        send (s) or receive (r): send generated data or continually receive

  -b {10,20,50,100,125,250,500,750,1000}, --bitrate {10,20,50,100,125,250,500,750,1000}
                        CAN bus baudrate in kbps (ranges allowed by slcan: [10, 20, 50, 100, 125, 250, 500, 750, 1000]
  -l {off,on}, --leds {off,on}

Incorporate LED check functionality in program

Examples in:

Windows:

python k800_can_utility.py -m s -b 500 -l on

python k800_can_utility.py -m r

Linux:

sudo python3 k800_can_utility.py -m r -b 1000 -l off

sudo python3 k800_can_utility.py -m s

Bash Script Utility [Ubuntu Compatible Only] :

https://github.com/onlogic/K800-CAN-supplemental-material/blob/main/k800_can_utility.sh

1. First, set permissions to be executable by user who owns the file:

chmod u+x k800_can_utility.sh

2. Then run the executable using:

./k800_can_utility.sh {s|r} <bit_rate> <led>

Examples:

./k800_can_utility.sh s 100 off
./k800_can_utility.sh r 20 on
./k800_can_utility.sh r  # Uses default bit_rate and no LED check

Two channels, a blue channel representing CAN High and orange representing CAN Low. Both CAN High and CAN Low will default to a 2.5 nominal voltage in the absence of a signal. This is useful for debugging if there is uncertainty whether the signal is properly broadcasting. 

[Optional] If the LED flags are active in either the Python script or the Bash script, the onboard LEDs on the K800 will turn on and off before and after each CAN session, respectively. 

Sample Program Outputs:

Initializing output from: sudo python3 k800_can_utility.py -m r -b 100 -l on. This indicates the proper eMCU Port location, Hardware ID, and Device.

Terminal output of ‘receive mode’ using the Python utility through the command:  
sudo python3 k800_can_utility.py -m r -b 100 -l on

Terminal output of ‘send mode’ using the Python utility through the command:
sudo python3 k800_can_utility.py -m s -b 100 -l on 

M12 LAN Expansion (optional, must be factory installed)

The 3x M12 LAN Expansion (MODBAY-M12LAN01) adds additional M12 X-coded GbE LAN ports to the K802 and K804. This ModBay uses dedicated Intel I210-IT network controllers for each port which support speeds up to 1 Gbps.
Supported cables:
● CABLE-M12-RJ45-5M (5 Meter X-coded M12 to RJ45)
● CABLE-M12-RJ45-10M (10 Meter X-coded M12 to RJ45)
Operating Temperature: -40~70°C

Updated on September 12, 2024

Was this article helpful?

Related Articles

Keep In Touch.
Subscribe today and we’ll send the latest product and content updates right to your inbox.
Subscribe