2014-10-01 2 views
2

Ошибка: Мониторинг sco-пакетов между основным и ведомым Bluetooth.Как протестировать sco-пакеты в bluetooth с использованием библиотеки bluez

Описание проблемы. У меня есть небольшое внутреннее устройство Bluetooth (разработанное в Linux fedora OS) и настроено как подчиненное устройство.

Я заинтересован в следующих вещах:

  1. Master для подключения к нашему встроенному устройству и установить связь SCO. Как проверить ссылку?

  2. Мастер для отправки sco-пакетов в ведомые устройства и подчиненные отправляет обратно (loopback) те же пакеты для управления. Абсолютно не знаю, как это сделать?

То, что я сделал до сих пор:

Ну я настроив встроенный в устройство к подчиненному и успешно подключается к ноутбуку через окна Bluetooth.

Я включил профиль гарнитуры в своем собственном устройстве BT, и я вижу значок гарнитуры на окнах.

на стороне Linux с помощью кода C++ Я изменил /etc/asound.conf, чтобы включить mac-адрес подключенного устройства (в моем случае Windows-ноутбук). образец приведен ниже

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" 

И я могу успешно услышать звук на моем ноутбуке окна.

Пока все хорошо. Теперь, когда я hciconfig -a

acl packets have increase but sco remain at 0 

RX bytes:1041 acl:456 sco:0 events:36 errors:0 
TX bytes:1347 acl:567 sco:0 commands:34 errors:0 
  1. Будет ли это доказательством того, что звук работает, но не через SCO?
  2. Я обнаружил, что у меня нет драйвера btsco или файла hcid.conf. Do Вы думаете, что это может быть проблемой?
  3. Если мой звук работает через sco, может кто-нибудь предоставить мне пример о том, как тестировать через hcidump?
  4. как его вернуть к мастеру?

Примечание:
Я сделал hcidump и сохранить файл в то время как музыка играет. Я выгружаю файл сохранения в wirehark и использую «bthci_sco» для фильтрации пакетов и отсутствия пакетов. Интересно, как тогда музыка работает?

ответ

0

После нескольких дней борьбы с Ubuntu сбой часто, наконец, это сработало.

Ниже приведены шаги, которые я пробовал.Просьба считать это ссылкой, поскольку есть большие шансы, что я, возможно, забыл написать несколько этапов

.......................... .................................................. .......................
Обзор проблемы: Пытается подключить ОС Linux к гарнитуре BT и установить ссылку sco для воспроизведения музыки

конфигурация

UBUNTU:
версия ядра: 3.0.0-32-родовой
Ubuntu Verion -> 11,10

Тестирование устройства: JABRA 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) Я бы рекомендовал установить Synaptic, а также для установки пакетов и недостающие библиотеки.

4) Установите следующие пакеты ->

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

5) Google это, чтобы загрузить исходный код btsco или в качестве альтернативы

использовать следующие COMAND

cvs -d:pserver:[email protected]:/cvsroot/bluetooth-alsa login 
cvs -d:pserver:[email protected]:/cvsroot/bluetooth-alsa co btsco 

6) СЕЙЧАС ПОДГОТОВКА И УСТАНОВКА

я) перейти к btsco Адресной книги

б) ./bootstrap вопросов:
если ошибка/предупреждение: макро `AM_PATH_SDL» не найден в библиотеке установки libbsdl1.2-DEV

раз bootsrap прошел выполнение настройка II) ./configure вопросы:

  1. если Bluetooth/Bluetooth .h отсутствует -> установить libbluetooth-DEV
  2. пакет Требование DBus-1> = 0,36 не соответствует & DBus-GLIB не найдено -> установить libdbus-бойкий-1-DEV

III) делают

вопросы: ./ libtool: строка 841: X - tag = CXX: команда не найдена и многие другие ошибки, подобные этому

Для решения этой проблемы: загрузить libtool-1.5.24 tar ball. извлеките его и сделайте configure and make. теперь снова настройтесь на btsco и скопируйте libtool исполняемый из каталога libtool в btsco.

IV) сделать установку v) сделать mainatiner-чистой O/P: btsco строится преуспевающим, и вы можете найти его в/USR/местные/бен.

7) Построить модуль ядра

я) кд/USR/SRC/btsco/ядро ​​

б) сделать

вопросы: Я предполагаю, что вы получите огромный список ошибок. открытая btsco.cand обрабатывать каждый шаг за шагом ошибки

1 ошибка звук/driver.h не найден бла-бла -> комментарий, что в btsco.c файле
2 комментария #include, как это устарел
3) добавить

#include< linux/smp.h> 
#include< linux/muxtex.h> 

4) DEFINE_MUTEX (os_mutex);

5) snd_assert является устаревшим, так заменить UIT с помощью, если Постулаты например

if(bt_sco->playback == NULL) 
{ 

} 

6) заменить kill_proc (опять устаревшее) по функции ниже 9 копируется из чистой .. 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;    /* default return value */ 
    struct task_struct* p; 
    struct task_struct* t = NULL; 
    struct pid* pspid; 
    rcu_read_lock(); 
    p = &init_task;     /* start at init */ 
    do { 
     if (p->pid == pid) {   /* does the pid (not tgid) match? */ 
     t = p;  
     break; 
     } 
    p = next_task(p); /* "this isn't the task you're looking for" */ 
    } while (p != &init_task); /* stop when we get back to init */ 
    if (t != NULL) { 
     pspid = t->pids[PIDTYPE_PID].pid; 
     if (pspid != NULL) error = kill_pid(pspid,sig,1); 
    } 
    rcu_read_unlock(); 
    return error; 
} 

, а затем вместо kill_proc должен быть

my_kill_proc(bt_sco->thread_pid, SIGINT) 

6) заменить %d to %lu на ошибку долгого ИНТ

7) replace lock_kernal to mutex_lock(&os_mutex) же для разблокировки

надеюсь сделать будет успешным после этого

8) сделать установку 9) depmod -e 10 0 очищает

11) Modprobe snd_bt_sco

......................................

Теперь запустите btsco

а) hciconfig hci0 голос 0X0060

б) hcitool сканирования

ПОЛУЧИТЬ mac_addre4ss из JABRA

с)/USR/местные/бен/btsco -r - v mac_addrees

если возникли ошибки?: Контроль открытых (HW: 1), затем Jabra оленья кожа поддержки SCO или модуль ядра не загружен

г) на другом терминале делают ->sudo hcidump -i hci0 sco контролировать SCO пакеты

е) после соединения джабр устанавливается прогон aplay -D plughw:Headset /home/my_home_dir/my_sample_fiile.wav

Смежные вопросы