emagic emi2|6 firmware loader for WinUSB
かつて、Logic等の音楽制作ソフトを手がけていたemagicという会社がありました。 会社は2002年にアップルに買収され、LogicはLogic Proとして、現在もアップルが販売しています。 emagic社はいくつかのハードウェアも販売していましたが、そのひとつにemi 2|6というオーディオインターフェースがありました。
音質とか性能の話はおいておいて、このデバイスはUSB経由でファームウェアを読み込ませる事でUSB audio class compliantなデバイスとして動作します。 Linuxではドライバはただのfirmware loaderであり、ファームウェア読み込み後は標準のオーディオドライバで動作しています。 また、このデバイスはACアダプタからの電源供給も可能で、その場合、ファームウェア読み込み後は電源が切れるまでUSB audio class compliantなデバイスとして振る舞います。
Windowsへの対応については、メーカーがアップルに買収された事もあり、以降は新たな環境向けのドライバなどは提供されませんでした。 ただし、初期化さえ済ましてしまえば現在のWindowsでも動作は可能です。 そこで、現行のWindowsで動作するfirmware loaderを書いてみました。
ファームウェアを用意したり、デバイスをWinUSBデバイスとして認識させる等の準備は必要ですが、ドライバでは無くWinUSBクライアントにすることで、ドライバのインストールに署名が必要になる等の問題を回避しています。 使い方はリポジトリのREADMEを参照してください。
ちなみに、元になったLinuxのコードを見ていると、emi 6|2mのfirmware loaderもほぼ同様のロジックのようです。