1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ラズパイPicoWでBLEキーボードやマウス等をUSB有線化(OS起動前でも動作可能)

1
Last updated at Posted at 2026-01-04

Pico W BLE to USB HID Bridge

概要

このRaspberry Pi Pico W / Pico 2 W用ファームウェアを使用すると、Bluetooth非搭載のPCでも、キーボードやマウスなどのBLE HIDデバイス(1台)を有線USBデバイスとして使用できるようになります。
本ファームウェアはBLEセントラル(ホスト)として動作し、接続されたBLEデバイスからの入力データをUSB経由でホストPCに転送します。PC側では、標準的なUSB HIDデバイスとして認識されます。

  • 主なメリットとユースケース
    • OS起動前でも動作可能
      OSのBluetoothドライバーが読み込まれる前(UEFI/BIOSのセットアップやOSのインストール中など)でも使用できます。
    • USB切替器を使って複数PC間で共有・切り替えが可能
      有線USBデバイスとして認識されるため、USB切替器に対応しています。
      • 注: KVMスイッチ(パソコン切替器)との互換性は現在未検証です。
  • 逆方向のブリッジ:USB to BLE HID Bridgeはこちら

image.png

ソースコードとバイナリ

今回作成したプログラムの全ソースコードと、そのまま書き込めるバイナリ(uf2ファイル)は、以下のGitHubリポジトリで公開しています。
shiomachisoft/picow_ble_usb_hid_bridge

ソースコードは、Pico SDKとC言語で作成しています。

ライセンス

本ソフトウェアのライセンス詳細については、LICENSE.TXT を参照してください。

使い方

  1. Pico Wの接続

    • Pico WをPCのUSBポートに接続します。
    • BLE接続が完了していない待機状態では、Pico W上のLEDが点滅します。
  2. ペアリング

    • 接続したいBLE HIDデバイス(キーボードやマウス、その他の周辺機器)をペアリングモードにします。

    ペアリングモードにする方法は、各BLEデバイスのマニュアルを参照してください。

  3. 接続完了

    • Pico Wがデバイスを検出し接続が完了すると、LEDが点灯(常時点灯)に変わります。
    • PC側でUSB入力デバイスとして認識され、操作が可能になります。

注意事項

  • 再接続について:
    一度ペアリング(ボンディング)を行うと、次回以降はBLEデバイスをペアリングモードにする必要はありません。電源を入れるだけで自動的に再接続されます。
  • キーボードの挙動:
    一部のBLEキーボード(省電力機能付きなど)では、キーを叩いてスリープから復帰させないと再接続モードにならないものがあります。接続されない場合は、適当なキーを数回押してみてください。

動作確認済みデバイス

本ソフトウェアは以下のデバイスで動作確認を行っています。

  • マウス: サンワサプライ MA-SBB314
  • キーボード: エレコム TK-FBM119

特徴

低レイテンシー化への取り組み

入力デバイスとしての快適な操作感を実現するため、以下の最適化を行っています。

  • マルチコア分散処理:
    • Core 0: USBデバイスとしての通信処理を担当
    • Core 1: BLEホスト(セントラル)としての通信処理を担当
    • これらを並列動作させることで、BLE受信からUSB送信までの処理遅延を最小限に抑えています。
  • 高速ポーリング:
    • USBエンドポイントのポーリング間隔(bInterval)を 1 (1ms) に設定し、PCへのレポート転送を最速で行えるようにしています。

レポートのパススルー

  • HIDレポートディスクリプタ:
    • BLE接続が完了したタイミングでUSBの再接続処理を行い、BLEデバイスから取得した「HIDレポートディスクリプタ」をそのままPC(USBホスト)に渡します。
    • これにより、接続したBLEデバイス固有の機能(マルチメディアキーなど)もPC側で正しく認識されます。
  • HIDインプットレポート:
    • BLE接続後は、BLEデバイスから取得した「HIDインプットレポート」をそのままPC(USBホスト)に渡します。

接続管理

  • スマートスキャン:
    • 既知のデバイスへの再接続(ボンディング済みデバイス)と、新規デバイスのスキャンを数秒おきに自動的に切り替えて動作します。

技術的詳細

ベースプロジェクト

本ソフトウェアは、以下のオープンソースプロジェクトのサンプルコードをベースに開発・統合されています。

  • TinyUSB: dev_hid_composite サンプル
  • BTstack: hog_host_demo サンプル

免責事項

本記事の内容や本ソフトウェアの使用により生じた、いかなる損害やトラブルについても、作者は一切の責任を負いません。ご利用は自己責任でお願いいたします。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?