質問: マスターとスレーブのBluetooth間のscoデータパケットを監視します。
問題の説明。私は小さな内部Bluetoothデバイス(Linux fedora OSで開発)を持っており、スレーブデバイスで構成されています。
私は次に興味があります:
Masterは内蔵デバイスに接続し、scoリンクを確立します。リンクが設定されているかどうかを確認するには?
マスターステーションはscoデータパケットをスレーブステーションに送信し、スレーブステーションは同じデータパケットをマスターステーションに送り返します(ループバック)。何をすべきか分からないのですか?
今まで何をしたのか:
さて、内蔵デバイスをスレーブとして設定し、Bluetooth経由でWindowsノートブックに正常に接続しました。
内部BTデバイスでヘッドセットプロファイルを有効にしており、Windowsでヘッドセットアイコンを表示できます。
/etc/asound.conf
Linux側では、C ++コードを介して接続されたデバイス(私の場合はWindowsノートブック)のmacアドレスを含むように修正しました。
以下に例を示します。pcm.btheadset { type plug slave { pcm { type bluetooth device DC:A9:71:8D:2D:C6 profile "auto" } }
その後、コマンドを使用して内部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を介しては機能しないことを証明しますか?
btscoドライバやドキュメントがないことがわかりました
hcid.conf
。これが問題になる可能性があると思いますか?私のオーディオがscoを介して動作している場合、誰かがテスト方法の例を提供できますか
hcidump
?マスターにループバックする方法は?
答え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 を実行します。