Difference between revisions of "Bluetooth (Русский)"

From ArchWiki
Jump to: navigation, search
(Установка)
(Updated translation (from english version))
Line 6: Line 6:
 
[[it:Bluetooth]]
 
[[it:Bluetooth]]
 
[[zh-CN:Bluetooth]]
 
[[zh-CN:Bluetooth]]
== Установка ==
 
Чтобы использовать блютус, вам необходимо установить пакет [http://www.bluez.org bluez]:
 
# pacman -S bluez
 
  
После установки пакета необходимо запустить демоны dbus и bluetooth:
+
[http://www.bluetooth.org/ Bluetooth] является стандартом для беспроводных соединений малой дальности сотовых телефонов, компьютеров и других электронных устройств. В Linux реализацией стека протоколов Bluetooth от canonical является [http://www.bluez.org/ BlueZ].
# /etc/rc.d/dbus start
+
# /etc/rc.d/bluetooth start
+
  
Демон dbus важнее демона bluetooth и это поэтому должен запускаться '''раньше'''. Если по какой-то причине демон bluetooth был запущен раньше демона dbus, то его необходимо перезапустить:
+
==Установка==
 +
Для использования Bluetooth [[pacman (Русский)#Установка пакетов|установите]] {{Pkg|bluez}}, доступный в [[Official Repositories (Русский)|официальных репозиториях]]. После установки пакета должны быть запущены оба [[Daemon (Русский)|демона]] {{ic|dbus}} и {{ic|bluetooth}}, '''именно в этом порядке'''.
 +
{{Note|Важно, что {{ic|dbus}} запускается '''перед''' {{ic|bluetooth}}}}
 +
Демон {{ic|dbus}} используется для чтения настроек, тогда как демон {{ic|bluetooth}} необходим для протокола Bluetooth.
  
# /etc/rc.d/bluetooth restart
+
Чтобы запустить/перезапустить/остановить демон вручную, используйте следующее:
  
В последней версии установщика файл /etc/rc.d/funtions отсутствует и запускать сервис следует командой:
+
# rc.d {start|stop|restart} bluetooth
  
# systemctl enable bluetooth
+
Если вы используете [[systemd (Русский)]], вам необходимо включить сервис bluetooth:
  
Чтобы демон bluetooth запускался при загрузке, добавьте его в строку демонов в файле [[rc.conf]] (после dbus):
+
# systemctl enable bluetooth.service
  DAEMONS=(... bluetooth)
+
  # systemctl start bluetooth.service
  
== Графические надстройки ==
+
==Графические надстройки==
  
 
Следующие пакеты предоставляют графический интерфейс для изменения настроек Bluetooth.
 
Следующие пакеты предоставляют графический интерфейс для изменения настроек Bluetooth.
  
=== Blueman ===
+
===Blueman===
  
[http://blueman-project.org Blueman] - полнофункциональный менеджер Bluetooth, написанный на GTK и, поэтому, рекомендуемый для сред [[GNOME]] и [[Xfce]]. Установка через pacman:
+
[http://blueman-project.org Blueman] - полнофункциональный менеджер Bluetooth, написанный на GTK и поэтому рекомендуемый для сред [[GNOME (Русский)]] и [[Xfce (Русский)]]. Установка через pacman:
 
  # pacman -S blueman
 
  # pacman -S blueman
  
Убедитесь, что демон ''bluetooth'' запущен как описано выше и затем запустите ''blueman-applet''. Чтобы апплет запускался автоматически при входе, добавьте запуск ''blueman-applet'' в ''Система -> Параметры -> Запускаемые приложения'' (GNOME) или ''Меню Xfce -> Настройки -> Session and Startup'' (Xfce).
+
Убедитесь, что демон ''bluetooth'' запущен, как описано выше, и затем запустите ''blueman-applet''. Чтобы апплет запускался автоматически при входе, добавьте запуск ''blueman-applet'' в ''Система -> Параметры -> Запускаемые приложения'' (GNOME) или ''Меню Xfce -> Настройки -> Сессия и Автозапуск'' (Xfce).
 +
 
 +
Чтобы какой-либо пользователь мог добавлять устройства Bluetooth и управлять ими, используя Blueman, он должен быть добавлен в группу 'lp'. Смотрите /etc/dbus-1/system.d/bluetooth.conf в секции, позволяющей пользователям группы 'lp' связываться с демоном Bluetooth.
 +
 
 +
{{Note|Если Blueman работает вне GNOME/GDM (например, в Xfce с использованием команды {{ic|startx}}), вы должны добавить {{ic|. /etc/X11/xinit/xinitrc.d/*}} сверху вашего {{ic|~/.xinitrc}}, чтобы Nautilus был способен видеть ваши устройства}}
 +
 
 +
Для получения файлов не забудьте нажать правой кнопкой мыши на "Иконке трея Blueman -> Локальные Сервисы -> Передача -> Получение Файла" и отметить "Включено".
 +
 
 +
====Скрипт для Thunar====
 +
Если вы используете не Nautilus (например, Thunar), данный скрипт может быть вам полезен:
 +
{{hc|obex_thunar.sh|
 +
#!/bin/bash
 +
fusermount -u ~/bluetooth
 +
obexfs -b $1 ~/bluetooth
 +
thunar ~/bluetooth
 +
}}
 +
Теперь вам нужно будет переместить скрипт в соответствующее место (например, {{ic|/usr/bin}}). После этого отметьте его как исполняемый:
 +
{{bc|chmod +x /usr/bin/obex_thunar.sh}}
 +
Последний шаг - изменить линию в ''Иконке трея Blueman -> Локальные Сервисы -> Передача -> Дополнительно'' на {{ic|obex_thunar.sh %d}}.
 +
 
 +
===Gnome Bluetooth===
 +
 
 +
[http://live.gnome.org/GnomeBluetooth gnome-bluetooth] - форк старого пакета ''bluez-gnome'', ориентированный на интеграцию со средой [[GNOME (Русский)]]. GNOME Bluetooth требуется для работы {{Pkg|gnome-shell}}, так что он уже должен быть у вас установлен, если вы используете GNOME 3. Если это не так, он может быть установлен с пакетом {{Pkg|gnome-bluetooth}}.
 +
 
 +
Запустите {{ic|bluetooth-applet}} - это приятный апплет Bluetooth. Теперь вы сможете настраивать устройства и пересылать файлы с помощью нажатия правой кнопкой мыши на иконку Bluetooth. Чтобы апплет запускался при входе в систему, добавьте его в ''Система -> Параметры -> Запускаемые приложения''.
 +
 
 +
Чтобы добавить пункт меню Bluetooth в ''SendTo'' в меню свойств Thunar'а, смотрите инструкции [http://thunar.xfce.org/pwiki/documentation/sendto_menu здесь].
 +
 
 +
=== BlueDevil ===
 +
 
 +
Инструмент Bluetooth в [[KDE (Русский)]] - [https://projects.kde.org/projects/extragear/base/bluedevil BlueDevil]. Он может быть установлен с пакетом {{Pkg|bluedevil}}, доступным в [[Official Repositories (Русский)|официальных репозиториях]].
 +
 
 +
Удостоверьтесь, что демон {{ic|bluetooth}} запущен, как описано выше. У вас должны быть иконки Bluetooth и в Dolphin, и в системном трее, нажав на которые вы можете настроить BlueDevil и найти устройства Bluetooth. Также вы можете настроить BlueDevil через Системные Настройки KDE.
 +
 
 +
===Fluxbox, Openbox и другие WM===
 +
Конечно, вы можете использовать предшествующие приложения, даже если GNOME, Xfce или KDE не является вашим рабочим окружением. Этот список поможет вам выяснить, что делает конкретное приложение:
 +
* bluetooth-applet -- иконка трея с доступом к настройкам, управление известными устройствами
 +
* /usr/lib/gnome-user-share/gnome-user-share -- должен быть запущен, если вы хотите получать файлы через obexBT с устройств
 +
 
 +
Если вы получаете ошибку в процессе передачи и/или вы не получили файл, добавьте это в {{ic|/etc/dbus-1/system.d/bluetooth.conf}}:
 +
  <policy user="your_user_id">
 +
    <allow own="org.bluez"/>
 +
    <allow send_destination="org.bluez"/>
 +
    <allow send_interface="org.bluez.Agent"/>
 +
  </policy>
 +
 
 +
* bluetooth-wizard -- для новых присоединяемых устройств
 +
* bluetooth-properties -- доступно также через иконку настроек bluetooth-applet
 +
* gnome-file-share-properties -- разрешения на получение файлов через bluetooth
 +
* bluez-sendto -- графический интерфейс для отсылки файлов на удалённое устройство
 +
 
 +
==Ручная настройка==
 +
 
 +
Чтобы настроить BlueZ вручную, вам может потребоваться отредактировать конфигурационные файлы в {{ic|/etc/bluetooth}}:
 +
audio.conf
 +
input.conf
 +
main.conf
 +
network.conf
 +
rfcomm.conf
 +
 
 +
Конфигурация по умолчанию должна работать в большинстве случаев. Большинство настроек хорошо описано в этих файлах, так что настройка проста при чтении описаний опций. Для доступа к основным настройкам откройте {{ic|main.conf}}.
 +
 
 +
===Потоковое аудио===
 +
Если вы хотите получать потоковое аудио с вашего устройства на компьютер, вам необходимо отредактировать {{ic|audio.conf}} и добавить следующее в секцию {{ic|[General]}}:
 +
  Enable=Socket
 +
 
 +
==Сопряжение==
 +
Многие устройства bluetooth требуют [http://en.wikipedia.org/wiki/Bluetooth#Pairing сопряжение].
 +
Точные действия зависят от используемых устройств и их входной функциональности.
 +
 
 +
Действия на мобильном телефоне могут быть похожи на эти:
 +
* Компьютер посылает запрос соединения на телефон
 +
* pin, определённый компьютером, запрашивается телефоном
 +
* Тот же ключ должен быть введён в компьютере
 +
 
 +
Для сопряжения с устройством без использования пакета gnome-bluez может быть использована утилита ''bluez-simple-agent'', которая идёт с пакетом bluez. Эта утилита зависит от двух пакетов из репозитория [extra]:
 +
 
 +
# pacman -S python2-dbus python2-gobject
 +
 
 +
Сначала просканируйте внешние устройства:
 +
$ hcitool scan
 +
 
 +
Запустите скрипт от имени суперпользователя:
 +
 
 +
# bluez-simple-agent
 +
 
 +
Должно быть возвращено сообщение "Агент зарегистрирован", нажмите control-c для выхода.
 +
 
 +
Ниже представлен базовый пример сопряжения со специфическим устройством. Скрипт запросит код доступа, введите код и подтвердите операцию нажатием на enter.
 +
 
 +
# bluez-simple-agent hci0 00:11:22:33:AA:BB
 +
 
 +
{{note|bluez-simple-agent необходим лишь однажды для сопряжения с устройством, а не каждый раз, когда вы хотите подключиться}}
 +
 
 +
Смотрите раздел Примеры ниже для сопряжения с различными устройствами.
 +
 
 +
== Использование Obex для отсылки и получения файлов==
 +
Другим вариантом, в отличие от использования пакетов KDE или Gnome Bluetooth, является Obexfs, который позволяет вам примонтировать ваш телефон и использовать его как часть файловой системы. Заметьте, что для использования Obexfs вам необходимо устройство, которое поддерживает сервис Obex FTP.
 +
 
 +
Для установки:
 +
# pacman -S obexfs
 +
 
 +
После этого ваш телефон может быть примонтирован с помощью запуска от имени суперпользователя:
 +
# obexfs -b <devices mac address> /mountpoint
 +
 
 +
Для дополнительных опций монтирования смотрите http://dev.zuckschwerdt.org/openobex/wiki/ObexFs
 +
 
 +
Для устройств, которые не поддерживают сервис Obex FTP, проверьте поддержку Obex Object Push.
 +
 
 +
# sdptool browse XX:XX:XX:XX:XX:XX
 +
 
 +
Прочитайте вывод, просмотрите его на наличие Obex Object Push, запомните канал для этого сервиса. Если он поддерживается, вы можете использовать ussp-push для отсылки файлов на это устройство:
 +
 
 +
# ussp-push XX:XX:XX:XX:XX:XX@КАНАЛ файл желаемое_имя_файла_на_телефоне
 +
 
 +
==Примеры==
 +
 
 +
===Siemens S55===
 +
 
 +
Это то, что я сделал для соединения с моим S55 (я не знаю, как инициировать соединение с телефона):
 +
* Шаги для установки
 +
 +
  $> hcitool scan
 +
  Scanning ...
 +
          XX:XX:XX:XX:XX:XX  NAME
 +
  $> B=XX:XX:XX:XX:XX:XX
 +
Запустите simple-agent во втором терминале:
 +
  $> su -c bluez-simple-agent
 +
  Password:
 +
  Agent registered
 +
Вернитесь в первую консоль:
 +
  $> obexftp -b $B -l "Address book"
 +
  # Phone ask for pin, I enter it and answer yes when asked if I want to save the device
 +
  ...
 +
  <file name="5F07.adr" size="78712" modified="20030101T001858" user-perm="WD" group-perm="" />
 +
  ...
 +
  $> obexftp -b 00:01:E3:6B:FF:D7 -g "Address book/5F07.adr"
 +
  Browsing 00:01:E3:6B:FF:D7 ...
 +
  Channel: 5
 +
  Connecting...done
 +
  Receiving "Address book/5F07.adr"... Sending "Address book"... done
 +
  Disconnecting...done
 +
  $> obexftp -b 00:01:E3:6B:FF:D7 -p a                     
 +
  ...
 +
  Sending "a"... done
 +
  Disconnecting...done
 +
 
 +
===Logitech Mouse MX Laser / M555b===
 +
 
 +
Чтобы быстро протестировать соединение:
 +
 
 +
$> hidd --connect XX:XX:XX:XX:XX:XX
 +
 
 +
Для автоматического переподключения используйте ваш мастер для настройки мыши bluetooth. Если ваше рабочее окружение не включает поддержку этой задачи, смотрите [[Bluetooth mouse manual configuration|ручную настройку мыши Bluetooth]].
 +
 
 +
===Motorola V900===
 +
 
 +
После установки blueman и запуска blueman-applet нажмите "найти меня" В соединения -> bluetooth на устройстве motorla. В blueman-applet просканируйте устройства, найдите motorola, нажмите "добавить" в blueman-applet. Нажмите "связать" в blueman-applet, введите какой-либо pin, введите тот же pin в motorola, когда его спросят. В терминале:
 +
 
 +
  cd ~/
 +
  mkdir bluetooth-temp
 +
  obexfs -n xx:yy:zz:... ~/bluetooth-temp
 +
  cd ~/bluetooth-temp
 +
 
 +
и просматривайте... Только аудио, видео и изображения доступны, когда вы делаете так.
 +
 
 +
=== Motorola RAZ ===
 +
 
 +
> pacman -S obextool obexfs obexftp openobex bluez
 +
 
 +
> lsusb
 +
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
 +
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
 +
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
 +
Bus 002 Device 002: ID 03f0:171d Hewlett-Packard Wireless (Bluetooth + WLAN) Interface [Integrated Module]
 +
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
 +
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
 +
 
 +
> hciconfig hci0 up
 +
 
 +
> hciconfig
 +
hci0:  Type: BR/EDR  Bus: USB
 +
        BD Address: 00:16:41:97:BA:5E  ACL MTU: 1017:8  SCO MTU: 64:8
 +
        UP RUNNING
 +
        RX bytes:348 acl:0 sco:0 events:11 errors:0
 +
        TX bytes:38 acl:0 sco:0 commands:11 errors:0
 +
 
 +
> hcitool dev
 +
Devices:
 +
        hci0    00:16:41:97:BA:5E
 +
 
 +
'''Внимание: убедитесь, что bluetooth на вашем телефоне включён и телефон доступен!'''
 +
 
 +
> hcitool scan
 +
Scanning ...
 +
        00:1A:1B:82:9B:6D      [quirxi]
 +
 
 +
> hcitool inq
 +
Inquiring ...
 +
        00:1A:1B:82:9B:6D      clock offset: 0x1ee4    class: 0x522204
 +
 
 +
> l2ping 00:1A:1B:82:9B:6D
 +
Ping: 00:1A:1B:82:9B:6D from 00:16:41:97:BA:5E (data size 44) ...
 +
44 bytes from 00:1A:1B:82:9B:6D id 0 time 23.94ms
 +
44 bytes from 00:1A:1B:82:9B:6D id 1 time 18.85ms
 +
44 bytes from 00:1A:1B:82:9B:6D id 2 time 30.88ms
 +
44 bytes from 00:1A:1B:82:9B:6D id 3 time 18.88ms
 +
44 bytes from 00:1A:1B:82:9B:6D id 4 time 17.88ms
 +
44 bytes from 00:1A:1B:82:9B:6D id 5 time 17.88ms
 +
6 sent, 6 received, 0% loss
 +
 
 +
> hcitool name  00:1A:1B:82:9B:6D
 +
[quirxi]
 +
 
 +
# hciconfig -a hci0
 +
hci0:  Type: BR/EDR  Bus: USB
 +
        BD Address: 00:16:41:97:BA:5E  ACL MTU: 1017:8  SCO MTU: 64:8
 +
        UP RUNNING
 +
        RX bytes:9740 acl:122 sco:0 events:170 errors:0
 +
        TX bytes:2920 acl:125 sco:0 commands:53 errors:0
 +
        Features: 0xff 0xff 0x8d 0xfe 0x9b 0xf9 0x00 0x80
 +
        Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
 +
        Link policy:
 +
        Link mode: SLAVE ACCEPT
 +
        Name: 'BCM2045'
 +
        Class: 0x000000
 +
        Service Classes: Unspecified
 +
        Device Class: Miscellaneous,
 +
        HCI Version: 2.0 (0x3)  Revision: 0x204a
 +
        LMP Version: 2.0 (0x3)  Subversion: 0x4176
 +
        Manufacturer: Broadcoml / Corporation (15)
 +
 
 +
> hcitool info 00:1A:1B:82:9B:6D
 +
Requesting information ...
 +
        BD Address:  00:1A:1B:82:9B:6D
 +
        Device Name: [quirxi]
 +
        LMP Version: 1.2 (0x2) LMP Subversion: 0x309
 +
        Manufacturer: Broadcom Corporation (15)
 +
        Features: 0xff 0xfe 0x0d 0x00 0x08 0x08 0x00 0x00
 +
                <3-slot packets> <5-slot packets> <encryption> <slot offset>
 +
                <timing accuracy> <role switch> <hold mode> <sniff mode>
 +
                <RSSI> <channel quality> <SCO link> <HV2 packets>
 +
                <HV3 packets> <A-law log> <CVSD> <power control>
 +
                <transparent SCO> <AFH cap. slave> <AFH cap. master>
 +
 
 +
'''Отредактируйте ваш main.conf и введите правильный класс для вашего телефона ( Class = 0x100100 ):'''
 +
> vim /etc/bluetooth/main.conf
 +
 
 +
  # Default device class. Only the major and minor device class bits are
 +
  # considered.
 +
  #Class = 0x000100
 +
  Class =  0x100100
 +
 
 +
> /etc/rc.d/dbus start
 +
:: Starting D-BUS system messagebus
 +
[DONE]
 +
 
 +
> /etc/rc.d/bluetooth start
 +
:: Stopping bluetooth subsystem:  pand dund rfcomm hidd  bluetoothd
 +
[DONE]
 +
:: Starting bluetooth subsystem:  bluetoothd
 +
 
 +
'''Сопряжение с помощью bluez-simple-agent должно быть выполнено лишь однажды. На вашем телефоне motorola введите 0000 в качестве pin, когда телефон спросит об этом!!'''
 +
> /usr/bin/bluez-simple-agent hci0 00:1A:1B:82:9B:6D
 +
RequestPinCode (/org/bluez/10768/hci0/dev_00_1A_1B_82_9B_6D)
 +
Enter PIN Code: 0000
 +
Release
 +
New device (/org/bluez/10768/hci0/dev_00_1A_1B_82_9B_6D)
 +
 
 +
'''Теперь вы можете просматривать файловую систему на вашем телефоне с помощью obexftp:'''
 +
> obexftp -v -b 00:1A:1B:82:9B:6D -B 9 -l
 +
Connecting..\done
 +
Tried to connect for 448ms
 +
Receiving "(null)"...-<?xml version="1.0" ?>
 +
<!DOCTYPE folder-listing SYSTEM "obex-folder-listing.dtd">
 +
<folder-listing>
 +
<parent-folder />
 +
<folder name="audio" size="0" type="folder" modified="20101010T132323Z" user-perm="RW" />
 +
<folder name="video" size="0" type="folder" modified="20101010T132323Z" user-perm="RW" />
 +
<folder name="picture" size="0" type="folder" modified="20101010T132323Z" user-perm="RW" />
 +
</folder-listing>
 +
done
 +
Disconnecting..\done
 +
 
 +
'''Или вы можете примонтировать ваш телефон в каталог на компьютере и использовать как обычную файловую систему:'''
 +
 
 +
> groupadd bluetooth
 +
> mkdir /mnt/bluetooth
 +
> chown root:bluetooth /mnt/bluetooth
 +
> chmod 775 /mnt/bluetooth
 +
> usermod -a -G bluetooth arno
 +
 
 +
> obexfs -b 00:1A:1B:82:9B:6D /mnt/bluetooth/
 +
> l /mnt/bluetooth/
 +
total 6
 +
drwxr-xr-x 1 root root    0 10. Okt 13:25 .
 +
drwxr-xr-x 5 root root 4096 10. Okt 10:08 ..
 +
drwxr-xr-x 1 root root    0 10. Okt 2010  audio
 +
drwxr-xr-x 1 root root    0 10. Okt 2010  picture
 +
drwxr-xr-x 1 root root    0 10. Okt 2010  video
 +
 
 +
===Сопряжение с iPhone с использованием bluez-simple-agent===
 +
 
 +
Предполагается устройство bluetooth под именем hci0 и iPhone, который показан в сканировании hcitool как '00:00:DE:AD:BE:EF':
 +
 
 +
    # bluez-simple-agent hci0 00:00:DE:AD:BE:EF
 +
    Passcode:
 +
 
 +
===Наушники и устройства Alsa===
 +
1. Сперва установите bluez, если вы этого ещё не сделали
 +
# pacman -S bluez
 +
2. Просканируйте на наличие вашего устройства
 +
$ hcitool (-i <optional hci#>***) scan
 +
3. Создайте сопряжение ваших наушников и устройства
 +
$ bluez-simple-agent (optional hci# ***) XX:XX:XX:XX:XX:XX
 +
  и введите ваш pin (0000 или 1234, например)
 +
4. Добавьте это в ваш файл /etc/asound.conf
 +
#/etc/asound.conf
 +
 +
pcm.btheadset {
 +
    type plug
 +
    slave {
 +
        pcm {
 +
            type bluetooth
 +
            device XX:XX:XX:XX:XX:XX
 +
            profile "auto"
 +
        } 
 +
    } 
 +
    hint {
 +
        show on
 +
        description "BT Headset"
 +
    } 
 +
}
 +
ctl.btheadset {
 +
  type bluetooth
 +
 +
 
 +
5. Проверьте, что было добавлено в устройства alsa
 +
$ aplay -L
 +
 
 +
6. Теперь воспроизведите с помощью aplay:
 +
$ aplay -D btheadset /path/to/audio/file
 +
 
 +
или Mplayer:
 +
$ mplayer -ao alsa:device=btheadset /path/to/audio/or/video/file
 +
 
 +
*** Чтобы найти hci# для ключа usb, введите
 +
$ hcitool dev
 +
 
 +
==Поиск и устранение неисправностей==
 +
 
 +
===Сегментации в Bluez 4.95 ===
 +
Если bluetoothd прекращает работу после включения или выключения вашего устройства bluetooth через rfkill или апплет gnome-bluetooth, смотрите ваш вывод dmesg. Если он выглядит как этот:
 +
 
 +
bluetoothd[2330]: segfault at 1 ip 00007fcef2327b75 sp 00007fff9f769cb0 error 4 in libglib-2.0.so.0.2800.8[7fcef22ca000+e9000]
 +
 
 +
вам необходимо откатиться на версию 4.94 или дождаться обновления bluez. [https://bugs.archlinux.org/task/25088?project=1&openedfrom=-1+week Здесь] есть (arch) баг репорт об этом.
 +
 
 +
===passkey-agent===
 +
$> passkey-agent --default 1234
 +
Can't register passkey agent
 +
The name org.bluez was not provided by any .service files
 +
Вероятно, вы запустили {{ic|/etc/rc.d/bluetooth}} перед {{ic|/etc/rc.d/dbus}}
 +
$> hciconfig dev
 +
# (no listing)
 +
Попробуйте запустить {{ic|hciconfig hc0 up}}
 +
 
 +
=== Blueman ===
 +
Если blueman-applet не запускается, попробуйте удалить каталог ''/var/lib/bluetooth'' и перезапустить машину (или только сервисы hal, dbus и bluetooth).
 +
# rm -rf /var/lib/bluetooth
 +
# reboot
 +
 
 +
===gnome-bluetooth===
 +
Если вы видите это при попытке включить получение файлов в настройках bluetooth:
 +
  Bluetooth OBEX start failed: Invalid path
 +
  Bluetooth FTP start failed: Invalid path
 +
Выполните:
 +
  # pacman -S xdg-user-dirs
 +
  $ xdg-user-dirs-update
 +
Вы можете отредактировать пути с использованием:
 +
  $ vi ~/.config/user-dirs.dirs
 +
 
 +
===Ключ Bluetooth USB===
 +
Если вы используете ключ USB, вы должны проверить, что ваш ключ Bluetooth признан. Вы можете сделать это, проверив {{ic|/var/log/messages.log}}, когда подключаете ключ USB (или запустив {{ic|journalctl -f}} при использовании systemd). Должно появиться что-то вроде следующего (смотрите hci):
 +
 
 +
# tail -f /var/log/messages.log
 +
  Feb 20 15:00:24 hostname kernel: [ 2661.349823] usb 4-1: new full-speed USB device number 3 using uhci_hcd
 +
  Feb 20 15:00:24 hostname bluetoothd[4568]: HCI dev 0 registered
 +
  Feb 20 15:00:24 hostname bluetoothd[4568]: Listening for HCI events on hci0
 +
  Feb 20 15:00:25 hostname bluetoothd[4568]: HCI dev 0 up
 +
  Feb 20 15:00:25 hostname bluetoothd[4568]: Adapter /org/bluez/4568/hci0 has been enabled
 +
 
 +
Если вы получили только первые две линии, вы можете посмотреть, нашёл ли он устройство, но вам необходимо поднять его.
 +
Пример:
 +
 
 +
hciconfig -a hci0
 +
hci0: Type: USB
 +
BD Address: 00:00:00:00:00:00 ACL MTU: 0:0 SCO MTU: 0:0
 +
DOWN
 +
RX bytes:0 acl:0 sco:0 events:0 errors:0
 +
TX bytes:0 acl:0 sco:0 commands:0 errors:
 +
sudo hciconfig hci0 up
 +
hciconfig -a hci0
 +
hci0: Type: USB
 +
BD Address: 00:02:72:C4:7C:06 ACL MTU: 377:10 SCO MTU: 64:8
 +
UP RUNNING
 +
RX bytes:348 acl:0 sco:0 events:11 errors:0
 +
TX bytes:38 acl:0 sco:0 commands:11 errors:0
 +
 
 +
Если оно не удаётся с ошибкой вроде этой:
 +
Operation not possible due to RF-kill
 +
обратитесь к утилите {{ic|rfkill}}:
 +
# rfkill unblock all
 +
или может быть простое аппаратное переключение компьютера. Аппаратный переключатель bluetooth также контролирует доступ к ключам USB. Щёлкните/нажмите этот переключатель и попробуйте поднять устройство заново.
 +
 
 +
Чтобы убедиться, что устройство было определено, вы можете использовать {{ic|hcitool}}, являющуюся частью {{ic|bluez-utils}}. Вы можете получить список доступных устройств, их идентификаторов и MAC-адресов, используя:
 +
 
 +
$ hcitool dev
 +
Devices:
 +
        hci0 00:1B:DC:0F:DB:40
 +
 
 +
Более детальная информация об устройстве может быть получена с помощью {{ic|hciconfig}}.
 +
 
 +
$ hciconfig -a hci0
 +
hci0:  Type: USB
 +
        BD Address: 00:1B:DC:0F:DB:40 ACL MTU: 310:10 SCO MTU: 64:8
 +
        UP RUNNING PSCAN ISCAN
 +
        RX bytes:1226 acl:0 sco:0 events:27 errors:0
 +
        TX bytes:351 acl:0 sco:0 commands:26 errors:0
 +
        Features: 0xff 0xff 0x8f 0xfe 0x9b 0xf9 0x00 0x80
 +
        Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
 +
        Link policy: RSWITCH HOLD SNIFF PARK
 +
        Link mode: SLAVE ACCEPT
 +
        Name: 'BlueZ (0)'
 +
        Class: 0x000100
 +
        Service Classes: Unspecified
 +
        Device Class: Computer, Uncategorized
 +
        HCI Ver: 2.0 (0x3) HCI Rev: 0xc5c LMP Ver: 2.0 (0x3) LMP Subver: 0xc5c
 +
        Manufacturer: Cambridge Silicon Radio (10)
 +
 
 +
===Ключ Logitech Bluetooth USB===
 +
Существуют ключи Logitech (Logitech MX5000), которые могут работать в двух режимах: встроенный и HCI. Во встроенном режиме ключ эмулирует устройство USB так, что вашему компьютеру кажется, что вы используете обычную USB мышь/клавиатуру.
 +
 
 +
Если вы нажмёте маленькую красную кнопку на USB BT мини-ресивере, включится другой режим. Удерживайте красную кнопку на ключе BT и подключите к компьютеру, и через 3-5 секунд удерживания кнопки в системном трее появится иконка Bluetooth ([http://ubuntuforums.org/showthread.php?t=1332197 Обсуждение]).
 +
 
 +
===hcitool scan: Устройство не найдено===
 +
* На некоторых ноутбуках Dell (например, Studio 15) вы должны переключить режим Bluetooth в HID на HCI используя
 +
# hid2hci
 +
 
 +
* Если устройство не появится и вы используете на своей машине операционную систему Windows, попробуйте загрузить её и включить адаптер bluetooth в windows
 +
 
 +
* Иногда также помогает эта простая команда:
 +
# hciconfig hci0 up
 +
 
 +
===Мой компьютер невидим===
 +
Не можете обозревать компьютер с вашего телефона? Включите PSCAN и ISCAN:
 +
# enable PSCAN and ISCAN
 +
$ hciconfig hci0 piscan
 +
# check it worked
 +
$ hciconfig
 +
hci0:  Type: USB
 +
        BD Address: 00:12:34:56:78:9A ACL MTU: 192:8 SCO MTU: 64:8
 +
        '''UP RUNNING PSCAN ISCAN'''
 +
        RX bytes:20425 acl:115 sco:0 events:526 errors:0
 +
        TX bytes:5543 acl:84 sco:0 commands:340 errors:0
 +
 
 +
{{Note | Проверьте DiscoverableTimeout и PairableTimeout в /etc/bluetooth/main.conf}}
 +
 
 +
Попробуйте изменить класс устройства в /etc/bluetooth/main.conf как здесь
 +
# Default device class. Only the major and minor device class bits are
 +
# considered.
 +
#Class = 0x000100 (from default config)
 +
Class = 0x100100
 +
 
 +
Это было единственное решение, сделавшее мой компьютер видимым для телефона.
 +
 
 +
===Nautilus не может обозревать файлы===
 +
Если nautilus не открывает и показывает эту ошибку:
 +
Nautilus cannot handle obex: locations. Couldn't display "obex://[XX:XX:XX:XX:XX:XX]/".
 +
Установите пакет gvfs-obexftp:
 +
# pacman -S gvfs-obexftp
 +
 
 +
===Проблемы подключения наушников Sennheiser MM400===
 +
Если ваши {{ic|наушники Sennheiser MM400}} немедленно отключаются после присоединения {{ic|Headset Service}} в Blueman, попробуйте присоединить их как {{ic|Audio Sink}}. Потом вы можете изменить {{ic|Audio Profile}} наушников на {{ic|Telephony Duplex}} с помощью щелчка правой кнопкой мыши по Blueman.
 +
 
 +
===Моё устройство сопряжено, но звук не воспроизводится===
 +
Сначала просмотрите '''/var/log/messages.log'''
 +
{{bc|# tail /var/log/messages.log
 +
Jan 12 20:08:58 localhost pulseaudio[1584]: [pulseaudio] module-bluetooth-device.c: Service not connected
 +
Jan 12 20:08:58 localhost pulseaudio[1584]: [pulseaudio] module-bluetooth-device.c: Bluetooth audio service not available}}
 +
 
 +
Если вы видите подобные сообщения, попробуйте:
 +
{{bc|# pactl load-module module-bluetooth-device}}
 +
 
 +
Если модуль не запускается, сделайте следующее:
 +
Откройте '''/etc/bluetooth/audio.conf''' и добавьте после '''[General]''' (на новой строке)
 +
{{bc|Enable&#61;Socket}}
 +
Затем перезапустите демон bluetooth с помощью {{ic|/etc/rc.d/bluetooth restart}}.
 +
Сопрягите опять ваше устройство, и вы найдёте его в настройках pulseaudio (дополнительные настройки звука).
  
=== gnome-bluetooth ===
+
[http://wiki.gentoo.org/index.php?title=Bluetooth_Headset&redirect=no Больше информации в Gentoo Wiki]
  
[http://live.gnome.org/GnomeBluetooth gnome-bluetooth] это форк старого пакета ''bluez-gnome'', ориентированный на интеграцию со средой GNOME. Для начала, установите пакет командой:
+
Если после этого у вас по-прежнему нет звука, попробуйте использовать blueman (это единственное, что работает у меня), убедитесь, что установлен notify-osd или он может показывать сообщения об ошибках вроде этого: "Stream setup failed"
# pacman -S gnome-bluetooth
+
  
Невероятно, но команда ''bluetooth-applet'' запускает апплет Bluetooth. Теперь вы можете настраивать устройства Bluetooth и пересылать файлы правым кликом на иконке в трее. Для запуска апплета при входе в систему, добавьте его в ''Система -> Параметры -> Запускаемые приложения''.
+
fail (/usr/lib/python2.7/site-packages/blueman/gui/manager/ManagerDeviceMenu.py:134)
 +
fail (DBusException(dbus.String(u'Stream setup failed'),),)
  
Как добавить пункт "отправить по bluetooth" в меню свойств файла Thunar'а, смотрите здесь: http://thunar.xfce.org/pwiki/documentation/sendto_menu
+
==Смотрите также==
 +
*[http://www.gentoo.org/doc/en/bluetooth-guide.xml Gentoo Linux Bluetooth Guide]
 +
*[http://en.opensuse.org/HCL:Bluetooth openSUSE Bluetooth Hardware Compatibility List]
 +
*[http://linuxgazette.net/109/oregan3.html Accessing a Bluetooth phone (Linux Gazette)]
 +
*[http://www.adamish.com/blog/#a000361 Bluetooth computer visibility]

Revision as of 12:02, 31 January 2013


Bluetooth является стандартом для беспроводных соединений малой дальности сотовых телефонов, компьютеров и других электронных устройств. В Linux реализацией стека протоколов Bluetooth от canonical является BlueZ.

Установка

Для использования Bluetooth установите bluez, доступный в официальных репозиториях. После установки пакета должны быть запущены оба демона dbus и bluetooth, именно в этом порядке.

Note: Важно, что dbus запускается перед bluetooth

Демон dbus используется для чтения настроек, тогда как демон bluetooth необходим для протокола Bluetooth.

Чтобы запустить/перезапустить/остановить демон вручную, используйте следующее:

# rc.d {start|stop|restart} bluetooth

Если вы используете systemd (Русский), вам необходимо включить сервис bluetooth:

# systemctl enable bluetooth.service
# systemctl start bluetooth.service

Графические надстройки

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

Blueman

Blueman - полнофункциональный менеджер Bluetooth, написанный на GTK и поэтому рекомендуемый для сред GNOME (Русский) и Xfce (Русский). Установка через pacman:

# pacman -S blueman

Убедитесь, что демон bluetooth запущен, как описано выше, и затем запустите blueman-applet. Чтобы апплет запускался автоматически при входе, добавьте запуск blueman-applet в Система -> Параметры -> Запускаемые приложения (GNOME) или Меню Xfce -> Настройки -> Сессия и Автозапуск (Xfce).

Чтобы какой-либо пользователь мог добавлять устройства Bluetooth и управлять ими, используя Blueman, он должен быть добавлен в группу 'lp'. Смотрите /etc/dbus-1/system.d/bluetooth.conf в секции, позволяющей пользователям группы 'lp' связываться с демоном Bluetooth.

Note: Если Blueman работает вне GNOME/GDM (например, в Xfce с использованием команды startx), вы должны добавить . /etc/X11/xinit/xinitrc.d/* сверху вашего ~/.xinitrc, чтобы Nautilus был способен видеть ваши устройства

Для получения файлов не забудьте нажать правой кнопкой мыши на "Иконке трея Blueman -> Локальные Сервисы -> Передача -> Получение Файла" и отметить "Включено".

Скрипт для Thunar

Если вы используете не Nautilus (например, Thunar), данный скрипт может быть вам полезен:

obex_thunar.sh
 #!/bin/bash
 fusermount -u ~/bluetooth
 obexfs -b $1 ~/bluetooth
 thunar ~/bluetooth

Теперь вам нужно будет переместить скрипт в соответствующее место (например, /usr/bin). После этого отметьте его как исполняемый:

chmod +x /usr/bin/obex_thunar.sh

Последний шаг - изменить линию в Иконке трея Blueman -> Локальные Сервисы -> Передача -> Дополнительно на obex_thunar.sh %d.

Gnome Bluetooth

gnome-bluetooth - форк старого пакета bluez-gnome, ориентированный на интеграцию со средой GNOME (Русский). GNOME Bluetooth требуется для работы gnome-shell, так что он уже должен быть у вас установлен, если вы используете GNOME 3. Если это не так, он может быть установлен с пакетом gnome-bluetooth.

Запустите bluetooth-applet - это приятный апплет Bluetooth. Теперь вы сможете настраивать устройства и пересылать файлы с помощью нажатия правой кнопкой мыши на иконку Bluetooth. Чтобы апплет запускался при входе в систему, добавьте его в Система -> Параметры -> Запускаемые приложения.

Чтобы добавить пункт меню Bluetooth в SendTo в меню свойств Thunar'а, смотрите инструкции здесь.

BlueDevil

Инструмент Bluetooth в KDE (Русский) - BlueDevil. Он может быть установлен с пакетом bluedevil, доступным в официальных репозиториях.

Удостоверьтесь, что демон bluetooth запущен, как описано выше. У вас должны быть иконки Bluetooth и в Dolphin, и в системном трее, нажав на которые вы можете настроить BlueDevil и найти устройства Bluetooth. Также вы можете настроить BlueDevil через Системные Настройки KDE.

Fluxbox, Openbox и другие WM

Конечно, вы можете использовать предшествующие приложения, даже если GNOME, Xfce или KDE не является вашим рабочим окружением. Этот список поможет вам выяснить, что делает конкретное приложение:

  • bluetooth-applet -- иконка трея с доступом к настройкам, управление известными устройствами
  • /usr/lib/gnome-user-share/gnome-user-share -- должен быть запущен, если вы хотите получать файлы через obexBT с устройств

Если вы получаете ошибку в процессе передачи и/или вы не получили файл, добавьте это в /etc/dbus-1/system.d/bluetooth.conf:

 <policy user="your_user_id">
   <allow own="org.bluez"/>
   <allow send_destination="org.bluez"/>
   <allow send_interface="org.bluez.Agent"/>
 </policy>
  • bluetooth-wizard -- для новых присоединяемых устройств
  • bluetooth-properties -- доступно также через иконку настроек bluetooth-applet
  • gnome-file-share-properties -- разрешения на получение файлов через bluetooth
  • bluez-sendto -- графический интерфейс для отсылки файлов на удалённое устройство

Ручная настройка

Чтобы настроить BlueZ вручную, вам может потребоваться отредактировать конфигурационные файлы в /etc/bluetooth:

audio.conf
input.conf
main.conf
network.conf
rfcomm.conf

Конфигурация по умолчанию должна работать в большинстве случаев. Большинство настроек хорошо описано в этих файлах, так что настройка проста при чтении описаний опций. Для доступа к основным настройкам откройте main.conf.

Потоковое аудио

Если вы хотите получать потоковое аудио с вашего устройства на компьютер, вам необходимо отредактировать audio.conf и добавить следующее в секцию [General]:

 Enable=Socket

Сопряжение

Многие устройства bluetooth требуют сопряжение. Точные действия зависят от используемых устройств и их входной функциональности.

Действия на мобильном телефоне могут быть похожи на эти:

  • Компьютер посылает запрос соединения на телефон
  • pin, определённый компьютером, запрашивается телефоном
  • Тот же ключ должен быть введён в компьютере

Для сопряжения с устройством без использования пакета gnome-bluez может быть использована утилита bluez-simple-agent, которая идёт с пакетом bluez. Эта утилита зависит от двух пакетов из репозитория [extra]:

# pacman -S python2-dbus python2-gobject 

Сначала просканируйте внешние устройства:

$ hcitool scan

Запустите скрипт от имени суперпользователя:

# bluez-simple-agent

Должно быть возвращено сообщение "Агент зарегистрирован", нажмите control-c для выхода.

Ниже представлен базовый пример сопряжения со специфическим устройством. Скрипт запросит код доступа, введите код и подтвердите операцию нажатием на enter.

# bluez-simple-agent hci0 00:11:22:33:AA:BB
Note: bluez-simple-agent необходим лишь однажды для сопряжения с устройством, а не каждый раз, когда вы хотите подключиться

Смотрите раздел Примеры ниже для сопряжения с различными устройствами.

Использование Obex для отсылки и получения файлов

Другим вариантом, в отличие от использования пакетов KDE или Gnome Bluetooth, является Obexfs, который позволяет вам примонтировать ваш телефон и использовать его как часть файловой системы. Заметьте, что для использования Obexfs вам необходимо устройство, которое поддерживает сервис Obex FTP.

Для установки:

# pacman -S obexfs

После этого ваш телефон может быть примонтирован с помощью запуска от имени суперпользователя:

# obexfs -b <devices mac address> /mountpoint

Для дополнительных опций монтирования смотрите http://dev.zuckschwerdt.org/openobex/wiki/ObexFs

Для устройств, которые не поддерживают сервис Obex FTP, проверьте поддержку Obex Object Push.

# sdptool browse XX:XX:XX:XX:XX:XX

Прочитайте вывод, просмотрите его на наличие Obex Object Push, запомните канал для этого сервиса. Если он поддерживается, вы можете использовать ussp-push для отсылки файлов на это устройство:

# ussp-push XX:XX:XX:XX:XX:XX@КАНАЛ файл желаемое_имя_файла_на_телефоне

Примеры

Siemens S55

Это то, что я сделал для соединения с моим S55 (я не знаю, как инициировать соединение с телефона):

  • Шаги для установки
  $> hcitool scan
  Scanning ...
          XX:XX:XX:XX:XX:XX  NAME
  $> B=XX:XX:XX:XX:XX:XX

Запустите simple-agent во втором терминале:

  $> su -c bluez-simple-agent 
  Password: 
  Agent registered

Вернитесь в первую консоль:

  $> obexftp -b $B -l "Address book"
  # Phone ask for pin, I enter it and answer yes when asked if I want to save the device
  ...
  <file name="5F07.adr" size="78712" modified="20030101T001858" user-perm="WD" group-perm="" />
  ...
  $> obexftp -b 00:01:E3:6B:FF:D7 -g "Address book/5F07.adr"
  Browsing 00:01:E3:6B:FF:D7 ...
  Channel: 5
  Connecting...done
  Receiving "Address book/5F07.adr"... Sending "Address book"... done
  Disconnecting...done
  $> obexftp -b 00:01:E3:6B:FF:D7 -p a                      
  ...
  Sending "a"... done
  Disconnecting...done

Logitech Mouse MX Laser / M555b

Чтобы быстро протестировать соединение:

$> hidd --connect XX:XX:XX:XX:XX:XX

Для автоматического переподключения используйте ваш мастер для настройки мыши bluetooth. Если ваше рабочее окружение не включает поддержку этой задачи, смотрите ручную настройку мыши Bluetooth.

Motorola V900

После установки blueman и запуска blueman-applet нажмите "найти меня" В соединения -> bluetooth на устройстве motorla. В blueman-applet просканируйте устройства, найдите motorola, нажмите "добавить" в blueman-applet. Нажмите "связать" в blueman-applet, введите какой-либо pin, введите тот же pin в motorola, когда его спросят. В терминале:

  cd ~/
  mkdir bluetooth-temp
  obexfs -n xx:yy:zz:... ~/bluetooth-temp
  cd ~/bluetooth-temp

и просматривайте... Только аудио, видео и изображения доступны, когда вы делаете так.

Motorola RAZ

> pacman -S obextool obexfs obexftp openobex bluez
> lsusb
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 002: ID 03f0:171d Hewlett-Packard Wireless (Bluetooth + WLAN) Interface [Integrated Module]
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
> hciconfig hci0 up
> hciconfig
hci0:   Type: BR/EDR  Bus: USB
        BD Address: 00:16:41:97:BA:5E  ACL MTU: 1017:8  SCO MTU: 64:8
        UP RUNNING
        RX bytes:348 acl:0 sco:0 events:11 errors:0
        TX bytes:38 acl:0 sco:0 commands:11 errors:0
> hcitool dev
Devices:
        hci0    00:16:41:97:BA:5E

Внимание: убедитесь, что bluetooth на вашем телефоне включён и телефон доступен!

> hcitool scan
Scanning ...
        00:1A:1B:82:9B:6D       [quirxi]
> hcitool inq
Inquiring ...
        00:1A:1B:82:9B:6D       clock offset: 0x1ee4    class: 0x522204
> l2ping 00:1A:1B:82:9B:6D
Ping: 00:1A:1B:82:9B:6D from 00:16:41:97:BA:5E (data size 44) ...
44 bytes from 00:1A:1B:82:9B:6D id 0 time 23.94ms
44 bytes from 00:1A:1B:82:9B:6D id 1 time 18.85ms
44 bytes from 00:1A:1B:82:9B:6D id 2 time 30.88ms
44 bytes from 00:1A:1B:82:9B:6D id 3 time 18.88ms
44 bytes from 00:1A:1B:82:9B:6D id 4 time 17.88ms
44 bytes from 00:1A:1B:82:9B:6D id 5 time 17.88ms
6 sent, 6 received, 0% loss
> hcitool name  00:1A:1B:82:9B:6D
[quirxi]
# hciconfig -a hci0
hci0:   Type: BR/EDR  Bus: USB
        BD Address: 00:16:41:97:BA:5E  ACL MTU: 1017:8  SCO MTU: 64:8
        UP RUNNING
        RX bytes:9740 acl:122 sco:0 events:170 errors:0
        TX bytes:2920 acl:125 sco:0 commands:53 errors:0
        Features: 0xff 0xff 0x8d 0xfe 0x9b 0xf9 0x00 0x80
        Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
        Link policy:
        Link mode: SLAVE ACCEPT
        Name: 'BCM2045'
        Class: 0x000000
        Service Classes: Unspecified
        Device Class: Miscellaneous,
        HCI Version: 2.0 (0x3)  Revision: 0x204a
        LMP Version: 2.0 (0x3)  Subversion: 0x4176
        Manufacturer: Broadcoml / Corporation (15)
> hcitool info 00:1A:1B:82:9B:6D
Requesting information ...
        BD Address:  00:1A:1B:82:9B:6D
        Device Name: [quirxi]
        LMP Version: 1.2 (0x2) LMP Subversion: 0x309
        Manufacturer: Broadcom Corporation (15)
        Features: 0xff 0xfe 0x0d 0x00 0x08 0x08 0x00 0x00
                <3-slot packets> <5-slot packets> <encryption> <slot offset>
                <timing accuracy> <role switch> <hold mode> <sniff mode>
                <RSSI> <channel quality> <SCO link> <HV2 packets>
                <HV3 packets> <A-law log> <CVSD> <power control>
                <transparent SCO> <AFH cap. slave> <AFH cap. master>

Отредактируйте ваш main.conf и введите правильный класс для вашего телефона ( Class = 0x100100 ):

> vim /etc/bluetooth/main.conf
  # Default device class. Only the major and minor device class bits are
  # considered.
  #Class = 0x000100
  Class =  0x100100
> /etc/rc.d/dbus start
:: Starting D-BUS system messagebus 
[DONE]
> /etc/rc.d/bluetooth start
:: Stopping bluetooth subsystem:  pand dund rfcomm hidd  bluetoothd
[DONE]
:: Starting bluetooth subsystem:  bluetoothd

Сопряжение с помощью bluez-simple-agent должно быть выполнено лишь однажды. На вашем телефоне motorola введите 0000 в качестве pin, когда телефон спросит об этом!!

> /usr/bin/bluez-simple-agent hci0 00:1A:1B:82:9B:6D
RequestPinCode (/org/bluez/10768/hci0/dev_00_1A_1B_82_9B_6D)
Enter PIN Code: 0000
Release
New device (/org/bluez/10768/hci0/dev_00_1A_1B_82_9B_6D)

Теперь вы можете просматривать файловую систему на вашем телефоне с помощью obexftp:

> obexftp -v -b 00:1A:1B:82:9B:6D -B 9 -l
Connecting..\done
Tried to connect for 448ms
Receiving "(null)"...-<?xml version="1.0" ?>
<!DOCTYPE folder-listing SYSTEM "obex-folder-listing.dtd">
<folder-listing>
<parent-folder />
<folder name="audio" size="0" type="folder" modified="20101010T132323Z" user-perm="RW" />
<folder name="video" size="0" type="folder" modified="20101010T132323Z" user-perm="RW" />
<folder name="picture" size="0" type="folder" modified="20101010T132323Z" user-perm="RW" />
</folder-listing>
done
Disconnecting..\done

Или вы можете примонтировать ваш телефон в каталог на компьютере и использовать как обычную файловую систему:

> groupadd bluetooth
> mkdir /mnt/bluetooth
> chown root:bluetooth /mnt/bluetooth
> chmod 775 /mnt/bluetooth
> usermod -a -G bluetooth arno
> obexfs -b 00:1A:1B:82:9B:6D /mnt/bluetooth/
> l /mnt/bluetooth/
total 6
drwxr-xr-x 1 root root    0 10. Okt 13:25 .
drwxr-xr-x 5 root root 4096 10. Okt 10:08 ..
drwxr-xr-x 1 root root    0 10. Okt 2010  audio
drwxr-xr-x 1 root root    0 10. Okt 2010  picture
drwxr-xr-x 1 root root    0 10. Okt 2010  video

Сопряжение с iPhone с использованием bluez-simple-agent

Предполагается устройство bluetooth под именем hci0 и iPhone, который показан в сканировании hcitool как '00:00:DE:AD:BE:EF':

   # bluez-simple-agent hci0 00:00:DE:AD:BE:EF
   Passcode:

Наушники и устройства Alsa

1. Сперва установите bluez, если вы этого ещё не сделали

# pacman -S bluez

2. Просканируйте на наличие вашего устройства

$ hcitool (-i <optional hci#>***) scan

3. Создайте сопряжение ваших наушников и устройства

$ bluez-simple-agent (optional hci# ***) XX:XX:XX:XX:XX:XX
  и введите ваш pin (0000 или 1234, например)

4. Добавьте это в ваш файл /etc/asound.conf

#/etc/asound.conf

pcm.btheadset {
   type plug
   slave {
       pcm {
           type bluetooth
           device XX:XX:XX:XX:XX:XX 
           profile "auto"
       }   
   }   
   hint {
       show on
       description "BT Headset"
   }   
}
ctl.btheadset {
  type bluetooth
}  

5. Проверьте, что было добавлено в устройства alsa

$ aplay -L

6. Теперь воспроизведите с помощью aplay:

$ aplay -D btheadset /path/to/audio/file
  

или Mplayer:

$ mplayer -ao alsa:device=btheadset /path/to/audio/or/video/file
      • Чтобы найти hci# для ключа usb, введите
$ hcitool dev

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

Сегментации в Bluez 4.95

Если bluetoothd прекращает работу после включения или выключения вашего устройства bluetooth через rfkill или апплет gnome-bluetooth, смотрите ваш вывод dmesg. Если он выглядит как этот:

bluetoothd[2330]: segfault at 1 ip 00007fcef2327b75 sp 00007fff9f769cb0 error 4 in libglib-2.0.so.0.2800.8[7fcef22ca000+e9000]

вам необходимо откатиться на версию 4.94 или дождаться обновления bluez. Здесь есть (arch) баг репорт об этом.

passkey-agent

$> passkey-agent --default 1234
Can't register passkey agent
The name org.bluez was not provided by any .service files

Вероятно, вы запустили /etc/rc.d/bluetooth перед /etc/rc.d/dbus

$> hciconfig dev
# (no listing)

Попробуйте запустить hciconfig hc0 up

Blueman

Если blueman-applet не запускается, попробуйте удалить каталог /var/lib/bluetooth и перезапустить машину (или только сервисы hal, dbus и bluetooth).

# rm -rf /var/lib/bluetooth
# reboot

gnome-bluetooth

Если вы видите это при попытке включить получение файлов в настройках bluetooth:

 Bluetooth OBEX start failed: Invalid path
 Bluetooth FTP start failed: Invalid path

Выполните:

 # pacman -S xdg-user-dirs
 $ xdg-user-dirs-update

Вы можете отредактировать пути с использованием:

 $ vi ~/.config/user-dirs.dirs

Ключ Bluetooth USB

Если вы используете ключ USB, вы должны проверить, что ваш ключ Bluetooth признан. Вы можете сделать это, проверив /var/log/messages.log, когда подключаете ключ USB (или запустив journalctl -f при использовании systemd). Должно появиться что-то вроде следующего (смотрите hci):

# tail -f /var/log/messages.log
 Feb 20 15:00:24 hostname kernel: [ 2661.349823] usb 4-1: new full-speed USB device number 3 using uhci_hcd
 Feb 20 15:00:24 hostname bluetoothd[4568]: HCI dev 0 registered
 Feb 20 15:00:24 hostname bluetoothd[4568]: Listening for HCI events on hci0
 Feb 20 15:00:25 hostname bluetoothd[4568]: HCI dev 0 up
 Feb 20 15:00:25 hostname bluetoothd[4568]: Adapter /org/bluez/4568/hci0 has been enabled

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

hciconfig -a hci0
hci0:	Type: USB
	BD Address: 00:00:00:00:00:00 ACL MTU: 0:0 SCO MTU: 0:0
	DOWN 
	RX bytes:0 acl:0 sco:0 events:0 errors:0
	TX bytes:0 acl:0 sco:0 commands:0 errors:
sudo hciconfig hci0 up
hciconfig -a hci0
hci0:	Type: USB
	BD Address: 00:02:72:C4:7C:06 ACL MTU: 377:10 SCO MTU: 64:8
	UP RUNNING 
	RX bytes:348 acl:0 sco:0 events:11 errors:0
	TX bytes:38 acl:0 sco:0 commands:11 errors:0

Если оно не удаётся с ошибкой вроде этой:

Operation not possible due to RF-kill

обратитесь к утилите rfkill:

# rfkill unblock all

или может быть простое аппаратное переключение компьютера. Аппаратный переключатель bluetooth также контролирует доступ к ключам USB. Щёлкните/нажмите этот переключатель и попробуйте поднять устройство заново.

Чтобы убедиться, что устройство было определено, вы можете использовать hcitool, являющуюся частью bluez-utils. Вы можете получить список доступных устройств, их идентификаторов и MAC-адресов, используя:

$ hcitool dev
Devices:
        hci0	00:1B:DC:0F:DB:40

Более детальная информация об устройстве может быть получена с помощью hciconfig.

$ hciconfig -a hci0
hci0:   Type: USB
        BD Address: 00:1B:DC:0F:DB:40 ACL MTU: 310:10 SCO MTU: 64:8
        UP RUNNING PSCAN ISCAN 
        RX bytes:1226 acl:0 sco:0 events:27 errors:0
        TX bytes:351 acl:0 sco:0 commands:26 errors:0
        Features: 0xff 0xff 0x8f 0xfe 0x9b 0xf9 0x00 0x80
        Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3 
        Link policy: RSWITCH HOLD SNIFF PARK 
        Link mode: SLAVE ACCEPT 
        Name: 'BlueZ (0)'
        Class: 0x000100
        Service Classes: Unspecified
        Device Class: Computer, Uncategorized
        HCI Ver: 2.0 (0x3) HCI Rev: 0xc5c LMP Ver: 2.0 (0x3) LMP Subver: 0xc5c
        Manufacturer: Cambridge Silicon Radio (10)

Ключ Logitech Bluetooth USB

Существуют ключи Logitech (Logitech MX5000), которые могут работать в двух режимах: встроенный и HCI. Во встроенном режиме ключ эмулирует устройство USB так, что вашему компьютеру кажется, что вы используете обычную USB мышь/клавиатуру.

Если вы нажмёте маленькую красную кнопку на USB BT мини-ресивере, включится другой режим. Удерживайте красную кнопку на ключе BT и подключите к компьютеру, и через 3-5 секунд удерживания кнопки в системном трее появится иконка Bluetooth (Обсуждение).

hcitool scan: Устройство не найдено

  • На некоторых ноутбуках Dell (например, Studio 15) вы должны переключить режим Bluetooth в HID на HCI используя
# hid2hci
  • Если устройство не появится и вы используете на своей машине операционную систему Windows, попробуйте загрузить её и включить адаптер bluetooth в windows
  • Иногда также помогает эта простая команда:
# hciconfig hci0 up

Мой компьютер невидим

Не можете обозревать компьютер с вашего телефона? Включите PSCAN и ISCAN:

# enable PSCAN and ISCAN
$ hciconfig hci0 piscan 
# check it worked
$ hciconfig 
hci0:   Type: USB
        BD Address: 00:12:34:56:78:9A ACL MTU: 192:8 SCO MTU: 64:8
        UP RUNNING PSCAN ISCAN
        RX bytes:20425 acl:115 sco:0 events:526 errors:0
        TX bytes:5543 acl:84 sco:0 commands:340 errors:0
Note: Проверьте DiscoverableTimeout и PairableTimeout в /etc/bluetooth/main.conf

Попробуйте изменить класс устройства в /etc/bluetooth/main.conf как здесь

# Default device class. Only the major and minor device class bits are
# considered.
#Class = 0x000100 (from default config)
Class = 0x100100

Это было единственное решение, сделавшее мой компьютер видимым для телефона.

Nautilus не может обозревать файлы

Если nautilus не открывает и показывает эту ошибку:

Nautilus cannot handle obex: locations. Couldn't display "obex://[XX:XX:XX:XX:XX:XX]/".

Установите пакет gvfs-obexftp:

# pacman -S gvfs-obexftp

Проблемы подключения наушников Sennheiser MM400

Если ваши наушники Sennheiser MM400 немедленно отключаются после присоединения Headset Service в Blueman, попробуйте присоединить их как Audio Sink. Потом вы можете изменить Audio Profile наушников на Telephony Duplex с помощью щелчка правой кнопкой мыши по Blueman.

Моё устройство сопряжено, но звук не воспроизводится

Сначала просмотрите /var/log/messages.log

# tail /var/log/messages.log
Jan 12 20:08:58 localhost pulseaudio[1584]: [pulseaudio] module-bluetooth-device.c: Service not connected
Jan 12 20:08:58 localhost pulseaudio[1584]: [pulseaudio] module-bluetooth-device.c: Bluetooth audio service not available

Если вы видите подобные сообщения, попробуйте:

# pactl load-module module-bluetooth-device

Если модуль не запускается, сделайте следующее: Откройте /etc/bluetooth/audio.conf и добавьте после [General] (на новой строке)

Enable=Socket

Затем перезапустите демон bluetooth с помощью /etc/rc.d/bluetooth restart. Сопрягите опять ваше устройство, и вы найдёте его в настройках pulseaudio (дополнительные настройки звука).

Больше информации в Gentoo Wiki

Если после этого у вас по-прежнему нет звука, попробуйте использовать blueman (это единственное, что работает у меня), убедитесь, что установлен notify-osd или он может показывать сообщения об ошибках вроде этого: "Stream setup failed"

fail (/usr/lib/python2.7/site-packages/blueman/gui/manager/ManagerDeviceMenu.py:134) fail (DBusException(dbus.String(u'Stream setup failed'),),)

Смотрите также