LEAdvertisingManager1がDBus.ObjectManager.GetManagedObjectsにありません

ブライアンマクグレイン:

カスタムサービスと特性を備えたBLEを使用してRaspberry Pi 3にアドバタイズすることを期待して、UbuntuとPython 2.7を実行している自宅のコンピューターでテストを実行しています。Bluezバージョン5.42を(推奨される方法を使用して)両方のデバイスとdbus-pythonにインストールしました。私のコンピューターとRaspberry Piはどちらもhci0 lescan 0コマンドを使用して宣伝できますが、自分で使用したいため、ここあるbluezサンプルスクリプトexample-gatt-client.pyとexample-advertisement.py を使って宣伝したいと思います。カスタム特性。

ホームコンピューター-カーネルバージョン4.4.0-31汎用

自宅のコンピューターで問題なくexample-gatt-server.pyとexample-advertise.pyを実行することで、カスタム特性を作成して宣伝することができます。私が抱えていた唯一の問題--experimentalは、にあるbluetooth.serviceファイルに追加してBluez試験運用モードを有効にする必要があったことです/lib/systemd/system/bluetooth.serviceまた、Python2用に自分でビルドしてインストールする必要があったため、dbus-pythonライブラリのインストールは少し面倒でした。

advertise.pyスクリプトは、「org.bluez.LEAdvertisingManager1」と呼ばれる特定の広告インターフェースを探します。gatt-server.pyスクリプトは「org.bluez.GattManager1」を探します。次のコマンドを実行して、そのインターフェイスが存在するかどうかを確認できます。

dbus-send --system --dest=org.bluez --print-reply / org.freedesktop.DBus.ObjectManager.GetManagedObjects

これらのインターフェイスが見つかり、私の自宅のコンピューターで正常に動作します。スクリプトは問題なく実行されます。

Raspberry Pi-カーネルバージョン4.4.38-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以上であることを確認することでした。

ブライアンマクグレイン:

問題は解決しました!多くのデバッグを行い、bluezエラーログを確認した後、自分のPiにbluezを正しくインストールしていないことに気付きました。raspbianの新規インストールからbluezを適切にインストールするための手順は次のとおりです。

sudo apt-get update 
sudo apt-get upgrade 
mkdir bluez 
cd bluez 
wget http://www.kernel.org/pub/linux/bluetooth/bluez-5.43.tar.xz 
tar xvf bluez-5.43.tar.xz 
cd bluez-5.43/ 
sudo apt-get install -y libusb-dev libdbus-1-dev libglib2.0-dev libudev-dev libical-dev libreadline-dev 
./configure 
sudo make 
sudo make install

次に、試験運用モードを有効にします。これはBluez v5.23では必要ないかもしれませんが、とにかくそれを行いました。

cd
sudo nano /lib/systemd/system/bluetooth.service

"ExecStart = / usr / local / libexec / bluetooth / bluetoothd"という行の後に--experimentalを追加すると、次のようになります。

ExecStart=/usr/local/libexec/bluetooth/bluetoothd --experimental

次に、この新しい構成でBluetoothを実行します

sudo systemctl daemon-reload 
sudo systemctl restart bluetooth

テストアドバタイズメントを実行する場合は、以下を使用できます。

sudo hciconfig hci0 up
sudo hciconfig hcio leadv 0

Pi3は「raspberrypi」としてアドバタイズする必要があり、お気に入りのBLEアプリ(iOSではLiteBlueを使用)を使用して接続しようとすると、いくつかのデフォルトの特性を持つはずです。

「LEAdvertisingManager1」が存在するかどうかを確認するために、実行する必要があります

dbus-send --system --dest=org.bluez --print-reply / org.freedesktop.DBus.ObjectManager.GetManagedObjects

最後に、元の投稿のリンクからスクリプトを実行しないでください。彼らはとても信じられないほど古くなっています。代わりに、作成したディレクトリにあるサンプルスクリプトを実行します。

cd bluez/bluez-5.43/tests

実行する前に、以下を介してdbus-pythonをインストールする必要があります。

sudo apt-get install python-dev libdbus-1-dev libdbus-glib-1-dev 
sudo apt-get install python-pip 
sudo apt-get install --reinstall python-gi
sudo python2.7 -m pip install dbus-python

python2.7(私がやった)を使用してexample-advertiseスクリプトを実行する場合は、example-advertiseの行を次のように変更する必要があります。

import gobject

from gi.repository import GObject as gobject

独自のカスタム特性を追加する場合は、変更せずに実行できるexample-gatt-serverを同時に実行する必要があります

また、iPhoneがPi3に問い合わせてスタックし、接続できないという小さな問題もありました。これは、Bluetoothをリセットするだけで解決しました。

sudo systemctl daemon-reload 
sudo systemctl restart bluetooth

がんばって!

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ObjectManagerが認識されません(宣言はFixtureInterface-> loadと互換性がある必要があります)

分類Dev

__construct()はDoctrine \ Common \ Persistance \ ObjectManagerのインスタンスである必要があります

分類Dev

InvalidArgumentException: "\ string $ filter"は$ objectManager-> get()の有効なFqsenではありません

分類Dev

ObjectManagerメソッドcreateQuery()が存在しないようです

分類Dev

UnityDashにタブがありません

分類Dev

Ubuntu 14.04にMOTDがありません...?

分類Dev

JDKにJSONParserがありません

分類Dev

Postgresが配列にありません

分類Dev

XmlSerializerに要素がありません

分類Dev

Openpyxlに「jdcal」がありません

分類Dev

aidlにAndroidStudioがありません

分類Dev

xamarinにHttpClientがありません

分類Dev

wxpythonには「adv」がありません

分類Dev

GStreamerに要素「ffmpegcolorspace」がありません

分類Dev

HttpPostedFileBaseに参照がありません

分類Dev

CALayerにはAccessibilityIdentifierがありません

分類Dev

Azure StackPortalにWindowsがありません

分類Dev

Xcodeに出力がありません

分類Dev

AddDbContextにUseSqlServerがありません

分類Dev

式がGROUPBY句にありません

分類Dev

WEKA出力に値がありません

分類Dev

networkxに矢印がありません

分類Dev

Pythonに引数がありません

分類Dev

SaxonParserTestにSaxonXQDataSourceがありませんか?

分類Dev

InputPhoneContactにはlen()がありません

分類Dev

JavaOpenJDKにJavaFXがありません

分類Dev

BUILDSがazuredevopsにありません

分類Dev

DatabaseExecutionContextがPlayAPIにありません

分類Dev

@titleRoxygenに名前がありません

Related 関連記事

  1. 1

    ObjectManagerが認識されません(宣言はFixtureInterface-> loadと互換性がある必要があります)

  2. 2

    __construct()はDoctrine \ Common \ Persistance \ ObjectManagerのインスタンスである必要があります

  3. 3

    InvalidArgumentException: "\ string $ filter"は$ objectManager-> get()の有効なFqsenではありません

  4. 4

    ObjectManagerメソッドcreateQuery()が存在しないようです

  5. 5

    UnityDashにタブがありません

  6. 6

    Ubuntu 14.04にMOTDがありません...?

  7. 7

    JDKにJSONParserがありません

  8. 8

    Postgresが配列にありません

  9. 9

    XmlSerializerに要素がありません

  10. 10

    Openpyxlに「jdcal」がありません

  11. 11

    aidlにAndroidStudioがありません

  12. 12

    xamarinにHttpClientがありません

  13. 13

    wxpythonには「adv」がありません

  14. 14

    GStreamerに要素「ffmpegcolorspace」がありません

  15. 15

    HttpPostedFileBaseに参照がありません

  16. 16

    CALayerにはAccessibilityIdentifierがありません

  17. 17

    Azure StackPortalにWindowsがありません

  18. 18

    Xcodeに出力がありません

  19. 19

    AddDbContextにUseSqlServerがありません

  20. 20

    式がGROUPBY句にありません

  21. 21

    WEKA出力に値がありません

  22. 22

    networkxに矢印がありません

  23. 23

    Pythonに引数がありません

  24. 24

    SaxonParserTestにSaxonXQDataSourceがありませんか?

  25. 25

    InputPhoneContactにはlen()がありません

  26. 26

    JavaOpenJDKにJavaFXがありません

  27. 27

    BUILDSがazuredevopsにありません

  28. 28

    DatabaseExecutionContextがPlayAPIにありません

  29. 29

    @titleRoxygenに名前がありません

ホットタグ

アーカイブ