Help us understand the problem. What is going on with this article?

USB切替機

以前秋葉原で処分品を280円で買ってきた、ArvelのUSB切替機を調べてみました。

写真(2020-05-22 7.05).jpg

購入したものは2回路のもので2台のホスト間でデバイスを切り替えて使えるようにするものです。4回路の製品もあったようです。

中に使われているチップはUSBのDevice DescriptorからActionStarという台湾の会社の製品のようです。

スクリーンショット(2020-05-22 6.41.47).png

接続されてるホストにはデバイスが見え、接続されてないホストには切替機が見える仕様になっています。接続されてない方からしかコントロールできません。

Windows 7に付属のソフトをインストールして切り替えをwiresharkでusbスヌープしてみました。切り替えはHIDのSET_REPORTを使っていました。

No.     Time           Source                Destination           Protocol Length Info
     15 5.803210       host                  1.2.0                 USBHID   38     SET_REPORT Request

Frame 15: 38 bytes on wire (304 bits), 38 bytes captured (304 bits) on interface wireshark_extcap1040, id 0
USB URB
    [Source: host]
    [Destination: 1.2.0]
    USBPcap pseudoheader length: 28
    IRP ID: 0xfffffa8007164010
    IRP USBD_STATUS: USBD_STATUS_SUCCESS (0x00000000)
    URB Function: URB_FUNCTION_CLASS_INTERFACE (0x001b)
    IRP information: 0x00, Direction: FDO -> PDO
    URB bus id: 1
    Device address: 2
    Endpoint: 0x00, Direction: OUT
    URB transfer type: URB_CONTROL (0x02)
    Packet Data Length: 10
    [Response in: 16]
    Control transfer stage: Setup (0)
    [bInterfaceClass: HID (0x03)]
Setup Data
    bmRequestType: 0x21
    bRequest: SET_REPORT (0x09)
    wValue: 0x0200
    wIndex: 0
    wLength: 2
    bRequest: 9
    wValue: 0x0200
    wIndex: 0 (0x0000)
    wLength: 2
    Data Fragment: 0200

No.     Time           Source                Destination           Protocol Length Info
     16 5.803210       1.2.0                 host                  USBHID   28     SET_REPORT Response

Frame 16: 28 bytes on wire (224 bits), 28 bytes captured (224 bits) on interface wireshark_extcap1040, id 0
USB URB
    [Source: 1.2.0]
    [Destination: host]
    USBPcap pseudoheader length: 28
    IRP ID: 0xfffffa8007164010
    IRP USBD_STATUS: USBD_STATUS_SUCCESS (0x00000000)
    URB Function: URB_FUNCTION_CONTROL_TRANSFER (0x0008)
    IRP information: 0x01, Direction: PDO -> FDO
    URB bus id: 1
    Device address: 2
    Endpoint: 0x00, Direction: OUT
    URB transfer type: URB_CONTROL (0x02)
    Packet Data Length: 0
    [Request in: 15]
    [Time from request: 0.000000000 seconds]
    Control transfer stage: Complete (3)
    [bInterfaceClass: HID (0x03)]

KLabさんのIRリモコン用のコードをVID/PIDを書き換えて、以下で切り替え出来ました。いつもお世話になります。(_o_)

        buf[0] = 0x00;
        buf[1] = 0x02;
        buf[2] = 0x00;
        WriteToDevice(refDevice, buf, DEVICE_BUFSIZE);

切り替えるとカチカチ音がするので、リレーが入ってるのかもしれません。

何か面白い使い方が思いついたら使ってみようと思います。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした