All pages
Powered by GitBook
1 of 13

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Update System Drivers

Manually update drivers via Device Manager, especially for those without installers.

Updating a single driver via Device Manager

Some drivers do not come with an installer and need to be installed manually. This can be done via Device Manager. This guide will show you how.

  • Copy the driver files to a USB flash drive.

  • If the drivers are contained inside a .zip file, extract them first.

  • In this example, we use the same flash drive we installed Windows 10 from

  • Eject the flash drive and connect it to the OnLogic PC. Type “Device Manager” into the start menu and launch Device Manager.

  • Expand the Display adapters menu. If you see “Microsoft Basic Display Adapter”, that means you are missing the driver. Right click and choose “Update driver”.

  • Select the “Browse my computer for drivers” option

  • Click on “Browse…”

  • Locate the folder on your flash drive with the drivers inside it. Click on the folder and click OK.

  • Now that the location shows where your driver folder is, click Next

  • Windows will now search that folder for the correct drivers and install them automatically.

  • Success! If you get a failure message, go back and make sure you copied all of the drivers to the flash drive and that they are not still inside a zip file. You need to extract them.

  • Repeat this process for all other devices marked with the yellow exclamation point. Typically, they will all be found under the “Other devices” heading.

  • When you no longer have any marked devices the process is complete. A reboot of the system is recommended.

  • Copy the driver package to a flash drive and plug it into the Windows machine

  • Open Command Prompt and navigate to the flash drive (e.g. >D:)

  • Run the command “pnputil /add-driver *.inf /subdirs /install“

You can also create a batch file and place it at the root of the .zip file that contains the line:

pnputil /add-driver *.inf /subdirs /install

Nvidia GPU Driver Enablement (Ubuntu)

Resolving display issues by enabling proprietary Nvidia GPU drivers on Ubuntu, using recovery mode.

The free drivers built in to Ubuntu can sometimes crash with newer graphics cards. The common symptom is that the display will go black at boot or have a corrupted output as shown below.

To fix this, you will need to boot into recovery mode and enable the proprietary drivers. In this example, we use an OnLogic K700 and Ubuntu 20.04. The procedure is the same in 18.04.

Procedure

  • Power up your PC and wait for the BIOS screen to come up.

  • Press the Esc once or twice to access the GRUB bootloader menu.

  • On the K700, wait until the text below the splash screen disappears and then press your Esc key. This helps avoid conflicts with BIOS features that may be triggered by the ESC key.

  • If successful, you will be greeted with the following screen.

  • Select “Advanced options for Ubuntu” using the down arrow and enter keys.

  • Select the line ending with (recovery mode)

  • When in recovery mode, select “Resume normal boot”

  • Select “OK” on the this should boot the machine into the desktop environment

  • Open the application launcher in the bottom left of the screen

  • Open “Software and Updates”

  • Click the “Additional Drivers” tab

  • Select the latest NVIDIA proprietary driver. It will typically be the top option

  • Click “Apply Changes”

  • Reboot your system and let it start up normally. The driver issue should be resolved.

Updating multiple drivers at once

Press Esc now!

Windows 10 Home & Pro Reinstallation

Using the media creation tool

Windows 10 Pro and Home can be reinstalled using a USB flash drive and a tool from Microsoft. This guide will walk you through creating the flash drive and performing the installation.

Prerequisites

  • An 8GB or larger flash drive (USB 3.0 model recommended for speed)

  • A PC running Windows 10

  • The Media Creation Tool, downloadable from here.

Creating the flash drive

  • Download and run the Media Creation Tool, linked above

  • Accept the license agreement

  • Choose the 2nd option and click Next

  • Specify the architecture. In almost all cases, the default of 64bit is correct.

  • Select USB flash drive and click Next

  • Choose your flash drive from the list and click Next

  • If the drive does not show, ensure it is formatted as FAT32 or try a different drive.

  • The Windows 10 installer will now download from the Internet and make the flash drive bootable. This will take several minutes depending on the speed of your flash drive and Internet connection.

  • When the tool finishes, click Finish to close it.

  • Safely eject the flash drive and unplug it from the PC.

  • Connect your newly created flash drive to the OnLogic PC and boot to it.

  • Press F2 or Delete to access the BIOS. Under the Boot tab, make it the first boot device.

  • Exact boot instructions vary by model. If you need assistance, contact support@onlogic.com.

  • When the flash drive boots, you will be presented with this screen. Select Next.

  • Click Install now

  • Enter the product key from the bottom of your OnLogic PC and click Next.

  • If prompted (typically when you don’t enter a product key), select your version of Windows.

  • Accept the license agreement and click Next

  • Choose the option for Custom installation

  • Delete all partitions from the drive you will be installing Windows 10, typically Drive 0.

  • Double check that you are deleting the correct partitions and click OK.

  • With all partitions deleted, the Window should look like this. Click Next. New partitions will be created automatically.

  • Take a break while the installation proceeds

  • Depending on the boot settings, the system may boot to the flash drive again. If that happens, click the X to reboot and immediately remove the flash drive.

  • When booting to your new Windows installation for the first time, you will be presented with this screen

  • Choose :set up for an organization

  • You may log in with your Microsoft account if desired.

  • In many business use cases, that is not desired. You can create a normal account with the “Domain join instead” button.

  • Enter a username and click next. Set a password if desired.

  • The options on the next screen primarily affect apps from the Microsoft Store. Disabling all options will minimize intrusions if those apps are not used. This can be changed later.

  • Unless you signed in with a Microsoft account, click NO on this screen.

  • Cortana is a web search assistant on the desktop. Generally this should be disabled.

  • This loading screen will appear for a few minutes while the user settings are applied.

  • When completed, you will go straight to the Windows 10 desktop.

  • Your installation is complete!

  • If you’re missing any drivers, start by running Windows update. It tends to find most of them. Otherwise, use the search box at the top of this page to find the “Technical Resources” page for your model. It will have a link to the drivers.

  • Open any file explorer window. Right click on “This PC” and choose “Properties”

  • The activation status is shown at the bottom.

  • Click the “Activate Windows” button

  • Click “Change product key”\

  • Note: Some systems will display an error indicating that a “hardware change” has occurred. This can be ignored, and will go away once the OS is activated.

  • Enter the product key from the bottom of your OnLogic PC.

  • The key may be obscured by a square patch of silver security foil.

  • Very gently, scratch the foil off with your fingernail as you would a lottery ticket. The key is underneath.

  • Enter the product key in this window, press Next, and Windows will activate online automatically.

Clonezilla Image Restoration

USB drive creation, booting into Clonezilla, and the restoration process.

Prerequisites

  • A 4GB or larger flash drive (USB 3.0 model recommended for speed)

  • A PC running Windows 10

Downloads

  • Download the Clonezilla alternative stable version from https://clonezilla.org/downloads.php

  • Download the ISO file and Rufus tool, linked above

  • Insert your flash drive and run Rufus

  • Click Select and choose the ISO file you just downloaded.

  • Click START

  • Click OK. This will erase your flash drive and turn it into an Ubuntu installer.

  • Wait for Rufus to complete.

  • Create a new folder on the flash drive to contain your images. It must not contain any spaces. In this example, we name it TERA-MK100-40-R1

  • Copy the folder containing your image into the images folder

  • Final Result:

  • Safely eject the flash drive and unplug it from the PC.

  • Connect your newly created flash drive to the OnLogic PC and power it on.

  • If no operating system is installed, the system will likely boot right into Clonezilla.

  • If it does not, Press F2 or Delete to access the BIOS. Under the Boot tab, make it the first boot device.

  • Exact boot instructions vary by model. If you need assistance, contact support@onlogic.com.

  • Select the 2nd option at the Clonezilla boot menu (ending with “& To RAM”)

  • Some unimportant text will fly by as Clonezilla boots up

  • Press enter to select Language.

  • English is recommended to match this guide

  • Press enter to select keyboard layout.

  • Press enter to start Clonezilla

  • Choose the device-image option (default)

  • Choose the local_dev option (default)

  • A list of the disk drives will be printed. This can be helpful for reference but can usually be ignored. Press control-C to close it.

  • Select your USB flash drive as the source defice

  • no-fsck is fine

  • Select your images folder and press enter

  • Do not go any further into the folders.

  • Press tab twice and enter to select Done

  • Beginner mode is best for our purposes

  • Choose the restoredisk option

  • You will be prompted to select an image from your images folder.

  • Now you will be prompted to choose which disk the image is applied to. In this example, the Transcend drive is our boot drive so we select it.

  • Yes, check the image before restoring

  • Press enter twice to continue.

  • The image restore process will now begin!

  • Additional Yes/No prompts may appear as Clonezilla processes your image. Type Y and press enter on each one.

  • Success! The image has been applied. Press enter to continue as the prompt on the screen says.

  • Select the reboot option and immediately unplug your flash drive.

  • The system will restart and should boot right up into your restored image.

Windows IoT Enterprise Recovery Options

Different methods of recovering a Windows IoT Enterprise operating system

Our systems with Windows 11 and 10 IoT include a recovery option that restores the device to its original factory state using the. This includes drivers vital to the functionality of the system.

  • This recovery option works well when windows can still start up or reach recovery mode, and needs system files repaired.

  • This recovery option won't work for cases when the OS is completely missing, since the process depends on the Windows Component Store files which are stored on the OS.

Below are several methods to enter the Windows Recovery Environment:

Installing Windows

First Boot & Setup

Activating Windows

Flash Drive Creation

Using Clonezilla

Direct Link to ISO

Follow official Microsoft documentation for accessing the Windows Recovery menu.

  • While inside the OS, press and hold the Shift key while you select Power > Restart.

  • In a Windows terminal window, type `shutdown /r /o /t 00` or `reagentc /boottore` .

  • If you are unable to access your OS, turn the system on and then force a shutdown by holding the power button as soon as you see the Windows logo or spinning dots. Repeating this process 2-3 times triggers the Automatic Repair feature and will boot into the Advanced Startup menu.

  • Follow these steps once inside the Windows Recovery Environment.

    1. Choose the troubleshoot option.

    2. Select "Reset this PC".

    3. Select "Local reinstall". This is the option that uses the Windows Component Store files to restore the system.

    4. Select either option based on your preference:

      1. Keep my files: This option reinstalls the Windows operating system and all of the original drivers and software that were configured in our facility. It removes applications you have installed (like Microsoft Office, web browsers, etc.) and resets most settings, but it preserves your personal files, such as those on your Desktop and in your Documents, Downloads, and Pictures folders.

      2. Remove everything: This option performs a complete factory reset. It erases all of your personal files, applications, and settings before reinstalling a fresh copy of the original system.

    5. Select "Reset".

    Windows 10 IoT can be reinstalled using a USB flash drive. This guide will walk you through creating the flash drive and performing the installation. Please note that while Windows 11 IoT can be reinstalled through this method, it will erase the embedded activation key and so using the Recovery partition is the recommended way to restore Windows 11 IoT to a default installation.

    • An 16GB or larger flash drive (USB 3.0 model recommended for speed)

    • A PC running Windows 10

    • A copy of the OnLogic ISO file (contact tech support to obtain, only available to existing customers)

    • Rufus, downloadable from here.

    • An active internet connection to the system getting Windows 10 IoT reinstalled (needed for OS activation)

    • Download the ISO file and Rufus tool, linked above.

    • Install Rufus to your local computer

    • Insert your flash drive and run Rufus

    • Click Select and choose the ISO file you just downloaded.

    • Most systems will use the “GPT” Partition Scheme. Some older units will need “MBR” for older (Legacy bootable) systems.

    • Click START

    • Click OK. This will erase your flash drive and turn it into an IoT installer.

    • Wait for Rufus to complete.

    • Safely eject the flash drive and unplug it from the PC.

    • Connect your newly created flash drive to the OnLogic PC and boot to it.

    • Press F2 or Delete to access the BIOS. Under the Boot tab, make it the first boot device.

    • Exact boot instructions vary by model. If you need assistance, contact support@onlogic.com.

    • When the flash drive boots, you will be presented with this screen. Select Next.

    • Click Install now

    • Accept the license agreement and click Next

    • Choose the option for Custom installation

    • *** If installing Windows 11 IoT instead of Windows 10, this window will appear. Select “Windows 11 IoT Enterprise LTSC” to proceed***

    • Delete all partitions from the drive you will be installing Windows 10, typically Drive 0.\

    • Note: If you have multiple drives in your system, you only need to delete the partitions on the primary SSD (i.e. the one Windows is installed to). Typically this is Drive 0.

    • Double check that you are deleting the correct partitions and click OK.

    • With all partitions deleted, the Window should look like this. Click Next. New partitions will be created automatically.

    • Take a break while the installation proceeds

    • Depending on the boot settings, the system may boot to the flash drive again. If that happens, click the X to reboot and immediately remove the flash drive.

    • Select “I don’t have a product key”. Windows will activate automatically using the embedded key, after the OS installation is complete.

    • You may log in with your Microsoft account if desired.

    • In many business use cases, that is not desired. You can create a normal account with the “Domain join instead” button.

    • Enter a username and click next. Set a password if desired.

    • Unless you signed in with a Microsoft account, click NO on this screen.

    • The options on the next screen primarily affect apps from the Microsoft Store. Disabling all options will minimize intrusions if those apps are not used. This can be changed later.

    • This loading screen will appear for a few minutes while the user settings are applied.

    • When completed, you will go straight to the Windows 10 desktop.

    • Your installation is complete!

    • If you are missing any drivers, start by running Windows Update. It tends to find most of them. Otherwise, use the search box at the top of this page to find the “Technical Resources” page for your model. It will have a link to the drivers.

    Windows will automatically activate when connected to the Internet. This normally happens after a few minutes in the background, but to force immediate activation, open CMD and type “slmgr /ato“

    Windows Recovery Environment

    Overview

    Launching Windows Recovery Environment

    Windows Component Store

    Step-By-Step Recovery

    Reinstall the Operating System Using Rufus and a USB Drive

    Prerequisites

    Create Flash Drive

    Installing Windows

    First Boot & Setup

    Activating Windows

    Linux

    Exporting Windows Event Logs

    How to send the system event logs to OnLogic for analysis

    The Windows Event Logs contain a variety of information that can help diagnose crashes and other issues. In some instances, it is helpful to send us a copy of the logs so that we can examine them. This article covers how to do so.

    • Type “event” into the start menu

    • Open the Event Viewer

    • Expand the “Windows Logs” section

    • Right click on “System” and choose “Save all Events As…”

    • Enter a file name and save the file somewhere you can find it, such as the downloads folder.

    • Important – Be sure to select display information and check the English box. Without this, much of the log will be missing data.

    • Click OK. The export will take 5-30 seconds.

    • Attach the log files to an email and send them to us for analysis. Be sure to note the ticket number if we provided one, or your serial number if this is a newly reported issue.

    Ubuntu Linux Setup & Reinstallation

    First-time login and reinstallation procedure

    Ubuntu Linux is supported on most OnLogic PCs, though specific versions might be required. For example, Ubuntu for Intel IoT is required on most systems running 11th Gen Intel CPUs and newer. Technical support for and Ubuntu OS related issues should be directed to ubuntuforums.org

    First Time Login

    Customer’s who purchase Ubuntu pre-installed on their system will need to setup a user account and password. With Ubuntu Desktop versions, this is done via the Graphical User Interface (GUI). For Ubuntu Server version, you will be prompted to set this up via the Command Line Interface (CLI).

    *Note: Ubuntu 22.04 Server will prompt you to change the default password on first boot up. The default password is:

    • Username: onlogic

    • Password: onlogic


    For a full installation guide, please visit the Ubuntu website here:

    • A 4GB or larger flash drive (USB 3.0 model recommended for speed)

    • A PC running Windows 10

    1. Download the Rufus tool from

    2. Download the correct Ubuntu ISO image for your system (based on the CPU). Most newer systems such as the K400 series, K800 series, and platforms with 11th Gen CPUs or newer with require .

    1. Other platforms can use the latest standard LTS version, such as 22.04 in this example.

    2. Older versions can be downloaded from . download the file ending in -desktop-amd64.iso

    1. Download the ISO file and Rufus tool, linked above

    2. Insert your flash drive and run Rufus

    3. Click Select and choose the ISO file you just downloaded.

    4. Most systems will use the Partition Scheme set to GPT. For older Systems (2018 or older): Set the Partition Scheme to MBR For context, GPT = UEFI and MBR = Legacy for the Boot Option in the BIOS.

    • Connect your newly created flash drive to the OnLogic PC and boot to it.

    • Press F2 or Delete to access the BIOS. Under the Boot tab, make it the first boot device.

    • Exact boot instructions vary by model. If you need assistance, contact support@onlogic.com.

    • When the installer finishes booting, choose “Install Ubuntu”

    • Select your language and click continue

    • Check the box to allow 3rd party software and click continue. This may provide better hardware support.

    Click START

  • Click OK. This will erase your flash drive and turn it into an Ubuntu installer.

  • Wait for Rufus to complete.

  • Safely eject the flash drive and unplug it from the PC.

  • Reinstallation Steps

    Prerequisites

    Downloads

    Create Flash Drive

    Installing Ubuntu

    rufus.ie
    Ubuntu for Intel IoT
    this page

    Windows

    Operating Systems

    Install Ubuntu Desktop | UbuntuUbuntu

    PSE Configuration (Ubuntu)

    Installation (Intel IoT)

    Ubuntu Desktop 20.04 and 22.04 for Intel IoT platforms are versions of Ubuntu that are validated to run a 5.13-intel and 5.15-intel kernel version. This version of Ubuntu is available from Canonical at https://ubuntu.com/download/iot/intel-iotg, and can be installed like any other Ubuntu release.

    Scroll down to the "Select Processor" section, and select the "Intel® Atom® X6000E Series Elkhart Lake" option.The PSE driver is also supported on current Ubuntu LTS releases up to Ubuntu 26.04. The following versions have been validated:

    Ubuntu release

    Kernel

    20.04 / 22.04 (Intel IoT)

    5.13-intel / 5.15-intel

    Several system hardware interfaces, including CAN, DIO, Serial/COM and ignition sensing are managed through the system’s Programmable Services Engine (PSE).

    The Elkhart Lake PSE can be managed over ISHTP/HECI from the host processor: This driver creates and manages a pse character device, which allows userspace applications to read and write data over the underlying ISHTP bus driver.

    The driver can be obtained here:

    Then unzip and navigate to the directory with:

    Or clone from the command line with:

    To build and install the pse kernel module automatically, simply run:

    This will check if the pre-compiled kernel modules are compatible with your system, and either install them or compile new ones in-place. If all goes well, you can move on to .

    It is also possible to manually build and install the PSE kernel module, which may be required if you intend to run a signed kernel.

    Install the prerequisites for building kernel modules:

    Download the kernel headers for the current kernel:

    Build

    You should now be able to build with:

    This will generate the kernel modules files, which can be loaded and checked with:

    Permanently installing the PSE driver can be done by copying it to your modules directory:

    After this, the PSE module should be loaded and ready for use on each boot. You can confirm this with:

    The programmable services engine consumes commands in the form of packed header and body data structures. The complexity of these structures can be completely ignored by using the pre-compiled command-line application. See the within the system product documentation.

    However, for tight application integration, it is possible to interface with the PSE directly from your software stack by reading and writing to the PSE character file (/dev/pse). A complete example that establishes a connection to the PSE and reads the firmware version information is included in the examples directory, and can be compiled with:

    All source code referenced in the instructions below is included in full context in the examples directory. Additional example code is provided for using the CAN and DIO peripherals, as well as sample code for configuring the system’s automotive features. You can build all targets with:

    Before communication with the PSE can begin, the host client must establish a connection with the firmware client. This is performed by sending the ‘client connection’ IOCTL to the device file:

    Once the connection has been established and returned, it is possible to send commands to the PSE.

    Commands sent to the programmable services engine can either be header-only ‘short’ commands, or complete header + body ‘long’ commands.

    The header portion of the command is as 48-bit wide structure that is transmitted as raw data to the PSE:

    The command header can be easily described as a packed struct in C:

    The possible valid system commands are enumerated by the heci_command_id_t, and include:

    Command
    Value
    Description

    The argument packing depends on this command, and is described by the *_command_t structures.

    UART, I2C, PWM, and QEP all use a generic ‘operation + device’ scheme, while DIO and CAN have separate formats:

    The ‘body’ portion of each command is described by another structure:

    The actual data format depends on the command sent; the can_send example function in examples/can.c shows one method for populating message data.

    Once a message’s header and optional body portions are prepared, sending the command is as simple as writing to the open PSE device:

    Any message sent to the PSE will receive a response from the embedded controller. The response message format is identical to the transmit format, and will always include the status of the last command received.

    Some commands (like reading a CAN message), will result in additional data being returned, as indicated by the has_next flag. Application code may check this flag to determine if it should continue reading data:

    In the provided sample code, the files examples/pse.c and examples/pse.h provide some helpful abstraction to simplify this process. For instance, reading the PSE firmware version can be performed with the following code:

    Several system hardware interfaces, including CAN, DIO, Serial/COM and ignition sensing are managed through the system’s Programmable Services Engine (PSE).

    The Elkhart Lake PSE can be managed over ISHTP/HECI from the host processor: This driver creates and manages a pse character device, which allows userspace applications to read and write data over the underlying ISHTP bus driver.

    You can download the driver files and installation bundle here: .

    Or download and extract them from the command line:

    24.04

    6.x-generic

    26.04

    7.x-generic

    IMPORTANT In some releases of Ubuntu, the 'pinctrl_elkhartlake' driver will timeout 
    during startup and crash during shutdown. You can utilize the method below to 
    address the issue, by disabling this driver module.
    
    One method is to add "modprobe.blacklist=pinctrl_elkhartlake" to the kernel command 
    line.
    unzip ubuntu-elkhart-lake-pse-driver-main.zip -d ubuntu-elkhart-lake-pse-driver-main && cd ubuntu-elkhart-lake-pse-driver-main
    git clone https://github.com/onlogic/ubuntu-elkhart-lake-pse-driver.git pse_heci
    cd pse_heci
    $ sudo chmod +x install.sh && sudo ./install.sh
    $ sudo apt-get install build-essential flex bison libssl-dev libelf-dev
    $ sudo apt-get install linux-headers-$(uname -r)
    $ make
    $ sudo insmod pse.ko && dmesg
    $ cd examples
    $ make version
    $ sudo ./versionVersion: 1.5.0.0
    $ sudo rmmod pse
    $ sudo cp pse.ko /lib/modules/
    $(uname -r)/kernel/drivers/hid/intel-ish-hid/
    $ echo 'pse' | sudo tee -a /etc/modules-load.d/modules.conf$ sudo depmod -a
    $ sudo reboot now
    $ sudo lsmod | grep pse
    $ cd examples
    $ make version
    $ sudo ./version
    $ make all
    /// ... int pse_client_connect(void) 
    int fd, ret; 
    struct ishtp_cc_data cc_data; 
    
    /// Prep input connection data 
    memcpy(&(cc_data.in_client_uuid), &pse_smhi_guid, sizeof(pse_smhi_guid)); 
    
    /// Open the pse character device (fails if not root) 
    fd = open(PSE_CHRDEV, O_RDWR); 
    if (fd <= 0) { 
        printf("Failed to open the pse device file\n"); 
        return fd; 
    } 
    
    /// Send the connection IOCTL 
    ret = ioctl(fd, IOCTL_ISHTP_CONNECT_CLIENT, &cc_data); 
    if (ret) { 
        printf("Failed to connect to the PSE over ISHTP/HECI\n"); 
        return ret; 
    } 
    
    /// Return the file descriptor for use 
    return fd;
    NOTE When sending a command the 'is response' and 'status' bytes are ignored; these are only set by the firmware endpoint when sending data back to the host.
    typedef struct {
        // The command 'class' of this message
        uint8_t command;
        // True when the message is a response from the PSE
        bool is_response;
        // If this command has follow-on body data
        bool has_next;
        // The packed command argument; exact data depends on the command
        uint16_t argument;
        // Status of the received command when responding; zero on success
        uint8_t status;
    } __packed heci_header_t;

    System Info

    0x01

    Report the system firmware version number

    Digital IO

    0x02

    typedef struct {
        /// Indicates the format of the following data
        heci_data_kind_t kind: 8;
        /// Length, in bytes, of the data portion
        uint32_t length;
        uint32_t padding;
        /// Packed message body data
        uint8_t data[MAX_HECI_DATA_LEN];
    } __packed heci_body_t;
    /// pse_send_command(int fd, heci_command_id_t command, uint16_t data, heci_body_t * body)
    size_t len;
    /// Create the initial header
    heci_header_t header = {
        .status = 0,
        .is_response = 0,
        .has_next = body != NULL ? 1 : 0,
        .command = (uint8_t)command,
        .argument = data
    };
    /// Copy the header into the transmit buffer
    memcpy(heci_tx_buffer, &header, sizeof(heci_header_t));
    /// Add a body to the command if one is present
    if (header.has_next) {
        memcpy(heci_tx_buffer + sizeof(heci_header_t), body, sizeof(heci_body_t));
        len = sizeof(heci_header_t) + sizeof(heci_body_t);
    } else {
        len = sizeof(heci_header_t);
    }
    write(fd, heci_tx_buffer, len);
    /// pse_read_response(int fd, heci_header_t *header, heci_body_t *body)
    /// NOTE: Some file preparation occurs here; check sample code
    /// Read the message header
    length = read(fd, data, sizeof(heci_header_t));
    if (length <= 0 || length != sizeof(heci_header_t)) {
        printf("Failed reading header from the pse file (%i)\n", length);
        return length;
    }
    memcpy(header, data, sizeof(heci_header_t));
    /// If the header has followup data, read it
    if (header->has_next && !body) {
        printf("Warning: Returned body data was dropped!\n");
        return length;
    } else if (header->has_next) {
        length = read(fd, data + sizeof(heci_header_t), sizeof(heci_body_t));
        if (length <= 0 || length != sizeof(heci_body_t)) {
            printf("Failed reading body from the pse file (%i)\n", length);
            return length;
        }
        memcpy(body, data + sizeof(heci_header_t), sizeof(heci_body_t));
        length = sizeof(heci_body_t) + sizeof(heci_header_t);
    } else {
        length = sizeof(heci_header_t);
    }
    #include <stdio.h>
    #include <unistd.h> // close
    #include "pse.h" // pse_client_connect, pse_send_command, pse_read_response, heci_types
    static int get_version(int fd) {
        int ret;
        heci_body_t body;
        heci_version_t * version;
        ret = pse_command_checked(fd, kHECI_SYS_INFO, 0, NULL, &body);
        if (ret < 0) {
            printf("Could not read the version information: %i\n", ret);
            return ret;
        } else if (ret == 0) {
            printf("No version data returned from the PSE\n");
            return -1;
        }
        version = (heci_version_t *)body.data;
        printf("Version: %u.%u.%u.%u\n",
            version->major, version->minor, version->hotfix, version->build);
        return 0;
    }
    int main(void) {
        int fd;
        int ret;
        fd = pse_client_connect();
        if (fd <= 0) {
            printf("Failed to establish a connection with the PSE\n");
            return -1;
        }
        ret = get_version(fd);
        close(fd);
        return ret;
    }
    $ wget https://static.onlogic.com/resources/firmware/utilities/pse_heci_v100.zip && unzip pse_heci_v100.zip -d pse_heci && cd pse_heci
    NOTE This driver was written for the 5.13.0-intel kernel. Running it against any other kernel version may require modification. At a minimum, the system requires an ISHTP bus device with UUID bb579a2e-cc54-4450-b1d0-5e7520dcad25, and the bundled additional source headers (intel-ish-hid-5.13) will need to be updated.

    The driver automatically selects the correct configuration for your running kernel. Ubuntu 26.04 is currently the newest validated release.

    Note: The K400 PSE functionality is supported on Ubuntu 20.04 through 26.04.

    PSE Driver Installation

    Quickstart

    Building

    Build Preparation

    Install

    Using the PSE

    1. Establish Connection

    2. Send a Command

    3. Read the Response

    4. Minimal Example

    PSE Driver Installation (Former - Up to 12/16/2025)

    https://github.com/onlogic/ubuntu-elkhart-lake-pse-driver
    Using the PSE
    Hardware Control Application (HWC) download
    PSE HECI Driver v1.0.0

    Set and read the system’s digital IO and LEDs

    UART

    0x03

    Send data over an attached UART. Allows control of automotive features

    CAN Bus

    0x04

    Send and receive CAN messages

    PWM

    0x05

    Manage the Pulse Width Modulation of a DIO configured as PWM

    I2C

    0x06

    Send/receive I2C data (not recommended for end-user configuration)

    QEP

    0x07

    Configure a group of DIOs set as a Quadrature Encoder Peripheral

    Windows 11 Pro Reinstallation

    Using the media creation tool

    Windows 11 Pro can be reinstalled using a USB flash drive and a tool from Microsoft. This guide will walk you through creating the flash drive and performing the installation. *If you are installing Windows 11 onto a RAID array on the K800, you will want to follow the specific steps available here:

    Prerequisites

    • An 8GB or larger flash drive (USB 3.0 model recommended for speed)

    • A PC running Windows 10 or 11

    • The Media Creation Tool,

    • Download and run the Media Creation Tool, linked above

    • Accept the license agreement

    • Click Next

    • Choose the “USB flash drive” option and click Next

    • Choose your flash drive from the list and click Next

    • If the drive does not show, ensure it is formatted as FAT32 or try a different drive.

    • The Windows 11 installer will now download from the Internet and make the flash drive bootable. This will take several minutes depending on the speed of your flash drive and Internet connection.

    • When the tool finishes, click Finish to close it.

    • Safely eject the flash drive and unplug it from the PC.

    • Connect your newly created flash drive to the OnLogic PC and boot to it.

    • Press F2 or Delete to access the BIOS. Under the Boot tab, make it the first boot device.

    • Exact boot instructions vary by model. If you need assistance, contact support@onlogic.com.

    • When the flash drive boots, you will be presented with this screen.

    • Click Install now

    • Enter the product key from the bottom of your OnLogic PC and click Next.

    • If prompted (typically when you don’t enter a product key), select your version of Windows.

    • Accept the license agreement and click Next

    • Choose the option for Custom installation

    • Delete all partitions from the drive you will be installing Windows 11 to, typically Drive 0.

    • With all partitions deleted, the Window should look like this. Click Next. New partitions will be created automatically.

    • Take a break while the installation proceeds

    • After a few minutes, the installation will complete and the PC will reboot.

    • Depending on the boot settings, the system may boot to the flash drive again. If that happens, click the X to reboot and immediately remove the flash drive.

    • When booting to your new Windows installation for the first time, you will be presented with this screen

    • Confirm your region and click “Yes”

    • Confirm your keyboard layout and click “Yes”

    • Click “Skip”

    • The PC may restart once more at this stage.

    • Provide a computer name or choose “skip for now” to automatically assign one. This mostly matters for networking.

    • Choose “Set up for work or school”. This will allow you to avoid needing a Microsoft account.

    • You may log in with your Microsoft account if desired.

    • In many business use cases, that is not desired. You can create a normal account with the “Sign-in options” button.

    • Choose “Domain join instead”

    • Enter a username and click next.

    • DO NOT set a password yet. Click Next.

    • This will help avoid additional nag screens.

    • Disable all of the options at the next screen. This helps enhance system security, especially if “modern” apps from the Microsoft Store will not be used. They can be enabled later if needed.

    • This loading screen will appear for a few minutes while the user settings are applied.

    • When completed, you will go straight to the Windows 11 desktop.

    • Your installation is complete!

    • If you are missing any drivers, start by running Windows update. It tends to find most of them. Otherwise, use the search box at the top of this page to find the “Technical Resources” page for your model. It will have a link to the drivers.

    • Open the start menu and search for “Activation“

    • The activation settings option will come up. Click on it.

    • The activation state is shown

    • Click the “Change” button

    • Enter the product key from the bottom of your OnLogic PC.

    • The key may be obscured by a square patch of silver security foil.

    • Very gently, scratch the foil off with your fingernail as you would a lottery ticket. The key is underneath.

    • Enter the product key in this window, press Next, and Windows will activate online automatically.

    Windows 11 moved the taskbar icons to the middle, which is not ideal for experienced Windows users. Fortunately, this is easy to change back.

    • Right click on the taskbar and choose “Taskbar Settings.

    • Scroll down and click on “Taskbar Behaviors”

    • Change “Taskbar Alignment” to “Left”

    The Windows 11 Pro start menu includes a few suggested apps from the Microsoft store. These recommendations are geared towards consumers and may not be wanted on a business machine. Right click on each undesired app and choose “uninstall”.

    Create Flash Drive

    Installing Windows

    First Boot & Setup

    Activating Windows

    Optional Tweaks

    Left Align the Start Menu

    Remove Preinstalled Apps

    downloadable from here.
    Logo
    K801 / K802 / K803 / K804

    Disk Initialization (Windows)

    How to format secondary storage drives

    OnLogic currently does not initialize storage drives unless an operating system was installed on them. This means that additional storage drives will not show up out of the box. They need to be initialized and formatted in disk management first. This guide will show you how.

    • Open the start menu and type in “management”

    • Open Computer Management

    • Click on Disk Management

    • In most cases, this popup will appear automatically.

    • Choose GPT and click OK

    • If the popup above does not appear, scroll down and locate the “Not Initialized” disk. Right click on the disk number and Initialize it. The popup will now appear.

    • Now that the disk has been initialized, you can create a volume and format it.

    • Right click anywhere in the black “unallocated” space.

    • Choose “New Simple Volume…”

    • Click Next on the window that appears.

    • Leave the number at the default and click next.

    • This will create one partition that fills the entire disk – the most common configuration.

    • Select a drive letter from the dropdown if desired. The default is fine.

    • Click Next

    • Format the drive

    • File System: NTFS

    • Enter a volume label if desired

    • quick format

    • Click Finish. The drive will start formatting and will show up under “This PC” within a few seconds.

    • The drive is now ready for use.

    Click Next