У Ubuntu есть политика не прослушивать какие-либо сетевые порты (не запуская каких-либо сетевых сервисов) по умолчанию. Это означает отсутствие почтового сервера. Итак, да, вам нужно установить его, если хотите.
@Erigami. Ваш ответ очень помог, но чтобы он работал, я бы сделал некоторые изменения. Я использую ubuntu 14.04.
#!/usr/bin/python
import dbus
from dbus.mainloop.glib import DBusGMainLoop
import gobject
import subprocess
# ID of the device we care about
DEV_ID = 'CC:C3:EA:A5:16:90'.replace(":", "_")
dbus_loop = DBusGMainLoop()
bus = dbus.SystemBus(mainloop=dbus_loop)
# Figure out the path to the headset
man = bus.get_object('org.bluez', '/')
iface = dbus.Interface(man, 'org.bluez.Manager')
adapterPath = iface.DefaultAdapter()
print(adapterPath + '/dev_' + DEV_ID)
headset = bus.get_object('org.bluez', adapterPath + '/dev_' + DEV_ID)
# ^^^ I'm not sure if that's kosher. But it works.
def cb(*args, **kwargs):
is_connected = args[-1]
if isinstance(is_connected, dbus.Boolean) and is_connected:
print("Connected")
elif isinstance(is_connected, dbus.Boolean) and not is_connected:
print("Disconnected")
headset.connect_to_signal("PropertyChanged", cb, interface_keyword='iface', member_keyword='mbr', path_keyword='path')
loop = gobject.MainLoop()
loop.run()
Все еще, если это не работает, используйте и контролируйте систему dbus.
dbus-monitor --system
d-feet
можно использовать дальше. Это инструмент GUI для просмотра объектов dbus.
Вы пишете «когда ваша гарнитура подключается к вашему компьютеру». Как это делается автоматически? Когда вы должны запускать его вручную, вы также можете сделать его сценарием, а затем запустить свой скрипт после установления соединения. Это то, что я сделал, чтобы установить устройство вывода по умолчанию на мой приемник bluetooth (поэтому я могу изменить громкость с помощью аппаратных клавиш):
bluetooth-connect && pactl set-default-sink bluez_sink.0C_A6_94_9A_37_4D
Где bluetooth-connect
выглядит так: https : //github.com/sblask/dotfiles/blob/c39d37ad67947b358b4a079cb41ae6f9e4a081d8/.bin/bluetooth-connect.symlink Предполагается, что все было сопряжено и готово к подключению. Вы находите MAC-адрес в blueman или запускаете pacmd list-sinks | grep -e 'name:' -e 'index'
при подключении Bluetooth-устройства. Вам нужно запустить bluetooth-connect && your-script
. your-script
будет запускаться только при успешном установлении соединения.
Вот еще один пример для мониторинга всех устройств Bluetooth. Он не должен указывать конкретный MAC-адрес. Этот подход делает настройку xinput стойкой даже при входе / выходе, приостановке / пробуждении и подключении / отключении вашего устройства Bluetooth.
У меня есть компактная клавиатура Bluetooth Thinkpad, и я хочу запускать команду xinput всякий раз клавиатура подключена для регулировки скорости дорожки. Вот шаги.
subprocess.call(['xinput', 'set-prop',
'ThinkPad Compact Bluetooth Keyboard with TrackPoint',
'Device Accel Constant Deceleration', '0.6'])
В моем случае это эквивалентно вызову с терминала. $ xinput set-prop 'ThinkPad Compact Bluetooth Keyboard with TrackPoint' 'Device Accel Constant Deceleration' 0.6
$ python bluetooth-runner.py
Подключить и отключить устройство Bluethooth. Вы должны увидеть соответствующее сообщение, напечатанное на экране. $PATH
, скажем ~/bin/
. $ chmod +x bluetooth-runner.py
$ mkdir ~/bin # if you dont have it yet
$ cp bluetooth-runner.py ~/bin
Startup Applications
из меню ubuntu. Добавьте свои сценарии к запуску. [/g2] Startup Applications
. В моем случае это следующая команда: xinput set-prop 'ThinkPad Compact Bluetooth Keyboard with TrackPoint' 'Device Accel Constant Deceleration' 0.6
И теперь вы сможете наслаждаться своим устройством Bluetooth с помощью Ubuntu.
Чтобы обнаружить успешно установленное соединение Bluetooth, мы можем запустить
sdptool browse xx:xx:xx:xx:xx:xx
. Таким образом, соединение SDB будет протестировано для подключения к данному MAC-адресу. Это может занять значительное время до тех пор, пока время просмотра не исчезнет с ошибкой, например
Failed to connect to SDP server on 00:0C:78:4F:B6:B5: Host is down
. Мы не знаем точную цель вашего скрипта, но, скорее всего, вы хотите воспроизвести аудио через Clementine, когда подключена гарнитура .
Тогда мы могли бы просто посмотреть, есть ли аудио-приемник Bluetooth с
pacmd list-sinks | grep xx_xx_xx_xx_xx_xx
Где xx_xx_xx_xx_xx_xx
- это MAC-адрес (:
необходимо заменить на _
]). Затем на выходе вы узнаете, есть ли доступ к аудиовходу Bluetooth или нет, если нет.
См. этот ответ о том, как переключать звук на этот приемник.
< hr>С помощью stream2ip мы можем определить команду оболочки или скрипт для запуска после установления соединения. Также существует возможность автоматического запуска поддерживаемого медиаплеера после установления соединения:
[/g3]
Stream2ip также попытается повторно подключить текущий текущий поток воспроизведения на аудиоустройство Bluetooth, если соединение было прервано.
@Erigami. Ваш ответ очень помог, но чтобы он работал, я бы сделал некоторые изменения. Я использую ubuntu 14.04.
#!/usr/bin/python
import dbus
from dbus.mainloop.glib import DBusGMainLoop
import gobject
import subprocess
# ID of the device we care about
DEV_ID = 'CC:C3:EA:A5:16:90'.replace(":", "_")
dbus_loop = DBusGMainLoop()
bus = dbus.SystemBus(mainloop=dbus_loop)
# Figure out the path to the headset
man = bus.get_object('org.bluez', '/')
iface = dbus.Interface(man, 'org.bluez.Manager')
adapterPath = iface.DefaultAdapter()
print(adapterPath + '/dev_' + DEV_ID)
headset = bus.get_object('org.bluez', adapterPath + '/dev_' + DEV_ID)
# ^^^ I'm not sure if that's kosher. But it works.
def cb(*args, **kwargs):
is_connected = args[-1]
if isinstance(is_connected, dbus.Boolean) and is_connected:
print("Connected")
elif isinstance(is_connected, dbus.Boolean) and not is_connected:
print("Disconnected")
headset.connect_to_signal("PropertyChanged", cb, interface_keyword='iface', member_keyword='mbr', path_keyword='path')
loop = gobject.MainLoop()
loop.run()
Все еще, если это не работает, используйте и контролируйте систему dbus.
dbus-monitor --system
d-feet
можно использовать дальше. Это инструмент GUI для просмотра объектов dbus.
Вы пишете «когда ваша гарнитура подключается к вашему компьютеру». Как это делается автоматически? Когда вы должны запускать его вручную, вы также можете сделать его сценарием, а затем запустить свой скрипт после установления соединения. Это то, что я сделал, чтобы установить устройство вывода по умолчанию на мой приемник bluetooth (поэтому я могу изменить громкость с помощью аппаратных клавиш):
bluetooth-connect && pactl set-default-sink bluez_sink.0C_A6_94_9A_37_4D
Где bluetooth-connect
выглядит так: https : //github.com/sblask/dotfiles/blob/c39d37ad67947b358b4a079cb41ae6f9e4a081d8/.bin/bluetooth-connect.symlink Предполагается, что все было сопряжено и готово к подключению. Вы находите MAC-адрес в blueman или запускаете pacmd list-sinks | grep -e 'name:' -e 'index'
при подключении Bluetooth-устройства. Вам нужно запустить bluetooth-connect && your-script
. your-script
будет запускаться только при успешном установлении соединения.
Вот еще один пример для мониторинга всех устройств Bluetooth. Он не должен указывать конкретный MAC-адрес. Этот подход делает настройку xinput стойкой даже при входе / выходе, приостановке / пробуждении и подключении / отключении вашего устройства Bluetooth.
У меня есть компактная клавиатура Bluetooth Thinkpad, и я хочу запускать команду xinput всякий раз клавиатура подключена для регулировки скорости дорожки. Вот шаги.
subprocess.call(['xinput', 'set-prop',
'ThinkPad Compact Bluetooth Keyboard with TrackPoint',
'Device Accel Constant Deceleration', '0.6'])
В моем случае это эквивалентно вызову с терминала. $ xinput set-prop 'ThinkPad Compact Bluetooth Keyboard with TrackPoint' 'Device Accel Constant Deceleration' 0.6
$ python bluetooth-runner.py
Подключить и отключить устройство Bluethooth. Вы должны увидеть соответствующее сообщение, напечатанное на экране. $PATH
, скажем ~/bin/
. $ chmod +x bluetooth-runner.py
$ mkdir ~/bin # if you dont have it yet
$ cp bluetooth-runner.py ~/bin
Startup Applications
из меню ubuntu. Добавьте свои сценарии к запуску. [/g2] Startup Applications
. В моем случае это следующая команда: xinput set-prop 'ThinkPad Compact Bluetooth Keyboard with TrackPoint' 'Device Accel Constant Deceleration' 0.6
И теперь вы сможете наслаждаться своим устройством Bluetooth с помощью Ubuntu.
Чтобы обнаружить успешно установленное соединение Bluetooth, мы можем запустить
sdptool browse xx:xx:xx:xx:xx:xx
. Таким образом, соединение SDB будет протестировано для подключения к данному MAC-адресу. Это может занять значительное время до тех пор, пока время просмотра не исчезнет с ошибкой, например
Failed to connect to SDP server on 00:0C:78:4F:B6:B5: Host is down
. Мы не знаем точную цель вашего скрипта, но, скорее всего, вы хотите воспроизвести аудио через Clementine, когда подключена гарнитура .
Тогда мы могли бы просто посмотреть, есть ли аудио-приемник Bluetooth с
pacmd list-sinks | grep xx_xx_xx_xx_xx_xx
Где xx_xx_xx_xx_xx_xx
- это MAC-адрес (:
необходимо заменить на _
]). Затем на выходе вы узнаете, есть ли доступ к аудиовходу Bluetooth или нет, если нет.
См. этот ответ о том, как переключать звук на этот приемник.
< hr>С помощью stream2ip мы можем определить команду оболочки или скрипт для запуска после установления соединения. Также существует возможность автоматического запуска поддерживаемого медиаплеера после установления соединения:
[/g3]
Stream2ip также попытается повторно подключить текущий текущий поток воспроизведения на аудиоустройство Bluetooth, если соединение было прервано.
@Erigami. Ваш ответ очень помог, но чтобы он работал, я бы сделал некоторые изменения. Я использую ubuntu 14.04.
#!/usr/bin/python
import dbus
from dbus.mainloop.glib import DBusGMainLoop
import gobject
import subprocess
# ID of the device we care about
DEV_ID = 'CC:C3:EA:A5:16:90'.replace(":", "_")
dbus_loop = DBusGMainLoop()
bus = dbus.SystemBus(mainloop=dbus_loop)
# Figure out the path to the headset
man = bus.get_object('org.bluez', '/')
iface = dbus.Interface(man, 'org.bluez.Manager')
adapterPath = iface.DefaultAdapter()
print(adapterPath + '/dev_' + DEV_ID)
headset = bus.get_object('org.bluez', adapterPath + '/dev_' + DEV_ID)
# ^^^ I'm not sure if that's kosher. But it works.
def cb(*args, **kwargs):
is_connected = args[-1]
if isinstance(is_connected, dbus.Boolean) and is_connected:
print("Connected")
elif isinstance(is_connected, dbus.Boolean) and not is_connected:
print("Disconnected")
headset.connect_to_signal("PropertyChanged", cb, interface_keyword='iface', member_keyword='mbr', path_keyword='path')
loop = gobject.MainLoop()
loop.run()
Все еще, если это не работает, используйте и контролируйте систему dbus.
dbus-monitor --system
d-feet
можно использовать дальше. Это инструмент GUI для просмотра объектов dbus.
Вы пишете «когда ваша гарнитура подключается к вашему компьютеру». Как это делается автоматически? Когда вы должны запускать его вручную, вы также можете сделать его сценарием, а затем запустить свой скрипт после установления соединения. Это то, что я сделал, чтобы установить устройство вывода по умолчанию на мой приемник bluetooth (поэтому я могу изменить громкость с помощью аппаратных клавиш):
bluetooth-connect && pactl set-default-sink bluez_sink.0C_A6_94_9A_37_4D
Где bluetooth-connect
выглядит так: https : //github.com/sblask/dotfiles/blob/c39d37ad67947b358b4a079cb41ae6f9e4a081d8/.bin/bluetooth-connect.symlink Предполагается, что все было сопряжено и готово к подключению. Вы находите MAC-адрес в blueman или запускаете pacmd list-sinks | grep -e 'name:' -e 'index'
при подключении Bluetooth-устройства. Вам нужно запустить bluetooth-connect && your-script
. your-script
будет запускаться только при успешном установлении соединения.
Вот еще один пример для мониторинга всех устройств Bluetooth. Он не должен указывать конкретный MAC-адрес. Этот подход делает настройку xinput стойкой даже при входе / выходе, приостановке / пробуждении и подключении / отключении вашего устройства Bluetooth.
У меня есть компактная клавиатура Bluetooth Thinkpad, и я хочу запускать команду xinput всякий раз клавиатура подключена для регулировки скорости дорожки. Вот шаги.
subprocess.call(['xinput', 'set-prop',
'ThinkPad Compact Bluetooth Keyboard with TrackPoint',
'Device Accel Constant Deceleration', '0.6'])
В моем случае это эквивалентно вызову с терминала. $ xinput set-prop 'ThinkPad Compact Bluetooth Keyboard with TrackPoint' 'Device Accel Constant Deceleration' 0.6
$ python bluetooth-runner.py
Подключить и отключить устройство Bluethooth. Вы должны увидеть соответствующее сообщение, напечатанное на экране. $PATH
, скажем ~/bin/
. $ chmod +x bluetooth-runner.py
$ mkdir ~/bin # if you dont have it yet
$ cp bluetooth-runner.py ~/bin
Startup Applications
из меню ubuntu. Добавьте свои сценарии к запуску. [/g2] Startup Applications
. В моем случае это следующая команда: xinput set-prop 'ThinkPad Compact Bluetooth Keyboard with TrackPoint' 'Device Accel Constant Deceleration' 0.6
И теперь вы сможете наслаждаться своим устройством Bluetooth с помощью Ubuntu.
Чтобы обнаружить успешно установленное соединение Bluetooth, мы можем запустить
sdptool browse xx:xx:xx:xx:xx:xx
. Таким образом, соединение SDB будет протестировано для подключения к данному MAC-адресу. Это может занять значительное время до тех пор, пока время просмотра не исчезнет с ошибкой, например
Failed to connect to SDP server on 00:0C:78:4F:B6:B5: Host is down
. Мы не знаем точную цель вашего скрипта, но, скорее всего, вы хотите воспроизвести аудио через Clementine, когда подключена гарнитура .
Тогда мы могли бы просто посмотреть, есть ли аудио-приемник Bluetooth с
pacmd list-sinks | grep xx_xx_xx_xx_xx_xx
Где xx_xx_xx_xx_xx_xx
- это MAC-адрес (:
необходимо заменить на _
]). Затем на выходе вы узнаете, есть ли доступ к аудиовходу Bluetooth или нет, если нет.
См. этот ответ о том, как переключать звук на этот приемник.
< hr>С помощью stream2ip мы можем определить команду оболочки или скрипт для запуска после установления соединения. Также существует возможность автоматического запуска поддерживаемого медиаплеера после установления соединения:
[/g3]
Stream2ip также попытается повторно подключить текущий текущий поток воспроизведения на аудиоустройство Bluetooth, если соединение было прервано.
sdptool browse <device-id>
, пока я не получу код возврата 0, а затем начну с моего скрипта, верно? Есть ли способ сделать это без опроса?
– Erigami
18 May 2012 в 01:23
@Erigami. Ваш ответ очень помог, но чтобы он работал, я бы сделал некоторые изменения. Я использую ubuntu 14.04.
#!/usr/bin/python
import dbus
from dbus.mainloop.glib import DBusGMainLoop
import gobject
import subprocess
# ID of the device we care about
DEV_ID = 'CC:C3:EA:A5:16:90'.replace(":", "_")
dbus_loop = DBusGMainLoop()
bus = dbus.SystemBus(mainloop=dbus_loop)
# Figure out the path to the headset
man = bus.get_object('org.bluez', '/')
iface = dbus.Interface(man, 'org.bluez.Manager')
adapterPath = iface.DefaultAdapter()
print(adapterPath + '/dev_' + DEV_ID)
headset = bus.get_object('org.bluez', adapterPath + '/dev_' + DEV_ID)
# ^^^ I'm not sure if that's kosher. But it works.
def cb(*args, **kwargs):
is_connected = args[-1]
if isinstance(is_connected, dbus.Boolean) and is_connected:
print("Connected")
elif isinstance(is_connected, dbus.Boolean) and not is_connected:
print("Disconnected")
headset.connect_to_signal("PropertyChanged", cb, interface_keyword='iface', member_keyword='mbr', path_keyword='path')
loop = gobject.MainLoop()
loop.run()
Все еще, если это не работает, используйте и контролируйте систему dbus.
dbus-monitor --system
d-feet
можно использовать дальше. Это инструмент GUI для просмотра объектов dbus.
Вы пишете «когда ваша гарнитура подключается к вашему компьютеру». Как это делается автоматически? Когда вы должны запускать его вручную, вы также можете сделать его сценарием, а затем запустить свой скрипт после установления соединения. Это то, что я сделал, чтобы установить устройство вывода по умолчанию на мой приемник bluetooth (поэтому я могу изменить громкость с помощью аппаратных клавиш):
bluetooth-connect && pactl set-default-sink bluez_sink.0C_A6_94_9A_37_4D
Где bluetooth-connect
выглядит так: https : //github.com/sblask/dotfiles/blob/c39d37ad67947b358b4a079cb41ae6f9e4a081d8/.bin/bluetooth-connect.symlink Предполагается, что все было сопряжено и готово к подключению. Вы находите MAC-адрес в blueman или запускаете pacmd list-sinks | grep -e 'name:' -e 'index'
при подключении Bluetooth-устройства. Вам нужно запустить bluetooth-connect && your-script
. your-script
будет запускаться только при успешном установлении соединения.
Вот еще один пример для мониторинга всех устройств Bluetooth. Он не должен указывать конкретный MAC-адрес. Этот подход делает настройку xinput стойкой даже при входе / выходе, приостановке / пробуждении и подключении / отключении вашего устройства Bluetooth.
У меня есть компактная клавиатура Bluetooth Thinkpad, и я хочу запускать команду xinput всякий раз клавиатура подключена для регулировки скорости дорожки. Вот шаги.
subprocess.call(['xinput', 'set-prop',
'ThinkPad Compact Bluetooth Keyboard with TrackPoint',
'Device Accel Constant Deceleration', '0.6'])
В моем случае это эквивалентно вызову с терминала. $ xinput set-prop 'ThinkPad Compact Bluetooth Keyboard with TrackPoint' 'Device Accel Constant Deceleration' 0.6
$ python bluetooth-runner.py
Подключить и отключить устройство Bluethooth. Вы должны увидеть соответствующее сообщение, напечатанное на экране. $PATH
, скажем ~/bin/
. $ chmod +x bluetooth-runner.py
$ mkdir ~/bin # if you dont have it yet
$ cp bluetooth-runner.py ~/bin
Startup Applications
из меню ubuntu. Добавьте свои сценарии к запуску. [/g2] Startup Applications
. В моем случае это следующая команда: xinput set-prop 'ThinkPad Compact Bluetooth Keyboard with TrackPoint' 'Device Accel Constant Deceleration' 0.6
И теперь вы сможете наслаждаться своим устройством Bluetooth с помощью Ubuntu.