ব্লুটুথ ডিভাইসগুলি স্বয়ংক্রিয়ভাবে সংযুক্ত করা হচ্ছে


28

উবুন্টুতে যখন ব্লুটুথ সেট করা থাকে তখন ডিভাইসগুলির সাথে এটি সংযোগ স্থাপনের জন্য স্বতঃসংযোগ স্থাপন করা যায় when তদ্ব্যতীত, সংযোগে একটি ব্লুটুথ হেডসেটে স্বয়ংক্রিয়ভাবে শব্দ আউটপুট পরিবর্তন করার কোনও উপায় আছে?

উত্তর:


26

পালসোডিও> = 1.0

সম্পাদনা করার মাধ্যমে /etc/pulse/default.paআমরা পালসোডিও মডিউল মডিউলটি সুইড -অন-সংযোগ একটি অডিও সিঙ্কে স্বয়ংক্রিয় সংযোগে লোড করতে পারি তা এটি পালসিউডিও সাউন্ড সার্ভারে উপস্থাপনের সাথে সাথেই। আমাদের নিম্নলিখিত লাইনটি প্রবেশ করানো দরকার need

load-module module-switch-on-connect

নাড়ির পূর্ববর্তী সংস্করণ io

ব্লুটুথ ডিভাইসগুলি উপস্থিত হওয়ার সাথে সাথে পলস অডিওতে স্বীকৃতি পেয়েছে। তবে সংযোগটি অডিও সেটিংসে ম্যানুয়ালি করা দরকার। একটি জিইউআই রয়েছে যা বিটি ডিভাইসগুলিতে ওয়ান-ক্লিক সংযোগের অনুমতি দেয় ( স্ট্রিম 2ip )।

সম্পাদনা করুন: 0.2.5 সংস্করণ থেকে স্ট্রিম 2ip ব্লুটুথ ডিভাইসে স্বয়ংক্রিয়ভাবে সংযোগ স্থাপনের অনুমতি দেয়।

সম্পাদনা করুন: কোনও ব্লুটুথ ডিভাইস উপস্থিত না থাকলে আপনি নিজের ব্লুজ ডিভাইসটিকে ডিফল্ট ডিভাইস হিসাবে সেট করতে পারেন (যেমন প্যাকটেল ব্যবহার করে বা কনফিগার সেটিংসে) কোনও ব্লুটুথ ডিভাইস উপস্থিত না থাকলে অভ্যন্তরীণ অডিওতে ফ্যালব্যাক সহ।

সম্পাদনা করুন: আপনাকে কীভাবে কাজ করবেন সে সম্পর্কে একটি ধারণা দেওয়ার জন্য এখানে একটি দ্রুত এবং নোংরা পাইথন স্ক্রিপ্ট রয়েছে:

#!/usr/bin/env python
#-*- coding: utf-8 -*-
#
# bt-autoconnect
# Autoconnects Bluetooth Devices to PulseAudio
# (c) Takkat Nebuk
# Licence: GPLv3
# usage:
# bt-autoconnect <MAC> <timeout>

import subprocess
import time
import sys
import string

cli_options = sys.argv

def main():
    MAC = cli_options[1]
    timeout = cli_options[2]
    PMAC = string.replace(MAC,':','_') # PA don't know ':', needs '_'
    pa_args = ['pacmd set-default-sink bluez_sink.' + PMAC]
    bt_args = ['sdptool browse ' + MAC]
    err = False
    while err == False:
        if subprocess.call(bt_args, shell=True) == 0:
            err = subprocess.call(pa_args, shell=True)
        time.sleep(int(timeout))
    exit()

if __name__ == "__main__":
    main()

কেবল এই স্ক্রিপ্টটি অনুলিপি করুন এবং এটি বিটিআউটোকনেক্ট.পি হিসাবে সংরক্ষণ করুন । স্ক্রিপ্টটি সম্পাদনযোগ্য করুন বা কমান্ড লাইন থেকে চালিত করুন (প্রস্তাবিত) cd /script/directoryএবং তারপরে টাইপ করুন:

python bt-autoconnect.py [MAC] [timeout]

আপনার ব্লুটুথ ডিভাইসের ম্যাক দ্বারা ম্যাক প্রতিস্থাপন করুন (উদাঃ 00: 0 সি: 78: 4 এফ: বি 6: বি 5) এবং স্ক্রিপ্টটি ডিভাইসটির সন্ধান করার সময় সেকেন্ডে একটি পছন্দসই সময়সীমা (যেমন 10) সেট করুন । এই স্ক্রিপ্টটি প্রদত্ত ম্যাকটি ব্লুটুথ ডিভাইসের জন্য প্রতি সময়সীমা সেকেন্ডে শুনবে এবং উপস্থিত থাকলে এটি পালস অডিওতে সংযুক্ত করবে। এটি মারা না যাওয়া বা ভার্চুয়াল টার্মিনালটি বন্ধ না হওয়া পর্যন্ত স্ক্রিপ্টটি চিরকাল চলবে।

কখনও কখনও পালস অডিওও ডিভাইসটি চালু হওয়ার পরে আবার উপস্থিত থাকার বিষয়ে সচেতন বলে মনে হয় না। কিছু আশা নিয়ে pulseaudio -kএটি আবার উপস্থিত হয়।

অভিনব নয়, জিইউআই নেই তবে আমার সেটিংসে এটি ঠিক আছে it

আগ্রহীদের জন্য সম্পাদনা করুন : সুবিধাজনক সেটআপের জন্য জিইউআইয়ের সাথে বিটি-অটোকনেক্ট প্রকাশ করা হয়েছে। দয়া করে সেখানে বাগ বা পরামর্শ ফাইল করুন। পরীক্ষার জন্য আপনাকে ধন্যবাদ।


3
অতিরিক্ত তথ্য যুক্ত করতে আপনার কোনও মন্তব্য পোস্ট করার দরকার নেই। পরিবর্তে আপনি কেবল এটির মূল উত্তরটি এডিট করতে পারবেন এবং এগুলি সমস্ত এক জায়গায় রাখতে পারেন।

ধন্যবাদ, উবুন্টু 14.04-এ আমার জন্য প্রথম সমাধানটি কাজ করেছিল। যদিও দ্রষ্টব্য, sudo service pulseaudio restartপরিবর্তনটি কার্যকর করতে আপনার এখনও চালানো বা পুনরায় বুট করা দরকার ।
সেরিন

0

দুর্ভাগ্যক্রমে, আমি এখন তাককাত থেকে উত্তরটি দেখেছি, এটি আমার চেয়ে ভাল উপায় বলে মনে হচ্ছে।

আমার ধারণা এটি পলসৌদিও <1.0 এর জন্য এখনও প্রাসঙ্গিক হতে পারে। এটি পোলিং ব্যবহার করে না, তবে ডিবিএসে ব্লুটুথ ইভেন্টগুলি শোনে:

#!/usr/bin/python

# based on monitor-bluetooth
# Changes by Domen Puncer <domen@cba.si>

import gobject
import dbus
import dbus.mainloop.glib
import os


# we want this event: {AudioSource.PropertyChanged} [/org/bluez/16797/hci0/dev_00_24_7E_51_F7_52] State = playing
# and when that happens: pactl load-module module-loopback source=bluez_source.00_24_7E_51_F7_52 sink=alsa_output.pci-0000_00_1b.0.analog-stereo
def property_changed(name, value, path, interface):
    iface = interface[interface.rfind(".") + 1:]
    val = str(value)
    print "{%s.PropertyChanged} [%s] %s = %s" % (iface, path, name, val)
    if iface == "AudioSource" and name == "State" and val == "playing":
        bt_addr = "_".join(path.split('/')[-1].split('_')[1:])
        cmd = "pactl load-module module-loopback source=bluez_source.%s sink=alsa_output.pci-0000_00_1b.0.analog-stereo" % bt_addr
        os.system(cmd)


def object_signal(value, path, interface, member):
    iface = interface[interface.rfind(".") + 1:]
    val = str(value)
    print "{%s.%s} [%s] Path = %s" % (iface, member, path, val)

if __name__ == '__main__':
    dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)

    bus = dbus.SystemBus()

    bus.add_signal_receiver(property_changed, bus_name="org.bluez", signal_name = "PropertyChanged", path_keyword="path", interface_keyword="interface")

    mainloop = gobject.MainLoop()
    mainloop.run()
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.