A2DP trên PulseAudio - âm thanh bị giật / bỏ qua khủng khiếp


12

Tôi đã ghép nối tai nghe Bluetooth của mình với máy tính xách tay Ubuntu 12.04 với chip Bluetooth bên trong:

lsusb | grep Bluetooth

Bus 003 Device 003: ID 045e:0745 Microsoft Corp. Nano Transceiver v1.0 for Bluetooth

Thiết bị đã được ghép nối và với sự trợ giúp của blueman, tôi đã kết nối nó với PulseAudio như một chiếc bồn rửa. Âm thanh xuất hiện trong chế độ A2DP, nhưng cực kỳ chói tai và bỏ qua đến mức không tốt hơn nhiều so với không có gì.

Tôi đọc xung quanh và thấy rằng có một sửa chữa liên quan đến việc điều chỉnh nicemức độ ưu tiên của máy chủ PulseAudio. Vì theo mặc định, PulseAudio chạy trên cơ sở mỗi người dùng, tôi đã thêm vào như sau /etc/security/limits.conf:

*       hard    rtpio   0
*       soft    rtpio   0
@audio  hard    rtpio   20
@audio  soft    rtpio   20
pulse   hard    rtpio   20
pulse   soft    rtpio   20

Sau đó tôi đã thêm mình vào audionhóm để có thể sắp xếp ưu tiên cho pulseaudioquá trình. Có vẻ như pulseaudiohiện đang chạy với ưu tiên -11:

ps -eo tiên, ni, cmd | grep [p]

30 -11 /usr/bin/pulseaudio --start --log-target=syslog

Điều này có nghĩa là PulseAudio đang chạy với mức ưu tiên là -11, rất tốt.

Tuy nhiên, ngay cả sau khi khởi động lại, tôi vẫn nhận được âm thanh chppy khủng khiếp.

Tôi nên tiến hành như thế nào? Tôi đang cố gắng để làm cho tai nghe Bluetooth này tôi mua có thể sử dụng được.

Lưu ý: Tôi đã thử ghép nối thiết bị này với máy tính bảng Android ngay bên cạnh máy tính xách tay của mình và thiết bị hoạt động tốt, vì vậy nó không bị tắc nghẽn không dây, dường như nó có liên quan trực tiếp đến Linux.

Câu trả lời:


20

Chỉnh sửa tập tin cấu hình ALSA

sudo gedit /etc/modprobe.d/alsa-base.conf

Thêm dòng

options snd-hda-intel model=generic

đến cuối tập tin và khởi động lại.


1
Điều này đã làm việc tuyệt vời cho loa 35 II thoải mái yên tĩnh của tôi (ub Ubuntu 18.04)
Victor Parmar

Sửa chữa đơn giản này cũng làm việc cho tôi sau rất nhiều tìm kiếm. Ubuntu 18.10, tai nghe bluetooth (hứa hẹn trueBlue).
Francesco Napolitano

Tạo một tài khoản để đề cập rằng điều này cũng giải quyết vấn đề của tôi (QC35II). Một lời giải thích sẽ hữu ích; nhưng dù sao đi nữa, bạn là một người cứu rỗi cuộc sống
Sam

Tôi thấy độ sứt mẻ ít hơn 95% với bản sửa lỗi này với QC35II trong thử nghiệm Debian 9, kernel 4.18.20-2.
Andrey Portnoy

3
cuối cùng sau khi chỉnh sửa tập tin này, bạn không cần phải khởi động lại, chỉ cần chạysudo service bluetooth restart
Dinuka Salwathura

11

Vì không có câu trả lời nào khác hoạt động trên hệ thống của tôi (Ubuntu 18.04 LTS trên MacBook Air 2012), tôi đã tìm thấy giải pháp của mình trên wiki ub Ubuntuusers của Đức . Tóm tắt bằng tiếng Anh về hướng dẫn tiếng Đức:

Đầu ra bị giật có thể được gây ra bởi việc triển khai A2DP và cách nó đệm âm thanh trước khi mã hóa nó. Đối với tôi, việc thay đổi kích thước bộ đệm này đã giải quyết được vấn đề âm thanh khó nghe. Bạn cần thực hiện ba bước:

  1. Tìm thông tin cần thiết về thiết bị bluetooth (trong khi thiết bị được kết nối!)

    pactl list | grep -Pzo '.*bluez_card(.*\n)*'
    

    Đầu ra phải giống như

    Name: bluez_card.28_11_A5_84_B6_F9
    Driver: module-bluez5-device.c
    ...
    Ports:
    speaker-output: Speaker (priority: 0, latency offset: 0 usec, available)
        Part of profile(s): a2dp_sink, headset_head_unit
    speaker-input: Bluetooth Input (priority: 0, latency offset: 0 usec, not available)
        Part of profile(s): headset_head_unit
    

    Chúng tôi thấy rằng bộ đệm hiện có độ trễ 0. Trong bước tiếp theo, bạn sẽ cần NAMEPORTđầu ra của bạn. Trong ví dụ này, đây là bluez_card.28_11_A5_84_B6_F9speaker-output, tương ứng.

  2. Đặt kích thước bộ đệm (độ trễ) của thẻ của bạn thành một giá trị phù hợp với mẫu lệnh này:

    pactl set-port-latency-offset <NAME> <PORT> <BUFFER_SIZE_MICROSECONDS> 
    

    Đơn vị độ trễ của lệnh sau là micro giây, vì vậy tôi đang sử dụng bộ đệm 50 mili giây cho lệnh của mình ở đây:

    pactl set-port-latency-offset bluez_card.28_11_A5_84_B6_F9 speaker-output 50000 
    
  3. Khởi động lại dịch vụ bluetooth của bạn để áp dụng thay đổi của bạn

    sudo service bluetooth restart
    

Vì thường không có tài liệu về điều này, bạn có thể phải thử nghiệm với các giá trị bộ đệm cao hơn hoặc thấp hơn.


1
Bạn xứng đáng được nâng cấp hơn! Tôi muốn đề cập rằng 45000 hoạt động tốt cho Macbook Air (đầu năm 2014) và Bose QC35
Ole Aldric

Điều này là chính xác, cảm ơn bạn
jhtong

3

Việc khắc phục có hiệu quả đối với tôi, mặc dù tôi thấy rằng tôi phải xóa dòng trước khi sửa. Xem bên dưới:

# Keep snd-usb-audio from beeing loaded as first soundcard  
# options snd-usb-audio index=-2  <-REM this line if it doesn't work at first  
options snd-hda-intel model=generic

2

Câu trả lời của Chris_128 làm việc cho tôi nhưng đối với người mới tôi sẽ thêm một chút chi tiết.

Đối với NAME và PORT cho lệnh bên dưới:

pactl set-port-latency-offset NAME PORT 50000 

Bạn sẽ nhận được nó sau khi bạn có kết quả từ việc gõ:

pactl list | grep -Pzo '.*bluez_card(.*\n)*'


Name: bluez_card.5C_FB_7C_0D_0F_EE
Driver: module-bluez5-device.c
Owner Module: 28
Properties:
    ...
Profiles:
    headset_head_unit: Headset Head Unit (HSP/HFP) (sinks: 1, sources: 1, priority: 30, available: yes)
    a2dp_sink: High Fidelity Playback (A2DP Sink) (sinks: 1, sources: 0, priority: 40, available: yes)
    off: Off (sinks: 0, sources: 0, priority: 0, available: yes)
Active Profile: a2dp_sink
Ports:
    headset-output: Headset (priority: 0, latency offset: 0 usec, available)
        Part of profile(s): headset_head_unit, a2dp_sink
    headset-input: Headset (priority: 0, latency offset: 0 usec)
        Part of profile(s): headset_head_unit

NAME sẽ là "bluez_card.5C_FB_7C_0D_0F_EE" và PORT sẽ là "đầu ra tai nghe"

Vì vậy, đối với trường hợp của tôi, lệnh của tôi là

"pactl set-port-latency-offset bluez_card.5C_FB_7C_0D_0F_EE headset-output 50000"

Khởi động lại dịch vụ bluetooth của bạn

sudo service bluetooth restart

1

Có vấn đề tương tự với Ubuntu 18.04 chạy như khởi động kép trong MacBook Mini. Đã thử thay đổi cấu hình ALSA như được đề cập bởi @ConfirmAndCreate ThisAccount.

Nhưng nó không hoạt động.

Vì vậy, tôi đã cài đặt Blueman bằng lệnh dưới đây

sudo apt-get install blueman

Sau đó, tôi ngắt kết nối thiết bị bluetooth khỏi cài đặt bluetooth của hệ thống và ghép nối lại bằng Blueman. Bây giờ mọi thứ đều ổn. Ngay cả các điều khiển Phát / Tạm dừng cũng hoạt động.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.