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有線化(UEFIに対応)

1
Last updated at Posted at 2026-01-04

Pico W BLE to USB HID Bridge

概要

本ソフトウェアは、Raspberry Pi Pico W用のファームウェアです。Bluetooth機能を搭載していないPCでも、BLEキーボードやマウス等のBLE HIDデバイスを有線USBデバイスのように使用することが可能になります。
Pico WをBLEセントラル(ホスト)として動作させ、接続されたBLEデバイスからの入力情報をUSB経由でPC(USBホスト)に転送します。

PCからは標準的なUSB HIDデバイスとして認識されるため、UEFI環境でも使用可能です。

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?