2009-11-30

ubuntu 9.04 bluetooth 自動輸入裝置 PIN 碼並自動配對

在 ubuntu 上,藍牙介面是由 bluez 實作,而 ubuntu 8.xx + BlueZ 3.x 以前,作業系統與藍牙裝置的 PIN 配對流程是由 passkey-agent 、 pin-helper 或 hcid.conf 完成的。但在最新版的 ubuntu 與 bluez,是由另一種方法自動完成作業系統與藍牙裝置的 PIN 配對程序。

以下步驟主要說明,在 ubuntu 9.04 + BlueZ 4.3x 下,如何使作業系統自動輸入藍牙裝置的 PIN 碼並且自動配對。(~$ 是作業系統的提示符號,不用輸入。)


顯示本機藍牙 adapter 位址的指令,hci0與11:22:33:44:55:66就是本機端的藍牙天線的名稱與位址。
~$ hcitool dev
Devices:
hci0 11:22:33:44:55:66


掃描遠端藍牙裝置的名稱與位址,66:55:44:33:22:11與Remote_Device_Name就是遠端藍牙裝置的位址與名稱。
~$ hcitool scan
Scanning ...
66:55:44:33:22:11 Remote_Device_Name


編輯 /etc/bluetooth/rfcomm.conf ,將遠端藍牙裝置加入連線列表,新增內容如下。
rfcommN {                          # N請取代成任意整數,如 0, 1, 2 等
bind yes;
device 66:55:44:33:22:11; # 填入剛剛掃描到的遠端藍牙裝置位址
channel 1;
comment "Remote Device";
}


修改或新增 /var/lib/bluetooth/11:22:33:44:55:66/pincodes (要注意目錄名稱含有本機端藍牙天線的位址),若無此檔案則配對時會要求使用者輸入 PIN 碼,文字檔內第一個參數為遠端藍牙裝置的位址,第二個參數為藍牙裝置的 PIN 碼。範例如下。
66:55:44:33:22:11 4321
AA:BB:CC:DD:EE:FF 000000


與遠端藍牙裝置連線:
~$ sudo hcitool cc 66:55:44:33:22:11


若要建立本機端 serial port,N是在 rfcomm.conf 內所填入的編號,此 serial port 會建立在 /dev/rfcommN 目錄。
~$ sudo rfcomm connect N
Connected /dev/rfcommN to 66:55:44:33:22:11 on channel 1
Press CTRL-C for hangup