Суббота, 18.05.2024, 23:16
Приветствую Вас Гость

Download-soft.my1.ru - Скачай Софт!

Меню сайта
    Форма входа
    Меню сайта
    Поиск
    Главная » Статьи » UNIX

    Linux и интернет через GPRS: теория и практика
    Прогресс не стоит на месте, и вот краем это коснулось и меня — под Новый год появился у меня Alcatel 535. Вполне удобная штуковина, кроме того, у него есть встроенный GPRS-модем.
       
        Который мне, как это и должно было быть, захотелось попробовать использовать для доступа в internet. К тому же надеяться, что к месту моего обитания проведут телефонную линию, способную удовлетворить нынешние модемы — просто глупо.
       
        Вот и вся предыстория.
       
        Google знает много по теме настройки GPRS в Linux-е. Даже и если телефончик подключается через инфракрасный порт. Несколько из этих страничек даже на русском, но они являются переводами с английского.
       
        Итак, исходные данные:
       
        — сотовый телефон Alcatel 535 (735);
        — инфракрасный адаптер Tekram IRmate IR-210B, подключаемый к последовательному порту компьютера;
        — собственно сам компьютер;
        — с установленным Debian GNU/Linux (или это еще был ALT Linux Master 2.2? — уже не помню. да и без разницы это).
       
        В процессе поиска чего и как, кроме Google, сильно помогли Tux-мобильный, где собрано много информации о мобильной жизни линуксоидов, и сайт Linux-irda, c которого скачивается последняя версия пакета irda-tools.
       
        Так как сам по себе GPRS — это такое же удаленое соединение, как и при обычном dial-up, то основная проблема, которая стояла передо мной — это настройка ИК-порта и соединения с телефоном.
       
        Общение с модемом телефончика возможно только благодаря присутствию поддержки ядром протокола IrDA и пакету irda-tools.
       
        Поэтому необходимо в ядре включить следующие модули (названия модулей приведу из ядра 2.6.7, так как поглядеть для ветки 2.4 представляется затруднительным):
       
        —irda — собственно сам модуль протокола IrDA;
        —ircomm_tty — модуль последовательного терминального соединения IrCOMM;
        —ircomm — протокол ик-соединения IrCOMM;
        —sir_dev — ядро протокола работы с адаптерами ик-портов, подключаемых к последовательному порту компьютера;
        —tekram_sir — модуль управления адаптером ик-порта Tekram IRmate IR-210B.
       
        Компилируем соответственно ядро, чтобы данные модули были доступны. Такие модули желательно не включать в ядро статически, поскольку это вещи приходяще-уходящие, а перекомпилировать каждый раз из-за этого ядро непрактично. Кстати, так как у нас будет использоваться удаленое соединение, необходимо так же включить Point-to-Point Protocol (ppp).
       
        Осталось подготовить irda-tools. Можно использовать дистрибутивный пакет, а можно скачать исходники новой версии и собрать бинарный пакет самостоятельно. Собирается пакет без особых проблем. Единственный момент, который тут надо упомянуть — это то, что для ядер ветки 2.6 необходимо использовать irda-tools версии 0.9.16 и выше.
       
        Теперь осталось только запустить и настроить irattach:
       
        [root@host:~]# irattach /dev/ttyS1 -d tekram -s
       
        Включаем ик-порт на телефоне и кладем его рядом (на расстоянии 5—50 см) с ик-адаптером. Через некоторое время (до 5 секунд) на адаптере начнет помаргивать зелеенький светодиод. Телефон обнаружился. Это видно так:
       
    [root@host:~]# cat /proc/net/irda/discovery
    IrLMP: Discovery log:

    nickname: ALCATEL OT535, hint: 0xb125, saddr: 0xcce64403, daddr: 0x74d747e9

       
        Если этого не произошло, значит какой-то этап не сделан правильно. У меня такое было при переезде с ядра 2.4.18 на 2.6.3, когда, как оказалось позже, надо было обновить irda-tools, пакет которого стал называться к этому времени irda-utils.
       
        Казалось бы все — можно настраивать почти обычное удаленое соединение (у меня подключение к BeeLine; МТС и Мегафон настраиваются аналогично, по информации с сайта в соответствующем разделе).
       
        Файл /etc/ppp/chap-secrets:
       
    # Secrets for authentication using CHAP
    # client server secret IP addresses
    beeline * beeline *
       
        /etc/ppp/peers/beeline:
       
    connect "/usr/sbin/chat -e -v -f /etc/ppp/chat-beeline"
    disconnect "/usr/sbin/chat -e -v -f /etc/ppp/chat-disconnect-gprs"
    ipparam beeline
    user beeline
    nodetach
    noauth

    /dev/ircomm0
    # 38400
    lock

    noipdefault
    defaultroute
    usepeerdns

    nocrtscts
    local
    novj
    novjccomp
    # nopcomp
    # noaccomp
    asyncmap 20a0000
    escape ff

    debug kdebug 255
       
        /etc/ppp/chat-beeline:
       
    ABORT BUSY
    ABORT VOICE
    ABORT DELAYED
    ABORT 'NO ANSWER'
    ABORT 'NO CARRIER'
    ABORT 'NO DIALTONE'
    ABORT 'NO DIAL TONE'

    #SAY '\n+ resetting modem\n'
    '' ATZ
    OK-ATZ-OK 'ATF1'

    #SAY '\n+ sending initials\n'
    OK 'AT+CGATT=0'
    #SAY '\n'
    OK 'ATV1E1&D2&C1&K3S0=0S7=255'

    #SAY '\n+ configuring APN\n'
    OK 'AT+CGDCONT=1,"IP","internet.beeline.ru"'
    OK 'AT+CGQREQ=1,0,0,0,0,0'
    OK 'AT+CGQMIN=1,0,0,0,0,0'

    #SAY '\n+ calling service\n'
    TIMEOUT 60
    OK 'ATDT*99***1#'

    #SAY '\n+ waiting connection\n'
    CONNECT ''

    #SAY '\n+ starting connection\n\n'
       
        /etc/ppp/chat-disconnect-gprs:
       
    ABORT BUSY
    ABORT ERROR
    ABORT 'NO DIALTONE'
    TIMEOUT 30

    '' '+++\c'
    #SAY '\n+ sending break\n'
    '' 'ATH'
    #SAY '\n+ dropping data connection\n'
    OK-AT-OK ATZ
    #OK 'AT+CGATT=0'
    #SAY '\n+ disconnecting from GPRS\n'
    OK-AT-OK '\c'
    #SAY '\n+ disconnected\n'
       
        Теоретически, этого достаточно, чтобы, при включенном пакете GPRS-услуг на BeeLine, пользоваться GPRS-интернетом.
       
        [root@host:~]$ pppd call beeline
       
        Однако, практика оказалась несколько не столь радужной.
       
        Так уж получилось, что сотовые телефоны Alcatel 535 и 735 рассчитаны на работу с ик-адаптерами версии 2.0 (USB Tekram IRmate IR-410 и аналогичными), а не 1.1 (который 210). И вот… Соединение установилось, и заткнулось.
       
        Как бы сильно того мне не хотелось, «что и как» пришлось экспериментальным путем выяснять в Windows.
       
        Там-то это оказалось просто: чтобы телефон заработал нормально, необходимо, дважды кликнув по иконке ик-адаптера в трее, на вкладке «Режимы» найти параметр «Ограничить скорость ИК-соединения» и выставить его в 38,4 кбит/сек.
       
        Где это указать в Linux? Недельный поиск в Google, чтение документации по IrDA, просмотр исходников — ничего не дало. Пока, однажды, на одном из форумов, посвященом мобильникам, не был дан совет выполнить перед запуском irattach такую вот команду:
       
        [root@host:~]# echo 38400 > /proc/sys/net/irda/max_baud_rate
       
        Посмотрев, что же там записано по умолчанию, я немножко так удивился: стояло даже не 115,2 кбит/сек, а 16 Мбит/сек!!! Вот это я понимаю, вот это скорости!
       
        Как бы то ни было, записав в эту переменную нужное мне ограничение в 38400, случилось чудо! Все прекрасно заработало!
       
        Вот с тех самых пор, с холодного зимнего 10-го январьского вечера 2004 года и появился дома в Linux интернет.
       
        А чтобы не набирать эту команду каждый раз при загрузке, добавил ее скрипт /etc/init.d/irda в секцию start перед вызовом irattach.
       
        PS: Все вышеизложенное справедливо практически для всех сотовых телефонов, за исключением той самой неполной совместимости по версии протокола IrDA.


    Категория: UNIX | Добавил: Administrator (03.04.2009)
    Просмотров: 785 | Рейтинг: 0.0/0
    Всего комментариев: 0
    Имя *:
    Email *:
    Код *:
    Наш опрос
    Оцените мой сайт
    Всего ответов: 40
    Нас считают
    Реестр сайтов Русскоязычного сегмента




    Rambler's Top100










    Облако тегов
    Админ - 97624410
    Добавь нас!