のびっこ日記

(*|         |*)v ういっすー。 VRとかコンピュータービジョンとかARとかに興味があります。OpenCVとかPCLとかOculusRiftとかUnityとかKinectとかLeapMotionとか手を出していますが、いろいろドツボにハマっててくじけそう。誰か教えてー

激安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に切り替えができると思います。