Источник: ROSA Wiki · Лицензия: Creative Commons Attribution · Оригинал: https://wiki.rosa.ru/index.php/MT76.html
Это независимое зеркало и не является официальным сайтом ROSA.
Jump to content

MT76

Поддержка Wi-Fi и Bluetooth чипов MediaTek в Росе

Поддержка WiFi-адаптеров MediaTek в ядрах ROSA: 6.12 (пакет kernel-6.12-generic), 6.18 (kernel-6.18-generic) и внешним пакетом mt76 (пакеты kernel-modules-mt76-6.12-generic и kernel-modules-mt76-6.18-generic для чипов, которых нет в ядре 6.18).

Узнать текущее ядро можно командой:

uname -r

Узнать список установленных ядер можно такой командой:

rpm -q --whatprovides kernel | rpm-sort

Если у вас проблемы с WiFi MediaTek и ядро старее 6.18, то установите ядро 6.18, перезагрузитесь и проверьте, не ушли ли проблемы:

sudo dnf install task-kernel-6.18-generic

Таблица поддержки (PCIe-адаптеры)

Обозначения: «+» — поддерживается, «−» — не поддерживается. PCI ID указаны в формате vendor:device.

Устройство PCI ID Поддержка в 6.12 Поддержка в 6.18 Поддержка через mt76
MT7602E 14c3:7602 + + -
MT7603E 14c3:7603 + + -
MT7610E 14c3:7610 + + -
MT7630E 14c3:7630 + + -
MT7650E 14c3:7650 + + -
MT7612E 14c3:7612 + + -
MT7662E 14c3:7662 + + -
MT7615E 14c3:7615 + + -
MT7611 14c3:7611 + + -
MT7663 (PCIe-вариант) 14c3:7663 + + -
MT7915A/MT7915D [Filogic 615] 14c3:7915 + + -
MT7915A/MT7915D (hif link) 14c3:7916 + + -
MT7916A/MT7916D [Filogic 630] 14c3:7906 + + -
MT7916 (второй ID) 14c3:790a + + -
MT7921 [Filogic 330] 14c3:7961 + + -
MT7921K (AMD RZ608) 14c3:0608 + + -
MT7922 (AMD RZ616) 14c3:0616 + + -
MT7920 14c3:7920 + + -
MT7922 14c3:7922 + + -
MT7922 (ITTIM) 0b48:7922 + + -
MT7925 [Filogic 360] 14c3:7925 + + -
MT7925 (RZ717) 14c3:0717 + + -
MT7927 [Filogic 380] 14c3:7927 - - +
MT7927 (чип MT6639) 14c3:6639 - - +
MT7927 (второй ID) 14c3:0738 - - +
MT7928 14c3:7928 - - +*
MT7928 (второй ID) 14c3:7935 - - +*
MT7902 [Filogic 310] 14c3:7902 - - +
MT7996 [Filogic 680] (primary link) 14c3:7990 + + -
MT7996 (secondary link) 14c3:7991 + + -
MT7992 [Filogic 660] (primary link) 14c3:7992 + + -
MT7992 (secondary link) 14c3:799a + + -
MT7990 14c3:7993 - + -
MT7990 (второй ID) 14c3:799b - + -

Примечания

  • Идентификаторы устройств, уже поддерживаемых штатными драйверами ядра, из внешнего пакета mt76 вырезаны: каждый адаптер обслуживает ровно один драйвер, конфликты исключены. Поэтому в столбце mt76 «+» стоит только у чипов, отсутствующих в 6.18.
  • WiFi-прошивки для устройств, поддерживаемых через mt76, находятся в пакете mt76-firmware, каталог /usr/lib/firmware/mt76p/; прошивки остальных устройств — в пакете linux-firmware.
  • Bluetooth-часть адаптеров обслуживает штатный драйвер btusb: прошивка MT7902 — в пакете linux-firmware, прошивка MT7927 (BT_RAM_CODE_MT6639) — в пакете mt76-firmware, каталог /usr/lib/firmware/mediatek/mt7927/ (в linux-firmware её пока нет).
  • Внешний пакет mt76 дополнительно обслуживает USB- и SDIO-варианты новых чипов: MT7902 (USB 0e8d:7902, SDIO 7902) и MT7927 (USB 0e8d:6639).
  • USB- и SDIO-варианты остальных чипов (MT7601U, MT76x0U, MT76x2U, MT7663, MT7921, MT7925) поддерживаются штатными драйверами обоих ядер.
  • * Для MT7928 MediaTek ещё не опубликовала прошивки: драйвер в пакете mt76 поддерживает эти адаптеры, но работать они начнут после появления прошивок; WiFi-файлы при этом нужно положить в каталог /usr/lib/firmware/mt76p/mt7928/.

Пропадает Wi-Fi после ждущего режима на ноутбуках с адаптером MediaTek MT7920

На некоторых ноутбуках с беспроводным адаптером MediaTek MT7920 (ID производителя и устройства 14c3:7920, драйвер mt7921e) после выхода из ждущего режима перестаёт работать Wi-Fi, наблюдаются проблемы с выключением. Проблема исправлена в пакетах kernel-6.12-generic и kernel-6.18-generic актуальных версий: для подтверждённых моделей ноутбуков обходное решение включается автоматически.

Симптомы

  • после закрытия и открытия крышки (выхода из ждущего режима) Wi-Fi не работает; помогает только перезагрузка;
  • сразу после пробуждения система может 1–1,5 минуты не отвечать на ввод (или отвечать с большой задержкой);
  • иногда перезагрузка после такого пробуждения зависает и требуется выключение кнопкой питания.

Относится ли это к вам

Проверьте адаптер командой:

lspci -nn | grep -i -E "network|mediatek|wireless"

Если в строке присутствует 14c3:7920 — у вас адаптер MT7920, и статья к вам относится. Если адаптер другой (например, 14c3:7922 или Intel), эта проблема не ваша.

Автоматическое включение

Обходное решение включается автоматически на подтверждённых моделях (сейчас это ASUS Vivobook S 14 S3407CA). Убедиться, что установленное ядро поддерживает параметр, можно так:

modinfo mt7921e | grep keep_d0

Если команда вывела описание параметра — ядро поддерживает обходное решение. При загрузке системы автоматическое применение отмечается в журнале ядра:

sudo dmesg | grep -i keep_d0

Строка вида

mt7921e 0000:01:00.0: enabling keep_d0 system suspend workaround for this model

означает, что обход включился сам. Текущее значение параметра:

cat /sys/module/mt7921e/parameters/keep_d0

Возможные значения: -1 — определять автоматически (по умолчанию), 1 — включить принудительно, 0 — выключить принудительно.

Ручная настройка

Если ваша модель пока не входит в автоматический список, параметр можно включить вручную.

Для проверки прямо сейчас (до перезагрузки), при работающем Wi-Fi:

echo 1 | sudo tee /sys/module/mt7921e/parameters/keep_d0

затем переведите ноутбук в ждущий режим и разбудите его.

Постоянная настройка. Создайте файл /etc/modprobe.d/mt7921e-keep-d0.conf от root с одной строкой:

options mt7921e keep_d0=1

и пересоздайте initrd:

sudo initramfs-regen

После перезагрузки проверьте журнал ядра командой из предыдущего раздела.

Если обходное решение нужно отключить (например, на вашей модели всё работает и без него, а расход батареи в ждущем режиме хочется минимизировать), создайте такой же файл со строкой options mt7921e keep_d0=0 и выполните sudo initramfs-regen.

Проверка других режимов ожидания

Режим ожидания можно переключать на работающей системе — удобно для проверки поведения ноутбука.

Текущий режим:

cat /sys/power/mem_sleep

Выбранный режим отмечен квадратными скобками, например s2idle [deep] — используется deep. Переключение действует до перезагрузки:

echo s2idle | sudo tee /sys/power/mem_sleep

или

echo deep | sudo tee /sys/power/mem_sleep

после чего переведите ноутбук в ждущий режим и разбудите его.

Постоянная фиксация режима. Чтобы режим применялся при каждой загрузке, укажите его в параметрах ядра. Откройте от root файл /etc/default/grub, найдите строку GRUB_CMDLINE_LINUX_DEFAULT и допишите mem_sleep_default=… внутрь кавычек, не удаляя имеющиеся параметры, например:

GRUB_CMDLINE_LINUX_DEFAULT='splash=silent logo.nologo quiet mem_sleep_default=s2idle'

Доступные значения: s2idle и deep. Затем обновите конфигурацию загрузчика:

sudo update-grub2

Проверить режим после перезагрузки можно командой cat /sys/power/mem_sleep.

Внимание: на моделях с описанной ошибкой прошивки «глубокий» сон (deep, S3) после первого же пробуждения отключает события крышки и адаптера питания до перезагрузки (см. раздел «Ошибка в прошивке ноутбука»). Поэкспериментировав с deep, верните s2idle и перезагрузите ноутбук.

Как добавить вашу модель в автоматический список

Если на вашем ноутбуке с адаптером 14c3:7920 воспроизводятся симптомы, а ручное включение параметра (keep_d0=1) устраняет их, пришлите на support@rosa.ru следующие данные, чтобы модель добавили в автоматический список:

  1. Сведения о машине (вывод трёх команд):
sudo cat /sys/class/dmi/id/board_name
sudo cat /sys/class/dmi/id/product_name
sudo cat /sys/class/dmi/id/bios_version
  1. Подтверждение адаптера: вывод команды lspci -nn | grep -i network;
  2. Журнал ядра проблемной загрузки — той, после которой пропал Wi-Fi (обычно предыдущая):
    sudo journalctl -b -1 -k | grep -iE "mt7921e|driver own|not ready"
    Если строк не нашлось, приложите sudo journalctl -b -1 -k | grep -i mt7921e целиком;
  3. Краткое описание: на какой модели ноутбука, после каких действий пропадает Wi-Fi и помогает ли keep_d0=1.

Ошибка в прошивке ноутбука

Причина проблемы — ошибки в прошивке (BIOS/UEFI) ноутбука, а не в операционной системе. На подтверждённых моделях их две.

  1. При уходе в «лёгкий» ждущий режим (s2idle, используется по умолчанию) адаптер Wi-Fi переводится в промежуточное состояние пониженного питания, но корректного возврата из него прошивка не обеспечивает: канал PCIe, по которому система общается с адаптером, после пробуждения не восстанавливается. В Windows эта проблема не проявляется: там используется режим Modern Standby («современный режим ожидания», S0ix), и фирменный драйвер MediaTek оставляет адаптер активным на время сна, чтобы тот продолжал реагировать на сетевые события. Обходное решение в Linux поступает так же — адаптер не переводится в промежуточное состояние пониженного питания.
  2. «Глубокий» сон S3 на этих ноутбуках также неисправен: после первого же пробуждения от встроенного контроллера (EC) перестают приходить события — закрытие крышки больше не переводит ноутбук в сон, система не замечает подключение и отключение адаптера питания. Поэтому обходное решение построено на «лёгком» сне, при котором события контроллера продолжают работать.

Полное исправление возможно только со стороны производителя ноутбука — обновлением прошивки. Обходное решение не устраняет ошибки прошивки, а исключает попадание в них. Если после обновления BIOS/UEFI проблема исчезнет и без параметра keep_d0 (проверяется выключением обхода, см. раздел «Ручная настройка»), сообщите в поддержку: модель уберут из автоматического списка.

Примечания

  • Подключение восстанавливается через несколько секунд после пробуждения (до 15 секунд уходит на поиск сети и получение адреса).
  • Расход батареи в ждущем режиме при включённом обходе возрастает незначительно.
  • Номера внутренних задач команды разработки Росы: kb#658, kb#661.