Бег по граблям. По своим и чужим.
LTE модем Fibocom L860-GL. Прошивка, настройка.
Одноплатный компьютер FriendlyElec Nanopi R4S. Много фото.
Сборка OpenWrt из исходных кодов и не только.
Текста… много. Но интересно. А картинок не меньше.
Я почти закончил один из своих долгостроев, местами повествование может быть скомкано, местами — слишком подробно. Писать пост надоело — публикую. Также за время написания поста некоторая информация могла обновиться. Прошу готовить ваши тапки для бросков — я дилетант во многих областях, буду отбиваться.
Ставиться задача сделать эти ваши интернеты через мобильных операторов со всеми удобствами, агрегацией частот, блокировщиками рекламы и телеметрии, преферансом и поэтессами. В общем — сделать комфортное и максимально стабильное использование интернета, можно даже с заделом на MultiWAN.
Нужен интернет в частный дом. Оптики на горизонте нет. Единственный вариант — мобильные операторы 4G LTE. Кроме того, со связью дела плохи.
Поэтому есть 3 наиболее рабочих варианта:
1. Готовое к применению устройство, вроде MikroTik LHG LTE kit, MikroTik LHG LTE kit, KROKS AP-221M3Y-Pot и тому подобные.
2. 4G роутер [со встроенным модемом] (Huawei B818-263, Keenetic LTE, Mikrotik RB912R-2nD-LTm) и отдельно выносную антенну.
3. 4G модем втыкаем в Wi-Fi роутер с поддержкой модемов + выносная антенна.
1 и 2 стоят порой непомерных денег и имеют те или иные недостатки.
3 вариант можно собрать из всего готового, можно совсем бюджет, например откопать USB модем e3372 + TP-Link TL-MR3020 (я такой вариант показывал), потом идут варианты несколько получше.
Можно взять более продвинутый PCI или M.2 модем (как в шапке) + переходник на USB и WiFi роутер, или WiFi роутер, имеющий соответствующий слот.
А можно вместо роутера взять одноплатный компьютер (вроде Raspberry Pi и т.п.), поставить на него, например, систему OpenWrt, предназначенную для маршрутизаторов, и сделать свой маршрутизатор. Вот это мы и будем делать.
А внешние антенны я два раза обозревал: Petra BB, KROKS KAA15.
В последнее время писк моды — использование Mini PCI-e и M.2 модемов. После изучения ветки на 4pda и просмотра цен на соответствующие наименования, была сделана ставка на многострадальный Fibocom L860-GL — модем 16/13 категории форм-фактора M.2.
Упаковано хорошо — коробка, пупырка,
антистатические пакеты.
Вот и герой нашего обзора.
Оборудование довольно компактно. Но это только часть набора.
Переходник в комплекте не самый лучший. Некоторые жаловались на плохое питание на данной модели. Есть адаптеры с 2-SIM и программным переключением.
Текстолит тонкий. Хоть крепеж платы есть адекватный.
Антенны на гибком основании с самоклейкой, такие мы часто видим в ноутбуках.
Собственно, в основном для ноутбуков подобные модемы и предназначались изначально.
Разъемы IPEX4, он же MHF4. Защищены колпачками — забота о клиенте.
Подключаем модем к ПК, он виден как целых 6 устройств.
Хотя нет — не виден, мы же еще не ставили драйвера. После успешной установки в диспетчере устройств появляются: модем, 2 COM порта, 3 сетевых карты.
Дальше нам нужно посмотреть, а оно вообще живое?
Если у Вас Windows и нет терминала для работы с COM-портом — советую скачать YAT. Если у Вас Unix-подобная операционная система — сами разберетесь. Ставим терминал, выбираем порт acm2 (если в ответ тишина — включите DTR):
Посмотрим версию прошивки. Вводим команду
AT+GTMCFWVER?
Нам не повезло, прошивка, мягко говоря, неудачная. И предварительные тесты подтвердили опасения — будем перепрошивать.
Делать на свой страх и риск, только с полным осознанием производимых действий!
Автор не несет ответственности за любой прямой или косвенный ущерб.
За самой свежей прошивкой гнаться не стоит, встречаются циклические ребуты и прочие прелести. Смотрим в теме, какие прошивки проверены (но это не гарантия, что в данном конкретном случае нам повезет).
Качаем прошивальщик PlatformFlashToolModem и прошивку 18601.5001.00.01.15.23 (нужно авторизоваться). Отключаем модем. Запускаем прошивальщик.
Тип подключения ставим USB, Erase mode в No Erase. Добавляем оба файла прошивки.
Жмем Start to Flash, втыкаем модем без SIM.
Прошивка занимает несколько секунд. Закрываем прошивальщик, перетыкаем модем, проверяем версию прошивки:
Прошились успешно. Посмотреть IMEI можно командой
AT+CGSN
IMEI начинается на 35, как продавец и обещал. Если из-за кривых рук стечения обстоятельств IMEI был стерт — не беда, на данной модели модема можно восстановить.
Проверить работу на Windows удобно этим скриптом
Понятно, что комплектные антенны никуда не годятся, да и внешние антенны я два раза обозревал не просто так (Petra BB, KROKS KAA15). Вот только на кабель РК 50 нужно заделывать разъемы N или SMA, а в модеме — мелкие IPEX4. Переходник ннада. Ищем "pigtail sma ipex4". Не забываем, что есть еще и RP-SMA.
Пигтейлы брал тут — выглядят нормально, а высокоточного оборудования для измерений у меня нет.
Для реализации всей этой задумки был приобретен одноплатный компьютер FriendlyElec Nanopi R4S. Весчь была широко популярная в узких кругах пару лет назад, а тут попалась на глаза. Страница товара на официальном сайте, wiki.
Поставляется в фирменной коробке, которая лежит в простой коробке, которая в зайце, заяц в утке
Сама плата антистатическом пакете (не запаян), дополнительно защищенный пупыркой.
Это Headless-устройство. Монитор подключать некуда. Только терминал, только хардкор.
Штука довольно занятная, у меня вариант с 1Gb оперативной памяти.
1Gb и 4Gb версии отличаются по схемотехнике и поддержке софта. Казалось бы, зачем домашнему роутеру столько, но не в том дело — официальная поддержка OpenWrt заявлена только для 4Gb версии (возможно уже починили на текущий момент).
• Gigabit Ethernet Native RTL8211E
• GigabitEthernet PCIe R8111H
• USB 3.0 Host x2
• USB 2.0 Host x1: 2.54mm 4pin-header
• Type-C x1 только для питания DC 5V/3A
• GPIO: 2.54mm pitch 2x5pin-header, include I2C x1, SPI x1
• Serial Debug Port x1: 2.54mm pitch 3pin-header, 3V level, 1500000bps
• User Button x1
Плата компактная. Осталось найти радиатор и прикрутить к нему плату. Или наоборот. Есть комплектации с металлическим корпусом.
Посмотрим на героя обзора поближе.
SPI Flash или eMMC тут нет, только разъем microSD.
Корпуса разъемов запаяны как обычно.
64-битное сердце (или мозг) Rockchip RK3399. Проц довольно горячий, перед опытами сразу лепим радиатор.
Оперативная память — 1Gb DDR3 K4B4G16.
Контроллер питания Rockchip RK808. Программное отключение питания, спящий режим, пробуждение по RTC.
Разъем Molex 53398-0271 1.27/1.25mm часов реального времени RTC, потребление 27uA.
1G Ethernet Realtek RTL8211E.
1G Ethernet Realtek RTL8111H.
КолодкиUSB 2.0 — 2.54mm Dupont (1 — VDD_5V, 2 — USB_DM, 3 — USB_DP, 4 — GND),
UART — 2.54mm Dupont (0 — GND, TX, RX, уровни 3.3В, 1500000 bps),
разъем вентилятора ZH1.5 (5В, max 2А), ШИМ, можно программно управлять.
Светодиодные индикаторы, светодиод питания, 3 шт управляемыхGPIO (SYS, LAN, WAN) и кнопка, тоже висит на GPIO.
Рядом колодка GPIO. Производитель разрешает питать устройство по Pin1 и Pin5.
Сейчас у FriendlyElec есть устройства и поинтересней, так, например, стоит взглянуть на NanoPi R5C (aliexpress).
Также есть монстр NanoPC T6 с 2x 2.5G Ethernet, 2x USB3.0 + 2x USB2.0 + 1x TypeC, M.2, 4-16 Gb RAM, 2.4GHz 8-ядерном RK3588, поддержкой miniPCI 4G модемов и SIM слотом на плате.
Для самоделок можно купить не одноплатный компьютер, а плату роутера: побюджетней — роутер на MT7621, побогаче — на MT7622 с тремя слотами M.2, SATA и пр (все с поддержкой OpenWrt).
Если полный фарш, то роутер Dual-Q H721. Я же люблю извраще делать сам.
В нижеследующем тексте будут даны некоторые упрощения и допущены упущения для понимания происходящего неподготовленной публикой. У нас тут не курс «DevOps с нуля за 1 месяц». Но здоровая критика приветствуется.
OpenWrt — встраиваемая операционная система на базе Linux, предназначенная, в первую очередь, для роутеров.
С поддержкой OpenWrt для подобных плат обычно не все так просто. Для начала нужно объяснить, что такое Device Tree, рассказать про патчи и diff… может в новом посте, если тапками не закидают. На примере другого устройства, которое много крови попило...
Для устройств FriendlyElec существует форк системы OpenWrt — FriendlyWrt, имеющий необходимые патчи для работы устройств серий NanoPC и NanoPi. И вновь дадим пояснение: Форк (ответвление) — использование исходного кода одного проекта для независимой (в той или иной мере) разработки нового программного обеспечения на его основе. Однако, кроме патчей для работы оборудования других плюшек FriendlyWrt не имеет.
Поэтому будем собирать форк ImmortalWrt. ImmortalWrt — это форк OpenWrt с большим количеством портированных пакетов, поддержкой большего количества устройств (в том числе одноплатных компьютеров), лучшей производительностью и специальной оптимизацией для пользователей из материкового Китая. А наши китайские братья знают толк в сетевом софте.
Принципиальных отличий по сборке OpenWrt/ImmortalWrt/FriendlyWrt/OtherWrt нет, меняем адрес репозитория и имена веток/тегов (поясним позже). По тексту далее будет указано просто OpenWrt, если сказанное не касается только конкретного форка.
Да, можно было бы установить официальный релиз (если он есть в дикой природе — помните про поддержку оборудования?), а на него поставить нужные пакеты… если они есть для данной версии системы. Можно добавить патчи в оф. OpenWrt, может быть даже заработает. А может быть последним сообщением при сборке будет Error, и придется просматривать 100 мегабайт лога. Я знаю, я был там,Гэндальф...
Принимаются разумные замечания и конструктивная критика, в остальных случаях
Сборка OpenWrt/ImmortalWrt из исходных кодов с использованием Buildroot
Вариант номер раз. Сборка из исходных кодов — долго, сложно, требует определенный уровень подготовки. После добавления всего нужного очень вероятно, что не соберется. Нужно ориентироваться в логах и иметь представление, как все работает. Из плюсов — полный контроль происходящего, плюшки, печеньки, поддержка редкого и нового оборудования, свои файлы и настройки из коробки и т.д.
Мы хотим добавить в OpenWrt кучу пакетов для поддержки модемов и еще всяких свистелок.
Поэтому мы будем заниматься самостоятельной компиляцией OpenWrt, а для этого нам нужна GNU/Linux или Unix-подобная операционная система. Можно, конечно, попробовать собрать под Виндой с помощью WSL, но не хочется на ровном месте иметь лишние проблемы, тем более, что есть в наличии маленький сервачок на GNU/Linux.
Многоуважаемые читатели могут скачать Oracle VM VirtualBox (программа, позволяющая создавать на своем компьютере виртуальную машину со своей собственной операционной системой) и установить на него что-нибудь на свой вкус, я предпочитаю Debian-based, без лоска и свистелок — можно Mint или Xubuntu. Можно вообще без графики, для компиляции она не нужна, но стартовать с такого варианта не стоит. Я, пожалуй, описывать процесс не буду. Можно почитать тут или поискать "ubuntu | mint | xubuntu на VirtualBox". Устанавливаем, запускаем.
Приступим к компиляции. Открываем терминал — ищем через меню программ или горячие клавиши — обычно Ctrl+Alt+T или Alt+T (я же буду работать удаленно, через PuTTY):
Что вообще происходит? Все под контролем, так тоже можно работать. С помощью команды pwd можно, например, посмотреть, в каком каталоге мы находимся:
Только имейте в виду: Unix-подобные системы регистрозависимые. Так, папки Myfolder и myfolder — это не одно и то же. Так и команда Pwd не сработает:
Также следует сказать про автодополнение — начните набирать имя команды или файла/каталога и нажмите Tab.
Кроме того, я советую пользоваться tmux.
tmux — это терминальный мультиплексор, позволяющий в одном терминале запустить несколько сессий и переключаться между ними или даже разместить их в рамках одного экрана. Также, при закрытии терминала сессия продолжит работу в фоновом режиме, что очень полезно при удаленной работе — можно закрыть окно [PuTTY], а затем подключиться и посмотреть результат.
Ставим зависимости для сборки:
sudo apt install -y build-essential libncurses5-dev zlib1g-dev \
gawk gcc-multilib flex git gettext libssl-dev python3-distutils \
xsltproc rsync unzip python3 quilt libncursesw5-dev xsltproc
Установка пакетов обычно выполняется от имени суперпользователя, нужно будет ввести его пароль. Ни символы пароля, ни звездочки не отображаются.
!!! Все нижеследующие команды выполняются под обычным пользователем (не под суперпользователем, non-root)
Теперь скачиваем исходные коды OpenWrt из репозитория (вообще-то клонируем репозиторий, более того, частично, и только ветку openwrt-21.02, но я уже говорил про упрощения)
git clone -b openwrt-21.02 --single-branch --filter=blob:none https://github.com/immortalwrt/immortalwrt
Ожидаем завершения
Переходим в папку с нашим проектом — команда cd имя_директории
cd immortalwrt
Вот тут нужно дать пояснение.
Часто в инструкциях указывают такой порядок: сначала клонируем весь репозиторий
git clone https://git.openwrt.org/openwrt/openwrt.git
Входим в каталог с git
cd openwrt/
Затем из текущей рабочей ветки переключаемся на нужную ветку или тег.
git checkout openwrt-21.02
По сравнению с клонированием сразу только одной ветки, мы на первый взгляд, должны получить то же самое, но это не совсем так… Но в нашем случае на работоспособности скорее всего не скажется.
Для работы с модемами Fibocom и проч. нам нужен пакет xmm-modem, которого нет в основном репозитории. Список фидов у нас хранится в файле feeds.conf.default, добавляем туда нужные репозитории:
echo 'src-git modemfeed https://github.com/koshev-msk/modemfeed.git' >> feeds.conf.default
Есть еще интересный пакет luci-app-modemband для настройки модемов через Luci, можем добавить его для опытов:
echo 'src-git modemband https://github.com/4IceG/luci-app-modemband.git' >> feeds.conf.default
Получаем актуальные версии пакетов и делаем их доступными в конфигураторе прошивки:
./scripts/feeds update -a
./scripts/feeds install -a
Для подобных плат, в том числе Orange, Banana и пр. частенько нужны патчи для работы того или иного оборудования. Их стоит добавить сейчас, если мы собираем оригинальный OpenWrt. Но об этом не сегодня, в ImmortalWrt у нас уже есть почти все необходимое.
Запускаем инструмент настройки нашей прошивки
make menuconfig
Навигация в псевдографическом интерфейсе осуществляется:
стрелочками, клавишей Enter, пробелом
Y, N, M — значения пунктов меню
/ — поиск,? — справка
---> после названия пункта значит, что можно открыть подпункт меню.
При выборе пакетов возможно 3 варианта:
< > исходный код не будет обрабатываться (N).
<M> пакет будет собран, но не будет добавлен в образ прошивки (M). Их можно установить с помощью opkg.
<*> пакет будет собран и включен в прошивку (Y).
Выбираем целевую платформу и устройство:
Target System ---> Rockchip
Target Profile ---> FriendlyYrm NanoPi R4S
После правильным будет выйти, загрузить конфигурацию по умолчанию (ниже обсудим подробнее) для этого устройства:
make defconfig
а потом снова запустить make menuconfig для настройки и выбора пакетов.
Важно! Нужно поправить размер образа root partition size — если система будет на microSD — не жадничаем. По умолчанию значение 104 (в чистом OpenWrt) — мы в такой объем не влезем, bin файл прошивки не создастся.
И самое интересное — выбираем нужные нам пакеты. Их будет довольно много. Зависимости пакетов [почти всегда] выбираются автоматически.
Выходим, утвердительно отвечаем на запрос о сохранении изменений.
Все наши настройки хранятся в файле .config — с точки начинаются названия скрытых файлов, в графическом интерфейсе, как и по команде ls (без опции -а) он виден не будет.
Перед первой компиляцией полезно проверить зависимости для сборки. Если чего-то не хватает — устанавливаем недостающие пакеты с помощью apt.
make prereq
Как добавить свои файлы в сборку, например файлы конфигурации?
В корневой директории сборки, обычно обозначаемой в руководствах <buildroot> (там где config, package, scripts) создаем папку files, она будет корневой директорией устройства. В ней можно создать папки /etc/config и положить туда файлы конфигурации OpenWrt. Аналогично с любыми другими файлами, например /etc/rc.local или /etc/nftables.d/10-custom-filter-chains.nft
Поскольку мы собираем 21.02, можно сразу поправить скрипт автозапуска
mkdir -p files/etc/
echo -e "# Put your custom commands here that should be executed once\n\
# the system init finished. By default this file does nothing.\n\
\n\
iptables -t mangle -I PREROUTING -m ttl --ttl 1 -j TTL --ttl-inc 4\n\
\n\
iptables -t mangle -A PREROUTING -j TTL --ttl-set 64\n\
iptables -t mangle -A POSTROUTING -j TTL --ttl-set 64\n\
\n\
ip6tables -t mangle -I POSTROUTING ! -p icmpv6 -j HL --hl-set 64\n\
ip6tables -t mangle -I PREROUTING ! -p icmpv6 -j HL --hl-set 64\n\
\n\
exit 0\n" > files/etc/rc.local
Не помешает немного понизить частоту CPU, нам такие мощности излишни, а греться будет поменьше.
mkdir -p files/etc/config
echo -e "config settings 'cpufreq'\n\
option governor0 'schedutil'\n\
option governor4 'schedutil'\n\
option minfreq0 '408000'\n\
option maxfreq0 '1200000'\n\
option minfreq4 '408000'\n\
option maxfreq4 '1200000'\n\
\n\
\n\
config settings 'global'\n\
option set '1'\n" > files/etc/config/cpufreq
А дальше уличная магия запускаем компиляцию. Процесс займет сильно разное время в зависимости от мощности компьютера. Перед запуском сборки лучше выполнить
make download
чтобы предварительно загрузить весь исходный код для всех зависимостей, в противном случае сборка на нескольких ядрах может завершиться неудачей.
На первый раз лучше компилировать с подробным выводом отладочной информации о сборке в файл build.log, при этом на экране будут отображаться только ошибки (на самом деле — не совсем так, но пока опустим)
make -j1 V=sc 2>&1 | tee build.log | grep -i error
Или сразу гулять на все ядра процессора
make -j$((`nproc` + 1))
Готовые образы будут лежать по пути
~/immortalwrt/bin/targets/rockchip/armv8/
Перед последующими сборками лучше делать
make clean
чтобы быть уверенным, что от предыдущих сборок не осталось устаревших файлов. Это может быть необходимо не всегда, но, как правило, помогает избежать проблем.
Примечания
Если залезли ручками в конфиг .config и получили предупреждение
/.config' has modification time 285 s in the future
То нужно поправить время последнего изменения файла конфигурации, например
touch -mad "2023-12-31 23:59:59" .config
время смотрим по соседним файлам, например, каталогу config или build_dir (когда он будет создан) по ls -lah или
date +"%Y-%m-%d %H:%M:%S" -r config
стоп, тыжпрограммист
touch -mad "`date +'%Y-%m-%d %H:%M:%S' -r config`" .config
Некоторые пакеты из репозитория устанавливаться на нашу систему не будут, потому что данная прошивка была собрана с отличным [от официального билда] набором модулей ядра [и имеет другой vermagiс — хэш конфигурации ядра].
Например, пакеты luci-* можно устанавливать не боясь (почти, у них же есть зависимости), а попытка установить пакет kmod* успехом не увенчается. Некоторые пакеты можно поставить с аргументом --force-depends, но с тем же успехом можно сломать систему (это плохая практика).
Если будут нуждающиеся, можно будет скомпилить весь репозиторий пакетов.
Как подсмотреть пакеты из чьей-нибудь прошивки?
Если добрые люди вместе с прошивкой выложили файл config.buildinfo, создаваемый при сборке, то все просто. И тут следует рассказать про defconfig.
У нас может возникнуть идея сохранить свой файл конфигурации для тех, кто будет после нас, для повторного использования. Так вот, для этого есть специальные инструменты.
Файл конфигурации преимущественно состоит из строк, соответствующих всем другим архитектурам:
# CONFIG_TARGET_airoha is not set
# CONFIG_TARGET_sunxi is not set
# CONFIG_TARGET_apm821xx is not set
и куче пакетов:
# CONFIG_PACKAGE_dejavu-fonts-ttf-DejaVuMathTeXGyre is not set
# CONFIG_PACKAGE_dejavu-fonts-ttf-DejaVuSans is not set
# CONFIG_PACKAGE_dejavu-fonts-ttf-DejaVuSans-Bold is not set
которые нам никогда не понадобятся мы не используем в своей конфигурации. И длина файла получается значительная.
Мы можем сохранить только изменения в нашем файле конфигурации
scripts/diffconfig.sh > mydiffconfig
Эта команда создаст файл mydiffconfig в каталоге сборки, который можно использовать как резервную копию настроек. Этот файл аналогичен config.buildinfo, упомянутому чуть ранее.
Так или иначе, пусть у нас есть файл с настройками сборки mydiffconfig , скопируем его в .config:
cp mydiffconfig .config
Развернем сокращенную конфигурацию до полной, заодно проверив неудовлетворенные зависимости пакетов в нашей конфигурации и исправив неуказанные настройки, удалив устаревшие элементы (может возникнуть при смене версий и при вмешательстве ручками):
make defconfig
После чего можно настроить сборку, используя полученную конфигурацию в качестве основы:
make menuconfig
А если у нас есть только образ .img?
Для Windows качаем 7zip, открываем образ, там 2 раздела 1.img и 2.img — нам нужен второй, там система. Нам нужен файл \usr\lib\opkg\status
Для *nix — тоже есть 7zip, но в ковырянии прошивок нам могут понадобиться squashfs-tools и binwalk
sudo apt install squashfs-tools binwalk
после чего распаковываем, например образ immortalwrt-rockchip-armv8-friendlyarm_nanopi-r4s-ext4-sysupgrade.img
binwalk -e immortalwrt-rockchip-armv8-friendlyarm_nanopi-r4s-ext4-sysupgrade.img
binwalk проанализирует и распакует образ, по пути
_immortalwrt-rockchip-armv8-friendlyarm_nanopi-r4s-ext4-sysupgrade.img.extracted/ext-root-0/squashfs-root/usr/lib/opkg/
будет лежать наш файл status следующего вида
Package: kmod-usb-storage
Version: 5.15.118-1
Depends: kernel (= 5.15.118-1-22affa4bd1046b9606a38bea4a168474), kmod-scsi-core, kmod-usb-core
Status: install user installed
Architecture: aarch64_generic
Installed-Time: 1687778439Package: terminfo
Version: 6.4-2
Depends: libc
Status: install user installed
Architecture: aarch64_generic
Installed-Time: 1687778439
Auto-Installed: yes
в котором и значатся все пакеты в системе.
Если все сломалось и ничего не компилируется, не обязательно удалять все, можно получить конфигурацию по умолчанию для данного устройства:
make oldconfig
И подчистить:
скомпилированные бинарники: пакеты, прошивка, ядро.
make clean
все выше + тулчейн для нашего устройства:
make targetclean
все выше + инструменты сборки и временный каталог tmp/
make dirclean
вообще все, включая .config, фиды, загруженные исходные коды и т.д.
make distclean
Сборка OpenWrt с помощью онлайн Image Generator
Вариант 2. В официальном онлайн генераторе прошивок OpenWrt начиная с версии
22.03.0 есть поддержка платы FriendlyARM NanoPi R4S 4GB LPDDR4. К тому же я имел проблемы с работой dnsmasq-full. Но на всякий случай упомянем этот метод.
Процесс простой как полкирпича, но возможности для творчества отсутствуют. К тому же: устройства добавляются медленно, непопулярные устройства не добавляются вообще или их поддержка быстро прекращается. Многих одноплатников в оф.билдах и генераторе нет.
Из преимуществ — просто, быстро, прошивка имеет тот же vermagiс, а значит полностью совместима с репозиториями.
Ссылка для ImmortalWrt (ссылка для официального OpenWrt), выбираем версию, свое устройство, жмем Изменить набор пакетов, добавляем/удаляем названия пакетов.
После нажимаем кнопку ЗАПРОСИТЬ СБОРКУ. В случае указания пакетов, не доступных к использованию, об этом будет сказано. Внимание! После генерации образов перечень пакетов в текстовом поле будет сброшен, сохраняйте его локально для удобства.
Сборка OpenWrt с помощью ImageBuilder
Вариант 3. Просто, быстро, совместимо с пакетами из официального репозитория (потому что собирается из этих же репозиториев, имеет тот же vermagiс).
Из плюсов, по сравнению с предыдущим способом: Можно предварительно скомпилировать или где-то скачать и подсунуть пакеты, которых нет в оф.репозиториях. Можно добавить свои файлы и настройки (настройки и при онлайн сборке можно, но сложно). Приступим:
Устанавливаем зависимости:
sudo apt-get install build-essential libncurses5-dev libncursesw5-dev zlib1g-dev gawk git ccache gettext libssl-dev xsltproc wget unzip python
Скачиваем ImageBuilder для rockchip/armv8, распаковываем, переходим в каталог:
wget https://downloads.openwrt.org/releases/22.03.0/targets/rockchip/armv8/openwrt-imagebuilder-22.03.0-rockchip-armv8.Linux-x86_64.tar.xz
tar -xf openwrt-imagebuilder-22.03.0-rockchip-armv8.Linux-x86_64.tar.xz
cd openwrt-imagebuilder-22.03.0-rockchip-armv8.Linux-x86_64
wget https://downloads.immortalwrt.org/releases/21.02.0/targets/rockchip/armv8/immortalwrt-imagebuilder-21.02.0-rockchip-armv8.Linux-x86_64.tar.xz
tar -xf immortalwrt-imagebuilder-21.02.0-rockchip-armv8.Linux-x86_64.tar.xz
cd immortalwrt-imagebuilder-21.02.0-rockchip-armv8.Linux-x86_64
Можно собрать и другую версию, например 23.05, поддержку можно быстро посмотреть в онлайн версии Image Generator.
Источники пакетов настраиваются в файле repositories.conf, расположенном в корневом каталоге. Свои репозитории вписываем сюда.
Для локального репозитория следует указать следующим способом:
src custom file:///home/user/rockchip/packages
Свои настройки можно перенести в каталог files, аналогично написанному ранее.
Смотрим список профилей и ищем название для своего устройства:
make info
Собираем.
Ключ PROFILE указывает имя профиля устройства, PACKAGES — список пакетов, которые нужно добавить или убрать (минус перед именем пакета) в прошивку. Ключ FILES задает путь до каталога с файлами, которые следует добавить в прошивку.
make image PROFILE="friendlyarm_nanopi-r4s" PACKAGES="autocore-arm automount base-files block-mount busybox ca-bundle default-settings-chn dnsmasq-full dropbear ethtool fdisk firewall fstools iptables ipv6helper kmod-gpio-button-hotplug kmod-ipt-raw kmod-nf-nathelper kmod-nf-nathelper-extra kmod-r8168 libc libgcc libustream-openssl logd luci luci-app-cpufreq luci-app-filetransfer luci-app-turboacc luci-compat luci-lib-base luci-lib-fs luci-lib-ipkg mkf2fs mtd netifd opkg partx-utils ppp ppp-mod-pppoe procd uboot-envtools uci uclient-fetch urandom-seed urngd" FILES=files/
Сгенерированный образ следует искать в каталоге bin.
Для удаления всех временных файлов сборки и сгенерированных образов осуществляете командой:
make clean
Так, у нас есть образ прошивки, сжатый в gz
Далее берем Win32DiskImager (нужно распаковать .gz) или balenaEtcher (умеет открывать .gz) и заливаем образ на флешку.
В Unix-подобных как-то так
dd if=immortalwrt-rockchip-armv8-friendlyarm_nanopi-r4s-ext4-sysupgrade.img of=/dev/sdX bs=1M
Подключаемся к одноплатнику витой парой в разъем, который ближе к кнопке (LAN с поднятым DHCP, второй порт — WAN), подаем питание.
переходим по адресу 192.168.1.1
Он ожил!
По умолчанию пароль пустой.
Проверяем, виден ли модем в системе: Модем -> Оборудование.
Теперь нужно настроить подключение:Сеть -> Интерфейсы -> Добавить новый интерфейс. Выбираем протокол Менеджер модемов (или Intel XMM Cellular).
В строке Модем мы должны увидеть наше устройство — хороший знак. Вводим APN и другие необходимые данные.
Во вкладке Настройки межсетевого экрана добавляем наш интерфейс в зону WAN.
Жмем Сохранить, Применить. Надо же, работает.
В прошивку добавлен Adblock: Службы -> Блокировщик рекламы, и Adguard Home — доступен по 3000 порту (http://192.168.1.1:3000). Если не доступен — подключаемся по SSH и вручную стартуем AdGuardHome, затем все настраиваем.
Отключить ненужное можно в Система -> Автозапуск.
Само собой, мучить всех заинтересовавшихся самостоятельной сборкой я не буду, просто оставлю ссылку на готовые образы (хотя их практическая ценность невысока). Работает не идеально, возможны неожиданности, не агитирую. Будет допиливаться, для себя — это уж точно.
Автор не несет ответственности за любой прямой, косвенный, случайный, специальный, вытекающий или присужденный в качестве наказание ущерб, включая, помимо прочего, упущенную выгоду, ущерб от использования, или какие-либо другие материальные и нематериальные потери, ущерб репутации и любой иной ущерб.
Креплю я все обычно на DIN рейку. Вот прям все.
Поэтому быстренько начертил крепеж для одноплатника (модели на thingiverse) и пустил на печать.
Для модема был использован корпус товарища APToni, несколько доработанный паяльником с латунными втулками.
Совершенно бесплатно, то есть даром, был заполучен короб от какой-то списанной аппаратуры, в который мною были установлены DIN рейки и щетки для кабельного ввода. Высота маловата, но дареному коню, как говорится… GPIO и штатное управлением вентилятором пока ждет (разъемы ZH1.5 где-то зависли), поэтому охлаждение сделано на отдельном контроллере.
Как красиво все выглядит, пока кабели не подключишь. Да, лучше бы антенны врезать в корпус, но я уже 100 раз все это ставил/снимал. А 4 отверстия под SMA не долго сделать.
Еще бы кто-нибудь подсказал, что на предыдущем фото кабеля к понижайке нет (5В питание). До того, как я на чердак полез, ночью, с фонариком. То-то оно не заработало, когда питание подал… Всякие мелочи будут доделываться в послеследующий выходной. Наверное.
По измерениям скоростных показателей: подобные замеры очень субъективны и зависят от кучи факторов, а прием у нас так себе. Но если совсем кратко — стало значительно лучше, этими вашими интернетами теперь пользоваться комфортно.
Счастья для всех даром, и пусть никто не уйдёт обиженный.
Редактор исправляет HTML сущности согласно HTML5 (& -> & amp;), но обратно оно не работает, поэтому ссылки на конкретные посты 4pda ломаются.
4pda: Агрегация — дорого? Собираем бюджетно или Набор юного агрегатора (благодарности ipnev83,listener89, Shoorikpp, atrum_n, Prusa, APToni, ilya-fedin и всем-всем. Кого забыл — не обижаемся :)
4pda: Общая тема по модемам Fibocom L8x0-GL – обсуждение (Огромная благодарность ПолВторого и всем-всем)
4pda: Сборка OpenWrt/LEDE из исходных кодов
4pda: OpenWrt/LEDE (Общая тема)
forum.openwrt.org: Orange pi R1 plus support
Стругацкий А.Н., Стругацкий Б.Н. Пикник на обочине, 1972
Уэйл Д., Франкенштейн (фильм), 1931
Пост может внезапно обновляться
Поддержка в openwrt уже чуть иначе сделана. Тут вроде тоже ramips же платформа?
Самый большой вопрос, можете ли сравнить скорость сети через модем на другой платформе? Идеально — кинетик. В той же точке. Openwrt меня дико разочаровала скоростью работы l860. На двух разных типах роутеров на mt7621a в трёх разных локациях. Кинетик с этим же модемом от 20 до 100% быстрее… Причем даже если его прошить в тот же самый роутер, не меняя железо. И вопрос, это кривость драйверов usb для mt7621 или кривость поддержки l860.
Я прошивался двумя файлами. У меня
вродевсе нормально.Тут Rockchip armv8. Кинетиков в последнее время в руках не держал, как-то не сложилось, замеры не смогу. Мог сравнить только с Huawei E5186 — скорость процентов на 20 выше, и, что интересно, выше стабильность. А по сравнению с тем, что использовал в качестве временной меры — небо и земля.
как сейчас помню,тоже, падавана хвалили больше, нежели OpenWrt. Сейчас актуальной информацией не владею.Я посмотрел dtb в OrangePi-Zero-Plus-GO2023-08-10-AB21.zip, эта прошивка для Orange Pi Zero Plus на allwinner, sun50i-h5
А по ценам, не знаю, сколько это по курсу было, ноябрь-декабрь прошлого года. Модем с адаптером 1860 или 1890 руб, не помню, роутер под перепрошивку на mt7621 800 руб. с рук. Модем тогда один магазин на несколько часов выставил по безумно низкой цене.
16.08.2023.
12:25:56
ping=true
батарейка=77
темп батарейки=36,2
питание=Включить
ip=100.75.30.158
ip_v6=fe80::998a:12f:7241:6b0b
уровень сигнала =-95
тип подключения= 4G
ID вышки=5438217
свободная память=8GB
яркость=13
WiFi=Нет сети
ОЗУ доступно=1,24GB
время работы=214:12:53
Что бы модем использовал все 4 антенны, нужно, если не ошибаюсь, 68 ногу притянуть к земле. В теме агрегации это есть.
В итоге, оставил только одну — на выходе 3.3В на адптере. Да и модем в даташите требует 2х220 мкФ именно по 3.3В. Чисто внешне скорость стала держаться стабильнее, но может и хочется в это верить просто.
Те же реле на USB — вообще классика, модулей хватает, например ICSE014A или ICSE013A, Prolific 2303HX based.
Но еще лучше — беспроводные и не только ESPшки… да с готовыми модульными прошивками вроде ESPEasy и прочих Tasmota. Все отдельно, все независимо, все дружится друг с другом программно.
Лучше помудрить программно, чем пины выводить IMHO.
Внесу свои Пять копеек, благо как раз по работе что то подобное использую.
1. Фирма Антэкс выпускает роутеры с разъемом под модем AXR-5P PoE и с модемом AXR-5i PoE Последний я использую у себя на работе, пока претензий нет.
2. Плюс нашел наидешевейший роутер с модемом, есть версии с USB (встроена сетевая карта) так и с POE Вот ссылка Протестировал и эти, но единственно интерфейс не привычный, я бы сказал минимальный.
Все выше перечисленные модемы протестировал. Связь стабильная, уровни сигналов хорошие. Если кому интересно могу написать тут отзыв и выложить фото. Плюс на ютюбе по названию роутеров можно найти видео их работы.
Описанный в теме модем я постараюсь тоже протестировать
Что касается модема, что он CAT4, здесь же в теории CAT12
В то же время у вертелла есть отличные удлиннители для модемов, Серия VT-AD
например vertell.ru/product/36-vt-ad-m-2/
С кинетиком (после небольшого бубна — почему что в дешевом keenetic 4g не захотел работать стабильно, только через воткнутый в usb разъем пассивный usb-хаб) работают стабильно и беспроблемно.
А еще вентиляторы. Да и питание надо нормальное.
Если не используется GPIO, а только сеть и USB, мне кажется проще делать используя
тв приставки (с armbian или openwrt )
s905w, s912, s905x3 — такая самая любимая модель.
Но для роутера есть лучше решение — отличный и мощный роутер Spectrum RAC2V1K(=Askey RT4230W) (4+4 антен, 1Гб РАМ, 512Мб флеш, ARMv7) с openwrt поддержкой.
кстати, сравнивал производительность , RAC2V1K почти в 2 раза быстрее s905w.
PS: даже докер на openwrt уже запускается и даже работает
PPS: роутер такой на ebay покупается за $20-25, и ~$10 посреднику. Приставки, $40-45 за s905x3 или из «ящика старья» модели попроще.
Я на пассивное охлаждение сильно не рассчитываю. В аналогичных условиях у меня даже дешевые кулеры служат больше года. На шарикоподшипнике — сильно больше.
Это какое?
Про охлаждение — вентилировать надо бокс вцелом, и другими вентиляторами, да с фильтрами от пыли… IMHO
Про печать… Жизнь отучила делать сложные уникальные системы, особенно если не себе. Через несколько лет не будет этой малины, будет чтото другое, со своими размерами и конфигурацией… и хорошо если будет возможность напечатать… А еще надо будет вспомнить, что, как, почему так вообще делалось.
А если используется готовое цельное устройство в своем корпусе, то и меняется оно целиком.
К тому же цельное устройство — на то и цельное что там все в корпусе, с встроенным БП (пусть из DC) и прочими свойствами законченного изделия. Просто надежнее мне кажется.
Да, «на полочках» выглядят колхозно, в отличие от рейки. Но это все равно технически закрытый объем. Не то количество устройств, нет нужды в плотной упаковке… Но чем проще тем меньше затрат, причем не только финансовых.
и сколько раз в год я буду чистить/менять фильтры? Если мощность всего оборудования в коробе 20 Вт, короб (металлический) можно оставить замкнутым. У меня пара устройств аналогично работают лет 7-8 где-то (температура мониторится). И даже в замкнутом пространстве от кулеров будет прок.
У меня почти все модели на тинге, исходники — в облаке, все структурировано.
Даже совсем без документации с размерами — кладу на сканер, перемеряю штангелем, печатаю тоненькую оправку. Со 2-3 попытки попадаю во все крепежные отверстия/пазы/защелки.
почему я и писал этот пост.
Из ЛДСП?
Но издалека. Уж очень затратно во всех смыслах, но прежде всего — по времени.
В точку. 3 месяца урывками. Было бы сильно быстрее, не пытайся я собрать оригинальный OpenWrt.
если есть огромное желание тр… ть себе моск берете микротик, вставляетет USB готовый свисток с симкой и делаете что хотите и бюджет тотже, только направление прямее.
выносные антенны — было бы желание, вынести не проблема.
Микротик был хорош пока стоил 3тр. Я их тогда с десяток прикупил (hap ac2, или что-то тип того).
За овер 10тыр за подобное, mikrotik для меня перестал существовать :)
Это точно про него?
Я правильно понял что у него езернет 100 и вайфай 300? Смысл тогда в нем таком?
У RBwAPR-2nD те же проблемы.
Я ж говорю микротик с гигабитом резко отличается даже от не очень дешевых сейчас 100М моделей.
У автора то вариант ближе к гигабиту показывает, иначе зачем вообще вся эта ерунда с агрегацией и все такое.
Микротик это другой геморой за несколько большие деньги. И кстати вообще не факт что вы таки сможете добиться на нем той же агрегации частот например.
С гигабитными портами у микротиков цена выше.
Но могу и ошибаться, если приведете пример буду признателен.
Вот только не нашел где купить такое за 10тр, единственная ссылка с ценой которую нашел 22тр. За такие деньги я лично не готов.
Впрочем, ничего не мешает взять более дешевый wAP R и установить свою платку модема, лишь бы была поддерживаемой. Всё остальное в виде LTE-антенн и гнезда для SIM-карты там уже есть.
Всё аналогично и с wAP R ac.
у меня валяется микротик и куча модемов, но я уже давно остыл в этой теме — предпочитаю путь с меньшим еб… м мозгов — кинетики.
Потому что из дефолта там совсем грустно с настройками. Хотя вероятно от потребностей многое зависит.
Как думаете, для чего многие люди перешивают кинетики в openwrt? Чтобы с поддержкой дела не иметь?
Ненормально считать что этого должно хватать всем.
А про поддержку вообще странно звучало — как они настроят функционал который в устройстве просто отсутствует?
Еще бы якоря в тексте (оглавление и т.д.)
пройденный этап.
Четыре антенны:
CA
Есть варианты НАМНОГО дороже, например Peplink(с 2-мя модемами, и умеющий переключаться сам между симками)
Тут же накручено-наверчено, можно и поинтереснее реализовать, НО...)))
А так удачи!
Я сначала хотел на вот этом собрать, но пустил в другой проект. И зачем роутеру 8Гб оперативы…
Самое близкое, что сейчас нашел — 1, 2, 3, 4. Но цены сейчас не радуют, я покупал сильно дешевле.
Мобильный проц x64, TPD в пределах 10-15 Вт, питание штекер 5.5*2.1мм, ATX (я знаю про pico) не нужен, SSD, SATA, RS232/485, GPIO, PCI (в свежих M.2) для модема/WiFi и тд.
Ничего сверхъестественного, но 1) пассивное охлаждение, 2) пара гигабитных портов. Что и было надо. Есть SATA, SSD, GPIO (немного). Корпус отличный.
У меня есть стратегический запас радиаторов, пилю сам.
например ZBOX CI337, пассивное охлаждение, два разъема ethernet 1Gbit, две кроватки для планок памяти. SSD или жесткий диск размером 2.5'
Сейчас можно на ebay купить, но пересылка…
И почему то цены не радуют…
правда говоря, и в качестве роутеров я их не использую, стояла задача запустить несколько вируталок, установил на каждый 16гб RAM, 1Tb ssd, proxmox — великолепно пашут уже полгода, пыль не генерируют, почти не греются.
Вообще ищу модем нормальный с агрегацией частот, но чтоб как-то побюджетнее и без существенного рукоделия, хоть слова паяльник и перепрошивка ужаса не вызывают.
В старых прошивках типа 2.16D (точно не вспомню) он заводится с небольшим бубном, но управления никакого.
Помимо упомянутой выше Turbo есть недорогие роутеры SmartBox Giga и Flash с приличным количеством памяти и собранной OpenWrt в вариациях.
Самые эти фиброкомы любят к ним подключать (требуется небольшая доработка
напильникомпаяльником)два диапазона wifi, удаленное управление
детьмиинтернетом, гигабит для nas, скорость по сравнению с 4g свистком — с 60 до 130+мбит возрасла. все собрано на чердаке в деревне. антенны прибиты снаружи)идеально
Можно взять Zyxel 4G KN-2211 за ~6к, при этом это будет отличный ui (в отличии от овноwrt), ethernet wan плюсом, модули на все случаи жизни и стабильная работа из коробки без магии и фей.
Те смысла так плясать при такой цене за нормальное железо я не вижу от слова «совсем», разве только just because i can)
Модем помню сначала не заработал, не видел симку, на 4pda помогли. Я так понял сам модем убить прошивкой не возможно.
Автор молодец толково все расписал, пригодится многим. Единственное по умолчанию вроде mimo с 4 антеннами не работает на этом модеме, надо там подпаивать что то на разъеме, не стал морочится, оставил 2 антенны у себя.
Не агитирую, просто мой опыт. А может есть какая-то черная магия, и кто-то поделится секретом.
Если руки дойдут до MIMO 4x4 — допилю пост.
но тут порт 2.0.
vertell.ru/product/45-adapter-vt-usbc2-dlya-m-2-modemov/
кастурезанный, так что на дешевом железе можно упереться в куда меньшие скорости).Реальный интерфейс в описании товара все же стоит указывать.
www.micro-drive.ru/products/tandem-4gt-oem-11
вот это скорее всего правда. Если антенна нормально сделана, то больший коэффициент усиления будет только у облучателей в тарелку.
Поэтому есть 3 наиболее рабочих варианта:
1. Готовое к применению устройство, вроде MikroTik LHG LTE kit, MikroTik LHG LTE kit, KROKS AP-221M3Y-Pot и тому подобные.
2. 4G роутер [со встроенным модемом] (Huawei B818-263, Keenetic LTE, Mikrotik RB912R-2nD-LTm) и отдельно выносную антенну.
3. 4G модем втыкаем в Wi-Fi роутер с поддержкой модемов + выносная антенна.
1 и 2 стоят порой непомерных денег и имеют те или иные недостатки.
3 вариант можно собрать из всего готового, можно совсем бюджет, например откопать USB модем e3372 + TP-Link TL-MR3020, потом идут варианты несколько получше.
Можно взять более продвинутый PCI или M.2 модем (как в шапке) + переходник на USB и WiFi роутер, или WiFi роутер, имеющий соответствующий слот.
А можно вместо роутера взять одноплатный компьютер (вроде Raspberry Pi и т.п.), поставить на него, например, систему OpenWrt, предназначенную для маршрутизаторов, и сделать свой маршрутизатор
Ну, конечно, то что я прочёл выше — это какой-то совсем уже блэкджечный блэкджек :)))
подключают
4g модем БЫСТРЫЙ (± насколько это возможно ) + заНЕДОРОГО + (из-за того что «4g ловит плохо» ) с ВНЕШНИМИ АНТЕННАМИ (в надежде что приём улучшится).
Почему именно самодельный роутер на openwrt? Скажу в мягкой форме — выбор непонятен.
Обычно такую связку практикуют в частный дом на выселках (где «нет оптики»).
В обзоре ключевого момента (направленных антенн) я не увидел. Точнее рассказа (с пояснением процесса) как антенны ориентировать на желаемую базовую станцию.
Отвечу на ваш вопрос «объяснить в двух словах что тут происходит»:
нельзя ответить в двух словах — интрига пропадёт.
А в том виде, в каком оно есть — вышло в «лучшее». Так что «всё продумано».
Снимаю шляпу: надо очень сильно постараться чтобы так витиевато написать о запуске putty.
А вот о нюансах версий прошивок читатель конечно же узнает из комментарием, из первого же из них.
Но автор поста ответит «умвр», «работает — не трожь», «не делай мне мозг».
Спасибо. Было очень полезно.
И так во всём. Потрясающее сочетание водолейства и «рисуем сову».
Есть такие буквы.
Вы пробовали читать эти обзоры «в первый раз»? Много там по сути процесса настройки написано?
Опять же: «я медленно снимаю с себя»… и «дорисовываем сову».
PS. За обзор — спасибо. Но развиваться, как техническому писателю, есть куда.
как бы, из поста:
и я конкретно указываю версию прошивки, на которую у многих пользователей нареканий нет.
Пошагово не написано, да, гайда нет. Но ссылаюсь на
на одном известном сайте. Кроме того, я рассказываю, что произвел поиск всех окружающих базовых станций всех операторов, выбрал того, что лучше ловит (с указанием частот), построил профиль трассы, грустно вздохнул при его виде.
Настраивать антенну? Крутим антенну на мачте (направление на БС) до максимального сигнала, затем крутим антенну на кронштейне (поляризация).
Я же писал про тот свой пост, цитирую
С подробнейшим гайдом, я обзор бы писал до Нового года. Следующего.
И вообще
А, например, HUAWEI B818-263 за 16к — не бред? Нет, он же Cat.19.
Только вот один вопрос — зачем использовать плату компа, если модем можно воткнуть в роутер с USB портом (через корпус/переходник) и настраивать через роутер…
А для остального есть minicom в OpenWrt.