RFCOMM 裝置似乎遺失 (dev/rfcomm0)

RFCOMM 裝置似乎遺失 (dev/rfcomm0)

我正在嘗試透過藍牙發送和接收串行命令。我已經安裝了 pyBluez 函式庫。問題是,雖然 rfcomm.conf 存在,但 /dev/ 目錄中沒有 rfcomm0。我重新啟動但沒有任何變化。

如果我執行以下命令,我會收到“權限被拒絕”錯誤。

sudo echo "This is a test" > /dev/rfcomm0

為什麼usb藍牙模組連接後rfcomm沒有自動加入/dev?藍牙模組相容,我可以透過命令列掃描和查找設備。 Bluez 和 bluez-utils 已經安裝。

答案1

即使啟動了藍牙服務,該/dev/rfcomm0裝置也不會自動出現。

至少,藍牙子系統需要知道藍牙裝置的位址及其通道,以便特定的/dev/rfcomm*裝置名稱可以綁定到特定的藍牙裝置+通道組合。

您可以使用rfcomm bind 0 <bdaddr> [channel]來進行綁定/dev/rfcomm0。如果不指定頻道號,則預設使用頻道1。如果您的版本rfcomm仍然支援該/etc/bluetooth/rfcomm.conf文件,並且您有要寫入該文件的地址和通道信息/dev/rfcomm0,那麼您可以從命令中省略地址和通道信息 - 但您仍然需要使用該命令進行綁定。

新版本的 BlueZ 工具似乎不再記錄該/etc/bluetooth/rfcomm.conf檔案。您可能必須始終使用命令的完整形式rfcomm bind來設定綁定。您可能希望將這些命令新增至/etc/rc.local某些自訂啟動腳本中,以使它們在啟動時自動執行,因為關聯不會在重新啟動後持續存在。

看來 BlueZ 內部的最後一次重大重建使我們損失了一些與 RFCOMM 相關的功能,例如文件/etc/bluetooth/rfcomm.conf。但至少該rfcomm命令仍然可用並且可以完成這項工作。

答案2

為什麼這不自動完成?首先,藍牙服務需要啟動守護進程,如果它不在初始化清單中,您必須進入終端並手動啟動它,直到您重新配置初始化清單以包含它。

這樣做的原因是為了讓您可以在承諾在計算機上將其全部自動化之前測試您的配置。背後的推理是基於 Unix 的作業系統應如何運作、使用者和群組如何分配通訊權限等概念。

相關內容