BluetoothでScoパケットをテストする方法

BluetoothでScoパケットをテストする方法

質問: マスターとスレーブのBluetooth間のscoデータパケットを監視します。

問題の説明。私は小さな内部Bluetoothデバイス(Linux fedora OSで開発)を持っており、スレーブデバイスで構成されています。

私は次に興味があります:

  1. Masterは内蔵デバイスに接続し、scoリンクを確立します。リンクが設定されているかどうかを確認するには?

  2. マスターステーションはscoデータパケットをスレーブステーションに送信し、スレーブステーションは同じデータパケットをマスターステーションに送り返します(ループバック)。何をすべきか分からないのですか?

今まで何をしたのか:

  1. さて、内蔵デバイスをスレーブとして設定し、Bluetooth経由でWindowsノートブックに正常に接続しました。

  2. 内部BTデバイスでヘッドセットプロファイルを有効にしており、Windowsでヘッドセットアイコンを表示できます。

  3. /etc/asound.confLinux側では、C ++コードを介して接続されたデバイス(私の場合はWindowsノートブック)のmacアドレスを含むように修正しました。
    以下に例を示します。

    pcm.btheadset {
       type plug
       slave {
           pcm {
               type bluetooth
               device DC:A9:71:8D:2D:C6
               profile "auto"
           }
       }
    
  4. その後、コマンドを使用して内部BTでサウンドを再生します。aplay -D btheadset " path of audio_file"

Windowsノートブックから音を聞くことができます。

今まではそんなに良くなった。
今私がするときhciconfig -a

acl パケットは増加しますが、sco はゼロのままです。

RX bytes:1041 acl:456 sco:0 events:36 errors:0
TX bytes:1347 acl:567 sco:0 commands:34 errors:0

これはオーディオが機能しますがscoを介しては機能しないことを証明しますか?

  1. btscoドライバやドキュメントがないことがわかりましたhcid.conf。これが問題になる可能性があると思いますか?

  2. 私のオーディオがscoを介して動作している場合、誰かがテスト方法の例を提供できますかhcidump

  3. マスターにループバックする方法は?

ベストアンサー1

頻繁なUbuntuの衝突で数日間苦しんだ最後に、ついに成功しました。

私が試した手順は次のとおりです。いくつかの手順を書くのを忘れた可能性が高いので、参考のために使用してください。

................................................. . .............. ................................... . ............................... ...質問の1つの概要:Linux OSをBTヘッドセットに接続して音楽再生のためのscoリンクを設定しよう

UBuntu 構成: カーネルバージョン: 3.0.0-32-generic Ubuntu Verion ->11.10

テスト機器:JABRA EASY GOヘッドフォン.................................. ... ...... ........................................... ....... ............ ..... 1)上記のバージョンのUbuntuをインストールします。このバージョンのUbuntuはサポートされなくなりましたが、私の内部デバイスはほとんど同じカーネルバージョンを使用しているため、このバージョンを使用しました。

2) apt-get ソースのリストを設定します。インストールされたバージョンはサポートされなくなったため、apt-getは機能しません。機能させるには、/etc/apt/sources.listを修正してください。はい - >

sudo sed -i -e 's/archive.ubuntu.com\|security.ubuntu.com/old-releases.ubuntu.com/g' /etc/apt/sources.list

sudo apt-get update && sudo apt-get dist-upgrade 3) シナプティックをインストールし、パッケージと不足しているライブラリをインストールすることをお勧めします。

4) 次のソフトウェアパッケージをインストールします -->

 bluez-hcidump 
 bluez-utils
 libbluetooth1 
 libbluetooth1-dev
 install automake-1.7 and autoconfig
 cvs

5)Googleまたは他のオプションからbtscoのソースコードをダウンロードします。

次のコマンドを使用してください

cvs -d:pサーバー:[Eメール保護]:/cvsroot/bluetooth-alsa cvs -d:pserver にログインします。[Eメール保護]:/cvsroot/bluetooth-alsa co btsco 6) これでコンパイルおよびインストール中です。

i) btsco ディレクトリに移動

ii)./bootstrap問題:エラー/警告:ライブラリのインストールlibbsdl1.2-devに「AM_PATH_SDL」マクロが見つからない場合

ii) ./configure 質問を実行してブートラップが構成されている場合:

bluetooth / bluetooth.hが見つからない場合 - > libbluetooth-devパッケージ要件のインストールdbus-1> = 0.36が満たされず、dbus-glibが見つかりません - > libdbus-glib-1-devのインストール

問題: ./libtool: line 841: X--tag=CXX: コマンドが見つかりません。

このエラーを解決するには、libtool-1.5.24 tarballをダウンロードしてください。抽出して整理して作成してみてください。 btscoを再設定し、libtoolディレクトリからbtscoにlibtool実行可能ファイルをコピーします。

iv) make install v) make mainatiner-clean O/p: btsco が正常にビルドされ、 /usr/local/bin にあります。

7) カーネルモジュールの構築

i) CD /usr/src/btsco/カーネル

ii)作る

質問:多くのエラーが発生したとします。 btsco.canを開き、各エラーを段階的に調べてください。

1エラーsound / driver.hが見つかりませんbla bla - > btsco.cファイルにこの内容をコメントアウトします。 2 コメント #include は廃止予定なので 3) 追加

#include<linux/smp.h> #include<linux/muxtex.h> 4) DEFINE_MUTEX(os_mutex);

5)snd_assertは廃止予定ですので、uitをifステートメントの例に置き換えてください。

if( bt_sco->play == NULL) {

6) kill_proc (もはや廃止) リンクを net..tahnks からそのユーザーにコピーし、関数に置き換えます。http://www.linuxquestions.org/questions/linux-kernel-70/is-there-any-kill_proc-replacement-for-proprietary-linux-kernel-drivers-4175460017/

int my_kill_proc(pid_t pid, int sig) { int error = -ESRCH; /* デフォルトの戻り値/構造作業構造p;構造体タスク構造体* t = struct pid * rcu_read_lock()p =&init_task;/do { if (p->pid == pid) { /pid(tgidではない)が一致していますか?/t=p;
} p = next_task(p) /
「これはあなたが探しているミッションではありません」/}中(p!=&init_task)/初期化に戻ると停止 */ if (t != NULL) { pspid = t->pids[PIDTYPE_PID].pid; if(pspid!= NULL)error = kill_pid(pspid、sig、1); ;return error;これはkill_procの代わりに次のようになります。

my_kill_proc( bt_sco->thread_pid, SIGINT )
6) 無効な long int の %d を %lu に置き換えます

7) lock_kernal をロック解除と同じ mutex_lock(&os_mutex) に置き換えます。

これからもmakeが成功してほしい

8) make install 9) depmod -e 10 0 make clean

11)モードプローブsnd_bt_sco

................................................. . 。

それでは、btscoを実行してみてください。

a) hciconfig hci0 音声 0X0060

b) hcitool スキャン

JABRA用mac_addre4ssを取得

c) /usr/local/bin/btsco -r -v mac_addrees

エラーが発生した場合:コントロールを開く(hw:1)、Jabraがscoをサポートしていないか、カーネルモジュールがロードされない

d) 他の端末で -> sudo hcidump -i hci0 sco を実行して sco データパケットを監視します。

e) jabr 接続を確立した後、aplay -Dplughw:Headset /home/my_home_dir/my_sample_fiile.wav を実行します。

おすすめ記事