Меню:


Статья достаточно старая — она была написана в 2002-м году. с 2004-го года я ни разу не пользовался модемными линиями!

Все началось с того, что дома у меня плохая телефонная линия, которую не видит мой модем серии Eline на 57.6kbit (кроме модема ее не видели еще несколько моделей телефонов). Кабель в квартиру мне тоже не светил, поэтому было решено попытать счастья со связью через мобильный телефон. В рамках планового апгрейда телефона, был закуплен Siemens S55 — в качестве решающих факторов было наличие голубого зуба (bluetooth), irda, j2me, ну и конечно поддержки GPRS. Оператором сотовой связи является Beeline.

Со стороны компьютера для общения с телефоном использовался Bluetooth USB Adapter Tekram TM-300. В качестве операционной системы используется ALTLinux Master 2.2, который раз в неделю обновляется из Sisyphus (поскольку я являюсь одним из разработчиков данного дистрибутива). Использовалось ядро Linux 2.4.22 (сборка 2.4.22-std-up-alt13).

Сначала я приступил к настройке bluetooth на Linux. Для работы с ним, в систему были установлены пакеты libbluez 2.4, bluez-sdp 1.5, bluez-pan 1.1, bluez-hciemu 1.0, bluez-utils 2.3. После изучения доступной документации, началась настройка:

alias net-pf-31 bluez
alias tty-ldisc-15 hci_uart
alias bt-proto-0 l2cap
alias bt-proto-2 sco
alias bt-proto-3 rfcomm
alias bt-proto-5 bnep
pin_helper /etc/bluetooth/bluepin;
#/bin/sh

echo "PIN:00"
# hcitool scan
Scanning ...
        00:01:E3:70:E0:AF       OttAlex

это и был мой телефон.

# sdptool search DUN
Inquiring ...
Searching for DUN on 00:01:E3:70:E0:AF ...
Service Name: Dial-up networking
Service RecHandle: 0x11103
Service Class ID List:
  "Dialup Networking" (0x1103)
  "Generic Networking" (0x1201)
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 1
Language Base Attr List:
  code_ISO639: 0x656e
  encoding:    0x6a
  base_offset: 0x100
Profile Descriptor List:
  "Dialup Networking" (0x1103)
    Version: 0x0100

Аналогичным образом можно получить информацию о том, какие сервисы поддерживает телефон с помощью команды sdptool browse

# l2ping 00:01:E3:70:E0:AF
Ping: 00:01:E3:70:E0:AF from 00:0A:94:00:03:EC (data size 20) ...
0 bytes from 00:01:E3:70:E0:AF id 200 time 36.57ms
0 bytes from 00:01:E3:70:E0:AF id 201 time 31.55ms
.............
5 sent, 5 received, 0% loss
# rfcomm bind 0 00:01:E3:70:E0:AF 1

которая заставляет подключить устройство 0 к bluetooth устройству 00:01:E3:70:E0:AF к первому каналу.

Можно проверить подключение с помощью команды rfcomm show.

В том случае, если у вас нет файлов устройств /dev/rfcomm*, то вам необходимо их создать с помощью команды вида:

# mknod /dev/rfcomm0 c 216 0

у меня они уже были созданы при установке системы.

    ATDT+79031234567

вместо 1234567 я указал свой номер, и телефон начал звонить показывая, что я вызываю сам себя :-)

/dev/rfcomm0 57600
connect '/usr/sbin/chat -v -f /etc/ppp/chat/gprs'
noauth
defaultroute
lock
debug
novjccomp
nopcomp
noaccomp
nodeflate
novj
nobsdcomp
default-asyncmap
ipcp-accept-local
ipcp-accept-remote
usepeerdns
user beeline
nodetach

При этом отключается всякое сжатие, как указано в рекомендациях сервисной службы Beeline, и не происходит отключение от управляющего терминала, так что pppd можно остановить с помощью Ctrl-C

В файл /etc/ppp/chat/gprs записываем команды программы chat:

TIMEOUT 5
ECHO    ON
ABORT   '\nBUSY\r'
ABORT   '\nERROR\r'
ABORT   '\nNO ANSWER\r'
ABORT   '\nNO CARRIER\r'
ABORT   '\nNO DIALTONE\r'
ABORT   '\nRINGING\r\n\r\nRINGING\r'
''              \rAT
TIMEOUT 12
OK              ATH
OK              ATE1
OK              AT+CGDCONT=1,"IP","internet.beeline.ru"
OK              ATD*99***1#
CONNECT

И в файл /etc/ppp/pap-secrets добавляем строку:

beeline  ppp0  "beeline"

и все, можно пробовать подключиться к интернету с помощью команды

# pppd call gprs

запущенной из под пользователя root.

Last change: 05.03.2013 16:54

blog comments powered by Disqus