Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

Приемы работы в Ubuntu.
Глава 4: Мобильная Ubuntu

Оригинал: "Ubuntu Hacks: Chapter 4 - Mobile Ubuntu"
Авторы: Кайл Ранкин, Джонатан Оксер, Билл Чайлдерс (Kyle Rankin, Jonathan Oxer, Bill Childers)
Дата публикации: June 2006
Перевод: Н.Ромоданов
Дата перевода: сентябрь 2010 г.

Совет # 44: Подключаемся через Bluetooth

Создайте свою личную локальную сеть на Bluetooth для обмена файлами, для отсылки сообщений, а также для совместного доступа к сетевым ресурсам.

Bluetooth позволяет создавать между устройствами специальные соединения, действующие на короткие расстояния (обычно 10 метров) и имеющие низкую пропускную способность (1-2 мегабит в секунду). Они идеально подходят для отправки фотографий с фотокамеры телефона на компьютер или для подключения к беспроводным модемам, которые есть в некоторых моделях сотовых телефонов.

Для того, чтобы начать работу с Bluetooth, прежде всего убедитесь, что он работает. В некоторых компьютерах есть встроенные адаптеры Bluetooth. Если вы используете внешний USB Bluetooth, то после его вставки вам, возможно, потребуется запустить следующую команду с тем, чтобы перезагрузить демон хост-контроллера Bluetooth:

$ sudo killall -HUP hcid

Теперь для того, чтобы убедиться, что Bluetooth действительно включен и работает, вам нужно проверить, что в непосредственной близости от вас есть по крайней мере одно устройство, которое находится в режиме "обнаруживаемое" ("discoverable"). Этот режим Bluetooth позволяет устройствам находить друг друга. Посмотрите документацию на устройство для выяснения подробностей перевода устройства в этот режим.

Некоторые устройства позволяют включить режим "обнаруживаемое" только на ограниченный период времени (например, на 2 минуты). Поэтому сразу выполните следующую команду. Утилита hcitool позволит вам управлять соединениями Bluetooth. Выполните команду hcitool scan для того, чтобы получить список устройств, находящихся поблизости от вас. Ниже показано, что утилита hcitool нашла три устройства (мой сотовый телефон Nokia 3650, мой Mac и мой Palm Treo):

bjepson@scoobuntu:~$ hcitool scan
Scanning ...
        00:60:57:50:AB:9C       BrianJ3650
        00:14:51:89:4D:C7       Jepstone
        00:07:E0:6A:FE:54       bjepson

Попарное сопряжение устройств

Теперь, когда вы знаете, что Bluetooth работает, вы можете выполнить сопряжение (pairing) вашей системы Ubuntu с одним из устройств. Сопряжение создает соединение между устройствами с тем, чтобы они могли обмениваться данными и подключаться друг к другу.

Во-первых, инициируйте сопряжение с устройством, которое вы хотите использовать. Все устройства различны. На Treo, например, вам нужно нажать на иконку Bluetooth и выбрать Setup Devices→Trusted Devices→Add Device (Настройка устройств → Доверенные Устройства → Добавить устройство). На рис. 4-11 показан мой Palm Treo, который нашел несколько компьютеров, в том числе и scoobuntu-0 - мою систему Ubuntu. Выберите систему Ubuntu и нажмите кнопку ОК. Когда появится предложение ввести код доступа, выберите что-нибудь наугад. В Ubuntu должно появиться диалоговое окно, которое попросит ввести ключ доступа. Введите в диалоговом окне тот же самый код доступа и щелкните по OK.

Palm Treo ищет Bluetooth

Рис.4-11. Palm Treo ищет ближайшие Bluetooth устройства

Сопряжение устройств вручную

Если это диалоговое окно не появится, то вам придется взять дело в свои руки. Отмените на вашем устройстве процедуру сопряжения (или подождите некоторое время) и вернитесь в вашу систему Ubuntu. Отредактируйте файл /etc/bluetooth/pin (вам необходимо при редактировании использовать sudo и набрать команду sudo vi /etc/bluetooth/pin) — измените имеющийся там код PIN на PIN, который вы будете использовать как одноразовый пароль для сопряжения устройств (в некоторых устройствах допустимы только числовые PIN-ы).

Затем создайте скрипт с названием /usr/local/bin/bluepincat и сделайте его исполняемым:

#!/bin/sh
# file: /usr/local/bin/bluepincat

echo -n "PIN:" 
cat /etc/bluetooth/pin

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

pin_helper /usr/local/bin/bluepincat;

Далее, перезагрузите демон hcid с помощью команды sudo killall -HUP hcid и снова попытайтесь начать сопряжение вашего устройства; на этот раз используйте код PIN, который вы поместили в файл /etc/bluetooth/pin как ключ доступа. Как только вы закончите сопряжение устройств, вы должны восстановить исходные настройки и снова перезагрузить демон hcid (это не позволит попытаться другим отгадать ваш код PIN и подключиться к вашему компьютеру без вашего ведома или согласия).

Передача файлов через Bluetooth

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

$ sudo apt-get install obexserver

Для приема файлов вам нужно будет зарегистрировать сервис OBEX push (Object Exchange — обмен объектами). Это нужно будет делать каждый раз при перезагрузке компьютера (или подсистемы Bluetooth):

$ sdptool add --channel=10 OPUSH
OBEX Object Push service registered

Теперь, когда вы хотите получить файл, запустите obexserver и отправьте файл с другого устройства. Obexserver прекратит работу после завершения передачи:

$ obexserver
Waiting for connection...

...............................................................
...............................................................
...............................................................
...............................................................
...................................................HEADER_LENGTH = 307254
put_done() Skipped header 05
put_done() Skipped header 42
put_done() Skipped header c0
Filename = screenshot0000.bmp
Wrote /tmp/screenshot0000.bmp (307254 bytes)

$

Подключение к интернету

Многие телефоны с Bluetooth, в том числе и определенные модели Treo, а также многие телефоны Nokia и Sony Ericsson можно использовать в качестве шлюза между вашим компьютером и интернетом. В этой конфигурации телефон обычно считается "беспроводным модемом", но на самом деле, связь между вашим компьютером и интернетом просто будет цифровой. Тем не менее, поскольку в этой конфигурации используется тот же протокол (PPP), что и в большинстве проводных телефонных подключений, проще, а иногда и полезно, рассматривать такое соединение как модемное.

Предостережение

Прежде чем вы попытаетесь все это сделать, вам необходимо обратиться к поставщику услуг беспроводной связи и выяснить, поддерживается ли такая услуга и сколько она вам будет стоить. У некоторых провайдеров, таких как T-Mobile в США, есть недорогие планы подключения с фиксированной ценой от $ 20 и до $ 50 в месяц в зависимости от уровня обслуживания. Но большинство провайдеров будут брать с вас оплату за каждый килобайт данных, если вы не подключены по специальному плану, допускающему обмен данными. Если вам не совсем ясно, сколько это будет стоить, будьте аккуратны, так как сотовые счета могут доходить до сотен или даже до тысяч долларов особенно в случаях, когда вы пользуетесь международным роумингом!

Для того, чтобы подключиться, вы должны сначала создать соединение между вашей системой Ubuntu и сопряженным устройством. Отредактируйте (с использованием sudo) файл /etc/bluetooth/rfcomm.conf и добавьте строчку для вашего устройства. Вам необходимо указать ID телефона (который вы можете получить с помощью команды hciutil scan, так как это было показано ранее):

rfcomm0 {
  bind yes;
    # Bluetooth address of the device
    device 00:07:E0:6A:FE:54;
    # RFCOMM channel for the connection
    channel     1;
    # Description of the connection
    comment "My Treo";
}

Затем отредактируйте файл /etc/bluetooth/hcid.conf (с использованием sudo) — перейдите к концу файла и раскомментируйте строки auth и encrypt так, чтобы они выглядели следующим образом:

    # Authentication and Encryption (Security Mode 3)
    auth enable;
    encrypt enable;

Затем выполните команду sudo killall -HUP hcid для того, чтобы перезагрузить демон hcid.

Затем с помощью команды sudo rfcomm bind rfcomm0 создайте подключение. Теперь вы получили модем, который можно использовать как устройство /dev/rfcomm0. Далее, вам нужно создать несколько скриптов PPP. Первым скриптом будет chat script. Имея права пользователя root, создайте /etc/chatscripts/BluetoothPhone. Вам нужно будет заменить APN на имя точки доступа (Access Point Name), которую использует ваш сотовый провайдер (для получения этой информации обратитесь к вашему оператору сотовой связи или посмотрите список имен точек доступа по следующей ссылке http://www.opera.com/products/mobile/docs/connect/ - к сожалению, в настоящее время страница с этим списком не поддерживается — прим.пер.):

TIMEOUT 10
ABORT   'BUSY'
ABORT   'NO ANSWER'
ABORT   'ERROR'
SAY     'Starting GPRS connect script\\n'

# Get the modem's attention and reset it.
""      'ATZ'

# E0=No echo, V1=English result codes
OK      'ATE0V1'

# Set Access Point Name (APN)
SAY     'Setting APN\\n'
OK  'AT+CGDCONT=1,"IP","APN"'

# Dial the number
ABORT   'NO CARRIER'
SAY     'Dialing...\\n'
OK      'ATD*99***1#'
CONNECT ''

Следующим скриптом является /etc/chatscripts/BluetoothPhone-Disconnect:

""      "\\K" 
""      "+++ATH0" 
SAY     "GPRS disconnected." 

Наконец, вам нужен скрипт PPP peers (/etc/ppp/peers/BluetoothPhone):

/dev/rfcomm0  # Bluetooth modem
115200        # speed
defaultroute  # use the cellular network for the default route
usepeerdns    # use the DNS servers from the remote network
nodetach      # keep pppd in the foreground
crtscts       # hardware flow control
lock          # lock the serial port
noauth        # don't expect the modem to authenticate itself
local         # don't use Carrier Detect or Data Terminal Ready
replacedefaultroute
debug

# Use the next two lines if you receive the dreaded messages:
#
#    No response to n echo-requests
#    Serial link appears to be disconnected.
#    Connection terminated.
#
lcp-echo-failure 4
lcp-echo-interval 65535

connect "/usr/sbin/chat -V -f /etc/chatscripts/BluetoothPhone" 
disconnect "/usr/sbin/chat -V -f /etc/chatscripts/BluetoothPhone-Disconnect"

Когда все эти скрипты будут находиться на своих местах и вы с помощью команды rfcomm bind подключитесь к устройству rfcomm, то для того, чтобы подключиться к интернету в любом месте, где есть сотовая связь, достаточно будет выполнить команду sudo pppd call BluetoothPhone. Когда вы прекратите пользоваться интернетом, нажмите клавиши Ctrl-C с тем, чтобы закрыть соединение.

Чтобы получить дополнительную информации об использовании сотовой связи и Bluetooth для обмена данными, смотрите книгу Linux Unwired (Беспроводный Linux), Roger Weeks и др. (O'Reilly).


Назад Оглавление Вперед



Средняя оценка 5 при 1 голосовавших