2017/04/19

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

Android 端末にキーボードとマウスを繋いで検証する必要が出てきたので、新たに [Logicool](https://www.logicool.co.jp/ja-jp) のキーボードを買いました。

マウスは以前買ったものがあり、[Unifying Receiver](https://www.logicool.co.jp/ja-jp/promotions/6072) を使えばUSBポートの節約にもなるというわけです。
Unifying Receiver は購入時にペアリング済みなので、USB端子に挿せばそのまま USB の有線キーボード・マウスのように使用可能です。ただ、今回のように別々に買った場合は、どちらかを再ペアリングする必要があります。 再ペアリングには Logicool の提供しているユーティリティを使用しますが、Windows と Mac 用しか提供されていません。 しかし、我が家のマシンはほとんど Linux。 つまり、買っても再ペアリングできないという問題が正確には Windows のノートPC等があるので、実は大した問題ではないです。Linux でやりたかっただけ! ### Linux 用のユーティリティもあった きっと Linux 用もあるだろうと探してみると、やはり、いくつか Linux でも使えるユーティリティを公開してくれている人がいるようです。 使い方等は、以下のサイトにまとまっています。 [Logitech Unifying Receiver - ArchWiki](https://wiki.archlinuxjp.org/index.php/Logitech_Unifying_Receiver) 現時点での選択肢は以下の3つ - [Solaar](https://pwr.github.io/Solaar/) GUI もある高機能なユーティリティ > 参考 > > [UbuntuでUnifyingを使う - Qiita](http://qiita.com/nmatayoshi/items/e57b2b94d8b58746d361) - [ltunify](https://github.com/mir-ror/ltunify) 以下の機能がある CUI ユーティリティ - ペアリング - ペアリング済みデバイスのリスト表示 - アンペアリング - [pairing_tool](https://lkml.org/lkml/2011/9/22/367) ペアリングのみの超シンプルユーティリティ 今回の用途だと Itunify か pairing_tool ですが、私は pairing_tool を使ってみました。 理由は60行くらいのコードで何をしているか一目瞭然だったからですItunify もコード量はそんなに多くないので今度読もうと思っています。。 ### コンパイルビルドではなくあえてコンパイル。 [LKML: Benjamin Tissoires: Re: [PATCH v5 1/1] HID: Add full support for Logitech Unifying receivers](https://lkml.org/lkml/2011/9/22/367) からコードを取得し、`pairing_tool.c` として保存。 以下でコンパイル。 ```console `gutter: false; $ gcc -o pairing_tool pairing_tool.c ``` ### paring_tool の使い方 まずはレシーバーのデバイスを確認します。 ```console `gutter: false; $ ls -l /sys/class/hidraw/hidraw*/device/driver | awk -F/ '/receiver/{print $5}' hidraw1 ``` 上記の例だと `/dev/hidraw1` がレシーバーのデバイスになります。 2つ以上表示された場合はレシーバーが複数刺さっている可能性が高いので確認しましょう。 **ペアリングしたいキーボードやマウスの電源を切ってから**、以下を実行します。 レシーバーがペアリングモードになるので、キーボード 等の電源を入れると自動的にペアリングされます。 ```console `gutter: false; $ 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` をデバイスに流し込むだけというシンプル設計正確には、レシーバーかどうかを先に確認していますが。。こんな感じで他のコマンドも入力すればコントロール出来るようですね。 ```c `first-line: 35; char magic_sequence[] = {0x10, 0xFF, 0x80, 0xB2, 0x01, 0x00, 0x00}; ``` しかし、 これは公開されている情報なのだろうか?それとも、リバースエンジニアリングで見つけたのだろうか? ### セットを買っておけばよかったんじゃない? ここまで書いておいて何ですが、キーボード単体より安いキーボードとマウスセットを見つけてしまいました。 これを買っておけば再ペアリングなんか必要なかったなぁ。 でも、これ以上マウス増えてもな…

0 件のコメント: