Bluez (bluetoothd) не отправляет DBUS method_call Выберите конфигурацию при подключении? Если так, как я могу поймать это?

ОБНОВЛЕНИЕ: еще не решено, но часть решения. Увидеть ниже.

Я пытаюсь подключить свой iPod или другое интеллектуальное устройство к ноутбуку (Kubuntu 13.10) через Bluetooth и транслировать музыку в формате a2dp на динамик Bluetooth. Не берите в голову, почему я не соединяю их непосредственно. У меня было много проблем с подключением устройств, а затем подключением одновременно, но теперь я могу это сделать. Существует миллион сообщений, описывающих различные способы подключения BT-гарнитур путем изменения .asoundrc, /etc/bluetooth/audio.conf и загрузка loopback модуль через контроллер PulseAudio. Однако я никогда не мог заставить PulseAudio последовательно загружать источники и приемники, поэтому я оставил эту идею и начал читать эту замечательную статью Джеймса Б.: Bluez A2DP AudioSink для ALSA

Я получил скомпилированный код. Он использует (более новый?) DBus API для BlueZ. Следуя его инструкциям, я смог передать музыку на "сервер" a2dp или из него, но звука нет. В коде он ждет двух вызовов метода DBUS, SelectConfiguration а также SetConfiguration для того, чтобы получить "транспорт", который я считаю дескриптором или дескриптором файла, который описывает, куда аудио должно идти в / из. Однако обработчики этих событий никогда не вызываются. Я настроил dbus-monitor прослушивать на системной шине эти звонки, используя это руководство DebuggingDBus. Однако вызовы метода не отображаются. С другой стороны, я попытался прослушать ЛЮБЫЕ вызовы методов на системной шине, и есть некоторые, которые не показывают в dbus-monitor, что, как я знаю, вызывают. (т.е. RegisterEndpoint)

Я вижу сигналы от org.bluez, но нет вызовов методов. При беге bluetoothd в подробном режиме я получаю что-то вроде этого при подключении устройства:

bluetoothd[12118]: audio/a2dp.c:setup_ref() 0x7f9e8ffbdac0: ref=2
bluetoothd[12118]: audio/avdtp.c:avdtp_set_configuration() 0x7f9e8ffd03f0: int_seid=1, acp_seid=1
bluetoothd[12118]: audio/a2dp.c:setup_unref() 0x7f9e8ffbdac0: ref=1 
bluetoothd[12118]: audio/avdtp.c:session_cb()
bluetoothd[12118]: audio/avdtp.c:avdtp_parse_resp() SET_CONFIGURATION request succeeded
bluetoothd[12118]: audio/a2dp.c:setconf_cfm() Source 0x7f9e8ffa4600: Set_Configuration_Cfm
bluetoothd[12118]: audio/avdtp.c:avdtp_sep_set_state() stream state changed: IDLE -> CONFIGURED
bluetoothd[12118]: audio/avdtp.c:session_cb()
bluetoothd[12118]: audio/avdtp.c:avdtp_parse_resp() OPEN request
succeeded

но на другом посте я увидел, что у кого-то было такое:

bluetoothd[8315]: audio/a2dp.c:setup_ref() 0x7f1f8300b000: ref=2 <br/>
bluetoothd[8315]: audio/avdtp.c:avdtp_set_configuration() 0x7f1f83012250: int_seid=2, acp_seid=1
bluetoothd[8315]: audio/a2dp.c:setup_unref() 0x7f1f8300b000: ref=1
bluetoothd[8315]: audio/avdtp.c:session_cb()
bluetoothd[8315]: audio/avdtp.c:avdtp_parse_resp() SET_CONFIGURATION request succeeded
bluetoothd[8315]: audio/a2dp.c:setconf_cfm() Sink 0x7f1f82fc3210: Set_Configuration_Cfm
**
bluetoothd[8315]: audio/media.c:media_endpoint_async_call() Calling SetConfiguration: name = :1.65 path = /MediaEndpoint/A2DPSink
**
bluetoothd[8315]: audio/avdtp.c:avdtp_sep_set_state() stream state changed: IDLE -> CONFIGURED
bluetoothd[8315]: audio/avdtp.c:session_cb()
bluetoothd[8315]: audio/avdtp.c:avdtp_parse_resp() OPEN request succeeded

На данный момент у меня есть две теории:

  1. BlueZ не отправляет это на шину, которую я смотрю, когда мое устройство подключено.
  2. Я не смотрю правильно (сделать method_calls также необходимо добавить с dbus_bus_add_match ()?)

Мне трудно поверить во второй, так как код Джеймса Б. работал для него, а я не модифицировал его. Я использую bluez версии 4.101. (думаю, так же, как и он) Трудно найти точные условия, при которых BlueZ вызывает эти методы.

Мой системный журнал говорит что-то вроде этого, когда я запускаю программу:

bluetoothd[8519]: Endpoint registered: sender=:1.166 path=/MediaEndpoint/A2DPSource

и отменяет регистрацию при выходе из программы.

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

ОБНОВЛЕНИЕ: Немного смущает, но сегодня я ломал голову над тем, почему LINUX SYSTEM не может получить дескриптор файла... хммм... поэтому я добавил sudo к вызову программы (программа a2dp-alsa Джеймса Б.), и это сработало, По крайней мере, для устройства ввода. По-прежнему ничего для вывода (BT-динамик), но я постараюсь это выяснить в ближайшее время и выложить результат здесь.

0 ответов

Другие вопросы по тегам