Calibration for KMDF HID minidrivers (commonly used for Silead and other I2C touchscreens) typically happens through firmware parameters in the Windows Registry or the .inf installation file rather than a graphical tool.
If your touch input is inverted, offset, or restricted to a small area, follow the steps below to correct the calibration. 1. Locate the Driver in Device Manager
Before making changes, verify you have the correct driver installed. Press Win + X and select Device Manager. Expand Human Interface Devices. Look for KMDF HID Minidriver for Touch I2C Device.
Right-click it, select Properties, and go to the Details tab.
Select Hardware Ids from the dropdown. Note the ID (e.g., ACPI\VEN_MSSL&DEV_1680). 2. Identify and Modify Registry Parameters
Most I2C touch minidrivers read calibration data from a specific registry key when the driver starts. Open Registry Editor (regedit.exe).
Navigate to:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ACPI\
Look for the following keys (they may vary by manufacturer):
Touch0 to TouchX: These often contain hex values for X/Y limits. SwapXY: Set to 1 to swap axes; 0 to keep them. kmdf hid minidriver for touch i2c device calibration
InvertX / InvertY: Set to 1 to flip the direction of movement.
💡 Tip: If these keys are missing, check your driver's .inf file in the original driver folder. It usually lists the exact names of the parameters it uses. 3. Apply a Calibration Firmware File
Many Silead-based touchscreens require a specific firmware file (e.g., SileadTouch.fw) placed in the Windows Drivers folder to map the digitizer correctly.
Ensure the firmware file is in C:\Windows\System32\drivers\.
If the touch is still inaccurate, you may need a firmware file specific to your tablet model rather than just a generic driver.
Community-sourced firmware repositories like the gsl-firmware GitHub often provide the correct .fw files for various budget tablets. 4. Use the Built-in Windows Tool
If the hardware-level calibration (Registry/Firmware) is close but not perfect, use the Windows software-level calibration.
Search for "Calibrate the screen for pen or touch input" in the Start menu. Calibration for KMDF HID minidrivers (commonly used for
Click Calibrate... and follow the on-screen crosshair prompts.
Warning: This only fixes slight offsets. If your touch is inverted or mirrored, you must fix the Registry or Firmware first. Troubleshooting Common Issues Primary Fix Touch is inverted Change InvertX or InvertY in Registry. X and Y are swapped Change SwapXY in Registry. Touch only works in a small box
Update the SileadTouch.fw file or correct the MaxX / MaxY values in Registry. No touch response
Check for a yellow exclamation mark in Device Manager and reinstall the driver. If you'd like to proceed, could you tell me:
What is the exact Hardware ID of the device? (found in Device Manager) What is the brand and model of the tablet/laptop? Is the touch inverted, offset, or completely unresponsive? Touchscreen Not Working Properly Windows Only - Hi10 Pro
To allow a user-mode calibration tool to interact with your driver, you must provide a private IOCTL. This is how the calibration GUI collects raw points and sends back coefficients.
Define a custom IOCTL in your header:
#define IOCTL_TOUCH_CALIBRATE_SET_COEFFS \ CTL_CODE(FILE_DEVICE_UNKNOWN, 0x800, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_TOUCH_CALIBRATE_GET_RAWPart 6: User-Mode Calibration Application – The Companion
CTL_CODE(FILE_DEVICE_UNKNOWN, 0x801, METHOD_BUFFERED, FILE_ANY_ACCESS)
In your KMDF driver, implement a EvtIoDeviceControl callback:
void EvtIoDeviceControl(
WDFQUEUE Queue,
WDFREQUEST Request,
size_t OutputBufferLength,
size_t InputBufferLength,
ULONG IoControlCode)
switch(IoControlCode)
case IOCTL_TOUCH_CALIBRATE_SET_COEFFS:
// Lock mutex, copy coefficients into device context, apply to next touch
// Store in registry via WdfRegistry
break;
case IOCTL_TOUCH_CALIBRATE_GET_RAW:
// Temporarily bypass calibration, read raw I2C registers, return
break;
Your KMDF driver alone cannot perform calibration; it only applies it. A user-mode application must guide the user, collect points, compute coefficients, and call DeviceIoControl.
High-level flow of the calibration tool:
IOCTL_TOUCH_CALIBRATE_GET_RAW and record the I2C-reported coordinates.IOCTL_TOUCH_CALIBRATE_SET_COEFFS.This application must run with administrative privileges, as it modifies kernel-mode driver state.
HIDI2C sample driver (modified for calibration)WdfRequestSend and I/O target patternsThis article is intended for experienced Windows driver developers. All code examples are illustrative; refer to the latest Windows Driver Kit for production implementations.
KMDF HID Minidriver for Touch I2C Device is a specific Windows driver, often manufactured by
, used to manage touch screen input on many 2-in-1 tablets and budget laptops (like those from
). Calibration issues with this driver typically result in inverted axes, "phantom" touches, or the touch point being several inches away from where you actually pressed. CHUWI | Official Forum Common Fixes for Calibration Issues
If your touch screen is misaligned after a Windows update or re-install, try these steps: Update or Roll Back via Device Manager Device Manager and expand Human Interface Devices Right-click KMDF HID Minidriver for Touch I2C Device Update driver