2021年4月22日 星期四

修改FT232 USB PID

 問題: 

使用FT_Prog修改FT232R PID = 6002/6003/6004 (原始 VID = 0403 PID = 6001),

Window無法正確辨認到FT232R, 而且FT_Prog也無法抓到FT232R, 因此使用FT_Prog無法回復PID = 6001


對策:

下載FT232R VCP driver (CDM v2.12.28 WHQL Certified.zip), 解壓縮後, 手動修改ftdibus.inf和ftdiport.inf並且重新產生*.cat


修改ftdibus.inf

[FtdiHw]

;%USB\VID_0403&PID_6001.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6001

%USB\VID_0403&PID_6002.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6002

%USB\VID_0403&PID_6003.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6003

%USB\VID_0403&PID_6004.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6004


[FtdiHw.NTamd64]

;%USB\VID_0403&PID_6001.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6001

%USB\VID_0403&PID_6002.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6002

%USB\VID_0403&PID_6003.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6003

%USB\VID_0403&PID_6004.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6004


[Strings]

Ftdi="FTDI"

DESC="CDM Driver Package - Bus/D2XX Driver"

DriversDisk="FTDI USB Drivers Disk"

;USB\VID_0403&PID_6001.DeviceDesc="USB Serial Converter"

USB\VID_0403&PID_6002.DeviceDesc="USB Serial Converter"

USB\VID_0403&PID_6003.DeviceDesc="USB Serial Converter"

USB\VID_0403&PID_6004.DeviceDesc="USB Serial Converter"


修改ftdiport.inf

[FtdiHw]

;%VID_0403&PID_6001.DeviceDesc%=FtdiPort.NT,FTDIBUS\COMPORT&VID_0403&PID_6001

%VID_0403&PID_6002.DeviceDesc%=FtdiPort.NT,FTDIBUS\COMPORT&VID_0403&PID_6002

%VID_0403&PID_6003.DeviceDesc%=FtdiPort.NT,FTDIBUS\COMPORT&VID_0403&PID_6003

%VID_0403&PID_6004.DeviceDesc%=FtdiPort.NT,FTDIBUS\COMPORT&VID_0403&PID_6004


[FtdiHw.NTamd64]

;%VID_0403&PID_6001.DeviceDesc%=FtdiPort.NTamd64,FTDIBUS\COMPORT&VID_0403&PID_6001

%VID_0403&PID_6002.DeviceDesc%=FtdiPort.NTamd64,FTDIBUS\COMPORT&VID_0403&PID_6002

%VID_0403&PID_6003.DeviceDesc%=FtdiPort.NTamd64,FTDIBUS\COMPORT&VID_0403&PID_6003

%VID_0403&PID_6004.DeviceDesc%=FtdiPort.NTamd64,FTDIBUS\COMPORT&VID_0403&PID_6004


[Strings]

FTDI="FTDI"

DESC="CDM Driver Package - VCP Driver"

DriversDisk="FTDI USB Drivers Disk"

PortsClassName = "Ports (COM & LPT)"

;VID_0403&PID_6001.DeviceDesc="USB Serial Port"

VID_0403&PID_6002.DeviceDesc="USB Serial Port"

VID_0403&PID_6003.DeviceDesc="USB Serial Port"

VID_0403&PID_6004.DeviceDesc="USB Serial Port"


此時手動安裝驅動, Window回應雜湊碼錯誤, 我們需要對修改後的INF產生一組新的ftdibus.cat和ftdiport.cat檔案


open cmd, Run as administrator


假設WDK路徑安裝在C:\Program Files (x86)\Windows Kits\10

cd C:\Program Files (x86)\Windows Kits\10\bin\x86


執行Regedit, 查看HKEY_CURRENT_USER\Software\Microsoft\SystemCertificates\是否存在mySelfSignedCert, 

1) 確定是之前手動加入的私人憑證mySelfSignedCert, 手動刪除mySelfSignedCert

2) 如果不確定mySelfSignedCert是否是之前手動加入, 後續的mySelfSignedCert須使用其他名稱替代


假設HKEY_CURRENT_USER\Software\Microsoft\SystemCertificates\,不存在mySelfSignedCert或已經手動刪除mySelfSignedCert


產生私人憑證

Makecert -r -pe -ss mySelfSignedCert mySelfSignedCert.cer

//Succeeded


加入私人憑證

certmgr -add mySelfSignedCert.cer -s -r localMachine root

//CertMgr Succeeded


此時可用certmgr.msc查看, 受信任的根憑證授權單位增加一個Joe's-Software-Emporium, 時間為剛剛產生


產生新的catalog files

INF2CAT /driver:c:\ftdi_vcp_drivers_modified /os:7_X86,7_X64,8_X86,8_X64,10_X86,10_X64


//...........................................................

//Signability test complete.

//

//Errors:

//None

//

//Warnings:

//None

//

//Catalog generation complete.

//c:\ftdi_vcp_drivers_modified\ftdibus.cat

//c:\ftdi_vcp_drivers_modified\ftdiport.cat


signtool sign /s mySelfSignedCert c:\ftdi_vcp_drivers_modified\ftdibus.cat

//Done Adding Additional Store

//Successfully signed: c:\ftdi_vcp_drivers_modified\ftdibus.cat


signtool sign /s mySelfSignedCert c:\ftdi_vcp_drivers_modified\ftdiport.cat

//Done Adding Additional Store

//Successfully signed: c:\ftdi_vcp_drivers_modified\ftdiport.cat


此時手動安裝驅動, PC將FT232R視為USB Serial Converter裝置 (此時, FT_Prog已經可以正確抓到FT232R),

再次手動更新USB Serial Converter驅動, PC將FT232R視為COM Port


沒有留言:

張貼留言