Posts by fs-support_MRO

    Display / GPU driver

    I am pleased to announce that the next release (V1.2) will include a GPU driver. Which allows applications to take advantage of hardware acceleration for graphics and compute tasks, providing smoother rendering of images, faster processing of graphical data, and more efficient use of system resources.

    The kernel graphics driver for the i.MX8MP consists primarily of two components:

    1. GPU Driver (galcore.sys): Manages GPU functionality
    2. Display Controller Driver (dispctrl.dll): Handles display output

    Several timing parameters are configured via the Windows registry, which are later used for driver initialization. The default configuration in the registry is set for our 7" and 10" standard displays. If you wish to use the GPU driver for a different display, you can adjust the configuration as follows.

    Configuration Procedure

    1. Activate driver: First of all the display driver must be enabled. This can be done under the following registry key:

    [HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}]


    Entry Value Description
    Load DWORD Enable/Disable display driver

    0x0: Disable (default)
    0x1: Enable


    2. Update Display Parameters/Timings: To configure the display parameters, you will need to update the Windows registry. Modify the registry key at:


    [HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}\000X]


    (Notice: Replace X with the appropriate number for your GPU driver. This number can vary depending on other onboard display adapters i.e. Microsoft Remote Display Adapter, MS Basic Display Adapter)


    Entry Value Description
    DriverDesc SZ Name of the display driver
    “i.MX GPU Device” (default)
    EnableMultiMon DWORD Under this entry you can enable/disable the support of multiple display interfaces. If enabled the first display is determined by the Display0Interface parameter, the second display is determined by the Display1Interface parameter and so on

    0x0: single display
    0x1: multiple displays (default)
    Display<n>Interface DWORD Select display interface for the n display

    0x1: DISP_INF_HDMI (default Display1Interface)
    0x2: DISP_INF_DSI0
    0x3: DISP_INF_DSI1
    0x4: DISP_INF_LVDS0
    0x5: DISP_INF_LVDS1 (default Display0Interface)
    0x6: DISP_INF_DUAL0
    0x7: DISP_INF_PARALLEL_LCD
    Display<n>EDID BINARY The parameter contains EDID data encoded according to the EDID v1.3 structure (VESA). The first 128-byte data block is used, representing the basic EDID structure without any extensions. Resolution and timing parameters are extracted from the Standard Timing Information Descriptor 1 (offsets 54–71), including the pixel clock, horizontal and vertical active pixels, blanking pixels, synchronization pulse width, front porch, and the polarity of the VSYNC and HSYNC signals. During EDID loading from the registry, the EDID header (offsets 0–7) is verified, and the checksum (offset 127) must match. Other EDID data are ignored by the GPU driver.

    00 FF FF FF FF FF FF 00 04 21 00 .... 00 00 00 AF (default Display0EDID)
    Display<n>BusDataWidth DWORD Only related to LVDS Interface. This parameter determines the number of pixels mapped to the output signal

    0x12: 18 bpp
    0x18: 24 bpp (default)
    Display<n>BusMapping DWORD Only related to LVDS Interface. This parameter determines the pixel-mapping type in the output signal

    0x1: DISP_BUS_MAPPING_SPWG (default)
    0x2: DISP_BUS_MAPPING_JEIDA
    Display<n>NumLanes DWORD Only related to MIPI-DSI Interface. This parameter determines the number of DSI lanes

    0x1: One Lane
    0x2: Two Lanes
    0x3: Three Lanes
    0x4: Four Lanes (default)
    Display<n>ChannelId DWORD Only related to MIPI-DSI Interface. This parameter determines the virtual channel ID of the display

    0x0: Channel ID 0 (default)




    3. Apply the Configuration: Once the registry has been updated, you can apply the new configuration by:

    • Rebooting the board
    • Restarting the driver using the devcon utility: devcon.exe restart ACPI\VERI700x
    • Alternatively, disabling and re-enabling the device through Device Manager under Display adapters > i.MX GPU device

    Display Resolution and Timing Parameters

    HDMI Display Interface:

    • The HDMI display interface will use the native resolution of the connected display, typically obtained from the EDID (Extended Display Identification Data)
    • For most standard HDMI monitors, the native resolution is 1920x1080 @ 60 Hz
    • Resolution cannot be overridden. If the connected display supports a resolution higher than 1080p, the maximum supported resolution (1080p) will be applied

    LVDS Display Interface:

    • For LVDS displays, resolution and timing parameters are defined in the Windows registry via the DisplayEDID parameter, where <n> represents the display number
    • The EDID data is stored in REG_BINARY format, which follows the standard EDID v1.3 data format as published by VESA


    I hope this information helps you configure your display and GPU setup on the i.MX8MP under Windows IoT. If you have any questions or further feedback, please feel free to share.

    Hello,


    all necessary drivers are generally included in the system image. However, if a new device without a driver is added or if an driver update is required, you can follow the steps below to install the driver:

    Installation

    1. Copy the driver files to the Board (i.e. using an usb-stick or network)
    2. Open the Device Manager
    3. Find the driver in question, such as an Unknown Device or just the driver you want to update
    4. Right-click on the driver and select the option to update.
    5. Choose the option to browse your computer for the driver you previously copied


      Notice: Ensure that you selected the driver directory (containing driver files like .cat / .inf / .sys / .dll ....)
    6. Follow the prompts to install the driver

    7. After installation, a message will confirm that the driver was successfully installed
      Notice: You may need to restart your computer for the changes to take effect
    8. Finally, check the Device Manager again to ensure that the device is listed without any warnings


    Configuration

    Once the driver is installed, you can configure it within the driver registry. This allows you to set key codes for various inputs and rotations of the encoder.


    The registry key for the driver is: [HKLM\SYSTEM\CurrentControlSet\Enum\ACPI\UDP0001\2&daba3ff&0\Device Parameters}]


    Entry Value Description
    Load DWORD Enable/Disable Driver
    0: Disable
    1: Enable (default)
    UDP_Left DWORD Under this entry, you can assign a HID keyboard key scancode that will be executed when the encoder is rotated to the left

    0x04: Keyboard a and A
    0x05: Keyboard b and B

    0x50: Keyboard LeftArrow (default)
    UDP_Right DWORD Under this entry, you can assign a HID keyboard key scancode that will be executed when the encoder is rotated to the right

    0x04: Keyboard a and A
    0x05: Keyboard b and B

    0x4F: Keyboard RightArrow (default)
    UDP_Push DWORD Under this entry, you can assign a HID keyboard key scancode that will be executed when the encoder is pushed

    0x04: Keyboard a and A
    0x05: Keyboard b and B

    0x28: Keyboard Return ENTER (default)


    Here you can find all possible keycode inputs

    How to ping your F&S Board

    A ping command can be a useful way to check the basics of network connectivity, measure latency times, and diagnose basic issues with the SBC/SoM network connection.

    The ping from the SBC/SoM to a PC works smoothly, but not the other way around.

    Therefore, the following settings need to be configured on the SBC/SoM to enable it to be pinged and reachable on the network:


    • Start “Windows Defender Firewall with Advanced Security” on your SBC/SoM
    • Select and enable “File and Printer Sharing (Echo Request – ICMPv4-In)- private&Domain” under Inbound Rules

               


    Now, it should be possible to successfully ping your F&S Board from the PC!

    Display Settings in U-Boot environment

    The display driver for our boards is configurable via the U-Boot environment, allowing users to easily set up the desired display interface and panel itself.


    Accessing U-Boot

    To begin, establish a serial connection to the board using a terminal program like TeraTerm. As the board is rebooting, press a key to access the U-Boot prompt.


    Setting the Display Interface and Panel

    Once in U-Boot, you can configure the display settings with the following commands:


    Set Display Interface

    Code
    1. setenv displayinterface [0-4]
    2. (e.g.: setenv displayinterface 3)

    Options:

    • 0 : HDMI
    • 1 : MIPI-DSI
    • 2 : LVDS0
    • 3 : LVDS1 (default)
    • 4 : LVDS Dual


    Set Display Panel

    Code
    1. setenv displaypanel [0-5]
    2. (e.g.: setenv displaypanel 0)

    Options:

    • 0 : FS 7” LVDS LCD Display (default)
    • 1 : FS 10” LVDS LCD Display
    • 2 : 10" LVDS Display G104STN01
    • 3 : 7" LVDS Display J070WVTC0211
    • 4 : 7" TFT (WVGA) EDT ET070080DH6
    • 5 : 10” TFT LCD EV101WXM-N80


    Save your settings

    After entering the desired commands, be sure to save the changes using:

    Code
    1. saveenv


    Notice:

    You can also check the current environment settings, including which display interface and panel are configured, by using the command:

    Code
    1. printenv

    Up-Down-Pusher Driver on Windows 10 IoT LTSC

    The new UDPusher driver for 2-bit encoders is now integrated into the latest version of the Windows 10 IoT LTSC image. It supports both rotational and press actions, offering versatile functionality for a wide range of applications. The driver treats the encoder as a Human Interface Device (HID), making it easily recognizable and configurable through standard system interfaces.

    Key Features

    • HID Device Integration: The encoder is registered as an HID device, ensuring compatibility with a wide range of applications. It can be easily found and managed in the Device Manager under HID devices
    • Configurable Keycodes: Users can easily set the keycodes for encoder actions such as rotation and pressing through the Windows Registry (changes taking effect after a device restart).
    • Easy Installation: The driver comes pre-installed in the latest Windows 10 IoT image, enabling quick and straightforward deployment.
    • Reliable Performance: The UDPusher driver has undergone extensive testing to ensure stable and consistent performance across various IoT applications.

    Use Cases

    • User Interfaces: Use the encoder for navigation in user interfaces, such as selecting menu items or adjusting settings.
    • Industrial Applications: In automation, the encoder can be utilized for machine control or data input.
    • Consumer Electronics: Potential applications include smart home devices or entertainment systems for intuitive control.


    The UDPusher driver for 2-bit encoders on Windows 10 IoT offers a powerful and flexible solution for integrating rotary encoders into various IoT environments. Its configurability and ease of use make it a valuable tool for developers looking to enhance their projects.

    Display and Touch Support under Windows IoT

    Although tools like our FSDeviceSpy make it possible to use Windows IoT LTSC on an F&S board without a display or touch input, systems with displays and touch interfaces are more commonly utilized. To facilitate this, we offer a wide range of display interfaces, display panels, and touch controllers under Windows 10 IoT LTSC, including capacitive and resistive touch screens.


    Display Interfaces

    The selection of display interfaces depends on the specific board you are using, as not every board supports every interface. General there are following interfaces:

    • HDMI: Suitable for high-definition displays, providing excellent image quality
    • MIPI-DSI: Offering high-speed communication
    • LVDS0: Supports high-resolution displays with reliable signal transmission
    • LVDS1: An additional LVDS channel for flexibility in connection
    • LVDS Dual: Enables dual-channel LVDS for even higher resolutions and data rates


    Display Panels

    We offer displays with capacitive and resistive touch screen, that covers a wide range of application needs. Here are some of the display options available:

    DISPLAY Resolution Touch Supported on boards
    7” LVDS LCD Display 1024x600@60 capacitive armStoneMX8MP, picoCoreMX8MP
    10” LVDS LCD Display 1024x600@60 capacitive armStoneMX8MP, picoCoreMX8MP
    10" LVDS Display G104STN01 800x600@60 capacitive NetDCUMX8MP
    7" LVDS Display J070WVTC0211 800x600@60 capacitive armStoneMX8MP, picoCoreMX8MP
    7" TFT (WVGA) EDT ET070080DH6 800x600@60 resistive NetDCUMX8MP

    Touch Drivers

    Our latest Windows image (v1.1) includes drivers for resistive and capacitive touch screens. Here is a list of supported touch controllers:

    Touchcontroller Model
    Ilitek ili2130, ili2131, ili2132, ili2316, ili2322, ili2323, ili2326, ili2520, ili2521
    Goodix gt1151, gt1158, gt5663, gt5688, gt911, gt9110, gt912, gt9147, gt917s, gt927, gt9271, gt928, gt9286, gt967
    FocalTech FT5426, FT5526
    TSC2004 TSC2004*

    * This touch controller allows Windows-based touch calibration



    We are continuously working to expand our range of displays and touch controller drivers under Windows IoT. Our commitment is to provide the best possible solutions for diverse applications, ensuring compatibility and ease of use across all our boards.

    Installing bootloader & UEFI using UUU-Tool

    Welcome to this detailed guide on how to install/update various bootloaders & UEFI on your F&S Board using the UUU (Universal Update Utility) tool. Bootloaders are essential for initializing hardware and loading operating systems like Windows 10 IoT LTSC. This guide will walk you through the installation of bootloader involved in our setup, including N-Boot, U-Boot, UEFI, OP-TEE, ATF, and SPL.


    Using the UUU-Tool

    1. Download the UUU-Tool Package
      The whole software you need for installation is available on our file share, packed in a ZIP file. To access this content, you need to register on our F&S Homepage and provide a Windows IoT module serial number to unlock the files. If you have any further questions, please feel free to contact us at support@fs-net.de.
    2. Extract the UUU-Tool Package
      • Ensure the following files are present in the UUU-Tool package:
        • Microsoft.WindowsAPICodePack.dll
        • Microsoft.WindowsAPICodePack.Shell.dll
        • nboot.fs (e.g., nboot-fsimx8mp-2023.09.fs)
        • uboot.fs (e.g., uboot-fsimx8mp-Y2023.09.fs)
        • uefi.fit
        • uuu.auto<br>
        • uuu.exe
        • uuu_headless_starter.exe
    3. Prepare the Board
      • Connect the USB device (USB-OTG) from the base-board to your PC
      • Enter USB Serial Download Mode by following the steps specific to your board model:
        1. PicoCore: Press and hold the onboard Boot-Select button. Power on the board or restart it by pressing the Reset button. Then, release the Boot-Select button.
        2. ArmStone: Connect pin 65 (Bootsel) to pin 66 (Gnd) using a jumper. Power on the board.
        3. NetDCU: Connect pin 1 (Bootsel) and pin 2 (Gnd) of connector J14 using a jumper. Power on the board.
    4. Run the UUU Tool
      • Start uuu_headless_starter.exe. Enter the serial number of your board and click "Start" to begin the flashing process

                 

      • A command window will appear and handle the flashing process. Avoid interacting with the window until the process is complete

                 

    5. Complete the Installation
      • Once the process is finished, restart the board. If using armStone or efus boards, remove any jumpers before restarting.


    By following these steps, you should be able to successfully install bootloaders and UEFI on your F&S board using the UUU tool. Happy Flashing!

    Installing a Windows IoT Image on your F&S Board

    The typical way to install Windows IoT LTSC is to create a bootable SD card and then copy the F&S Windows installation files onto the SD card. Once the files are on the SD card, you can insert it into the F&S board, and it will automatically boot/install from the SD card. Very simple.



    Software/Hardware Requirements

    • SD card with at least 8 GB of storage
    • Software package with the Windows IoT image
    • F&S board with an iMX8MP processor and at least 2 GB of RAM
    • Connected display to monitor the installation process


    Creating a Bootable SD Card

    First, the SD card must be prepared for the Windows IoT operating system. Follow these steps:


    1. Start `diskpart` in the administrative command prompt:

    Code
    1. diskpart



    2. List all disks:

    Code
    1. list disk

    Output should be similar to this:

    Code
    1. Disk ### Status Size Free Dyn Gpt
    2. -------- ------------- ------- ------- --- ---
    3. Disk 0 Online 931 GB 429 GB *
    4. Disk 1 Online 14 GB 678 MB


    3. Select the correct disk for the SD card (in this example, disk 1):

    Code
    1. select disk 1


    4. Enter the following commands:


    Code
    1. clean
    2. convert gpt NOERR
    3. create partition primary id=c12a7328-f81f-11d2-ba4b-00a0c93ec93b size=32 align=8192
    4. create partition primary
    5. format fs=fat32 label="WinPE" quick


    Now the SD card is fully formatted!


    Deploy Software Package on SD card

    The final SD card content with the Windows 10 IoT LTSC operating system for installation is available on our file share. To access this content, you need to register on our F&S Homepage and provide a Windows IoT module serial number to unlock the files. If you have any further questions, please feel free to contact us at support@fs-net.de.

    To proceed, copy the contents of the 'SDiMX8MP_WIN10_VXXX' folder to the root of the SD card. You can use File Explorer to manually copy the files.


    Finally, insert the SD card and reboot the F&S board. That completes the installation!

    (FYI: Installing Windows IoT Enterprise from the SD card takes approximately 15 minutes. During the installation process, your device will restart a few times, so don't be alarmed)



    IMPORTANT:

    The WinPE installer renames the EFI folder at the root of the SD card to _efi, which causes UEFI to skip the SD card at boot time. This allows you to keep the SD card inserted across reboots without having Windows IoT reinstalled on each reboot. If you wish to boot into the WinPE installer again, you can rename _efi back to EFI.

    New UEFI Version allows use of 2GB RAM instead of 4GB


    With our recent changes in UEFI, it is now possible to utilize your boards with only 2GB of RAM, instead of the previous requirement of 4GB.

    This not only optimizes the performance but also significantly reduces the cost of your SBC/SoM. This means more affordable solutions without compromising on efficiency and capability.

    FSDeviceSpy & BCSend

    In the Windows IoT environment, F&S Boards usually are assigned an IP address via DHCP.

    Identifying the current IP address of these boards can be challenging, especially without a connected display. But there's a light at the end of the tunnel...

    BCSend

    To address this, F&S has developed a new application 'BCSend' that automatically executes an broadcast on your WinIoT F&S Boards at the beginning.

    This application is standardly implemented on every F&S board. If you don't need this application, you can easily turn it off in the settings:



    Now, the question arises: who initiates with the broadcast? This is where the additional application, FSDeviceSpy, comes into play.

    FSDeviceSpy

    FSDeviceSpy tool can intercept this broadcast. Once a F&S Board (in this case Desktop-U561LPJ) is intercepted, users can establish various connections with their host machine, like SSH or Remote Desktop:



    You can now download FSDeviceSpy in the attachment of the forum post. Have Fun :grin:

    How to debug your Windows IoT application over ethernet with Visual Studio 2019

    To debug a Visual Studio 2019 application on your F&S Single Board Computer / System on Module (now SBC/SoM) running Windows IoT, several actions must be performed. On SBC/SoM the remote tools (i.e. Remote Debugger) need to be installed and launched. Additionally, the project must be set up in visual studio so that a connection to the SBC/SoM can be established. Once configured, you can build your project and it will automatically deploy and execute the application on SBC/SoM.


    Configuration of SBC/SoM

    1) Passwordless connection (only needed when User on SBC/SoM has no password)

    Using a User on SBC/SoM without a password, it is essential to allow a passwordless connection.

    • Launch Regedit as an Administrator
    • Navigate to [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa]
    • If the "LimitBlankPasswordUse" entry is not already present, create it by right-clicking in the window, selecting New > DWORD (32-bit) Value, and name it "LimitBlankPasswordUse" with value "0"
    • If the "LimitBlankPasswordUse" entry is already present, double-click on it, and change the data to 0 (zero) to allow the use of blank passwords (or to 1 if you want to prevent blank passwords over the network

    • Restart the system

    NOTICE: Of course, it is not recommended not to use a password!


    2) Change sharing options

    First of all you have to activate the network discovery and file & printer sharing. You can find this settings under

    Control Panel > Network and Internet > Network and Sharing Center > Advanced sharing settings


    3) Create target directory

    For the Visual Studio application, create a target directory on the SBC/SoM. In order for this target directory to be accessible from the developer PC, it needs to be shared, either for all users or for the specific (local) user.

    For example: Create a directory named "debug" in the root directory (C:\) of the SBC/SoM. Afterward, access the properties of this directory. Proceed to the "Sharing" tab

    and click on the "Share" button. Select at least the local user of the SBC/SoM to share the directory with.


    Now it should be possible to access this “debug” directory via File explorer from the developer PC.


    4) Remote Debugger Installation

    After all important prerequisites have been met, we proceed with the actual installation and setup of the Remote Debugger Tool.

    For this purpose, you will need the following file: VS2019_RemoteTools.exe. This file can be downloaded directly from Microsoft Visual Studio or from our fileshare.


    Run the .exe file on the SBC/SoM and proceed with the installation. After the application has been successfully installed run this “Remote Debugger” application. The Remote Debugger is a small dialog that displays notifications. We will keep this dialog open and now focus on the developer machine that wants to access it.




    Configuration of developer PC / Visual Studio

    1) Visual Studio Application Property Page

    To establish a remote debugger connection from the developer PC, the following steps must be performed:

    In the project settings of the C++ project (not solution properties!), you have to navigate to the Debugger configuration. Under "Debugging", the "Remote Windows Debugger" has to be selected.


    Described below are the key parameters required for configuring remote debugging settings:

    Parameter
    Description
    Remote Command Refers to the pathway leading to the executable file of your application located on the remote server (SBC/SoM)
    Working Directory Designates the location where the remote command is executed. Utilizing the browse function, you can directly select the previously created "debug" directory. This step is highly recommended because it ensures the accurate pathway. Additionally, this path can be employed for other parameters, such as the remote command or the deployment directory
    Remote Server Name Connection details of the target machine (SBC/SoM). The information regarding the machine's name and port can be found in the Remote Debugger dialog (see Remote Debugger Installation). In our case it is: DESKTOP-ANTON5C:4024
    Debugger Type Determines which type of debugger will be employed to remote debugging. Based on our platform, we choose the "native only" option
    Deployment Directory Path on the remote server(SBC/SoM) where your application files or resources are copied before debugging commences. This step is essential to ensure that the remote application has all the required files to function properly and be debugged effectively.


    NOTICE:

    Instead of using the name "\\DESKTOP-ANTON5C" you can also use the IP address (e.g. \\10.0.0.200) of the SBC/SoM. However, this is not recommended as the IP address tends to change frequently (DHCP).


    2) Visual Studio Solution Configuration Manager

    After configuring the debugging settings, the final step is to set up the deployment of files. This can be achieved by accessing the Configuration Manager within the project solution (right-click on the solution > Configuration Manager).



    It is important here to ensure the correct active Solution configuration and platform are selected. Also, for the specific project (in this case: GPIOTestTool), make sure to check both BUILD and DEPLOY.


    With these steps completed, all settings for remote debugging should be set. Good work:thumbsup:

    Windows IoT Bus Tools

    GPIO, I2C, PWM, SPI and UART TestTool

    Microsoft provides a wide range of tools and samples for Windows IoT, including the bus tools. These tools have proven to be extremely helpful in assessing the performance and reliability of the various interfaces on our F&S boards. Thanks to these tools, we can conduct various test scenarios to ensure that our hardware seamlessly interacts with Windows IoT.

    For those of you who are working with or considering Windows IoT, it's great to know that these tools are free to use. You can download it from the following page.


    In general, these tools utilize the Windows.Devices Namespace. Within this namespace, you'll find sub-namespaces with specific types that allow you to communicate with various peripheral devices directly from your application. The sub-namespaces are the following:


    CAN TestTool

    However, it's important to note that, there's no official test tool provided by Windows for the CAN interface. In response to this, F&S has taken the initiative to develop its own CAN testing tool. This tool is structured in a manner similar to existing Microsoft test tools, ensuring familiarity for users.

    This CAN test tool makes use of the official Input/Output Controls (IOCTL) from the NXP FlexCAN driver. For a more detailed understanding of these IOCTLs, you can refer to the project CAN header file.



    NOTICE:
    The entire project is attached to this post and will be continually updated over time. We're actively working on making the tool more user-friendly.

    It is also possible to debug all these programs. For a comprehensive understanding of how this works, please refer to the other forum entry titled Deploying & Debugging VS applications over Ethernet.

    Hello,


    although the 'F&S Audio Mixer' does not work for us either, nevertheless we can't reproduce the problem with the sound.

    We were able to play our test wav files over 'Volume&Settings' and test all windows sounds. There was nothing to complain about the quality.

    Keyboard and touch inputs also produced windows sound outputs, no matter how many times typed.


    Do you have any other programs running that might have an effect on the sound?

    Can you please also send us an excerpt from "HKEY_LOCAL_MASCHINE\Drivers\BuiltIn\PicoCOMA5\WaveDev"?

    Hello,


    there is a new version for the NetDCU-USB-Loader (V2.5.0.1). With this version we have fixed the bug that sometimes no eboot image was transferred.

    Like usual you will find the new version of the NetDCU-USB-Loader under "MyF&S" in the "Tools" section at our hompage.


    Your F&S support team