as the Wind Blows ...

パソコン、プログラミング、車、写真、etc...

動画エンコード環境改善 (4) - GeForce 1660 Ti 再起動後のコード43エラー対策

 

vonvon.hatenablog.com

 ここで書いたようになぜかGeForce 1660 TiをESXiにパススルー後、ESXiホスト初回起動時は正常に認識するが、VMをシャットダウンや再起動するとデバイスマネージャーでコード43のエラーで初期化に失敗している状況。

ググったところ、全く同じ症状の人がVmwareのコミュニティに書き込んでいた。

https://communities.vmware.com/thread/607001

 

正常に使えているというレビューも別のサイトにあったが、ESXiのバージョンが分からなかった。ESXiを6.5から6.7にアップデートしたら動かなくなったという事で、6.5に戻すか、7.0を試してみればよいのかもしれないがバージョンダウンは簡単にはできないし、7.0も今すぐにアップグレードするのは不安。。

 

上記コミュニティーの書き込みに回避方法が書いてあったので、まずはそれを試す。内容はシンプルで、再起動やシャットダウン前にデバイスマネージャーでGPUと関連デバイスを無効に設定するだけ。起動後には手動で有効にすれば、正常に認識する。

実際試したところ、確かに正常に初期化されてGPUエンコードできる!

その他の検証するの面倒なので、取り急ぎこの回避策を使おう。ブルースクリーンとかハングアップしたらダメそうだけど。。

 

毎回手動で有効/無効切り替えるのは面倒なのでバッチ化しました。

ググるWindows Driver Kit (WDK)の中にあるdevcon.exeを使う方法が簡単みたい。

WDKをインストールし、devcon.exeを抜き出し下記のバッチファイルを作ります。

 

## デバイス有効

devcon enable "PCI\VEN_10DE&DEV_2182&SUBSYS_8D901462&REV_A1"
devcon enable "HDAUDIO\FUNC_01&VEN_10DE&DEV_0099&SUBSYS_14628D90&REV_1001"
devcon enable "USB\VID_0955&PID_9000"
devcon enable "PCI\VEN_10DE&DEV_1AEC&SUBSYS_8D901462&REV_A1"
devcon enable "PCI\VEN_10DE&DEV_1AED&SUBSYS_8D901462&REV_A1"

 

## デバイス無効

devcon disable "PCI\VEN_10DE&DEV_2182&SUBSYS_8D901462&REV_A1"
devcon disable "HDAUDIO\FUNC_01&VEN_10DE&DEV_0099&SUBSYS_14628D90&REV_1001"
devcon disable "USB\VID_0955&PID_9000"
devcon disable "PCI\VEN_10DE&DEV_1AEC&SUBSYS_8D901462&REV_A1"
devcon disable "PCI\VEN_10DE&DEV_1AED&SUBSYS_8D901462&REV_A1"

 

devconは devcon enable/disable "<Hardware ID>"の構文で使います。

disable/enable変更するデバイスのHardware IDはデバマネで確認しましょう。

 

バッチファイル作成後は、ローカルグループポリシーの編集→コンピューターの構成→Windowsの設定→スクリプト→スタートアップ or シャットダウンでバッチファイルを登録します。そうすれば起動時やシャットダウン時に自動でバッチファイルが実行されます。