Поиск

суббота, 15 апреля 2017 г.

OpenWRT установка на Dlink DIR-320

Бошльшое спасибо Andrew автору статьи
Home About OpenWRT Chaos Calmer 15.05 on Dlink DIR-320 with CDMA modem
OpenWRT установка на Dlink DIR-320 c extroot
Dlink & extroot USB drive

Install OpenWRT using Image builder for brcm47xx/legacy

Самому собрать прошивку у меня не получилось, так как Image builder работает только на 64-разрядных системах. Пришлось попросить товарища.
make image PROFILE="Broadcom-b43" PACKAGES="base-files libc libgcc busybox kmod-usb2 kmod-usb-ohci kmod-usb-uhci kmod-usb-storage kmod-fs-ext4 block-mount kmod-scsi-core -dropbear mtd uci -opkg netifd fstools swconfig wpad-mini nvram -otrx kmod-leds-gpio kmod-gpio-button-hotplug kmod-ledtrig-default-on kmod-ledtrig-timer kmod-ledtrig-netdev dnsmasq iptables -ip6tables ppp ppp-mod-pppoe kmod-nf-nathelper firewall odhcpd odhcp6c kmod-usb-serial kmod-usb-serial-cp210x"
На этапе make я добавил два модуля "kmod-usb-serial kmod-usb-serial-cp210x"
Когда он скинул мне результат команды make в архиве, я смог продолжить.
Our file of interest is openwrt-15.05.1-brcm47xx-legacy-asus-wl-500gp-v2-squashfs.trx since Asus WL500gp-V2 uses the same hardware as Dlink DIR-320 Rev A.

Firmware Flashing

Прошивка установилась без проблем! Адаптера USB-to-Serial под рукой не нашлось. Telnet подключился сразу. Все ОК. Теперь самое интересное.

Setting up extroot

 Подключение корневой директории на внешнюю память USB drive. В моем случае, это флешка на 8 Gb.

До пункта с редактированием fstab все  шло хорошо.
After editing your fstab file it should look like following: 
дальше пришлось обратится к официальному руководству по настройке fstab и автомонтированию

fstab редактировал как описано здесь
http://wiki.openwrt.org/ru/doc/uci/fstab
Честно говоря сам тупанул на пару часов, ну да ладно,
идем дальше...

Installation of package manager (opkg)

 Флэшку втыкаю в ПК закачиваю в /home/repo 
wget -r --no-parent --reject "index.html*" "https://downloads.openwrt.org/chaos_calmer/15.05.1/brcm47xx/legacy/packages/"
ЗАВЕРШЕНО --2017-04-15 01:22:17--
Общее время: 12m 54s
Загружено: 4508 файлов, 307M за 5m 14s (1001 KB/s)

Перемещаю repo
mv downloads.openwrt.org/chaos_calmer/15.05.1/brcm47xx/legacy/packages/* .
rm -rf downloads.openwrt.org/
ls
base luci  management  packages  routing  telephony
Устанавливаю OPKG . Редактирую /etc/opkg/distfeeds.conf
Проверяю установкой Nano и MC
root@OpenWrt:/# opkg install nano
Installing nano (2.4.1-1) to root...
Downloading file:///home/repo/packages/nano_2.4.1-1_brcm47xx.ipk.
Installing libncurses (5.9-2) to root...
Downloading file:///home/repo/base/libncurses_5.9-2_brcm47xx.ipk.
Installing terminfo (5.9-2) to root...
Downloading file:///home/repo/base/terminfo_5.9-2_brcm47xx.ipk.
Configuring terminfo.
Configuring libncurses.
Configuring nano.

Make sure internet works.

Подключаю интернет WiFi клиентом к домашнему роутеру (можно и к смартфону например). Описание 
Предварительно еще нужно установить поиск wifi сетей
OpenWRT установка на Dlink DIR-320 c extrootopkg update && opkg install wireless-tool

LuCI installation

 Без запинки.

3g/CDMA modem configuration

Пока нет надобности...

Measuring signal strength

Не проверял

Настройка Firewall

The firewall configuration located in /etc/config/firewall.
В дополнение к правилам по умолчанию, разрешил входящие соединения для SSH и HTTP, потом и для Вебкамеры. Остальной входящий трафик отбрасываем.

https://wiki.openwrt.org/doc/uci/network/switch
Switch Documentation Структурная схема движения трафика в роутере 

Подключение Вебкамеры

http://h-wrt.com/ru/doc/webcam

mjpg_streamer -i "input_uvc.so -d /dev/video0 -y" -o "output_http.so"

http://192.168.2.1:8080/?action=stream

Подключение датчика температуры 1-Wire

Для USB адаптера DS9490R установить пакеты:
kmod-w1
kmod-w1-gpio-custom
kmod-w1-master-ds2490
kmod-w1-master-gpio
kmod-w1-slave-therm
owfs
owftpd
owhttpd
owserver
owshell
owfs - это программа, которая отображает сеть в виде файловой системы. То, что owfs совпадает с названием всего пакета - чистая случайность.
owhttpd - это программа, которая делает доступной сеть по HTTP протоколу (по-народному, через браузер)
И та и другая программы могу работать с мастером сети самостоятельно, но не вместе!
Чтобы owfs и owhttpd работали одновременно, нужно запустить owserver.
owserver -u -p 3000
Запускает сервер работы с сетью, -u значит физическое устройство USB типа DS9490R, и отвечает на запросы по 3000 порту.
owhttpd -s 3000 -p 3001
-s 3000 - порт, на котором запущено owserver
-p 3001 - порт, на котором owhttpd сам отвечает по протоколу HTTP
owfs -s 3000 /home/1wire/
-s 3000 понятно, дальше идет mount point, который является обязательным параметром     http://www.ab-log.ru/forum/viewtopic.php?t=420
Создать точку монтирования адаптера:        mkdir /home/1wire
Примонтировать 1-Wire:                                   owfs --allow_other -u /home/1wire
Просмотр примонтированных датчиков:     ls -lah /home/1wire

Запуск Web-интерфейса (если нужно):

owserver -uall -p 3000
owhttpd -s 3000 -p 3001
owfs -s 3000 /home/1wire/

Просмотр в Web-браузере:

http//ip-адрес:3001/

Чтобы USB-адаптер монтировался автоматически при загрузке, необходимо внести вышеуказанные команды в файл /etc/rc.local

Сбор и вывод статистики температуры на графике.
Steps:
  • opkg install collectd-mod-exec
  • Write your script (example below), set it executable, test it out and place it somewhere persistent.
  • In LuCI, add your script under Statistics→Setup→General plugins→Exec, and save&apply.
  • After a few seconds, check that collectd has created an RRD under /var/rrd/yourhostname/exec-foo/datatype_bar.rrd.
  • Create /usr/lib/lua/luci/statistics/rrdtool/definitions/exec.lua and tell LuCI about titles, data types and colours.
  • Visit Statistics→Graphs→General→Exec and try rendering your data.
  • Consider adding /usr/lib/lua/luci/statistics/rrdtool/definitions/exec.lua to /etc/sysupgrade.conf so it survives upgrades.
  Используются модули collectd; rrdtool; luci_statistics
Убрал за ненадобностью строчки из /etc/rc/local
#owhttpd -s 3000 -p 3001
#owfs -s 3000 /home/1wire/
Подредактировал скрипт из example для сбора статистики в базу RRDTool. Получилось
#!/bin/bash
HOSTNAME="${COLLECTD_HOSTNAME:-`hostname -f`}"
INTERVAL=30 #$COLLECTD_INTERVAL
while sleep "$INTERVAL"
do
        val=$((owread -s3000 /uncached/28.08B6EE080000/temperature10 | awk '{ print $1; }') 2>/dev/null);
        if [ $? -ne 0 ]
        then
                val="U"
        fi
        echo "PUTVAL \"$COLLECTD_HOSTNAME/exec-temperature/temperature\" interval=$INTERVAL N:$val"
done
Тут осталась непонятка с переменной $INTERVAL Если
INTERVAL=$COLLECTD_INTERVAL 
То в логе /var/log/collectd.log ошибка:
exec plugin: exec_read_one: error = sleep: invalid number '60.000'
Поэтому у меня
INTERVAL=30

Прописал к скрипту путь в Statistics > Setup > General plugins > Exec

 Для построения графика, создаю файл exec.lua в директории 
/usr/lib/lua/luci/statistics/rrdtool/definitions/ следующего содержания:
module("luci.statistics.rrdtool.definitions.exec", package.seeall)

function rrdargs(graph, plugin, plugin_instance)
    -- For $HOSTNAME/exec-foo-bar/temperature_baz-quux.rrd, plugin will be
    -- "exec" and plugin_instance will be "foo-bar".  I guess graph will be
    -- "baz-quux"?  We may also be ignoring a fourth argument, dtype.
    if "test" == plugin_instance then
        return {
            title = "%H: 1Wire sensor temperature",
            vlabel = "celsius",
            data = {
                types = { "temperature" },
                options = {
                    temperature = {
                        title  = "made up",
                        color  = "ff0000"
                    }
                }
            }
        }
    end
end
Включил плагин Statistics > Setup > Output plugins > RRDTools
Перезапуск статистики
root@OpenWrt:~# /etc/init.d/collectd restart
root@OpenWrt:~# /etc/init.d/luci_statistics restart 

Получаем это:

Статистика температуры в холодильнике. 1Wire, Collectd, RRDTool, Luci_statistics.
Статистика температуры в холодильнике. 1Wire, Collectd, RRDTool, Luci_statistics.

Статистика температуры в холодильнике. 1Wire, Collectd, RRDTool, Luci_statistics.
Статистика температуры в морозилке. 1Wire, Collectd, RRDTool, Luci_statistics.
Статистика температуры в морозилке. 1Wire, Collectd, RRDTool, Luci_statistics.

https://wiki.openwrt.org/doc/howto/statistic.collectd
https://wiki.openwrt.org/doc/howto/statistic.rrdtool
https://wiki.openwrt.org/doc/howto/statistic.custom
http://flux242.blogspot.ru/2011/01/collectd-mod-exec-part-2.html

Ранее устанавливал OpenWrt на TP-link tl-wr1043nd c FTP
и
TL-WR1043ND прошивка на OpenWRT и запуск на нем MiniDLNA