Csr bluetooth chip что это
Навеяно темой Улучшение звука Bluetooth на наушниках без aptX и LDAC. Решил создать параллельный способ решения проблемы, но со стороны наушников. Сразу скажу способ чуть менее тривиальный, требует некоторых технических навыков, внимательности и оборудования. Ссылки на софт и сопутствующий материал я приложу в конце статьи.
Внимание: описанные ниже манипуляции Вы проводите на свой страх и риск, велик шанс окирпичить свои наушники. Одни из двух имеющихся у меня я по глупости окирпичил, как этого избежать я расскажу.
Так же общая рекомендация: старайтесь как можно меньше лапать чипы на плате наушников, особенно маленькую микросхему SPI FLASH памяти, которая очень боится статики как и любая память, по той же причине лучше предварительно облапать батарею дабы снять с себя заряд и не сидеть в синтетическом махровом халате, шерстяном свитере, а так же убрать подальше кошку.
Однажды я увидел недорогие блютуз наушники с неплохими характеристиками (20 часов прослушивания, блютуз 4.1 и неплохое звучание на мой не искушенный слух). Так я стал владельцем Sven B350MV, позже я их слегка разобрал ради интереса и посмотрел что там за чип, а так же бегло погуглил про него инфу, это был CSR8635, убедился что он поддерживает AAC, а не только стандартный SBC и успокоился. Еще позже я решил взять себе недорогие же блютуз затычки, и прослушал несколько вариантов за ту же цену взял наиболее понравившиеся по звуку Sven SEB-B265MV, к слову аккум у них очень дохлый, садится за 3-4 часа, заряжается за 5-10 минут(буквально). Далее чисто случайно на компьютере обнаружил что у меня обе пары наушников работают в SBC, хотя аппаратная поддержка ААС в чипе есть. Думал дело в компьютере, но распарсив дамп протокола блютуз во время handshake, когда устройства сообщает о себе инфу во время соединения и поддерживаемые протоколы, понял что наушники действительно умеют только SBC. Так и родилась идея поддержку AAC в них включить.
Итак, нам понадобится:
Если вы увлекаетесь Arduino, то скорее всего все выше перечисленное у вас уже есть. В противном случае все можно заказать на Алике по ключевым словам FT232RL для программатора и TXS0108E для преобразователя уровней, либо в местных радио/ардуино магазинах, если не хотите ждать.
Кастомный драйвер можно скачать тут: https://github.com/lorf/csr-spi-ftdi/releases, там же есть подробная инструкция по установке и командам.
Что касается по драйверу, установка его заключается в подмене файла (библиотеки драйвера) в папке уже установленной программы BlueSuite (и других) и выглядит следующим образом:
Все, можно запускать программы.
Далее железная часть.
Далее нам надо подключить это все к программатору и тут есть несколько нюансов.
Во-первых: дело в том что наш программатор работает с уровнями логики 5в и 3.3в (устанавливается перемычкой), а наш чип с 1.8в, для этого нам и нужен двусторонний преобразования уровней, однако в даташите заявлена толерантность к максимальному напряжению 3.6в, следовательно вы можете на свой страх и риск выставить 3.3в на FTDI и подключить все через 10кОм резисторы. Судя по ветке переписки на гитхабе у людей все получилось успешно здесь и здесь.
Схема подключения выглядит следующим образом:
Здесь я добавлю схему подключения если вы используете преобразователь логических уровней как я и особенности подключения преобразователя на микросхеме TXS0108E (как у меня).
Общим для всех преобразователей является необходимым наличие нужных опорных напряжений с обоих сторон, чтобы преобразователь «понимал» с какого на какое напряжение производить преобразования сигналов. Так же есть требования по сторонам для высокого и низкого напряжений будь это простой транзисторный преобразователь или на базе микросхемы. Обычно эти пины подписаны как HV (high voltage или высокое напряжение) и LV (от low voltage или низкое напряжение) или LB и LA для моего преобразователя. Если у нас происходит преобразование с 5в на 1.8в соответственно +5В подключаем к HV и +1.8В к LV. Для TXS0108E это будет +5в на LB и 1.8в для LA. важно что VCCA ≤ VCCB, поесть напряжение на стороне А (L) должно быть меньше либо равно напряжения на стороне B (H). Так же для TXS0108E как следует из даташита нужно задать рабочий режим отдельным пином, подписанным OE (output-enable), для этого его необходимо подключить к выводу LA.
Итого: подключаем напряжение +3.3в или 5в (с преобразователем не принципиально) к LB. GND к соответственно GND на плате преобразователя и подключаете все остальные нужные выводы программатора со схемы выше к стороне B к пинам B1-B8 как удобно, я подключил по-порядку B1-B4 (cм. фото). Соответственно B1-Bx (H1-Hx) будут соответствовать выводам на другой стороне A1-Ax (L1-Lx). Пин OE подключаем к LA (у транзисторных его нет).
После того как разберетесь с опорным напряжением соедините соответствующие выводы стороны А(L) с пинами наушников, НО предварительно желательно проверить все неоднократно и замерить напряжения мультиметром. Ни в коем случае на контроллер наушников не должно приходить напряжение выше 3.6В иначе он сразу же сгорит.
После того как все подключили и 10 раз перепроверили можно подключать программатор к компьютеру. Если у вас 1.8 вольт взято с платы наушников, их стоит предварительно включить иначе контроллер не подаст напряжение. Далее можно запустить PSTool из комплекта BlueSuite.
Софтовая часть и прошивка
Внимание: прежде чем вносить любые модификации в прошивку НАСТОЯТЕЛЬНО рекомендую внимательно прочитать этот раздел до конца и выделенные области, особенно раздел по порядку прошивки иначе гарантировано окирпичите устройство.
Так же работайте с программами осторожно, внимательно читайте меню, не совершайте лишних кликов, это сервисные утилиты, у них нет абсолютно никаких предупреждений перед действиями, перед записью и удалением настроек, программа не будет вас 10 раз спрашивать уверенны ли вы что хотите окирпичить устройство, а сделает это молча. Так же программы любят по долгу задумываться и казаться зависшими, винда неоднократно предложит закрыть их принудительно, но обычно это не так и в этот момент она может работать с флешем, поэтому не стоит прерывать их работу. Так же НЕ стоит переписывать весь флешь целиком, а менять настройки атомарно
Здесь расскажу как модифицировать прошивку с помощью официальных утилит, а так же порядок, т.к. одна из утилит окирпичивает устройство гарантированно, но без нее не обойтись.
Начнем с PSTool.
Запустите PSTool и если манипуляция с драйверами проведена успешно получите такое окно выбора интерфейса:
Если при выборе SPI BCCMD справа в поле будет что-то типо «No FTDI device found» значит либо не подключен программатор либо что-то заменили не правильно. Так же автор драйвера говорит что с USB3 порой FTDI микросхема работает не стабильно, у меня в ноутбуке только USB 3.0, но все благополучно завелось. Вы же по возможности используйте USB2.
Если все прошло успешно вы увидите следующее окно:
окно программы заполнится полями настроек, вручную там редактировать не удобно, все настройки представлены строками в 16-ричном формате, для этого воспользуемся другой утилитой, а пока мы сохраним дамп настроек. Для этого заходим в пункт File и выбираем Dump а так же имя место сохранениям дампа:
Лучше делать это в мои документы во избежание проблем с правами админа и тд.
После этого опять появится ползунок неопределенного прогресса и прога надолго задумается, если попытаться кликнуть по ней то винда скажет что она не отвечает, не закрывайте ее, жмите «ожидание завершения»(или как там). Что прогресс идет можно убедится открыв этот файл в неблокирующем текстовом редакторе, например Sublime text и убедится что строчки добавляются в файл. Полный размер файла дампа занимает примерно 20-30кб и содержит около 800-900 строк. Как только программа закончит создавать дамп настроек, она никак не уведомит об этом, просто пропадет окно прогрессбара. Сделайте копию оригинального файла настроек и сохраните. С текущим мы будем работать.
Так же желательно сделать дамп EEPROM через консольные утилиты. Для этого открываем командную строку от админа: ПКМ по Пуск и выбираем Windows PowerShell(администратор):




































