ฉันยังใหม่กับ Linux และใหม่กับสคริปต์บลูทู ธ สิ่งที่ฉันค้นพบจนถึงตอนนี้คือ:
- Bluez เป็นสแต็ก BT เริ่มต้น
- BluezTools เป็นชุดของสาธารณูปโภคที่คุณสามารถใช้เพื่อโต้ตอบกับ Bluez ได้ง่ายขึ้น
- DBus เป็นอินเทอร์เฟซ Bluez ที่เชื่อมต่อกับขณะที่โต้ตอบโดยตรงกับฮาร์ดแวร์
- PulseAudio เป็นระบบย่อยที่รับผิดชอบในการผลิตเสียงบนระบบ
มันสมเหตุสมผลแล้ว สมมติว่าฉันมีชุดหูฟังบลูทู ธ สิ่งที่ฉันคาดหวังคือ (ทั้งหมดหลังจากจับคู่และไว้วางใจ) เพื่อให้สามารถออกคำสั่งที่สามารถเชื่อมต่อกับโปรไฟล์บางอย่างบนหูฟัง BT ได้โดยตรง
เส้นทางทางเทคนิคที่ฉันมีอยู่ในใจจะเป็นเช่น:
- เปิดหูฟัง
- ออกคำสั่ง BluezTools - เช่นbt-audio -c
- รอให้อุปกรณ์เชื่อมต่อกับบริการที่ฉันใช้อยู่
- PulseAudio ควรรับอุปกรณ์เอาต์พุตใหม่
- ออกคำสั่งอื่นเพื่อเปลี่ยนเสียงจากที่เคยเป็นเสียงออกใหม่ (หูฟัง BT)
- เพลิดเพลินไปกับประสบการณ์การฟังที่ไร้รอยต่อ
ทั้งหมดนี้ดูเหมือนว่ามีเหตุผล แต่การใช้งานจริงไม่เป็นเช่นนี้และฉันกำลังมองหา WHY ดังนั้นฉันจึงสามารถเข้าใจปัญหาได้ดีขึ้นและลองแก้ไข
นี่คือสิ่งที่เกิดขึ้นจริง:
- เปิดหูฟัง
- ออกคำสั่ง BluezTools - เช่นbt-audio -c
- รอให้อุปกรณ์เชื่อมต่อกับบริการที่ฉันใช้อยู่
- PulseAudio ควรรับอุปกรณ์เอาต์พุตใหม่
- ออกคำสั่ง PulseAudio เพื่อเปลี่ยนโปรไฟล์เสียงจากคุณภาพโทรศัพท์เป็นความแม่นยำสูง
ขอผมขยายเรื่องนี้หน่อย ชุดหูฟังบลูทู ธ มีโหมดคุณภาพ 2 โหมด (โทรศัพท์และความเที่ยงตรงสูง) มีเพียง 1 เดียวเท่านั้นที่เหมาะสำหรับการฟังเพลง
ฉันคาดหวังว่าหูฟัง BT จะเปิดเผยแต่ละโหมดคุณภาพเป็นบริการใช่ไหม สมมติฐานนี้อาจผิด แต่ฉันคาดว่าจะเป็นเช่นนั้น
bt-audio -c highFidelityProfile
หรือ
bt-audio -changeProfile highFidelityProfile
ดูเหมือนว่า Bluez จะจัดการการเชื่อมต่อ RAW กับอุปกรณ์และจากที่นั่นคุณจำเป็นต้องออก a: pacmd set-card-profile $ INDEX a2dp
สิ่งนี้ดูเหมือนผิดปกติ ทำไมการควบคุมคุณภาพในระบบย่อยเสียงจึงต้องมีการใช้งานที่แตกต่างกันสำหรับพัลส์หรืออัลซาหรือระบบย่อยเสียงอื่น ๆ
ฉันกำลังคิดถึงอะไร เหตุใดจึงไม่สามารถเชื่อมต่อโดยตรงไปยังโปรไฟล์ที่กำหนดโดยใช้ Bluez / BluezTools เป็นต้น