内容简介:How are you all holding up? Today I have come up with a cool tip to make better use of your quarantine time. Did you know that you can use your Linux PC as Bluetooth speakers for your mobile phone? No? No, problem! I will explain how to turn your Linux PC
How are you all holding up? Today I have come up with a cool tip to make better use of your quarantine time. Did you know that you can use your Linux PC as Bluetooth speakers for your mobile phone? No? No, problem! I will explain how to turn your Linux PC into Bluetooth speakers for your phone. If you don’t know already, it is possible to play the audio or video files in our phone and listen them in our Laptop or Desktop via Bluetooth using Pulseaudio . To put this more simply, we can redirect the sound from a mobile phone to a computer with the help of Pulseaudio and Bluetooth.
Prerequisites
Obviously, you should have a Bluetooth-enabled mobile phone and a PC (desktop or laptop). I have an old HP Tablet PC and Ubuntu 18.04 LTS desktop.
First, make sure you have installed Bluez , Pulseaudio and pulseaudio bluetooth module on your Linux system. Most Linux distributions comes pre-installed with these tools. Just in case if they are missing, install them as shown below.
Install Bluez On Linux
To install Bluez on Arch Linux and its variants, run:
$ sudo pacman -S install bluez
On Debian, Ubuntu:
$ sudo apt install bluez
On Fedora, CentOS, RHEL:
$ sudo dnf install bluez
Or,
$ sudo yum install bluez
On openSUSE:
$ sudo zypper install bluez
After installing Bluez, make sure the bluetooth service is started and enabled on boot.
$ sudo systemctl start bluetooth
$ sudo systemctl enable bluetooth
To verify the bluetooth status, run:
$ systemctl status bluetooth
Install Pulseaudio On Linux
PulseAudiois an open source, cross-platform, network-capable sound server program distributed via the freedesktop.org project. It supports Linux, and various BSD distributions such as FreeBSD and OpenBSD, macOS. Pulseaudio is available in the default repositories of most Linux distributions. To enable playback via Bluetooth, we should install pulseaudio bluetooth module.
To install Pulseaudio and other required programs on Arch Linux, run:
$ sudo pacman -S pulseaudio pavucontrol pulseaudio-bluetooth
On Debian, Ubuntu and Linux Mint, simply run:
$ sudo apt install pulseaudio pulseaudio-utils pavucontrol pulseaudio-module-bluetooth
On Fedora:
$ sudo dnf install pulseaudio pulseaudio-utils pavucontrol pulseaudio-module-bluetooth
On CentOS, RHEL:
$ sudo yum install pulseaudio pulseaudio-utils pavucontrol pulseaudio-module-bluetooth
On openSUSE:
$ sudo zypper install pulseaudio pulseaudio-utils pavucontrol pulseaudio-module-bluetooth
Pair the Linux PC with your Mobile Phone
Make sure the mobile phone has been paired with your PC. Bluetooth pairing is very easy! You probably have done it already many times.
Switch on Bluetooth on your Mobile phone and your Linux system.
In Android device, turn on Bluetooth from Settings window.
In Ubuntu GNOME, Bluetooth can be switched on from System settings.
After the Bluetooth has been turned on in both devices, they will start to scan for the nearest Bluetooth devices and list them. From the Linux PC, just click on the device to pair it.
You should see the same Bluetooth PIN on your mobile phone. Just click Pair to pair it with the Linux PC.
Once the mobile has been paired with your Ubuntu PC, you will see them under the Devices tab in Bluetooth section.
Similarly, you will see your Linux PC is listed under the paired devices tab in your mobile phone.
Now both devices have been paired and are ready to use!
Turn Your Linux PC Into Bluetooth Speakers For Your Phone
On my Ubuntu 18.04 desktop, it worked fine out of the box. No configuration is actually required! I just installed “pulseaudio-module-bluetooth” package, paired up my phone with my PC and I can be able to listen the music playing in phone from my Laptop instantly. I could adjust the volumes either from the mobile device or computer. It also seems to route call audio through the computer, so I can even answer calls through a headset connected with my computer. I guess Pusleaudio took care of everything behind the scenes. Pulseaudio is awesome!
I already have installed KDE Connect , and it displays the caller id in my Laptop, so I don’t even have to look at the phone.
If it doesn’t work out of the box for any reason, create a file named ~/.config/pulse/system.pa :
$ mkdir ~/.config/pulse/
$ nano ~/.config/pulse/system.pa
Add the following lines in it:
.include /etc/pulse/system.pa load-module module-bluetooth-policy load-module module-bluetooth-discover
Save and close the file. Restart Bluetooth service to take effect changes using command:
$ sudo systemctl restart bluetooth
You can directly edit “/etc/pulse/system.pa” file and make the changes. However, It is strongly recommended not to edit system-wide configuration files , but rather edit user ones. That’s why you should create the “~/.config/pulse” directory, then copy the system configuration files into it and edit according to your need. Rather than being a complete copy, ~/.config/pulse/default.pa file can start with the line “.include /etc/pulse/default.pa” and then just override the defaults. This way we can avoid problems when the pulseaudio updates in future.
Troubleshooting Pulseaudio
Even though, I could able to turn my Laptop into Bluetooth speakers instantly without any additional configurations, the audio playback is terrible and stutters quite a lot. Yes, the audio is listenable, but it’s annoying.
First, make sure the Bluetooth playback profile is set to A2DP (High Fidelity Playback) . To do so, open Pulseaudio volume control (P avucontrol) from Dash or Menu. And select “High Fidelity Capture (A2DP Source)” from profile drop-down box under Configuration section.
Next you need to set correct buffer size (latency). If the Bluetooth sound is choppy, stuttering and distorted, this might be caused by the A2DP implementation, and how it buffers sound before encoding it. I simply changed the buffer’s size to fix the audio stuttering problem.
First, find the Bluetooth device name and its port using command:
$ pactl list | grep -Pzo '.*bluez_card(.*\n)*'
Sample output:
Name: bluez_card.7C_D3_0A_0B_D6_30 Driver: module-bluez5-device.c Owner Module: 36 Properties: device.description = "HP 7 VoiceTab" device.string = "7C:D3:0A:0B:D6:30" device.api = "bluez" device.class = "sound" device.bus = "bluetooth" device.form_factor = "phone" bluez.path = "/org/bluez/hci0/dev_7C_D3_0A_0B_D6_30" bluez.class = "0x5a020c" bluez.alias = "HP 7 VoiceTab" device.icon_name = "audio-card-bluetooth" Profiles: a2dp_source: High Fidelity Capture (A2DP Source) (sinks: 0, sources: 1, priority: 20, available: yes) headset_audio_gateway: Headset Audio Gateway (HSP/HFP) (sinks: 1, sources: 1, priority: 10, available: no) off: Off (sinks: 0, sources: 0, priority: 0, available: yes) Active Profile: a2dp_source Ports: phone-output: Phone (priority: 0, latency offset: 0 usec, not available) Part of profile(s): headset_audio_gateway phone-input: Phone (priority: 0, latency offset: 0 usec, available) Part of profile(s): a2dp_source, headset_audio_gateway
As you see in the above output, the name of the bluetooth device is “bluez_card.7C_D3_0A_0B_D6_30” and port is “phone-output” . And the buffer size (latency) is 0 .
Set the buffer size (latency) using command:
$ pactl set-port-latency-offset bluez_card.7C_D3_0A_0B_D6_30 phone-output 125000
Here, I am using 125 millisecond buffer. You can set your own that works for you. Also change the name and port values in the above command.
Now, restart your Bluetooth service using command:
$ sudo systemctl restart bluetooth
Or, reboot your system. The audio stuttering problem should be gone by now. I followed some other workarounds mentioned in the AskUbuntu, LinuxMint and ArchWiki forums (links are attached at the end). But the above solution only fixed my problem.
Here are some other solutions suggested by users to fix bluetooth audio problem.
Solution 1:
Edit the ALSA configuration file:
$ sudo nano /etc/modprobe.d/alsa-base.conf
Add the following line at the end:
options snd-hda-intel model=generic
Save and close the file. Reboot your system.
Solution 2:
This was suggested by a user in Linux Mint forum.
Edit file ~/.config/pulse/system.pa :
$ sudo ~/.config/pulse/system.pa
Add the following line:
load-module module-udev-detect tsched=0
Save and close the file. Reboot your system.
Hope this helps.
Resources:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Android 源码设计模式解析与实战
何红辉、关爱民 / 人民邮电出版社 / 2015-11 / 79.00元
本书专门介绍Android源代码的设计模式,共26章,主要讲解面向对象的六大原则、主流的设计模式以及MVC和MVP模式。主要内容为:优化代码的首步、开闭原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特原则、单例模式、Builder模式、原型模式、工厂方法模式、抽象工厂模式、策略模式、状态模式、责任链模式、解释器模式、命令模式、观察者模式、备忘录模式、迭代器模式、模板方法模式、访问者模式、中介......一起来看看 《Android 源码设计模式解析与实战》 这本书的介绍吧!