串口驅(qū)動(dòng)多系統(tǒng)安裝與排查全攻略)
簡(jiǎn)介力特FT232芯片的USB轉(zhuǎn)串口驅(qū)動(dòng)包是一份兼容微軟舊版操作系統(tǒng)以及蘋果Mac OS的通用驅(qū)動(dòng)合集面向需要連接調(diào)制解調(diào)器、掌上電腦等RS232接口設(shè)備的技術(shù)人員和運(yùn)維人員解決USB轉(zhuǎn)串口適配器安裝后出現(xiàn)設(shè)備無法識(shí)別、串口通信失敗等常見問題。壓縮包一共包含108個(gè)文件整體大小約5.48MB文件類型覆蓋動(dòng)態(tài)鏈接庫、驅(qū)動(dòng)安裝信息、系統(tǒng)驅(qū)動(dòng)、安全目錄數(shù)據(jù)庫、庫文件、安裝程序另有PDF與TXT說明文檔、老式系統(tǒng)所需的虛擬設(shè)備驅(qū)動(dòng)、蘋果系統(tǒng)磁盤映像以及部分驅(qū)動(dòng)源碼和編譯腳本目錄結(jié)構(gòu)清晰方便按操作系統(tǒng)選擇使用。驅(qū)動(dòng)符合USB2.0標(biāo)準(zhǔn)最高傳輸速率可達(dá)1Mbps支持遠(yuǎn)程喚醒與電源管理在兼容傳統(tǒng)串行設(shè)備的同時(shí)也能滿足日常開發(fā)調(diào)試需求。目前已有4590人學(xué)習(xí)下載包內(nèi)附帶的INF安裝向?qū)?、說明文檔和源碼頭文件還能幫助高級(jí)用戶排查驅(qū)動(dòng)沖突或自行重新編譯整體實(shí)用性和完整性較好。 你有沒有遇到過這種情況手里拿著一根Z-TEK的USB轉(zhuǎn)串口線插到電腦上一點(diǎn)反應(yīng)都沒有設(shè)備管理器里只有一個(gè)黃色的感嘆號(hào)又或者其它設(shè)備下面冒出一個(gè)名字都叫不全的未知設(shè)備。這時(shí)候大部分人的第一反應(yīng)是去百度搜驅(qū)動(dòng)結(jié)果下載下來一堆捆綁軟件裝完反而把系統(tǒng)搞得烏煙瘴氣。我自己剛接觸單片機(jī)開發(fā)時(shí)也這樣折騰過后來在FT-232這條線上踩了不少坑才慢慢把里面的門道理清楚。這篇就把Z-TEK力特FT-232 USB轉(zhuǎn)串口驅(qū)動(dòng)在多系統(tǒng)下的安裝、排查和注意事項(xiàng)一次說透。無論你是玩Arduino、ESP32、STM32的嵌入式開發(fā)者還是搞工業(yè)設(shè)備調(diào)試、連接路由器交換機(jī)網(wǎng)管口的運(yùn)維這篇文章都值得你花幾分鐘看完——因?yàn)樗v的不僅是點(diǎn)幾下鼠標(biāo)裝個(gè)驅(qū)動(dòng)而是從芯片識(shí)別、系統(tǒng)底層機(jī)制到故障排查的一整條鏈路搞懂之后換任何USB轉(zhuǎn)串口芯片都能舉一反三。1. 先從源頭認(rèn)清你的設(shè)備Z-TEK的FT-232到底是什么芯片大家常說的FT-232驅(qū)動(dòng)準(zhǔn)確點(diǎn)講其實(shí)是FTDIFuture Technology Devices International這家公司出品的FT232系列芯片的驅(qū)動(dòng)。Z-TEK力特是一家做連接線材和轉(zhuǎn)接設(shè)備的品牌它旗下很多USB轉(zhuǎn)串口線、USB轉(zhuǎn)9針串口線用的就是FTDI的FT232R或者FT232RNL芯片。也有個(gè)別型號(hào)用的是國產(chǎn)替代芯片但在Z-TEK的產(chǎn)品線里標(biāo)注了FT-232的型號(hào)基本就是FTDI方案。FT232系列里我們最常碰到的幾個(gè)型號(hào)差異要先弄清楚型號(hào)接口類型特點(diǎn)常見應(yīng)用場(chǎng)景FT232RUSB轉(zhuǎn)UART單通道、最經(jīng)典、性價(jià)比高內(nèi)置EEPROMArduino下載線、TTL電平調(diào)試FT232HUSB轉(zhuǎn)FIFO/SPI/I2C/UART高速、可配置多種協(xié)議芯片燒錄、FPGA調(diào)試、SPI屏驅(qū)動(dòng)FT2232HUSB轉(zhuǎn)雙通道UART/FIFO雙通道、可同時(shí)跑兩種模式JTAG調(diào)試器、雙串口設(shè)備FT231XUSB轉(zhuǎn)UART新一代、封裝更小、更省電便攜設(shè)備、模塊內(nèi)置Z-TEK的USB轉(zhuǎn)串口線絕大多數(shù)用的是FT232R。這顆芯片內(nèi)部集成了EEPROM出廠時(shí)寫入了廠商信息、序列號(hào)、VID/PID等參數(shù)這也是為什么同一根線在不同電腦上都能被正確識(shí)別的原因——它靠VID/PID和系統(tǒng)里的驅(qū)動(dòng)庫做匹配而不是靠裝某個(gè)品牌的專用軟件。順帶提一句識(shí)別方法拿到設(shè)備后不用拆殼把USB插到電腦上在設(shè)備管理器里看端口COM和LPT或通用串行總線控制器下面出現(xiàn)的設(shè)備名。如果是FTDI芯片會(huì)直接顯示USB Serial Port或者FT232R USB UART如果顯示USB Serial Converter說明驅(qū)動(dòng)已經(jīng)識(shí)別到芯片層但還沒加載到串口層。2. 多系統(tǒng)驅(qū)動(dòng)的真實(shí)需求不是所有系統(tǒng)都非要手動(dòng)裝很多人以為USB轉(zhuǎn)串口驅(qū)動(dòng)是個(gè)必須手動(dòng)安裝的Windows專屬東西其實(shí)這是一個(gè)誤解。不同操作系統(tǒng)對(duì)FT232芯片的支持策略完全不同搞清楚這一點(diǎn)能省下大量瞎折騰的時(shí)間。先說我平時(shí)用得最多的Linux系統(tǒng)。從內(nèi)核2.4.x版本開始FTDI的FT232系列芯片驅(qū)動(dòng)ftdi_sio模塊就已經(jīng)被合入了主線內(nèi)核現(xiàn)代發(fā)行版Ubuntu、Debian、Arch、CentOS等默認(rèn)開啟了這個(gè)模塊。也就是說在Linux下插上Z-TEK的線系統(tǒng)會(huì)自動(dòng)加載驅(qū)動(dòng)并生成/dev/ttyUSB0設(shè)備節(jié)點(diǎn)根本不用裝任何東西。唯一要注意的是有些精簡(jiǎn)版內(nèi)核或者嵌入式交叉編譯環(huán)境沒編譯這個(gè)模塊這種情況才需要自己手動(dòng)modprobe或者重新編譯內(nèi)核但對(duì)于桌面Linux用戶來說開箱即用是常態(tài)。macOS的情況也類似。FTDI官方為Mac系統(tǒng)提供了驅(qū)動(dòng)但蘋果從10.9版本開始內(nèi)置了AppleUSBFTDI驅(qū)動(dòng)新版本macOS插上FT232芯片的設(shè)備后也能直接識(shí)別。不過這里有個(gè)坑如果你裝了FTDI官網(wǎng)的驅(qū)動(dòng)而系統(tǒng)又有內(nèi)置驅(qū)動(dòng)可能因?yàn)楹灻桶姹締栴}產(chǎn)生沖突導(dǎo)致插上設(shè)備后反而識(shí)別異常。我自己的經(jīng)驗(yàn)是能用系統(tǒng)自帶就別裝第三方真的遇到兼容問題再考慮裝官方版。Windows反而是唯一需要普通用戶手動(dòng)裝驅(qū)動(dòng)的系統(tǒng)。但要注意Windows 10和Windows 11其實(shí)也內(nèi)置了FTDI的驅(qū)動(dòng)簽名版本插上設(shè)備后系統(tǒng)會(huì)自動(dòng)去Windows Update拉取驅(qū)動(dòng)。只是這個(gè)自動(dòng)過程有時(shí)不太順利——可能是系統(tǒng)更新策略限制也可能是設(shè)備插在擴(kuò)展塢上導(dǎo)致枚舉時(shí)序異?!源蟛糠纸坛踢€是建議手動(dòng)安裝FTDI的VCP驅(qū)動(dòng)Virtual COM Port Driver。手動(dòng)裝的好處是版本可控出問題方便排查?;氐絑-TEK這根線本身它的立身之本就是多系統(tǒng)通用所以出廠沒有綁定某一個(gè)操作系統(tǒng)的專用驅(qū)動(dòng)而是依賴芯片廠商的通用VCP驅(qū)動(dòng)這既是優(yōu)點(diǎn)也是隱患——優(yōu)點(diǎn)是你只需要認(rèn)準(zhǔn)FTDI驅(qū)動(dòng)下載渠道隱患是一旦下載到錯(cuò)誤版本的驅(qū)動(dòng)就會(huì)出現(xiàn)各種奇怪問題。3. Windows下驅(qū)動(dòng)安裝的正確姿勢(shì)從官網(wǎng)到設(shè)備管理器的完整鏈路先說結(jié)論Windows下裝Z-TEK的FT-232驅(qū)動(dòng)不要去第三方驅(qū)動(dòng)站不要用驅(qū)動(dòng)精靈、驅(qū)動(dòng)人生之類的工具直接去FTDI官網(wǎng)的驅(qū)動(dòng)下載頁拿VCP驅(qū)動(dòng)。具體操作步驟是這樣瀏覽器打開FTDI官網(wǎng)的驅(qū)動(dòng)下載頁面ftdichip.com的Drivers目錄下找VCP Drivers部分。根據(jù)系統(tǒng)選擇對(duì)應(yīng)的安裝包。Windows系統(tǒng)通常是exe安裝文件最新版本同時(shí)支持x86/x64老系統(tǒng)Win7/8需要看說明挑版本。下載前先確認(rèn)系統(tǒng)位數(shù)——在此電腦右鍵屬性里查看系統(tǒng)類型64位系統(tǒng)選x64安裝包32位選x86。裝錯(cuò)位數(shù)是最低級(jí)的錯(cuò)誤但現(xiàn)實(shí)中真的有人犯。安裝時(shí)建議先插上Z-TEK的USB轉(zhuǎn)串口線等系統(tǒng)提示無法識(shí)別的USB設(shè)備再開始安裝驅(qū)動(dòng)。順序不是絕對(duì)的但先插后裝可以提高枚舉成功率。安裝過程中如果Windows彈安全提示選仍要安裝即可。FTDI的驅(qū)動(dòng)有微軟簽名認(rèn)證正常情況下不會(huì)觸發(fā)高危警告。裝完之后打開設(shè)備管理器展開端口COM和LPT如果看到一個(gè)USB Serial Port (COM3)或者類似名字說明驅(qū)動(dòng)已經(jīng)正常加載。那個(gè)COM編號(hào)就是你的串口號(hào)之后用Putty、SecureCRT、Arduino IDE或者串口調(diào)試助手時(shí)選的端口就是它。如果你在設(shè)備管理器里看到的是USB Serial Converter而不是USB Serial Port也不用慌這表示芯片層驅(qū)動(dòng)裝好了但串口層沒有正確綁定。右鍵卸載設(shè)備勾選刪除此設(shè)備的驅(qū)動(dòng)程序軟件然后重新插拔USB再掃面硬件改動(dòng)一般就能恢復(fù)正常。有一點(diǎn)我必須提醒有些Z-TEK的線材是USB轉(zhuǎn)DB9公頭的RS232電平線這種線內(nèi)部除了FT232R還有一個(gè)電平轉(zhuǎn)換芯片比如SP3232裝好FTDI驅(qū)動(dòng)后系統(tǒng)識(shí)別出來的是一樣的USB Serial Port但連接時(shí)不能把它當(dāng)成TTL電平用。這點(diǎn)在接單片機(jī)、傳感器時(shí)特別容易混淆——TTL電路板上的TX/RX接的是3.3V或5V電平DB9串口接的是正負(fù)電壓的RS232電平直接互連必?zé)?. Linux和macOS驅(qū)動(dòng)免安裝背后的機(jī)制與潛在坑Linux下雖然理論上免驅(qū)但實(shí)際使用中還是有幾個(gè)細(xì)節(jié)值得注意。插上Z-TEK的FT-232線后先用lsusb命令看看設(shè)備是否被識(shí)別。正常情況下會(huì)看到一行Bus 001 Device 005: ID 0403:6001 Future Technology Devices International, Ltd FT232 Serial (UART) IC。注意那個(gè)0403:6001這是FTDI的VID廠商識(shí)別碼和默認(rèn)PID產(chǎn)品識(shí)別碼??吹竭@個(gè)ID基本可以確定硬件層面沒問題。接著查看串口設(shè)備節(jié)點(diǎn)ls /dev/ttyUSB*如果看到/dev/ttyUSB0說明ftdi_sio模塊已經(jīng)成功綁定。但如果這里什么都沒顯示可能是權(quán)限問題也可能是模塊沒加載。權(quán)限問題的解決方法是把當(dāng)前用戶加入dialout組sudo usermod -a -G dialout $USER然后重新登錄一次不需要重啟。如果加入后還是提示權(quán)限不夠再檢查一下/dev/ttyUSB0的權(quán)限ls -l /dev/ttyUSB0正常顯示應(yīng)該是crw-rw---- root dialout用戶屬于dialout組就能讀寫。模塊沒加載的情況比較少見但如果你用的是精簡(jiǎn)版內(nèi)核或者自己編譯過內(nèi)核沒開CONFIG_USB_SERIAL_FTDI_SIO選項(xiàng)就得手動(dòng)加載sudo modprobe ftdi_sio如果想開機(jī)自動(dòng)加載可以寫入/etc/modules-load.d/ftdi.conf文件。macOS下插上Z-TEK線后查看串口設(shè)備是用ls /dev/cu.usbserial-*macOS的系統(tǒng)驅(qū)動(dòng)會(huì)把它命名為/dev/cu.usbserial-xxx注意別和/dev/tty.usbserial-xxx搞混了。cu開頭的設(shè)備用于主動(dòng)撥號(hào)/呼叫tty開頭的用于被動(dòng)監(jiān)聽日常用串口調(diào)試工具時(shí)選cu開頭的就行。如果這里沒有任何輸出大概率是系統(tǒng)內(nèi)置驅(qū)動(dòng)被系統(tǒng)完整性保護(hù)SIP干預(yù)了或者跟上文提到的官網(wǎng)驅(qū)動(dòng)產(chǎn)生沖突。解決思路是先卸載第三方驅(qū)動(dòng)再插設(shè)備或者反過來但最終保持只用一個(gè)驅(qū)動(dòng)的原則。另外很多在Linux下用Docker做嵌入式開發(fā)的讀者要注意容器默認(rèn)不繼承宿主機(jī)的串口設(shè)備跑容器時(shí)需要用--device/dev/ttyUSB0參數(shù)把串口映射進(jìn)去這個(gè)屬于環(huán)境配置問題和驅(qū)動(dòng)無關(guān)但確實(shí)容易被忽略。5. 驅(qū)動(dòng)裝不上的完整排查鏈路從系統(tǒng)日志到硬件損壞的逐層定位驅(qū)動(dòng)安裝失敗是大家問得最多的一類問題。這里整理一條我自己在實(shí)際問題排查中反復(fù)使用的路徑跟著走基本能定位到九成以上的故障原因。第一步是確認(rèn)硬件枚舉是否成功。Windows下打開設(shè)備管理器看通用串行總線控制器下面有沒有USB Serial Converter或帶感嘆號(hào)的USB Serial字樣Linux下執(zhí)行dmesg | tail -20看內(nèi)核日志里有沒有usb 1-1: FTDI USB Serial Device converter now attached to ttyUSB0這類信息macOS下是system_profiler SPUSBDataType在最底層的USB設(shè)備樹里找FTDI相關(guān)條目。這步的目的就是區(qū)分問題出在USB總線沒有識(shí)別芯片還是芯片識(shí)別了但驅(qū)動(dòng)加載失敗。如果設(shè)備管理器里只有一個(gè)未知設(shè)備Unknown Device或者無法識(shí)別的USB設(shè)備而且拔插后設(shè)備消失那大多是USB枚舉階段的故障。先換個(gè)USB口最好直接用主板背板的USB口而不是機(jī)箱前面板或USB Hub。接著換根數(shù)據(jù)線——很多USB轉(zhuǎn)串口線用的是只能充電的廉價(jià)線缺少D/D-數(shù)據(jù)線芯導(dǎo)致設(shè)備無法被識(shí)別。如果枚舉正常但設(shè)備報(bào)錯(cuò)最常見的是代碼10無法啟動(dòng)該設(shè)備和代碼28未安裝此設(shè)備的驅(qū)動(dòng)程序。代碼10一般是驅(qū)動(dòng)和芯片不匹配或者同一系統(tǒng)里殘留了舊驅(qū)動(dòng)處理方法是徹底卸載重裝。這里分享一個(gè)真正干凈的卸載流程打開設(shè)備管理器找到出問題的設(shè)備右鍵卸載設(shè)備勾選刪除此設(shè)備的驅(qū)動(dòng)程序軟件。拔掉USB線。用管理員身份打開命令提示符執(zhí)行pnputil /enum-drivers在列表里找到FTDI相關(guān)的發(fā)布名稱一般是ftdibus.inf、ftdiport.inf或ftser2k.sys相關(guān)的oem*.inf。執(zhí)行pnputil /delete-driver oem###.inf /uninstall /force注意把oem###.inf替換成實(shí)際查到的名字。重啟電腦重新插上設(shè)備然后再裝一遍新驅(qū)動(dòng)。Linux下如果驅(qū)動(dòng)加載失敗先看dmesg輸出有沒有ftdi_sio: device already in use之類的錯(cuò)誤。這種情況通常是之前有程序還占著串口比如后臺(tái)運(yùn)行的Modbus輪詢腳本、GDB調(diào)試器、甚至某個(gè)監(jiān)控服務(wù)。用sudo fuser /dev/ttyUSB0可以查看到底是哪個(gè)進(jìn)程占用了設(shè)備節(jié)點(diǎn)確認(rèn)后kill掉再重插。如果以上所有步驟都無效那就要考慮硬件問題了。判斷方法很簡(jiǎn)單把Z-TEK線插到另一臺(tái)電腦上如果同樣不被識(shí)別大概率是線材或芯片損壞。FT232R芯片雖然不是易損件但碰上劣質(zhì)電源、雷擊浪涌或者長(zhǎng)期熱插拔劣質(zhì)USB Hub還真有可能故障。另外一些高仿FT232芯片也是重災(zāi)區(qū)這些芯片沒有FTDI官方固件驅(qū)動(dòng)會(huì)報(bào)FTDI device with invalid EEPROM之類的錯(cuò)誤系統(tǒng)甚至?xí)言O(shè)備掛起。這時(shí)候你能做的只有換一根用正版芯片的線。6. 實(shí)測(cè)感悟驅(qū)動(dòng)版本不是越新越好穩(wěn)定壓倒一切最后說說我用Z-TEK這根線幾年下來積累的一點(diǎn)私人體會(huì)。很多人在驅(qū)動(dòng)問題上走進(jìn)一個(gè)誤區(qū)總覺得必須上官網(wǎng)把驅(qū)動(dòng)更新到最新版才安心。以FTDI的VCP驅(qū)動(dòng)來說官方發(fā)版頻率并不高一般一年才出幾次大版本每次更新多是為了適配新系統(tǒng)和修復(fù)老bug。如果你當(dāng)前版本在Windows 10/11下工作良好沒有頻繁掉線或者藍(lán)屏問題完全不建議追新。我自己在實(shí)驗(yàn)室里有一臺(tái)機(jī)器FTDI驅(qū)動(dòng)停留在2019年的版本一直沒有升級(jí)因?yàn)槟桥_(tái)機(jī)器要跑生產(chǎn)測(cè)試腳本驅(qū)動(dòng)升級(jí)帶來的庫依賴變化很可能讓測(cè)試鏈崩掉。另外建議把驅(qū)動(dòng)文件和安裝包單獨(dú)備份一份到網(wǎng)盤或本地特別是在線下設(shè)備維護(hù)場(chǎng)景。工廠里很多工控機(jī)是不聯(lián)網(wǎng)的或者網(wǎng)絡(luò)環(huán)境被嚴(yán)格限制要在這種環(huán)境下給新電腦裝驅(qū)動(dòng)提前把對(duì)應(yīng)系統(tǒng)的安裝包準(zhǔn)備好太重要了。我有一次去客戶現(xiàn)場(chǎng)對(duì)方機(jī)房不讓帶手機(jī)電腦也不能上外網(wǎng)全靠U盤里存的驅(qū)動(dòng)和Putty綠色版才把一臺(tái)新工控機(jī)的串口環(huán)境搭好。還有一個(gè)小技巧如果你經(jīng)常需要在不同電腦間切換使用Z-TEK的FT-232線可以在設(shè)備管理器里把USB Serial Port重命名成一個(gè)好記的名字。Windows允許在端口屬性的端口設(shè)置里改別名比如改成ZTEK-FT232-Debug這樣多個(gè)串口同時(shí)在線時(shí)一眼就能找到目標(biāo)設(shè)備。Linux下則可以利用udev規(guī)則根據(jù)VID/PID或者序列號(hào)綁定一個(gè)穩(wěn)定的設(shè)備節(jié)點(diǎn)這樣即使插拔順序變化也不會(huì)出現(xiàn)ttyUSB0一會(huì)兒是調(diào)試串口一會(huì)兒是GPS模塊的尷尬局面。USB轉(zhuǎn)串口驅(qū)動(dòng)這件事本身就是嵌入式開發(fā)和運(yùn)維調(diào)試中一個(gè)基本功雖然看似簡(jiǎn)單但遇到問題時(shí)一點(diǎn)都不簡(jiǎn)單。希望這篇基于Z-TEK力特FT-232的驅(qū)動(dòng)安裝與排查經(jīng)驗(yàn)?zāi)軒湍闵僮呶耶?dāng)年走過的彎路。本文還有配套的精品資源點(diǎn)擊獲取