ฉันสามารถใช้คอมพิวเตอร์เป็นตัวรับสัญญาณ / ลำโพงบลูทู ธ A2DP ได้หรือไม่?


40

ก่อนอื่นปัญหา: ฉันใช้เครื่องเล่น MP3 Cowon เป็นเครื่องเล่นเพลงหลักที่มีที่อุดหูพื้นฐาน

มันมี A2DP และฉันต้องการให้เน็ตบุ๊กของฉัน (ใช้ UNE 10.04) ทำหน้าที่เป็นผู้รับ

แหล่งข้อมูลบนเว็บเกี่ยวกับ a2dp แต่ส่วนใหญ่ล้าสมัย:

คำตอบ:


47

ในการใช้เครื่อง 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

อ้างอิง:

  • บล็อกโพสต์สรุปรายละเอียดบางอย่างเกี่ยวกับวิธีการแก้ไขใน Ubuntu

เราสามารถเปลี่ยนแผนที่ช่องสำหรับอุปกรณ์ที่ต้องการได้หรือไม่
Prakash V Holkar

สวัสดีและขอบคุณสำหรับคำแนะนำรายละเอียด คำสั่งpactl load-module module-bluethooth-discoverล้มเหลวใน ubuntu studio 14.04 ดังนั้นฉันจึงไม่เห็นbluezแหล่งข้อมูลใด ๆในpulseaudioแม้ว่าโทรศัพท์ของฉันจะเห็นพีซีอย่างถูกต้องเป็นอ่างเสียง ความคิดใด ๆ
NASS

หาก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-ฟุตเป็นอธิบายที่นี่ มิฉะนั้นเชื่อมต่อทางโทรศัพท์และเริ่มเล่นบางสิ่ง
Treviño

ฉันยังไม่เห็นแหล่งที่มาจาก bluez ปรากฏขึ้น Linux Mint 17.3 "Rosa" ที่นี่
donquixote

1
ว้าว! ด้วยการเปลี่ยนแปลงที่น้อยที่สุด (/etc/bluetooth/main.conf แทน audio.conf) สิ่งนี้ใช้ได้กับ Rasbian ขอบคุณ! (ไม่จำเป็นต้องมีการกำหนดค่าลูปแบ็คในระบบปฏิบัติการนั้น)
jamie

13

ฉันใช้ blueman ติดตั้งจากศูนย์ซอฟต์แวร์ Ubuntu คลิกขวาที่ไอคอน blueman * -> "บริการในพื้นที่" -> audio-> ตรวจสอบ "การรับสัญญาณเสียงขั้นสูง" ถูกเอียง Btw ฉันใช้มันเพื่อฟังใน Ubuntu 11.10 แล็ปท็อปที่ฉันเล่นบนโทรศัพท์ Android ของฉัน

* ไอคอน blueman แสดงที่มุมล่างขวาใน gnome shell + ubuntu 11.10 นั่นคือเคสของฉัน ฉันหวังว่านี่จะมีประโยชน์ในทางใดทางหนึ่งสำหรับคุณ


อินเตอร์เฟสการกำหนดค่า blueman สำหรับเสียงตั้งค่า Enable = Source เป็น /etc/bluetooth/audio.conf เท่านั้นดังนั้นฉันไม่เห็นว่าจะให้ android ใช้คอมพิวเตอร์เป็นสัญญาณเสียงได้อย่างไร
slangasek

ตกลงดังนั้นถ้าฉันตั้งไว้ใน audio.conf แล้วยกเลิกการจับคู่ทั้งสองด้านของการเชื่อมต่อนั่นน่าจะเพียงพอที่จะให้ Android เห็นคอมพิวเตอร์เป็นที่เก็บเสียงหลังจากทั้งหมด ...
slangasek

ฉันลองและไม่สามารถรับรู้ว่าเป็นอ่างเสียง : - /
Jorge Castro

blueman ทำงานให้ฉันใน 12.04 โดยไม่มีปัญหาอะไรเลยนอกจากความจริงแล้วฉันจบด้วยไอคอนบลูทู ธ สองอันในแอปเพล็ตตัวบ่งชี้
HDave

7

ตอนนี้มันง่ายมากใน 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


หลังจากโหลดโมดูลย้อนกลับสำหรับอ่างล้างมือโดยเฉพาะอย่างยิ่งเราสามารถเปลี่ยนแผนที่ของช่องของโมดูลย้อนกลับของอุปกรณ์โดยเฉพาะไปทางซ้ายหรือขวา
Prakash V Holkar

3

สำหรับ 13.04 ให้จับคู่อุปกรณ์ต้นทางของคุณกับแล็ปท็อปอูบุนตูและใช้งานได้! เจ๋งมากที่พบว่ามันเป็นเรื่องง่ายในขณะนี้



0

ทางออกที่ง่ายกว่าคำตอบ

คุณสามารถไปได้

sudo apt-get install pulseaudio*

จากนั้นรีบูท หลังจากรีบูตเครื่องให้เชื่อมต่อกับบลูทู ธ และเล่นเพลงบนโทรศัพท์ของคุณ ทุกอย่างจะถูกส่งไปยังคอมพิวเตอร์ของคุณและเล่นกับลำโพงของคอมพิวเตอร์

และใช่! ไม่เป็นไร


apt-getใช้นิพจน์ทั่วไปไม่ใช่อักขระตัวแทน ดังนั้นคุณจึงไม่ทราบว่าจะต้องติดตั้งโดยใช้อะไรpulseaudio*(คำใบ้: ไม่ใช่เพียงแพ็คเกจที่ขึ้นต้นด้วยpulseaudi) และ PulseAudio เป็นส่วนหนึ่งของการติดตั้งเริ่มต้นของ Ubuntu อยู่แล้ว
muru

ใช่ แต่สิ่งนี้จะใช้ได้กับคนขี้เกียจทุกคนที่ต้องการให้สิ่งต่าง ๆ ทำงานได้ทันที
Adel Abula - MageBinary
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.