Работа с Bluetooth устройством в Linux
От: k55 Ниоткуда  
Дата: 04.01.17 15:54
Оценка:
День добрый.
Есть гарнитура с bluetooth хочется в программке получить звук с микрофона.

С bluetooth опыта работы нет. И нет полного понимания что и как там работает.

Обязательно ли использовать bluez через dbus и производить регистрацию своих UUID сервисов?
Есть ли примеры как можно запросить звук у устройства используя сокеты?

  Описание устройства
Service Name: Hands-Free unit
Service RecHandle: 0x10000
Service Class ID List:
"Handsfree" (0x111e)
"Generic Audio" (0x1203)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 1
Language Base Attr List:
code_ISO639: 0x656e
encoding: 0x6a
base_offset: 0x100
Profile Descriptor List:
"Handsfree" (0x111e)
Version: 0x0106

Service Name: Headset
Service RecHandle: 0x10001
Service Class ID List:
"Headset" (0x1108)
"" (0x1131)
"Generic Audio" (0x1203)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 2
Language Base Attr List:
code_ISO639: 0x656e
encoding: 0x6a
base_offset: 0x100
Profile Descriptor List:
"Headset" (0x1108)
Version: 0x0102

Service RecHandle: 0x10002
Service Class ID List:
"Audio Sink" (0x110b)
Protocol Descriptor List:
"L2CAP" (0x0100)
PSM: 25
"AVDTP" (0x0019)
uint16: 0x0102
Profile Descriptor List:
"Advanced Audio" (0x110d)
Version: 0x0102


Service RecHandle: 0x10003
Service Class ID List:
"AV Remote" (0x110e)
"AV Remote Controller" (0x110f)
Protocol Descriptor List:
"L2CAP" (0x0100)
PSM: 23
"AVCTP" (0x0017)
uint16: 0x0103
Profile Descriptor List:
"AV Remote" (0x110e)
Version: 0x0104

Service RecHandle: 0x10004
Service Class ID List:
"AV Remote Target" (0x110c)
Protocol Descriptor List:
"L2CAP" (0x0100)
PSM: 23
"AVCTP" (0x0017)
uint16: 0x0103
Profile Descriptor List:
"AV Remote" (0x110e)
Version: 0x0104
Если есть желание — найдется 1000 возможностей.
Если нет желания — найдется 1000 причин.
Отредактировано 04.01.2017 16:35 k55 . Предыдущая версия .
linux bluetooth microphone
Re: Работа с Bluetooth устройством в Linux
От: kov_serg Россия  
Дата: 04.01.17 16:36
Оценка:
Здравствуйте, k55, Вы писали:

k55>День добрый.

k55>Есть гарнитура с bluetooth хочется в программке получить звук с микрофона.
Тут смотрели https://wiki.archlinux.org/index.php/Bluetooth_headset
Re[2]: Работа с Bluetooth устройством в Linux
От: k55 Ниоткуда  
Дата: 04.01.17 16:58
Оценка:
Здравствуйте, kov_serg, Вы писали:

_>Здравствуйте, k55, Вы писали:


k55>>День добрый.

k55>>Есть гарнитура с bluetooth хочется в программке получить звук с микрофона.
_>Тут смотрели https://wiki.archlinux.org/index.php/Bluetooth_headset
Спасибо.
Конкретно эту статью я видел. Видел подобную на этом же сайте (по крайней мере оформление такое же).
Но у меня проблема с PulseAudio. Точнее при попытке законектить устройство возникала ошибка, согласно описанию проблема с pulseaudio. Дело в том что по умолчанию на линуксовом устройстве не стоит pulseaudio. Я его устанавливал руками, но при старте сервиса возникала ошибка и собственно ничего не работало.

Я подумал что PulseAudio занимается выводом wave на динамики (ошибаюсь?) то может можно получить wave данные минуя pulseaudio.
Если есть желание — найдется 1000 возможностей.
Если нет желания — найдется 1000 причин.
Re[3]: Работа с Bluetooth устройством в Linux
От: kov_serg Россия  
Дата: 04.01.17 17:11
Оценка:
Здравствуйте, k55, Вы писали:

Может в этом косяк https://wiki.archlinux.org/index.php/Bluetooth_headset_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)

Самые последние версии Bluez не поддерживают профили Headset/Handsfree. Это означает, что не будет работать микрофон, а также на гарнитурах, не поддерживающих профиль A2DP, не будет работать звук. Если вы хотите использовать гарнитуру через профили Headset/Handsfree, вам придётся пользоваться старыми методами, которым требуется установка некоторых пакетов

Re: Работа с Bluetooth устройством в Linux
От: k55 Ниоткуда  
Дата: 18.01.17 16:04
Оценка:
В итоге поставил Pulseaudio. Оно регистрирует HSP в SDP сервере.
Гарнитура пытается подключиться и отваливается.

[CHG] Device FC:58:FA:12:C4:E3 Connected: yes
[bluetooth]# bluetoothd[31122]: Endpoint unregistered: sender=:1.112 path=/MediaEndpoint/A2DPSource
bluetoothd[31122]: Endpoint unregistered: sender=:1.112 path=/MediaEndpoint/A2DPSink
[CHG] Controller 5C:F3:70:68:B2:B6 Class: 0x040000
[CHG] Controller 5C:F3:70:68:B2:B6 UUIDs has unsupported type
[CHG] Controller 5C:F3:70:68:B2:B6 Class: 0x000000
[CHG] Controller 5C:F3:70:68:B2:B6 UUIDs has unsupported type
[CHG] Controller 5C:F3:70:68:B2:B6 UUIDs has unsupported type
[CHG] Device FC:58:FA:12:C4:E3 Connected: no


После чего pulseaudio помирает. В логах ничего толком нет. Не понятно "UUIDs has unsupported type" потому что pulseaudio помирло или нет.

Properties changed in device /org/bluez/hci0/dev_FC_58_FA_12_C4_E3
dbus: path=/Profile/HSPAGProfile, interface=org.bluez.Profile1, member=NewConnection
dbus: NewConnection path=/org/bluez/hci0/dev_FC_58_FA_12_C4_E3, fd=20
Transport /org/bluez/hci0/dev_FC_58_FA_12_C4_E3/fd20 state changed from disconnected to idle
Loading module-bluez5-device path=/org/bluez/hci0/dev_FC_58_FA_12_C4_E3


Вот нашел ошибку:
Inconsistency detected by ld.so: dl-open.c: 678: _dl_open: Assertion `_dl_debug_initialize (0, args.nsid)->r_state == RT_CONSISTENT' failed!

И чего с ней делать не догоняю.
Если есть желание — найдется 1000 возможностей.
Если нет желания — найдется 1000 причин.
Отредактировано 18.01.2017 17:57 k55 . Предыдущая версия .
Re[2]: Работа с Bluetooth устройством в Linux
От: k55 Ниоткуда  
Дата: 19.01.17 14:43
Оценка:
k55>Вот нашел ошибку:
k55>Inconsistency detected by ld.so: dl-open.c: 678: _dl_open: Assertion `_dl_debug_initialize (0, args.nsid)->r_state == RT_CONSISTENT' failed!

strace помог обнаружить что sbc библиотеки небыло.
С этим вопрос решен.

Имею гарнитуру подключеную к устройству.

Теперь вопрос: как заставить гарнитуру вещать звук из микрофона?
Я делаю parec -r -device=имя_звукового_монитора и я ни чего не вижу в stdout.
Я правильно понимаю что хост должен послать RING в гарнитуру и тогда нажимаешь кнопку на гарнитуре и говоришь.
Если так, то как имитровать звонок?


p.s.
В другом подфоруме спрашивать?
Если есть желание — найдется 1000 возможностей.
Если нет желания — найдется 1000 причин.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.