Решение: как подключить SkyLink модем к Android планшету

Удивительно, но когда у меня возник вопрос – как подключить SkyLink-модем (AnyData 310A) к китайскому планшету на Android 1.5 (увы), я ничего не смог найти в Интернет.

Но вот – проблема решена и сейчас хочу поделиться каким образом мне удалось это сделать. Кстати, этот же способ можно порекомендовать тем, кто пытается подключить 3g модем к Android.

Нам потребуется Android SDK, в состав него входят необходимые утилиты – ADB и DDMS.

ADB (“Android Debug Bridge”) – это консольная программа, с помощью которой можно и файлы закидывать на планшет, и как-то управлять устройством.

DDMS (“Dalvik Debug Monitor Server”) – это вообще говоря скрипт (ddms.bat), который запускает java приложение с графическим интерфейсом. Скриншоты, файловый менеджер, лог Android, запущенные процессы и прочие прелести можно сделать с помощью DDMS.

Я предполагаю, что вы знаете что такое Android SDK и как его настроить на компьютере, а планшет у вас рутованый и в настройках подключения на планшете стоит галка “USB Debug”, поэтому не буду акцентировать внимание на этих деталях, но если что – спрашивайте в комментариях.

Итак, за работу.

1. Подключаем планшет к компьютеру, выполняем команду “adb remount”. Этой командой мы переводим системный раздел (он еще называется “/system partition”) из режима “read-only” в “read-write”. Это нужно, т.к. нам придется править и создавать файлы в системной области.

Если вы видите сообщение “error: device not found”, увы, придется разбираться с драйверами и настройкой SDK.

2. Теперь нужно определить, по какому адресу наш модем распознается системой. Для этого подключаем CDMA модем в USB-Host нашего планшета, ждем секунд 10, запускаем “adb shell”и видим линуксовую консоль.

Набираем в консоле команду “dmesg”, чтобы посмотреть системные события. Нас интересуют последние строки, они будут примерно такие:

<6>usb 1-1.2: new full speed USB device using pxa27x-ohci and address 3
<3>usb 1-1.2: device v16d5 p6501 is not supported
<6>usb 1-1.2: configuration #1 chosen from 1 choice
<6>option 1-1.2:1.0: GSM modem (1-port) converter detected
<6>usb 1-1.2: GSM modem (1-port) converter now attached to ttyUSB0
<6>option 1-1.2:1.1: GSM modem (1-port) converter detected
<6>usb 1-1.2: GSM modem (1-port) converter now attached to ttyUSB1

Как видно из примера, наш модем смонтировался по двум адресам – ttyUSB0 и ttyUSB1. Почему так, надеюсь, мне расскажут более знающие читатели. Нам же принципиальны сами эти адреса, вернее даже только один – ttyUSB0.

3. Запускаем ddms.bat, в блоке “devices” должно отображаться ваше устройство, выберите его. Открываем меню Device/File Explorer.

Скачиваем на компьютер файл “/system/build.prop”. Теперь открываем его текстовым редактором (файл наверняка будет заблокирован, поэтому нужно в ddms встать на другой каталог, чтобы файл освободился на компьютере) и ищем примерно такие строки:

rild.libpath=/system/lib/libhuawei_ril.so
rild.libargs=-d /dev/ttyUSB5

Первая строка – это путь к драйверу RIL (Radio Interface Layer), который является прослойкой между установленным оборудованием и телефонными функциями Android.

Вторая строка – это параметр драйвера RIL, который определяет по какому адресу общаться с оборудованием.

Поскольку есть мнение, что драйвер RIL полностью перехватывает управление оборудованием, а нам нужно будет обращаться к модему, не мудрствуя лукаво укажем заведомо неправильный адрес устройства (например, ttyUSB5, как у меня).

4. Создаем у себя 2 файла: “cdma” и “cdma.chat” (если хотите по-другому назвать – пожалуйста, это не принципиально).

Содержимое файла “cdma” должно быть таким:

debug
ttyUSB0
115200
modem
noipdefault
defaultroute
ipcp-accept-local
lcp-echo-interval 60
lcp-echo-failure 5
usepeerdns
nopcomp
noauth
noaccomp
nodetach
user “mobile”
connect “chat -s -S -v -f /system/etc/ppp/cdma.chat”

Обратите внимание на вторую строку – ttyUSB0 – это тот адрес, который мы определили на 2 шаге.

Содержимое файла “cdma.chat”:

” ATZ OK ATE0X1V1&C0 OK AT+IPR=230400 OK AT$QCDMR=115200 OK AT+CRM=1 OK AT+CTA=20 OK AT+CQD=255 OK AT+CSQ? OK AT+CSS? OK ATDT#777 CONNECT

Все в одну строку. Первые два символа – две одинарные (а не двойные!) кавычки.

5. Теперь укажем под какими пользователями нужно авторизовываться. Для этого из каталога “/system/etc/ppp/” скачаем два файла: “chap-secrets” и “pap-secrets”. (вообще говоря, как я понимаю, достаточно пользователей указать только pap-secrets).
В оба файла добавляем последней строкой следующий текст:

mobile * internet *

6. Теперь сделаем так, чтобы автоматически заполнялись параметры подключения (DNSы, там и пр.). Скачаем же файл “/system/etc/ppp/ip-up” (кстати, этот файл выполняется каждый раз после успешного установления соединения) и поправим его таким образом:

#!/system/bin/sh
#это что было до редактирования (строки закомментировал):
#/system/bin/setprop “net.interfaces.defaultroute” “gprs”
#/system/bin/setprop “net.gprs.dns1″ “$DNS1″
#/system/bin/setprop “net.gprs.dns2″ “$DNS2″
#/system/bin/setprop “net.gprs.local-ip” “$IPLOCAL”
#/system/bin/setprop “net.gprs.remote-ip” “$IPREMOTE”
#это добавленные строки:
/system/bin/setprop “net.interfaces.defaultroute” “ppp0″
/system/bin/setprop “net.ppp0.dns1″ “$DNS1″
/system/bin/setprop “net.ppp0.dns2″ “$DNS2″
/system/bin/setprop “net.ppp0.local-ip” “$IPLOCAL”
/system/bin/setprop “net.ppp0.remote-ip” “$IPREMOTE”
/system/bin/setprop “net.dns1″ “$DNS1″
/system/bin/setprop “net.dns2″ “$DNS2″
exit 0

7. Все измененные файлы загрузим обратно в планшет:
/system/build.prop
/system/etc/ppp/ip-up
/system/etc/ppp/cdma.chat
/system/etc/ppp/pap-secrets
/system/etc/ppp/chap-secrets
/system/etc/ppp/peers/cdma

Кстати, проверьте, что у файла ip-up есть права на выполнение.

8. Теперь открываем консоль (adb shell), подключаем модем и выполняем команду “pppd call cdma”. Если вы видите ответ типа:

send (AT+CSS?^M)
expect (OK)
^M
^M
?, 0^M
^M
OK
– got it
send (ATDT#777^M)
expect (CONNECT^M)
^M
^M
CONNECT^M
– got it

А на модеме зажегся синенький светодиод и любимый сайт стал открываться в Opere при выключенном WiFi соединении, – значит, у вас все получилось.

Что дальше?

Успешное подключение к сети через CDMA-модем – это лишь первый шаг, потому что дальше нужно решать следующие задачи:

  1. Удобный запуск скрипта подключения. Тут могу поделиться опытом – нужно поставить Gscript Lite, создать там скрипт подключения и вынести ярлык на рабочий стол.
  2. Правильное отключение. Hint: использовать автоматически выполняемый при разрыве соединения скрипт ip-down.
  3. Автоматическая переустановка соединения при разрыве. Нужно разбираться, как это сделать. Принципиально – можно.
  4. Отображение уровня сигнала и прочие прелести, свойственные интерфейсу Android. Как это сделать – я не знаю. Вероятно, нужно где-то найти или написать собственный RIL-драйвер для AnyData-модема. Найти пока не удалось.