В прошлом месяце было отмечено, что чипсет MediaTek MT7902 WiFi 6E и Bluetooth 5.x наконец-то получил драйверы в основной ветке Linux и должен быть частью релиза Linux 7.0.
Беспроводные модули MT7902 используются во многих ноутбуках под управлением Windows, но пользователи просили драйверы для Linux уже почти два года. Один из методов — дождаться, пока драйверы появятся в используемом дистрибутиве, но пользователь «hmtheyboy154» не захотел ждать и перенес драйверы для ядер Linux с версий 6.6 до 6.19. Поскольку у меня есть один из таких ноутбуков, а именно ASUS Vivobook 16, я решил попробовать установить их на Ubuntu 24.04, но этот метод должен работать и в других дистрибутивах Linux.
Следует отметить, что этот метод работает только с драйвером PCIe, поэтому если используется модуль SDIO, потребуется другое решение. Мой ноутбук под управлением Ubuntu 24.04 действительно использует модуль MT7902 PCIe (AW-XB552NF):
jaufranc@CNX-LAPTOP-5:~$ lspci | grep 7902
0000:02:00.0 Network controller: MEDIATEK Corp. Device 7902
Установить драйвер можно в четыре шага:
git clone https://github.com/hmtheboy154/mt7902
cd mt7902/
make -j8
sudo make install
Можно дополнительно установить микропрограмму, хотя она уже может быть частью дистрибутива:
sudo make install_fw
После этого можно перезагрузить ноутбук, но вместо этого был использован modprobe:
sudo modprobe mt7902e
Затем удалось включить Wi-Fi в Ubuntu 24.04 и подключиться к точке доступа.
Журнал ядра должен выглядеть примерно так:
[1014428.026033] wlo1: deauthenticating from 3c:cd:57:f5:af:91 by local choice (Reason: 3=DEAUTH_LEAVING)
[1014439.871042] mt7902e 0000:02:00.0: ASIC revision: 79020000
[1014439.966746] mt7902e 0000:02:00.0: HW/SW Version: 0x8a108a10, Build Time: 20251212032046a
[1014439.988460] mt7902e 0000:02:00.0: WM Firmware Version: ____000000, Build Time: 20251212032127
[1014440.940270] mt7902e 0000:02:00.0 wlo1: renamed from wlan0
[1014443.452779] wlo1: authenticate with 3c:cd:57:f5:af:91 (local address=10:68:38:3a:0d:da)
[1014443.452797] wlo1: send auth to 3c:cd:57:f5:af:91 (try 1/3)
[1014443.467182] wlo1: authenticated
[1014443.468008] wlo1: associate with 3c:cd:57:f5:af:91 (try 1/3)
[1014443.507278] wlo1: RX AssocResp from 3c:cd:57:f5:af:91 (capab=0x511 status=0 aid=3)
[1014443.543479] wlo1: associated
[1014443.545773] wlo1: Limiting TX power to 27 (30 - 3) dBm as advertised by 3c:cd:57:f5:af:91
Также был проведен быстрый тест iperf3 с использованием Wi-Fi на частоте 5 ГГц, примерно в 2 метрах от Xiaomi Mi Router AX6000 .
- Скачивание
jaufranc@CNX-LAPTOP-5:~$ iperf3 -t 60 -c 192.168.31.12 -i 10 -R Подключение к хосту 192.168.31.12, порт 5201 Режим реверса, удаленный хост 192.168.31.12 отправляет [ 5] локальный 192.168.31.152 порт 41870 подключен к 192.168.31.12 порт 5201 [ ID] Интервал Передача Битрейт [ 5] 0.00-10.01 сек 528 МБайт 443 Мбит/сек [ 5] 10.01-20.01 сек 530 МБайт 444 Мбит/сек [ 5] 20.01-30.01 сек 477 МБайт 400 Мбит/сек [ 5] 30.01-40.01 сек 484 МБайт 406 Мбит/сек [ 5] 40.01-50.01 сек 432 МБайт 362 Мбит/сек [ 5] 50.01-60.01 сек 493 МБайт 414 Мбит/сек - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Интервал Передача Битрейт Retr [ 5] 0.00-60.01 сек 2.88 ГБайт 412 Мбит/сек 23 отправитель [ 5] 0.00-60.01 сек 2.88 ГБайт 412 Мбит/сек получатель iperf завершен.[Время форматирования: 0.0007 секунд]
- Загрузка
jaufranc@CNX-LAPTOP-5:~$ iperf3 -t 60 -c 192.168.31.12 -i 10 Подключение к хосту 192.168.31.12, порт 5201 [ 5] локальный 192.168.31.152 порт 35586 подключен к 192.168.31.12 порт 5201 [ ID] Интервал Передача Битрейт Retr Cwnd [ 5] 0.00-10.01 сек 433 МБайт 363 Мбит/сек 0 1.09 МБайт [ 5] 10.01-20.01 сек 547 МБайт 459 Мбит/сек 0 2.43 МБайт [ 5] 20.01-30.01 сек 568 МБайт 477 Мбит/сек 0 2.43 МБайт [ 5] 30.01-40.01 сек 567 МБайт 476 Мбит/сек 0 2.43 МБайт [ 5] 40.01-50.01 сек 566 МБайт 475 Мбит/сек 0 2.43 МБайт [ 5] 50.01-60.03 сек 550 МБайт 460 Мбит/сек 0 2.43 МБайт - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Интервал Передача Битрейт Retr [ 5] 0.00-60.03 сек 3.16 ГБайт 452 Мбит/сек 0 отправитель [ 5] 0.00-60.04 сек 3.16 ГБайт 452 Мбит/сек получатель iperf завершен.[Время форматирования: 0.0008 секунд]
Около 400-450 Мбит/с в каждом направлении, что должно быть нормально при скорости соединения 600 Мбит/с, плюс мой провайдер поддерживает только 300 Мбит/с на скачивание/загрузку.
Также была опробована работа с Bluetooth, но изначально она не работала, так как не удавалось включить его в настройках. В итоге было замечено, что требуется просто другая ветка в том же репозитории GitHub:
git clone https://github.com/hmtheboy154/mt7902 -b bluetooth_backport btusb_mt7902
cd btusb_mt7902/
make -j8
sudo make install
sudo make install_fw
sudo rmmod btusb
suydo rmmod btmtk
sudo modprobe btusb_mt7902
Затем удалось включить Bluetooth, спарить смартфон с ноутбуком и передать файл с телефона Android на ноутбук.
Следует отметить, что модули btusb и btmtk конфликтуют с btusb_mt7902, поэтому их пришлось удалить, иначе возникала ошибка:
jaufranc@CNX-LAPTOP-5:~/btusb_mt7902$ sudo modprobe btusb_mt7902
modprobe: ERROR: could not insert 'btusb_mt7902': Exec format error
Чтобы сделать это на постоянной основе, был создан файл /etc/modprobe.d/blacklist_btusb.conf с содержимым:
blacklist btusb btmtk
Поддержка WiFi и Bluetooth для модулей MT7902 в Linux потребовала много времени, но сейчас их достаточно просто установить на Ubuntu 24.04, не дожидаясь официального релиза.
Выражаем свою благодарность источнику, с которого взята и переведена статья, сайту cnx-software.com.
Оригинал статьи вы можете прочитать здесь.




