Используемое оборудование:
- Sony VAIO C1F picturebook with RH80 and 2.4.20 kernel (handbuilt)
- 3Com Bluetooth card 3CRWB6096
- Nokia 6310i GSM
1) Приручаем Ядро
Скачиваем и устанавливаем с сайта www.bluez.sf.net
следующие пакеты:
Bluez-libs-2.3-1
Bluez-utils-2.2-1
Bluez-sdp-1.0rc2-1
Bluez-bluefw-0.9-1
Дописываем к /etc/modules.conf
# bluetooth stuff
alias net-pf-31 bluez
alias bt-proto-0 l2cap
alias bt-proto-2 sco
alias bt-proto-3 rfcomm
2) Работаем с Bluetooth
# /etc/rc.d/init.d/bluetooth start
Вставляем 3Com card. И видим:
cardmgr[602]: socket 0: 3Com Bluetooth PC Card
cardmgr[602]: executing: 'modprobe bt3c_cs'
bluefw[3859]: Loading firmware to pccard device 0101:0040
hcid[3784]: HCI dev 0 registered
cardmgr[602]: executing: './bluetooth start hci0'
/sbin/hotplug: no runnable /etc/hotplug/bluetooth.agent is installed
hcid[3784]: HCI dev 0 up
Далее проверяем работу карты:
# hciconfig
hci0: Type: PCCARD
BD Address: 00:04:76:C8:D3:E3 ACL MTU: 128:8 SCO MTU: 64:8
UP RUNNING PSCAN ISCAN
RX bytes:112 acl:0 sco:0 events:12 errors:0
TX bytes:308 acl:0 sco:0 commands:12 errors:0
Активируем Bluetooth на телефоне.
Потом пишем # hcitool scan.
И видим:
Scanning ...
00:02:EE:60:97:6E
Всё телефон определён.
3) Теперь надо убедиться в том, что телефон поддерживает dial-up networking, что должно быть сделано с помощью команды:
# sdptool search DUN
Inquiring ...
Searching for DUN on 00:02:EE:60:97:6E ...
Service Name: Dial-up networking
Service RecHandle: 0x10031
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
4) Протестируем подключение к телефону с помощью l2ping.
# l2ping 00:02:EE:60:97:6E
Ping: 00:02:EE:60:97:6E from 00:04:76:C8:D3:E3 (data size 20) ...
0 bytes from 00:02:EE:60:97:6E id 200 time 39.76ms
0 bytes from 00:02:EE:60:97:6E id 201 time 35.67ms
0 bytes from 00:02:EE:60:97:6E id 202 time 32.21ms
3 sent, 3 received, 0% loss
Чтобы всё работало без проблем скачиваем по адресу
www.holtmann.org/linux/kernel/
заплатку 2.4.20-mh4 и применяем её:
# cd /usr/src
# patch -p0 < /tmp/patch-2.4.20-mh4
далее пишем
# make dep
# make bzImage && make modules && make modules_install
# rfcomm bind 0 00:02:EE:60:97:6E 1
И получаем
kernel: BlueZ RFCOMM ver 0.4
kernel: Copyright (C) 2002 Maxim Krasnyansky
kernel: Copyright (C) 2002 Marcel Holtmann
5) Теперь приступаем к настройке pppd
Создаем файл /etc/ppp/peers/gprs следующего содержания:
/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 записываем команды /usr/sbin/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" # в последних кавычках надо ввести APN своего оператора
OK ATD*99***1#
CONNECT
Вот и всё.
Теперь прописываем команду #pppd call gprs.
И мы в сети.