Как настроить bluetooth и dial-up Интернет в Kubuntu и Mandriva

Переходим в консоль и в режим суперпользователя:
> su
Password: [вводим пароль суперпользователя]
#

После этого с помощью любого текстового редактора (или с помощью Krusader с режиме суперпользователя) редактируем файл /etc/bluetooth/hcid.conf , например:
# kate /etc/bluetooth/hcid.conf

Меняем в этом файле в разделе:
# Default link mode
# none – no specific policy
# accept – always accept incoming connections
# master – become master on incoming connections,
# deny role switch on outgoing connections
lm accept;

последнюю строку на
lm accept, master;

(это необходимо для того, чтобы наше устройство становилось главным при Bluetooth-соединении).
Даем команду обращения к USB-Bluetooth адаптеру компьютера и получаем вывод наподобие следующего:
# hciconfig -a
hci0: Type: USB
BD Address: 00:0A:94:02:22:1E ACL MTU: 384:8 SCO MTU: 64:8
UP RUNNING AUTH ENCRYPT
RX bytes:478 acl:0 sco:0 events:34 errors:0
TX bytes:380 acl:0 sco:0 commands:26 errors:0
Features: 0xff 0xff 0x8f 0xfe 0x9b 0xf9 0x00 0x80
Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
Link policy: RSWITCH HOLD SNIFF PARK
Link mode: SLAVE ACCEPT
Name: dellhost
Class: 0x100100
Service Classes:
Device Class: Computer, Uncategorized
HCI Ver: 1.1 (0x1) HCI Rev: 0x7a6 LMP Ver: 1.1 (0x1) LMP Subver: 0x7a6
Manufacturer: Cambridge Silicon Radio (10)

Здесь:
BD Address: 00:0A:94:02:22:1E – уникальный адрес Bluetooth-устройства, которое имеется в нашем компьютере,
UP RUNNING AUTH ENCRYPT – служба работает, включено шифрование.
Включаем Bluetooth службу на телефоне (обычно где-то Bluetooth -> Включить). На телефоне появляется значок Bluetooth.
Сканируем на наличие вблизи компьютера доступных Bluetooth-устройств:
# hcitool scan

При этом обнаруживается наш телефон:
# hcitool scan
Scanning …
00:0F:DE:82:22:87 S700i

Здесь
00:0F:DE:82:22:87 – BD-адрес телефона, который будет активно нами использоваться, его нужно запомнить,
S700i – имя телефона, которое прописано в настройках Bluetooth телефона.
Осуществляем проверку надежности передачи пакетов между компьютером и телефоном:
# l2ping 00:0F:DE:82:22:87

Компьютер запрашивает, соединиться ли с телефоном – отвечаем да, вводим любой PIN-код (например: 7777). Затем телефон запрашивает: добавить ли dellhost (т.е. то имя компьютера, которое Вы задали выше, в настройках Bluetooth) в список доступных устройств – отвечаем: да, вводим на телефоне тот же PIN-код. Получаем на экране ряд сообщений, нажимаем через несколько секунд Ctrl-C. Имеем что-то вроде этого:
# l2ping 00:0F:DE:82:22:87
Ping: 00:0F:DE:82:22:87 from 00:0A:94:02:22:1E (data size 44) …
0 bytes from 00:0F:DE:82:22:87 id 0 time 52.77ms
0 bytes from 00:0F:DE:82:22:87 id 1 time 36.25ms
0 bytes from 00:0F:DE:82:22:87 id 2 time 33.06ms
0 bytes from 00:0F:DE:82:22:87 id 3 time 34.14ms
0 bytes from 00:0F:DE:82:22:87 id 4 time 31.99ms
0 bytes from 00:0F:DE:82:22:87 id 5 time 40.03ms
0 bytes from 00:0F:DE:82:22:87 id 6 time 35.94ms
0 bytes from 00:0F:DE:82:22:87 id 7 time 36.89ms
0 bytes from 00:0F:DE:82:22:87 id 8 time 34.83ms
0 bytes from 00:0F:DE:82:22:87 id 9 time 34.78ms
0 bytes from 00:0F:DE:82:22:87 id 10 time 33.71ms
11 sent, 11 received, 0% loss

Надпись 0% loss означает, что передача идет без потери данных. Хорошо.
Можно (но это не обязательно) посмотреть дополнительную информацию о Bluetooth-модуле телефона:
# hcitool info 00:0F:DE:82:22:87
Requesting information …
BD Address: 00:0F:DE:82:22:87
Device Name: S700i
LMP Version: 1.1 (0x1) LMP Subversion: 0x9240
Manufacturer: Philips Semiconductors (37)
Features: 0xff 0x3b 0x01 0x00 0x00 0x00 0x00 0x00
<3-slot packets> <5-slot packets> 


Узнаем теперь, какие службы предоставляет телефон через Bluetooth:
# sdptool browse 00:0F:DE:82:22:87

Если эта команда не заработает, запускаем сначала соответствующий демон sdpd, а потом – команду:
# sdpd
# sdptool browse 00:0F:DE:82:22:87

Получаем вывод очень подробной информации о модуле Bluetooth телефона, что-то наподобие нижеприведенного:
Browsing 00:0F:DE:82:22:87 …
Service Name: Dial-up Networking
Service RecHandle: 0x10000
Service Class ID List:
Dialup Networking (0x1103)
Generic Networking (0x1201)
Protocol Descriptor List:
L2CAP (0x0100)
RFCOMM (0x0003)
Channel: 1
Profile Descriptor List:
Dialup Networking (0x1103)
Version: 0x0100

Service Name: HS Voice Gateway
Service RecHandle: 0x10002
Service Class ID List:
Headset Audio Gateway (0x1112)
Generic Audio (0x1203)
Protocol Descriptor List:
L2CAP (0x0100)
RFCOMM (0x0003)
Channel: 4
Profile Descriptor List:
Headset (0x1108)
Version: 0x0100

Service Name: Serial Port
Service RecHandle: 0x10003
Service Class ID List:
Serial Port (0x1101)
Protocol Descriptor List:
L2CAP (0x0100)
RFCOMM (0x0003)
Channel: 2

Service Name: Serial Port 2
Service RecHandle: 0x10004
Service Class ID List:
Serial Port (0x1101)
Protocol Descriptor List:
L2CAP (0x0100)
RFCOMM (0x0003)
Channel: 3

Service Name: OBEX Object Push
Service RecHandle: 0x10005
Service Class ID List:
OBEX Object Push (0x1105)
Protocol Descriptor List:
L2CAP (0x0100)
RFCOMM (0x0003)
Channel: 6
OBEX (0x0008)
Profile Descriptor List:
OBEX Object Push (0x1105)
Version: 0x0100

Service Name: OBEX IrMC Sync Server
Service RecHandle: 0x10006
Service Class ID List:
IrMC Sync (0x1104)
Protocol Descriptor List:
L2CAP (0x0100)
RFCOMM (0x0003)
Channel: 8
OBEX (0x0008)
Profile Descriptor List:
IrMC Sync (0x1104)
Version: 0x0100

Service Name: OBEX Basic Imaging
Service RecHandle: 0x1000a
Service Class ID List:
Imaging Responder (0x111b)
Protocol Descriptor List:
L2CAP (0x0100)
RFCOMM (0x0003)
Channel: 9
OBEX (0x0008)
Profile Descriptor List:
Imaging (0x111a)
Version: 0x0100

Service Name: OBEX File Transfer
Service RecHandle: 0x1000d
Service Class ID List:
OBEX File Transfer (0x1106)
Protocol Descriptor List:
L2CAP (0x0100)
RFCOMM (0x0003)
Channel: 7
OBEX (0x0008)
Profile Descriptor List:
OBEX File Transfer (0x1106)
Version: 0x0100

Service Name: HF Voice Gateway
Service RecHandle: 0x1000e
Service Class ID List:
Handfree Audio Gateway (0x111f)
Generic Audio (0x1203)
Protocol Descriptor List:
L2CAP (0x0100)
RFCOMM (0x0003)
Channel: 5
Profile Descriptor List:
Handsfree (0x111e)
Version: 0x0101

Service Name: OBEX SyncML Client
Service RecHandle: 0x10018
Service Class ID List:
Error: This is UUID-128 (0x00000002-0000-1000-8000-0002ee000002)
Protocol Descriptor List:
L2CAP (0x0100)
RFCOMM (0x0003)
Channel: 15
OBEX (0x0008)

Service Description: S700 series
Service RecHandle: 0x1001b
Service Class ID List:
PnP Information (0x1200)

Service Name: Mouse & Keyboard
Service Description: S700
Service Provider: Sony Ericsson
Service RecHandle: 0x1001c
Service Class ID List:
Human Interface Device (0x1124)
Protocol Descriptor List:
L2CAP (0x0100)
PSM: 17
HIDP (0x0011)
Language Base Attr List:
code_ISO639: 0x656e
encoding: 0x6a
base_offset: 0x100
Profile Descriptor List:
Human Interface Device (0x1124)
Version: 0x0100

Для выхода в интернет будем использовать службу Dial-up Networking.В листинге она указана первой, причем подключена она на канале 1 (Channel: 1) и обеспечивает доступ через радио-com порт (RFCOMM (0x0003))
Проверяем, есть ли у нас уже в системе на компьютере порты для Bluetooth (которые могут уже быть настроены на работу с другими устройствами, поэтому будьте внимательны при назначении имени порта):
# ll /dev/rfcomm*
/bin/ls: /dev/rfcomm*: Нет такого файла или каталога

Таких устройств у нас пока нет.
Поэтому создадим /dev/rfcomm0 для постоянной работы с нашим телефоном (имеющим адрес 00:0F:DE:82:22:87) по каналу 1 (которому соответствует служба Dial-up Networking):
# rfcomm bind rfcomm0 00:0F:DE:82:22:87 1

(Если бы нужно было создать устройство только для однократного соединения с телефоном, то надо было бы дать команду:
# rfcomm connect rfcomm0 00:0F:DE:82:22:87 1

). Проверяем, правильно ли работает канал:
# rfcomm show
rfcomm0: 00:0F:DE:82:22:87 channel 1 clean

Далее необходимо отредактировать файл /etc/bluetooth/rfcomm.conf – для того, чтобы каждый раз при запуске Bluetooth происходила автоматическая привязка к Bluetooth порту нашего мобильного телефона (т.е. к rfcomm0). В данном файле в разделе
rfcomm0 {
# Automatically bind the device at startup
bind no;

последнюю строку меняем на
bind yes;

Указываем также в этом файле BD-адрес нашего телефона и номер канала соединения, меняя соответствующие строки в разделах:
# Bluetooth address of the device
device 00:0F:DE:82:22:87;

# RFCOMM channel for the connection
channel 1;

Далее необходимо сделать так, чтобы служба Bluetooth запускалась при каждом запуске системы. Проще всего это сделать в
KDE меню -> YaST (Центр управления) -> Система -> Системные службы (Runlevel)…
Системные службы (Уровень выполнения): службы.
Выбираем Экспертный режим
В Экспертном режиме выделяем bluetooth
Внизу, в разделе Служба будет запущена в следующих уровнях, выбираем: 3 и 5 (а также 2, если Вы когда-либо работаете на этом уровне).
Завершить
Часть 2. Настройка соединения с интернетом через мобильный телефон посредством GPRS
Теперь настраиваем GPRS соединение с интернетом через Bluetooth. Это можно сделать различными способами – для каждого из них устройство /dev/rfcomm0 будет фигурировать как модем. Ниже приведено описание подключения в графической среде KDE 3.5.1 с использованием утилиты kppp. Подключение другим способом (например, через KInternet) будет во многом аналогичным.
Вызываем kppp: KDE меню -> Интернет -> Телефонное соединение (т.е. kppp)
Первый вызов kppp от имени конкретного пользователя сразу дает ошибку: Недостаточно прав для запуска /usr/sbin/pppd Убедитесь, что владельцем kppp является root и SUID-бит установлен (это особенность настроек по умолчанию дистрибутива SuSE 10.1, в других дистрибутивах, например, Mandriva 2006, настройки по умолчанию таковы, что данный этап можно пропустить, перейдя сразу к настройке kppp для доступа в интернет).
Исправляем ситуацию. В консоли проверяем, какие права на доступ имеются у файла /usr/sbin/pppd :
# ls -l /usr/sbin/pppd
-rwxr-xr-x 1 root dialout 291796 2006-04-23 06:38 /usr/sbin/pppd

Действительно, для файла не установлен бит SUID – Set user ID on execution (s), который позволяет запускать данный файл не его владельцуу-суперпользователю, а другим пользователям. Устанавливаем данный бит:
# chmod u+s /usr/sbin/pppd

Проверяем, что получилось:
# ls -l /usr/sbin/pppd
-rwsr-xr-x 1 root dialout 291796 2006-04-23 06:38 /usr/sbin/pppd

Заодно разрешаем и утилиту kppp запускать от имени не-суперпользователя (в противном случае будет появляться сообщение об ошибке: Невозможно создать lock-файл для модема). Смотрим в консоли, где находится программа kppp:
# whereis kppp
kppp: /opt/kde3/bin/kppp

Получаем информацию о kppp, исходя из указанного расположения:
# ls -l /opt/kde3/bin/kppp
-rwxr-xr-x 1 root root 571236 2006-05-02 15:49 /opt/kde3/bin/kppp

Устанавливаем SUID:
# chmod u+s /opt/kde3/bin/kppp

Проверяем еще раз:
# ls -l /opt/kde3/bin/kppp
-rwsr-xr-x 1 root root 571236 2006-05-02 15:49 /opt/kde3/bin/kppp

Теперь запускаем вновь kppp и настраиваем соответствующие поля для доступа в интернет
KDE меню -> Интернет -> Телефонное соединение (kppp)
Настроить… Параметры kppp:
Соединения…
Создать…
Ручная настройка:
Имя соединения: Megafon-GPRS [вводим желаемое имя]
Номер телефона: Добавить: *99#
Авторизация: PAP/CHAP
Сохранить пароль: да
Тип Callback, нет
Модемы…
Создать…
Устройство
Имя модема: S700i-gprs [вводим желаемое имя для модема]
Устройство модема: /dev/rfcomm0
Управление потоком: Программное (XON/XOFF)
Окончание строки: CR
Скорость соединения: 115200
Использовать lock-файл: да
Тайм-аут модема: 120 с
Модем
Дождаться сигнала в линии перед набором номера: нет
Ожидание при занятой линии: 0 с
Громкость динамика модема: среднее [значения не имеет]
Команды модема… Редактирование команд модема…
Строка инициализации 1:
AT+CGDCONT=1, IP, internet.nw OK
Внимание! Строка инициализации указана для Северо-Западного Мегафона – Санкт-Петербург, Ленинградская область и т.д. Для других операторов и регионов отличие в скрипте подключения будет заключаться прежде всего в указании параметра, который называется APN (access point name – имя точки доступа). В данном примере это – internet.nw (в строке инициализации его надо прописать в двойных кавычках).
Информацию об APN см. прежде всего на официальных сайтах операторов связи в разделах Настройка GPRS (у СЗ-Мегафона он находится в разделе Абонентам – Настройки мобильных телефонов – Мобильный интернет GPRS; для Москвы имеется специальный раздел сайта – Автоматическая настройка телефонов для GPRS – использовав эту службу, можно посмотреть потом APN в настройках телефона).
Например, для МТС по всей России APN должно быть internet.mts.ru, тогда строка инициализации 1 будет выглядеть так: AT+CGDCONT=1, IP, internet.mts.ru OK
См. также очень полезный сайт Linux Mobile; в частности, раздел Статьи. Строки инициализации для разных разных операторов связи можно посмотреть в тексте скриптов, которые можно загрузить с этой страницы указанного сайта.
По состоянию на август 2006 года строки инициализации из указанных скриптов для отдельных регионов были нижеследующие (автором данной статьи не тестировались!):
Оператор Регион APN
Билайн Все по России internet.beeline.ru
Мегафон Москва, т.п. Лайт internet.ltmsk
Мегафон С-Петербург и Сев-Зап internet.nw
МТС Все по России internet.mts.ru
Приведенная выше строка инициализации подходит для большинства моделей мобильных телефонов. В противном случае см. сайт Linux Mobile.
Строка инициализации 2: [пусто]
Опросить модем…
Результаты опроса модема:
ATI: S700 series
ATI1: CXC125935
ATI2:
ATI3: Sony Ericsson S700 Bluetooth Modem
ATI4:
ATI5: Configuration Settings on Channel 0 &C: 1 &D: 0 *EIAC: 1,1,MegaFon WAP GPRS *EIAC: 2,1,MegaFon MMS GPRS *EIAC: 3,1,Megafon gprs *ELIN: 1 +CBST: 0,0,1 +CDIP: 0,2 +CGACT: 1, 0 +CGACT: 2, 0 +CGACT: 3, 0 +CGATT: 0 +CGDCONT: 1,IP,intern…
ATI6:
ATI7:
ATI8: Modem Configuration Profile Product Type Terminal Adapter Interfaces Bluetooth, IrDA, RS-232 Options OBEX, PPP, RLP, V42bis
Разное
Тайм-аут pppd: 60 с
Встроить в панель при соединении: да
Автодозвон при разъдинении: да
Автодозвон при NO CARRIER: нет
Показывать время в строке заголовка: да
Разъединиться при остановке X-сервера: да
Выход при разъединении: нет
Свернуть окно при соединении: да
Теперь в главном окне kppp выбираем:
Соединение с: Megafon-GPRS
Имя пользователя: inet [можно указать любое другое, значения не имеет]
Пароль: inet [можно указать любой, значения не имеет]
Показать окно журнала: да
Подключиться…
Если все было сделано правильно, происходит подключение (справа внизу появится значок kppp). Можно работать в интернете.