Какой аудио чипсет лучше cm6533 или sss1629 или hs100b

Обновлено: 06.07.2024

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

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

Что такое AC’97

Большинство современных потребительских звуковых решений строится согласно стандарту AC’97, разработанному корпорацией Intel. Он предусматривает разделение звукового контроллера на две независимые части — цифровой контроллер (DC’97) и аналоговый кодек (AC’97), связанные между собой цифровым последовательным каналом AC-Link. Функции цифрового контроллера строго не регламентируются. Он может содержать универсальный или специализированный DSP-процессор для обработки звука, табличный волновой синтезатор, модуль поддержки DOS-звука, кодер и декодер Dolby и DTS и т.п. А может быть и простым хост-контроллером, отвечающим только за обмен данными между системной шиной и кодеком. Именно последний вариант хорошо подходит для интеграции, так как требует минимум аппаратных затрат.

Функциональная схема AC’97.

Кодек AC’97 — это небольшой чип (4х4 см, корпус TSOP, 48 выводов), который отвечает за преобразование звука в аналоговую форму при выводе и в цифровую — при вводе. Спецификация AC’97, последняя версия которой — 2.3, описывает электрические, механические, функциональные параметры кодека. Функциональная схема представлена на рисунке. Согласно ей, современный AC’97-кодек должен:
• содержать 16-разрядные ЦАП и АПЦ, аналоговый микшер;
• иметь до четырех линейных стерео входов и до двух моно входов;
• иметь один или два микрофонных входа с возможностью усиления (+20 дБ);
• иметь один линейный стерео выход;
• иметь дополнительные линейные выходы — для наушников, 4- и 6-канальной акустики;
• иметь расширенные возможности управления питанием.

Необязательные требования к кодекам включают:
• увеличение разрядности ЦАП и АЦП до 18 или 20 бит;
• аппаратное преобразование частоты дискретизации;
• управление громкостью (не уровнем) и тембром (отдельная настройка низких и высоких частот);
• расширение стереобазы (3D Enhancement);
• отдельный вход для записи голоса;
• наличие трасмиттера для цифрового интерфейса S/PDIF, поддержка независимого вывода S/PDIF (требование спецификации 2.2);
• определение типа подключенного к каждому входу или выходу устройства по его сопротивлению (требование спецификации 2.3).

Таким образом, от самого аудиокодека зависят такие параметры звука, как соотношение «сигнал/шум», уровень сигнала на выходе, нелинейные искажения, передача различных частот, поддержка нескольких аналоговых и цифровых входов и выходов. Различные звуковые эффекты (позиционирование, реверберация), поддержка нескольких потоков, соответствие требованиям различных API, работа с MIDI, общая устойчивость работы зависят от возможностей цифрового контроллера и его драйверов.

Особенности встроенного звука

Большинство интегрированных звуковых решений, встречающихся на современных материнских платах, состоят из встроенного в южный мост чипсета хост-контроллера и расположенного на плате аудиокодека. Размещение кодека или нескольких кодеков на специальной плате — райзере AMR (или более функциональных его разновидностях — CNR, ACR) тоже возможно, однако это решение не стало популярным, и потому слоты райзеров постепенно исчезают с материнских плат. Причина заключается в том, что встроенный звук имеется у каждой платы, а реализация с помощью райзера модема или сетевой карты получается не настолько дешевой, насколько малофункциональной и недостаточно качественной.

Хост-контроллер чипсета удовлетворяет спецификации AC’97 2.2 или 2.3, поддерживает двух- или многоканальные кодеки, а также независимую выдачу отдельного цифрового потока в формате PCM, AC-3, DTS и т.д. для интерфейса S/PDIF. Функции обработки звука зачастую целиком возлагаются на драйверы, которые пишут и разработчики чипсетов, и разработчики кодеков (у последних это получается лучше). Некоторые драйверы поддерживают и позиционируемый 3D-звук, и имитацию звуковой среды, и многополосный эквалайзер — мощности современных процессоров позволяют это. Иногда встроенный в чипсет контроллер аппаратно реализует поддержку DirectSound, табличного синтеза MIDI, а также позиционируемый звук, аппаратное кодирование звука в формат AC-3 (чипсеты NVIDIA).

Современные звуковые кодеки поддерживают практически все не только обязательные, но и опциональные требования. Нормой стало наличие трасмиттера S/PDIF для подключения цифровой акустики или других устройств с цифровым входом, встроенного усилителя, который активируется при подключении наушников. Есть кодеки с поддержкой многоканальной акустики, с 20-разрядными ЦАП и АЦП. Существенно улучшилось качество работы кодеков, производители плат научились грамотно проектировать обвязку, уменьшая тем самым наводки. Полностью аппаратные решения для шины PCI встречаются все реже и реже, так как они заметно дороже, а существенных преимуществ уже не имеют.

На сегодня встроенный звук уже практически избавился от таких типичных проблем, как повышенная шумность, искажения и наводки, низкий выходной уровень. Исчезли проблемы с поддержкой игр, недостаточной стабильностью, пропаданием звука при разгоне. Тем не менее, не все хорошо с воспроизведением низких и высоких частот, по-прежнему не всегда работает MIDI, часто отсутствуют какие-либо настройки, нет поддержки DOS (или она ограничена). У одних кодеков качество звучания и поддержка различных API лучше, у других — хуже, но производители материнских плат практически никогда не указывают, какие кодеки они используют. В этой статье можно рассказать об особенностях кодеков различных производителей, но привести перечень всех материнских плат с указанием, какой кодек установлен на каждой, невозможно по понятным причинам. Поэтому если вы планируете пользоваться встроенным звуком, обращайтесь к обзорам материнских плат.

Распространенные модели AC’97-кодеков

Год назад на материнских платах устанавливались в основном кодеки Analog Devices и SigmaTel. Они были реализованы лучше аналогов — имели более высокое качество звука, хорошие драйверы, часто использовались и для дорогостоящих звуковых карт. Более дешевые кодеки Avance Logic и Cirrus Logic/Crystal встречались реже, в основном на дешевых моделях материнских плат. Однако из-за того, что разработчики кодеков не заметили, как возросли требования к функциональности встроенного звука, и не успели подготовить новые модели, быстро приобрел популярность дешевый звуковой контроллер CMedia CMI8738.


Крабовые ручки | Almois Jobbing Official

Тест качества записи с внешней звуковой карты Orico SC2 и за 1.5 доллара

Фото 1. Внешняя звуковая карта USB 1.5-доллоровая vs Orico SC2

Ноу-нейм внешняя USB звуковая карта за 1.5 доллара (на Фото 1 слева) имеет, как показало вскрытие, моно микрофонный вход, что подтвердилось записью на смартфоне и настройками записи на настольном стационарном компьютере:

Количество микрофонных входов внешней USB звуковой карты Orico SC2 и самой дешёвой за 1.5 доллара

Внутри картина такая:

Фото 2. Плата USB звуковухи за 1.5 $ Фото 3. Вид платы с обратной стороны

Поэтому, исходя из некоторой информации из интернета, согласно которой Orico SC2 за 8$ имеет внутри чип SSS1629A5, а у него [согласно даташита] вход ADC (analog to digital converter) двойной, левый и правый, был срочно закуплен данный звуковой адаптер.

Фото 4. Вид платы Orico SC2 с обратной стороны Фото 5. Микросхемы на Orico SC2 USB sound adapter

Контакты разъёмов соединены/разведены так:

Схема разводки входов и выходов, распиновка разъёмов Orico SC2 внешней ЮСБ звуковой карты-адаптера

Фото 6. Разводка контактов разъёмов на плате Orico SC2 R3.0

Что касается качества записи этими двумя звуковыми адаптерами хотя бы и с одного микрофона, то вот вам:

Несмотря на чрезвычайную популярность смартфонов, обычные кнопочные телефоны не потеряли свою актуальность среди людей, которым нужны исключительно базовые функции связи.
Рынок РФ заполнен множеством моделей разных характеристик, размеров, форм-факторов и расцветок: от миниатюрных телефонов размером с автомобильный брелок для удобной доставки на зону, до моделей а-ля 90-е, которыми можно убить грудного ребёнка.

Inoi 102 и Strike F10

Inoi 102 и Strike F10

Купил я телефон Inoi 101: дешевый, но функционально достойный даже на фоне более дорогих моделей. Всё бы хорошо, если бы не нежелательная функциональность, присущая большинству недорогих звонилок:

Пробные игры с покупкой полной версии через СМС, причём состояние покупки сбрасывается при полном сбросе устройства;

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

Чипсет

Современные кнопочные девайсы строятся на платформах трёх производителей: RDA Microelectronics, Spreadtrum, Mediatek. Первой компании уже не существует: её купил Spreadtrum в середине 2015. Обе компании ребрендировали под именем Unisoc в 2018 году.

General Description
RDA8826C is a high performance, highly integrated system-on-chip solution for low cost, low power, GSM/GPRS mobile phone.
Integrating all essential electronic components, including baseband, quad band RF transceiver, power management, FM receiver, Bluetooth onto a single system on chip, RDA8826C offers best in class bill of material, space requirement and cost/feature ratio for complete phone handsets.

Key Features
1. MIPS 312MHz processor
2. GSM/GPRS modem
3. 32Mb Flash and 64Mb PSRAM integrated
4. 320x480(HVGA) resolution

Нынешние телефоны построены в основном на процессорах Spreadtrum и Mediatek архитектуры ARM. Inoi 101 — не только «последний из могикан» на чипе ныне несуществующей компании, но и работает на ныне непопулярной архитектуре, с не самым известным набором команд MIPS16e, в котором инструкции кодируются в 2 байта вместо четырех, для уменьшения размера прошивки, что жизненно необходимо устройству со всего 4 МБ (32 Мбит) флеша.

SoC RDA8826 содержит в себе центральный процессор RDA8809e2, Baseband-процессор CT8851C, Bluetooth и FM-модули rdabt_8809 и rdafm_8809. Достоверная информация о всех компонентах в интернете не представлена.

Получение прошивки

Чтобы модифицировать прошивку, нужно сначала завладеть ей. Самый простой вариант — поискать на веб-сайте производителя. Inoi выкладывает прошивки ко всем своим моделям, но они не всегда самые последние — оказалось, что в версии с сайта отсутствует набор Т9 и игра «Тетрис».
Что-ж, телефон уже прошит, придётся покупать второй и скачивать актуальную прошивку с него. Сделать это можно, в случае RDA, только сторонними программами, т.н. «боксами» — аппаратно-программными комплексами для прошивки и восстановления от сторонних разработчиков. Обычно необходимо купить сам «бокс» (устройство с набором кабелей) и подписку на ПО, но к счастью подходящее ПО уже есть взломанной версии, отвязанное и от бокса, и от подписки — Miracle Thunder 2.82 от Gsm_X_Team. Относитесь к этому ПО как к трояну — устанавливайте на отдельный компьютер, без интернета (в виртуалке не работает).

Miracle Thunder

Miracle Thunder

Официальные прошивки поставляются в текстовом формате .lod. Этот формат описывает процесс прошивки поблочно, в соответствии с размерами блоков флеш-памяти, в виде адреса загрузки и бинарных данных, закодированных по 4 байта little endian. Формат нестандартный, но простой, без особенностей. Единственное, что нужно учесть при написании конвертера — файл описывает не все блоки флеша, некоторые из блоков не программируются (есть «дыры»).

Открываем дамп флеша или преобразованный файл прошивки в вашем любимом дисассемблере, начинаем анализировать, быстро разочаровываемся: строк мало, сегментация памяти непонятная, IDA норовит неправильно определить MIPS32/MIPS16-код, тут и там странные указатели 0x82xxxxxx на оперативную память, в которые никто не пишет…


Скребём по сусекам

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

Из заголовочных файлов узнаём самое основное:

Флеш располагается по адресу 0x88000000 (4 МиБ)

Оперативная память — в 0x82000000 (8 МиБ)

SRAM — 0x81C00000 (64 КиБ)

BootROM — 0x81E00000

UI на моём устройстве построен на форке фреймворка MMI (man-machine interface) от компании Pixtel — CoolMMI. Подобный фреймворк используется и в ОС для кнопочных телефонов Mediatek MAUI, под названием PlutoMMI.

Обращение к текстовым строкам, ресурсам, задачам, меню, элементам NVRAM происходит с помощью уникального цифрового идентификатора, что затрудняет исследование: вы видите только цифры, далеко не сразу поддающиеся установке соответствия в осмысленную строку, пункт меню или ресурс.

Начальную информацию об основных функциях PlutoMMI от Mediatek можно почерпнуть из файла mmi framework and architecture.pdf. Архитектура CoolMMI и PlutoMMI совпадает в достаточной мере, чтобы пользоваться (аналогично скудной) документацией конкурирующего производителя.

Поиск сжатых ресурсов

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

После непродолжительного анализа обнаруживаются три особенности:

Переиспользование функций из BootROM
Для максимальной экономии пространства на флеш-памяти производитель реализовал наиболее востребованные функции библиотеки C непосредственно в ROM-памяти чипа: строковые функции (strlen, strcmp, strcpy, strcat, strtok), функции сравнения и копирования памяти (memcmp, memcpy, memmem, memchr), форматирования и вывода (sprintf, vsprintf), поиска и сортировки (bsearch, qsort) вызываются из памяти ROM, и не содержатся в коде прошивки, экономя драгоценные килобайты.

Сжатие кода и ресурсов алгоритмом LZMA
Код наиболее объемных «модулей» (WAP-браузера, мультимедиа-плеера, приложения FM-радио, инженерного меню) хранится в сжатом виде, а распаковывается один раз, при запуске телефона. Ничего дополнительного после распаковки не происходит: код скомпонован так, будто эти модули всегда в оперативной памяти по фиксированным адресам.
Аналогично распаковываются текстовые строки, но только для одного, текущего языка.

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

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

Снятие оперативной памяти

Оказалось, протокол прошивки не только простой, но и разрешает чтение произвольных адресов без какой-либо подготовки, прямо во время работы телефона. В интернете была найдена готовая программа для чтения прошивки через UART, которая после модификации была использована для чтения всех 8 МиБ оперативной памяти через USB. 2 минуты — и никакой ручной работы!
Чтобы получить коммандный порт через USB, можно воспользоваться модулем usb-serial в Linux. Достаточно всего лишь «научить» модуль работать с RDA:

$ echo 1e04 0900 | sudo tee /sys/bus/usb-serial/drivers/generic/new_id

Разжатая функция в оперативной памяти

Разжатая функция в оперативной памяти

Отныне нам доступны все распакованные функции и ресурсы в оперативной памяти, что позволяет нам беспрепятственно их проанализировать.

«Покупаем» игры

В рассматриваемом телефоне присутствуют 3 платных игры производства Gameloft: Danger Dash, Ninja Up, Tetris. Первая — раннер, без какой-либо физики прыжка, вторая — примитивный фроггер с одним экраном, играть можно разве что в тетрис, но он начинает тормозить при заполнении экрана фигурами.
Каждая игра запускается всего 5 раз, далее их предлагается оплатить. Игры стоят 99 рублей каждая — половину стоимости телефона — обдираловка!

С точки зрения пользователя, покупка совершается так: нажимаем на кнопку «купить», телефон отправляет платное СМС, пользователю приходит ответный код, который нужно ввести в окно регистрации. Но если купить игру, запомнить ответный код, сбросить телефон и попробовать заново ввести этот же код, то он, с большой вероятностью, не подойдет.
Как так?

Генератор псевдослучайных чисел инициализируется значением текущей минуты;

Генерируется псевдослучайное число от 1000 до 9999;

Случайное число отправляется в СМС и сохраняется в NVRAM;

Ответный код проверяется с учётом сохраненного случайного числа.

Связка запрос-ответ уникальна для каждой модели, и зависит от той минуты, в которую была нажата кнопка «купить»:

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

Замена переменных в функции инициализации

Найти функции можно по отладочным строкам, содержащим характерное имя файла:

Функция вывода номера строки файла src/gameloft_billing.c

Функция вывода номера строки файла src/gameloft_billing.c

Отключаем Funbox

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

Как и в случае с играми, в функциях Funbox присутствует отладочный вывод номеров строк с именем файла "src/gmb_smart_sms_win.c". С этих строк можно «дошагать» до функции-обработчика выделения элемента главного меню (в CoolMMI они называются hilite, очевидно имеется в виду highlight), в котором и находится иконка.
Методом проб и ошибок удалось обнаружить обработчик входа в интерфейс подписок, который был благополучно за'nop'лен — нажатие на иконку Funbox центральной кнопкой или левой софт-клавишей более ни к чему не приводят.

Функция расположена в несжатой области и легко поддаётся изменению.

Исправляем громкость

Компонент аудиоусилителя телефона имеет 15 ступеней усиления, но для мультимедии прошивка телефона предусматривает всего 7 уровней громкости, с большими шагами между ними. Это неудобно: на «единице» телефон еле слышно, а на «двойке» он сразу ОРЁТ.

Использование регистра происходит через сегмент KSEG1, в обход MMU и кешей. Полный адрес audio_spk_cfg, обращения к которому нужно искать в дисассемблере — 0xA1A24028.

После непродолжительного поиска обнаруживается функция, преобразующая уровень усиления (по всей видимости, в децибелах) в значение SPK_GAIN:

Изменив уровни с [0, 2, 4, 6, 8, 10, 12, 14] на [0, 1, 2, 3, 5, 6, 8, 10], мы получили более плавную регулировку ценой уменьшения максимальной громкости, которая всё равно только приводила к перегрузу маломощного динамика телефона.

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

Неожиданные трудности

Для MIPS существует два стандарта 16-битных инструкций: MIPS16e и microMIPS. Первый является дополнением (extension) к архитектуре MIPS32: код может использовать одновременно оба набора инструкций, процессор может переключаться между режимом выполнения MIPS32 и MIPS16e в любое время, прыжком на нечётный адрес инструкции. Не все инструкции и возможности MIPS можно выразить командами MIPS16e — иногда переключение в режим MIPS32 просто необходимо.
microMIPS же — полноценная архитектура с полным набором 16-битных команд. Вот что говорит официальная брошюра:

The benchmarks prove that the microMIPS architecture delivers similar memory savings as the MIPS16e ASE, but with much better performance. The question is how? The list of reasons includes new optimized 16- and 32-bit instructions, an optimized recoding of MIPS32 instructions, and optimized op code format and register utilization.

The earlier stated fact that microMIPS is a complete architecture – not an extension − is also key. Both MIPS16e, and for that matter the similarly-targeted ARM Thumb technologies, are extensions. Both microMIPS and these extensions rely on the concept of new 16-bit versions of regularly used instructions to minimize code size. And all deliver reductions in code size. But only microMIPS delivers 32-bit performance.

The microMIPS mode can handle all operations such as exception handling, and offers a superset of the MIPS32 ISA. With MIPS16e, the programmer had to swap modes to use ASEs such as MIPS DSP. The microMIPS mode can seamlessly access the ASEs. The need to run legacy binary code is really the only reason that would prompt a programmer to use the MIPS32 mode.

Проблема в том, что привычные утилиты инлайн-ассемблирования кода для патча программы, такие как rasm2 из состава Radare2 и kstool из KeyStone, не поддерживают режим MIPS16e. Они либо ассемблируют 32-битные команды, несмотря на то, что выбран 16-битный режим, либо выводят опкоды, явно не соответствующие MIPS16e.

К счастью, ассемблер gcc поддерживает режим MIPS16e, а работать с ним почти так же удобно, как с rasm2/kstool. Есть, разве что, одна особенность: он выравнивает блок nop'ами.

Вывод

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


Я не нашел в интернете похожую статью, чтобы все чипсеты сравнивались в одном месте, поэтому решил написать сам про отличия чипсетов Intel.

Смотрите самые ходовые мат. платы на Яндекс.Марект!

Это слегка урезанная версия Z, по сути, это отличный вариант, если вы не хотите переплачивать за возможность разгона своего процессора, за премиальные материалы.

ASRock H570M Pro4

ASRock H570M Pro4

Gigabyte B450M DS3H

Gigabyte B450M DS3H

Как пример, есть отличная системная плата Gigabyte B450M DS3H, цена всего около 5.000 рублей. Как эконом вариант подойдет идеально!

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


Серии Q имеют наименьшее количество функций по сравнению с сериями H и B. Кроме того, если посмотреть на местный магазин компьютерной техники, у них даже не продается серия Q. Я так думаю это чипсеты специальные для какого-то узкого сегмента пользователей.

Asus Business Motherboard Pro Q470

Материнская плата Asus Business Motherboard Pro Q470

Gigabyte W480 VISION D

Gigabyte W480 VISION D

Читайте также: