День добрый.
Есть гарнитура с 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 причин.
Здравствуйте, kov_serg, Вы писали:
_>Здравствуйте, k55, Вы писали:
k55>>День добрый. k55>>Есть гарнитура с bluetooth хочется в программке получить звук с микрофона. _>Тут смотрели https://wiki.archlinux.org/index.php/Bluetooth_headset
Спасибо.
Конкретно эту статью я видел. Видел подобную на этом же сайте (по крайней мере оформление такое же).
Но у меня проблема с PulseAudio. Точнее при попытке законектить устройство возникала ошибка, согласно описанию проблема с pulseaudio. Дело в том что по умолчанию на линуксовом устройстве не стоит pulseaudio. Я его устанавливал руками, но при старте сервиса возникала ошибка и собственно ничего не работало.
Я подумал что PulseAudio занимается выводом wave на динамики (ошибаюсь?) то может можно получить wave данные минуя pulseaudio.
Если есть желание — найдется 1000 возможностей.
Если нет желания — найдется 1000 причин.
Самые последние версии Bluez не поддерживают профили Headset/Handsfree. Это означает, что не будет работать микрофон, а также на гарнитурах, не поддерживающих профиль A2DP, не будет работать звук. Если вы хотите использовать гарнитуру через профили Headset/Handsfree, вам придётся пользоваться старыми методами, которым требуется установка некоторых пакетов
В итоге поставил 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 причин.
strace помог обнаружить что sbc библиотеки небыло.
С этим вопрос решен.
Имею гарнитуру подключеную к устройству.
Теперь вопрос: как заставить гарнитуру вещать звук из микрофона?
Я делаю parec -r -device=имя_звукового_монитора и я ни чего не вижу в stdout.
Я правильно понимаю что хост должен послать RING в гарнитуру и тогда нажимаешь кнопку на гарнитуре и говоришь.
Если так, то как имитровать звонок?
p.s.
В другом подфоруме спрашивать?
Если есть желание — найдется 1000 возможностей.
Если нет желания — найдется 1000 причин.