George Mauer
George Mauer

Reputation: 122042

devcon disable cannot disable device not found

I'm on Windows 8.1 trying to disable my clickpad programatically. I've installed the correct x64 bit version of devcon as noted here. I can find the correct device but devcon disable with the same parameters fails.

PS C:\...\7600.16385.win7_wdk.100208-1538\tools\devcon\amd64> .\devcon.exe disable 'ACPI\SYN1ECA*'
ACPI\SYN1ECA\4&22077A96&0                                   : Disable failed
No matching devices found.

Which is rather confusing. It obviously finds the right device, but then reports "No matching devices found". What the heck?

Please note that I am aware of this similar question but, in addition to not having an accepted answer, that question has a different error and is likely using the wrong version of devcon.

Upvotes: 16

Views: 26554

Answers (5)

Daniel Donnelly
Daniel Donnelly

Reputation: 609

Programmatic approach in Python. What ended up working for me as well was of course Running as Administrator my app and the remove device(s) / rescan trick:

       DevConFX3Regex = re.compile(r'(?P<device_id>USB[^\s]*)\s+ : FX3')
       DevConCOMRegex = re.compile(r'(?P<device_id>[^\s]*)\s+ : .*\(COM[0-9]{1,3}\).*')

       def auto_repair_usb_com_ports(self):
          os.system('devcon findall * > DevCon.txt')
          
          with open('DevCon.txt', 'r') as devcon_text:
             devcon_text = devcon_text.read()
             
          for match in self.DevConFX3Regex.finditer(devcon_text):
             device_id = match.group("device_id")
             print(device_id)
             device_id = f'"@{device_id}"'
             os.system(f'devcon remove {device_id}')
             
          for match in self.DevConCOMRegex.finditer(devcon_text):
             device_id = match.group('device_id')
             device_id = f'"@{device_id}"'
             os.system(f'devcon remove {device_id}')
             
          os.system('devcon rescan')

Upvotes: 0

John Peterson
John Peterson

Reputation: 83

No matching devices found. is a confusing way for devcon to tell that you are running the command without elevation. This is without elevation:

devcon restart "PCI\VEN_10EC&DEV_8168&SUBSYS_85051043&REV_09"
PCI\VEN_10EC&DEV_8168&SUBSYS_85051043&REV_09\4&21A1C3AE&0&00E5: Restart failed
No matching devices found.

This is with elevation:

devcon restart "PCI\VEN_10EC&DEV_8168&SUBSYS_85051043&REV_09"
PCI\VEN_10EC&DEV_8168&SUBSYS_85051043&REV_09\4&21A1C3AE&0&00E5: Restarted
1 device(s) restarted.

To elevate right click on command prompt and select "run as administrator".

Upvotes: 2

user4839775
user4839775

Reputation:

Look at superuser question

Resume:

To download correct version devcon x86/x64. Run the devcon commands in cmd.exe with administrative privileges

To block/unblock:

USB\VID_1C4F&PID_0002&MI_01\6&1578F7C2&0&0001   : USB storage device

%windir%\system32\devcon.exe disable *VID_1C4F*
and
%windir%\system32\devcon.exe enable *VID_1C4F*

Sometimes devcon does not disable:

USB\VID_1C4F&PID_0002&MI_01\6&1578F7C2&0&0001 : Disabled
HID\VID_1C4F&PID_0002&MI_00\7&2B89365C&0&0000 : Disable failed

In this case, the only solution is replace the command: "disable" by "remove":

%windir%\system32\devcon.exe remove *VID_1C4F*

HID\VID_1C4F&PID_0002&MI_00\7&2B89365C&0&0000 : Removed
1 device(s) were removed.

But devcon is not a permanent solution for locking and unlocking devices. The test is that you can lock a usb device and then run bash script renewusb_2k.bat, and you will see that the script reinstall the usb drivers again and the locked usb device becomes accessible again.

Upvotes: 0

OGK
OGK

Reputation: 151

No Matching Devices is the way that windows tells you that it cannot find or access the devices you are looking for. There can be a couple of causes for this:

  1. Incorrect Permissions caused by not running the command prompt/BAT as an administrator. Simply right-click the relevant access method and select 'Run as administrator"
  2. Incorrect Access caused by running the wrong version of devcon.exe. As a remnant of the shift to 64 bit computer there are two version of devcon located in the 'Tools' folder, one for x86 and one for x64, ensure that you are running the correct version for your computer and you should be able to perform your tasks without issue.

Upvotes: 15

J.F.S.
J.F.S.

Reputation: 71

You are using the wrong "spelling" in your command.

This should work:

devcon.exe disable "ACPI\SYN1ECA*"

If you already found the exact device you want to disable you can do it like this:

devcon.exe disable "@<instace ID>"

In your case:

devcon.exe disable "@ACPI\SYN1ECA\4&22077A96&0"

If this also doesn't work you should use the remove command. remove works almost always, but the device will be back after you restart the system.

devcon.exe remove "@<instance ID>"

Upvotes: 7

Related Questions