我正在運行我的家庭計算機運行Ubuntu和Python 2.7的測試,希望讓Raspberry Pi 3使用具有自定義服務和特性的BLE進行廣告。我已經在兩個設備以及dbus-python上安裝了藍牙版本5.42(使用推薦的方法)。我的電腦和Raspberry Pi都可以使用hci0 lescan 0
命令做廣告,但我想用bluez示例腳本做廣告,example-gatt-client.py和example-advertisement.py找到here,因爲我想用我的自己的習慣特徵。LEAdvertisingManager1從DBus.ObjectManager.GetManagedObjects丟失
家用電腦 - 內核版本4.4.0-31通用
我可以創建自定義特性和運行example-gatt-server.py做廣告,沒有問題的example-advertise.py我的家用電腦。我遇到的一個問題是我需要啓用Bluez實驗模式,將--experimental
添加到位於/lib/systemd/system/bluetooth.service
的bluetooth.service文件。安裝dbus-python庫也有點麻煩,因爲我必須自己爲Python2構建和安裝它。
advertise.py腳本查找名爲「org.bluez.LEAdvertisingManager1」的特定廣告界面。 gatt-server.py腳本查找「org.bluez.GattManager1」。我可以檢查是否通過運行以下命令存在接口:
dbus-send --system --dest=org.bluez --print-reply/org.freedesktop.DBus.ObjectManager.GetManagedObjects
這些接口被發現和我家裏的電腦上正常工作。腳本運行沒有問題。
樹莓派 - 內核版本38年4月4日至V7 +
在相同的bluez版本並啓用了實驗性的功能,我試圖運行advertise.py當遇到這樣的錯誤:
LEAdvertisingManager1界面未找到。
而當我執行命令「systemctl status bluetooth」時,它顯示啓用了實驗標誌,但運行時沒有看到LEAdvertistingManager1。
dbus-send --system --dest=org.bluez --print-reply/org.freedesktop.DBus.ObjectManager.GetManagedObjects
我可以跑不過沒有問題的gatt-server.py腳本,這意味着「org.bluez.GattManager1」被發現,工作正常。我在這裏錯過了什麼?
我已經搜索過這個問題,但唯一的建議是啓用實驗功能,並確保我的內核是> = 4.1。
感謝您的詳細說明。然而在Raspi 3,我得到:'須藤hciconfig hci0 up' - >'無法獲取設備信息:沒有這樣的device'。我們是否應該在https://github.com/ukBaz/python-bluezero/issues/30中描述的運行'make'之前應用補丁? –
現在這對我有用:我應用了hciattach-patch(不知道是否有必要),並且還運行'sudo/usr/bin/hciattach/dev/ttyAMA0 bcm43xx 921600 noflow -')。重啓之間可能是必要的。'sudo hcitool lescan'發現外圍設備。 –
爲我完美工作。重大進展。謝謝 – user462990