ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Win10/Win11下USBASP驱动安装实战:关闭数字签名与libusb替换方案

Win10/Win11下USBASP驱动安装实战:关闭数字签名与libusb替换方案 USBASP这个编程器玩过AVR单片机的朋友应该都不陌生。十几块钱一个却能把ATmega系列芯片的固件读写、熔丝位配置、Bootloader烧录安排得明明白白哪怕是给Arduino换BOOT或者救砖也是一把好手。可这几年Win10/Win11大规模普及之后很多朋友插上USBASP系统直接摆烂设备管理器里黄色感叹号提示“Windows无法验证此设备所需驱动程序的数字签名”驱动装不上烧录软件干瞪眼。这篇文章把我实际调USBASP驱动踩过的坑、试过的方法、最后稳定可用的方案完整写出来重点讲透数字签名关闭和libusb文件替换这两件事同时也覆盖Win11右键菜单改回Win10等系统操作无关的细节——不对这个跟USBASP没关系先收回来老实讲驱动。1. 为什么USBASP驱动在Win10/Win11上这么难装上1.1 USBASP是什么为什么现在还有人用它USBASP是基于Atmega8/Atmega16/Atmega32芯片做的一个USB接口的AVR ISP编程器。它走的是USB转串行ISP协议配合ProgISP或者AVRDUDE这类软件可以给AVR系列单片机烧录HEX文件、读取芯片内容、修改熔丝位。因为电路简单、成本极低、开源资料多所以不管是学生做课程设计、电子爱好者玩DIY还是维修师傅刷板子手头常备一个USBASP非常正常。现在ST-Link、J-Link这些调试器也很普及但USBASP在AVR领域依然有不可替代的位置。比如给老款ATmega8芯片写引导程序、修复被锁死的熔丝位、给Mega系列批量烧录很多老工程师还是习惯直接插USBASP。便宜、粗暴、效率高这是它一直没被淘汰的核心原因。问题是USBASP的驱动体系还停留在XP/Win7时代。它用的是libusb-win32这一套老驱动这套驱动在Vista之后就开始被微软的系统强制签名策略针对到Win10/Win11更是直接不让装。所以不是USBASP坏了而是Windows变“严格”了。1.2 驱动报错的根源数字签名与libusb先说数字签名。Windows从Vista 64位版本开始强制要求内核模式驱动必须有微软认可的签名否则一律拒绝加载。Win10/Win11沿用了这个机制而且执行得更彻底。USBASP使用的libusb-win32驱动文件libusb0.sys、libusb0.dll是开源社区维护的没有微软官方签名或者签名链在老版本上已经失效于是系统就直接判定为“不可信驱动”在设备管理器里给你一个黄色感叹号事件日志里写着“Windows 无法验证此设备所需驱动程序的数字签名”。再说libusb。libusb是一个用户态USB访问库搞嵌入式开发的朋友应该熟悉STM32的烧录工具、OpenOCD、很多USB转串口工具底层都在用。它分为libusb-1.0、libusb-0.1也就是libusb-win32等多个世代。USBASP原厂驱动基于libusb-win32也就是老版本的libusb0系列。而Win10/Win11系统自带的WinUSB驱动、或者Zadig工具安装的新版libusbK虽然也是libusb体系但和ProgISP这类老软件配合时经常出现识别不到设备的情况。所以问题就变成了两条路要么让Windows在驱动签名上“放水”放老驱动进去要么用新版libusb驱动替换掉老驱动同时还得保证和烧录软件兼容。两条路我都会讲实际操作中可以按需选择也可以组合使用。1.3 最常见的几种报错现场我在实际摸索中见过的报错大概有以下几类先列出来方便你对号入座设备管理器里出现未知设备属性显示“设备描述符请求失败”错误代码10。手动安装驱动时提示“Windows无法验证此设备所需驱动程序的数字签名”。安装libusb-win32驱动后系统提示“数据无效”或者“系统找不到指定的文件”。驱动装上了但ProgISP提示“USBASP not found”或者“Set AVR Programmer Type失败”。电脑重启后驱动又失效设备管理器恢复成黄色感叹号。这几类问题本质上都指向同一件事系统在驱动加载链路上卡住了要么是签名校验不过要么是驱动文件本身不匹配。下面我开始讲操作大家按顺序来先把签名这关过了。2. 安装前的准备先把工具和文件备齐2.1 需要准备哪些文件和软件在动手之前先把需要用到的东西列个清单省得中途到处找USBASP编程器一个确认硬件本身是好的怎么确认后面讲。Zadig工具建议下载2.8版本以上新版对Win11兼容性更好。libusb-win32驱动包包含libusb0.sys、libusb0.dll、libusb0.inf网上能搜到原版压缩包。ProgISP 1.72或AVRDUDE等烧录软件ProgISP是老经典AVRDUDE是命令行工具功能更全。管理员权限的命令行窗口这个后面操作要用到。如果系统是Win11 22H2及以上版本可能还需要自行准备数字签名关闭的备用方案这部分后面详细说。驱动包Zadig里面其实自带了一部分但libusb-win32的原生驱动包在手动替换文件时还是得单独准备。建议下载的时候注意选择32位/64位版本如果你的系统是64位就对应的用64位驱动包避免装完蓝屏。2.2 先确认USBASP硬件本身没毛病很多人一上来就怪驱动结果折腾半天发现是硬件问题。USBASP虽然便宜但有些山寨版本用的Atmega8芯片是翻新件USB接口的D和D-走线也没做阻抗匹配导致电脑识别不了。最简单的确认方法把USBASP插到电脑上如果系统有“叮咚”的插入提示音说明USB枚举阶段是通的如果什么反应都没有换个USB口试试优先用主板后面的直连口不要用USB Hub或者机箱前面板很多USBASP用USB 3.0口反而识别不正常USB 2.0口最稳。如果插上去用户能听到声音但设备管理器里显示“未知USB设备”说明枚举成功但驱动没有正确加载那就进入下一步。如果插上去完全没反应检查一下USBASP板子上的电源指示灯亮不亮不亮的话大概率是板子供电断路优先排查USB座虚焊和Atmega芯片电源脚。2.3 关掉Windows的驱动自动更新干扰Win10/Win11有个很烦人的默认行为每次插上新硬件系统自动去Windows Update找驱动找不到就开始折腾还会在你手动安装驱动的过程中从后台干扰。建议在正式开始之前把“设备安装设置”改成“否让我选择要执行的操作”同时挂起Windows更新一段时间尤其是Win11 22H2之后的版本更新频率高有时候刚装好的USBASP驱动重启一次又没了。具体操作右键“此电脑”→属性→高级系统设置→硬件→设备安装设置改成“否”。这一步不是必须的但能减少很多玄学问题。3. 关闭数字签名Win10/Win11可用的三种姿势3.1 临时禁用驱动签名重启一次就能用这是最常用、也是最安全的方法。Win10和Win11通用原理是通过高级启动模式临时关闭驱动签名校验只在本次启动内生效重启之后自动恢复。适合那种“装完驱动就完事不想一直开测试模式”的朋友。步骤如下先插入USBASP编程器。点击“开始”菜单按住键盘上的Shift键不放鼠标点击“重启”。电脑重启进入蓝色背景的“选择选项”界面依次点击“疑难解答”→“高级选项”→“启动设置”→“重启”。重启后会出现一个启动设置菜单按数字键7或者F7选择“禁用驱动程序强制签名”。系统正常进入桌面后再去设备管理器手动安装USBASP驱动。这里有个细节启动设置菜单里如果找不到“禁用驱动程序强制签名”这个选项别慌这多半是Win11 22H2之后微软把这个入口收起来了。那就用下面要讲的bcdedit命令方案。值得特别提醒的是通过这种方式进入系统后桌面的右下角可能会显示“测试模式”的水印等驱动装完重启一次水印就消失了属于正常现象。3.2 用bcdedit开启测试签名模式一劳永逸的做法如果你经常要插USBASP或者其他老设备每次重启都来一遍高级启动非常麻烦。我建议直接开启Windows的测试签名模式相当于告诉系统“我允许加载未经签名的驱动”一次性解决以后插上就能用。操作方式右键点击开始菜单选择“Windows PowerShell管理员”或者“命令提示符管理员”。输入以下命令并回车bcdedit /set testsigning on系统提示“操作成功完成”后重启电脑。重启后桌面右下角会出现“测试模式”字样说明已经生效。这时候再去设备管理器安装USBASP驱动应该就能顺利装上。如果哪天不想用测试模式了管理员命令行里执行bcdedit /set testsigning off然后重启即可。需要说明的是testsigning和完全禁用签名校验还有一点区别它本质上是让系统进入“测试签名”状态既能加载有测试签名的驱动也能加载完全无签名的驱动。对libusb-win32这种老驱动来说足够了所以我个人更推荐这个方案不用每次启动都折腾。3.3 彻底关闭驱动签名校验的备选命令还有一种更“狠”的方法是直接关闭内核完整性检查也就是彻底绕过签名校验bcdedit /set nointegritychecks on这个命令在部分Win10版本上有效在Win11上很多版本已经不再支持会提示“设置元素数据时出错”。我不建议把它作为首选因为关闭了核心完整性校验后系统整体安全防护会下降如果一个干净的系统为了个USBASP驱动做到这一步有点得不偿失。日常使用还是testsigning更合适既有水印提醒自己处于测试模式又能正常加载老驱动。场景选择建议临时用一次就选3.1的高级启动经常要用老设备就选3.2的测试模式如果3.2在你机器上失效再考虑3.3。4. 用Zadig替换libusb驱动最快最稳的安装方案4.1 为什么推荐Zadig而不是手动改INFZadig是一个开源的Windows USB驱动安装工具本质上它帮你完成了原本需要手工改INF、手动指向驱动目录、处理签名等一系列操作。它内置了libusb-win32、WinUSB、libusbK三种驱动针对USBASP设备我们一般选择libusb-win32驱动因为老牌烧录软件ProgISP只认这一套。手动改INF的方案在Win7时代很流行但在Win10/Win11上很容易因为签名问题、INF文件里的硬件ID不匹配、驱动版本太老等原因失败。Zadig则绕开了很多坑它会自动识别设备当前的接口信息生成匹配的驱动安装包并且在安装时自动处理好签名兼容问题前提是系统处于测试签名模式或者本次启动禁用了签名。实际操作中Zadig配合testsigning on基本是成功率最高的组合我后来给工作室的几台电脑装USBASP都是这个套路基本三步搞定。4.2 Zadig替换驱动的完整步骤假设你已经按照3.2开启了测试签名模式接下来操作Zadig插上USBASP确保设备管理器里能看到它位置可能在“未知设备”或者“libusb-win32 devices”下面。打开Zadig在菜单栏选择“Options”→“List All Devices”这样设备列表里会显示所有USB设备包括驱动没加载成功的。在左上角的下拉框里找到“USBasp”或者带“USBasp”字样的选项。注意别选错有些板子会显示两个接口一个USBasp主接口一个HID接口我们选USBasp主接口。右侧驱动选择框里选“libusb-win32 (v1.2.7.0)”或者“libusb-win32 (v1.4.0.0)”具体版本看Zadig提供的选项选最新可用的就行。点击“Replace Driver”或“Install Driver”按钮Zadig会开始安装驱动并提示“Driver installed successfully”。关闭Zadig拔掉USBASP重新插入系统应该能正常识别设备管理器里会出现在“libusb-win32 devices”下面一个“USBasp”设备没有黄叹号。整个替换过程大约十秒左右。如果点击后提示“Driver installation failed”先检查是不是没有进入测试签名模式或者换一个USB接口试试Zadig报错多半是系统签名拦截和硬件没关系。4.3 装完Zadig后设备管理器应该长什么样装完之后打开设备管理器应该能看到“libusb-win32 devices”这个分类展开后里面有“USBasp”设备图标上没有黄色感叹号。右键属性设备状态显示“这个设备运转正常”。这时候打开ProgISP选择USBASP编程器点击“连接”或者“检测硬件”如果驱动匹配没问题软件会直接识别出“USBasp”并显示芯片型号。如果ProgISP还是找不到设备看下一节的libusb文件替换操作大概率是ProgISP调用libusb库的路径出了问题。另外如果你在Zadig里选的是WinUSB驱动ProgISP可能会识别不到因为ProgISP是32位老程序它动态加载的是libusb0.dll而WinUSB驱动对应的是WinUSB.sys不走libusb0这一套。所以这里要宁可选libusb-win32哪怕版本老一点也要确保兼容性。5. 手动替换libusb文件救活老旧烧录软件5.1 什么情况下需要手动替换libusb文件Zadig虽然把系统驱动层搞定了但烧录软件那一层不一定跟着好使。ProgISP这种老软件安装目录下有个libusb0.dll文件它靠这个动态库去和系统里的libusb0.sys驱动通信。如果系统驱动换成了新版本或者烧录软件目录里的libusb0.dll版本过老、不匹配烧录软件就会报错或者说“USBASP not found”。这个时候就需要“libusb文件替换”出场了。说白了把系统驱动和应用程序依赖的libusb动态库调成同一个版本的配套组合。尤其是一些绿色版/汉化版的ProgISP打包的libusb0.dll版本混乱直接替换成驱动包里对应的版本就能解决。5.2 libusb-win32驱动包里的文件怎么用libusb-win32驱动包解压后里面有几个关键文件libusb0.sys系统驱动文件需要放到系统目录或者通过INF安装。libusb0.dll应用程序加载的动态库需要放到烧录软件目录。libusb0.inf安装信息文件指定驱动安装参数和硬件ID。libusb0_x64.sys64位系统的驱动文件如果驱动包里是分开的注意选对版本。如果你的USBASP已经通过Zadig装好了系统驱动但ProgISP还是找不到设备操作是把驱动包里的libusb0.dll复制到ProgISP所在目录覆盖原来的旧文件。如果之前已经装了别的libusb版本最好先备份原文件再覆盖以免烧录软件其他功能依赖旧版。如果系统驱动层还没有装好那就需要用INF文件手动更新驱动设备管理器里右键USBASP设备 → 更新驱动程序 → 浏览我的电脑 → 指向驱动包解压目录让Windows自动匹配INF安装。这种方式在测试签名模式下同样可行适合不想用Zadig的朋友。5.3 ProgISP和AVRDUDE对不同驱动类型的兼容性ProgISP 1.72这个软件比较老只认libusb-win32也就是libusb0系列对WinUSB、libusbK这些新驱动基本不认。如果你的Zadig里装的是WinUSBProgISP大概率是找不到的解决办法就是回Zadig重新选libusb-win32替换回去。AVRDUDE就友好得多新版AVRDUDE6.3及以上同时支持libusb-1.0和libusb-win32我在Win11下用AVRDUDE配合Zadig装的libusbK驱动也能正常烧录。所以如果你主要用AVRDUDE驱动选什么影响不大如果主要用ProgISP就锁定libusb-win32。有个实用技巧系统驱动装好后如果A款软件识别不到可以先把A软件目录下的libusb0.dll替换成驱动包里的版本因为A软件报错有时候不是因为系统驱动而是它自己调用的DLL太老和系统驱动握不上手。替换DLL比重新装驱动要快得多是我实际排查时最常用的第一招。6. 常见问题与排查技巧实录6.1 问题速查表问题现象可能原因解决方案插上USBASP毫无反应无提示音硬件供电或USB线不通换线换口检查板子指示灯检查USB座虚焊有提示音设备管理器显示未知设备驱动未安装或被签名拦截开启测试签名模式用Zadig替换驱动驱动安装时提示无法验证数字签名系统签名校验阻止老驱动高级启动禁用签名或bcdedit开测试模式设备管理器有USBasp但黄叹号驱动文件不匹配或签名失败卸载驱动重装换libusb-win32版本ProgISP提示USBASP not found烧录软件调用libusb0.dll失败替换ProgISP目录下的libusb0.dllAVRDUDE烧录时报“could not find USBasp”固件版本问题或接口ID不匹配检查USBasp是否枚举成功换个USB口装驱动过程中蓝屏32/64位驱动混用确认驱动包位数和系统一致安全模式删除错误驱动烧写到一半提示“connection error”USB线过长/供电不稳用短线高质量USB线接主机后置口6.2 插上没反应、未知设备反复跳动怎么排查USBASP插上后如果设备管理器里反复刷新、设备时有时无多数情况是供电不足或者接触不良。USBASP板子上一般有1117稳压芯片如果电容老化电流输出不够就会出现枚举不稳定。解决办法是换一根粗一点的USB线避开那种细长的手机充电线数据很差的线会导致D D-信号衰减根本识别不到。再一个就是接USB Hub的坑我试过好几个Hub带外部供电的还好不带供电的插上USBASP直接没反应最后都是直插主板USB口解决。如果换了线和口还是不行用万用表量一下USBASP板子的VCC和GND正常是5V和0V如果测量值不对优先检查USB座和稳压芯片。别一上来就刷固件很多板子其实是供电部分虚焊。6.3 驱动显示正常但烧录软件找不到设备这是最让人抓狂的情况设备管理器里USBasp状态完全正常没有黄叹号但ProgISP或AVRDUDE就是报“not found”。我遇到过的原因有这么几类第一种ProgISP没选择正确的编程器型号。ProgISP主界面左上角有“编程器”下拉框默认不是USBASP要手动改成“USBASP”。很多朋友装完驱动直接点连接没注意选择当然找不到。第二种ProgISP目录下libusb0.dll版本不兼容按照5.2节替换即可。第三种USBASP固件本身是“增强版双固件”它会同时枚举出两个设备烧录软件只认其中一个。这种情况在设备管理器里看到两个USBasp相关的设备ProgISP可能认到的是HID接口那个。解决方法是把Zadig驱动应用在USBasp主接口上HID接口不装驱动。第四种64位系统下ProgISP兼容性问题。ProgISP是32位程序在64位系统上运行没问题但如果它调用的驱动接口是32位老接口而系统装的是新版libusb就会失败。用AVRDUBE替代ProgISP是最省事的办法AVRDUDE还支持命令行批量烧录用起来不比ProgISP差。6.4 卸载残留驱动与重装技巧如果你之前装过乱七八糟的USBASP驱动设备管理器里留了一堆残留建议彻底清理一遍再重新装。先用Zadig把原来的驱动卸载Zadig里选择设备点击“Uninstall Driver”。然后在设备管理器里右键设备→卸载设备勾选“删除此设备的驱动程序软件”。如果系统目录里有残留的libusb0.sys可以手动进C:\Windows\System32\drivers删除但注意要在测试签名模式下操作否则删到一半被系统占用很难受。清干净之后重启电脑重新按“测试签名模式→Zadig安装→替换DLL”的顺序来一遍基本上能解决90%的疑难杂症。7. 最后再分享几个实操经验折腾USBASP驱动这几年我最大的体会是这玩意儿硬件本身很皮实出问题九成是驱动链路的问题而驱动链路的问题九成是数字签名在捣乱。所以在Win10/Win11上装USBASP驱动最重要的就是一个字“先开测试签名模式再动驱动”。这个顺序别颠倒很多教程让你先装驱动失败后再去关签名结果驱动装了一半系统状态变得很奇怪反而更难排查。另外一个经验是买USBASP的时候优先选那种带原厂固件备份的版本或者到手第一件事就用AVRDUDE把固件读出来备份。很多山寨USBASP用的是老版本固件如果你在烧录时不小心勾选了“写入熔丝位”有可能把芯片锁死到时候就必须用另一个编程器来救非常麻烦。我吃过这个亏后来干脆咬咬牙买了个USBASPST-Link双头货互相备用再也没慌过。还有个小技巧如果你手头有多台电脑系统分别是Win10和Win11驱动安装策略略有区别Win10上“高级启动→禁用驱动签名”这个方法极其稳定Win11 22H2之前的版本也好使如果你用的Win11 23H2或更新版本发现启动设置里没有那个选项别硬找直接用bcdedit开测试模式效果一样还免得次次重启。驱动装好之后建议用AVRDUDE做一个简单的读芯片测试确认整条链路通了再去做正事。命令大概是这样avrdude -c usbasp -p m8 -U flash:r:backup.hex:i如果能正常读出芯片内容恭喜你USBASP在Win10/Win11下算是彻底服帖了。以后不管换电脑还是换系统版本按这套流程走一遍基本不会翻车。
返回列表