2015年11月20日金曜日

Linuxとbluetooth

Prime MusicがAmazonから提供されるようになったので意味もなく
ブルースとかレゲエとかヘヴィメタルとか聴いてます

閑話休題

ブルースではなくbluezです
私のラップトップはThinkPad Edge E145なのですが,これのwifiが
Broadcomの43228 + 20702A1 comboです.
43228(pci)のほうは,Linuxカーネルのリバースエンジニアリングドライバ(メインライン)なりプロプライエタリのwlドライバなりが存在します.
なので,無線LANには困りません.
もう片方,207021A(vid:0a5c, pid:21f3)のほうが問題でした.
btusbドライバがカーネルにはあるので,ちゃんとデバイスは読めるのですが,
バイナリブロブ(ファームウェア)は存在しません.
なので,このbluetoothインターフェイスは使えませんでした.


しかし,これの解決方法を知ったので以下に

1. 公式のWindowsドライバをDownload

ThinkPadならば,普通に公式サイトからダウンロードしてください
他のマシンでも同様です.
または,http://catalog.update.microsoft.com/v7/site/ScopedViewRedirect.aspx?updateid=87a7756f-1451-45da-ba8a-55f8aa29dfee
から.cabのパッケージをダウンロードする手もあります

2. 解凍

普通にexeをダウンロードしたらならば,wineかWindowsで起動して中身を取り出します
setupに必要なファイル群が解凍されたらsetupそのものは実行しないようにすれば良いです
cabをダウンロードしたならばcabextractコマンドをインストールして使いましょう

3. インストール

まず,lsusbコマンドで自分のマシンのbroadcomなbluetoothデバイスのIDを控えましょう
ID 0a5c:21f3となっていれば,0a5cがvid(ベンダーID)で21f3がpid(製品ID)です

解凍先のWin32とかWin64とかのディレクトリをを見にいきましょう(32か64はどっちでも良いです).
cabextractでcabから取り出したならばならコマンドを実行したディレクトリにファイル群が展開されます.
*.hexというファイルが,Windowsのbroadcomなbluetoothドライバファームウェアです.*.hexは大量にあるので,まず,
bcbtums-win8x64-brcm.inf
とかそんな感じのファイルを探して,開きます.

このファイルをlessとかで開いて,先に控えたpidで検索します.
おそらく,
%BRCM20702A1.DeviceDesc=%BlueRAMUSB21F3, USB\VID_0A5C&PID_21F3 ...
みたいな行がまず見つかります.
この行の一番右の列に自分のマシンの名前(たとえばこのThinkPad Edge E145なら,Lenovo Edge 43228 + 20702A1 comoboとありました)があるでしょうか?

それが確認できたら次は,BlueRAMUSB21F3 というinfのセクションを検索します.
すると,そのセクションの中に,*.hexのファイル名が書いてあるのを見つける事ができるかと思います.

たとえば43228 + 20702A1 comoboならばBCM20702A1_001.002.014.1443.1448.hexです

最後に,bluez-utilsに入っているhex2hcdコマンドをつかって,
$ hex2hcd BCM20702A1_001.002.014.1443.1448.hex
# mv BCM20702A1_001.002.014.1443.1448.hcd /usr/lib/firmware/brcm/BCM2070A1-0a5c-21f3.hcd
としてください.これで,rebootするかbtusbドライバをmodprobeなどで一度rmmodしてからinsmodをしてやるなどすると,bluetoothデバイスがつかえるようになります.

/usr/lib/firmware/brcmに移動してやる時のファイル名は,BCM2070A1-(VID)-(PID).hcdになっています.このファイル名はdmesgでファームウェアのロードに失敗している箇所でも確認可能です.

また,infにかかれているファームウェアファイルがかかれたセクションは一般にBlueRAMUSB(PID)になってると思われます.

なお,同様の手段でDell XPS13 (2015含む)などでもbluetoothがつかえます.

以上でした.

2015年11月14日土曜日

解決方法募集中! K-9 Mailで受信に失敗

表題の通り.
Outlook.comのメールをAndroidのK-9 Mailで受信しようとしたところ,
Username or password incorrect.
(Command: AUTHENTICATE PLAIN; response: #2# [NO, AUTHENTICATE failed.])
というエラーで失敗.
しかし,まったく同じuserとpassでsmtpの認証は通っている他,
このメールは独自ドメインのメールだが同じドメインのOutlook.comのアカウント
複数あるものはどれも受信が問題なく行う事ができる.

また,先月末までは何も問題なく受信できていました.

他の問題ないアカウントとこのアカウントの差異といったら,
このアカウントがOutlookメール(プレビュー版)になっているところ.

もしかしてプレビュー版だと認証とか少し変わったのだろうか.

だれか詳しい人,あるいは同じ症状の人,情報お願いします.

切実.

足りないカーネルモジュールを知る

カーネルを自前ビルドしてると,いざという時にいくつか機能が足りなくて頭を抱える事がままある.

怒られたやつつっこんでビルドしてリブートするもまだ足りなくて……
みたいなのはもうやめたいと考えていたが,良い方法を知ったので以下紹介



これを/tmp/modprobeに配置
それから,
$ chmod a+x /tmp/modprobe
最後に
$ echo /tmp/modprobe | sudo tee /proc/sys/kernel/modprobe
これでカーネルが機能が足りないとき,modprobeをしようとして/tmp/modprobeを呼ぶ.
すると,modprobeしようとしている内容が/tmp/modprobe.logに出るわけだ.
あとはそのモジュールについて,カーネルコンフィグしてリビルドすれば良い

2015年11月12日木曜日

SSL/TLS証明書を買いました

最近宅内のファイルサーバーと録画サーバーを内側セグメントにまとめてしまい,
DMZのRPiはファイルサーバーではなくNginxでリバースプロキシにしてしまった.

Chinachuを導入したついでにTLSのDV証明書を購入したという話.

べつにオレオレでも良いけど,今丁度さくらのSSL代理購入がキャンペーンで
ラピッドSSLを1年目タダで売ってて,まあさくらのアカウントもってたのでものの序でです.

http://ssl.sakura.ad.jp/

ついでのついでに,そのうちWebページをそのドメインで公開してブログもひっこすかも.
これはあくまで予定で,しばらく着手してる暇はなさそうです.