マイクロフォンアレイやスピーカアレイのハードウェアでは,FTDI社(Future Technology Devices International Ltd.,以下FTDIと略)のUSBインタフェースICであるFT232Hを使ってPCとデータのやりとりをしています。本稿では,FT232H用のソフトウェアドライバのインストールの方法について解説します。合わせて,WindowsのVisual C++によるソフトウェア開発についても説明します。
<注意を読む>
この投稿は,未完成のシステムの開発過程の備忘録として書かれたものです。記述の内容の誤りやコードやのバグや冗長な部分が含まれている可能性があります。内容を参考にする場合は注意をお願いします。また,解説の文章などに誤りや意味不明の箇所が含まれていることにも配慮してください。
<閉じる>
参考資料
以下のサイトと文献を参考にしました。
- FTDI D2XXドライバーのインストールのガイド
FTDI Drivers Installation Guide for Windows 10/11
ドライバとは
本稿でのドライバとは,FT232Hインタフェースチップを動かすためのデバイスドライバ,つまりUSBで接続されたFT232Hを制御するためのソフトウェア群のことです。C++言語でFT232Hを操作するプログラムを作るためにはデバイスドライバが必要となります。このデバイスドライバはFT232Hの製造メーカーであるFTDIが提供しています。
デバイスドライバは「縁の下の力持ち」で,C++言語などでアプリケーションを作るユーザが触れることはありません。
<詳しく読む>

ここでインストールするのはCDM(Combined Driver Model)driverと呼ばれるもので,上の図のような層状の構造になっています。層の一番上がアプリケーション層で,簡単にいうとC言語などで作ったプログラムになります。このアプリケーション層が2つの部分に分かれていることに注意してください。COM PortアプリケーションとD2XXアプリケーションです。
図の一番下の層はUSBホストを制御するためのドライバで,コンピュータのOSにすでにインストールされているものです。ですから一番上から下から2層目までがFTDIの提供するドライバになります。
下から2番目の層はFTDIBUS.SYSというドライバで,COM PortとD2XXのどちらを使う場合でもインストールされます。COM PortアプリケーションはFTSER2K.SYSというドライバを使ってFTDIBUS.SYSとやり取りします。一方,D2XXアプリケーションはFTD2XX.DLLというダイナミックリンク型のドライバを使ってFTDIBUS.SYSとやり取りします。
アプリケーションが一度に通信できるのは2つのインターフェースのうち1つだけで、D2XXとCOMポートに同時にコマンドを送信することはできないことに留意してください。
<閉じる>
今回はD2XXアプリケーションの開発について解説します。
ドライバーとライブラリのダウンロード
Windowsマシンの場合,FT232H基板とPCをUSBケーブルで接続することによりドライバが自動的にインストールされます。プラグインの前にドライバを新しくインストールする場合は以下で説明する手順にしたがって実行します。またC++コードなどでプログラムを作成する場合は,手動インストール用のライブラリファイルも必要となります。
D2XXドライバのインストーラとライブラリファイルをダウンロードする場合,以下のページ
にアクセスし,OSとプロセッサアーキテクチャで分類された表のところまでスクロールダウンしてください。

表の一番上にWindowsデスクトップマシン用のソフトウェアのダウンロードリンクがあります。対応するOSはWindows 7, Windows 8/8.1, Windows 10, Windows 11です。
- セットアップ用実行形式ファイルをダウンロード
右端の“setup executable”をクリックしてzip形式ファイルをダウンロードする(現時点でファイル名はCDM212364_Setup.zip)。これを解凍してできるフォルダ内にあるCDM212364_Setup.exeがドライバをセットアップするための実行形式ファイルになる。(このファイルを以下ではインストーラと呼ぶことにします。) - プロセッサに対応した手動インストール用ライブラリをダウンロード
Intel系64bitCPUの場合はX64(64-Bit)の欄をクリック。CDM v2.12.36.4 WHQL Certified.zipというファイルがダウンロードされるので,これを解凍する。解凍されたフォルダの中にライブラリのファイルが格納されている。(以下,このフォルダをライブラリフォルダと呼ぶことにします。)

ドライバのインストール
- インストール
CDM212364_Setup.exeをダブルクリックして起動することで,インストールが実行される。ダイアログボックスが表示されるので,それに従う。
<詳しく読む>
インストーラCDM212364_Setup.exeの実行によって,ライブラリフォルダの中のファイルがWindows OS用のフォルダの中にコピーされます。ライブラリフォルダの中で,32bitアプリ用のファイルはi386という名前のフォルダ,64bitアプリ用はamd64というフォルダの中に格納されています。インストーラの実行後で調べてみると,ライブラリフォルダの中のdllファイルは,次のようにWindows OS用フォルダのにコピーされていました。
- 32bit用dll(i386の中のftd2xx.dll)
C:\Windows\SysWOW64の中にコピー。 - 64bit用dll(amd64の中のftd2xx64.dll)
C:\Windows\System32の中にコピー。ただし,ファイル名はftd2xx.dllに変更されている。
<閉じる>
デバイスマネージャの確認とCOMポートの停止
ドライバが正しくインストールされたかどうかの確認をします。これにはWindowsの「デバイスマネージャ」を使います。OSによりデバイスマネージャの開き方が少しずつ異なるので,webで調べてください。
PCとFT232H基板をUSBケーブルで接続し,デバイスマネージャを開きます。ドライバが正しくインストールされている場合は,次の図のようなデバイスツリーが表示されます。


ポート(COMとLPT)というカテゴリの下のUSB Serial Port,ユニバーサルシリアルバスコントローラの下のUSB Serial Converterという,2つのデバイスがあります。これを確認できたら,インストールが正常にできたことが確認できます。
次に,USB Serial Portを無効にします。私の環境では,これをしないとD2XXドライバを使うプログラムでFT232Hチップを認識できませんでした。(デバイスのEEPROMを書き換えることで対応できるのかもしれませんが,まだ調べてはいません。)
デバイスツリーでUSB Serial Portを選択して右クリックし,ドロップダウンメニューから“デバイスを無効にする”を選びます。これでデバイスを無効にできます。
コメント