Android 5.0.2 以上でBLEが動かない
Occurrence -事象- Causes -原因- HID とは ? BLUETOOTH_PRIVILEGED とは? Summary -まとめ- HID を使ってるかの判断 禁止された Characteristic UUID なぜ禁止されたのか? Occurrence -事象- 機材とAndroid を BLE (Bluetooth low energy) で繋ごうとしたところ、Android 5.0.2以上の端末で Security Exception が発生した。
5.0.1 や 4.2 などは問題ないが、5.1や6.0で発生する。
エラー内容は以下のようになっている。
java.lang.SecurityException: Need BLUETOOTH_PRIVILEGED permission: Neither user 99999 nor current process has android.permission.BLUETOOTH_PRIVILEGED. 発生箇所は BluetoothGatt#setCharacteristicNotification
Causes -原因- StackOverflow にほぼ発生事例そのままの報告がある、
Android 5.0.2 onwards don’t allow HID access through Bluetooth LE
さらに、Android Issues に [BLE] Reading/writing char/descr of a HID service throws an exception があり、その中で
LMDE2のNVIDIA Driverを更新する
LMDE2 に NVIDIA のグラフィックドライバを入れます。
Inspect your graphic board Download a driver Installer Prepare Installation Installation Inspect your graphic board terminalで
lspci -vnn | grep VGA -A 12 Download a driver Installer NVIDIAの公式サイトからLinux X64用のDriver Installerを手に入れます。
私の場合は以下から
http://www.nvidia.com/download/driverResults.aspx/77525/en-us
NVIDIA-Linux-x86_64-340.32.run というシェルファイルを手に入れました。
Prepare Installation reboot し grub で recovery mode を選択し、
ログイン画面で、Ctrl + Alt + F1 を押してCUIモードになります。
ユーザーログイン後、
sudo update-initramfs -u を実行します。
これはNVIDIAシェルがカーネルモジュールを追加するため必要になります。
これが実行されない場合
Nouveau kernel driver を止めてくれとのエラーメッセージが表示されます。
Installation 再度再起動し、recovery modeになり、CUIモードにログインします。
X serviceを止めます。
sudo service mdm stop インストールを実行します。
臆病者のための Ansible
Target Links 臆病者のための確認コマンド 基本 確認 hosts 制限 hosts 確認 tasks 確認 最終 〆 Target Ansible を使ってみてその便利さに驚愕するとともに、他人が作ったPlaybookを引き継ぐ怖さも知る。
全て手順書のように書いていればいいのだが、多数のRoleを使い高度に書かれたAnsible playbookを引き継ぎ、メンテまたは代わりに実行するのはとても怖い。
playbook実行する前に何がどうなるのか確認しまくりたい。
そんな自分のための初心者ガイド
Links 実行の仕方など基礎的な事は公式ドキュメント参照
Hello world
http://docs.ansible.com/ansible/intro_getting_started.html
どうやって使うかのオススメ、ディレクトリ配置など
http://docs.ansible.com/ansible/playbooks_best_practices.html
確認コマンド playbook は実行前に色々確認したいですよね。
基本 ansible-playbook playbook.yml これで playbook が実行されます、設定がしっかりしてる環境であれば、外部サーバに実際に変更を行ったり、時には取り返しのつかない変更が実行されたりします。何も考えずに実行するのは危険
確認 hosts ansible-playbook playbook.yml –list-hosts playbook は実行されません。
playbookが実行される相手先をリストアップするだけです。
host は hosts ファイルなどで定義された ansible のためのサーバー接続先設定のことです。
制限 hosts ansible-playbook playbook.yml -l hoge –list-hosts -l の後に host 名もしくは hostgroup 名を入力すれば playbook の接続先を制限することができます。 –list-hosts と組み合わせると捗ります。
確認 tasks ansible-playbook playbook.