首先確定硬件上有支持藍牙的設備,然後運行如下命令,就可以開到我們的藍牙設備了:
代碼如下:
lsusb
運行hciconfig可以看到:
從上圖可以看出,我們的藍牙設備是hci0
運行hcitool dev可以看到我們的藍牙設備的硬件地址
運行hcitoo --help 可以查看更多相關命令
然後我們激活它:
代碼如下:
sudo hciconfig hci0 up
要注意的是,激活前藍牙必須是打開的,否則會出現如下錯誤:
然後我們開始掃描了:
代碼如下:
hcitool scan
可以看到,發現了我手機的藍牙了~~
然後我們要開始連接了,連接階段使用的主要命令是rfcomm:
運行rfcomm --help 可以查看用法
首先需要綁定目的藍牙設備:
代碼如下:
sudo rfcomm bind /dev/rfcomm0 E0:A6:70:8C:A3:02
注意:上面的這個地址是目的藍牙設備的硬件地址
接著我們連接它:
代碼如下:
sudo cat >/dev/rfcomm0
這是目的藍牙主機就會彈出一個對話框要求輸入pin碼,隨便輸入一個,然後主機就會彈出一個對話框,只要輸入的和剛才一致就可以通過驗證。之後我們發現我的手機已經顯示了成功配對的標記了。
在配對完成之後我們需要刪除綁定(否則在下次使用時會提示設備正忙),命令如下:
代碼如下:
sudo rfcomm release /dev/rfcomm0
在 Linux 下使用 rfkill 軟開關藍牙及無線功能
很多計算機系統包含無線電傳輸,其中包括Wi-Fi、藍牙和3G設備。這些設備消耗電源,在不使用這些設備時是一種能源浪費。
RFKill 是Linux內核中的一個子系統,它可提供一個接口,在此接口中可查詢、激活並取消激活計算機系統中的無線電傳輸。當取消激活傳輸時,可使其處於可被軟件重新激活的狀態( 軟鎖定 )或軟件無法重新激活的位置( 硬鎖定 )。
RFKill 為內核子系統提供應用程序編程界面(API)。內核驅動程序被設計為支持RFKill使用這個API注冊內核,並包含啟用和禁用這個設備的方法。另外,RFKill提供用戶程序可解讀的通知以及用戶程序查詢傳輸狀態的方法。
RFKill接口位於 /dev/rfkill,其中包含系統中所有無線電傳輸的當前狀態。每個設備都在 sysfs 中注冊當前RFKill狀態。另外,在啟用了RFKill的設備中每當狀態更改時,RFKill會發出 uevents。
rfkill 是一個命令行工具,您可使用它查詢和更改系統中啟用了RFKill的設備。要獲得這個工具,請安裝 rfkill 軟件包。
如果開機時在可以搜索到無線網絡且輸入密碼正確但仍然無法接入的情況下,就可能是rfkill這個程序阻攔了接入,它是個用來控制無線網絡及藍牙的使用的軟開關。
使用命令 rfkill list 獲得設備列表,每個都包含與之關聯的索引號 ,從 0 開始。
代碼如下:
rfkill list
您可以使用這個索引號讓 rfkill 停使或者使用某個設備,例如:
代碼如下:
rfkill block 0
停用系統中第一個啟用RFKill的設備。
您還可以使用 rfkill 阻斷某一類設備,或者所有啟用了RFKill的設備。例如:
代碼如下:
rfkill block wifi
停用系統中的所有Wi-Fi設備。要停用所有啟用了RFKill的設備,請運行:
代碼如下:
rfkill block all
要重新使用設備,請運行 rfkill unblock。要獲得 rfkill 可停用的完整設備類別列表,請運行 rfkill help。