Windows 8下WebUSB调用USBDevice.open()提示Access denied问题求助
解决WebUSB打开ESP32系列设备的权限问题
问题背景
- 系统环境:Windows 8
- 涉及设备:Wemos D1 R32、ESP32 UWB设备
- 核心现象:设备可被Chrome识别,但调用
device.open()时抛出权限错误,当前设备使用「Silicon Labs CP210x USB to UART Bridge」驱动
测试代码
document.getElementById('getDevices').addEventListener('click', (event) => { navigator.usb.requestDevice({ filters: [] }).then(function (device) { console.log(device); return device.open(); // Begin }) .catch(error => { console.error(error); }); });
报错信息
DOMException: Failed to execute 'open' on 'USBDevice': Access denied.
驱动替换问题
尝试替换为Chromium提供的驱动inf文件时,收到系统提示:
Select Device
The folder you specified doesn't contain a compatible software driver for your device. If the folder contains a driver, make sure it is designed to work with Windows for x64-based systems.
解决方案
1. 给CP210x设备安装WinUSB驱动
你之前用的Chromium inf文件是针对USB gadget的,和CP210x设备不匹配。正确做法是给设备安装WinUSB驱动:
- 打开设备管理器,找到你的CP210x设备
- 右键选择「更新驱动程序」→「浏览我的计算机以查找驱动程序软件」
- 选择「让我从计算机上的可用驱动程序列表中选取」
- 从列表里找到「WinUSB设备」并安装;如果列表里没有,可手动指定Windows SDK自带的WinUSB inf文件,或者用Zadig工具自动安装
2. 用Zadig工具一键替换驱动
Zadig是专门处理USB驱动替换的工具,能自动适配设备:
- 下载对应Windows 8 x64版本的Zadig工具
- 打开工具后,点击「Options」→「List All Devices」
- 在设备列表里找到你的CP210x设备(显示名称可能和设备管理器一致)
- 右侧驱动下拉菜单选「WinUSB」,点击「Replace Driver」完成安装
3. 验证修复效果
安装完成后重启Chrome,重新测试代码:
- 确保没有其他串口工具占用该设备
- 调用
navigator.usb.requestDevice()选中设备后,应该能正常执行device.open()
额外注意事项
- Windows 8的WebUSB功能需要Chrome 61及以上版本,确认你的Chrome版本达标
- 部分ESP32设备需要在固件中添加WebUSB描述符才能正常被WebUSB识别,若驱动替换后仍有问题,检查固件是否开启了WebUSB兼容模式
内容的提问来源于stack exchange,提问作者CarbonMan
相关产品推荐
相关产品推荐

