Để sử dụng máy Ubuntu của bạn làm thiết bị Bluetooth a2dp, trước tiên bạn phải định cấu hình nó để đăng ký làm điểm cuối "a2dp chìm".
Các bluez gói trong Ubuntu (10.04 trở lên) bao gồm một tiện ích gọi là sdptool có thể được sử dụng để kiểm tra xem một thiết bị Bluetooth được cấu hình như một bồn rửa A2DP hay không. Đây là đầu ra từ sdptool chạy với tai nghe Bluetooth của tôi (địa chỉ được lấy từ hộp thoại "Cài đặt Bluetooth" trong trung tâm điều khiển gnome):
$ sdptool search --bdaddr 00:18:16:3A:3B:D4 a2snk
Searching for a2snk on 00:18:16:3A:3B:D4 ...
Service RecHandle: 0x10002
Service Class ID List:
"Audio Sink" (0x110b)
Protocol Descriptor List:
"L2CAP" (0x0100)
PSM: 25
"AVDTP" (0x0019)
uint16: 0x102
Profile Descriptor List:
"Advanced Audio" (0x110d)
Version: 0x0102
$
và đây là đầu ra khi chạy với máy Ubuntu cục bộ của tôi:
$ sdptool search --bdaddr local a2snk
Searching for a2snk on FF:FF:FF:00:00:00 ...
$
Điều này cho thấy rằng máy Ubuntu không tự quảng cáo dưới dạng a2dp. Tuy nhiên, nó đang tự quảng cáo dưới dạng nguồn a2dp:
$ sdptool search --bdaddr local a2src
Searching for a2src on FF:FF:FF:00:00:00 ...
Service Name: Audio Source
Service RecHandle: 0x10003
Service Class ID List:
"Audio Source" (0x110a)
Protocol Descriptor List:
"L2CAP" (0x0100)
PSM: 25
"AVDTP" (0x0019)
uint16: 0x102
Profile Descriptor List:
"Advanced Audio" (0x110d)
Version: 0x0102
Điều này cho phép máy Ubuntu ghép nối chính xác với tai nghe làm nguồn âm thanh, nhưng nó không cho phép sử dụng máy Ubuntu làm đầu ra (chìm) cho âm thanh Bluetooth.
Nếu bạn chỉnh sửa /etc/bluetooth/audio.conf
, bạn có thể kích hoạt hỗ trợ chìm a2dp bằng cách thêm dòng này bên dưới [General]
phần:
Enable=Source
Đây là cả hai tên được đặt ngược lại - vì những gì chúng tôi thêm vào đây là hỗ trợ chìm Bluetooth, không phải hỗ trợ nguồn - và mâu thuẫn với nhận xét trong tệp này cho rằng tất cả các dịch vụ đã triển khai đều được bật theo mặc định. :
Sau khi thực hiện thay đổi này, bạn sẽ cần khởi động lại bluetoothd bằng cách chạy sudo service bluetooth restart
.
Nếu trước đây bạn đã ghép nối thiết bị Android và máy tính Ubuntu của mình trong khi cố gắng thực hiện công việc này, bạn sẽ cần xóa ghép nối ở cả hai bên và ghép lại chúng để Android nhận ra Ubuntu là một thiết bị âm thanh có sẵn.
Khi bạn đã hoàn thành việc này, thiết bị Android sẽ hiển thị dưới dạng thiết bị đầu vào trong PulseAudio. Nếu PulseAudio không phát hiện nguồn âm thanh Bluetooth mới, bạn có thể cần cài đặt và tải mô-đun Bluetooth, từ dòng lệnh:
sudo apt-get install pulseaudio-module-bluetooth
pactl load-module module-bluetooth-discover
Sau đó, bạn cần báo cho PulseAudio định tuyến đầu vào âm thanh này đến đầu ra / âm thanh của bạn (chẳng hạn như loa hoặc tai nghe Bluetooth) bằng kết nối loopback (một đường thẳng từ nguồn đến bồn).
Các phiên bản sau của PulseAudio có thể có chính sách mô-đun-bluetooth và nó có thể đã thiết lập một thiết bị loopback cho bạn, nhưng đây dường như không phải là trường hợp phổ biến nhất.
Một cách bán tự động để thiết lập kết nối loopback - nếu bạn cũng đã cài đặt chương trình GUI pavucontrol - chỉ cần tải mô-đun loopback và định cấu hình bằng pavucontrol, vì PulseAudio sẽ nhớ các cài đặt. Tải mô-đun được thực hiện từ lệnh bằng cách sử dụng pactl:
pactl load-module module-loopback
Đừng sợ nếu bạn chưa nghe thấy bất cứ điều gì hoặc nếu bạn nhận được các hiệu ứng phản hồi lạ, chúng tôi cần nói cho thiết bị mới được tạo nguồn nào để nhận đầu vào và đầu tiên sẽ gửi đầu ra.
Mở pavucontrol và mở tab Cấu hình của nó. Đảm bảo thiết bị Bluetooth của bạn hiển thị ở đây (sau khi ghép nối với thiết bị bằng trình quản lý blueman hoặc công cụ Bluetooth khác) và cấu hình được đặt thành A2DP. Chuyển sang tab Thiết bị đầu vào và đảm bảo thiết bị của bạn cũng hiển thị ở đây và không bị tắt tiếng. Bây giờ chuyển sang tab Ghi âm và tạo kết nối loopback vừa tạo, sử dụng thiết bị của bạn làm nguồn với hộp chọn bên cạnh nút tắt tiếng. Chuyển sang tab Phát lại để chọn kết nối chìm nên sử dụng theo cùng một cách. Nếu thiết bị loopback không hiển thị trong các tab, hãy đảm bảo tất cả các luồng được hiển thị bằng hộp chọn ở cuối mỗi tab.
Bây giờ bạn sẽ nghe thấy âm thanh từ thiết bị của mình, nếu nó đang phát, trong loa của bạn hoặc bất kỳ đầu ra nào bạn chọn. Khi thiết bị của bạn bị ngắt kết nối, thiết bị loopback sẽ chuyển sang nguồn và nguồn có sẵn, điều này có thể không mong muốn, vì vậy hãy đảm bảo bạn tắt tiếng thiết bị loopback cho đến khi bạn cần. Kết nối loopback sẽ khôi phục cùng một nguồn / nguồn vào lần tới khi cùng một thiết bị Bluetooth được kết nối nhờ vào mô-đun - * - khôi phục các mô-đun.
Nếu điều đó không hiệu quả hoặc bạn chưa cài đặt pavucontrol, thay vào đó, bạn có thể thiết lập loopback bằng phương pháp sau:
pactl load-module module-loopback source_dont_move=yes source=$BTSOURCE sink=$SINK
(Thay thế $BTSOURCE
bằng tên nguồn cho thiết bị Bluetooth của bạn như PulseAudio nhìn thấy, ví dụ: bluez_source.14_DA_E9_2A_D7_57
và thay thế $SINK
bằng tên của đầu ra PulseAudio mà bạn muốn gửi luồng âm thanh tới, ví dụ : alsa_output.pci-0000_00_1b.0.analog-stereo
. Bạn có thể bỏ hoàn toàn đối số chìm và có dự phòng đến một bồn rửa hoạt động và thay đổi nó sau thông qua pavucontrol.)
- Bạn có thể tìm thấy
$SINK
với pactl list sinks
, nó được hiển thị sauName:
- Tương tự như vậy bạn có thể thấy
$BTSOURCE
vớipactl list sources
- Đối
source_dont_move
số ngăn kết nối loopback quay trở lại nguồn âm thanh khác khi thiết bị Bluetooth bị ngắt kết nối. Thay vào đó, nó sẽ bị xóa và bạn sẽ phải thiết lập lại lần sau.
Đây là một ví dụ mà người ta sẽ trông như thế nào (Hãy nhớ thay thế :
bằng _
địa chỉ Bluetooth!):
pactl load-module module-loopback source_dont_move=yes source=bluez_source.14_DA_E9_2A_D7_57 sink=alsa_output.pci-0000_00_14.2.analog-stereo
Nếu tải mô-đun dự phòng thất bại, hãy thử xóa source_dont_move=yes
đối số, nó sẽ được cung cấp trước trong phiên bản 1.0. Tuy nhiên, hãy cẩn thận để xóa kết nối loopback này trước khi bạn bỏ âm thanh này hoặc nếu micrô máy tính xách tay của bạn không được bật, bạn có thể nhận được một số phản hồi rất tệ. Để hủy kết nối loopback này theo cách thủ công khi bạn hoàn tất, hãy chạy:
pactl unload-module $(pactl list short modules | grep "loopback.*$BTSOURCE" | cut -f1)
Một lần nữa, thay thế $BTSOURCE
bằng tên cho nguồn PulseAudio đề cập đến thiết bị Bluetooth của bạn. Bạn cũng có thể dỡ bỏ mô-đun bằng cách sử dụng id được trả về bởi lệnh tải mô-đun:
$ pactl load-module module-loopback source_dont_move=yes source=bluez_source.14_DA_E9_2A_D7_57 sink=alsa_output.pci-0000_00_14.2.analog-stereo
15
$ pactl unload-module 15
Người giới thiệu:
- Blog đăng bài phác thảo một số chi tiết về cách khắc phục sự cố này trong Ubuntu.