como testar pacotes sco no bluetooth

1

Problema: monitore os pacotes sco entre o mestre e o escravo bluetooth.

Descrição do problema . Eu tenho um pequeno dispositivo Bluetooth interno (desenvolvido no sistema operacional Linux) e é configurado como dispositivo escravo.

Estou interessado em seguir as coisas:

  1. Mestre para se conectar ao nosso dispositivo embutido e estabelecer um link sco. Como eu verificaria se o link está estabelecido?

  2. Mestre para enviar pacotes sco para escravo e escravo enviar de volta (loopback) os mesmos pacotes para mestre. Absolutamente nenhuma ideia de como fazer isso?

O que eu fiz até agora :

  1. Bem, eu configurei nosso dispositivo embutido para escravo e conectei com sucesso ao windows laptop via bluetooth.

  2. Eu habilitei o perfil do fone de ouvido em meu dispositivo BT interno e posso ver o ícone do fone de ouvido no Windows.

  3. no lado do Linux via código c + + Eu modifiquei /etc/asound.conf para incluir o endereço mac do dispositivo conectado (no meu caso windows laptop).
    amostra é mostrada abaixo

    pcm.btheadset {
       type plug
       slave {
           pcm {
               type bluetooth
               device DC:A9:71:8D:2D:C6
               profile "auto"
           }
       }
    
  4. em seguida, reproduza o som no meu BT interno usando o comando aplay -D btheadset " path of audio_file"

E posso ouvir com sucesso o som no meu laptop com Windows.

Até aí tudo bem.
Agora quando eu faço hciconfig -a

pacotes acl aumentaram, mas sco permaneceu em 0

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

Será que esta prova de que o áudio está funcionando, mas não via sco?

  1. Descobri que não tenho driver btsco ou hcid.conf file. Você acha que isso poderia ser um problema?

  2. se meu áudio estiver funcionando via sco alguém poderia me fornecer um exemplo de como testar via hcidump ?

  3. como fazer um loop de volta ao master?

por samprat 29.09.2014 / 12:47

1 resposta

0

Depois de alguns dias de luta com o Ubuntu falhando frequentemente, finalmente funcionou.

Abaixo estão os passos que tentei. Por favor, tome isso como referência, pois há grandes chances de eu ter esquecido de escrever alguns passos

............................................... .................................................. .. Visão geral de um problema: Tentando conectar o sistema operacional Linux ao fone de ouvido BT e estabelecer um link para reproduzir música

Configuração do UBuntu: Versão do kernel: 3.0.0-32-generic Ubuntu Verion - > 11.10

Dispositivo de teste: fone de ouvido JABRA EASY GO .. .................................................. ............................ 1) Instale a versão acima do Ubuntu. Essa versão do Ubuntu está sem suporte, mas como o meu dispositivo interno usa quase a mesma versão do kernel, eu fiquei com essa versão.

2) Configure a lista de fontes do apt-get. Como a versão instalada está fora de suporte, o apt-get não funcionará. Para fazê-lo funcionar, modifique o /etc/apt/sources.list. exemplo- >

sudo sed -i-e / 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) Eu recomendaria instalar o synaptic também para instalar pacotes e bibliotecas ausentes.

4) Instale os seguintes pacotes - >

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

5) Google para baixar o código-fonte da btsco ou, alternativamente,

use o seguinte comando

cvs -d: pserver: [email protected]: / cvsroot / login-bluetooth-alsa cvs -d: pserver: [email protected]: / cvsroot / bluetooth-alsa co btsco 6) AGORA COMPILING E INSTALANDO

i) vá para o diretório btsco

ii) problemas ./bootstrap: se erro / aviso: macro 'AM_PATH_SDL' não encontrado na biblioteca install libbsdl1.2-dev

uma vez que o bootsrap passou, execute configure ii) ./configure issues:

se bluetooth / bluetooth .h faltando - > instale o libbluetooth-dev exigência de pacote dbus-1 > = 0,36 não atende & dbus-glib não encontrado - > install libdbus-glib-1-dev iii) fazer

problemas: ./libtool: linha 841: X - tag = CXX: comando não encontrado e muitos mais erros como este

Para resolver esse erro: faça o download da bola tar da libtool-1.5.24. extraí-lo e configurar e fazer. Agora, novamente, configure no btsco e copie o libtool executável do libtool dir para btsco.

iv) make install v) make O / p do mainatiner-clean: o btsco é construído com sucesso e você pode encontrá-lo em / usr / local / bin.

7) Criar módulo do Kernel

i) cd / usr / src / btsco / kernel

ii) faça

problemas: Eu suponho que você terá uma lista enorme de erros. abra btsco.c e lidar com cada erro passo a passo

1 erro som / driver.h não foi encontrado bla bla - > comentar isso no arquivo btsco.c 2 comentário #incluir como isso é obsoleto agora 3) adicione

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

5) snd_assert é obsoleto, então substitua uit por se o exemplo de instrução

if (bt_sco- > reprodução == NULL) {

6) substitua kill_proc (novamente obsoleto) por função abaixo de 9 copiados de net .. tahnks para esse cara) link: link

int my_kill_proc (pid_t pid, int sig) {     int erro = -ESRCH; / * valor de retorno padrão /     struct task_struct p;     struct task_struct * t = NULL;     struct pid * pspid;     rcu_read_lock ();     p = & init_task; / * start at init /     Faz {         if (p- > pid == pid) {/ o pid (não tgid) coincide? /         t = p;
        pausa;         }     p = next_task (p); /
"esta não é a tarefa que você procura" /     } while (p! = & init_task); / pare quando voltarmos ao init * /     if (t! = NULL) {         pspid = t- > pids [PIDTYPE_PID] .pid;         if (pspid! = NULL) erro = kill_pid (pspid, sig, 1);     }     rcu_read_unlock ();     erro de retorno; } e então, em vez de kill_proc, deve ser

my_kill_proc (bt_sco- > thread_pid, SIGINT)
6) substitua% d para% lu por erro long int

7) substitua lock_kernal por mutex_lock (& os_mutex) mesmo para desbloquear

esperamos que o sucesso seja bem sucedido depois disso

8) faça a instalação 9) depmod -e 10 0 make clean

11) modprobe snd_bt_sco

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

Agora execute o btsco

a) hciconfig hci0 voz 0X0060

b) varredura hcitool

obtenha o mac_addre4ss do JABRA

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

se obtiver erro?: control open (hw: 1), então o jabra não suporta sco ou o módulo do kernel não está carregado

d) em outro terminal fazer - > sudo hcidump -i hci0 sco para monitorar pacotes de sco

e) uma vez estabelecida a conexão jabr, rode aplay -D plughw: Headset /home/my_home_dir/my_sample_fiile.wav

    
por 21.10.2014 / 18:00