2011年2月16日水曜日

gentoo で Bluetooth

我が Thinkpad X61 + gentoo で Bluetooth キーボードを使おうと思い現在格闘中。

まず、以下を参考にしてみたが、どうも古いらしく bluez-libs やら bluez-utils
などというパッケージは存在しない。

http://www.gentoo.org/doc/ja/bluetooth-guide.xml

以下でツール関連をインストール。

 emerge bluez

bluez-4.82 が入った。

そして上記 URL に書いてある hcid なるデーモンを探したがそんなものはない。
どうやら bluez-4.x はだいぶ違うようだ。

インストール後、hciconfig してみるも no output。何も表示されない。
/proc/acpi/ibm/bluetooth はちゃんと存在してて中身は以下でちゃんと enabled。

 status:         enabled
 commands:       enable, disable

おかしいな。で、いろいろ調べたところ、結局 hci なドライバが入ってなかった。
事前に.config は確認してたんだけど、BT_HCIBTUSB が not set だったのを見逃
していた。これは以下 URL を見て気づいた。

http://en.gentoo-wiki.com/wiki/Lenovo_Thinkpad_T61p

仕方なく genkernel --lvm --menuconfig all してしばらく待った。

再起動後、hciconfig -a すると見えた。

 hci0:   Type: BR/EDR  Bus: USB
         BD Address: 00:1F:3A:DE:5F:DE  ACL MTU: 1017:8  SCO MTU: 64:8
         UP RUNNING PSCAN
         RX bytes:11816 acl:0 sco:0 events:384 errors:0
         TX bytes:642 acl:0 sco:0 commands:45 errors:0
         Features: 0xff 0xff 0x8f 0xfe 0x9b 0xf9 0x00 0x80
         Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
         Link policy: RSWITCH HOLD SNIFF PARK
         Link mode: SLAVE ACCEPT
         Name: 'localhost-0'
         Class: 0x480100
         Service Classes: Capturing, Telephony
         Device Class: Computer, Uncategorized
         HCI Version: 2.0 (0x3)  Revision: 0x212b
         LMP Version: 2.0 (0x3)  Subversion: 0x41d3
         Manufacturer: Broadcom Corporation (15)

あと、いろいろ調べてる際に Fn+F5 で Bluetooth を on/off 出来るような設定&スクリ
プトを見つけたので入れてある。

 ~$ cat /usr/local/sbin/bluetooth-toggle
 #!/bin/bash
 cat /proc/acpi/ibm/bluetooth | awk '{ print $2 }' | while read line;
 do
 if [ $line == "enabled" ]; then
 echo disable > /proc/acpi/ibm/bluetooth
 else
 echo enable > /proc/acpi/ibm/bluetooth
 fi
 break
 done

 ~# cat /etc/acpi/events/default
    : (snip)
 #event=.*
 #action=/etc/acpi/default.sh %e

 event=ibm/hotkey HKEY 00000080 00001005
 action=/usr/local/sbin/bluetooth-toggle

んであとは acpid と hald が自動起動されることを確認。さらに bluetooth も
自動起動の仲間入り。

  rc-update -a bluetooth boot