Настраиваем SkyLink модем на Android-планшете

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

Суть метода в кратце

  1. Подключение с помощью pppd
  2. Для этого создается скрипт подключения /system/etc/ppp/peers/cdma и скрипт управления модемом /system/etc/ppp/cdma.chat
  3. Прописывается логин\парол подключения в /system/etc/ppp/pap-secrets (chap-secrets)
  4. Редактируется скрипт установки сетевых параметров /system/etc/ppp/ip-up
  5. Теперь по пунктам и подробно

    Нам потребуется Android SDK, в состав него входят необходимые утилиты — ADB и 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
    А на модеме зажегся синенький светодиод и любимый Хабр стал открываться в Opera Mini при выключенном WiFi соединении — значит, у вас все получилось.

    Что дальше?

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


0 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.