激安3D ウェブカメラ(DS-3DW300)のSideBySideモード切り替えのUSBパケットログ取り成功
いつまでも付属ソフトに頼ってるのも嫌なのと、RaspberryPiなんかで動かしたいって気持ちもあるので、ちょっとUSBパケットを監視してみました。
付属ソフトのCHUSEI 3D Webcam.exeでSideBySideには、同じディレクトリに
FITI_2DL.txt、FITI_2DR.txt、FITI_2DRB.txt、FITI_3DSS.txtと4つ入っているテキストファイルが4つ有るのですが、ファイル名からして左・右・赤青・SideBySideっぽいですよね。
c376 0004が見つかった
FITI_3DSS.txtにはc376 0004とテキストで書いてありますが、USBパケット監視してたら切替時にこんなパケットが出てたよ。
------ログここから--------
[7564 ms] UsbSnoop - DispatchAny(f795f610) : IRP_MJ_INTERNAL_DEVICE_CONTROL
[7564 ms] UsbSnoop - MyDispatchInternalIOCTL(f7960e80) : fdo=83348af8, Irp=83336008, IRQL=0
[7564 ms] >>> URB 338 going down >>>
-- URB_FUNCTION_CLASS_INTERFACE:
TransferFlags = 00000000 (USBD_TRANSFER_DIRECTION_OUT, ~USBD_SHORT_TRANSFER_OK)
TransferBufferLength = 00000002
TransferBuffer = 836ba718
TransferBufferMDL = 00000000
00000000: 00 04
UrbLink = 00000000
RequestTypeReservedBits = 00000000
Request = 00000001
Value = 00000f00
Index = 00000600
[7565 ms] UsbSnoop - MyInternalIOCTLCompletion(f7960db0) : fido=00000000, Irp=83336008, Context=830e7658, IRQL=2
[7566 ms] <<< URB 338 coming back <<<
-- URB_FUNCTION_CONTROL_TRANSFER:
PipeHandle = 8362af80
TransferFlags = 0000000a (USBD_TRANSFER_DIRECTION_OUT, USBD_SHORT_TRANSFER_OK)
TransferBufferLength = 00000002
TransferBuffer = 836ba718
TransferBufferMDL = 832b9da8
UrbLink = 00000000
SetupPacket =
00000000: 21 01 00 0f 00 06 02 00
[7569 ms] UsbSnoop - MyInternalIOCTLCompletion(f7960db0) : fido=00000000, Irp=83390270, Context=836fa2b0, IRQL=2
[8228 ms] UsbSnoop - DispatchAny(f795f610) : IRP_MJ_INTERNAL_DEVICE_CONTROL
[8228 ms] UsbSnoop - MyDispatchInternalIOCTL(f7960e80) : fdo=83348af8, Irp=83336008, IRQL=0
[8228 ms] >>> URB 377 going down >>>
-- URB_FUNCTION_CLASS_INTERFACE:
TransferFlags = 00000000 (USBD_TRANSFER_DIRECTION_OUT, ~USBD_SHORT_TRANSFER_OK)
TransferBufferLength = 00000002
TransferBuffer = 836ba718
TransferBufferMDL = 00000000
00000000: 76 c3
UrbLink = 00000000
RequestTypeReservedBits = 00000000
Request = 00000001
Value = 00000800
Index = 00000600
[8230 ms] UsbSnoop - MyInternalIOCTLCompletion(f7960db0) : fido=00000000, Irp=83336008, Context=8332fee0, IRQL=2
[8230 ms] <<< URB 377 coming back <<<
-- URB_FUNCTION_CONTROL_TRANSFER:
PipeHandle = 8362af80
TransferFlags = 0000000a (USBD_TRANSFER_DIRECTION_OUT, USBD_SHORT_TRANSFER_OK)
TransferBufferLength = 00000002
TransferBuffer = 836ba718
TransferBufferMDL = 832b9da8
UrbLink = 00000000
SetupPacket =
00000000: 21 01 00 08 00 06 02 00
------ログここまで--------
この00 04, 76 c3ってのは、FITI_3DSS.txtに入ってたc376 0004だと思います。
ということは、この前後のSetupPacketがインターフェースなのかな?
誰かUVC詳しい人が居たら、これ見たら判ったりしそう・・(そろそろおいらは限界っぽいです。)
---5/28 9:00追記---
ログ
DS-3DW300_usbsnoop.zip (タダのテキストのログ・ファイルですので、興味のある人だけ。40MB有ります。)
今回取得できたログ添付しておきます。
初回立ち上げ時が左画像、途中7.5秒目あたりからSideBySideに切り替えています。
ログ上、ISOCHRONOUSとなっている部分は映像データなので無視して下さい。その他の部分(BULK)がコントロールのパケットです。
要は同じパケットをRaspberryPi等で再現できればSideBySideに切り替えができると思います。