Ошибка Bluetooth при попытке использовать наушники Pixel Pro 2

Вопрос или проблема

Я пытался настроить это сначала на Ubuntu 22.04, а теперь на Mint 22.1. На обеих платформах я использую рабочий стол xfce. Я столкнулся с проблемой как при использовании pulse audio, так и под pipewire. Я использовал как bluetoothctl, так и blueman, чтобы попытаться управлять устройством с переменными результатами.

Симптомы: я могу подключить устройство к любой из платформ, используя и bluetoothctl, и blueman. Проблема в том, что как только я перезагружаю, устройство больше не может подключиться. Я все еще вижу устройство в инструментах, но подключение завершается ошибкой “Failed to connect: org.bluez.Error.Failed br-connection-create-socket.”. Если я попробую просмотреть устройство с помощью “pactl list”, карты там нет. Если я удаляю устройство через bluetoothctl и повторяю процесс сопряжения, тогда все снова работает, и я могу видеть устройство как карту в выводе “pactl list”. Обратите внимание, что я могу сопрягать, подключать, доверять и просматривать устройство как в bluetoothctl, так и в blueman, но после перезагрузки единственный способ восстановления — это удалить устройство и повторить процесс сопряжения.

Я экспериментировал с добавлением и удалением pipewire, pipewire-pulse, wireplumber и pulseaudio. Одно общее во всем этом — это версия bluez. Команда “dpkg -l | grep bluez” показывает, что я использую версию 5.7.2. Некоторые из моих поисков указывают на изменение где-то после 5.6.1 для исправления CVE, что может быть частью проблемы. Я также подозреваю, что это может быть связано с использованием xfce и временем загрузки сервера X в связи с тем, когда загружаются модули bluez.

Любая помощь или предложения по решению этой проблемы были бы признательны. Кажется, есть довольно много тем на различных форумах, связанных с этой проблемой, так что я подозреваю, что это ошибка в библиотеке bluez, которая потребует какого-то исправления. Я был бы даже рад найти способ понизить версию до предыдущей версии bluez, но это, похоже, не является вариантом. Я загрузил синтаксический диспетчер пакетов в Mint, и он показывает только версию 5.7.2 bluez, доступную для платформы Mint.

На данный момент единственное решение, которое я смог придумать, это удалить устройство и повторить процесс сопряжения каждый раз, когда мне нужно перезагрузиться. Обратите внимание, что даже после сопряжения у меня все еще есть проблемы с поддержанием привязки устройства к правильному профилю, и я в итоге добавил файл правил в /etc/udev/rules.d для вызова сценария для назначения правильного профиля карты в pactl каждый раз, когда я вижу событие добавления устройства.

файл правил:

ACTION=="add", SUBSYSTEM=="input", ATTR{id/vendor}=="00e0", ATTR{id/product}=="3005", RUN+="/home/<пользователь>/bin/setearbudprofile.sh"

Команда обновления в setearbudprofile.sh

sudo -u '#1000' XDG_RUNTIME_DIR=/run/user/1000 \
    pactl set-card-profile bluez_card.5C_33_7B_6C_E9_49 handsfree_head_unit

Вывод из pactl list (только bluetooth-карта)

Карта #4
    Имя: bluez_card.5C_33_7B_6C_E9_49
    Драйвер: module-bluez5-device.c
    Владелец модуля: 25
    Свойства:
        device.description = "Pixel Buds Pro 2"
        device.string = "5C:33:7B:6C:E9:49"
        device.api = "bluez"
        device.class = "sound"
        device.bus = "bluetooth"
        device.form_factor = "headset"
        bluez.path = "/org/bluez/hci0/dev_5C_33_7B_6C_E9_49"
        bluez.class = "0x244404"
        bluez.alias = "Pixel Buds Pro 2"
        bluetooth.battery = "100%"
        device.icon_name = "audio-headset-bluetooth"
        device.intended_roles = "phone"
        bluetooth.codec = "mSBC"
    Профили:
        a2dp_sink: Высококачественное воспроизведение (A2DP Sink) (приемников: 1, источников: 0, приоритет: 40, доступно: да)
        handsfree_head_unit: Устройство Handsfree (HFP) (приемников: 1, источников: 1, приоритет: 30, доступно: да)
        off: Выкл (приемников: 0, источников: 0, приоритет: 0, доступно: да)
    Активный профиль: handsfree_head_unit
    Порты:
        headset-output: Гарнитура (тип: Гарнитура, приоритет: 0, задержка: 0 мкс, доступно)
            Часть профилей: a2dp_sink, handsfree_head_unit
        headset-input: Гарнитура (тип: Гарнитура, приоритет: 0, задержка: 0 мкс, доступно)
            Часть профилей: handsfree_head_unit

Ответ или решение

Введение:

Каждый современный пользователь технологий может столкнуться с проблемой несовместимости устройств, особенно когда дело касается Bluetooth-устройств и операционных систем на базе Linux. Вопрос о неполадках Bluetooth при использовании наушников Pixel Pro 2 с настольными системами Linux достаточно распространен и требует профессионального подхода. На основе вашего описания проблемы, вы являетесь опытным пользователем, который уже предпринял ряд эффективных шагов для решения своей проблемы. Ниже я представлю теоретическое понимание вашей проблемы, конкретные примеры подобных ситуаций и предложу дальнейшие практические шаги для вашей ситуации.

Теория:

Bluetooth, как технология, полагается на стек протоколов, который может варьироваться в зависимости от устройства и операционной системы. На Linux, взаимодействие с Bluetooth можно осуществить с помощью нескольких инструментов: bluez (основной стек протоколов Bluetooth), bluetoothctl (интерактивный интерфейс для управления Bluetooth) и blueman (графический интерфейс для управления Bluetooth). Столкновение различных версий программного обеспечения и драйверов может вызывать конфликты и нестабильное поведение устройства.

Одной из причин нестабильной работы Bluetooth после перезагрузки может быть способ, которым хранятся и обновляются конфигурации. Операционные системы на базе Linux зависят от служб и демонов, которые могут стартовать в определенной последовательности. Проблемы с BlueZ могут быть связаны с версией 5.7.2, некоторыми изменениями после патча безопасности в версии 5.6.1 или неправильно загружаемыми модулями на старте системы.

Пример:

Вы упомянули, что на двух платформах (Ubuntu 22.04 и Mint 22.1 с рабочей средой xfce) у вас возникает одна и та же проблема. Это указывает на системную причину, возможно, связанную с самим ядром Bluetooth или комбинацией с вашей конкретной конфигурацией оборудования. Вы также отметили, что проблема сохраняется независимо от использования PulseAudio или PipeWire, что наводит на мысль о глубоком уровне Bluetooth и BlueZ.

Применение и рекомендации:

  1. Проверка и обновление драйверов:

    • Убедитесь, что все системные пакеты и обновления установлены, включая ядро и все модули, связанные с Bluetooth.
    • Командой lsusb и lspci проверьте, правильно ли определяется Bluetooth-адаптер.
  2. Управление службами:

    • Проверьте статус службы Bluetooth после перезагрузки с помощью systemctl status bluetooth. Убедитесь, что она активна и не сбоит.
    • Создайте зависимости при запуске, чтобы bluez запускался после загрузки необходимых модулей. Это может быть реализовано через systemd, корректировкой unit-файла.
  3. Конфигурационные изменения:

    • Удостоверьтесь, что конфигурация сохраняется корректно. Проверьте или создайте конфигурационный файл для bluez в /etc/bluetooth/main.conf и добавьте необходимую информацию о доверенном устройстве.
  4. Использование скриптов автоматизации:

    • Ваш подход с использованием udev-правил и скриптов в setearbudprofile.sh полезен, но требует доработки: проверьте логи udev для улучшения логики работы скрипта после срабатывания правила.
  5. Возврат к предыдущей версии:

    • Хотя вы отметили сложность в даунгрейде, попробуйте использовать PPA (Personal Package Archives) для поиска более старых версий пакетов или, если возможно, соберите более старую версию BlueZ из исходных кодов с учетом особенностей на вашей операционной системе.
  6. Устранение гипотезы о xfce:

    • Попробуйте временно переключиться на другой оконный менеджер или комбинированную среду, чтобы исключить влияние рабочих окружений.

В заключение, ваша проблема действительно может быть комплексной, требующей комбинации решений. Ваша инициатива применить автоматизацию уже оправдана, и я предложил ряд дальнейших шагов для детального диагностического подхода. Рекомендую следить за обновлениями BlueZ и соответствующих библиотек, так как разработчики активно исправляют известные баги и уязвимости.

Оцените материал
Добавить комментарий

Капча загружается...