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 следующие данные, чтобы модель добавили в автоматический список:
- Сведения о машине (вывод трёх команд):
sudo cat /sys/class/dmi/id/board_name sudo cat /sys/class/dmi/id/product_name sudo cat /sys/class/dmi/id/bios_version
- Подтверждение адаптера: вывод команды
lspci -nn | grep -i network; - Журнал ядра проблемной загрузки — той, после которой пропал Wi-Fi (обычно предыдущая):
sudo journalctl -b -1 -k | grep -iE "mt7921e|driver own|not ready"
Если строк не нашлось, приложитеsudo journalctl -b -1 -k | grep -i mt7921eцеликом; - Краткое описание: на какой модели ноутбука, после каких действий пропадает Wi-Fi и помогает ли
keep_d0=1.
Ошибка в прошивке ноутбука
Причина проблемы — ошибки в прошивке (BIOS/UEFI) ноутбука, а не в операционной системе. На подтверждённых моделях их две.
- При уходе в «лёгкий» ждущий режим (s2idle, используется по умолчанию) адаптер Wi-Fi переводится в промежуточное состояние пониженного питания, но корректного возврата из него прошивка не обеспечивает: канал PCIe, по которому система общается с адаптером, после пробуждения не восстанавливается. В Windows эта проблема не проявляется: там используется режим Modern Standby («современный режим ожидания», S0ix), и фирменный драйвер MediaTek оставляет адаптер активным на время сна, чтобы тот продолжал реагировать на сетевые события. Обходное решение в Linux поступает так же — адаптер не переводится в промежуточное состояние пониженного питания.
- «Глубокий» сон S3 на этих ноутбуках также неисправен: после первого же пробуждения от встроенного контроллера (EC) перестают приходить события — закрытие крышки больше не переводит ноутбук в сон, система не замечает подключение и отключение адаптера питания. Поэтому обходное решение построено на «лёгком» сне, при котором события контроллера продолжают работать.
Полное исправление возможно только со стороны производителя ноутбука — обновлением прошивки. Обходное решение не устраняет ошибки прошивки, а исключает попадание в них. Если после обновления BIOS/UEFI проблема исчезнет и без параметра keep_d0 (проверяется выключением обхода, см. раздел «Ручная настройка»), сообщите в поддержку: модель уберут из автоматического списка.
Примечания
- Подключение восстанавливается через несколько секунд после пробуждения (до 15 секунд уходит на поиск сети и получение адреса).
- Расход батареи в ждущем режиме при включённом обходе возрастает незначительно.
- Номера внутренних задач команды разработки Росы: kb#658, kb#661.