Documents and Downloads
Spec Sheets & Dimensional Drawings: K801 / K802 / K803 / K804
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 Version | Link |
---|---|
B005 | Download |
Microcontroller Updates
Microcontroller Version | Changelog | Link |
---|---|---|
v1.3.1.2 | – CANbus fixes: Fully reset CAN peripheral when bus is opened, fixes unresponsive interfaces | Download |
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: https://support.onlogic.com/documentation/k800-raid/
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.
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.
- Power on the system and press Del a few times to access the “Front Page” menu
- Choose “Setup Utility”
- Navigate to Advanced > PCH-IO Configuration
- Locate “State After G3”
- Change it to”s0 State” to enable auto power on.
- 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
- Turn the unit upside down and remove the 6 screws from the bottom plate.
- Pry the bottom plate off
- 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
- Turn the unit upside down and remove the 6 screws from the bottom plate.
- Pry the bottom plate off
- Unplug the SATA power and data cables (if equipped)
- Grab the metal plate where shown
- Lift upwards and pull towards you to remove the plate
- 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
- Turn the unit upside down and remove the 6 screws from the bottom plate.
- Pry the bottom plate off
- The internals of the system can now be accessed.
- 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)
- Remove the retaining screw from the outside of the case.
- Remove the metal slot cover.
- Insert the PCIe card into the slot. Ensure it fully seats.
- Loosen the screws on the brace bracket. Move the bracket so it touches the card. This will prevent it from moving.
- Tighten the screws back down.
- Reinstall the external mounting screw.
- 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
- Turn the system upside down and remove the 6 Torx T8 screws from the sides.
- Remove the bottom plate.
Installing a PCIe Card (K804)
- Remove the two exterior screws from the PCIe retention bracket.
- Remove the PCIe blanks.
- If you are installing a single slot card, snap them apart and reinstall 1 into the upper slot.
- Insert the PCIe card
- Ensure it clicks into the slot and the backplate slots into the system.
- Connect any required PCIe 6/8 pin power connectors. Cables can be found in your accessory box.
- Reinstall the retention clip and hand tighten both screws.
- Reinstall the bottom cover and the process is complete.
Installation of Parts
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
- Slide M.2 storage drive into slot
- Gently press drive down flat and secure with M.2 screw
- 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.
- Unplug the system completely – remove power and all peripherals
- Use a long, thin tool, such as a straighten a paperclip
- Locate the unlabeled CMOS reset hole next to the HDD LED
- Using the tool/paperclip, depress the button inside for 30 seconds.
- Reconnect the system and turn it back on.
- Do not touch the system for 2 minutes. It may reboot several times while it reconfigures the CMOS.
- 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:
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
- Download the PuTTy tool from putty.org
- Look in Device Manager and find the highest numbered USB serial device, COM5 in this example
- Open Putty. Set the connection type to Serial and change COM1 to the COM # you found in the previous step. This example uses COM5.
- Click “Open”. This will open a virtual connection to the MCU (no physical cable is required)
- 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
- 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
- The MCU will typically enumerate as
ttyACM0
. It enumerates as a serial-interfaceable USB device. If you run into issues accessingttyACM0
, you can run the following command to identify the other port(s):sudo dmesg | grep tty
- 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).
- 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
Command | Effect |
---|---|
lpmcu config automotive-mode true | Enables 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.
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:
Bytes | Description | Options |
0 | The 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 |
1 | Indicates the kind of command transmitted | Must be one of the Valid Command Kinds |
2 – 3 | The status of the last command | Should be zero when sending a command, one of Status Codes when receiving |
4 | The length of the transfered command data | Must be less than 56, and equal to the length of the command body in bytes |
5-7 | Reserved | Must be 0x00 |
All command headers must indicate the type of data to follow, by setting the command kind:
Kind | Value (u8) | Size | Description |
DIO | 0x00 | 8 bytes | Commands that get and set the state of MCU controlled digital IO banks |
CAN | 0x01 | 6 bytes | Sideband configuration and reporting for CAN devices |
Reset | 0x02 | 0 bytes | Causes a cold-reset of the microcontroller |
Version | 0x03 | 8 bytes | Reports the firmware version of the running application image |
Ignition | 0x04 | 10 bytes | Configures automotive and power features on supported devices |
Disable | 0x05 | 0 bytes | Disables byte processing of incoming data, and returns to an interactive shell |
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.
Code | Value | Description |
Success | 0x0000 | The last command was processed successfully |
Invalid Device | 0x0001 | The device indicated by the command exceeded the number of devices available to the system |
Unbound Device | 0x0002 | The device targetted exists, but the MCU was unable to attach to and communicate with it |
DIO – Invalid Pin | 0x0003 | The target pin exceeded the number of inputs or outputs actually present |
DIO – Pin Read Failed | 0x0004 | Reading the state of the targetted pin failed for an unknown reason |
DIO – Pin Write Faield | 0x0005 | Writing the state of the targetted pin failed for an unknown reason |
DIO – Set Mode Unsupported | 0x0006 | Setting the DIO mode to push-pull or sink-source is not supported |
Invalid Command | 0x0007 | The subcommand requested was outside of the valid range for the message kind |
Bad Message Kind | 0x0008 | The message kind was not one of Valid Command Kinds |
Version – Read Failed | 0x0009 | Reading the application version failed for an unknown reason |
The DIO command format is as follows:
Bytes | Description | Options |
0 | The DIO action to perform on the device | Must be one of DIO Actions |
1 | The bank of digital IO to target, or the number of devices | Must be between 0 and the number of DIO banks available on the platform |
2 | The pin index to get or set | The output pin index starts at 0, the input index starts at 0 + n-outputs |
3 | The 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 – 7 | The edge-count of the pin, or the number of inputs/outputs | 0 – MAX_UNSIGNED_INT (u32) |
The digital IO command supports the following actions:
Action | Value (u8) | Description |
Get | 0x00 | Read the state and count of an input, or just the state of an output |
Set | 0x01 | Set the logical state of a digital output |
Set Count | 0x02 | Set the edge count of a digital input to the passed value |
Set Mode | 0x03 | Switch between sink-source and open-collector drive mode on supported hardware |
Num Devices | 0x04 | Reports the number of DIO banks available on the device |
Num Outputs | 0x05 | Reports the number of outputs available to the indicated device |
Num Inputs | 0x06 | Reports the number of inputs available to the indicated device |
CAN
The Karbon 800 has an on-board CAN 2.0 A/B interface. The CAN interface supports configurable baudrates from 100k – 1M, and two message parsing modes:
# Change the parser mode to 'slcan' uart:~$ set can-mode VCAN0 slcan # Set the can-baudrate to 1M uart:~$ set can-baudrate VCAN0 1000
When in slcan parsing mode, the K800 CAN interface can be used with linux ‘slcand’ utilities, which support socket can over serial. To get up and running with slcan, start by installing can-utils:
$ sudo apt install can-utils
Then, detect and setup the Karbon can interface. For example:
#! /bin/bash # ASCII Command vs CAN Bitrate # s0 --- s1 --- s2 --- s3 --- s4 --- s5 --- s6 --- s7 --- s8 # 10 20 50 100 125 250 500 800 1000 Kbits/s BAUD=8 # Name of slcan device to attach DEV=can0 # Detect correct port for device interfaces TERM_PORT=$(ls -l /dev/serial/by-id/ | grep 3f35_a101 | sed 's/.*\///g' | awk '{if(NR==2) print $0}') CANB_PORT=$(ls -l /dev/serial/by-id/ | grep 3f35_a101 | sed 's/.*\///g' | awk '{if(NR==1) print $0}') # Start or stop the service while getopts ":ks" opt; do case $opt in k) # Stop the SLCAN service and turn off the can device echo "Shutting down can interface..." sudo ifconfig $DEV down 2> /dev/null sudo pkill slcand sudo slcand -c /dev/"$CANB_PORT" sudo pkill slcand ;; s) # Open the can device, and start the slcan service. echo "Terminal interface on: $TERM_PORT" echo "CAN Bus interface on: $CANB_PORT" # Set the mode to slcan echo -ne "set can-mode slcan" > /dev/$TERM_PORT echo "Attaching slcan device..." # Attach to the port with slcand sudo slcand -s$BAUD -o /dev/"$CANB_PORT" $DEV # Give interface time to come up sleep .25 # Enable the inteface sudo ifconfig $DEV up sudo ifconfig $DEV txqueuelen 1000 echo "Interface is set up." ;; \?) echo "Invalid option: -$OPTARG" >&2 exit 1 ;; :) echo "Option -$OPTARG requires an argument." >&2 exit 1 ;; esac done
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