Беспроводные наушники по Bluetooth долгие годы оставались на Linux источником разочарований: то звук грубый и плоский, то микрофон не работает, то при входящем звонке всё рассыпается. Современный звуковой движок Linux эту картину преобразил, превратив беспроводной звук из лотереи в предсказуемо работающую вещь. Он относится к Bluetooth как к полноправному гражданину системы и из коробки поддерживает все основные кодеки передачи звука, не требуя на большинстве свежих дистрибутивов установки дополнительных пакетов. Тот, кто подключает наушники к актуальной системе, чаще всего получает приличный звук сразу, без танцев с бубном.

И всё же, чтобы выжать из наушников максимум, полезно понимать, как устроена работа кодеков и профилей. Грубый звук вместо ожидаемого качественного нередко означает, что система откатилась на базовый кодек вместо продвинутого, и это лечится явным выбором. А поведение при звонках, когда наушники должны переключаться между режимом высокого качества для музыки и режимом с микрофоном для разговора, тоже имеет свои тонкости. Разобраться в кодеках, профилях и переключении между ними стоит каждому, кто всерьёз слушает музыку или общается в наушниках на Linux.

Что такое кодеки и профили и почему от них зависит звук

Звук по Bluetooth передаётся в сжатом виде, и кодек это и есть способ сжатия. Базовый кодек поддерживается всеми устройствами и работает всегда, но жмёт грубовато, отчего музыка теряет в детальности. Продвинутые кодеки сжимают качественнее и передают больше деталей, но поддерживаются не всеми устройствами, и обе стороны, наушники и компьютер, должны уметь один и тот же кодек, чтобы им воспользоваться. Современный движок поддерживает широкий набор кодеков, от базового до продвинутых вариантов с высоким битрейтом.

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

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

Как проверить и выбрать кодек

Первым делом полезно узнать, какой кодек используется прямо сейчас и какие вообще доступны для подключённых наушников. Список карт со сведениями о кодеках выдаёт служебная утилита управления звуком.

pactl list cards | grep -i "codec\|Active Profile"

Эта команда показывает активный профиль и доступные кодеки для звуковых карт, включая беспроводные наушники. Если в активном кодеке значится базовый вариант, хотя наушники умеют большее, это и есть причина грубого звука. Полный перечень профилей с кодеками виден без фильтра, и по нему понятно, что вообще можно выбрать.

Сменить кодек на лету помогает установка профиля карты с нужным вариантом. Имя профиля берут из вывода предыдущей команды, потому что точное написание зависит от системы.

pactl set-card-profile bluez_card.XX_XX_XX_XX_XX_XX a2dp-sink-ldac

Здесь профиль наушников переключается на продвинутый кодек высокого качества, и звук сразу становится детальнее. Вместо набора из иксов подставляют реальный адрес устройства, а имя профиля сверяют с тем, что показала система. Этот разовый способ удобен для проверки, но при следующем подключении наушники могут снова скатиться к базовому кодеку.

Как закрепить предпочтительный кодек навсегда

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

# правило менеджера сессий для порядка кодеков
monitor.bluez.properties = {
    bluez5.codecs = [ ldac aptx_hd aptx aac sbc ]
    bluez5.enable-sbc-xq = true
}

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

systemctl --user restart wireplumber

После перезапуска и повторного подключения наушников система будет сама выбирать лучший доступный кодек по заданному порядку. Это избавляет от ручного переключения и гарантирует, что качественные наушники не будут зря работать на базовом кодеке из-за неудачной первой попытки договориться.

Стоит знать про коварную особенность некоторых наушников. Отдельные модели в фирменном приложении имеют настройку приоритета соединения, и если там выбран приоритет стабильности связи вместо приоритета качества звука, наушники сами отказываются предлагать продвинутые кодеки, упорно держась за базовый. В таком случае никакие настройки на стороне компьютера не помогут, пока в приложении наушников не переключат приоритет на качество звука. Это тонкость на стороне устройства, а не системы.

Чем отличается поведение при звонках от старого звукового движка

Отдельная история разворачивается вокруг автоматического переключения профилей при звонках. Старый звуковой движок переключался между профилем высокого качества и профилем гарнитуры сам, реагируя на входящий звук: пришёл звонок, наушники перешли в режим с микрофоном, звонок закончился, вернулись к качественному звуку. Современный движок ведёт себя иначе и по умолчанию не делает такого автоматического переключения в ответ на события ввода.

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

Для многих практичнее не полагаться на автопереключение вовсе, а сознательно выбрать одну стратегию. Если наушники нужны прежде всего для музыки, профиль гарнитуры с его убогим звуком можно вообще отключить, оставив только качественный профиль, и тогда система никогда не свалится в плохой звук. Если же главное это звонки и микрофон, мирятся с профилем гарнитуры как с неизбежностью. Такой осознанный выбор стратегии надёжнее, чем надежда на безупречное автопереключение.

Задержка звука и борьба с заиканиями

Помимо качества звука у беспроводных наушников есть второй важный параметр, о котором часто забывают, это задержка. Между моментом, когда система отправляет звук, и моментом, когда его слышно в наушниках, проходит ощутимое время, и при просмотре видео это выливается в рассинхрон звука и картинки. Разные кодеки дают разную задержку: продвинутые кодеки высокого качества нередко добавляют больше задержки, чем базовый, потому что тратят время на тщательное сжатие. Получается ещё один компромисс: звук детальнее, но отстаёт сильнее.

Для музыки задержка не важна, ведь синхронизировать звук не с чем, а вот для видео и игр она критична. Многие проигрыватели и видеоплатформы умеют сами подстраивать картинку под задержку звука, компенсируя рассинхрон, но не все. Если губы на видео заметно расходятся со звуком, причиной часто бывает именно высокая задержка выбранного кодека, и иногда ради синхронности осознанно выбирают кодек попроще с меньшей задержкой, жертвуя долей качества звука.

Отдельная распространённая беда это периодические заикания и прерывания звука, особенно в людных местах с обилием беспроводных сетей. Bluetooth работает в перегруженном радиодиапазоне, и помехи от соседних устройств рвут поток. В системном журнале при этом мелькают сообщения о том, что приёмник не успевает за потоком. Бороться с заиканиями помогает переход на чуть менее требовательный кодек, который устойчивее к помехам, либо сокращение расстояния до источника и устранение преград между наушниками и компьютером. Тут продвинутый кодек высокого битрейта оказывается палкой о двух концах: звук лучше, но к помехам он чувствительнее, и в шумной эфирной обстановке базовый кодекможет звучать стабильнее без разрывов.

Как проверить работу микрофона и переключение режимов

Отдельно стоит убедиться, что микрофон наушников вообще работает, ведь это частая точка отказа. После переключения на профиль гарнитуры микрофон должен появиться среди источников звука системы, и его наличие проверяют служебной утилитой.

pactl list sources short | grep -i bluez

Эта команда показывает источники звука, связанные с беспроводным устройством, и если среди них есть вход с наушников, микрофон доступен. Если же его нет, значит, наушники не перешли в профиль гарнитуры, и его выбирают вручную через установку профиля карты. Стоит помнить, что в профиле гарнитуры звук в наушниках резко портится, и это не поломка, а неизбежная плата за двусторонний канал с микрофоном.

Известна и специфическая загвоздка с отдельными моделями, у которых микрофон не работал до перехода на современный движок, а после перехода заработал, но иногда ценой пропажи качественного профиля. Лечится это сбросом сопряжения: старые данные о сопряжении удаляют, а наушники подключают заново, после чего движок заново договаривается о профилях уже корректно. Такой сброс и повторное сопряжение часто чинят запутанные случаи, когда профили ведут себя странно после долгой истории подключений.

Чтобы привести беспроводные наушники в порядок, удобно держаться такой последовательности:

  1. Подключить наушники и проверить активный кодек служебной утилитой, убедившись, что это не базовый вариант;
  2. При грубом звуке переключить кодек на продвинутый разовой командой для проверки эффекта;
  3. Закрепить порядок предпочтения кодеков в настройках менеджера сессий и перезапустить его;
  4. Проверить в фирменном приложении наушников, что выбран приоритет качества звука, а не стабильности связи;
  5. Определиться со стратегией для звонков, отключив профиль гарнитуры при упоре на музыку или смирившись с ним при упоре на разговоры.

Стоит держать в уме фундаментальный компромисс беспроводного звука. Качественный звук и рабочий микрофон одновременно в полном качестве недостижимы из-за ограничений самого Bluetooth, и это не недостаток Linux, а свойство технологии, общее для всех систем. Современный движок лишь даёт удобные рычаги управления этим компромиссом, но отменить его не в силах.

Что в итоге запомнить

Современный звуковой движок Linux превратил беспроводные наушники из мучения в предсказуемо работающую вещь, поддерживая все основные кодеки из коробки на большинстве свежих систем. Грубый звук почти всегда означает откат на базовый кодек, и лечится это явным выбором продвинутого кодека и закреплением порядка предпочтений в настройках менеджера сессий. Иногда виновником оказывается сама наушниковая настройка приоритета связи, которую правят в фирменном приложении.

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