
简介CH340驱动程序是面向工控调试、嵌入式开发和电子爱好者的一套USB转串口控制芯片驱动包适配CH340/CH341系列芯片解决设备接入电脑后无法识别、端口不显示或通信失败等常见驱动问题。压缩包内共15个文件整体仅176KB包含exe安装引导程序、sys系统驱动模块、inf安装信息文件、vxd与dll运行库以及cat数字签名认证文件既有32位也有64位版本可满足不同系统环境下的安装使用。目前已有367人学习下载。包里附带了INSTALL安装向导、README说明文档以及DLL_LIB目录下的头文件、库文件和BAS/PAS源码接口示例方便用户自行集成调用资源发布者实测该驱动可稳定兼容USB转RS-232传统串口及USB转RS-422线路适合需要连接调试模块、GPS接收器、工控设备等串行外设的用户直接下载使用。1. CH340驱动到底是什么为什么插上USB转TTL模块电脑却毫无反应你从某宝买了一块USB转TTL模块或者刚拆封一块开发板把板子往电脑上一插设备管理器里岿然不动或者弹出一个黄色感叹号系统提示“未知设备”。这时候九成新手的第一反应是板子坏了其实真相很简单你的电脑系统里没有CH340的驱动程序。CH340是串口芯片里出货量极大的一个型号大量低成本的USB转串口模块、Arduino兼容板、3D打印机主板都在用它。但Windows、macOS默认并不内置它的驱动所以每次插上新板子系统都不认识这颗芯片自然也就分配不出COM口。这篇笔记就是冲着这个痛点来的CH340驱动程序.ZIP这个压缩包到底怎么用、驱动装不上时是哪几个环节在使绊子、装完之后怎么判断它真的能干活。适合手里压着几块USB转TTL模块却总是跟电脑“冷战”的开发者也适合批量给测试电脑部署串口环境的长期折腾型玩家。先把驱动这个黑匣子拆开后面的事就都是顺水推舟。2. 排查驱动问题前先做的三件事分清驱动缺失、端口占用和硬件故障很多人一上来就双击安装包装完发现还是没用于是陷入“卸载重装”的循环。我一般会先花三分钟做一轮系统的状态确认把问题的性质定性了再动手。这一步能省下你至少半个小时的瞎折腾而且它能帮你搞清楚一个非常关键的问题CH340驱动到底装没装上、装上了为什么没生效。2.1 设备管理器里的三种“难看”状态分别代表什么打开设备管理器WinX菜单里选“设备管理器”插上USB转TTL模块你可能会看到三种情况。第一种完全没有任何新设备出现插拔都毫无动静这种通常不是驱动问题而是硬件链路断了多半出在USB线、板子供电或者芯片本身。第二种出现一个带黄色感叹号的“USB-SERIAL CH340”或者“未知设备”这说明系统已经识别到有新硬件插入但驱动加载失败问题基本锁定在驱动包本身或者版本匹配上。第三种设备正常显示为一个COM口比如“USB-SERIAL CH340COM3”但你的串口工具打不开它这种就是端口冲突或者驱动版本过旧跟“没装驱动”是两码事。这几种状态下处理路径完全不同。第一种要查线材和板子供电第二种要重装或更换驱动版本第三种要去查端口占用和驱动签名。如果你直接跳过判断去重装驱动第一种情况会永远装不上因为你根源就不在驱动上。我见过太多人反复卸载重装同一份驱动换了三台电脑最后发现是USB线只有充电没有数据线这个下面会单独展开。2.2 插上没反应不等于驱动坏了先查供电、线序和数据线这个坑绝对值得单独拎出来。CH340芯片本身的工作电压是5V或3.3V大多数模块板载了LDO稳压所以USB的5V供电基本够用。但如果你用的是那种手机充电线很多线材内部只接了VCC和GNDD和D-两根数据线根本没引出插上去除了能给板子供电数据完全不通设备管理器自然什么都看不到。判断方法很简单换一根你确定支持数据传输的USB线最好是短一点的别用那种1.5米以上的延长线信号衰减会让枚举时有时无。还有一个高频场景是板子上的CH340芯片虚焊或者模块是拆机旧料。CH340是QFN或者TSSOP封装的小芯片手工焊接很容易把相邻引脚桥连。你要是接过CH340G的DIP封装板焊完发现插上没反应先拿万用表量一下VCC引脚对地是不是5V再量USB的D/D-到芯片对应引脚是否导通这一步能排除掉一半以上的“假驱动故障”。2.3 用系统命令确认CH340驱动是否已经占位插上设备后不管设备管理器显示什么先用命令行看一眼系统里有没有CH340的驱动记录。Windows下可以用pnputil枚举系统中所有第三方驱动这是最快确认驱动是否“存在”的方式。驱动装没装和驱动有没有生效是两回事这个命令解决的是前者。pnputil /enum-drivers | findstr /i ch340这条命令会把系统驱动库里的所有第三方驱动设备信息列出来再用findstr过滤CH340关键字。如果输出里有对应的驱动包信息说明安装程序至少已经把驱动文件拷进了系统目录如果什么都没有说明安装根本没成功或者你解压出来的ZIP包里压根没有匹配当前系统的安装文件。注意pnputil /enum-drivers列出的只是驱动包是否被“加入”系统它不完全等于驱动已经加载到设备上。设备是否真正绑定驱动需要看设备管理器里那个设备还有没有感叹号。所以这个命令的用途是当你在设备管理器里看不到设备时用它来区分“系统里没有驱动”和“系统里有驱动但设备没起来”。2.4 判断驱动版本与系统位数的匹配关系CH340的Windows驱动安装包里有多个版本目录常见的有支持老旧Windows的目录、支持新系统的目录以及x86和x64分开的目录。很多人拿着一个ZIP包直接双击根目录下的setup.exe结果装完之后设备管理器依然报错。问题往往出在安装程序自动检测系统架构时选错了驱动文件或者你用的是很久以前的老驱动包里面的INF文件还没有适配新版Windows的签名策略。这里有个区分技巧看ZIP包里的目录结构如果有明显的x86、x64子目录或者有多个版本子目录就不要用根目录的安装脚本而是手动定位到和你系统匹配的那一层再右键安装INF。手动指定驱动目录这个操作在后面章节会展开写。版本判断上优先选择文件日期较新的驱动老驱动尤其是2018年以前的在Win10 1803以后和Win11上容易触发代码52签名问题。3. 把驱动装对Windows / macOS / Linux 三个平台的可复现安装步骤确认了系统状态、硬件链路、驱动库存之后下面进入正题把CH340驱动真正装上去。三个平台的做法差异很大Windows是必须装驱动macOS近几个版本开始内置支持Linux则是内核自带模块但需要处理权限。下面分别给出一套我最常用的、踩过坑之后固化的安装路径。3.1 Windows最小安装步骤解压ZIP后按系统位数选安装程序先明确一条原则不要直接双击ZIP包里的安装程序了事那不是最小安装那是碰运气。正确路径是先解压到干净目录然后打开设备管理器右键那个带感叹号的CH340设备选择“更新驱动”-“浏览我的电脑以查找驱动”-“让我从计算机上的可用驱动列表中选取”再手动指向你解压出来的驱动目录。这样系统会强制从这个目录里加载驱动绕开了自动安装时的种种意外。目录选择上要精确到INF文件所在的那一层不要选ZIP解压后的根目录。因为根目录里常常同时包含多个子平台的驱动Windows搜索驱动时如果不能在顶层直接找到匹配的INF它不会自动往下层递归寻找。选错目录的结果就是“找不到驱动”或者装了个不相干的版本。装完后设备管理器里应该出现“端口COM和LPT”下的“USB-SERIAL CH340COMx”x是系统分配的端口号。这个方法之所以可靠是因为它避开了setup.exe安装程序可能带来的附加判断逻辑直接让Windows的驱动管理引擎按INF文件描述加载。对于一台装了杀毒软件、UAC策略比较严格的办公电脑这个方式比双击安装包成功率高得多。3.2 用 pnputil 走命令行安装适合无人值守和批量部署如果你手里不止一块板子而是要给实验室十台电脑配置串口环境双击安装包的做法效率太低。Windows的pnputil命令可以做到静默安装驱动包下面是完整的命令序列。# 先把驱动文件添加到系统驱动库INF路径换成你实际的解压目录 pnputil /add-driver C:\ch340_driver\x64\CH340SER.INF /install # 枚举确认驱动包已加入系统驱动库 pnputil /enum-drivers | findstr /i ch340 # 强制扫描硬件改动让系统重新枚举USB设备 pnputil /scan-devices/add-driver的作用是把驱动包注册到系统驱动存储区/install参数让系统在添加成功后立即尝试为当前已连接的硬件安装驱动。这两步配合插着模块的情况下执行一次驱动一般就直接生效了。/scan-devices是触发系统重新扫描处理那种插着设备但在设备管理器里点了“扫描新硬件”依然没反应的情况。这里有一个参数细节值得注意/add-driver加不加/install行为差别很大。只加/add-driver时驱动只是进入系统库设备插上后还要等系统自动查询加上/install之后是对当前已经连接且匹配INF的设备立即尝试安装。对于新设备还未插入的情况其实不加/install也没问题等插上时系统会自己去驱动库里找。批量部署时我习惯先加好驱动库再把设备逐个插入这样每个设备识别时都能直接命中缓存驱动。3.3 macOS 下确认系统是否自带驱动从tty设备文件判断macOS从较新的版本开始对CH340提供了一定程度的原生支持插上模块后在终端敲ls /dev/tty.*如果出现/dev/tty.wchusbserial*或者/dev/cu.wchusbserial*这样的设备节点说明系统已经认出来了不需要额外安装。没有出现时才需要去找芯片原厂提供的最新macOS驱动包安装过程就是标准的dmg挂载、安装pkg然后重启一次让内核扩展注册生效。macOS上排查驱动问题比Windows更简单直接用system_profiler SPUSBDataType查看USB设备树确认CH340是否被系统枚举到。如果USB层面能看到设备但没有tty节点问题通常出在内核扩展kext没有被加载或者被系统安全策略拦截了。此时打开“系统设置”-“隐私与安全性”看是否有关于系统扩展被阻止的提示允许后重启即可。一个挺常见的坑是老版本macOS驱动和新版系统之间的兼容性装完驱动还是看不到tty时很多人会反复重装。正确做法是确认一下驱动安装时有没有被Gatekeeper拦下来。打开“终端”执行kextstat | grep -i ch340有输出表示内核扩展已经加载没有输出说明根本没加载成功这时候重装才有意义。如果kext已经加载还是没有节点那就要考虑是不是串口助手软件还没权限访问第一步先看ls -l /dev/tty.wchusbserial*的权限位。3.4 Linux 下加载 ch341 内核模块与 udev 权限设置Linux的情况跟Windows、macOS完全不同驱动已经躺在内核里了模块名叫ch341。插上设备后先确认内核有没有自动加载# 查看CH340相关内核模块是否已加载 lsmod | grep ch341 # 如果没加载手动加载 sudo modprobe ch341 # 查看设备节点是否生成通常是 ttyUSB0 ls -l /dev/ttyUSB*很多Linux用户尤其是Ubuntu桌面包插上就能用因为系统带了ch341模块且自动加载。但有个隐藏坑是权限默认情况下/dev/ttyUSB0的属主是dialout组如果你当前用户不在这个组里串口工具打开设备时就会报权限错误。解决方式是把用户加进dialout组然后重新登录。# 把当前用户加入dialout组重新登录后生效 sudo usermod -aG dialout $USER这一步做完绝大多数Linux下的CH340问题就结束了。如果插上后lsmod能看到模块但没有/dev/ttyUSB0那就要看dmesg | tail的日志常见的是USB枚举异常或者板子被系统识别成了别的设备。另外有些精简版内核把ch341编成了模块但没放在默认加载列表里这时候可以写一个udev规则来处理一般流程是新建一条规则让系统在设备插入时自动加载模块但实际生产环境里直接modprobe ch341加永久模块加载配置文件更省心。4. 驱动装不上的避坑记录数字签名、位数误配和端口失踪这一章专门收集Car经验。CH340驱动从安装到生效中间能翻车的地方比想象中多而且大部分翻车场景不是驱动包本身的问题而是系统环境、文件路径、接口选择这些看起来不相干的因素在捣乱。每条都是现象先行结论给解决方案。4.1 安装包提示“无法验证数字签名”被系统拦截现象双击CH340的安装程序系统弹窗说“无法验证此文件的数字签名”然后安装进程直接退出或者在设备管理器里手动安装INF时系统提示“未包含数字签名信息”拒绝加载。原因老版本驱动没有WHQL签名或者驱动文件在传输/解压过程中被破坏。Windows 10 64位和Windows 11对驱动签名校验非常严格无签名驱动的INF文件会被直接挡在加载阶段。大肆宣传的“关闭驱动强制签名”确实能临时绕过但每次重启又要重来不是长久之计。解决从芯片原厂官网下载最新驱动新版驱动都带签名。已经下载的ZIP包先右键-属性-勾选“解除锁定”再解压这个步骤能避免文件从网络下载后被Windows Mark of the Web标记造成的权限异常。另外很多商家附带的驱动盘里存的是好几年前的老驱动原厂驱动包也就几百KB重新拿一个远比重启进高级选项关签名校验省时间。4.2 32位驱动装到64位系统设备代码10无法启动现象驱动安装顺利完成设备管理器里也能看到“USB-SERIAL CH340”但图标上带黄色感叹号查看属性时错误代码是10——“设备无法启动”。原因ZIP包解压后根目录有一个安装程序很多老版本安装程序在64位系统上默认装的是x86驱动或者自动检测失败装错了INF。CH340的驱动是分x86和x64的INF文件里的相关描述不一样装错位数会导致驱动程序与系统架构不匹配加载时直接被拒。解决卸载掉当前驱动然后手动指定到正确版本的目录再装一遍。具体做法是设备管理器右键设备-“卸载设备”勾选“删除此设备的驱动软件”再重复3.1节里手动指向INF的流程。判断INF是否正确可以直接用记事本打开INF文件看开头几行里面会明确标注目标平台。这个操作零成本但能根治代码10。4.3 驱动装完没有出现COM口端口冲突与设备管理器刷新时机现象驱动安装过程没有任何报错设备管理器里设备也显示为正常但就是不出现在“端口COM和LPT”分类下串口工具刷新列表也看不到。原因多数是端口编号冲突。Windows会把串口编号从COM1开始分配CH340默认申请一个空闲编号但如果系统里已经存在蓝牙虚拟串口、其他USB串口或者某些软件创建的虚拟COM端口新设备可能被分配到一个已经被占用的编号导致设备注册失败。还有一个很冷门的原因是设备管理器的枚举缓存没刷新安装完驱动后界面显示的还是旧状态。解决先拔掉USB模块再点设备管理器菜单栏的“扫描检测硬件改动”插回模块看是否出现在新的分类下。如果确实没有打开设备管理器-查看-显示隐藏的设备找到有问题的端口设备右键-属性-高级端口设置手动指定一个未占用的COM编号推荐COM3以上的高位编号。更改完后重新插拔模块十有八九就正常了。4.4 换USB口或电脑后必须重装驱动的误区现象同一块模块在同一台电脑的A口装好驱动能用换到B口后又变成未知设备或者在一台电脑装好拿到另一台电脑插上系统依然不识别。原因Windows驱动库里其实已经全局存了驱动文件换口/换机后不识别通常不是因为文件缺失而是系统按USB设备实例ID重新匹配时在驱动库里搜索到了“兼容驱动”但没有自动安装。有时候表面上是不是“必须重装”本质是系统对新增设备实例的反应策略在作祟。解决不需要重装驱动也不需要重新下载。直接在设备管理器里找到那个未知设备右键-“更新驱动”-“自动搜索驱动”系统会自动从驱动库里找到CH340的驱动完成安装。这个思路帮你省掉反复解压安装包的体力活。如果你的工作流是频繁在多台机器上插拔模块提前把驱动备份成可携带的目录比到处找安装包省心得多备份方法在最后一章给。4.5 数据线只供电不通数据看起来像驱动没装的常见假象现象插上模块模块上的电源灯亮了但设备管理器没有任何反应系统提示音也没响。此时你重装了三遍驱动结果依然一样。原因这跟2.2节说的是同一类问题的延伸但这里要强调的是“提示音”这个细节。Windows在USB设备插入且枚举成功时会有一段特定的提示音如果插上只有电源灯亮但系统既没声音也没弹气泡问题大几率在D/D-数据线上。很多人觉得“线能亮灯就说明线是好的”这是错误的认知——充电线也是能亮灯的。解决换线永远是第一步不要碰驱动。优先用手机原装数据线或者模块自带短线避免使用带磁环的加长线。确认线材支持数据交换后如果还是无反应再回头怀疑CH340芯片。整体原则是先排查电气链路再动驱动软件这个顺序能让你少做大量无用功。5. 装完驱动后怎么验证从设备管理器到串口通信的参数核对驱动装完不能算完工因为驱动装好了仅仅意味着系统“认识”这个设备不代表你的串口工具一定能正常通信。本节给出装完驱动后最有效的验证链路先确认驱动文件路径、再核对串口参数最后用一条命令做通断测试。整个过程五分钟内可以完成但能检验出端口冲突之外的大部分隐患。5.1 设备管理器里确认COM口号和驱动文件路径驱动生效后设备管理器里的CH340设备会出现在“端口COM和LPT”下面名字通常是“USB-SERIAL CH340COM4”。右键该设备选“属性”-“驱动程序”选项卡这里能看到驱动提供商、驱动版本和驱动的详细文件列表最关键的是驱动日期和版本号。CH340模块每次插上时Windows都可能重新做一次硬件枚举但COM口的编号一般会保持稳定偶尔也会因为插入顺序不同而变化所以你的串口工具里要始终以设备管理器显示的实际编号为准。驱动文件路径在“驱动程序详细信息”里可以看到正常情况下核心文件包括CH340SER_64.sys64位系统或者CH340SER.SYS32位系统INF文件是CH340SER.INF。如果看到驱动文件加载路径指向System32下的drivers目录说明驱动已被系统正式接管。如果路径指向你的解压临时目录说明驱动是通过调试方式加载的重启后可能失效这种情况下重新用3.2节的pnputil /add-driver命令把它注册进系统驱动库更稳妥。5.2 串口参数设置波特率、数据位、停止位、流控一次调对驱动装好只是第一步你手里的板子能不能跟外部设备正常通信串口参数才是决定因素。CH340芯片本身支持波特率范围非常大从1200到2Mbps理论上现代参数都能覆盖但你的上位机软件和通讯对端必须统一。最常见的参数组合是波特率115200、数据位8、停止位1、无校验、无流控也就是大家在串口工具里高频看到的“115200 8N1”。如果你的模块是接GPS模块、TTL串口屏或者旧式传感器可能要用9600或者38400这些以对端硬件的手册为准。一个日常特别容易踩的问题是流控设置。很多工业设备默认关闭流控但某些设备管理软件会把RTS/CTS流控勾上导致明明端口打开了就是收不到数据。排查方法是把串口工具的流控选项全部关闭再试一次。如果数据通了说明之前的流控配置跟对端不匹配。CH340的RTS/DTR引脚在模块上是实实在在暴露出来的某些情况下流控电平变化还会影响对端单片机的复位引脚造成你一打开串口工具对端设备就重启的玄学现象这种场景下更要把流控选项彻底关掉。5.3 端口号被占用时的手动修改方法串口工具打开失败时第一反应要看是不是COM口被占用。CH340分配到的端口号跟系统已有的蓝牙串口、虚拟串口容易撞车而驱动本身不会自动换号。打开设备管理器找到CH340设备右键-属性-“端口设置”选项卡-“高级”右下角有一个“COM端口号”下拉框这里可以手动更改。改成什么好我一般用COM4到COM8这个区间。因为COM1和COM2经常被主板原生串口映射保留COM3容易被USB蓝牙占用高位一点更安稳。修改完成后需要重新插拔一次模块让驱动重新绑定新端口或者直接重启电脑。修改COM口不会破坏驱动本身只是改变了设备实例的端口映射。如果你的环境里有多块CH340模块同时使用建议把每块模块设成固定且不相同的编号插拔顺序导致端口漂移的问题就能从根上消除。5.4 用一条命令验证CH340数据通路是否打通装完驱动、参数也对齐了怎么确认数据通路真的通了最简单的方式是用串口助手自发自收做回环测试。把模块的TXD和RXD两个引脚用一根杜邦线短接然后在串口助手里发送一串字符能收到相同内容就说明CH340的收发链路完整。不想开图形界面的话也可以用命令行直接完成。# 打开对应串口并发送测试数据自发自收模式下能看到回显 python3 -c import serial; ser serial.Serial(COM4, 115200, timeout1); ser.write(bCH340 test\r\n); print(ser.read(64))这里的前提是你把TXD和RXD短接了数据会从发送脚转回接收脚。如果打印出来的是bCH340 test\r\n说明驱动加载、端口号、波特率全部正常。如果读回来的是空字节先别急着怀疑驱动检查一下TXD/RXD有没有接反CH340模块上丝印TXD、RXD别接反了TXD接对端RXD、RXD接对端TXD。如果这个逻辑搞反了数据发出去没人接收也收不到一切看起来都像故障但驱动其实是好的。6. 进阶技巧把驱动备份成绿色ZIP换电脑不用再联网找驱动最后一个章节给经常在台式机、笔记本之间切换环境或者要给多台设备配串口环境的朋友。CH340驱动的ZIP包其实是个一次性的东西装完就完成任务了但驱动文件本身是可以从系统里抽出来做成属于你自己的“绿色驱动包”的。这个习惯养成之后你再也不需要每次换电脑都翻浏览器找下载链接兜里揣个U盘比什么都强。从系统驱动库里抽出CH340的完整驱动文件有很多做法。设备管理器右键CH340设备-属性-“驱动程序”选项卡-“驱动程序详细信息”能看到当前驱动加载的全部文件路径把System32\drivers目录下的CH340SER_64.sys等文件连同INF一起拷出来就够用。更省事的方案是直接在驱动库的临时目录里找到微软拷贝的原始驱动包。INF文件的安装逻辑并不复杂把驱动文件和一个INF放在压缩包里到新电脑上手动指向目录即可。备份驱动的时候记得把INF文件放在根目录别塞进多层中文子目录里。中文路径、空格、过长路径在装驱动时偶尔会触发解析问题所以绿色包内目录尽量用纯英文。另外建议把安装命令也写一个说明文档塞进去内容就写pnputil /add-driver CH340SER.INF /install这一条就够。我自己的经历是有一次把驱动备份放在一个起了中文名且带空格的目录里在另一台电脑上手动安装时系统一直报找不到文件折腾了半小时最后把目录改成纯英文就好了。这种问题就像幽灵一样不出问题你不会想到路径命名也算个参数。驱动备份看起来是个不起眼的习惯但长期搞硬件调试的人应该深有感触环境依赖比硬件故障更难缠。你现在多花两分钟把CH340驱动归档成绿色ZIP下次博主脑袋一热重装系统、或者换新电脑时就能省掉二十分钟的联网搜索和反复解压。希望这篇笔记能帮你把CH340驱动这条路上的坑填得平整些也希望帮到你。本文还有配套的精品资源点击获取