2

Linuxで接続しようとしているBluetoothデバイスがいくつかあります。1つを除いて、どのデバイスにも問題はありません。違いは、他のすべてのデバイスが Bluetooth 接続を標準的な方法 (私が想定する方法) で処理することです。つまり、ホスト デバイス (PC) が接続を開始するのを待ちます。一方、もう一方のデバイスは、数秒ごとに接続自体を開始しようとし、その間に 1 秒程度のスリープが入ります。

他のデバイスについては、次のように接続しています。

rfcomm connect /dev/rfcommX <deviceMacAddress>

(X は未使用の rfcomm ポート番号)

このコマンドを発行する前に、必要なペアリング キーを使用して bluetooth-agent を実行します。ここではすべて正常に動作します。

問題のデバイスの場合、デバイスがペアリングされる前に、これは初めてうまく機能します。ただし、ペアリング後、rfcomm connect コマンドは失敗する可能性が非常に高くなります。これは、デバイス自体が接続を開始しようとしているためです。デバイスがスリープ状態の場合、接続は失敗します (「ホスト ダウン」)。

代わりに、このデバイスでは、次のコマンドが魅力的に機能することがわかりました。

rfcomm listen /dev/rfcommX

(最初にsdptool add SPを介してシリアルポートを追加する必要がありました)

PC はそこに座ってデバイスからの着信接続を待機するため、これは毎回機能します。

ただし、複数のデバイスがある場合に問題が発生します。rfcomm listen コマンドは見事に機能しますが、どのデバイス (Mac アドレスで識別される) がどの rfcomm ポートに接続するかを制御する方法はないようです。複数のデバイスの電源が入っている場合は、最初に接続しようとしたデバイスが接続されます。ただし、このアプリケーションでは、ユーザーが接続しているデバイスをユーザーに知らせたいと考えています。

誰かが以前にこのようなことを扱ったことがありますか? bluez bluetooth パッケージのカスタム バージョンを作成することを考えているところまで来ています。

4

1 に答える 1

0

毎回同じ名前のシンボリック リンクを作成するudev ルールを作成するか、適切なパスをたどっ/sysてデバイスに到達します。

于 2011-02-28T17:43:52.707 に答える