Беспроводной звук. Часть 1. Препарируем Bluetooth / Хабр

Беспроводной звук. Часть 1. Препарируем Bluetooth / Хабр Роботы

Беспроводной звук. часть 1. препарируем bluetooth

Беспроводной звук. Часть 1. Препарируем Bluetooth / Хабр

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

Это случилось со мной во время обзора потребительской беспроводной Bluetooth-колонки Klipsch KMC 3 с r3s. Я обнаружил, что “беспроводной” аудиопоток прерывался каждый раз, когда я перемещал источник за спину. Другая аудиосистема Bluetooth в той же ситуации вела себя гораздо лучше, чем та, которую я использовал. Решение этой проблемы вылилось в погружение в детали протокола Bluetooth и его применения для передачи звука.

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

Оставьте в стороне (или перенесите в комментарии) споры на тему “зачем нам нужна беспроводная потоковая передача звука, если альтернативой являются ортодоксальные проводные решения, экономящие кучу денег и выигрывающие в качестве”. Беспроводная потоковая передача звука с любого устройства, портативного или не очень, дает следующие преимущества:

  1. Воспроизведение аудио с мобильных устройств (Google Music iTunes Match = вся медиатека в облаке и доступна с любого устройства) до беспроводных аудиосистем и ресиверов.
  2. Не забывайте, что телефоны становятся основным носителем музыки для пользователей;
  3. Привнесите звук в пространства, где по определенным причинам сложно установить проводные решения (кухня, террасы, балконы, открытые площадки в загородном доме);
  4. Позвольте гостям “поставить пластинку”;
Смотрите про коптеры:  Как подключить робота пылесос Xiaomi к телефону на Android и iOS

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

King Bluetooth
Беспроводной звук. Часть 1. Препарируем Bluetooth / ХабрВиновница торжества — технология Bluetooth, получившая жизнь благодаря инициативе Ericsson в далеком 1994 году, затем стандартизованная IEEE (802.15-1) и по настоящее время развиваемая целой группой по интересам Bluetooth Special Interest Group (SIG). На текущий момент альянс Bluetooth SIG насчитывает порядка 18 000 компаний, среди которых, естественно, есть и те, кто занимается производством аудио компонентов, способных принимать без проводов стерео сигнал.

Недавно я приобрел одно из таких устройств. Несмотря на то, что на Хабре можно найти подробный обзор Klipsch KMC 3, эта система оказалась удовлетворительной только в одном отношении: при определенных условиях она начинала воспроизводить звук, который ужасно прерывался. Как только я поместил MacBook Air 2023 позади собственного тела, в 4 метрах от колонки, и положил ноутбук на колени, звук прервался. Кроме того, второй участник конкурса Bluetooth (обзор которого вы найдете в конце этой заметки) – Edifier Spinnaker E30 – страдал от замирания сигнала, хотя и в меньшей степени. В результате возник вопрос: Почему эти две системы ведут себя так по-разному в одинаковых условиях?

В тех же условиях наблюдалась проблема с распространением сигнала, но если я использовал мобильный телефон для передачи звука, проблема становилась менее заметной. Поэтому мы решили исследовать причины и последствия, что привело нас к самому началу – где мы прочитали спецификацию Bluetooth Core Specification, проанализировали дампы сетевых соединений и изменили значения, относящиеся к аудиокодекам. Однако сначала необходимо было исключить возможность интерференции Bluetooth и Wi-Fi.

Одна кухня и несколько поваров
Не секрет, что и Bluetooth, и Wi-Fi (и еще множество систем) работают в одном диапазоне частот — ISM диапазоне — в границах 2.400 GHz — 2.4835 GHz. Использование одного частотного диапазона для передачи информации разных систем неминуемо приведет к интерференции сигналов, а значит — к потере данных. Именно на интерференцию сигналов Wi-Fi и Bluetooth я изначально и грешил.

Модуляция
Для эффективной передачи сигнала (цифрового, аналогового) посредством радио необходимо пройти процедуру модуляции. Позволим себе опустить тонкости различных процессов модуляции сигналов и сконцентрируемся на фактах, которые помогут представить картину спектра в среднестатистическом доме юзера наших дней.

Я полагаю, что 90% абонентов Хабра используют дома 802.11n (хотя все сказанное ниже справедливо и для 802.11g) позволяет использовать OFDM модуляцию с 13 каналами шириной в 20 МГц.

Как правило, стандарт 802.11b/g/n предусматривает использование одного канала в любое время, если его состояние считается удовлетворительным (читай “нет чередования каналов”).

Bluetooth, с другой стороны, использует другой подход: в спектре ISM организуется 79 каналов шириной 1 МГц, а затем, используя технологию Frequency-hopping Spread Spectrum (FHSS), радиоприемник и радиопередатчик синхронно изменяют несущую частоту по определенному шаблону с частотой 1600 раз в секунду. Эта процедура предотвращает наложение сигналов в крошечном диапазоне ISM.

При наличии дома анализатора спектра изменение несущей в диапазоне 2.4 ГГц выглядит следующим образом:

Как вы можете видеть, беспорядочно разбросанные красные точки – это сигнал Bluetooth, постоянно меняющий частоту. Три зеленые области – это активные каналы Wi-Fi.

Борьба с интерференцией
Однако техника скоростной смены несущей не избавляет от интерференции, а всего лишь снижает вероятность ее возникновения. Шансы у Bluetooth-сигнала попасть в 20 МГц диапазон канала Wi-Fi по-прежнему ненулевые:

Поэтому Bluetooth имеет адаптивную скачкообразную перестройку частоты (AFH).

AFH

). В AFH каналы, попадающие в занятую полосу сигнала WiFi, исключаются из 79 доступных каналов 1 МГц:

Как видно на рисунке выше, алгоритм AFH скорректировал карту доступных каналов для “прыжков”, исключив те, которые уже используются каналом wifi 6.

Однако мне не удалось решить эту проблему. Она не была вызвана помехами сигнала, поскольку я перевел WLAN в “безопасный” диапазон для Bluetooth 5 ГГц (это, кстати, самый эффективный способ избежать возможных проблем), но прерывания звука не становились реже. Пришлось копать глубже.

Разбор дампа Bluetooth
Раз проблема была не в интерференции с Wi-Fi, то потребовалось более глубокое погружение в матчасть. Напомню, что интересным с точки зрения анализа был тот факт, что в одинаковых условиях две Bluetooth аудиосистемы (Klipsch KMC 3 и Edifier Spinnaker) вели себя по-разному. Klipsch захлебывался раньше, и для достижения эффекта нужно было просто заслонить телом прямой путь к колонке на расстоянии нескольких метров. Edifier же мог хрюкнуть пару раз, но после продолжал уверенно воспроизводить звук, изредка прерываясь.

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

Чтобы провести нехитрый эксперимент, я отключил Bluetooth, удалил Klipsch из списка сопряженных устройств, включил синий зуб и нажал кнопку сброса, чтобы перейти от поиска устройства и подключения к нему к передаче звука.

Инициализация устройства
После активации Bluetooth-модуля, дамп наполняется записями сообщений HCI, которые в большинстве своем дают модулю понять, как его зовут, какой у него MAC адрес, к какому классу устройств он относится и включает непосредственно радио модуль.
Происходит это в форме диалога HCI Command -> HCI Event.

Из-за разницы между стеком bluetooth и TCP/IP, просмотр дампа без предварительного прочтения спецификации не сработал.

К чести группы Bluetooth SIG, документация по корневой спецификации и всем различным профилям находится в свободном доступе по адресу

портале для разработчиков

Книга написана простым и доступным языком.

Архитектура Bluetooth
Беспроводной звук. Часть 1. Препарируем Bluetooth / Хабр Так моей настольной книгой на энное количество времени стала Bluetooth Core Specification. 13 мегабайтная пдф-ка о шести томах только сперва кажется необъятной, но для понимания базовых операций и принципов взаимодействия подсистем достаточно будет и нескольких глав.

Core System
В процессе поиска источника проблем я шел сверху вниз: встречая в дампе высокоуровневые протоколы, пытался понять логику их работы и назначение передаваемых параметров.
Безусловно, православный путь — снизу вверх: от азов установления физических и логических управляющих каналов Bluetooth к базирующимся на их основе высокоуровневым протоколам. Этим путем я вас и попробую провести.

Спецификация системы Bluetooth Core описывает четыре основных нижних уровня архитектуры и протоколы, которые с ними связаны. Три нижних уровня обычно распределяются между различными подсистемами – Bluetooth Host, Bluetooth Controller и Bluetooth Interface.

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

На схеме не выделена очень важная часть архитектуры – интерфейс Host to Controller (HCI), который обеспечивает интеграцию программной подсистемы Host с аппаратной подсистемой Controller. Команды HCI, инициируемые драйвером Bluetooth, используются для взаимодействия верхних уровней системы Bluetooth с ее аппаратным обеспечением. Эти команды будут появляться в дампе каждый раз.

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

RF
Блок Radio (он же PHY), как и подобает резиденту физического уровня, занимается преобразованием битовой последовательности в радио сигналы. Вопросы модуляции, спектральных характеристик и физики процессов обеспечения битовой скорости — все это решается на нижнем уровне модели.

Baseband Layer = Link Controller Baseband Manager Device Manager
Уровень Baseband представлен в виде трех блоков, совместная задача которых состоит в управлении физическими каналами (Phy channels), поверх которых устанавливаются физические соединения (Phy links).  Bluetooth-адресация, синхронизации генераторов устройств, управление кодами доступа к физическим каналам, поиск устройств и установление физического канала между ними — все это задачи Baseband-уровня.

Link Manager
После того, как два нижних уровня обеспечили нас физическим соединением между master-slave устройствами, дело становится за организацией логических каналов, которые впоследствии и станут базой для передачи трафика приложений. Link Manager в ответе за установление, изменение и освобождение логических соединений между устройствами, а так же за обновление параметров физических соединений. Для этих целей Link Manager использует Link Management протокол (LMP).

L2CAP Layer = Channel Manager L2CAP Resource Manager
Переваливаемся в высокоуровневый блок Bluetooth Host, оккупированный L2CAP уровнем. Logical Link Control and Adaptation Protocol (L2CAP) — протокол, работающий поверх созданных логических соединений, обеспечивающий инкапсуляцию, сегментацию и восстановление пакетных данных от всех вышележащих приложений.

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

В дальнейшем я буду называть каналы каналами, а ссылки – ссылками.

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

SCO vs ACL
Если внимательно посмотреть на предыдущий рисунок, то на уровнях Logical Links и Logical Transports чаще всего встречаются аббревиатуры ACL и (e)SCO. Это два глобальных типа логических соединений между Bluetooth-устройствами, которые служат для передачи разного рода трафика вышестоящих приложений.

Асинхронное соединение, ориентированное на соединение (CL), передает асинхронный пакетный трафик. Оно может быть восстановлено в случае потери доставки, сегментировано и свободно передается.

SCO-соединения, в свою очередь, по сути организованы по принципу коммутации каналов с постоянной пропускной способностью 64кбит/с и синхронной передачей данных в тайм-слотах. SCO-каналы, например, используются профилем Headset для потоковой передачи голоса абонента от телефона к гарнитуре.
Согласно архитектуре Host Controller Interface, каждая его команда (HCI command) должна сопровождаться ответным событием (HCI Event). Ответ всегда возвращает статус команды (Success или код ошибки), а так же, опционально, запрошенные командой значения.

Ниже перечислены три команды HCI во время самоинициализации и последующие события.

Устройства для поиска и слежения

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

При любом процессе обращения верхних уровней к аппаратному обеспечению Bluetooth все начинается с команды от интерфейса HCI:

Здесь интерес представляет поле LAP. На самом деле это просто многоадресный адрес (общий код доступа), который, будучи видимым в канале обнаружения, предупреждает устройства Bluetooth о своем существовании.

Следовательно, все устройства, получившие общий код доступа на своем физическом канале обнаружения, отвечают сообщением Inquiry Response, в котором:

Здесь можно увидеть MAC-адрес устройства, его главный и второстепенные классы (Major Class и Minor Class), а также поддерживаемые службы.

Выделяются два параметра: Sink указывает на то, что устройство может выступать в качестве приемника аудиосигналов, а Advanced Audio Distribution указывает на то, что устройство поддерживает профиль A2DP.

Подключение
После процедуры поиска картина мира для Bluetooth-устройства становится ясна, самое время переходить к фазе подключения, или, как этот процесс называют в спецификации — Paging.

Оборудование также подключается через отдельный физический канал. Bluetooth передает физические каналы в двустороннем режиме (дуплекс). Использование одного физического канала для двунаправленной передачи осуществляется по принципу

Временное разделение каналов

( TDM). Для того чтобы информация передавалась и принималась в нужное время, на передатчике и приемнике должен присутствовать синхронизированный тактовый генератор.

Так как каждое Bluetooth-устройство оснащено своим собственным генератором, то ни о какой изначальной синхронизации между ними, естественно, речи не идет. Синхронизации добивается Link Controller в процессе установления соединения.
Происходит это следующим образом: в процессе поиска master-устройство получает от ответчиков среди прочих параметров еще и их значение тактового генератора. Затем, на этапе установления соединения master-устройство передает предполагаемое значение смещения тактового генератора для slave-устройства (параметр Clock Offset в скриншоте выше), тем самым ускоряя процесс синхронизации двух генераторов.

Create Connection требует, чтобы вы указали Bluetooth-адрес удаленного устройства (BD_ADDR) в качестве его самого важного поля. Протокол LMP организует логические соединения, через которые впоследствии будет проходить наш трафик, после того как контроллер получит команду установить соединение:

Помните ли вы, что в начале статьи я упоминал о методе Adaptive Frequency Hopping, который устраняет помехи на уже занятых частотах? Таким образом, карта частот, используемая в LMP message Set AFH, соответствует тому, что там передается. В процессе работы я заметил, что новые пакеты появляются с другой частотной картой, что свидетельствует о постепенном мониторинге эфира на предмет проблем с помехами.

В результате процесса подключения каждому Bluetooth-устройству присваивается идентификатор.

Сопряжение (Pairing)
Окей, мы установили физическое соединение с устройством, синхронизировали генераторы устройств и готовы к передачи служебной и пользовательской информации в тайм-слотах, чего не хватает? Спаривания. Наши устройства пока не доверяют друг другу, а значит никакой пользовательский трафик недопустим к передаче.

Поскольку оба устройства поддерживают стандарт Bluetooth 3.0, поддерживается метод аутентификации Secure Simple Pairing (и его подметод Just Works), позволяющий проводить аутентификацию и авторизацию без ввода pin-кода.

L2CAP in action
В главе, посвященной транспортной архитектуре, изображена схема иерархии каналов и соединений, на вершине которой находится L2CAP-протокол. Именно его очередь и наступает сразу после процессов аутентификации устройств.

Блок-схема архитектуры L2CAP показывает, как работают возможности сегментации, повторной отправки, потока и управления ресурсами:

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

Начиная с процедуры сопряжения устройств и заканчивая непосредственным обменом информацией, необходимо знать, какие профили поддерживает сопряженное устройство, например, аудио и обмен файлами. Протокол обнаружения сервисов (SDP) предлагает ответы на эти вопросы. Учитывая, что это протокол верхнего уровня, он не может обойтись без услуг L2CAP-протокола, который создает канал именно для этого. Давайте посмотрим, как это происходит.

В результате, в моем примере после успешного сопряжения устройств появляется пакет L2CAP со следующими полями:

Как предполагает KO, команда Connection Request инициирует подключение к уровню ведомого устройства L2CAP, а структура пакета содержит несколько интересных полей, которые мы можем найти полезными.

В протоколе L2CAP определены каналы, конечные точки каждого канала в паре ведущий-ведомый идентифицируются их 2-байтовым идентификатором CID (Channel Identification). CID 0x0001 является зарезервированным идентификатором канала для завершения трафика сообщений протокола L2CAP. Это имеет смысл, поскольку команда Connection Request относится к сигнализации сообщений (Channel ID 0x0001 на скриншоте ниже).

Следующее важное поле – PSM (мультиплексор протоколов/услуг). Значение PSM говорит вам, для какого протокола или службы мы настраиваем канал L2CAP, и, как вы видите, это канал для протокола Service Discovery Protocol.

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

Происходит это в форме следующего диалога:
— умеешь ли ты “_какой-нибудь сервис_”?
— да, умею, и вот его характеристики (в противном случае ответ “нет, не умею, спрашивай далее”).

Я получил отрицательный ответ на все сервисы, кроме Audio Sink и AV Remote Controller, что означает, что динамик, что логично, может только воспроизводить аудио и подавать управляющие сигналы на главное устройство (например, при нажатии паузы на динамике, воспроизведение приостанавливается на источнике).

После того как SDP собрал всю возможную информацию о собеседнике, наступает время для непосредственной передачи звука.

Audio/Video Distribution Transport Protocol
За организацию и управление аудио/видео потоками отвечает именно этот парень. И в моем случае разобраться в логике его работы можно было, даже не погружаясь в 160-страничную спецификацию.

Схемы работы AVDTP достаточно понятны. Потоковая передача осуществляется путем открытия двух каналов: канала управления (сигнализации) и прямого канала для аудио/видео.

Мы уже знаем, что от L2CAP никуда не деться, именно по его каналам сверху трафик будет проходить AVDTP.

Канал L2CAP в этом случае открывается с новым значением PSM, соответствующим протоколу AVDTP.

Один канал L2CAP, открытый для тревожных сообщений, другой – для данных AVDTP и третий – для Audio/Video Control Transport Protocol (для передачи сигналов от громкоговорителя к источнику звука), был запущен громкоговорителем.

Вы можете видеть здесь пары Source CID/Destination CID, это точки входа L2CAP. Идентификация канала L2CAP происходит из пары Src/Dst CID.

Установив необходимые каналы L2CAP, можно запустить процесс обмена служебными сообщениями между протоколами AVDTP на каждой стороне соединения. Заслуживают внимания следующие служебные сообщения:

Команда Discover позволяет узнать у удаленного устройства, что оно может предложить в плане передачи аудио/видео. Ответ должен состоять из списка услуг, описывающих возможности.

На первый взгляд, непонятно, почему у динамика две точки в функции “аудиоприемник”. Следующие два сообщения отвечают на этот вопрос:

Обратите внимание на некоторые значения My Bitpool и Max Bitpool – они скоро будут играть важную роль.

Поскольку Klipsch KMC3 может понимать два кодека – обязательный для A2DP устройства SBC кодек и дополнительный, собственный кодек

AptX

Кодек – то мы видим две точки обслуживания AVDTP, они отличаются только типом поддерживаемого кодека, не более того.

AptX vs SBC
После получения сведений о возможностях сервисных точек AVDTP протокол сообщением Set Config выбирает работу с кодеком AptX.

Так было с Klipsch, но Edifier Spinnaker не поддерживает кодек AptX, поэтому список его сервисных точек состоял только из одной с обязательным кодеком SBC (Low Complexity Subband Coding). В результате, аудио дампы, взятые при установке, отличались лишь незначительно выбранным для передачи звука кодеком!

Хорошо, но AptX настолько наворочен, оплачен, заблокирован и представлен на CeBIT, почему он начинает неприятно “зависать” при определенных условиях, и есть ли способ запустить колонки Klipsch с кодеком SBC, чтобы проверить, в этом ли проблема?

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

Информация, связанная с передаваемыми аудиоданными, может быть найдена в дампе SBC, поскольку это открытый кодек. В спецификации

A2DP

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

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

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

Действительно ли мое смертное тело так сильно ослабляет мой дух? Я создал следующий график, чтобы показать уровень мощности принимаемого сигнала:

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

Чтобы быть абсолютно уверенным в вине AptX, я отключил его поддержку в Mac OS X и снова обратился к Klipsch. Поскольку AptX был удален с ноутбука, между Macbook и колонкой установился кодек SBC. С кодеком SBC Klipsch перестал так сильно дергаться при падении уровня сигнала, верно?

В конечном итоге проблема диагностирована, и из-за закрытого характера AptX у нее не было шансов повлиять на работу кодека (как это можно сделать с SBC, установив значения forked bitpool в OS X). Остается только не искать видимый сигнал или использовать трюк с отключением кодека AptX в macOS.

Несмотря на это, благодаря этой проблеме я узнал много нового о Bluetooth. Надеюсь, после прочтения этой статьи вы почувствуете то же самое.

PS1 Кстати, AptX ни за что не берет денег, потоковое аудио с ним через Bluetooth действительно лучше, чем со стандартным SBC. Я испытал это, отключив AptX на своем ноутбуке и прослушав те же песни на той же колонке. Субъективно разница между SBC и AptX примерно такая же, как между MP3 192 кбит/с и MP3 320 кбит/с, и она заметна при прослушивании.

AptX поддерживается только на ограниченном наборе устройств, среди которых можно найти аппаратное обеспечение OS X и смартфоны, такие как Samsung Galaxy и HTC One. В моей среде iPhone и iPad вели себя лучше, чем Macbook, потому что они использовали SBC-кодек, в то время как Macbook использовал AptX.

Далее на повестке дня подготовка PS2 к AirPlay.

И, наконец, обзор Edifier Spinnaker, с которого месяц назад началась вся эта эпопея.

Изначально предполагалось, что в этом посте не будет ни скриншотов, ни строчки о протоколах, но кое-что пошло не так.

В комментариях к моему предыдущему

обзору Klipsch KMC 3

400 долларов за пластиковую колонку в виде моноблока кажется несколько завышенной ценой. Дело в том, что ценник любой колонки сразу же подскакивает на сотню-другую долларов, как только на нее наклеивается ярлык беспроводной связи. Но, может быть, не стоит тратить 400 долларов за моноблок Clipsha, где сам бренд добавил 50-100 долларов, а лучше обратиться к продукции

менее именитых компаний

?

Поэтому, когда коллега попросил меня помочь ему привезти из США понравившиеся ему Bluetooth-колонки, я без колебаний согласился. В качестве претендента на звание лучшей беспроводной аудиосистемы стоимостью до 300 долларов мы рассматривали беспроводную стереосистему Spinnaker E30 от Edifier.

Компания, которую до этого момента мы знали только как известного производителя проводных колонок, с выходом Spinnaker начала делить нишу беспроводных колонок с такими продуктами, как

Klipsch KMC 3

,

Creative ZiiSound

,

Bose SoundLink

,

Jawbone Jambox

,

Samsung DA-E670

И много других.

Беспроводной звук. Часть 1. Препарируем Bluetooth / Хабр

Несмотря на то, что у компании Edifier было множество именитых конкурентов, ни у кого не было предубеждений относительно ее азиатских корней. Тем не менее, эквивалентность между “сделано в Китае” и “дерьмо” была перечеркнута в проводной сфере как хорошими, так и плохими продуктами. С первого взгляда видно, что качество сборки довольно высокое.

Потребовалось некоторое время, чтобы все правильно собрать и добросовестно приклеить, но мы не испытали никакой боли в тазу, когда поставили спиннеры рядом с “эталонными” B&W Zeppelin Air. Видно, что собрать пришлось немало – колонки необычно сконструированы.

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

В качестве дани моде хотелось бы сказать несколько слов об оборудовании. Пока я открывал многочисленные упаковки и коробки, на столе образовалась изрядная куча проводов, ведь в комплект входят кабель с телефонным разъемом, оптический аудиокабель, мини-джек 3,5 мм, кабель RCA и пульт дистанционного управления со стандартным кабелем microUSB-USB.

Честно говоря, обилие проводов для “беспроводных” колонок поначалу обескураживает, но на самом деле необходимы только два кабеля – питания и 6-контактные разъемы. Есть и другие кабели, которые вы, скорее всего, получите в качестве дополнения и которые не будут лишними в вашем доме.

Мини-разъемы и оптические кабели предполагают, что колонки могут быть подключены к источнику воспроизведения по старым добрым проводным каналам, для чего на разъеме правой колонки выбран порт Auxin/Optin.

Внимание читателя привлечет порт Sub (Line) Out, предназначенный для подключения внешнего сабвуфера, который, честно говоря, был бы очень полезен для команды спиннакеров. На самом деле “проводное” подключение – это скорее забавный бонус, чем основная задача, которая лежит в плоскости беспроводной связи.

Сопряжение Bluetooth – простой процесс: просто дождитесь мигания синего светодиода в верхней части правого динамика и подождите несколько секунд, пока процедура Secure Simple Pairing соединит два устройства без ввода PIN-кодов.

После активации передачи звука на внешнее устройство громкость можно регулировать с помощью прилагаемого пульта дистанционного управления, кнопка которого служит переключателем воспроизведения/паузы, а длительное нажатие переключает источник входного сигнала (bluetooth line-in).

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

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

Релиз для прессы

(кстати, в комплекте с техническими деталями), мы будем описывать субъективное восприятие качества воспроизведения, потому что невозможно описать высокую аудиофильскую материю в пластике, даже в “художественном” формате.

Семь баллов можно поставить за общее впечатление от прослушивания различных стилей музыки. Возможно, не зря три пары колонок имеют собственные каналы усилителя. Между тем, мы бы не назвали этот звук “кристальным”, как пишут в пресс-релизе.

Хотя Spinnaker E30 не обладает рекордным запасом громкости, звук не захлебывался и не искажался, если только громкость не достигала 90%.

Отсутствие глубокого баса, как, например, у KMC 3 и Zeppelin Air, спишем на отсутствие крупногабаритного диффузора, которому просто не хватило места, принесенного в жертву богу дизайна. Самый крупногабаритный динамик, отвечающий за низкие частоты, направлен вниз и расположен у основания колонок.  Таким образом, “сабов” аж два, но их небольшой размер не заставит ваш пол вибрировать.
Впрочем, если у вас завалялся старый саб от любой другой системы, то попробуйте подключить его к спинакерам, такой симбиоз должен удовлетворить и вас, и ваших соседей.  

Одна из самых сильных сторон спиннакеров – “не задавленные” средние частоты и общий баланс звучания. Если в тех же Klipsch KMC 3 звон кристаллов на верхних частотах, возможно, является недостатком, то здесь верхи отчетливо слышны без навязчивого выпирания.

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

Благодаря возможности разделить стерео базу, получился стильный и запоминающийся дизайн, необычный пульт дистанционного управления и достойный звук. Думаю, что все это обязательно пригодится дома. Кроме того, подключение внешнего сабвуфера позволит тем пользователям, чьих встроенных НЧ-динамиков будет не хватать, уменьшить недостаток басов.

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

Рекомендую ли я Spinnaker E30 в ценовой категории до $300? Ответ – да, при условии, что описанные выше недостатки не являются критическими для вашего бизнеса. В моей стране друг купил эту систему за $279,99 плюс $55 за доставку, в то время как в России Spinnaker E30 продается за 11-12 тысяч рублей.

Ближайшие конкуренты – комплект Creative ZiiSound D3x DSx, который лучше всего проявляет себя на низких частотах благодаря сабвуферу, но есть провал в верхних и средних компонентах. Как правило, первоклассные колонки Bluetooth стоят дороже, а иногда и более чем в два раза. Стоит ли переплачивать за узнаваемость бренда, если можно получить достойное качество звука и умопомрачительный внешний вид за меньшие деньги?

S4 И, конечно, вы можете разглагольствовать на тему “к черту беспроводные пластиковые штучки, 1) купите новый airport express, 2) купите полочные колонки, 3) прибыль. “.

Передаем музыку по bluetooth без проводов

Я покажу, как принимать музыку через Bluetooth на вашем устройстве.

В нем есть модуль под названием XS-3868, и я делюсь с читателями некоторой информацией. Это встраиваемый модуль с чипом OVC3860, предназначенный для организации передачи данных и звука по протоколу Bluetooth.

Его размеры составляют 16×29 мм, что является небольшим размером.

Помимо простого воспроизведения музыки, сам модуль способен управлять некоторыми функциями телефона и плеера во время воспроизведения музыки – переключать треки, останавливать/запускать, изменять громкость. Все, что нужно сделать, – это припаять кнопки к модулю.

Беспроводной звук. Часть 1. Препарируем Bluetooth / Хабр

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

схема подключения

Беспроводной звук. Часть 1. Препарируем Bluetooth / Хабр

Беспроводной звук. Часть 1. Препарируем Bluetooth / Хабр
Беспроводной звук. Часть 1. Препарируем Bluetooth / Хабр

используем усилитель из предыдущего обзора radiocopter.ru/blog/ebay/23671.html
Беспроводной звук. Часть 1. Препарируем Bluetooth / Хабр

запитал это все на столе от 3.7v., подрубил на вход усилителя, телефон нашел новое устройство, попросил код 0000, и сконекктился ( один телефон попросил код, второй подсоединился без кода),
звук как в проводных наушниках, уровень громкости по умолчанию на максимуме, уменьшить можно удерживая соответствующий контакт на — более 2 сек. Ловит сигнал примерно на расстоянии 10 метров.

подключаем к компьютеру такой модуль
Беспроводной звук. Часть 1. Препарируем Bluetooth / Хабр
соединяемся с устройством (драйвер установился автоматически Windows 7 x64) и передаем звук
Беспроводной звук. Часть 1. Препарируем Bluetooth / Хабр
можно подключить к нему аккумулятор и зарядку
Беспроводной звук. Часть 1. Препарируем Bluetooth / ХабрБеспроводной звук. Часть 1. Препарируем Bluetooth / Хабр
Если модуль ни к чему не подключен, то через пять минут он уходит в режим энергосбережения (отключается) и чтобы снова вывести его в рабочий режим нужно его сбросить или передернуть питание.
Модуль можно встроить прямо в колонки. Использовать для подключения наушников, встроить в автомагнитолу в машину или куда еще хотите. Главное организовать питание в диапазоне 3,6 — 4,2 вольта.
Смотрим видео youtu.be/Npds03qkv6c

Если вы заинтересованы в покупке готового устройства с корпусом и аккумулятором, вот ссылка ebay.com/itm/360679592835

Update Кстати я не стал описывать второй модуль, вы можете также использовать модуль
BLK-MD-SPK-B, который чуть меньше размером, но функции практически одинаковые
Беспроводной звук. Часть 1. Препарируем Bluetooth / Хабр
Беспроводной звук. Часть 1. Препарируем Bluetooth / Хабр
ссылка на ebay ebay.com/itm/360751412602:MEWNX:IT&_trksid=p3984.m1439.l2649

Проверили wi-fi-акустику на деле

В выставочном зале Hi-Fi-Sound были представлены четыре саундбара Yamaha MusicCast 20, Denon HEOS 1 HS2 и саундбар Yamaha MusicCast Bar 400 с беспроводным сабвуфером.

Мобильное приложение Yamaha MusicCast положило начало всему этому. Эта технология соединяет широкий спектр устройств этой компании. Вы сможете выбрать отдельные колонки, а также совместимые с ними ресиверы и сабвуферы. Приложение MusicCast от Yamaha предоставляет множество настроек и функций.

Для управления устройствами потребовалось всего несколько щелчков мыши. Устройства MusicCast 20 легко подключаются, образуя стереопару. Значительное улучшение звучания: стерео открывает музыку совершенно по-новому. Всего одной колонки было достаточно, чтобы наполнить комнату чистым звуком.

MusicCast 20 можно настроить как отдельно, так и для всей системы в мобильном приложении. Использование мультирума интуитивно понятно, поскольку на начальном экране приложения уже есть разделение на разные комнаты. Это можно отредактировать в соответствии с настройками ваших отдельных колонок.

Удобная плитка обеспечивает доступ к музыкальным сервисам. В то время как Spotify переключается на собственное приложение, Tidal запускается в Yamaha. Для своего размера и цены эти колонки звучат великолепно.

Новейшая фишка современных саундбаров – объемный звук без проводов. Саундбар Yamaha мгновенно синхронизировался со своим сабвуфером. Сразу после установки приложения они соединились с колонками MusicCast, установленными друг за другом. Был запущен фильм с многоканальным аудиопотоком, который распределился по установленным колонкам, создавая очень четкое ощущение окружающего звука, грамотно распределенного по всем сторонам, как в кинотеатре: какие-то шорохи сбоку, разговоры спереди, и пролетающий по комнате вертолет, взрывающийся где-то позади.

Продукция Yamaha является хорошим примером, поскольку мы можем проверить почти все ее характеристики. На самом деле, подобные устройства есть у многих брендов: Denon, Bose, Sonos, Bang & Olufsen, Klipsch, Marshall и других. Ресиверы и усилители многих производителей Hi-Fi акустики уже оснащены сетевыми функциями и поддерживают AirPlay 2, все музыкальные сервисы и, конечно, мультирум.

На данный момент решения Yamaha являются самыми доступными. Между MusicCast 20 и саундбаром есть разница в стоимости. Учитывая наличие сетевых функций и отличный звук, этот продукт неплох. Но если вы хотите создать мультирум, вам придется заплатить уже 1400 рублей за пару колонок MusicCast 20 и 2745 рублей за саундбар.

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

Существует ли “проводной аналог” с возможностью подключения к сети? Результатом нашего теста стал Magnat Tempus 77 шикарного темно-коричневого цвета в паре с AV-ресивером Yamaha.

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

Встроенный двухканальный усилитель с легкостью обеспечивает питание больших колонок Magnat. Детализация и объем полученного звука впечатляют. Знакомые песни из знакомых источников зазвучали совершенно по-другому. Невероятные впечатления! Но по какой цене? Если вам нужно устройство попроще или подешевле, вы можете выбрать R-N602 за 1 400 рублей.

Маленькие колонки Yamaha не могут сравниться с колонками Magnat Hi-Fi и дорогими ресиверами. Поэтому, для простоты, мы выбрали Blue Aura WS90t. Это беспроводная колонка, без встроенного Wi-Fi.

Беспроводная связь здесь требует наличия приемника и передатчика. Мы ориентируемся на тех, кто хранит всю свою библиотеку на компьютере и хочет транслировать ее в максимальном качестве, без ущерба для качества аудио и видео. Вы также можете включить Spotify на компьютере и передавать звук на Blue Aura через смартфон, причем управлять этим можно с помощью смартфона.

В результате беспроводной hi-fi динамик будет стоить довольно дорого. Конечно, можно найти и более дешевые варианты. В сочетании с недорогими напольными колонками Magnat Monitor Supreme 202 или Q Acoustics 3020i ресивер Yamaha R-N303 с мощностью 140 Вт на канал, поддержкой потокового вещания и AirPlay можно приобрести всего за 1298 рублей или 1662 рубля.

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

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

Цены на беспроводные колонки для дома с разным бюджетом:

Управление устройством по блютус

Эта статья является продолжением предыдущей статьи “Смартфон управляет игрушечным автомобилем” и должна помочь пользователям, решившим воспроизвести проект, управляя своим устройством через Bluetooth, используя среду программирования на BASIC!

В целом, голосовое управление – эффектный, но ненадежный метод управления системой, особенно когда расстояние до объекта превышает 2 метра. Мешает затухающий и реверберирующий звук, а также излишний шум, к тому же необходимо постоянное подключение к интернету. Управление через Bluetooth более надежно.

Для этого разработаны две программы.

Я назову программу, которую я запускаю на смартфоне, “Сервер. “, и она управляет устройством. Прослушивая канал связи, сервер получает и выполняет команды.

” Клиент”, с другой стороны, представляет собой приложение, работающее на смартфоне, которое выполняет функцию пульта дистанционного управления. Во время первоначальной связи “Клиент” формирует команду, которая затем передается на сервер Bluetooth.

Команда представляет собой текстовое сообщение. Вы можете сказать “вправо” или использовать букву, которая интерпретируется как “вправо” и означает поворот руля вправо и тягу вперед на 300 миллисекунд.

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

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

Сначала запускается программа “Сервер”, после того как она убедится, что начала прослушивать канал связи, запускается Клиент и проверяется устройство.

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

Листинг программы «Сервер»

FN.DEF speak(t$)
TTS.INIT
TTS.SPEAK t$
TTS.STOP
FN.END

speak("начало работы сервера")
ONERROR:
newConnection:
BT.OPEN
speak ("Жду запрос на соединение ")
DO %         
BT.STATUS s
IF s = 1
!speak("Слушаю")
ELSEIF s =2
speak( "Соединяюсь")
ELSEIF s = 3
speak( "Соединение создано")
ENDIF
PAUSE 1000
UNTIL s = 3 %       

BT.DEVICE.NAME device$

DO %---------
BT.STATUS s
IF (s<> 3)
speak( "Соединение разорвано")
GOTO new_connection
ENDIF

DO % ======
BT.READ.READY rr
IF rr
BT.READ.BYTES s$
PRINT ":";s$
s$ =mid$(s$,1,len(s$)-1)
speak(s$)
IF (s$="end") THEN GOTO xEnd
ENDIF
UNTIL rr = 0 % ======

UNTIL 0 % --------

xEnd:
speak("Сервер остановлен")
BT.CLOSE
END

Листинг программы «Клиент»

ARRAY.LOAD menucom$[], "Вперед", "Назад", "Вправо", "Влево", "Остановить клиент", "Остановить сервер"

BT.OPEN
BT.CONNECT

n = 0
DO %           
BT.STATUS s
IF s = 1
PRINT "Слушаю, секунды: ", n  
ELSEIF s =2
PRINT "Соединяюсь, секунды: ",n  
ELSEIF s = 3
PRINT "Есть соединение"
ENDIF
PAUSE 1000

UNTIL s = 3 %         

BT.DEVICE.NAME device$
PRINT device$
PAUSE 1000

x = 0
DO %#########
SELECT menu, menuCom$[], "Выбери команду"
IF menu = 1 THEN BT.WRITE "forward"
IF menu = 2 THEN BT.WRITE "backward"
IF menu = 3 THEN BT.WRITE "right"
IF menu = 4 THEN BT.WRITE "left"
IF menu = 5 THEN x=1
IF menu = 6 THEN BT.WRITE "end"
UNTIL x=1 %#########

BT.CLOSE
END

Оцените статью
Радиокоптер.ру
Добавить комментарий