суббота, 16 февраля 2013 г.

Подключение к сети Интернет сторонними средствами

Если не удаётся подключиться к Интернету стандартными средствами вашего Android устройства, как описано в публикации "Подключение "неподдерживаемых" модемов к устройствам с ОС Android". Можно попробовать установить соединение, например, с помощью программы Josua Dietze PPP Widget. (Ссылка на Google play). Или создать собственные скрипты для подключения на примере описанном ниже.

На Android устройстве должны быть получены права пользователя Root.

Сразу стоит заметить, что в стандартных средствах взаимодействие с модемом происходит через слой RIL (Radio Interface Layer): демон rild, библиотеки libril.so, lib<companyname>-ril.so. Где <companyname> - название производителя планшета. Или libreference-ril.so. А при подключении сторонними средствами RIL не используется, поэтому программы Google Play Маркет, Skype и некоторые другие работать не будут.

Для установки соединения используем демон протокола PPP /system/bin/pppd и программу для взаимодействия с модемом /system/bin/chat. Создадим четыре файла:

/etc/ppp/peers/conf-pppd
/etc/ppp/peers/conf-chat
/sdcard/gscript/inet-ON.sh
/sdcard/gscript/inet-OFF.sh

Все файлы в архиве.

Примечание: Если вы редактируете данные файлы на компьютере с ОС Windows необходимо использовать текстовый редактор, способный использовать символ перевода строки используемый в системах Unix. Например, AkelPad или Notepad++. Блокнот не подходит.

а) Параметры демона pppd. Содержимое файла conf-pppd:
ttyUSB2
460800
defaultroute
noauth
noipdefault
user "mts"
password "mts"
connect "/system/bin/chat -f /etc/ppp/peers/conf-chat"
1) Параметр ttyUSB2 узнаём с помощью инструкции "Подключение "неподдерживаемых" модемов к устройствам с ОС Android" в разделе "Определение файлов устройств (портов) в Android через которые работает модем". Возможно, придётся экспериментальным путём подобрать подходящий;
2) Параметры user "mts" и password "mts" соответствуют оператору сотовой связи МТС. Имя пользователя и пароль для доступа в Интернет согласно инструкции вашего оператора. Для Билайн user и password будет "beeline", для Мегафон - "gdata". Также строки с этими параметрами можно удалить вообще. Операторы сотовой связи и так без проблем "узнают" своих абонентов;
3) Поместите файл в каталог /etc/ppp/peers. При отсутствии папку peers нужно создать.

Примечание: Обычно этих параметров достаточно для установки стабильного соединения. При необходимости измените или дополните набор согласно руководству pppd(8).
Информацию о параметрах сценария, автоматизирующего взаимодействие с модемом chat можно посмотреть в руководстве chat(8).


б) Строки сценария chat. Содержимое файла conf-chat:
TIMEOUT 3
ABORT 'BUSY'
ABORT 'ERROR'
ABORT '+CME ERROR:'
TIMEOUT 3
'' 'AT'
OK 'ATZ'
OK 'AT+CGDCONT=1,"IP","internet.mts.ru"'
OK 'ATDT*99#'
CONNECT ''
Здесь "internet.mts.ru" соответствует оператору сотовой связи МТС. Для Мегафон просто "internet". Для Билайн - "internet.beeline.ru". Или для "Билайн Интернет Дома" - "home.beeline.ru". Для редких операторов и модемов номер дозвона "*99#" и команда "ATDT" могут отличаться.

в) Скрипт запуска соединения. Содержимое файла inet-ON.sh:
#!/system/bin/sh
pppd call conf-pppd
sleep 5
setprop net.dns1 8.8.8.8
setprop net.dns2 8.8.4.4
Примечание: Если при вызове pppd используется параметр usepeerdns, строки с "setprop net.dns..." не нужны.

Запускать подключение лучше, когда модем зарегистрирован в сети оператора мобильной связи. (Индикатор на модеме зеленый или синий)!

При желании, можно подойти к запуску соединения творчески и усложнить скрипт:
#!/system/bin/sh

echo "Waiting ttyUSB1"
for i in 1 2 3 4 5 6 7 8 9 10; do
    if [ -c /dev/ttyUSB1 ]; then
        echo "Starting pppd"
        pppd call conf-pppd
        echo "Connecting..."
        for i in 1 2 3 4 5 6 7 8 9 10; do
            if ifconfig ppp0 2>/dev/null; then
                setprop net.dns1 8.8.8.8
                setprop net.dns2 8.8.4.4
                echo "DNS servers: 8.8.8.8, 8.8.4.4"
                break 2
            else
                sleep 3
            fi
        done        
        break
    else
        sleep 3
    fi
done

sleep 5
ping -c 2 google.com && exit 0 || exit 1
Здесь ttyUSB1 можно заменить на другой, стабильно создающийся системой. "ifconfig ppp0" можно заменить на "ip a s ppp0". Строку с "ping" можно убрать.

г) Скрипт разрыва соединения. Содержимое файла inet-OFF.sh:
#!/system/bin/sh

busybox killall pppd
Здесь команда зависит от программ имеющихся в вашей системе. Может быть просто "killall pppd" или "pkill pppd" и другие.
Примечание: А можно просто выдернуть модем из USB. )))

д) Для запуска скриптов подключения и отключения можно использовать программу GScript. Поместите файлы скриптов в папку /sdcard/gscript. Установите и запустите GScript. Добавьте скрипты в меню программы. При добавлении необходимо установить галочку "Needs SU?". При желании, в виджетах Android можно добавить ярлыки на рабочий стол для запуска скриптов.

1 комментарий: