そーたメイ&USB2BTサポートBBS 33656

USB2BT、BitClockについてのご質問・お問い合せをお寄せ下さい。

現在 本業多忙とBitClock発売準備により回答が遅れております、非常に申し訳ございません。


デバイスをゲームパッドに限定したい

1:H?? :

2015/01/12 (Mon) 14:21:19

 初めまして。
 Web上で紹介記事を拝見して購入後色々と試しながら使い勝手を確認しているのですが、当初の目的としてAndroid機
でゲームパッドを接続したところキー入力を受け付けず調べてみたところBT上でのキーコードがゲームパッド本来のそれと
は違ったデータであることがわかりました。おそらくcombo変換の仕様上致し方ないものと察します。
 そこで不躾なお願いながらゲームパッドに限定してデータ出力をパススルーできるような方法をお教え願えれば幸いと存
じます。ご無理でしたら仕様上の勝手で割り切ります。御返事お待ちしています。
2:そーた :

2015/01/15 (Thu) 01:07:01

H??さま、
そーたです。

とりあえず用意してみました。
http://sohta02.web.fc2.com/release/USB_BT_adaptor1.01gamepad.update.hex
(上記を右クリックで"名前をつけてリンク先を保存)

update方法は
http://sohta02.web.fc2.com/sohta.html#ver101release

BluetoothのSDPに含まれるclass of device情報をcombo(C0 05 00)→gamepad(08 05 00)に変更してます。
ただ正直なところこのfirmwareでご期待に添えるか全く分からないです。
HIDのreportディスクリプタ、report情報はUSB2BTはもともとパススルーしております。


androidではbluetoothレイヤ(SDPその他)をbuedroid、HIDレイヤ(hid-reportディスクリプタ、hid-report)をLinuxで処理しています。

androidの "設定" - "bluetooth" 画面で表示されるアイコンはclass of device情報に依存するのですが、
ペアリング後gamepadからのevent情報を/dev/inputに受け渡す部分はLinux kernelの "generic-bluetooth" ドライバで処理しています。
"generic-bluetooth" ドライバはclass of device情報ではなくreport descriptor情報を元にcombo/gamepadなど入力デバイスのモード
切り替えを行っているように見えます。
下記は実際に市販のBluetoothモジュール "RN42" でモード切替を行ったときのLinux側のログです。

もちろん私の解釈が間違いで、今回の新firmwareでclass of deviceを変えたことにより挙動が変わる可能性はあります。
そのためお手数ですが上記firmwareを試してみて頂けないでしょうか。
宜しくお願いいたします。

●keyboard
device: '0005:FFFF:0000.0009': device_add
bus: 'hid': add device 0005:FFFF:0000.0009
PM: Adding info for hid:0005:FFFF:0000.0009
bus: 'hid': driver_probe_device: matched device 0005:FFFF:0000.0009 with driver generic-bluetooth
bus: 'hid': really_probe: probing driver generic-bluetooth with device 0005:FFFF:0000.0009
05010906a1010507850119e029e715002501750195088102950175088101950575010508850119012905910295017503910395067508150025650507190029658100c0050c0901a1018503050c150025010a23020a8a010a21020aae010ae9000aea000ae2000acd000ab5000ab6000ab7000ab8000ab3000ab4000acc000a9601750195108102050885ff9501750209240926810275068101c0
device: 'input13': device_add
PM: Adding info for No Bus:input13
input: Broadcom Bluetooth HID as /devices/virtual/misc/uhid/input13
device: 'event8': device_add
PM: Adding info for No Bus:event8
device: 'hidraw2': device_add
PM: Adding info for No Bus:hidraw2
generic-bluetooth 0005:FFFF:0000.0009: input,hidraw2: BLUETOOTH HID v0.00 Keyboard [Broadcom Bluetooth HID] on
driver: '0005:FFFF:0000.0009': driver_bound: bound to device 'generic-bluetooth'
bus: 'hid': really_probe: bound device 0005:FFFF:0000.0009 to driver generic-bluetooth

●gamepad
device: '0005:FFFF:0000.000A': device_add
bus: 'hid': add device 0005:FFFF:0000.000A
PM: Adding info for hid:0005:FFFF:0000.000A
bus: 'hid': driver_probe_device: matched device 0005:FFFF:0000.000A with driver generic-bluetooth
bus: 'hid': really_probe: probing driver generic-bluetooth with device 0005:FFFF:0000.000A
05010905a1010901a10009300931093209331581257f75089504810205091901291015002501951075018102c0c0
device: 'input14': device_add
PM: Adding info for No Bus:input14
input: Broadcom Bluetooth HID as /devices/virtual/misc/uhid/input14
device: 'event8': device_add
PM: Adding info for No Bus:event8
device: 'hidraw2': device_add
PM: Adding info for No Bus:hidraw2
generic-bluetooth 0005:FFFF:0000.000A: input,hidraw2: BLUETOOTH HID v0.00 Gamepad [Broadcom Bluetooth HID] on
driver: '0005:FFFF:0000.000A': driver_bound: bound to device 'generic-bluetooth'
bus: 'hid': really_probe: bound device 0005:FFFF:0000.000A to driver generic-bluetooth

●mouse
device: '0005:FFFF:0000.000B': device_add
bus: 'hid': add device 0005:FFFF:0000.000B
PM: Adding info for hid:0005:FFFF:0000.000B
bus: 'hid': driver_probe_device: matched device 0005:FFFF:0000.000B with driver generic-bluetooth
bus: 'hid': really_probe: probing driver generic-bluetooth with device 0005:FFFF:0000.000B
05010902a1010901a10085020509190129031500250195037501810295017505810305010930093109381581257f750895038106c0c0
device: 'input15': device_add
PM: Adding info for No Bus:input15
input: Broadcom Bluetooth HID as /devices/virtual/misc/uhid/input15
device: 'event8': device_add
PM: Adding info for No Bus:event8
device: 'hidraw2': device_add
PM: Adding info for No Bus:hidraw2
generic-bluetooth 0005:FFFF:0000.000B: input,hidraw2: BLUETOOTH HID v0.00 Mouse [Broadcom Bluetooth HID] on
driver: '0005:FFFF:0000.000B': driver_bound: bound to device 'generic-bluetooth'
bus: 'hid': really_probe: bound device 0005:FFFF:0000.000B to driver generic-bluetooth

●keyboard
device: '0005:FFFF:0000.000C': device_add
bus: 'hid': add device 0005:FFFF:0000.000C
PM: Adding info for hid:0005:FFFF:0000.000C
bus: 'hid': driver_probe_device: matched device 0005:FFFF:0000.000C with driver generic-bluetooth
bus: 'hid': really_probe: probing driver generic-bluetooth with device 0005:FFFF:0000.000C
05010906a1010507850119e029e715002501750195088102950175088101950575010508850119012905910295017503910395067508150025650507190029658100c0050c0901a1018503050c150025010a23020a8a010a21020aae010ae9000aea000ae2000acd000ab5000ab6000ab7000ab8000ab3000ab4000acc000a9601750195108102050885ff9501750209240926810275068101c005010902a1010901a10085020509190129031500250195037501810295017505810305010930093109381581257f750895038106c0c0
device: 'input16': device_add
PM: Adding info for No Bus:input16
input: Broadcom Bluetooth HID as /devices/virtual/misc/uhid/input16
device: 'event8': device_add
PM: Adding info for No Bus:event8
device: 'hidraw2': device_add
PM: Adding info for No Bus:hidraw2
generic-bluetooth 0005:FFFF:0000.000C: input,hidraw2: BLUETOOTH HID v0.00 Keyboard [Broadcom Bluetooth HID] on
driver: '0005:FFFF:0000.000C': driver_bound: bound to device 'generic-bluetooth'
bus: 'hid': really_probe: bound device 0005:FFFF:0000.000C to driver generic-bluetooth

●joystick
device: '0005:FFFF:0000.000D': device_add
bus: 'hid': add device 0005:FFFF:0000.000D
PM: Adding info for hid:0005:FFFF:0000.000D
bus: 'hid': driver_probe_device: matched device 0005:FFFF:0000.000D with driver generic-bluetooth
bus: 'hid': really_probe: probing driver generic-bluetooth with device 0005:FFFF:0000.000D
05010904a1010901a10009300931093209331581257f75089504810205091901291015002501951075018102c0c0
device: 'input17': device_add
PM: Adding info for No Bus:input17
input: Broadcom Bluetooth HID as /devices/virtual/misc/uhid/input17
device: 'event8': device_add
PM: Adding info for No Bus:event8
device: 'hidraw2': device_add
PM: Adding info for No Bus:hidraw2
generic-bluetooth 0005:FFFF:0000.000D: input,hidraw2: BLUETOOTH HID v0.00 Joystick [Broadcom Bluetooth HID] on
driver: '0005:FFFF:0000.000D': driver_bound: bound to device 'generic-bluetooth'
bus: 'hid': really_probe: bound device 0005:FFFF:0000.000D to driver generic-bluetooth

3:そーた :

2015/01/15 (Thu) 08:14:07

補足として、USB2BTはgamepad / keyboard / mouse / trackballなど全ての入力デバイスを
android(linux)のgeneric-bluetoothドライバを使うことを想定しています。
generic-bluetoothドライバはUSB接続時のhid-genericにそのままパススルーされます。

ただUSB接続時にhid-genericではなくあるgamepad専用のデバイスドライバを使っている場合は
hid-generic / 専用ドライバの判別に VID, PID, Bluetooth(1)/USB(0) を使っている場合が多く、
その場合Bluetooth (USB2BT)を経由してしまうと専用ドライバではなくgeneric-bluetooth(≒hid-bluetooth)
になってしまい、挙動が変わってしまうものと推測されます。

私のほうで確認したdualshock3, dualshock4, sixaxis, elecom gamepadは標準ドライバ(hid-generic, generic-bluetooth)で、
専用ドライバを使うものはまだ見つかっていません。
4:H?? :

2015/01/16 (Fri) 00:46:51

 御返事ありがとうございました。お骨折りいただいて大変感激しております。
 早速更新したところ、確かにペアリング設定時のアイコンがジョイスティックのそれに代わって
いました。ですが動作については期待したものとはならず残念ながら満足のいくものではなかった
ことをご報告します。
 ここまでお骨折りいただいて誠に恐縮ではございますが、”黒衣”様の後に続くサポートの一助と
なればとおもい、ちょっと時間を置きますができるだけ事象をまとめて改めてご報告しますので尚
の事お手を煩わせることで心苦しいのですがお付き合いしていただければ幸いと存じます。
 では厳冬の中ご健康に留意していただき健やかにお過ごしいただきますよう祈っております。
 ありがとうございました。

  • 名前: E-mail(省略可):
  • 画像:

Copyright © 1999- FC2, inc All Rights Reserved.