Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #71, НОЯБРЬ 2004 г.

Мобильные юниксы vol. 3

Anton Karpov

Хакер, номер #071, стр. 071-098-1


(toxa@real.xakep.ru)

Синезубые демоны

В первых двух частях «Мобильных юниксов» мы подробно рассмотрели расширенное управление электропитанием (ACPI), подключение PCMCIA-карт, обработку внешних событий (подключение батареи, закрытие крышки ноутбука), выход в интернет с помощью связки «мобильный телефон + GPRS + USB-шнурок + ноутбук», а также создание собственной Wi-Fi точки доступа. Однако без внимания осталась технология беспроводной связи Bluetooth. Третья часть нашей саги призвана восполнить этот информационный пробел.

Текущее положение дел

Технологии не стоят на месте - новые появляются, текущие становятся доступными для широких масс, старые отходят в небытие. Так и с портативными девайсами: если год-два назад большинство мобильников или PDA подключали к компьютеру/ноутбуку через инфракрасный порт или USB (а то и serial) кабель, то нынче все большие обороты набирает Bluetooth. BT-адаптеры постепенно превращаются из фишек, которыми оборудуют исключительно топовые модели мобил и карманников, в такой же обязательный атрибут средств коммуникации, каким уже давно стал USB или не так давно FireWire.

Рассмотрим типичную ситуацию: ты проапгрейдил свой мобильник, и твоя новая трубка имеет встроенную поддержку Bluetooth. Для ноутбука ты купил USB'шный BT-адаптер (все-таки не во все лаптопы их пока встраивают), к которому прилагается диск с софтом для Windows и красочная инструкция о том, как вставить этот диск в CD-привод и запустить. Но вот незадача - ты предпочитаешь никсы ;-). Можешь смело выкинуть диск в ведро, он нам не понадобится.

Bluetooth и FreeBSD

FreeBSD, как правильная ОС, имеет встроенную полноценную поддержку BT-стэка. Никаких патчей не понадобится. Учитывая, что у нас 5-я ветка фряхи, просто загружаем драйвер BT-стэка:

# kldload ng_ubt

Чтобы не делать этого каждый раз, пропишем его в автозагрузку:

# echo 'ng_ubt_load="YES"' > > /boot/loader.conf

Теперь втыкаем наш USB-адаптер. Ядро обрадует нас сообщением вида:

ubt0: Cambridge Silicon Radio Ltd. Bluetooth USB dongle, rev 1.10/3.73, addr 2

ubt0: Interface 0 endpoints: interrupt=0x81, bulk-in=0x82, bulk-out=0x2

ubt0: Interface 1 (alt.config 5) endpoints: isoc-in=0x83, isoc-out=0x3; wMaxPacketSize=49; nframes=6, buffer size=294

Отлично, теперь осталось запустить сам BT-стэк. Это делается с помощью скрипта rc.bluetooth, расположенного в /usr/share/examples/netgraph/bluetooth/. Скопируем его в /etc для порядка:

# cp /usr/share/examples/netgraph/bluetooth/rc.bluetooth /etc/

Теперь только осталось его запустить:

# /etc/rc.bluetooth start ubt0

BD_ADDR: 00:09:dd:10:14:f6

Features: 0xff 0xff 0xf 00 00 00 00 00

[snip]

Однако каждый раз выполнять эту команду как-то лениво. Но мы помним, что у нас есть devd(8) - демон устройств, который умеет мониторить состояние девайсов и выполнять указанные действия. Подключение BT-адаптера влечет за собой создание устройства /dev/ubt0 (FreeBSD 5 использует devfs). Ассоциируем этот процесс с запуском скрипта, предварительно убедившись, что devd(8) отконфигурирован на автозапуск:

# /etc/rc.d/devd rcvar

Содержание  Вперед на стр. 071-098-2
<<< НАЗАД ||| ГЛАВНАЯ