Как стать автором
Обновить

Как собрать свой собственный x86 Wi-Fi роутер

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров55K

Как и обещал в прошлой статье расскажу, как собрал и настроил свой собственный x86 Wi-Fi роутер с OpenWrt.

x86 Wi-Fi роутер
x86 Wi-Fi роутер

За основу был взят мини-ПК Beelink U59 Pro, если собирать сейчас можно рассмотреть похожий мини-ПК Beelink EQ12 с портами 2.5 Гбит/сек.

Компоненты Beelink U59 Pro:

  • Intel Jasper Lake N5105, 4 ядра с частотой до 2,90 ГГц

  • DDR4 2666 МГц 8 ГБ

  • M.2 SATA 512 ГБ

  • Gigabit Ethernet два порта

  • HDMI два порта

  • USB 3.1 два порта

  • USB 3.0 Type-C

  • M.2 Wi-Fi

UPD: Я покупал мини-ПК за 12500. А Wi-Fi модуль мне вообще бесплатно достался.

Цена мини-ПК
Цена мини-ПК

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

А так же на x86 привычнее устанавливать операционную систему, чем на ARM или RISC-V.

Порты мини-ПК
Порты мини-ПК

Выбор Wi-Fi M.2 адаптера и дополнительных антенн

По умолчанию стоит Intel AC3165, но в 2022 году хотелось иметь уже Wi-Fi 6E. Сначала я заказал Intel AX210, но, когда он пришел, оказалось он не умеет раздавать Wi-Fi 5 ГГц, да и в целом не такое большое количество устройств имеет режим раздачи. Изучив все Wi-Fi M.2 адаптеры на сайте пришел к выводу что оптимальным по цене, доступности и возможностям является Mediatek MT7921K. Он поддерживает протокол Wi-Fi 6E. По умолчанию стоят очень слабые антенны, которые не подходят для Wi-Fi роутера, и были куплены антенны на 10 дБ.

Антенны
Антенны
Фотографии Mediatek MT7921K
Mediatek MT7921K передняя сторона
Mediatek MT7921K передняя сторона
Mediatek MT7921K задняя сторона
Mediatek MT7921K задняя сторона

Установка антенн и замена Wi-Fi M.2 адаптера

Разобрать мини-ПК не сложно:

  • Открутить снизу четыре винта

  • Открутить винт крепления M.2 SSD

  • Открутить винт крепления M.2 Wi-Fi

  • Открутить четыре винта крепления материнской платы

    Нутро мини-ПК
    Нутро мини-ПК
Фотографии разборки мини-ПК
Расположение винтов корпуса
Расположение винтов корпуса
Расположение винта M.2 SSD
Расположение винта M.2 SSD
Расположение винта M.2 Wi-Fi
Расположение винта M.2 Wi-Fi
Расположение винтов материнской платы
Расположение винтов материнской платы

Аккуратное достаем материнскую плату со стороны Ethernet-портов.

Фотографии материнской платы
Верхняя сторона материнской платы
Верхняя сторона материнской платы
Нижняя сторона материнской платы
Нижняя сторона материнской платы

Сверлим отверстия для крепления антенн.

Фотографии отверстия под антенны
Вид на отверстия из корпуса
Вид на отверстия из корпуса
Вид на отверстия снаружи корпуса
Вид на отверстия снаружи корпуса

Пропустить оба кабеля антенн можно через левую часть материнской платы.

Фотографии пути кабелей антенн
Места пропускания кабелей антенн
Места пропускания кабелей антенн
Крепления антенн к модулю
Крепления антенн к модулю

Собираем всё в обратном порядке и для спокойствия изолируем изолентой винты и разъемы антенн, как на фотографиях процесса разборки.

Настройки UEFI

Так как в будущем роутер будет стоять без монитора, то все настройки UEFI надо сделать вначале.

Страница UEFI
Страница UEFI

Выставить приоритеты загрузки, чтобы в будущем при вставлении USB-флешки, роутер загружался бы с неё.

Фотография меню загрузки
Меню загрузки
Меню загрузки

А так же необходимо поменять поведение при отключении электропитания на S0, чтобы роутер сам включался при возвращении электропитания.

Фотографии меню чипсета
Меню чипсета
Меню чипсета
Меню PCI
Меню PCI

Установка OpenWrt на USB-флешку

Берем образ для x86-64 generic-ext4-combined-efi.img.gz. Распаковываем GZ архив. Для установки на USB-флешку я пользуюсь balenaEtcher.

Установка образа OpenWrt
Установка образа OpenWrt
Завершение установки
Завершение установки

Установка OpenWrt на роутер

Вставляем USB-флеш в роутер, а так же подключаем WAN и LAN кабель, WAN кабель левый, LAN кабель правый, если смотреть на порты. Подключаем питание и роутер сам загрузится с USB-флеш.

Теперь мы можем подключиться по SSH. Пароль не требуется.

ssh root@192.168.1.1

Запускаем обновление списка пакетов и скачиваем parted:

opkg update
opkg install parted

Смотрим название SSD диска:

parted -l
Вывод parted -l
Вывод parted -l

Запускаем модификацию диска /dev/sda :

parted /dev/sda

Создаем новую GPT таблицу:

mklabel gpt

Создаем раздел для загрузки и раздел для rootfs:

mkpart EFI fat32 1MiB 261MiB
set 1 esp on
mkpart DATA ext4 261MiB 100%

Сохраняем изменения, написав команду q. Убедимся, что всё сделали правильно, вызвав parted -l:

Вывод parted -l
Вывод parted -l

Установим dosfstools для форматирования под FAT32 :

opkg install dosfstools

Необходимо отформатировать первый раздел в файловую систему FAT32, а второй раздел в EXT4:

mkfs.fat -F 32 /dev/sda1
mkfs.ext4 /dev/sda2

Ещё раз убедимся, что всё правильно отформатировалось:

Вывод parted -l
Вывод parted -l

Теперь необходимо смонтировать разделы /dev/sda1 , /dev/sda2 , /dev/sdb1 , /dev/sdb2 :

mkdir /mnt_efi_old
mkdir /mnt_efi_new
mkdir /mnt_ext4_old
mkdir /mnt_ext4_new
mount /dev/sdb1 /mnt_efi_old
mount /dev/sda1 /mnt_efi_new
mount /dev/sdb2 /mnt_ext4_old
mount /dev/sda2 /mnt_ext4_new

А теперь скопировать содержимое папки /mnt_efi_old в папку /mnt_efi_new :

cp -a /mnt_efi_old/. /mnt_efi_new

Установим blkid для вывода PARTUUID :

opkg install blkid
Вывод blkid
Вывод blkid

Для правильной загрузки необходимо поменять номер раздела в настройках загрузчика GRUB :

vim /mnt_efi_new/boot/grub/grub.cfg

Впишем в файл /mnt_efi_new/boot/grub/grub.cfg PARTUUID раздела /dev/sda2 , а так же поменяем время ожидания загрузки timeout на единицу :

Файл /mnt_efi_new/boot/grub/grub.cfg
Файл /mnt_efi_new/boot/grub/grub.cfg

А теперь скопировать содержимое папки /mnt_ext4_old в папку /mnt_ext4_new :

cp -a /mnt_ext4_old/. /mnt_ext4_new

Выключаем роутер и вытаскиваем USB-флешку.

Настройка OpenWrt

Остается установить драйвера и настроить Wi-Fi.

Через WebGUI по адресу http://192.168.1.1/ устанавливаем:

luci-theme-material
hostapd-openssl
wpa-supplicant-openssl
kmod-mt7921e

Экспериментальным путем было выявлено, что драйвер Wi-Fi просыпается позже чем нужно, и для корректной загрузки системы необходимо в файле /etc/init.d/boot убрать оператор if после /sbin/kmodloader :

Правка /etc/init.d/boot
Правка /etc/init.d/boot

Перезагружаем роутер и переходим в раздел настройки Wi-Fi:

Меню Wi-Fi
Меню Wi-Fi

Нажимаем на кнопку ENABLE , а потом EDIT

Расширенные настройки
Расширенные настройки

В меню расширенные настройки выбираем код страны US, для большего количества доступных диапазонов частот и мощностей излучения. Сохраняем и применяем настройки.

Настройки Wi-Fi
Настройки Wi-Fi

Теперь выбираем AX(Wi-Fi 6) режим работы, нужный вам канал, и ширину полосы, так же мощность излучения. Чуть ниже можно выбрать настройки безопасности сети.

Настройки безопасности Wi-Fi
Настройки безопасности Wi-Fi

Вывод

Мы смогли настроить x86 Wi-Fi роутер, и поднять на нем Wi-Fi 6 сеть. Так как на нем стоит OpenWrt, то мы можем использовать его как полноценный Linux. Настроить VPN, NAS, Web Server и т.д.

Теги:
Хабы:
Всего голосов 34: ↑30 и ↓4+34
Комментарии276

Публикации

Истории

Ближайшие события

7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн
15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
22 – 24 ноября
Хакатон «AgroCode Hack Genetics'24»
Онлайн
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань