Latar Belakang: Saya menggunakan headset bluetooth saya sebagai output audio. Saya berhasil membuatnya bekerja dengan daftar panjang instruksi pada dokumentasi komunitas BluetoothHeadset , dan saya telah mengotomatiskan proses mengaktifkan headset sebagai output audio default ke dalam skrip, berkat pertanyaan lain .
Namun, karena saya menggunakan headset bluetooth dengan ponsel dan komputer saya (dan headset tidak mendukung dua koneksi input) agar ponsel tidak "mencuri" koneksi ketika handset dihidupkan, saya memaksa headset menjadi Mode penemuan saat menghubungkan ke komputer (telepon dapat terhubung secara otomatis).
Jadi meskipun headset sudah dipasangkan ok dan akan terhubung otomatis dengan skenario "normal", saya harus selalu menggunakan ikon bluetooth kecil di area notifikasi untuk benar-benar terhubung ke perangkat saya (lihat tangkapan layar).
Yang ingin saya hindari: GUI ini untuk menghubungkan ke perangkat bluetooth yang dikenal dan dipasangkan :
Apa yang saya inginkan sebagai gantinya: Saya ingin membuat bluetooth melakukan persis seperti mengklik item terhubung di GUI, hanya dengan menggunakan baris perintah. Saya ingin menggunakan baris perintah sehingga saya dapat membuat pintasan tombol tunggal untuk tindakan, dan tidak perlu menavigasi GUI setiap kali saya ingin membuat koneksi ke perangkat.
Pertanyaannya: Bagaimana saya bisa mencoba menyambung ke perangkat bluetooth khusus, yang diketahui dan dipasangkan dari baris perintah?
Pertanyaan selanjutnya: Bagaimana saya tahu apakah koneksi berhasil atau tidak?
sumber
Jawaban:
Daemon Bluetooth
Dalam instalasi default, daemon ( bluetoothd ) berjalan di latar belakang (dijalankan dari file
/etc/init.d/bluetooth
). Daemon ini berhati-hati dalam mengenali dan menghubungkan ke perangkat bluetooth yang dikenal dan dapat dikonfigurasikan dengan file konfigurasi di/etc/bluetooth
. Untuk menghubungkan headset secara otomatis, baris berikut iniaudio.conf
harus dihapus komentarnya (hapus#
):Untuk me-restart jenis daemon
sudo /etc/init.d/bluetooth restart
.Catatan: Menggunakan alat baris perintah
sudo hcitool cc <MAC-Adress>
tidak mengarah ke koneksi yang stabil ke perangkat yang dikenal di lingkungan pengujian di sini ketika daemon sedang berjalan.DBus
Untuk menghubungkan headset yang terputus tetapi secara fisik ada dan berpasangan, kita dapat menggunakan D-Bus dari sebuah skrip. Berikut ini contoh dalam python:
Jika kita memiliki lebih dari satu perangkat Bluetooth, kita harus beradaptasi dengan
devicePath
tepat, tentu saja. Contoh di atas akan menghubungkan aHeadset
. Ubah antarmuka ke protokol lain untuk layanan lain (misAudioSink
.).Pulseaudio
Jika Anda tahu alamat MAC perangkat Bluetooth Anda, Anda dapat menghubungkannya sebagai wastafel keluaran untuk pulseaudio dengan:
Di mana xx_xx_xx_xx_xx_xx adalah alamat MAC (ganti ':' dengan '_' untuk pulseaudio untuk mengenalinya).
Lihat juga jawaban ini untuk lebih jelasnya.
sumber
Sink bluez_sink.xx_xx_xx_xx_xx_xx does not exist.
mencoba Mencoba huruf besar dan kecil.bt
ataublue
terdaftar dipacmd list-sinks
. (Ini melaporkan hanya 1 wastafel tersedia.)Saya menggunakan skrip ini untuk menghubungkan Perangkat Audio Bluetooth saya. Jika headset Anda sudah dipasangkan, Anda harus dapat menghubungkan headset Anda dengan cara yang sama menggunakan org.bluez.Headset.Connect / Disconnect sebagai ganti org.bluez.Audiosink.Connect / Disconnect .
HTH!
sumber
16.04
, terima kasih! yang lain, jangan lupa untuk memberikanon
opsi ke skrip!Saya menggunakan i3 sebagai window manager jadi saya tidak memiliki ikon baki bluetooth yang tersedia. Untuk beberapa alasan tombol centang dalam pengaturan kesatuan tidak sensitif dan jadi saya perlu cara untuk melakukan ini dari waktu ke waktu ketika headphone saya tidak terhubung.
Tampaknya
bluez
telah mengubah API dbus mereka . Jawaban menggunakanorg.bluez.Manager
tidak lagi berfungsi. Sebagai gantinya, disarankan untuk menggunakanObjectManager
.Berikut ini adalah skrip python yang diperbarui yang akan menghubungkan headset bluetooth pertama yang tidak terhubung yang ditemukannya (mungkin daftar ini mencakup semua perangkat yang dipasangkan?):
contoh ini, seperti contoh lain pada utas ini, menggunakan
dbus
paket python. Di ubuntu 16.04 saya menginstal ini melaluiapt-get install python-dbus
.Jika Anda ingin mencocokkan kriteria lain, dokumen ini tampaknya menunjukkan daftar properti yang dapat ditanyakan lebih dari dbus.
Saya memiliki skrip ini disimpan di
~/.local/bin/bt-connect-headset
mana sayaPATH
sehingga saya dapat menjalankannya dari launcher i3. Jadikan itu executable (chmod +x bt-connect-headset
) jika Anda berencana untuk menggunakannya sebagai perintah.Skrip ini hanya diuji pada ubuntu 16.04 terbaru pada 09/28/2018.
sumber
2360344
alih-alih0x240404
.Disconnect()
metode. Saya belum mencobanya, tapi mungkin ini taruhan yang aman;).first unconnected bluetooth headset
: apakah akan selalu menggunakan headset (jika diaktifkan) sebelum perangkat lain seperti speaker bluetooth (tidak peduli posisi dalam daftar)? Itulah yang terjadi dalam kasus saya. - Juga, untuk memutuskan sambungan saya tidak bisa melakukannya dengan hanya mengubah baris terakhir keadapter.Disconnect()
.)Setelah mencoba beberapa hal di atas (skrip tidak berfungsi untuk saya), saya menemukan solusi berikut.
Pertama cari tahu MAC-Adress perangkat yang ingin Anda sambungkan
ini akan memasuki shell dan daftar semua perangkat yang tersedia dengan alamat. ("keluar" untuk keluar dari shell & kembali ke prompt)
Kemudian hubungkan ke perangkat bluetooth XX: XX: XX: XX: XX: XX: XX:
untuk memutuskan sambungan
sudah mencari ini cukup lama - tidak ada yang berhasil, merasa sangat lega ketika saya tahu. Kupikir orang lain mungkin ingin tahu tentang itu juga. :))
sumber
~$ bluetoothctl Agent registered [UE BOOM 2]#
. Laludisconnect "UE BOOM 2" Device UE BOOM 2 not available
.bluetoothctl
? Anda perlu memberi makan perintah dengan alamat MAC perangkat - yang merupakan kombinasi dari Nilai HEX dalam format XX: XX: XX: XX: XX: XX: XX: XX, di mana X adalah huruf atau angka.echo -e 'connect CC:AF:78:AF:59:03' | bluetoothctl
saya dapatkan:Agent registered [bluetooth]# connect CC:AF:78:AF:59:03 Device CC:AF:78:AF:59:03 not available