-
Notifications
You must be signed in to change notification settings - Fork 6
Add using hotplug, init.d and procd OpenWrt system. Do not more need … #2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Changes from 20 commits
5dabc4e
ad6b1a8
b273a7e
d66e8fa
75455ef
1f70e4c
cf5c087
29f565a
6c8fe6a
f15c681
bdc0aed
4f305e3
db0800b
533da43
61fa47f
fb8db67
250ddec
55d51b2
a36c1a2
5c869f9
68b5724
7399cae
4d1d306
d875a56
c33bc2d
c550f90
cb5f8e9
d48d6d3
6802ea5
29fb366
f329fa3
410f486
44ddacf
760b9de
640fcca
d8e7339
4579196
6cc390b
03d0cbc
006064e
0810327
04db8fa
48d9164
829611d
b7bdf24
bc1dcf8
743d834
67d7a05
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,44 @@ | ||
| # Способы перезапуска модема | ||
| По умолчанию в скрипте используется метод перезапуска сети. Т. е. руотер полностью реконнектит все интерфейсы. Это поможет в стике, однако есть такая штука, как хайлинк! Здесь я разберу все известные мне способы перезапуска. Достаточно заменить строчку `/etc/init.d/network restart` в скрипте. Ну что, поехали? | ||
|
|
||
| ## Способ 1 - перезагрузка через API | ||
| У HiLink есть API. Через него можно делать с модемом все что угодно - перезагружать, реконнектить и т.д. К сожалению, я так и не покорил этот способ, потому сразу едем дальше. | ||
|
|
||
| ## Способ 2 - перезагрузка через telnet | ||
| У модифицированных прошивок есть telnet. К сожалению, нельзя командой выполнить перезагрузку. Можно поставить питон и написать скрипт... Но разве роутер - место для траты памяти? Да и я не умею программировать на питоне, потому едем дальше | ||
|
|
||
| ## Способ 3 - перезагрузка через adb | ||
| У adb есть два способа перезагрузки: | ||
|
|
||
| 1. `adb reboot` | ||
| 2. `adb shell reboot` | ||
|
|
||
| ## Способ 4 - AT-команды | ||
| Вот оно! Единственный нормальный способ! | ||
| И так, нам понадобится лишь gcom, модифицированная прошивка для вашего модема (необязательно, зависит от модели) и скрипт в этом репозитории. | ||
| Ну что ж, поехали! | ||
|
|
||
| Сначала пропишем открытие порта PC UI. Для этого любым удобным способом открываем порты и вводим в порт PC UI вашим любимым терминалом: | ||
|
|
||
| `AT^NVWREX=50091,0,60,01 00 00 00 A1 A2 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 A3 A2 12 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | ||
|
|
||
| А теперь самое интересное - команды для перезапуска модема с роутера. | ||
|
|
||
| 1. `COMMAND=AT^RESET gcom -d $device -s /etc/gcom/runcommand.gcom` | ||
| 2. `COMMAND=AT+CFUN=1,1 gcom -d $device -s /etc/gcom/runcommand.gcom` | ||
|
|
||
| Выбирайте любую понравившуюся. Первая комнада чисто хуавеевская. Где $device - путь до командного порта. Скорее всего это будет /dev/ttyUSB0. В стике всегда несколько портов, обычно это самый старший. У меня это /dev/ttyUSB2. | ||
|
|
||
| И да, для вас наверняка осталось не понятным, когда нужна модифицированная прошивка. Очень просто! Она нужна тогда, когда на вашей прошивке заблокированно выполнение кодман ^NVWREX и ^NVRDEX. Узнать об этом можно в теме своего модема на 4PDA. | ||
|
|
||
| ## Способ 5 - usbreset | ||
| `usbreset "Имя устройства"` | ||
|
|
||
| ## Способ 6 - реконнект средствами OpenWrt | ||
| Подходит только для стика, увы | ||
|
|
||
| `/etc/init.d/network restart` | ||
|
|
||
| # Фикс TTL | ||
| Здесь приложена служба для фиксации TTL. Для ее работы нужен лишь установленный пакет kmod-ipt-ipopt. | ||
|
|
This file was deleted.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,31 @@ | ||
| # run AT-command from environment | ||
| opengt | ||
| set com 115200n81 | ||
| set senddelay 0.02 | ||
| waitquiet 1 0.2 | ||
| flash 0.1 | ||
|
|
||
| :start | ||
| print "sending -> ",$env("COMMAND"),"\n" | ||
| send $env("COMMAND") | ||
| send "^m" | ||
|
|
||
| waitfor 15 "OK","ERR","ERROR","COMMAND NOT SUPPORT" | ||
| if % = 0 goto continue | ||
| if % = 1 goto error | ||
| if % = 2 goto error | ||
| if % = 3 goto notsupported | ||
|
|
||
| print "Timeout running AT-command\n" | ||
| exit 1 | ||
|
|
||
| :error | ||
| print "Error running AT-command\n" | ||
| exit 1 | ||
|
|
||
| :notsupported | ||
| print "AT-command not supported\n" | ||
| exit 1 | ||
|
|
||
| :continue | ||
| exit 0 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,23 @@ | ||
| #!/bin/sh | ||
|
|
||
| [ "$ACTION" = ifup ] || exit 0 | ||
|
|
||
| /etc/init.d/yotaban enabled && { | ||
| [ -f /tmp/yotaban ] && { | ||
| # remove old records | ||
| while read -r i; do | ||
| [ "`echo $i | sed -n '/^#.*$/p'`" ] && continue | ||
| iptables -D FORWARD -d $i -j DROP; | ||
| done < /tmp/yotaban | ||
| } | ||
|
|
||
| # update records | ||
| #wget -O /tmp/yotaban http://cdn.rawgit.com/TTLMaster/yota-ban-list/master/list.txt | ||
| wget -O /tmp/yotaban https://raw.githubusercontent.com/TTLMaster/yota-ban-list/master/list.txt | ||
|
|
||
| # add new records | ||
| while read -r i; do | ||
| [ "`echo $i | sed -n '/^#.*$/p'`" ] && continue | ||
| iptables -I FORWARD -d $i -j DROP; | ||
| done < /tmp/yotaban | ||
| } | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,11 @@ | ||
| #!/bin/sh /etc/rc.common | ||
|
|
||
| START=19 | ||
|
|
||
| start() { | ||
| iptables -t mangle -A POSTROUTING -j TTL --ttl-set 64 | ||
| } | ||
|
|
||
| stop() { | ||
| iptables -t mangle -D POSTROUTING -j TTL --ttl-set 64 | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,12 @@ | ||
| #!/bin/sh /etc/rc.common | ||
|
|
||
| START=99 | ||
|
|
||
| stop() { | ||
| [ -f /tmp/yotaban ] && { | ||
| while read -r i; do | ||
| [ "`echo $i | sed -n '/^#.*$/p'`" ] && continue | ||
| iptables -D FORWARD --destination $i -j REJECT; | ||
| done < /tmp/yotaban | ||
| } | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,11 @@ | ||
| #!/bin/sh /etc/rc.common | ||
|
|
||
| START=99 | ||
| USE_PROCD=1 | ||
|
|
||
| start_service() { | ||
| procd_open_instance | ||
| procd_set_param command /sbin/yotareboot | ||
| procd_set_param respawn | ||
| procd_close_instance | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,10 +1,9 @@ | ||
| #!/bin/sh | ||
| for i in 1 2 3 4 5 | ||
| do | ||
| while true; do | ||
| content=$(wget captive.apple.com -q -O -) | ||
| if [ `echo $content | grep -c "tethering.svg" ` -gt 0 ] | ||
| then | ||
| usbreset "HUAWEI Mobile" | ||
| /etc/init.d/network restart | ||
| fi | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Может быть использовать конфиг-файл для определения метода перезагрузки? Тогда можно было бы скрипты полностью уже собранным opkg-пакетом дистрибьютить.
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Я пока конфиг-файлы не писал. Посмотрю, идея хорошая. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ОК. Помогу по мере возможности, спрашивай, если что: баш знаю хорошо, но к openwrt у меня сейчас доступа нет. |
||
| sleep 10 | ||
| done | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Если список изменился, старые записи таким методом не удалятся.
Чтобы избежать этой проблемы в TTLMaster для Android я создавал отдельную новую цепочку со всеми правилами дропа. И когда нужно, польностью её обнулял.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Вот дроп: https://github.com/TTLMaster/TTLMaster/blob/develop/app/src/main/java/ru/antiyotazapret/yotatetherttl/Android.java#L178
Вот вставка: https://github.com/TTLMaster/TTLMaster/blob/develop/app/src/main/java/ru/antiyotazapret/yotatetherttl/Android.java#L187
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Тем не менее, у меня это работает. Но у меня удален из прошивки фарйволл, потому более ничего iptables не трогает.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ну да, работать-то будет, проблема не в этом. Проблема в том, что мы удалим одну запись из списка, обновим его и перезапустим этот скрипт -- удаленная запись останется в правилах.
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Попробовал ваш способ для записи в telnet - нет, не работает
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Может быть так?
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Работает, несколько упростил:
echo reboot | busybox nc -w 1 -i 1 192.168.8.1 23Но в OpenWrt как всегда по дефолту не добавлены эти ключи, пришлось городить костыль:
Кстати, я сделал пакеты и конфиг написал, сейчас дополнил телнетом.