Unsolved
1 Rookie
•
2 Posts
0
35
XPS 13 (7390) i2c touch screen error code 10
For some unknown reason the touch screen on my laptop stopped working. As I searched for a solution, I found that this problem has been around for many years across hardware vendors and many versions of Microsoft Windows.
The touch screen feature stops working when the related I2C HID Device fails to start:
(use Device Manager to view this info)
To kick start the Touch Screen back into operation Delete/Uninstall the inoperative I2C HID Device
After it's "gone, simply re-scan (Action -> Scan for hardware changes) from the device manager to re-install the device (or re-boot). I've found that my touch screen will remain operation for hours or days.. haven't figured out why it randomly "goes away".
Repeat this process as necessary...
I created the following "hack" of a PowerShell script to improve "recovery" time:
# Run as Administrator# Remove and restore touch screen to correct Error: 10# Get the device instance ID for the I2C HID Device Host Controller$deviceInstanceId = Get-PnpDevice -Class "HIDClass" | Select-Object -ExpandProperty InstanceId# Get the device instance ID for the I2C HID Device Host Controller.# My touch screen is on Intel(R) Serial IO I2C Host Controller - 02E8$device = Get-PnpDevice | Where-Object { $_.FriendlyName -like "*02E8*" }# Output the deviceWrite-Output "Device: $device"# Create deviceInstanceId string$deviceInstanceId = $device.InstanceId# Output the device instance IDWrite-Output "deviceInstanceId= " $deviceInstanceId# Check if the device instance ID was foundif ($deviceInstanceId) {# Uninstall the touch screen deviceStart-Process -FilePath "pnputil" -ArgumentList "/remove-device `"$deviceInstanceId`"" -NoNewWindow -WaitWrite-Output "remove-device complete. scan-devices to (re)add the touch screen."# Restore the touch screen devicepnputil /scan-devices} else {Write-Output "Device with ID 02E8 not found."}
Instruction from Copilot as to how to run the script in Power Shell from a double-click:
Prompt: provide instructions for running a powershell script by double-clicking
Sent by Copilot:
By default, double-clicking a PowerShell script (.ps1 file) opens it in a text editor like Notepad. However, you can create a shortcut to run the script with a double-click. Here’s how:
- Create a Shortcut:
-
- Right-click on your desktop or in a folder where you want the shortcut.
- Select New > Shortcut.
- Enter the Shortcut Target:
-
- In the location field, enter the following command, replacing C:\path\to\your\script.ps1 with the actual path to your script:
- powershell.exe -File "C:\path\to\your\script.ps1"
- Click Next.
- Name the Shortcut:
-
- Give your shortcut a name, like “Run My Script”.
- Click Finish.
- Run the Script:
-
- Double-click the shortcut you created. This will execute your PowerShell script.
If you need to run the script with administrative privileges, you can modify the shortcut to always run as an administrator:
- Modify Shortcut Properties:
-
- Right-click the shortcut and select Properties.
- Go to the Shortcut tab and click Advanced.
- Check the box for Run as administrator.
- Click OK, then Apply, and OK again.
Now, double-clicking the shortcut will run your PowerShell script with administrative privileges.
YetAnotherDave18
1 Rookie
1 Rookie
•
2 Posts
0
September 30th, 2024 19:50
hopefully the formatting will be correct this time (sorry, I couldn't figure out how to edit my original post.)
Partial automation: PowerShell script:
# Run as Administrator
# Remove and restore touch screen to correct Error: 10
# Get the device instance ID for the I2C HID Device Host Controller
$deviceInstanceId = Get-PnpDevice -Class "HIDClass" | Select-Object -ExpandProperty InstanceId
# Get the device instance ID for the I2C HID Device Host Controller.
# My touch screen is on Intel(R) Serial IO I2C Host Controller - 02E8
$device = Get-PnpDevice | Where-Object { $_.FriendlyName -like "*02E8*" }
# Output the device
Write-Output "Device: $device"
# Create deviceInstanceId string
$deviceInstanceId = $device.InstanceId
# Output the device instance ID
Write-Output "deviceInstanceId= " $deviceInstanceId
# Check if the device instance ID was found
if ($deviceInstanceId) {
# Uninstall the touch screen device
Start-Process -FilePath "pnputil" -ArgumentList "/remove-device `"$deviceInstanceId`"" -NoNewWindow -Wait
Write-Output "remove-device complete. scan-devices to (re)add the touch screen."
# Restore the touchs screen device
pnputil /scan-devices
} else {
Write-Output "Device with ID 02E8 not found."
}