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

Banana Pi R64 Лучший роутер для OpenWrt, или нет?

Время на прочтение 6 мин
Количество просмотров 29K
image

Здравствуйте меня зовут Дмитрий и сегодня я сделаю обзор на одноплатный компьютер Banana Pi R64. Мы узнаем как установить на него OpenWrt а также как собрать самому прошивку под этот компьютер.


Внимание после перехода OpenWRT на ядро 5.10 поддержка Banana PI R64 реализована в полном объеме, поэтому я обновил инструкцию в соответствии с новыми реалиями



Итак, на Хабре уже есть обзор на этот компьютер вот он но там автор в качестве ОС использует Armbian. Я попробовал данную ОС, а также Debian и пришел к выводу что нет лучшей ОС для создания роутера чем OpenWrt, вот причины:

  1. На OpenWrt сеть настраивается автоматически без какого-либо участия с вашей стороны. На Debian и Armbian нужно самому настраивать сеть, через конфигурационные файлы.
  2. Веб интерфейс на OpenWrt заточен под управление роутером. На Debian и Armbian тоже есть веб интерфейсы (Webmin и т.д.), но они заточены под общее управление сервером.
  3. Из плюсов Debian и Armbian можно отметить более простую файловую систему, которая отображается как есть. В то время как у OpenWrt очень сложная файловая система. Состоящая из нескольких точек монтирования, некоторые из которых имеют атрибут только чтение.


Как установить OpenWrt



Для установки OpenWrt вам понадобится:

  1. Микро sd карта
  2. Enternet кабель
  3. Win32 Diskimager
  4. Putty
  5. usb ttl — переходник
  6. TFTP server


Порядок установки



Заходите на openwrt.org в разделе development snapshots скачиваете 3 файла:

  1. bananapi_bpi-r64-sdcard.img
  2. bananapi_bpi-r64-initramfs-recovery.itb
  3. bananapi_bpi-r64-squashfs-sysupgrade.itb

Порядок действий:

  1. Заливаете bananapi_bpi-r64-sdcard.img на sd карту, с помощью Win32 Diskimager
  2. Подключаете usb ttl — переходник к Banana PI
  3. Вставляете карту в Banana PI и включаете её.
  4. Заходите в Putty, выбрать Serial скорость 115200. Порт обычно com3 но может быть и другой это надо посмотреть в Диспетчере устройств.
  5. Надо заметить что у Banana PI есть переключатель источника загрузки (можно увидеть на заглавной картинке) поэтому если Banana PI не стартует с SD карты то надо переключить его в другое положение.
  6. Если все сделано правильно то увидите вот это:
    image
    На момент написания этой статьи u-boot меню плохо реагирует на кнопки клавиатуры чтобы точно попасть в него (задержка составляет всего 3 секунды) нажмите несколько раз кнопку вниз ещё при загрузке u-boot
  7. Запускаете TFTP сервер кидаете в его папку файлы bananapi_bpi-r64-initramfs-recovery.itb и bananapi_bpi-r64-squashfs-sysupgrade.itb
  8. Устанавливаете адрес вашей сетевой карты 192.168.1.254
  9. Теперь надо выбрать «Load production system wia TFTP than write to sd card» в результате чего будет загружен sysupgrade образ на SD. После этого выбираете «Load recovery system wia TFTP than write to sd card», после чего будет загружен initramfs образ на SD карту. Очень важно чтобы на SD карту были загружены оба образа иначе «Load bootloadre wia TFTP then write to SD» не будет работать
  10. Теперь у вас есть SD карта с которой можно загрузить OpenWRT но если вы хотите загружаться из внутренней памяти устройства то нужно выбрать «Load bootloadre wia TFTP then write to SD» после этого в eMMC память будет скопирован прелодер и обе системы.
  11. Теперь можно извлечь SD карту и загружаться без неё.


Я хочу заметить что прелодер который будет загружен в загрузочный раздел eMMC может загружать только OpenWRT новой версии. Cтарые версии он загружать не может. Поэтому если захотите откатиться на прошивку со старой версией ядра читайте раздел про прелодер.

Стоит также заметить что у Banan PI R64 может работать или второй PCI-E слот или SATA порт. По умолчанию активирован PCI-E слот, чтобы активировать SATA нужно выполнить команду:

fw_setenv bootconf config-mt7622-bananapi-bpi-r64-sata


и перезагрузиться.

Qbittorrent и OpenWRT



Меня разочаровала Transmission тем что она при скачивании торрента видит очень мало пиров. Иногда на раздачи может быть очень много пиров, а Transmission нечего не видит и это проблемам именно Transmission потому что Qbittorrent данной проблемой не страдает. Поэтому я скомпилировал Qbittorrent под OpenWRT. Хочу заметить что данный архив подойдет только под BPI R64 если у вас другое устройство то он вам не подойдет.

Архив с файлами

Как же его установить?

Сначала надо переместить файлы из папки qBittorrent_Repo в папку устройства (например opt). Для этого можно использовать WinSCP. Затем выполняете команду:

echo src/gz local file:///opt >> /etc/opkg/customfeeds.conf


Это создаст локальный репозиторий в папке opt. Но чтобы это репозиторий прошел проверку подписи нужно переместить файл e2890ecbfdd1ca90 в папку /etc/opkg/keys.

После этого выполняем:

opkg update


Если увидите:

Downloading file:///opt/Packages.sig
Signature check passed.


То выполняете:
opkg install qBittorrent


Qbittorrent появится по адресу 192.168.1.1:8080 Логин: admin. Пароль adminadmin

Вот статья о том как скомпилировать отдельный пакет для OpenWRT

Мои небольшие наблюдения



OpenWrt при перезагрузки генерирует новый MAC адрес для устройства. И например мой модем который подключен к роутеру, требуется тоже перезагрузить если роутер был перезагружен, а Windows находит новую сеть (что не критично но напрягает). Все это решается заданием постоянного MAC адреса как для wan так и для lan. Это можно сделать командой:

fw_setenv ethaddr 11:22:33:44:55:66


fw_printenv


позволяет просмотреть все переменные окружения u-boot.

Порядок установки (устаревший после обновления ядра)




Порядок действий:

  1. Заливаете SD образ OpenWRT на sd карту, с помощью Win32 Diskimager
  2. Вставляете карту в Banana PI и включаете её.
  3. Надо заметить что у Banana PI есть переключатель источника загрузки (можно увидеть на заглавной картинке) поэтому если Banana PI не стартует с SD карты то надо переключить его в другое положение.
  4. Подключаем Enternet кабель к одному из Lan портов и при помощи putty подключаемся к OpenWRT. OpenWRT по умолчанию доступно по адресу 192.168.1.1 Возможно придется в свойствах сетевой карты задать IP и основной шлюз.


К сожалению образ который мы залили на устройство очень старый. Поэтому на него например нельзя установить дополнительные приложения (пакеты). Кроме того хотелось бы иметь возможность грузится без SD карты.

Прелодер для eMMC (устаревший после обновления ядра)


Чтобы в дальнейшем можно было грузится из eMMC(это встроенная в Banan PI память) надо установить preloader. Он будет установлен в специальный boot раздел eMMC после чего можно будет загружать образы из eMMC.

Для этого нужно подключить usb ttl — переходник к Banan Pi.
Залить на SD карту образ
Зайти в Putty, выбрать Serial скорость 115200.
Перезагрузить Banana PI, дождаться появления u-boot меню и выбрать в нем Load preloader from TFTP(TFTP server должен быть запущен, а файл с прелодером должен лежать в одной папке с ним).

Где взять OpenWrt? (устаревший после обновления ядра)


Надо сказать что на момент написания данной статьи нет стабильной версии OpenWrt для Bpi-R64. Есть поддержка данного устройства в ветке разработчиков, но на данный момент совместимость не полная. То есть, вы можете загрузить initramfs образ и он будет работать. Но этот образ создан для ознакомления с OpenWrt, он существует только в оперативной памяти и после перезагрузки устройства, все настройки а также установленные приложения будут утеряны. Sysupgrade образ на данный момент нерабочий, и если вы его установите, то устройство просто будет постоянно перезагружаться.

Поэтому единственный способ получить рабочий sysupgrade образ это собрать его самому.

Я уже произвел сборку образов OpenWrt. Вот они:
Full image
Sysupgrade

Full image образ отличается тем что он включает кроме OpenWRT также preloder, ATF и U-boot. Sysupgrade образ включает только OpenWRT но зато им можно прошиваться через WEB интерфейс. Но один раз нужно прошить Full image.

Итак после того как вы загрузили OpenWRT с SD карты как сказано в прошлом пункте вам надо скопировать один из образов OpenWRT на Banana PI при помощи программы WinSCP (программа позволяющая копировать файлы по средствам протокола SSL) в каталог tmp (соответственно туда надо переместится командой «cd /tmp» в putty) и выполнить команду:

Для FullImage:
dd of=/dev/mmcblk0 bs=512 seek=0 if=openwrt-mediatek-mt7622-bpi_bananapi-r64-rootdisk-ext4-fullimage-emmc.bin

Для Sysupgrade:
dd of=/dev/mmcblk0 bs=512 seek=4096 if=openwrt-mediatek-mt7622-bpi_bananapi-r64-rootdisk-ext4-sysupgrade-emmc.bin

Все теперь можно перезагружаться и OpenWRT будет работать без SD карты.

Как собрать работающий OpenWrt образ (устаревший после обновления ядра)



Поскольку процесс сборки и подготовки к ней очень объемный, то описывать я буду лишь основный моменты.

1) Для сборки вам понадобится виртуальная машина и образ Linux. Как их подготовить и где достать описано здесь. Хочу заметить что в настройках виртуальной машины обязательно укажите количество ядер вашего процессора (по умолчанию там стоит 1). Сборка ядра процесс очень долгий, а на одном ядре она будет ещё дольше.

2) После этого нужно скачать исходники с Git как это сделать описано здесь.

3) make menuconfig выбираем
Также можно выбрать необходимые вам дополнительные пакеты. После чего выходим с сохранением.

4) make -j5 число после j рассчитывается как количество ядер вашего процессора плюс один (у меня процессор четырех ядерный).

5) После компиляции в папке bin будет лежать файлы:
openwrt-mediatek-mt7622-bpi_bananapi-r64-rootdisk-ext4-fullimage-emmc.bin.gz и openwrt-mediatek-mt7622-bpi_bananapi-r64-rootdisk-ext4-sysupgrade-emmc.bin.gz.

Вывод (устаревший после обновления ядра)


Banana Pi очень спорное устройство. Высокая производительность в нем сочетается с безобразной поддержкой со стороны разработчиков. Официальной прошивки нет, а поддержка со стороны сторонних разработчиков так себе. Но все же это очень мощный роутер с 5 гигабитными портами, гигабайтом оперативной памяти, и быстрым двухядерным процессором. То есть тут нет такого как на обычном роутере, когда ты поставил Transsmison на закачку и роутер весь пыхтит скрипит как будто сейчас помрет. Здесь работа Transmission никак не сказывается на отзывчивости устройства.

Также стоит отметить что устройство продается без корпуса. Поэтому корпус придется делать самому. Но если у вас есть 3D принтер то это не проблема вот мой вариант
Теги:
Хабы:
+20
Комментарии 94
Комментарии Комментарии 94

Публикации

Истории

Работа

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

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн