Небольшое HOWTO на тему спаривания под Линуксом по Bluetooth компа с Samsung D900i. Если кто-то успешно свяжет D900i или другой самс с линуксом, напишите, пожалуйста. Использую Slackware-current, но bluez-utils там стандартные, авторские. С другими дистрами картина должна быть аналогичной. Моторолы, Нокии и Сонерики спаривал так: rfcomm connect 0 00:17:E3:20:7B:97. При этом требовалось, чтобы (1) заранее был прописан passkey вроде 0000 в файл /etc/bluetooth/passkeys/00:17:E3:20:7B:97 и (2) запущен /usr/lib/bluetooth/register-passkeys, который из /etc этот пасскей читает и использует при спаривании. Примечание: 00:17:E3:20:7B:97 -- Bluetooth MAC адрес Моторолы, Нокии или Сонерика. Если таким же способом попытаться спариться с Самсунгом, получим примерно следующее: root:~# rfcomm connect 0 00:23:39:38:EA:34
Can't connect RFCOMM socket: Connection refused 00:23:39:38:EA:34 -- Bluetooth MAC адрес Самца. В результате экспериментов найден метод, в соотиветствии с которым успешно спариваются с линуксом Самцы, но, как мне показалось, не спариваются Моторолы, Нокии и Сонерики. В /etc/bluetooth/passkeys/00:23:39:38:EA:34 пасскей для Самца прописывать не нужно, /usr/lib/bluetooth/register-passkeys и passkey-agent запускать необходимости нет. Для спаривания Самца в режим ожидания выставляется не телефон, а комп. Для этого надо запустить hcid. Но перед запуском надо отредактировать конфиг /etc/bluetooth/hcid.conf. Для начала passkey "BlueZ" замените на цифровой код. Например, passkey "0000". Чтобы компом этот пасскей использовался, параметр security установите в auto: security auto И разрешите спаривание: pairing multi. Кусок hcid.conf: # HCId options
options {
# Automatically initialize new devices
autoinit yes;
# Security Manager mode
# none - Security manager disabled
# auto - Use local PIN for incoming connections
# user - Always ask user for a PIN
security auto;
# Pairing mode
# none - Pairing disabled
# multi - Allow pairing with already paired devices
# once - Pair once and deny successive attempts
pairing multi;
# Default PIN code for incoming connections
passkey "0000";
} Теперь перезапустите hcid, предварительно остановив ранее запущенный hcid командой kill или исполните команду /etc/rc.d/rc.bluetooth restart. После перезапуска hcid, ваш комп должен "светиться" в Bluetooth эфире и быть доступным для спаривания. Ищите его с Самца. Порою это получается со 2-3 раза, это нормально. На телефоне набираем указанный в hcid пасскей (в нашем примере 0000) и игнорируем ругань аппарата о том, что список сервисов ему получить не удалось. Затем на телефоне прописываем все мыслимые доступы и авторизации (Меню / Приложения / Bluetooth / Мои устройства / Имя устройства / Опции /Авторизовать) для вновь прописанного Bluetooth устройства. Теперь из соображений безопасности можно запретить новые спаривания на компе, прописав в hcid.conf pairing none, чтобы больше никто не спарился с компом (не забываем перезапустить hcid для того, чтобы изменения в конфиге hcid.conf вступили в силу). Спаривание произведено, теперь Линукс знает наш телефон, а телефон знает наш комп. Если не менять Bluetooth адаптер, не менять телефон и не удалять в списке Bluetooth устройств на телефоне спаренный по вышеописанной методике комп, новые спаривания и набор пасскея не потребуются. Для последующего выхода в эфир теперь можно выполнить привязку спаренного ранее устройства: rfcomm bind 0 00:23:39:38:EA:34 3 В этом примере 0 -- номер создаваемого в /dev rfcomm-устройства, 00:23:39:38:EA:34 -- Bluetooth MAC-адрес телефона, 3 -- канал, в котором в телефоне живёт DUN (Dial-Up Networking). Эта команда rfcomm bind создаёт устройство /dev/rfcomm0, где 0 -- введённый вами выше номер rfcomm-устройства. Если теперь запустить rfcomm, она должна выдать что-то вроде этого: rfcomm0: 00:23:39:38:EA:34 channel 3 clean Таким образом мы присоединили спаренный ранее телефон к момпу. Но данные пока не передаём. Надеюсь, что каждый школьник знает, откуда брать MAC и номер канала для DUN: телефон переводится в режим доступности и запускается команда sdptool search DUN. root@nx6110:~# sdptool search DUN
Inquiring ...
Searching for DUN on 00:23:39:38:EA:34 ...
Service Name: Dial-up Networking
Service RecHandle: 0x10002
Service Class ID List:
"Dialup Networking" (0x1103)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 3
Profile Descriptor List:
"Dialup Networking" (0x1103)
Version: 0x0100 Обращаем внимание на строки: Searching for DUN on 00:23:39:38:EA:34 -- это MAC и Channel: 3 -- это канал. "Привязанное" ранее командой rfcomm bind устройство /dev/rfcomm0 надо отдавать тем тулзам, которым нужен модем для дозвона (pppd, wvdial и всякие терминалы). Инит строки GPRS-модема, точки доступа, пароли и ID для соединения с разными провайдерами, равно как и настройка pppd, выходят за рамки этого сообщения и содержатся во множестве инструкций (гуглите wvdial howto, pppd howto, ppp howto и в качестве "модема" отдавайте /dev/rfcomm0, а ID/пароль, точку доступа и инит строку гуглите в инструкциях по подключению GPRS). После окончания сеанса связи и остановки wvdial, терминала или pppd, телефон хорошо бы "отпустить". Делается это командой rfcomm release 0. После её выполнения устройство /dev/rfcomm0 должно исчезнуть. Если ничего не вышло, всегда можно взять комплектный кабель, воткнуть его в комп и в телефон, чтобы получить устройство /dev/ttyACM0. wvdial и pppd проще настраивать с кабелем и после успешного тестирования, в конфиге программы, которая ходит в сеть можно заменять устройство /dev/ttyACM0 на /dev/rfcomm0, чтобы избавиться от проводов. P.S. Если всё выглядит слишком сложно, берите какую-нибудь Кубунту с чем-то вроде kdebluetooth, может быть, там сразу можно покликать мышкой и что-то получить. Однако Бубунта с Кедами вряд ли будет комфортно жить на устройстве наподобие Asus EEE PC 701 с 4 гигами диска, а описанный выше метод работает там отлично. Небольшое дополнение. Мегафон для точки входа internet допускает сочетание ID=gdata, пароль=gdata. Без них авторизация pppd сходу не проходит, искать настройки pppd для беспарольного входа не стал. Для Билайна брал internet.beeline.ru, beeline/beeline. Тестил на Hewlett Packard nx6110 и Asus EEE PC 701. Адаптеры D-Link DBT-120 и DBT-122. Видимость Bluetooth USB-донгла смотрите командой lsusb.