我想做的概念很簡單:讓 Linux 電腦成為自動接受連接(來自手機)的藍牙從裝置。總體目標是自動連接並將資料從手機應用程式傳輸到 Linux 電腦上的 python。以下是我認為需要的步驟:
我首先使用 hciconfig 設定藍牙適配器:
sudo hciconfig hci0 noauth
sudo hciconfig hci0 name thisdevice
sudo hciconfig hci0 lm SLAVE
sudo hciconfig hci0 lm ACCEPT
sudo hciconfig hci0 sspmode 1
sudo hciconfig hci0 reset
sudo hciconfig hci0 piscan
然後我需要一個使用 Bluetoothctl 的藍牙代理來進行身份驗證:
bluetoothctl
discoverable on
pairable on
agent NoInputNoOutput
然後我需要使用手機進行連線。但是,為了連接,我仍然必須在 bluetoothctl 的終端機中輸入 YES。 (它要求確認正確的 Pin)。這是一個問題,並且違背了 NoInputNoOutput 設定的全部目的。
然後我可以執行使用 Pybluez 和advertise_service 函數的python 程式。然後我可以從手機應用程式連接到該服務。
這是正確的事件順序嗎?如何讓藍牙自動驗證? (修改bluez中的代理程式碼?)
謝謝
答案1
我絕對不是這個主題的專家,我寧願說我已經連續三天嘗試同樣的事情了。我現在放棄了,把我的樹莓派扔到了所有其他未完成項目的堆上。
不過,我認為我穿越這個地獄的旅程可能對你有價值。agent off
在註冊新代理之前嘗試輸入:
bluetoothctl
agent off
agent NoInputNoOutput
discoverable on
pairable on
在輸入這些命令時在第二個終端機上運行btmon
應該會顯示正在註冊的新 NoInputNoOutput 代理程式。
答案2
嘗試這個:
bt-agent -c NoInputNoOutput -d