Перейти к содержанию

Станция 2

Розничное имя — Яндекс Станция 2 (флагман 2-го поколения). SoC — Amlogic AXG (как у Лайта), ядро 4.9, но это «старшая» AXG-модель: вдвое больше ОЗУ (~490 МБ), 512 МБ NAND, сенсорная панель, Wi-Fi Marvell и USB-C PD.

Путаница кодовых имён

В device-tree эта модель называется yandex,station-midi (model «Yandex Station Midi», hostname …gen2). Это не розничная «Станция Миди» — та имеет кодовое имя Cucumber на SoC A5. То есть внутреннее имя «Midi» принадлежит розничной Станции 2, а розничная «Станция Миди» — это «Cucumber». Ориентируйтесь на SoC и ОЗУ, а не на слово «Midi». И не путайте с Станцией Макс, у которой Android-идентификатор ro.product.device=yandexstation_2 (другое устройство, Android 9).

Платформа в двух словах

SoC Amlogic AXG (amlogic, axg)
CPU 4× Cortex-A53 (0xd03), до 1.2 ГГц
ОЗУ ~490 МБ (MemTotal 501664 kB) — вдвое больше минислушателей
Флеш NAND Micron 512 МБ SLC (ID 0x2c 0xdc, page 4096, erase 256 КБ), UBI
Ядро Linux 4.9.68 aarch64 (сборка 20261013)
Userspace Buildroot 2020.02.1
ЦАП-АЦП мик. TLV320ADC3101 (TI, АЦП для микрофонов)
Усилитель SY6045S (как у Мини 2)
Индикация LED-дисплей через Gowin (gowin_led_device) — FPGA/CPLD-контроллер
Сенсор касания midi_touch
Питание USB-C Power Delivery (husb238_pd)
Датчик света LTR-308 (0-0x53)
Радио Marvell/NXP (mlan + moal), BT через hci_uart
quasar 3.21 (0.369.1.46.4778263334.20261013)

Чем отличается от AXG-минислушателей

  • Другой Wi-Fi: Marvell/NXP (mlan + moal) — на Лайте/Мини 2 Unisoc, на Мини 1 Broadcom. BT — через hci_uart.
  • Больше ресурсов: ~490 МБ ОЗУ и 512 МБ NAND Micron (у минислушателей — 256 МБ Toshiba).
  • LED-дисплей на Gowin (gowin_led_device) — отдельный FPGA/CPLD-контроллер индикации (у Станции 2 — текстово-пиксельная «шторка»), а не прямые sysfs-leds (список /sys/class/leds пуст).
  • Сенсорная панель (midi_touch).
  • USB-C PD (husb238) и отдельный аудио-АЦП TLV320ADC3101 для микрофонного тракта.

Карта флеша (MTD)

mtd0 "bootloader" 4 MB    mtd1 "tpl" 6 MB     mtd2 "boot" 20 MB
mtd3 "system" 176 MB -> ubi0:rootfs (ubifs, RO)
mtd4 "nv" 1 MB -> /tee (vfat, RO)
mtd5 "bkupgrade" 233 MB -> ubi1 (RW) = /bkupgrade
mtd6 "recovery" 60 MB

NAND — Micron 512 МБ SLC, page 4096, OOB 128, erase 256 КБ. Разделы заметно крупнее, чем у минислушателей.

Шина I2C и периферия

Шина:адрес Чип Назначение
0-0x08 HUSB238 (husb238_pd) USB-C Power Delivery
0-0x53 LTR-308 датчик освещённости
0-0x51/0x54/0x55, 1-0x50 24C02 EEPROM
1-0x18 TLV320ADC3101 аудио-АЦП (микрофоны)
1-0x2a SY6045S Class-D усилитель

Звук

  • ALSA card0 AML-AUGESOUND: TDM-B-sy6045s-hifi (усилитель), TDM-C-tlv320adc3101-adc (АЦП микрофонов), PDM (микрофоны).

Вход

  • gpio-keys — физические кнопки.
  • midi_touch — сенсорная панель.

LED-панель (Gowin)

Под светорассеивающей поверхностью — панель из 88 светодиодов. Ей управляет отдельный контроллер Gowin FPGA/CPLD (gowin_led_device) по SPI, а из Linux она видна как обычный framebuffer:

Параметр Значение
Устройство /dev/fb0 (YNDX LED screen)
Разрешение 89×1 (логическое)
Формат 32 bpp, 4 байта на пиксель
Размер кадра 356 байт
Светодиоды 88, индексы 0–87 (88 не загорается)

Хотя разрешение логическое 89×1, светодиоды стоят в шахматном порядке, и каждый пиксель кадра — один светодиод. Карта индексов составлена экспериментально:

Карта светодиодов Станции 2

Красные ячейки — основная панель (0–83), цветные — четыре центральных светодиода (84–87), белые — пустые места.

Прямое управление

Кадр — 356 байт в /dev/fb0, светодиод index — байты с index * 4 по index * 4 + 3. Вся панель на небольшой яркости (нужен Python — yse install python3):

with open("/dev/fb0", "wb", buffering=0) as fb:
    fb.write(bytes([0x10, 0x10, 0x10, 0x00]) * 89)

Порядок цветовых каналов в пикселе пока не проверен — для тестов задавайте три канала одинаковыми.

  • Рассеиватель сглаживает соседние светодиоды: крупные символы и силуэты читаются лучше мелких деталей.
  • Прошивка перерисовывает панель во время работы Алисы и может затереть ваш кадр.
  • Штатные анимации — файлы .led в /system/vendor/quasar/ledpatterns/oknix/.

USB-host (OTG)

Порт Type-C по умолчанию отдан gadget-контроллеру: dwc_otg (ff400000.dwc2_a) держит USB2-порт 1, а xhci-hcd.0.auto стартует без порта и умирает при загрузке:

xhci-hcd xhci-hcd.0.auto: xHCI host not responding to stop endpoint command.
xhci-hcd xhci-hcd.0.auto: Assuming host is dying, halting host.
xhci-hcd xhci-hcd.0.auto: HC died; cleaning up

Переключение — те же регистры, что у Лайт (PHY ffe09000, раскладка как в Amlogic phy-aml-new-usb3.c, set_mode()):

Адрес Регистр До После Смысл
0xffe09084 usb_r1 0x01000000 0x01000000 у Лайт здесь 0x01002000; на Станции 2 порт уже включён
0xffe09080 usb_r0 0x8000006A 0x0000006A u2d_act = 0: порт → xHCI
0xffe09090 usb_r4 0x00000002 0x00000000 p21_SLEEPM0 = 0
0xffe09020 u2p_r0 0x10252000 0x00252060 подтяжки 15 кОм на D+/D- (роль хоста)

Порядок: unbind ff400000.dwc2_a → unbind xhci-hcd.0.auto → четыре devmem → bind xhci-hcd.0.auto. dwc3 не отвязывать — будет oops в dwc3_remove.

Проверено на живом устройстве (YNDX-00051, прошивка от 21.10.2026):

  • хаб Genesys 05e3:0610 плюс вложенный WCH 1a86:8091 — определяются на 480 Мбит/с;
  • флешка 8,18 ГБ (/dev/sdb, FAT32, монтируется) и SD-карта 7,4 ГБ в картридере 05e3:0751 (/dev/sda) — читаются;
  • USB-Ethernet Realtek RTL8153 (0bda:8153) — после r8152 появляется eth0;
  • модули из contrib/modules (sd_mod, usb-storage, uas, mii, usbnet, r8152) загружаются без единой ошибки ядра; snd-usb-audio на этой модели не проверялся.

Отличия от рецепта для Лайт:

  • картридер не сообщает о вставке карты. /dev/sda остаётся нулевого размера, пока устройство не переподключить: echo 1-1.2.1 > /sys/bus/usb/drivers/usb/unbind, пауза, echo 1-1.2.1 > /sys/bus/usb/drivers/usb/bind. Пересчёт scsi_host/*/scan помогает только на старте; на раннем старте каталога ещё нет и glob подставляется буквально;
  • после переключения USB-gadget (ADB, режим прошивки) недоступен до перезагрузки.

Установка та же, что на Лайт: contrib/otg/install.sh распознаёт обе модели (yandex,station-micro и yandex,station-midi). Пошаговая инструкция, скрипты и защита от бутлупа — в рецепте USB Host (OTG).

Что ещё проверить

  • Протокол Gowin LED по SPI, порядок цветовых каналов и назначение индекса 88 (см. LED-панель).
  • Marvell/NXP Wi-Fi (mlan/moal) — чип и возможности (monitor/AP).
  • Карта регистров TLV320ADC3101 (микрофонный тракт).
  • USB-C PD-профили (husb238).

Данные для этой страницы собрал @sharazhniy — спасибо за вклад! 🙌