2017/04/19

Linux で Logicool Unifying Receiver のペアリングをする方法

Android 端末にキーボードとマウスを繋いで検証する必要が出てきたので、新たに Logicool のキーボードを買いました。

マウスは以前買ったものがあり、Unifying Receiver を使えばUSBポートの節約にもなるというわけです。

Unifying Receiver は購入時にペアリング済みなので、USB端子に挿せばそのまま USB の有線キーボード・マウスのように使用可能です。ただ、今回のように別々に買った場合は、どちらかを再ペアリングする必要があります。

再ペアリングには Logicool の提供しているユーティリティを使用しますが、Windows と Mac 用しか提供されていません。 しかし、我が家のマシンはほとんど Linux。 つまり、買っても再ペアリングできないという問題が1

Linux 用のユーティリティもあった

きっと Linux 用もあるだろうと探してみると、やはり、いくつか Linux でも使えるユーティリティを公開してくれている人がいるようです。

使い方等は、以下のサイトにまとまっています。

Logitech Unifying Receiver - ArchWiki

現時点での選択肢は以下の3つ

  • Solaar
    GUI もある高機能なユーティリティ

    参考

    UbuntuでUnifyingを使う - Qiita

  • ltunify
    以下の機能がある CUI ユーティリティ

    • ペアリング
    • ペアリング済みデバイスのリスト表示
    • アンペアリング
  • pairing_tool
    ペアリングのみの超シンプルユーティリティ

今回の用途だと Itunify か pairing_tool ですが、私は pairing_tool を使ってみました。 理由は60行くらいのコードで何をしているか一目瞭然だったからです2

コンパイル3

LKML: Benjamin Tissoires: Re: [PATCH v5 1/1] HID: Add full support for Logitech Unifying receivers からコードを取得し、pairing_tool.c として保存。

以下でコンパイル。

$ gcc -o pairing_tool pairing_tool.c

paring_tool の使い方

まずはレシーバーのデバイスを確認します。

$ ls -l /sys/class/hidraw/hidraw*/device/driver | awk -F/ '/receiver/{print $5}'
hidraw1

上記の例だと /dev/hidraw1 がレシーバーのデバイスになります。 2つ以上表示された場合はレシーバーが複数刺さっている可能性が高いので確認しましょう。

ペアリングしたいキーボードやマウスの電源を切ってから、以下を実行します。 レシーバーがペアリングモードになるので、キーボード 等の電源を入れると自動的にペアリングされます。

$ sudo ./pairing_tool /dev/hidraw1
The receiver is ready to pair a new device.
Switch your device on to pair it (you have thirty seconds to do so).

コードを読んでみる

このプログラム、よく見てみると以下の magic_sequence をデバイスに流し込むだけというシンプル設計4。こんな感じで他のコマンドも入力すればコントロール出来るようですね。

35
char magic_sequence[] = {0x10, 0xFF, 0x80, 0xB2, 0x01, 0x00, 0x00};

しかし、 これは公開されている情報なのだろうか?それとも、リバースエンジニアリングで見つけたのだろうか?

セットを買っておけばよかったんじゃない?

ここまで書いておいて何ですが、キーボード単体より安いキーボードとマウスセットを見つけてしまいました。

これを買っておけば再ペアリングなんか必要なかったなぁ。 でも、これ以上マウス増えてもな…

  1. 正確には Windows のノートPC等があるので、実は大した問題ではないです。Linux でやりたかっただけ! 
  2. Itunify もコード量はそんなに多くないので今度読もうと思っています。 
  3. ビルドではなくあえてコンパイル。 
  4. 正確には、レシーバーかどうかを先に確認していますが。 
?

0 件のコメント: