
玩单片机开发的人应该都跟我一样在Win10上被USBasp的驱动折磨过。插上设备系统提示安装驱动结果下一秒就弹出“INF不包含数字签名信息”或者设备管理器里黄色感叹号写着“Windows 无法验证此设备所需的驱动程序的数字签名”。这个报错看着吓人其实解决办法就那么几种关键是搞懂系统为什么要拦你、以及用什么姿势绕过它最省事。今天就把这个问题掰开揉碎讲清楚顺便把CH340、ST-Link、J-Link这些同类驱动问题一并收拾了。1. 先搞明白为什么Win10死活不让装这个驱动1.1 “INF不包含数字签名信息”到底在说什么先解释一下背景。Windows从Vista 64位开始引入了强制驱动签名机制Win10 32位和64位都默认开启。驱动的本质是一段能运行在系统内核层的代码权限极高一旦跑起来可以访问任何硬件资源和内存地址。如果这段代码被恶意篡改后果等同系统被完全控制。所以微软要求凡是进入内核的驱动必须携带一份由受信任机构颁发的数字签名系统在安装时会校验签名是否完整、颁发者是否在信任列表里。签名校验不通过系统直接拒绝安装。你双击usbasp.inf时看到的“INF不包含数字签名信息”翻译成人话就是这个INF文件里没有声明任何数字签名配套信息系统无法确认这个驱动“到底是谁写的、有没有被改过”。这种情况下驱动包里即便有sys文件系统也不会把它加载到内核。1.2 USBasp这个老古董为什么没签名USBasp是开源的AVR ISP下载器方案作者Thomas Fischl在2008年左右发布的硬件核心就是一颗ATmega8或者ATmega48成本极低、电路极其简单。问题是这个项目从诞生起就没打算做商业驱动分发驱动只以源码和预编译INF方式提供从来没有购买过EV代码签名证书。在当年WinXP、Win7时代系统对驱动签名没有强制要求所以插上就能用。到了Win10时代事情就变了。微软把驱动签名校验从“可选”变成了“强制”而USBasp的驱动文件还是十几年前的老样子没有签名自然过不了关。类似情况在开源硬件圈特别普遍比如某些USB-Blaster仿品、老版本FriendlyARM开发板自带的串口驱动都会遇到同一个问题。这跟驱动本身好不好用没关系纯粹是“时代变了证件没跟上”。设备管理器里看到的典型表现有这么几种错误现象错误代码含义设备黄色感叹号52Windows无法验证此设备所需驱动程序的数字签名未知设备28未安装驱动手动安装提示INF不包含数字签名信息无INF签名校验不通过2. 最省事的方案临时关闭驱动签名强制2.1 重启到启动设置按一次F7如果你只是想赶紧把USBasp用起来不需要长期调试内核驱动那用Win10自带的“高级启动”功能最方便全程不需要敲任何命令。操作路径如下打开“设置 → 更新和安全 → 恢复”在“高级启动”下点击“立即重新启动”。电脑重启后会进入蓝色菜单依次点“疑难解答 → 高级选项 → 启动设置”。点击右下角的“重启”按钮系统再次重启。重启后会出现一列启动选项按数字键“7”或者功能键“F7”选择“禁用驱动程序强制签名”。这个选项是“一次性”的只对本次开机生效。系统正常进入桌面后你再去设备管理器手动更新驱动选择usbasp.inf所在目录这回就能正常装上了。2.2 装完之后如何确认驱动真的生效驱动装完后不能只看设备管理器里没有感叹号就完事了。我的习惯是用两个手段验证设备管理器里找到“USBasp”或“LibUSB-Win32 Devices”分类下的设备右键属性看到“此设备运行正常”才算是系统层面认了。打开ProgISP或者avrdude尝试连接目标芯片。比如用avrdude命令行验证avrdude -c usbasp -p m328p如果输出显示“Device signature 0x1e950f”就说明下载器已经能正常跟单片机通信了。有一点要注意如果设备管理器里识别到的是“未知设备Unknown Device”说明USBasp的固件没有正常跑起来或者USB线有问题这时候跟驱动签名无关先去解决硬件识别问题再说。2.3 这个方法有什么坑这个方法最大的缺点是“一次性”。你今天用F7启动装好了驱动明天正常开机如果设备被拔掉重插或者系统更新重置了驱动状态系统还是会拒绝加载未签名驱动。频繁重启到启动设置比较耗时但好在不需要改动系统配置适合临时救急和帮朋友处理问题。另外提醒一句禁用签名强制只是让你“能安装未签名驱动”并不等于系统安全防护被关闭。装完驱动后建议正常重启一次让系统回到签名强制状态不影响已安装驱动的正常使用。3. 长期方案开启测试模式跑未签名驱动3.1 用bcdedit开启测试模式如果你要长期使用USBasp或者日常要调试各种开发板工具每次开机F7不现实。这时候可以开启Windows的“测试模式”。测试模式是微软给驱动开发者准备的允许加载未签名驱动但系统桌面右下角会常驻一个“测试模式”水印提醒你当前系统处于非正式状态。开启方法很简单管理员身份打开命令提示符执行bcdedit /set testsigning on重启电脑后桌面上会出现“测试模式 Windows 10 专业版”之类的字样这时候再去设备管理器装USBasp驱动不会再有签名拦截。安装完成后驱动会一直有效不再需要每次开机设置。3.2 测试模式的关闭方法用完想恢复正常管理员命令提示符执行bcdedit /set testsigning off然后正常重启水印消失系统恢复常规签名校验。注意关闭测试模式后之前安装的未签名驱动可能还能继续工作也可能不行具体看驱动类型和系统版本所以不要觉得“关了就万事大吉”。3.3 哪些场景适合用测试模式测试模式适合你“确定要长期使用某个未签名驱动”的场景比如USBasp、某些国产串口芯片的老版本驱动、MCU调试工具的自制驱动等。但我不建议把测试模式当成永久方案。原因很简单测试模式会把内核签名校验整体放开这意味着一旦系统被病毒或恶意软件拿到权限它可以加载自己不签名的内核驱动防护能力大打折扣。安全软件在某些版本下也会因为测试模式而报黄色警告。个人经验是只在需要的那几天开着用完立刻关掉别图省事。4. 更优雅的思路用Zadig给USBasp换个带签名的驱动4.1 为什么USBasp能换驱动USBasp设备本身用的是ATmega8的USB接口属于HID或自定义设备它的VID/PID是十六进制的16c0:05dc。这个VID是“open hardware”项目共用的PID 0x05dc对应USBasp。巧的是这类开源设备通常都不挑驱动可以使用libusb-win32或WinUSB通用驱动。avrdude这些烧写工具本身就是基于libusb库开发走libusb-win32驱动完全兼容甚至比原版驱动更稳。所以思路就是与其跟微软的签名策略死磕不如让系统换一个“有签名”的通用驱动来接管USBasp。这个方案不需要重启进高级启动也不用开测试模式对新手来说最干净。4.2 Zadig安装驱动的步骤Zadig是一个开源驱动安装工具专门用来替换USB设备的驱动程序我给它定位是“驱动界的瑞士军刀”。下载地址是zadig.akeo.ie一般选最新的2.x版本就行。操作步骤把USBasp插到电脑上打开设备管理器确认设备出现在“未知设备”或“USBasp”分类下。打开Zadig在菜单栏选择“Options → List All Devices”把列表显示所有USB设备。在下拉框里找到“USBasp”如果显示未知设备名字可能是“Unknown Device”选中它。在右侧驱动选择区域把目标驱动换成“libusb-win32”或“WinUSB”。我个人推荐libusb-win32avrdude对它的兼容性最好。点击“Install Driver”或“Replace Driver”等待进度条走完。装完之后设备管理器里会多出一个“LibUSB-Win32 Devices”分类下面就是USBasp设备。这时候打开avrdude烧录通常直接就能用。4.3 Zadig方案的注意事项有几个细节容易翻车我踩过坑给你们排掉如果Zadig列表里找不到USBasp先检查系统是不是已经装过原版USBasp驱动装过的话要在设备管理器里先“卸载设备”并勾选“删除此设备的驱动程序软件”把旧驱动清干净再让Zadig接管。如果设备显示为“Unknown Device”且VID/PID全是0说明USBasp硬件没被正确识别大概率是USB线质量差或者供电不稳换根短线直接插主板后置USB口试。换驱动之后ProgISP这类老软件可能找不到设备这是因为它只认自带驱动接口。但avrdude、khazama、AVRDUDE_PROG等新工具完全兼容不用担心。这个方法还有个额外好处对于ST-Link、J-Link、CH340这些设备如果官方驱动出问题同样可以用Zadig换WinUSB驱动来救急尤其在一些奇怪的克隆版本设备上特别管用。5. 同场加映CH340、ST-Link、J-Link、CP2102、FT232R同类问题怎么处理5.1 分清楚“有官方新驱动”和“只能换通用驱动”USBasp只是冰山一角。很多玩嵌入式的朋友问驱动问题其实是这些常见的工具链设备设备典型问题最优解CH340Win10可能自动装错或装不上官网下载最新版CH341SER驱动老版本容易触发签名问题CP2102设备显示未知设备安装Silicon Labs官方CP210x VCP驱动FT232R无法识别或过期FTDI官方VCP驱动新版已带签名ST-Link设备管理器显示感叹号安装ST官网的ST-Link驱动或装完STM32CubeProgrammer后自动带驱动J-Link驱动版本不匹配安装Segger官方J-Link Software Pack它会接管驱动USBaspINF无签名信息优先用Zadig换libusb-win32或临时禁用签名强制这些设备的驱动如果遇到数字签名报错首先看官方是否发布了新版本驱动。CH340、CP2102、FT232R这些商业芯片厂商后来都补交了签名证书新驱动不会再有签名问题。ST-Link和J-Link更不用操心官方一直在更新。真正会卡在签名坑里的主要是那些停产、闭源、作者放弃维护的老设备这时候Zadig是最优解。5.2 手动指定驱动路径时报“指定的路径不包含适用的设备inf”这个错误很多人遇到过原因跟签名无关是INF文件里声明的硬件ID跟实际设备不匹配或者驱动包本身缺文件。排查思路确认INF文件跟sys、cat文件在同一个目录别只拷一个INF过去。右键INF文件选择“安装”看系统有没有给出更具体的错误提示。在设备管理器里点“更新驱动”时选择“让我从计算机上的可用驱动程序列表中选取”再点“从磁盘安装”浏览到INF所在目录。如果还是报错用记事本打开INF文件查看[Manufacturer]和[Models]段里声明的VID/PID跟设备管理器中“详细信息 → 硬件ID”里显示的对比一下对不上就是驱动包不对。6. 实操中容易踩的坑给你排掉6.1 装了驱动但avrdude报“cannot find usb device”这种情况多半是驱动类型不匹配。USBasp设备在不同的驱动下API接口不一样。avrdude的usbasp编程器后端默认走libusb-win32或libusb 0.1接口如果你用Zadig装了WinUSB驱动部分老版本avrdude可能不识别。解决办法一是换用Zadig重新安装libusb-win32驱动二是把avrdude升级到较新版本新版对WinUSB支持更友好。另外一个容易被忽略的点多块USBasp同时插入电脑时avrdude会因为设备枚举不唯一而找不到目标拔掉多余的下载器再试。6.2 Win11下同样适用Win11的驱动签名强制策略跟Win10一脉相承操作路径稍有变化。Win11下禁用驱动签名强制是设置 → 系统 → 恢复 → 高级启动之后的步骤和Win10一致。Zadig方案在两个系统下完全通用。所以你照着这篇文章处理Win11的问题逻辑上没有任何障碍。6.3 关于驱动的几个认知误区第一驱动装了不等于就能烧录。USBasp只是个USB转SPI/ISP的桥梁烧录软件比如avrdude必须通过正确的驱动接口访问它。驱动类型不匹配虽然设备管理器看着正常但软件依然找不到设备。第二不要为了装驱动去关掉Windows安全中心或者使用各种系统优化工具。驱动签名问题完全可以用正规途径解决关安全中心属于杀鸡用牛刀反而把系统暴露在风险中。第三USBasp固件版本也会影响兼容性。早期固件版本比如2008年左右的1.0在高速USB 2.0下可能出现识别不稳定有条件的话先用另一块AVR开发板给USBasp重新刷一遍最新固件2012年后的版本能减少很多莫名其妙的问题。6.4 一个小习惯我自己的习惯是每拿到一块新的USB设备USBasp、ST-Link、CH340等先不急着装驱动打开设备管理器看一眼硬件ID和当前状态。这个习惯帮我躲过了不少坑因为很多时候驱动装不上是硬件本身没被识别而不是驱动签名问题。硬件ID里如果VID是1A86是CH34010C4是CP21020403是FT232。看到VID和PID基本就能判断该去哪个官网找驱动。回到USBasp这个老古董我个人的最终建议是别再用系统自带驱动那一套了直接Zadig换libusb-win32一劳永逸avrdude用得飞起。如果哪天你换了电脑只要记住“USBasp → Zadig → libusb-win32”这个组合就再也没有签名报错能拦住你。