В предыдущей статье я настроил доступ в Internet по GPRS через USB-кабель телефона. В той статье также описана настройка доступа через Bluetooth-интерфейс.
28 апреля я из чистого интереса к новым технологиям решил купить Bluetooth-контроллер. Я прошёлся по сайтам местных магазинов и выписал все Bluetooth-контроллеры, которые были в наличии. Их было довольно много и естественно я не знал, какой из них мне выбрать. Выбирать по внешнему виду, цвету и цене было бы глупо. Хотя, я думаю, большинство покупателей интересуют только эти характеристики :)
Я пошёл другим путём и решил ознакомиться с матчастью. После нескольких часов гугления характеристик контроллеров и чтения статей по Bluetooth вообще, я определился, каким должен быть контроллер, который я хочу купить. Он должен быть:
Больше всего по этим параметрам мне приглянулся контроллер Tekram TM-308, который я и приобрёл в тот же день.
Итак, вставляем Bluetooth-контроллер в USB-разъём. Устанавливаем служебные программы для работы с Bluetooth-устройствами:
# aptitude install bluez-utils
И подгружаем модуль ядра для работы с Bluetooth-устройствами:
# modprobe hci_usb
Открываем на редактирование файл /etc/bluetooth/hcid.conf и приводим его к следующему виду:
options { autoinit yes; security auto; pairing multi; passkey "1234"; }
Где 1234 - PIN-код, который будет использоваться для получения доступа к компьютеру. Это может быть довольно длинный пароль из латинских букв в разном регистре, цифр и знаков препинания.
Запускаем службу Bluetooth:
# /etc/init.d/bluetooth start
Теперь нужно найти телефон. Активируем Bluettoth на телефоне. Запускаем поиск Bluetooth-устройств, находящихся поблизости:
$ hcitool scan
Должно найтись устройство, соответствующее вашему телефону. На телефоне можно выставить Bluetooth-имя устройства. Если вы не выставляли его сами, то скорее всего именем будет модель телефона.
Выписываем MAC-адрес, соответствующий телефону. MAC-адрес моего телефона - 00:21:9E:1D:A5:17, далее в статье будет фигурировать он.
Запускаем перечислтель профилей Bluetooth, поддерживаемых устройством.
$ sdptool browse 00:21:9E:1D:A5:17
В выдаче нужно найти номер канала, соответствующего профилю DUN или Dialup Networking. Если вы не нашли профиль DUN или Dialup Networking, то можно воспользоваться профилем NAP или PAN, хотя он предназначен для создания локальной сети из нескольких Bluetooth-устройств.
Теперь приведём файл /etc/bluetooth/rfcomm.conf в соответствии с найденными MAC-адресом и каналом. У меня получилось вот так:
rfcomm0 { bind yes; device 00:21:9E:1D:A5:17; channel 2; comment "Dial-up networking gateway"; }
Где 00:21:9E:1D:A5:17 - MAC-адрес телефона, а 2 - номер профиля DUN.
Проводим первичное подключение к телефону с помощью команды:
$ rfcomm connect 0 00:21:9E:1D:A5:17 2
Где 0 - номер устройства /dev/rfcomm0, 00:21:9E:1D:A5:17 - MAC-адрес телефона и 2 - номер канала DUN.
После выполнения этой команды телефон запросит разрешение на подключение со стороны компьютера. Нужно ввести PIN-код, который мы прописали в соответствие телефону в файле /etc/bluetooth/hcid.conf и указать опцию - "разрешать автоматическое подключение".
Теперь осталось исправить название устройства в файле /etc/ppp/peers/megafon и прописать вместо оставшегося там с прошлой статьи устройства ttyACM0 устройство rfcomm0.
Теперь можно установить GPRS-подключение в Интернет:
# pon megafon
Отключиться можно как и прежде:
# poff megafon
Использованные пр подготовке статьи материалы:
P.S. Следует заметить, что из той же статьи на википедии явно видно, что защита соединения паролем по сути бесполезна. Она может остановить непрофессионала, однако профессионал, хорошо разбирающийся в Bluetooth, сможет в считанные секунды подобрать пароль, защищающий подключение. Это следует хорошо понимать. Главной защитой здесь может быть только достаточно большое расстояние между злоумышленником и вашими Bluetooth-устройствами. Однако опять же, судя по статье по последней ссылке, взломщики весьма изобретательны и уже существуют направленные Bluetooth-антенны, позволяющие при соответствующей наводке устанавливать связь с Bluetooth-устройствами на значительные расстояния до нескольких сотен метров.
P.P.S. Одним из интересных и, на мой взгляд, спорных моментов Bluetooth-стека в Linux, является жёсткая привязка к подсистеме D-Bus. В FreeBSD и NetBSD такой привязки нет.
Одной из особенностей современных операционных систем на базе Linux является довольно интересное противоречие подходов к разработке системы. Существует как бы два лагеря разработчиков Linux: условно назовём их системщиками и прикладниками. Системщики хорошо помнят ценности Unix и продолжают вести разработки в духе Unix, прикладники по большей части духа Unix не чувствуют и делают в основном так, чтобы было не хуже чем в Windows. Работая с Linux'ом можно понять, что существует два Linux'а: пропитанный Unix-традициями консольный неразговорчивый Linux-раб и гламурный и дружественный Linux-приятель. Если вы знаете Linux только со стороны Gnome или KDE, в большинстве случаев можно с большой уверенностью сказать, что собственно Linux вы и не знаете - вам знакома лишь его оболочка, которая совершенна ему чужда.
В последнее время наблюдается взаимопроникновение этих двух подходов разработки. Одним из таких сигналов является привязка подсистемы D-Bus к Bluetooth-стеку. Другим характерным сигналом является привязка X-сервера к уровню абстракции от оборудования HAL, тоже работающему только совместно с D-Bus. Проблема в том, что прикладники постепенно портят всё то, что нравится в Linux системщикам. Следует заметить, что эта тема волнует не меня одного. Например прямо на этой неделе в рассылке russian-debian уже поднималась эта тема:
Эта тенденция довольно печальна и периодически заставляет задумываться о необходимости поиска и освоения "более других" систем...