шаринг без пк с роутером TP-Link TL-MR3420 и 3220

Anoxiety

Пользователь
Перезагрузка по qss - очень удобна на роутере 3220 v1 - так как на нем нет кнопки питания. Когда перезагрузка уже запущена и идет выгрузка процессов (если подержать кнопку qss более 2 сек) - диод qss мигает 2 раза в секунду (режим называется биение сердца).

Может еще кому-то понадобиться, после копирования mpcs в ротуер, ей нужно дать права 0755
присвоение файлам атрибута 0755 - выполнить в Putty
Код:
chmod +x /usr/sbin/mpcs_ext /etc/init.d/mpcs_init
 

garynych

Любитель Сат-ТВ
4) qss - быстро моргнул (светился-быстро погас-засветился снова) - ключь найден
5) qss - моргнул длинно 3 раза (светился-погас-засветился снова) - ошибка mpcs
чего то на моём 3420 эти пункты не фурычат...

---------- Сообщение добавлено в 19:31 ---------- Предыдущее сообщение размещено в 18:00 ----------

всё... поправил... заморгали по ключам ,на 3420 работает... правда ещё надо поковырять твой скрипт... там ещё пару бяк каких то... наверно пауз не хватает... а может не нужно чего... если включить лог консоли,то увидишь что
root@OpenWrt:~# /etc/init.d/mpcs_init start
root@OpenWrt:~# killall: mpcs: no process killed
rm: can't remove '/tmp/*.fifo': No such file or directory
rm: can't remove '/tmp/mpcs.led': No such file or directory
killall: grep: no process killed
killall: tee: no process killed
killall: cat: no process killed

короче кто будет пробовать внедрить это в свои сборки openwrt, то смотрите у себя
по пути /sys/class/leds как у вас называются... скорее всего так же как и у меня
tp-link:green:qss так что в mpcs_init и mpcs_ext заменить
 

Anoxiety

Пользователь
Апдейтнул и упростил скрипт. Теперь сами можете дописывать в него что искать в логах и как мигать.
Убрал глюк - файл с логом mpcs распухал до нескольких мегабайт и вешал роутер. Теперь все через переменную.
Изменил название лога в файле в файле /etc/mpcs/mpcs.conf теперь LogFile = /tmp/_mpcs.log.pipe
Для того, чтоб работало, посмотрите путь к вашему диоду QSS он находится в /sys/class/leds/ и пропишите его в обоих файлах в QSSled=.
Теперь :
1) если ключ найден в кеше - очень быстрое моргание (ели заметное)
2) если ключ найден через инет - 1 быстно моргание
3) если таймаут - 2 длинным моргания
4) если другие ошибки (включая rejected - когда баланса нет) - 3 длинных моргания

Тестируйте. Может бока какие есть. В принципе должно работать.

/etc/init.d/mpcs_init
Код:
#!/bin/sh /etc/rc.common
# Copyright (C) 2006 OpenWrt.org
START=99

QSSled="/sys/class/leds/tl-mr3x20:green:qss"    # путь к диоду QSS в переменную


start() {
	/usr/sbin/mpcs_ext &                     # запускаем mpcs
}

stop() {
	killall -9 mpcs  &> /dev/null            # снять задачу mpcs и не выводить stdin и stdout
	rm /tmp/mcps.mem &> /dev/null            # удаление временных файлов mpcs
	rm /tmp/*.fifo   &> /dev/null            # удаление временных файлов mpcs
	echo 0 > $QSSled/brightness              # откл. диод QSS
}

usr/sbin/mpcs_ext
Код:
#!/bin/sh
# QSS led display mpcs activity
# script version 1.1 Copyright (C) 2013 anoxiety
#
# в настройках mpcs в файле /etc/mpcs/mpcs.conf указываем путь к лог файлу LogFile = /tmp/_mpcs.log.pipe

exec > /dev/null 2> /dev/null                        # скрываем все stdout и stderr, желательно закомментировать при отладке
QSSled="/sys/class/leds/tl-mr3x20:green:qss"         # путь к диоду QSS в переменную, может отличаться у разных роутеров

  CacheFilter=": cache"                              # текст который ищем в логе mpcs, чтоб мигнуть диодом QSS, ключь из кеша
  FoundFilter=" tuner .*: found "                    # ключ найден через инет
TimeoutFilter=": timeout"                            # таймаут
  ErrorFilter=": rejected|: not found|incimplete request|too many errors|errno=|failed" # ошибки под ряд черз "|"
#   NewFilter=""                                     # новый фильтр, не забыть дописать в AllFilters
   AllFilters="$CacheFilter|$FoundFilter|$TimeoutFilter|$ErrorFilter" # все фильтр через "|" можно добавлять свои


ledBlink() {                              # описываем функцию моргания qss
local    times="$1"                       # сколько раз мограть
local OFFpause="$2"                       # время выключения
local  ONpause="$3"                       # време свечения
for k in `seq 1 $times`                   # цикл - кол-во морганий
do
	echo 0 > $QSSled/brightness        # откл. диод QSS
	for i in `seq 0 $OFFpause` ; do echo > /dev/null; done  # цикл для паузы отключения 0.2 сек, проц грузит не более 50%
	echo 1 > $QSSled/brightness        # вкл. диод QSS
	for i in `seq 0 $ONpause`  ; do echo > /dev/null; done  # цикл для паузы свечения 0.2 сек, проц грузит не более 50%
done
}

if [ ! -f /tmp/mpcs ] ; then              # если файла mpcs нету в tmp - распакуем его
	echo timer > $QSSled/trigger; echo 200 > $QSSled/delay_off ;echo 200 > $QSSled/delay_on # быстро мограем диодом QSS
	cp -f /etc/mpcs/mpcs.bz2 /tmp/     # копируем архив mpcs.bz2 из /etc/mpcs/ в /tmp/
	sleep 3s                           # ждем 3 сек. пока скопируется
	bunzip2 -f /tmp/mpcs.bz2           # распаковываем файл mpcs в папку /tmp/
	chmod +x /tmp/mpcs                 # даем раcпакованному файлу mpcs права 0755
	mkfifo /tmp/_mpcs.log.pipe         # создаем FIFО канал для совместного доступа к файлу лога mpcs
fi

if top -bn1 | grep "/[t]mp/mpcs -c /etc/mpcs" &> /dev/null; then # если процесс mpcs запущен - выгружаем его
	killall -9 mpcs       &> /dev/null # снять задачу mpcs и скрыть вывести stdin и stdout
	echo 0 > $QSSled/brightness        # откл. диод QSS
	rm /tmp/mcps.mem      &> /dev/null # удаление временных файлов mpcs
	rm /tmp/*.fifo        &> /dev/null # удаление временных файлов mpcs
	killall grep          &> /dev/null # снять задачу grep поиска в логе mpcs
	sleep 2s                           # ждем пока все удалится, выгрузиться, возможно хватит и 1 сек.
fi

if [ -f /tmp/_mpcs.led.flag ]; then       # если файл-флаг существует для разрешения моргания QSS 
	rm /tmp/_mpcs.led.flag &> /dev/null                     # удаляем файл-флаг 
	kill -9 $(pgrep -f "grep -E -m 1") &> /dev/null            # убиваем процесс grep -E -m 1 в старомцикле while
	sleep 2s                                                # ждем 1 секунды чтоб успел выгрузится старый цикл while
fi

/tmp/mpcs -c /etc/mpcs &   # запуск mpcs с ключем -с это путь к конф. файлам /etc/mpcs - постоянно работает в фоне
echo 0 > $QSSled/brightness; echo 1 > $QSSled/brightness       # вкл. диод QSS
touch /tmp/_mpcs.led.flag                 # создание файла-флага для разрешения моргания QSS 

while [ -f /tmp/_mpcs.led.flag ]; do      # цикл - если файл-флаг mpcs.led существует - постоянно работает в фоне
	log=$(grep -E -m 1 "$AllFilters" /tmp/_mpcs.log.pipe)   # ищем в pipe логе текст, если находим - выполняем дальше
	    if echo $log | grep -qE "$CacheFilter"; then        # если слово из фильтра найдено - моргаем 1 раз
		ledBlink 1 10 0             # моргать 1 раз очень быстро, выкл 10 итераций цикла - вкл. 200 итераций цикла -  
	  elif echo $log | grep -qE "$FoundFilter"; then        # возможно на разных роутерах (процесс.) разная скорость мигания
		ledBlink 1 1000 0           # моргать 1 раз быстро, выкл 500 - вкл. 200
	  elif echo $log | grep -qE "$TimeoutFilter"; then
		ledBlink 2 3000 2000        # моргать 2 раза медленно, выкл 3000, вкл. 2000 - 4500~1 секунда (CPU:400.000 MHz)
	  elif echo $log | grep -qE "$ErrorFilter"; then
		ledBlink 3 3000 2000        # моргать 3 раза медленно, выкл 3000, вкл. 2000
#	  elif echo $log | grep -qE "$NewFilter"; then          # можно добавить свое условия моргания для нового фильтра
#		ledBlink 5 3000 2000        # моргать 3 раза медленно, выкл 3000, вкл. 2000
	    fi
done &                                    # конец цикла


Посмотреть вложение 2 mpcs для локального запуска на роутере 3220 v1 - script v 1.1.rar
 
Последнее редактирование:

garynych

Любитель Сат-ТВ
[LINE]что то новый вариант у меня не пашет... в смысле пашет,но не правильно...
просто тупо часто диод моргает... а при перегрузке mpcs, загорается ,как она перегрузилась,снова часто моргает
и даже когда mpcs уже получает ключи,то же ничего не меняется...просто как часто моргал,так и моргает :([/LINE]

разобрался... работает ;)
 
Последнее редактирование:

garynych

Любитель Сат-ТВ
сам не знаю точно в чём... просто остановил,и заменив скрипты,пробовал и ничего...
кино шло,а вот диод моргал ...,перезапуск ничего не давал... потом устал рыть где чего не так и перегрузил роутер...
и после перегрузки заработало... ;)
 

garynych

Любитель Сат-ТВ
для ленивых... добавил в пакет mpcs
если у вас своя прошивка и нет mpcs, то закинуть через winSCP в папку /tmp
и в putty выполнить opkg install /tmp/mpcs_1-2_ar71xx.ipk
затем перегрузить роутер...
скачать
 

Anoxiety

Пользователь
Обновил скрипт. Надеюсь в последний раз. И больше глюков не будет.

Обновил скрипт. Теперь его версия 1.2 Уменьшил количество кода. Убрал лишнее. Отошел от использования файлов-флагов. Все делается через проверку запущен ли mpcs, что оказалось надежней и проще. Теперь пауза для диодов запускается с наименьшим приоритетом - что не должно нагружать роутер. Также постарался привести паузу к миллисекундам.
Скрипт надежно отрабатывал выход из цикла моргания даже если mpcs просто удалить командой killall. Чего не было в
Убрал вывод ошибок в mpcs_init.
Одним словом - работает надежней чем раньше.
После установки скрипта нужна перезагрузка роутера, т.к. только при загрузке создается поток обмена для лог файла mpcs.

/etc/init.d/mpcs_init
Код:
#!/bin/sh /etc/rc.common
# Copyright (C) 2006 OpenWrt.org
# for QSS led display mpcs activity v 1.2
START=99

QSSled="/sys/class/leds/tl-mr3x20:green:qss"    # путь к диоду QSS в переменную


start() {
	/usr/sbin/mpcs_ext &                     # запускаем mpcs
}

stop() {
	killall -9 mpcs  &> /dev/null            # снять задачу mpcs и не выводить stdin и stdout
	rm /tmp/mcps.mem &> /dev/null            # удаление временных файлов mpcs
	rm /tmp/*.fifo   &> /dev/null            # удаление временных файлов mpcs
	echo 0 > $QSSled/brightness              # откл. диод QSS
}

usr/sbin/mpcs_ext

Код:
#!/bin/sh
# QSS led display mpcs activity
# script v 1.2 Copyright (C) 2013 anoxiety(a)джимеил.ком
#
# в настройках mpcs в файле /etc/mpcs/mpcs.conf указываем путь к лог файлу LogFile = /tmp/_mpcs.log.pipe

QSSled="/sys/class/leds/tl-mr3x20:green:qss"         # путь к диоду QSS в переменную, может отличаться у разных роутеров
exec > /dev/null 2> /dev/null                        # скрываем все stdout и stderr, желательно закомментировать при отладке

  CacheFilter=": cache"                              # текст который ищем в логе mpcs, чтоб мигнуть диодом QSS, ключь из кеша
  FoundFilter=" tuner .*: found "                    # ключ найден через инет
TimeoutFilter=": timeout"                            # таймаут
  ErrorFilter=": rejected|: not found|incimplete request|too many errors|errno=|failed" # ошибки под ряд черз "|"
#   NewFilter=""                                     # новый фильтр, не забыть дописать в AllFilters
   AllFilters="$CacheFilter|$FoundFilter|$TimeoutFilter|$ErrorFilter" # все фильтр через "|" можно добавлять свои


ledBlink() {                                  # описываем функцию моргания qss. на разных роутерах (процессорах)возможна разная скорость мигания
local   OneSecond="7500"                      # указываем кол-во итерраций ~ 1 сек. (7500 для- CPU:400 MHz)
local RepeatTimes="$1"                        # сколько раз мограть
local    OFFpause="$(($OneSecond /100 * $2))" # время выключения
local     ONpause="$(($OneSecond /100 * $3))" # време свечения
for k in `seq 1 $RepeatTimes`                 # цикл - кол-во морганий
do
	echo 0 > $QSSled/brightness            # откл. диод QSS
	nice -n 19 seq $OFFpause &> /dev/null  # цикл для паузы откл. < 1 сек, nice - приоритет мин 19 чтоб не тупил роутер, (макс -20 до 19 мин)
	echo 1 > $QSSled/brightness            # вкл.  диод QSS
	nice -n 19 seq $ONpause  &> /dev/null  # цикл для паузы откл. < 1 сек, nice - приоритет мин 19 чтоб не тупил роутер, (макс -20 до 19 мин)
done
}

if [ ! -f /tmp/mpcs ] ; then              # если файла mpcs нету в tmp - распакуем его
	echo timer > $QSSled/trigger; echo 200 > $QSSled/delay_off ;echo 200 > $QSSled/delay_on     # быстро мограем диодом QSS
	cp -f /etc/mpcs/mpcs.bz2 /tmp/     # копируем архив mpcs.bz2 из /etc/mpcs/ в /tmp/
	sleep 2s                           # ждем 2 сек. пока скопируется
	bunzip2 -f /tmp/mpcs.bz2           # распаковываем файл mpcs в папку /tmp/
	chmod +x /tmp/mpcs                 # даем раcпакованному файлу mpcs права 0755
	mkfifo /tmp/_mpcs.log.pipe         # создаем FIFО канал для совместного доступа к файлу лога mpcs
fi

if  top -bn1 | grep -qE "/[t]mp/mpcs -c /etc/mpcs|[g]rep -E -m 1" ; then # если mpcs или цикл запущен - kill
	kill -KILL $(pgrep -f "/tmp/mpcs -c /etc/mpcs")         # снять задачу mpcs - при этом убьется цикл 
	echo 0 > $QSSled/brightness        # откл. диод QSS
	rm /tmp/mcps.mem                   # удаление временных файлов mpcs
	rm /tmp/*.fifo                     # удаление временных файлов mpcs
	sleep 1s                           # ждем пока все удалится, выгрузиться mpcs
fi

/tmp/mpcs -c /etc/mpcs &                  # запуск mpcs с ключем -с это путь к конф. файлам /etc/mpcs - знак & - mpcs запускается паралельно
sleep 1s                                  # ждем 1с. чтоб mpcs запустился и появился в выводе команды top
echo 0 > $QSSled/brightness; echo 1 > $QSSled/brightness       # вкл. диод QSS

while top -bn1 | grep -qE "/[t]mp/mpcs -c /etc/mpcs" ; do      # цикл  работает если mpcs запущен работает - знак & - цикл запускается паралельно
	log=$(grep -E -m 1 "$AllFilters" /tmp/_mpcs.log.pipe)   # ищем в pipe логе текст, если находим - выполняем дальше
	    if echo $log | grep -qE "$CacheFilter"; then        # если слово из фильтра найдено - моргаем диодом QSS
		ledBlink 1  1 20        # моргнуть 1 раз очень быстро, выкл  1 мс - вкл. 20 мс (время в миллисекундах, 100 мс = 1 сек)
	  elif echo $log | grep -qE "$FoundFilter"; then        
		ledBlink 1 20 10        # моргнуть 1 раз быстро,       выкл 20 мс - вкл. 20 мс
	  elif echo $log | grep -qE "$TimeoutFilter"; then
		ledBlink 2 50 40        # моргнуть 2 раза медленно,    выкл 50 мс - вкл. 40 мс
	  elif echo $log | grep -qE "$ErrorFilter"; then
		ledBlink 3 50 40        # моргнуть 3 раза медленно,    выкл 50 мс - вкл. 40 мс
#	  elif echo $log | grep -qE "$NewFilter"; then          # можно добавить свое условия
#		ledBlink 4 50 40        # моргнуть 4 раза медленно,    выкл 50 мс - вкл. 40 мс
	    fi
done &                                # конец цикла

Посмотреть вложение mpcs_init.rar
Посмотреть вложение mpcs_ext.rar
 

garynych

Любитель Сат-ТВ
так а вы,1 стр. не видали что ли? лично у меня роутер и работает от usb модема,так как другого интернета у меня нет...
не,вру... ещё от смартфона с android на борту,завожу,если скорость поболее нужна ;)
 

Anoxiety

Пользователь
Все приложения по умолчанию запускаются с приоритетом 0. Значение nice -n лучше выставить на 0, при этом распределение нагрузки процессора : 50% на цикл паузы - 50 % все остальное. Всетаки 19 это очень низкий приоритет, и при загрузке процессора на 100% (1% идет на цикл, а 99% на все остальное) начинает сильно тупить моргание (паузы увеличиваются до 2 сек). При nice -n 3 (35% на цикл паузы - 65% все остальное) - вполне сносно, при загрузке паузы тоже увеличиваются, но не сильно, таким образом даже можно косвенно оценивать загрузку процессора =) Значение можно подобрать по вкусу.
 

garynych

Любитель Сат-ТВ
Anoxiety, кстати... в последнем обновлении,перестал работать прожка mpcsmon2
ну та что лог mpcs считывает по сети... на 1 и 2 версиях работала...
смотри... для её работы,нужно что бы в конфиге mpcs строка была LogFile = /dev/null
правда на предыдущих она у тебя другая,но всё равно доступ она к логу получала...
а ща нет :(
of конечно ещё покопаюсь... может опять у меня что то... собрал свежую прошивку... ещё не обкатал и всё может быть...

PS да ... точно перестала... наверно ты ограничил чего...
 
Последнее редактирование:

Anoxiety

Пользователь
Anoxiety, кстати... в последнем обновлении,перестал работать прожка mpcsmon2
ну та что лог mpcs считывает по сети... на 1 и 2 версиях работала...
смотри... для её работы,нужно что бы в конфиге mpcs строка была LogFile = /dev/null
правда на предыдущих она у тебя другая,но всё равно доступ она к логу получала...
а ща нет :(
of конечно ещё покопаюсь... может опять у меня что то... собрал свежую прошивку... ещё не обкатал и всё может быть...

PS да ... точно перестала... наверно ты ограничил чего...

Я не ограничил, у меня порт и логины другие.
Их можно посмотреть /etc/mpcs/mpcs.conf
секция [monitor]
Код:
#MicroMon or other monitors for mpcs:
Port = 25050
NoCrypt =127.0.0.1
NoCrypt = 1.0.0.0-255.255.255.255
AULow =120
MonLevel =4

и в /etc/mpcs/mpcs.user
секция [account]
Код:
#MicroMon or other monitors for mpcs:
User = monitoring
Pwd = monitoring
Group = 1

upd

А логфайл LogFile = /tmp/_mpcs.log.pipe не имеет к этому отношение.
Кстати, управление mpcs кнопкой QSS работает ?
 

garynych

Любитель Сат-ТВ
Я не ограничил, у меня порт и логины другие.
да я на этом ,собаку съел... ;)
но рано я твой скрипт отругал... так как ниодна версия из ранних и мои собственные,без симафора диодом, не пашут... это после обновления openwrt :)
буду рыть,как так,даже в консоль не пишет вражина...

что касается qss кнопки ,то да ... всё пашет.. а почему бы не работать то ;)

короче,пошёл плясать с бубном :)
 

Alex ms

Пользователь
так а вы,1 стр. не видали что ли? лично у меня роутер и работает от usb модема,так как другого интернета у меня нет...
не,вру... ещё от смартфона с android на борту,завожу,если скорость поболее нужна ;)

Я все видал и у меня все работает.Просто у меня слабый сигнал зg и роутер переодически переключает модем на жпрс. В компе под виндой можно поставить только 3g .А роутере с опенврт можно? Вот с этим я не могу разобраться и не где не могу прочитать.Все разговоры про назначение кнопки.

---------- Сообщение добавлено в 08:46 ---------- Предыдущее сообщение размещено в 08:36 ----------

Настрой модем-там выбери только 3G
ashampoosnap201304.png

Спасибо конечно за единственный ответ! Только вот где эти настройки?
Этож программа под винду.
 

garynych

Любитель Сат-ТВ
В компе под виндой можно поставить только 3g .А роутере с опенврт можно?
можно и через роутер ;) но проще воткнуть модем в пк,и и в этой проге переключить куда вам надо... ;)
раз ёжик только нужен,то и выберите gsm only и примените... а потом модем в роутер вставляйте...

Этож программа под винду.
у Вас что ,нет пк с виндой что ли? что Вам именно через роутер надо переключит?
если так,то если у Вас роутер уже прошит openwrt, то пошлите через putty AT комманду в модем,в чём проблема...
 

Alex ms

Пользователь
Извиняюсь, не знал что можно настроить модем на ПК а потом поставить на роутер.Сейчас попробую.
 

escape_80

Новичок
Помогите найти проблему, шурик не работает! 3220V2.1 + 4100C - Xtra

Вывел компорт через К561ЛА7, резистор 10кОм не ставил, проверил компорт через Putty, мусора нет, на команду tpl реагирует-останавливает загрузку! Подключил к ресиверу - не работает???

Лог MPCSMon2:
Скрытое содержимое доступно для зарегистрированных пользователей!


System log:
Скрытое содержимое доступно для зарегистрированных пользователей!



Спасайте, позарез нужно! Заранее спасибо![/HIDE]
 

escape_80

Новичок
Вот еще, может это что-то кому-то скажет!?

Kernel log:
Скрытое содержимое доступно для зарегистрированных пользователей!
 

alekson1984

Новичок
Доброго времени суток. Извиняюсь, если пишу не в ту тему.
Прикупил себе тоже TL-MR3220-3420, а он оказался второй версии (V2)
Все бы ни чего, на последней прошивки работал стабильно, без каких либо нареканий, до поры до времени. Потом оказалось, что роутер режет скорость интернета в 3-4 раза! Вот и хотелось бы узнать, слышал, что прошивки от уважаемого DANtesа исправляют проблему со скоростью интернета. Но я так и не нашел на вторую версию данного роутера прошивки от DANtesа, и есть ли они вообще? И если кто данную проблему решил уже, отпишитесь, что и как сделали.
P.S. прошивал прошивкой openwrt-ar71xx-generic-tl-mr3220-v2-squashfs-factory-2.bin, но мне показалось, что работа роутера стала менее стабильнее (ИМХО), и желаемого результата так и не добился.
 
Сверху