Показаны сообщения с ярлыком gprs. Показать все сообщения
Показаны сообщения с ярлыком gprs. Показать все сообщения

понедельник, 4 мая 2009 г.

Настройка GPRS (Sony Ericsson K530i) в Linux (Debian) через Bluetooth-контроллер

В предыдущей статье я настроил доступ в Internet по GPRS через USB-кабель телефона. В той статье также описана настройка доступа через Bluetooth-интерфейс.

28 апреля я из чистого интереса к новым технологиям решил купить Bluetooth-контроллер. Я прошёлся по сайтам местных магазинов и выписал все Bluetooth-контроллеры, которые были в наличии. Их было довольно много и естественно я не знал, какой из них мне выбрать. Выбирать по внешнему виду, цвету и цене было бы глупо. Хотя, я думаю, большинство покупателей интересуют только эти характеристики :)

Я пошёл другим путём и решил ознакомиться с матчастью. После нескольких часов гугления характеристик контроллеров и чтения статей по Bluetooth вообще, я определился, каким должен быть контроллер, который я хочу купить. Он должен быть:

1. первого класса. Устройства первого класса имеют самый мощный передатчик, который в условиях прямой видимости, наименьшей радиозашумлённости среды должен обеспечивать связь на расстоянии до 100м. В домашних условиях, когда имеются стены, перекрытия, работают радио и электроприборы, дальность связи может падать до десятков метров, однако устройства второго или третьего класса в таких условиях обеспечивают ещё меньшую дальность радиосвязи.

2. поддерживать стандарт Bluetooth 2.0 как минимум. Данный стандарт позволяет осуществлять обмен данными на скорости до 3 мегабит в секунду. Опять же, скорость обмена во многом определяется наличием перекрытий, дальностью между источником и приёмником, от зашумлённости радиосреды, от наличия в зоне радиосвязи других Bluetooth-устройств и их активности, а также снижается из-за накладных расходов на передачу служебной информации.
- иметь интерфейс USB 2.0. В принципе, USB 2.0 отличается от USB 1.0 (или 1.1) наличием дополнительной скорости приёма-передачи - 25-480 мегабит в секунду, поэтому для обслуживания радиопередатчика, работающего на скорости 3 мегабита в секунду было бы достаточно и разъёма USB 1.0 (1.1), но душе было угодно пользоваться именно USB 2.0 :)

3. поддерживать как можно больше Bluetooth-профилей. Bluetooth-профиль - это разновидность сервиса, который может поддерживать Bluetooth-устройство. Это могут быть сервисы передачи файлов (OBEX), модемный сервис (DUN), передача звуковой информации (A2DP) и тому подобные сервисы. Самое главное - должны поддерживаться синхронный (SCO) и асинхронный (ACL) режимы передачи данных. Синхронный режим предназначен для передачи аудио-информации, передаваемые пакеты в нём не подтверждаются, поэтому потерянные при передаче данные не передаются повторно. В асинхронном режиме осуществляется подтверждение приёма информации, этот режим ориентирован на передачу разнородных данных.

4. должен работать в Linux. Тут всё понятно и без слов.

Больше всего по этим параметрам мне приглянулся контроллер 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
Использованные пр подготовке статьи материалы:
  1. Bluetooth - Википедия - статья в Википедии, где описаны классы и профили Bluetooth
  2. Подключение GPRS/EDGE в GNU/Linux - статья, по которой была написана моя прошлая заметка
  3. Настройка GPRS (Sony Ericsson K530i) в Linux (Debian) - моя прошлая заметка
  4. Bluesnarfing - взлом Bluetooth-устройств с помощью направленной антенны

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 уже поднималась эта тема:
xserver-xorg и hal

Эта тенденция довольно печальна и периодически заставляет задумываться о необходимости поиска и освоения "более других" систем...

понедельник, 27 апреля 2009 г.

Настройка GPRS (Sony Ericsson K530i) в Linux (Debian)

Собственно, писать тут особо нечего. Есть описания вариантов настройки различных телефонов. Есть и превосходная статья, которая описывает полностью все аспекты настройки GPRS-подключения в Linux.

Вот эти источники, которыми воспользовался я:
  1. Настройка GPRS-internet для Sony Ericsson. FAQ
  2. Настройка GPRS-internet для новых телефонов Sony Ericsson, платформа А200. FAQ
  3. Подключение GPRS/EDGE в GNU/Linux
Теперь я кратко пробегусь по процессу настройки, чтобы его не забыть. Я не собираюсь использовать его в качестве основного подключения, только в качестве аварийного (надеюсь, что воспользоваться не придётся).

1. Во-первых, настроим сам телефон.

1.1. Заходим в меню: Параметры -> Связь -> USB Интернет -> Уч. зап. данн. USB -> Новая уч. запись -> Данные PS

1.2. В ответ на запрос "Имя:" вводим имя подключения: "Мегафон".

1.3. Далее в трёх текстовых полях экрана "Нов. уч. запись PS" вводим:
1.3.1. "Точка доступа" - вводим "internet",
1.3.2. "Имя пользоват." - вводим "gdata",
1.3.3. "Пароль" - вводим "gdata".

1.4. После создания записи выделим её и нажмём кнопку "Выбрать".

1.5. Заходим в меню: Параметры -> Связь -> Передача данных -> Уч.записи данных -> выбираем "Мегафон" и жмём кнопку "Измен." Проверим параметры:
1.5.1. "Точка доступа" - должно быть "internet",
1.5.2. "Имя пользоват." - должно быть "gdata",
1.5.3. "Пароль" - должно быть "gdata",
1.5.4. "Запрос пароля" - должно быть "Отключено",
1.5.5. "Разреш. вызовы" - должно быть "Автоматически",
1.5.6. "Адрес IP" - должно быть "...",
1.5.7. "Адрес DNS" - должно быть "...",
1.5.8. "Аутентификация" - отмечаем галочкой только вариант "Нет",
1.5.9. "Сжатие данных" - должно быть "Отключено",
1.5.10. "Сжатие заголов." - должно быть "Отключено".

1.6. Заходим в меню: Параметры -> Связь -> Передача данных -> Парам. Интернет -> выбираем "Мегафон".

1.7. Заходим в меню: Параметры -> Связь -> Передача данных -> Параметры Java -> выбираем "Мегафон".

1.8. Заходим в меню: Параметры -> Связь -> Передача данных -> Пар.поток.воспр. -> выбираем "Мегафон".

2. Во-вторых настроим компьютер.

2.1. Установим пакет resolvconf:
# aptitude install resolvconf
2.2. Настроим опции демона pppd для подключения точка-точка через модем /etc/ppp/peers/megafon:
/dev/ttyACM0 115200
# отключаем сжатие данных
nobsdcomp
nodeflate
novj
novjccomp
nopcomp
noaccomp
nodeflate
# команда для установки соединения
connect '/usr/sbin/chat -v -f /etc/chatscripts/megafon'
noauth
# автоматическое получение сетевых настроек
noipdefault
usepeerdns
defaultroute
ttyACM0 соответствует имени файла устройства - телефона.

2.3. Настроим chat-сценарий /etc/chatscripts/megafon:
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              ATE1
OK              'AT+cgdcont=1,"IP","internet"'
OK              ATD*99#
CONNECT         ''
2.4. Теперь, по желанию, можно прописать автоматическое подключение при загрузке системы в файле /etc/network/interfaces:
auto megafon
iface megafon inet ppp
  provider megafon
Для подключения соединения можно ввести команду pon megafon от пользователя root, для отключения - poff megafon.