ก่อนอื่นปัญหา: ฉันใช้เครื่องเล่น MP3 Cowon เป็นเครื่องเล่นเพลงหลักที่มีที่อุดหูพื้นฐาน
มันมี A2DP และฉันต้องการให้เน็ตบุ๊กของฉัน (ใช้ UNE 10.04) ทำหน้าที่เป็นผู้รับ
แหล่งข้อมูลบนเว็บเกี่ยวกับ a2dp แต่ส่วนใหญ่ล้าสมัย:
ก่อนอื่นปัญหา: ฉันใช้เครื่องเล่น MP3 Cowon เป็นเครื่องเล่นเพลงหลักที่มีที่อุดหูพื้นฐาน
มันมี A2DP และฉันต้องการให้เน็ตบุ๊กของฉัน (ใช้ UNE 10.04) ทำหน้าที่เป็นผู้รับ
แหล่งข้อมูลบนเว็บเกี่ยวกับ a2dp แต่ส่วนใหญ่ล้าสมัย:
คำตอบ:
ในการใช้เครื่อง Ubuntu ของคุณเป็นอุปกรณ์บลูทู ธ a2dp ก่อนอื่นคุณต้องกำหนดค่าให้เครื่องลงทะเบียนเป็นจุดสิ้นสุด "a2dp sink"
bluezแพคเกจในอูบุนตู (10.04 และสูงกว่า) รวมถึงสาธารณูปโภคที่เรียกว่าsdptoolที่สามารถใช้เพื่อตรวจสอบว่าอุปกรณ์บลูทู ธ มีการกำหนดค่าเป็นอ่าง A2DP หรือไม่ นี่คือผลลัพธ์จาก sdptool ที่วิ่งมากับชุดหูฟังบลูทู ธ ของฉัน (ที่อยู่นั้นมาจากช่องโต้ตอบ "การตั้งค่าบลูทู ธ " ใน gnome-control-center):
$ 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
$
และนี่คือผลลัพธ์เมื่อทำงานกับเครื่อง Ubuntu ของฉัน:
$ sdptool search --bdaddr local a2snk
Searching for a2snk on FF:FF:FF:00:00:00 ...
$
นี่แสดงให้เห็นว่าเครื่องอูบุนตูไม่ได้โฆษณาตัวเองเป็นอ่าง a2dp มันคือการโฆษณาตัวเองเป็นแหล่ง 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
สิ่งนี้ทำให้เครื่อง Ubuntu สามารถจับคู่อย่างถูกต้องกับชุดหูฟังเป็นแหล่งกำเนิดเสียง แต่ไม่สามารถเปิดใช้งานเครื่อง Ubuntu เป็นเอาต์พุต (ซิงค์) สำหรับเสียง Bluetooth
หากคุณแก้ไข/etc/bluetooth/audio.conf
คุณสามารถเปิดใช้งานการสนับสนุน a2dp โดยเพิ่มบรรทัดนี้ใต้[General]
ส่วน:
Enable=Source
นี่คือทั้งชื่อที่ไม่เหมาะสม - เนื่องจากสิ่งที่เรากำลังเพิ่มในที่นี้คือการรองรับ Bluetooth sink ไม่ใช่การสนับสนุนแหล่งที่มา - และขัดแย้งกับความคิดเห็นในไฟล์นี้ที่อ้างว่าบริการที่ดำเนินการทั้งหมดเปิดใช้งานโดยค่าเริ่มต้น :(
sudo service bluetooth restart
หลังจากการเปลี่ยนแปลงนี้คุณจะต้องเริ่มต้นด้วยการวิ่ง bluetoothd
หากก่อนหน้านี้คุณได้จับคู่อุปกรณ์ Android และคอมพิวเตอร์ Ubuntu ในขณะที่พยายามทำงานนี้คุณจะต้องลบการจับคู่ทั้งสองข้างและจับคู่อีกครั้งเพื่อให้ Android รับรู้ว่า Ubuntu เป็นอุปกรณ์เสียงที่มีอยู่
เมื่อคุณทำสิ่งนี้เสร็จแล้วอุปกรณ์ Android ควรปรากฏเป็นอุปกรณ์ป้อนข้อมูลภายใต้ PulseAudio หาก PulseAudio ตรวจไม่พบแหล่งกำเนิดเสียงบลูทู ธ ใหม่คุณอาจต้องติดตั้งและโหลดโมดูลบลูทู ธ จากบรรทัดคำสั่ง:
sudo apt-get install pulseaudio-module-bluetooth
pactl load-module module-bluetooth-discover
จากนั้นคุณต้องแจ้ง PulseAudio เพื่อกำหนดเส้นทางอินพุตเสียงนี้ไปยังเอาต์พุต / ซิงค์ของคุณ (เช่นลำโพงของคุณหรือชุดหูฟังบลูทู ธ ) โดยใช้การเชื่อมต่อลูปแบ็ค (เส้นตรงจากแหล่งกำเนิดไปยังอ่างล้างจาน)
PulseAudio รุ่นที่ใหม่กว่าอาจมีโมดูลบลูทู ธ รวมอยู่ด้วยและอาจมีการตั้งค่าอุปกรณ์ลูปแบ็คให้คุณแล้ว แต่นี่ดูเหมือนจะไม่ใช่กรณีที่พบบ่อยที่สุด
วิธีกึ่งอัตโนมัติในการตั้งค่าการเชื่อมต่อลูปแบ็ค - หากคุณติดตั้งโปรแกรม pavucontrol GUI - คือการโหลดโมดูลลูปแบ็คและกำหนดค่าโดยใช้ pavucontrol เนื่องจาก PulseAudio จะจดจำการตั้งค่า การโหลดโมดูลเสร็จสิ้นจากคำสั่งโดยใช้ pactl:
pactl load-module module-loopback
อย่ากลัวถ้าคุณยังไม่ได้ยินอะไรเลยหรือถ้าคุณได้รับผลตอบรับแปลก ๆ เราจำเป็นต้องบอกอุปกรณ์ที่สร้างขึ้นใหม่ซึ่งแหล่งที่มาเพื่อรับข้อมูลจากและที่จมเพื่อส่งออกไปก่อน
เปิด pavucontrol และเปิดแท็บ Configuration ตรวจสอบให้แน่ใจว่าอุปกรณ์บลูทู ธ ของคุณปรากฏที่นี่ (หลังจากจับคู่กับมันโดยใช้ blueman-manager หรือเครื่องมือบลูทู ธ อื่น) และตั้งค่าโปรไฟล์เป็น A2DP สลับไปที่แท็บอุปกรณ์อินพุตและตรวจสอบว่าอุปกรณ์ของคุณปรากฏที่นี่เช่นกันและไม่ถูกปิดเสียง ตอนนี้สลับไปที่แท็บการบันทึกและทำให้การเชื่อมต่อวนกลับที่สร้างขึ้นใหม่ใช้อุปกรณ์ของคุณเป็นแหล่งที่มาพร้อมกล่องเลือกถัดจากปุ่มปิดเสียง สลับไปที่แท็บเล่นเพื่อเลือกซิงค์การเชื่อมต่อลูปแบ็คควรใช้ในลักษณะเดียวกัน หากอุปกรณ์ลูปแบ็คไม่แสดงในแท็บตรวจสอบให้แน่ใจว่าสตรีมทั้งหมดแสดงโดยใช้กล่องเลือกที่ด้านล่างของแต่ละแท็บ
ตอนนี้คุณควรได้ยินเสียงจากอุปกรณ์ของคุณถ้ากำลังเล่นอยู่ในลำโพงหรือสิ่งที่คุณเลือกเอาท์พุท เมื่ออุปกรณ์ของคุณถูกตัดการเชื่อมต่ออุปกรณ์ลูปแบ็คจะกลับไปยังอ่างล้างจานและแหล่งข้อมูลที่มีอยู่ซึ่งอาจไม่เป็นที่ต้องการดังนั้นควรปิดอุปกรณ์ลูปแบ็คจนกว่าคุณจะต้องการ การเชื่อมต่อแบบวนรอบจะเรียกคืน sink / แหล่งข้อมูลเดียวกันในครั้งต่อไปที่อุปกรณ์ Bluetooth เดียวกันเชื่อมต่อด้วยโมดูล - * - กู้คืนโมดูล
หากวิธีนี้ใช้ไม่ได้ผลหรือคุณไม่ได้ติดตั้ง pavucontrol คุณอาจต้องติดตั้งลูปแบ็คโดยใช้วิธีการต่อไปนี้แทน:
pactl load-module module-loopback source_dont_move=yes source=$BTSOURCE sink=$SINK
(แทนที่$BTSOURCE
ด้วยชื่อแหล่งที่มาสำหรับอุปกรณ์บลูทู ธ ของคุณตามที่เห็นโดย PulseAudio bluez_source.14_DA_E9_2A_D7_57
และแทนที่$SINK
ด้วยชื่อของเอาต์พุต PulseAudio ที่คุณต้องการส่งกระแสข้อมูลเสียงไปเช่น: alsa_output.pci-0000_00_1b.0.analog-stereo
. คุณอาจทิ้งอาร์กิวเมนต์อ่างทิ้งทั้งหมด เป็น sink ที่ใช้งานและเปลี่ยนในภายหลังผ่าน pavucontrol)
$SINK
ด้วยpactl list sinks
มันแสดงให้เห็นหลังจากName:
$BTSOURCE
ด้วยpactl list sources
source_dont_move
อาร์กิวเมนต์ป้องกันไม่ให้การเชื่อมต่อย้อนกลับจากการล้มกลับไปยังแหล่งเสียงอีกครั้งเมื่ออุปกรณ์บลูทู ธ เชื่อมต่อ มันจะถูกลบออกแทนและคุณจะต้องตั้งค่าอีกครั้งในครั้งต่อไปนี่คือตัวอย่างที่จะมีลักษณะ (อย่าลืมแทนที่:
ด้วย_
ในที่อยู่บลูทู ธ !):
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
หากการโหลดโมดูลทางเลือกล้มเหลวให้ลองลบsource_dont_move=yes
อาร์กิวเมนต์ออกมาซึ่งจะพร้อมใช้งานก่อนในเวอร์ชัน 1.0 จากนั้นให้ระมัดระวังในการลบการเชื่อมต่อลูปแบ็คนี้ก่อนที่คุณจะปล่อยเสียงนี้หรือถ้าเช่นไมโครโฟนแล็ปท็อปของคุณไม่ได้เปิดเสียงคุณอาจได้รับผลตอบรับที่แย่มาก หากต้องการยกเลิกการเชื่อมต่อลูปแบ็คด้วยตนเองเมื่อดำเนินการเสร็จให้เรียกใช้:
pactl unload-module $(pactl list short modules | grep "loopback.*$BTSOURCE" | cut -f1)
อีกครั้งแทนที่$BTSOURCE
ด้วยชื่อสำหรับแหล่ง PulseAudio ที่อ้างอิงถึงอุปกรณ์บลูทู ธ ของคุณ คุณสามารถยกเลิกการโหลดโมดูลโดยใช้รหัสที่ส่งคืนโดยคำสั่งโหลดโมดูล:
$ 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
อ้างอิง:
pactl load-module module-bluethooth-discover
ล้มเหลวใน ubuntu studio 14.04 ดังนั้นฉันจึงไม่เห็นbluez
แหล่งข้อมูลใด ๆในpulseaudio
แม้ว่าโทรศัพท์ของฉันจะเห็นพีซีอย่างถูกต้องเป็นอ่างเสียง ความคิดใด ๆ
pactl list sources short
ไม่แสดงแหล่งที่มาของ Bluez สำหรับคุณฉันได้พบโซลูชันที่เป็นไปได้สองวิธี: โทรไปgdbus call --system --dest org.bluez --object-path /org/bluez/XXX/hci0/dev_XX_XX_XX_XX_XX_XX --method org.bluez.AudioSource.Connect
ที่ (เส้นทางประกอบด้วยที่อยู่ BD ของอุปกรณ์และเส้นทางของอะแดปเตอร์ที่คุณจะได้รับด้วยgdbus call --system --dest org.bluez --object-path / --method org.bluez.Manager.DefaultAdapter
) หรือการใช้ D-ฟุตเป็นอธิบายที่นี่ มิฉะนั้นเชื่อมต่อทางโทรศัพท์และเริ่มเล่นบางสิ่ง
ฉันใช้ blueman ติดตั้งจากศูนย์ซอฟต์แวร์ Ubuntu คลิกขวาที่ไอคอน blueman * -> "บริการในพื้นที่" -> audio-> ตรวจสอบ "การรับสัญญาณเสียงขั้นสูง" ถูกเอียง Btw ฉันใช้มันเพื่อฟังใน Ubuntu 11.10 แล็ปท็อปที่ฉันเล่นบนโทรศัพท์ Android ของฉัน
* ไอคอน blueman แสดงที่มุมล่างขวาใน gnome shell + ubuntu 11.10 นั่นคือเคสของฉัน ฉันหวังว่านี่จะมีประโยชน์ในทางใดทางหนึ่งสำหรับคุณ
ตอนนี้มันง่ายมากใน Ubuntu 12.04
เชื่อมต่ออุปกรณ์บลูทู ธ ของคุณ
ค้นหาอุปกรณ์บลูทู ธ ของคุณและจดบันทึกหมายเลขแหล่งที่มาของมัน:
pactl list sources
สร้างลูปแบ็คสำหรับอุปกรณ์บลูทู ธ :
pactl load-module module-loopback source=$SOURCE_NUMBER
โดยที่ $ SOURCE_NUMBER คือหมายเลขที่คุณจดบันทึกไว้ก่อนหน้านี้
ตัวอย่างเช่นฉันป้อนสิ่งต่อไปนี้เพื่อให้การเล่นเสียงทำงานได้:
$ pactl load-module module-loopback source=3
แค่นั้นแหละ! ฉันพบวิธีแก้ปัญหาในคำตอบยอดนิยมที่ค่อนข้างซับซ้อนดังนั้นฉันจึงทำให้มันง่ายขึ้นด้วยวิธีนี้ (พิมพ์และคัดลอก / วางน้อยกว่า) แม้ว่าวิธีการแก้ปัญหาของฉันอาจจะแตกถ้าคุณเอาอุปกรณ์เครื่องเสียงใด ๆ ที่ระบุไว้ก่อนที่อุปกรณ์บลูทู ธ pactl list sources
โดย
นอกจากนี้อย่าลืมลบโมดูลลูปแบ็คก่อนที่จะยกเลิกการเชื่อมต่ออุปกรณ์บลูทู ธ :
จดบันทึกหมายเลขโมดูลของอุปกรณ์ลูปแบ็คที่คุณสร้าง:
pactl list short modules
ลบอุปกรณ์ย้อนกลับ:
pactl unload-module $MODULE_NUMBER
คำตอบก่อนหน้านี้เขียนไว้ก่อนหน้าปล่อย 12.04 ดังนั้นฉันแน่ใจว่ามีการเปลี่ยนแปลงบางอย่าง ตัวอย่างเช่นฉันไม่ต้องเปิดใช้งานด้วยตนเองโดยใช้อุปกรณ์บลูทู ธ เป็นแหล่งกำเนิดเสียง (โดยค่าเริ่มต้นจะเปิดใช้งาน) อย่างไรก็ตามในบางครั้งฉันต้องสลับโปรไฟล์ "Media Audio" ในการตั้งค่าบลูทู ธ ของฉันบนโทรศัพท์ของฉัน (Samsung Captivate ที่ใช้ CyanogenMod 9.1.0)
อาจเป็นวิธีที่ใช้ประโยชน์จากการตรวจสอบ dbus โดยใช้เชลล์สคริปต์เพื่อดูการเชื่อมต่ออุปกรณ์บลูทู ธ A2DP และโหลดโมดูลลูปแบ็คโดยอัตโนมัติ แต่นั่นเป็นเรื่องเล็กน้อยที่หัวของฉัน
หวังว่าเราจะไม่ต้องทำสิ่งนี้ด้วยตนเองอีกต่อไปใน Ubuntu 12.10
สำหรับ 13.04 ให้จับคู่อุปกรณ์ต้นทางของคุณกับแล็ปท็อปอูบุนตูและใช้งานได้! เจ๋งมากที่พบว่ามันเป็นเรื่องง่ายในขณะนี้
ใน Ubuntu 16.04 สามารถใช้งานได้ทันที
ทางออกที่ง่ายกว่าคำตอบ
คุณสามารถไปได้
sudo apt-get install pulseaudio*
จากนั้นรีบูท หลังจากรีบูตเครื่องให้เชื่อมต่อกับบลูทู ธ และเล่นเพลงบนโทรศัพท์ของคุณ ทุกอย่างจะถูกส่งไปยังคอมพิวเตอร์ของคุณและเล่นกับลำโพงของคอมพิวเตอร์
และใช่! ไม่เป็นไร
apt-get
ใช้นิพจน์ทั่วไปไม่ใช่อักขระตัวแทน ดังนั้นคุณจึงไม่ทราบว่าจะต้องติดตั้งโดยใช้อะไรpulseaudio*
(คำใบ้: ไม่ใช่เพียงแพ็คเกจที่ขึ้นต้นด้วยpulseaudi
) และ PulseAudio เป็นส่วนหนึ่งของการติดตั้งเริ่มต้นของ Ubuntu อยู่แล้ว