Skip to content

A free Windows utility for managing Bluetooth audio profiles (A2DP/HFP)

License

Notifications You must be signed in to change notification settings

Yumash/A2DP-Commander

Repository files navigation

A2DP Commander

Утилита для управления Bluetooth аудио профилями (A2DP/HFP) в Windows 10/11.

Версия: 1.3.4 | Языки: Русский, English


Содержание


Проблема

При подключении Bluetooth наушников Windows создает два отдельных аудио устройства:

  1. A2DP (Advanced Audio Distribution Profile) - профиль высокого качества:

    • Стерео звук
    • Высокий битрейт (до 990 kbps с LDAC)
    • Поддержка кодеков: SBC, AAC, aptX, LDAC
    • Без микрофона
  2. HFP (Hands-Free Profile) - профиль для звонков:

    • Моно звук
    • Низкий битрейт (~64 kbps)
    • Качество как у телефонных звонков 90-х
    • С микрофоном

Почему это проблема?

Windows автоматически и часто неправильно переключается между этими профилями:

  • Открыли браузер с вкладкой, где есть микрофон? Windows переключит на HFP.
  • Запустилось какое-то приложение в фоне? Может переключить на HFP.
  • Система просто "решила" что вам нужен микрофон? Переключит на HFP.

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


Решение

A2DP Commander решает эту проблему радикально: программно отключает HFP устройство в Диспетчере устройств Windows (Device Manager).

Как это работает

  1. Программа находит ваши Bluetooth наушники
  2. Определяет связанные аудио устройства (A2DP и HFP)
  3. В режиме "Музыка" - отключает HFP устройство через SetupAPI
  4. Windows больше не может переключиться на HFP, потому что устройство отключено
  5. Вы наслаждаетесь стабильным высококачественным звуком

Режимы работы

Режим A2DP HFP Использование
Музыка Включен Отключен Прослушивание музыки, видео, игры
Звонки Включен Включен Zoom, Teams, Discord, Skype

Переключение между режимами занимает 1-2 секунды.


Новое в 1.3.4

Single Instance с автофокусом

  • При повторном запуске программа автоматически показывает окно уже запущенного экземпляра
  • Больше нет всплывающих окон "уже запущено" — просто фокус на существующем окне
  • Реализовано через Named Pipe IPC

Улучшения интерфейса

  • Убрана кнопка "Свернуть в трей" — закрытие окна делает то же самое
  • Статус External Encoder перенесён под настройки кодека с переносом по словам
  • Сокращены тексты о несовместимости адаптера для компактности
  • Версия в заголовке обновляется автоматически из Assembly

Changelog

v1.2.1
  • Автоопределение поддержки адаптера — экспериментальные функции автоматически блокируются если BT-адаптер не поддерживает LDAC/aptX HD
  • Понятные сообщения об ошибках — при попытке включить неподдерживаемую функцию показывается причина
v1.2.0
  • WiFi Coexistence — отключение конфликта Bluetooth/WiFi на 2.4GHz
  • WiFi Power Saving — отключение энергосбережения WiFi
  • Processing Period Control — управление размером аудио буфера
  • Latency Query — отображение задержки аудио в диагностике
  • LDAC/aptX кодирование через внешний USB Bluetooth трансмиттер
  • Registry Codec Forcing — изменение кодека через реестр
v1.1.0
  • Выбор Bluetooth адаптера — переключение между несколькими адаптерами
  • Определение кодека — отображение текущего кодека подключения

Подробнее в разделе Экспериментальные функции.


Экспериментальные функции

External Encoder (Внешний энкодер)

Позволяет использовать кодеки LDAC/aptX HD через внешний USB Bluetooth трансмиттер.

Как это работает

Приложение → WASAPI capture → Encoder (Rust) → USB Transmitter → Наушники

Поддерживаемые кодеки

Кодек Битрейт Качество
LDAC 990 / 660 / 330 kbps Hi-Res
aptX HD 576 kbps Высокое
aptX 352 kbps Хорошее
SBC 328 kbps Базовое

Рекомендуемые USB Bluetooth трансмиттеры

Устройство Цена Кодеки
1Mii B03Pro ~$30 aptX HD, LDAC
Avantree DG80 ~$40 aptX LL
FiiO BTA30 Pro ~$70 Все кодеки
Creative BT-W3 ~$50 aptX HD
Shanling M0 Pro ~$130 LDAC

Требования

  • Внешний USB Bluetooth трансмиттер с поддержкой нужного кодека
  • Virtual Audio Cable (VB-Audio) или аналог (опционально)

Registry Codec Forcing

Изменяет настройки реестра Windows для принудительного выбора кодека.

Важно:

  • Требует права администратора
  • Требует перезагрузки системы
  • Работает только если ваш Bluetooth адаптер поддерживает нужный кодек

Выбор Bluetooth адаптера

Если в вашей системе несколько Bluetooth адаптеров (например, встроенный Intel и внешний USB Realtek), вы можете переключаться между ними прямо из программы.

Как это работает

  1. Откройте вкладку Настройки
  2. В секции Bluetooth адаптер вы увидите список всех физических адаптеров
  3. Выберите нужный адаптер и нажмите Переключить
  4. Программа отключит все остальные адаптеры и включит выбранный

Важно знать

  • Windows поддерживает только один активный Bluetooth адаптер одновременно
  • Сопряжённые устройства НЕ переносятся между адаптерами
  • После переключения потребуется заново подключить наушники к новому адаптеру
  • Может потребоваться перезагрузка компьютера

Зачем это нужно?

Разные адаптеры поддерживают разные кодеки:

Адаптер SBC AAC aptX aptX HD LDAC
Intel (встроенный) ✓*
Realtek (USB)
Creative BT-W5
FiiO BTA30 Pro
1Mii B03Pro

*AAC на Intel часто имеет проблемы с заиканиями


Проблема с AAC на Intel адаптерах

Симптомы

Если у вас Bluetooth адаптер Intel (встроенный в большинство ноутбуков и материнских плат), вы можете столкнуться с заиканиями и прерываниями звука при использовании кодека AAC.

Это известная проблема драйверов Intel Bluetooth, которая проявляется:

  • Периодические "заикания" каждые несколько секунд
  • Короткие прерывания звука
  • Нестабильное воспроизведение

Решение

A2DP Commander позволяет отключить AAC кодек через реестр Windows:

HKLM\SYSTEM\CurrentControlSet\Services\BthA2dp\Parameters\BluetoothAacEnable = 0

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

ВАЖНО

Изменение настройки AAC требует перезагрузки компьютера!

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


MMCSS оптимизация для уменьшения запинаний

A2DP Commander может применить системные оптимизации для улучшения качества аудио через MMCSS (Multimedia Class Scheduler Service).

Что делает эта оптимизация

  1. Отключает троттлинг сети при воспроизведении аудио (NetworkThrottlingIndex = 0xFFFFFFFF)
  2. Устанавливает приоритет системы на мультимедиа (SystemResponsiveness = 0)
  3. Повышает приоритет аудио-потоков (Audio\Scheduling Category = High)

Как включить

  1. Откройте вкладку Настройки
  2. Поставьте галочку Оптимизировать MMCSS для аудио
  3. Нажмите Сохранить
  4. Перезагрузите компьютер

Когда это поможет

  • Заикания звука при активной загрузке сети
  • Прерывания при работе других приложений
  • Общее улучшение стабильности воспроизведения

Важно: задержка после подключения

После подключения Bluetooth устройства необходимо подождать 3-5 секунд, прежде чем автоматическая смена режима применится полностью.

Это связано с тем, что:

  1. Windows требуется время для инициализации всех аудио устройств
  2. Драйвер Bluetooth завершает установку соединения
  3. A2DP Commander обнаруживает устройство и применяет настройки

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


Системные требования

Для запуска

  • Windows 10 версии 1903 (сборка 18362) или новее
  • Windows 11 любой версии
  • .NET 8 Desktop Runtime - скачать с сайта Microsoft
  • Bluetooth адаптер (встроенный или внешний)
  • Bluetooth наушники с поддержкой A2DP

Для сборки

  • .NET 8 SDK
  • Rust (для encoder-service)
  • Windows 10/11 (сборка возможна только под Windows, так как используется WPF)
  • Git

Установка

Из релиза (рекомендуется)

  1. Скачайте последний релиз со страницы Releases
  2. Распакуйте архив в любую папку
  3. Запустите A2DP-Commander.exe
  4. Программа появится в системном трее (область уведомлений)
  5. При первом запуске рекомендуется включить автозапуск в настройках

Варианты сборок

  • A2DP-Commander-vX.X.X-win-x64.zip - требует установленного .NET 8 Runtime (~32 MB)
  • a2dp-encoder.exe - Rust encoder service для экспериментальных функций (~1 MB)

Сборка из исходников

Клонирование репозитория

git clone https://github.com/Yumash/A2DP-Commander.git
cd A2DP-Commander

Полная сборка (C# + Rust)

build.bat

Только C# приложение

dotnet build src/A2DPCommander/A2DPCommander.csproj -c Release

Только Rust encoder

cd encoder-service
cargo build --release

Запуск

dotnet run --project src/A2DPCommander/A2DPCommander.csproj

Публикация

dotnet publish src/A2DPCommander/A2DPCommander.csproj -c Release -r win-x64 --no-self-contained -p:PublishSingleFile=true

Использование

Основной интерфейс

После запуска программа сворачивается в системный трей. Доступные действия:

  • Левый клик на иконке - открыть главное окно
  • Правый клик на иконке - контекстное меню с быстрым переключением режима
  • Двойной клик - открыть главное окно

Иконка в трее

Иконка меняется в зависимости от состояния:

  • Синий круг - режим "Музыка", A2DP активен
  • Зеленый круг - режим "Звонки", HFP активен
  • Серый круг - устройство не подключено

Автоматическое переключение

Программа может автоматически переключаться в режим "Звонки" при запуске определенных приложений:

  • Zoom
  • Microsoft Teams
  • Discord
  • Skype
  • Google Meet
  • И другие (настраиваемый список)

Настройки

Настройки хранятся в файле settings.json в той же папке, что и программа.

Основные параметры

Параметр Описание
Bluetooth устройство Bluetooth устройство для управления
Bluetooth адаптер Выбор активного Bluetooth адаптера (если несколько)
Режим по умолчанию Музыка или Звонки при запуске
Автозапуск Запускать программу при старте Windows
Уведомления Показывать уведомления при переключении
Автопереключение по приложениям Переключать режим при запуске Zoom и т.д.
Отключить улучшения Windows Отключить DSP-эффекты для чистого звука
Оптимизировать MMCSS Системные оптимизации для аудио (требует перезагрузки)

Экспериментальные функции

Параметр Описание
LDAC Registry Форсирование кодека через реестр (требует перезагрузки)
External Encoder Использование внешнего USB трансмиттера с LDAC/aptX

Правила приложений

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


Поддержать проект

Если A2DP Commander оказался вам полезен, вы можете поддержать разработку:

BTC: 1BkYvFT8iBVG3GfTqkR2aBkABNkTrhYuja

Любая поддержка помогает развивать проект и добавлять новые функции!


Лицензия

Проект распространяется под лицензией MIT.

Это означает, что вы можете свободно:

  • Использовать программу в любых целях
  • Изменять исходный код
  • Распространять измененные версии
  • Использовать в коммерческих проектах

При условии сохранения текста лицензии и указания авторства.

Полный текст лицензии находится в файле LICENSE.

Лицензии зависимостей

  • libldac (encoder-service) - Apache 2.0
  • libopenaptx (encoder-service) - GPLv3

Авторы

About

A free Windows utility for managing Bluetooth audio profiles (A2DP/HFP)

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages