Станция Миди¶
Розничное имя — Яндекс Станция Миди; кодовое имя — Cucumber (device-tree
Yandex Cucumber DVT2, yandex,cucumber-dvt2 / yandex,cucumber, amlogic, a5,
amlogic-dt-id = "a5_cucumber_dvt2").
Это новейшее поколение Amlogic-платформы: SoC A5 (а не AXG, как у
Лайта/Мини 2), ядро 5.4, более быстрые
ядра Cortex-A55 @ ~2 ГГц, хранилище eMMC, USB-C PD, Zigbee-хаб и фирменные
LED-часы.
Прошивка — всё та же Buildroot + quasar/maind, так что приёмы из раздела Как это устроено применимы (с поправкой на ядро 5.4 и новые пути).
Получение root¶
- DNS-метод — как на большинстве моделей, на Миди проверен.
- AliceBridge — с Android-телефона, без компьютера: поддержка Миди добавлена, получение root проверено. Совместимость с другими версиями прошивки пока не проверялась.
Дальше — SSH и отключение обновлений.
Платформа в двух словах¶
| SoC | Amlogic A5 (amlogic, a5) |
| CPU | 4× Cortex-A55 (0xd05), до 2.016 ГГц (100 МГц … 2016 МГц), см. DVFS |
| ISA | ARMv8.2 (atomics, fphp, asimdhp, asimddp, lrcpc, dcpop) |
| ОЗУ | ~980 МБ (MemTotal 997788 kB; в DT memory = 0x3F800000) |
| Ядро | Linux 5.4.180 aarch64, Linaro GCC 6.3.1 |
| Userspace | Buildroot 2023.11.1 (заметно новее, чем у AXG-моделей) |
| Хранилище | eMMC HS400, 8 бит (MTD пуст, UBI не используется), см. разделы |
| NPU | Vivante VIPNano-Q (galcore) — нейроускоритель; GPU нет |
| DSP | Cadence HiFi4 (hifi4dsp) @ 800 МГц + аппаратный VAD |
| Усилитель | 2× FS2105 (Fourier Semi, smart-PA): вуфер + твитеры |
| Микрофоны | 4× PDM на крышке, прямоугольником вокруг центра, см. Микрофоны |
| Индикация | LED-часы: logo (6 RGB) + ring (24 RGB) + белые сегменты циферблата |
| Питание | USB-C Power Delivery (husb238_pd + ya_pd_controllers) |
| Умный дом | Zigbee на чипе Telink (zigbee_control) + предположительно Matter/Zenoh (quasar) |
| Радио | Unisoc (vlsicomm + aml_sdio + sdio_bt), BT-пульт (input_btrcu) |
Версии на снимках:
| quasar | ядро (сборка) | U-Boot | |
|---|---|---|---|
| снимок 1 | 3.21 (0.369.1.46.4778262955.20261013) |
20261013 | — |
| снимок 2 | 0.369.1.50.4794663100.20261021.160 |
21.10.2026 | 01.01.261021.115421 |
Чем принципиально отличается¶
- Новый SoC — Amlogic A5 с ядрами Cortex-A55 (
0xd05) до 2 ГГц и ядром 5.4 (у AXG-моделей — A530xd03@1.2 ГГц, ядро 4.9). - Хранилище eMMC, а не NAND+UBI:
/proc/mtdпуст, UBI-томов нет. - USB-C Power Delivery: контроллер HUSB238 (
0-0x08) + модульya_pd_controllers— питание/согласование по USB-C PD. - Zigbee-хаб: отдельный радиочип Telink под управлением модуля
zigbee_control(см. Zigbee). - LED-часы: помимо кольца и логотипа есть белые сегменты циферблата — отдельная подсистема индикации (см. ниже).
- NPU Vivante VIPNano-Q (
galcore) и DSP HiFi4 — в SoC есть ускорители для нейросетей и обработки звука. - Усилители FS2105 (вуфер + твитеры), микрофоны PDM, аппаратный
LOOPBACK-A(AEC).
Шина I2C и периферия (4 шины)¶
| Шина:адрес | Чип | Назначение |
|---|---|---|
0-0x08 |
HUSB238 (husb238_pd) | USB-C Power Delivery контроллер |
1-0x12 |
AW96105 | ёмкостный SAR-сенсор (сенсорные кнопки) |
1-0x20 |
AW21018 | LED-драйвер (матрица) |
1-0x34, 1-0x35 |
AW21036 | LED-драйверы (матрица) |
1-0x51 |
PT7C4563 | RTC (внешний; в SoC есть ещё свой meson-rtc) |
1-0x55 |
24C02A | EEPROM платы top |
2-0x50 |
24C02A | EEPROM платы main |
3-0x51 |
24C02A | EEPROM платы clock |
2-0x68 |
FS2105 | Class-D усилитель — вуфер |
2-0x6a |
FS2105 | Class-D усилитель — твитеры |
3-0x21 |
AW21012 | LED-драйвер (матрица) |
3-0x37 |
AW21036 | LED-драйвер (матрица) |
3-0x53 |
LTR-308 (ltr308als01) | датчик освещённости |
Привязка EEPROM к платам — из узла pcba_ids (eeprom-names = "main", "top", "clock",
плюс unifykey assembly); его читает модуль quasar_pcba_ids.
Индикация (LED-часы)¶
У Миди самая сложная индикация в семействе — целый циферблат плюс кольцо и
логотип. Все узлы в /sys/class/leds/:
- Логотип:
cucumber:{red,green,blue}:logo0..5— 6 RGB-зон. - Кольцо:
cucumber:{red,green,blue}:ring0..23— 24 RGB-зоны. - Циферблат (белые сегменты):
cucumber:white:clock-*— цифры/сегменты (clock-a1..4,clock-b1..4, …clock-q1..5,clock-deg,clock-h/l/m/p/q…) — семисегментная раскладка часов. - Синхро-узлы:
cucumber:logo:sync,cucumber:ringA:sync,cucumber:ringB:sync,cucumber:sync:clock-0/1.
Драйверы: leds_yandex_aw21036, leds_aw2101x, подсистема quasar_led_ring
(Awinic AW210xx — это LED-matrix контроллеры с индивидуальной адресацией каналов).
Кроме sysfs, кольцо и логотип выставлены как framebuffer (драйвер yandex,ledfb):
| Устройство | Имя | Размер | bpp | Примечание |
|---|---|---|---|---|
/dev/fb0 |
ring |
24×1 | 24 | yandex,hw-brightness |
/dev/fb1 |
logo |
6×1 | 24 |
Сегменты циферблата во framebuffer не входят — только /sys/class/leds/cucumber:white:clock-*.
Нужно задокументировать
Формат кадра для /dev/fb0//dev/fb1 (порядок байт RGB, как quasar рисует анимации
и не перетирает ли он кадр) и протокол анимаций сегментов циферблата. Базовый доступ —
запись яркости в /sys/class/leds/cucumber:*.
Звук¶
- ALSA card0
AML-AUGESOUND:TDM-A-fs2105-speakers(playback+capture),PDM-dummy-mics(микрофоны),LOOPBACK-A(AEC-reference). - Усилители — 2× FS2105, полосы разделены:
prefix-names = "woofer", "tweeters"(0x68→ вуфер,0x6a→ твитеры). TDM-A: формат i2s, 2 слота × 32 бит, MCLK 12.288 МГц. - Микрофоны — PDM; у
LOOPBACK-Adatain_chnum = 4,datain_chmask = 0xf. Микрофонов действительно 4, раскладка и доступ — в разделе Микрофоны. - DSP HiFi4 (
hifi4dsp): один DSP (dspa) @ 800 МГц, прошивка в SRAM0xF7030000(3.6 МБ), CMA-пулlinux,dsp_fw8 МБ. - VAD (
snd-vad-top) с прерываниемirq_wakeup— аппаратное детектирование голоса для пробуждения из сна. - В DT есть узел
dolby_fw(1 МБ под прошивку Dolby).
Микрофоны¶
На крышке четыре отверстия микрофонов. Они стоят прямоугольником вокруг центра, между
кнопками «−» и «+»: по ширине (слева направо) расстояние примерно в 1,5 раза больше, чем
по глубине. Каналы hw:0,1 (PDM-dummy-mics), вид сверху, лицевая сторона (циферблат) снизу:
зад (разъём питания)
┌───────────────────────────┐
│ мик 2 мик 3 │
− │ │ +
│ мик 1 мик 0 │
└───────────────────────────┘
лицевая (циферблат)
| Канал | Где |
|---|---|
| 0 | спереди справа (сторона «+») |
| 1 | спереди слева (сторона «−») |
| 2 | сзади слева (сторона «−») |
| 3 | сзади справа (сторона «+») |
Как проверяли: тыкали ручкой у каждого отверстия и смотрели, в какой канал звук приходит первым (задержки по всем шести парам через GCC-PHAT). Между дальними микрофонами звук идёт до ~14 сэмплов при 96 кГц. По этим задержкам направление на источник определяется уверенно, на этом работает подсветка «откуда звук».
Захват:
Не меняйте частоту PDM
PDM общий с захватом прошивки: maind --platformd держит hw:0,2 (LOOPBACK-A,
8 каналов, S16, 96000 Гц), в который приходят те же микрофоны. Если открыть hw:0,1
на другой частоте, PDM перенастраивается под вас, и Алиса глохнет: на 16000 Гц её поток
встаёт полностью, на 48000 Гц идёт вдвое медленнее. Так остаётся и после закрытия
arecord, пока PDM снова не откроют на 96000 Гц. На 96000 Гц (4 канала, S16 или
S32) запись параллельно с Алисой безопасна. Проверить, что прошивка получает звук:
hw_ptr в /proc/asound/card0/pcm2c/sub0/status должен расти на ~96000 в секунду.
Частота захвата прошивки видна в /proc/asound/card0/pcm2c/sub0/hw_params.
Вход¶
awinic_sar— сенсорные кнопки (AW96105):linux,keycodes=KEY_VOICECOMMAND,KEY_VOLUMEUP,KEY_VOLUMEDOWN.vad_keypad— кнопки (VAD-клавиатура).mute(gpio-keys) — аппаратное отключение микрофона, два узла:mute-key— кнопка,KEY_MUTE;mute-switch— переключатель с состоянием,EV_SW/SW_MUTE_DEVICE.
input_btrcu— Bluetooth-пульт.
Zigbee¶
- Радио — отдельный чип Telink: прошивка
/system/vendor/quasar/zigbee/gateway.yblнесёт сигнатуру TelinkKNLT(смещение0x20), код — RISC-V (вероятно, семейство TLSR9 / TL321x). - Узел DT
zigbee(yandex,zigbee-control):zb-reset-gpiosиzb-boot-gpios— Linux может сбросить радиочип и перевести его в бутлоадер, т.е. прошивка радио обновляется со стороны Станции. - Связь с SoC — по UART с RTS/CTS (см. UART).
- Рядом лежит каталог
/system/vendor/quasar/zigbee/http/(index.html+ bootstrap).
UART¶
| tty | Адрес | Назначение |
|---|---|---|
ttyS0 |
FE07A000 |
отладочная консоль; в env U-Boot console=ttyS0,921600, но ядро стартует с пустым console=, а U-Boot — с silent=1 |
ttyS1 |
FE078000 |
RTS/CTS, есть трафик — BT / Zigbee |
ttyS2 |
FE07C000 |
RTS/CTS, есть трафик — BT / Zigbee |
Разделы eMMC¶
Драйвер разделов Amlogic создаёт устройства прямо в /dev/<имя>
(/dev/block/by-name нет); /dev/root → system, root=PARTLABEL=system.
| Раздел | Устройство | Размер | Что внутри |
|---|---|---|---|
| bootloader | mmcblk0p1 |
4M | U-Boot; копии — mmcblk0boot0/1 (/dev/bootloader0/1) |
| reserved | mmcblk0p2 |
64M | таблица разделов MPT, unifykeys, DTB |
| cache | mmcblk0p3 |
— | узел /dev/cache есть, в /proc/partitions отсутствует |
| env | mmcblk0p4 |
8M | U-Boot env (64 КБ, CRC32) |
| misc | mmcblk0p5 |
4M | |
| tee | mmcblk0p6 |
48M | ext4, /tee (ro) — OP-TEE secure storage |
| aml_sysrecovery | mmcblk0p7 |
1.5G | |
| boot | mmcblk0p8 |
64M | ядро + DTB |
| recovery | mmcblk0p9 |
192M | |
| system | mmcblk0p10 |
1G | rootfs (ext4) |
| ota | mmcblk0p11 |
1.5G | ext4, /ota — swupdate.*, data/wpa_supplicant.conf, data/quasar |
| data | mmcblk0p12 |
2.8G | ext4, /data |
Личные данные
Кроме data, личное лежит в ota (пароли Wi-Fi, состояние quasar — в том числе
в удалённых блоках), env (серийник, cpu_id), reserved (unifykeys:
deviceid, key_blob) и tee. Не публикуйте их дампы как есть.
Питание и температура¶
CPU-регулятор vddcpu0 — PWM, 0.689…1.049 В; governor schedutil.
| МГц | 100…1404 | 1500 | 1608 | 1704 | 1800 | 1920 | 2016 |
|---|---|---|---|---|---|---|---|
| В | 0.769 | 0.799 | 0.829 | 0.869 | 0.909 | 0.969 | 1.009 |
Точки ниже 1404 МГц: 100, 250, 500, 667, 1000, 1200, 1404.
Термозона soc_thermal: троттлинг с 85 °C, второй порог 95 °C,
критическая 105 °C; sustainable-power 1160 мВт.
Прочее железо по DT¶
- Wi-Fi (
aml_wifi): SDIO 4 бит до 200 МГц,power_on/IRQ на GPIO, 32 кГц от PWM. - BT (
aml_bt): GPIOreset,btwakeup,hostwake. - USB: контроллер CRG DRD (PHY USB2 + USB3), OTG.
- pstore/ramoops:
0x06000000, 1 МБ — логи паники ядра переживают перезагрузку (/sys/fs/pstore). - Безопасность: JTAG выключен (
select = "disable"),secmon/securitykey(ключи через SMC),unifykey,efuse, аппаратные AES/SHA/TDES и TRNG; verified boot (androidboot.verifiedbootstate=green). - Есть в SoC, но выключено: Ethernet (dwmac, внутренний PHY), ИК-приёмник
(
meson-ir),ramdump_bl33z.
Ядро и модули (отличия от AXG)¶
Загружены: aml_sdio, awinic_sar, dtbocfg (DTB-оверлеи), galcore (NPU Vivante),
leds_aw2101x, leds_yandex_aw21036, ltr308als01, optee/optee_armtz (TEE),
quasar_led_ring, quasar_pcba_ids, sdio_bt, snd_soc_fs2105, vlsicomm,
ya_pd_controllers (USB-C PD), zigbee_control (Zigbee).
Конфиг ядра доступен в /proc/config.gz (CONFIG_IKCONFIG=y). DTB-оверлей из
/boot: yandex-cucumber-i2ctop-overlay.dtb (включает i2c@68000).
quasar-роли на снимке: --platformd, --mediad, --loggerd (на AXG-моделях
логирование было --telemetry / --fluent-bitd).
Что ещё проверить¶
- Формат кадра LED-framebuffer'ов и анимаций сегментов циферблата.
- Zigbee: точная модель Telink и можно ли использовать его как полноценный Zigbee-координатор.
- USB-C PD: что отдаёт
husb238, профили питания. - Отключение OTA и durable-доступ на ядре 5.4 / eMMC-rootfs.
Данные для этой страницы собрали @egorsexy и @chelik0002 — спасибо за вклад! 🙌