ฉันจะทราบได้อย่างไรว่าตัวแปลงสัญญาณ A2DP ใดที่โทรศัพท์ของฉันรองรับ / กำลังใช้อยู่


24

โปรไฟล์เสียง A2DP ของ Bluetooth รองรับตัวแปลงสัญญาณหลายตัว อุปกรณ์ทั้งหมดต้องรองรับ SBC (ตัวแปลงสัญญาณย่อยย่อย) จากนั้นพวกเขาสามารถรองรับตัวแปลงสัญญาณเสริมเพิ่มเติมเช่น MP3 และ AAC หรือตัวแปลงสัญญาณ "non-A2DP" เช่น apt-X

แน่นอนว่าตัวแปลงสัญญาณเหล่านี้ไม่สามารถใช้งานได้จริงหากผู้รับไม่สนับสนุนเช่นกันซึ่งในกรณีนี้อุปกรณ์ทั้งสองกลับไปที่ SBC

  1. ฉันจะทราบได้อย่างไรว่าตัวแปลงสัญญาณสนับสนุนฮาร์ดแวร์ / ROM ของฉันใด
  2. ฉันจะรู้ได้อย่างไรว่าตัวแปลงสัญญาณใดที่ใช้อยู่ในปัจจุบัน (อาจขึ้นอยู่กับแทร็กเช่นกันหากผ่านไฟล์ MP3 / AAC โดยตรงโดยไม่ต้องเข้ารหัสซ้ำเป็นต้น)

บทความนี้กล่าวว่า "ผู้ใช้ Android โชคดีเนื่องจากโทรศัพท์ Android รุ่นใหม่รองรับ AptX ซึ่งแตกต่างจาก Windows ก็เป็นไปได้ที่จะตรวจสอบว่าการเชื่อมต่อกำลังใช้ AptX!" แต่ไม่มีคำอธิบายว่าอย่างไร
endolith

คำตอบ:


10

บนโทรศัพท์ Cyanogen 10.1 ของฉัน (AOSP 4.2.2) เป็นไปได้ที่จะเปิดใช้งานการจับภาพการรับส่งข้อมูลบลูทู ธ จากนั้นคุณสามารถโหลดการจับภาพนี้ลงใน Wireshark และดูที่ขั้นตอนการเจรจาต่อรองเพื่อตรวจสอบว่าตัวแปลงสัญญาณใดที่อุปกรณ์เสียงออกที่จับคู่รองรับ ไม่แน่ใจว่าระบบปฏิบัติการใดรองรับสิ่งนี้: เมื่อฉันลองใช้วิธีนี้เป็นครั้งแรกจะมีการอ้างสิทธิ์การสนับสนุนตั้งแต่ 4.4 เป็นต้นไป แต่ไม่ชัดเจนว่าเป็นกรณีที่ใช้ CM บน Doubleshot :-)

สมมติว่าคุณมีการตั้งค่าสิ่งที่จำเป็น (รูต ~ 4.2.2 หรือใหม่กว่า) นี่คือขั้นตอน:

  1. จับคู่โทรศัพท์ของคุณกับอุปกรณ์ A2DP ที่น่าสนใจ
  2. ปิดการใช้งานบลูทู ธ ในโทรศัพท์ของคุณ
  3. แก้ไขไฟล์นี้: /etc/bluetooth/bt_stack.conf เปลี่ยนการตั้งค่า BtSnoopLogOutput จากค่าเริ่มต้นของเท็จเป็นจริง สำหรับสิ่งนี้ฉันใช้ ES Note Editor เปิดตัวจาก ES File Explorer หลังจากเปิดใช้งานการตั้งค่า "รูทเบราว์เซอร์"
  4. เริ่ม CatLog โดยเปิดใช้งานการบันทึกทุกประเภท
  5. เปิดใช้งานบลูทู ธ ในโทรศัพท์ของคุณ
  6. หลังจากจับคู่กับอุปกรณ์เอาต์พุตแล้วให้เล่นตัวอย่างของเสียงกับเครื่องเล่นที่คุณเลือก (ฉันใช้ Apollo) สิบวินาทีหรือมากกว่านั้นควรมีมากมาย
  7. ปิดการใช้งานบลูทู ธ อีกครั้ง
  8. หยุดการบันทึกของ CatLog และบันทึกไฟล์บันทึกลงในการ์ด SD ของคุณ
  9. [สำคัญ!] แก้ไข bt_stack.conf เปลี่ยน BtSnoopLogOutput กลับไปเป็นเท็จ
  10. คัดลอกการจับภาพ BT จากการ์ด SD ของคุณ (/sdcard/btsnoop_hci.log) พร้อมกับไฟล์ CatLog ที่บันทึกไว้ไปยังคอมพิวเตอร์ที่มีสำเนา Wireshark ปัจจุบันติดตั้งอยู่
  11. โหลดไฟล์จับภาพลงใน Wireshark และตั้งค่าตัวกรองการแสดงผล Wireshark ของ "btavdtp" (ไม่มีเครื่องหมายคำพูด) ตอนนี้คุณจะเห็นเพียงไม่กี่แพ็กเก็ตค้นหาการตอบกลับของอุปกรณ์เอาต์พุตไปยังเคียวรี AVDTP GetCapabilities และคุณจะได้คำตอบของคุณ

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

เมื่อฉันมีเวลามากขึ้นฉันหวังว่าจะลดขั้นตอนที่ค่อนข้างยาวลงไปที่แอพ แต่ไม่แน่ใจว่าเป็นไปได้หรือไม่และจะไม่มีเวลาซักพัก ในขณะเดียวกันข้อเสนอแนะเพื่อปรับปรุงกระบวนการข้างต้นยินดีต้อนรับ


1
ขอบคุณ มันใช้งานได้ดีมาก ฉันไม่พบสิ่งใดที่เกี่ยวข้องกับความสามารถในบันทึกของ CatLog อย่างไรก็ตามลองใช้กับ Moto G (2013) ที่ใช้ CM 4.4.2 และด้วยชุดหูฟัง LG HBS-730 ไม่มี apt-X ในบันทึกเพราะ CM ไม่มี libs กรรมสิทธิ์สำหรับสิ่งนั้น
dvim

ขอบคุณ @Martynas รู้ดี มันรวมการรองรับ mp3 หรือเปล่า? ฉันสงสัยว่าอาจเป็นเป้าหมายที่ดีสำหรับการทดสอบว่าโทรศัพท์ของฉันรองรับ mp3 วิทยุรถยนต์ไม่น่าเสียดายและฉันไม่พบผลิตภัณฑ์ใด ๆ (!) ซึ่งรองรับตัวแปลงสัญญาณ A2DP เกี่ยวกับ CatLog ไม่คิดว่ารายการตัวแปลงสัญญาณที่แท้จริงจะอยู่ในนั้นมากเท่ากับข้อความแนะนำซึ่งสามารถใช้ในการค้นหาซอร์สโค้ด อีกวัน ..
ewedel

1
ดังนั้นการตอบDiscoverกลับอ่างเสียงสามคืน การตอบสนองการGetCapabilitiesสำหรับการACP SEID [2 - Audio Sink]รวมที่มีService: Media Codec - Audio MPEG-1,2 Audio MP3: Trueฉันได้อัปโหลดไฟล์บันทึกที่จับไปยังGitHubแล้ว
dvim

ขอบคุณอีกครั้ง @Martynas แม้ว่า 730 จะมีรีวิวที่ดีกว่า แต่ก็คว้า LG HBS-750 มาทดสอบ ชุดเดียวกันของตัวแปลงสัญญาณเป็น 730. มีคดเคี้ยว repo ของคุณและเพิ่มการจับอีกที่นี่ น่าเสียดายที่ทั้งสองเราจับภาพโทรศัพท์กำลังเลือกใช้ SBC แทน mp3 ไม่แน่ใจว่าคุณใช้ไฟล์สื่อชนิดใด แต่การทดสอบ CM 4.2.2 ของฉันใช้ mp3s VBR 128kb / s (บิตเรตขนาดเล็กโดยเจตนาเพื่อหลีกเลี่ยงการเน้นแบนด์วิดท์ BT) เริ่มคิดว่า CE4 อาจจะมีสิทธิ์เกี่ยวกับปัญหาการออกใบอนุญาต
ewedel

eiditing ของ `/ etc / bluetooth / bt_stack.conf` ดูเหมือนจะไม่ทำงาน แต่ฉันมีการตั้งค่าแบบเดียวกันในการตั้งค่านักพัฒนาและทำงานได้ ขอบคุณคำตอบของคุณฉันจัดการเพื่อหาว่า Parrot Zik 2 ใช้ SBC เป็นส่วนใหญ่
ศูนย์

8

เมื่อดูที่แหล่งที่มามีตัวแปลงสัญญาณอย่างน้อย 4 ตัว: SBC (จำเป็น), MP3 (MPEG12), AAC (MPEG24) และ ATRAC ของ Sony

./android/external/bluetooth/bluez/audio/a2dp.h:  
#define A2DP_CODEC_SBC          0x00
#define A2DP_CODEC_MPEG12       0x01
#define A2DP_CODEC_MPEG24       0x02
#define A2DP_CODEC_ATRAC        0x03

ซอฟต์แวร์พื้นฐานคือ linux '"bluez" stack รองรับ SBC และมีความสามารถ MP3 จำกัด

changelog สำหรับ v3.25 (2009?) อ่านว่า: "เพิ่มการสนับสนุนที่ จำกัด สำหรับตัวแปลงสัญญาณ MPEG12 / MP3"

./android/external/bluetooth/bluez/ChangeLog:
ver 3.25:
    Add limited support for Handsfree profile.
    Add limited support for MPEG12/MP3 codec.

เห็นแล้วยัง v3.25 ประกาศ การสนับสนุน MP3 ดูเหมือนจะขึ้นอยู่กับ gstreamer ซึ่งไม่สามารถใช้กับ Android ดังนั้นฉันแค่เดาว่า SBC เป็นตัวเลือกเดียวสำหรับการบูต A2DP

PS: อุปกรณ์ A2DP ส่วนใหญ่ดูเหมือนจะขาดการสนับสนุน MP3 / AAC เนื่องจากปัญหาสิทธิบัตร / ใบอนุญาต (รวมถึง Linux)


2
เหล่านี้เป็นตัวแปลงสัญญาณ 3 ตัวเลือกใช่หรือสามารถใช้ตัวแปลงสัญญาณอื่น ๆ เช่นกาแล็กซี่ S III ใช้ apt-X ฉันคิดว่าการเข้ารหัสนั้นมาจากฮาร์ดแวร์ Android สามารถเล่น MP3 ดังนั้นฉันสงสัยว่ามีข้อ จำกัด ด้านสิทธิบัตร
endolith

2
ฉันไม่คิดว่า SBC มีตัวเข้ารหัสฮาร์ดแวร์โดยเฉพาะในอุปกรณ์ Android มันค่อนข้างเรียบง่ายในการคำนวณดังนั้นฉันเดาว่ามันเสร็จแล้วในซอฟต์แวร์ อย่างน้อยแหล่งข่าวระบุว่า PS: ฉันกำลังมองหาที่มาของ Cyanogenmod ไม่ใช่ของ HTC หรือของ Samsung PS2: ฉันหมายถึงอุปกรณ์เก็บเสียงในอีกด้านหนึ่งโดยขาด mp3 / aac (ชุดหูฟังและอื่น ๆ )
ce4

7

ด้วย Nexus 4 (5.0.1) หรือ Nexus 7 (2012) (4.4.4) อุปกรณ์เป็นไปได้ที่จะใช้โหมดนักพัฒนาซอฟต์แวร์เพื่อรับ btsnoop_hci.log "เปิดใช้งานบันทึก snoop บลูทู ธ HCI" ไม่จำเป็นต้องรูทอุปกรณ์ ดูเหมือนว่าอุปกรณ์ทั้งสองจะไม่เสนอ aptx ฉันทดสอบสิ่งนี้ด้วย Moto Stream (no aptx) และ Philips AEA2500 (with aptx)


1
ฉันใช้งาน CM 12.1 และฉันยังมียานี้ให้ฉันด้วย บางทีมันอาจจะเป็นในโทรศัพท์ล่าสุดทั้งหมด ขอบคุณ
pedro_sland

4

[เครดิตสำหรับคำตอบนี้ส่วนใหญ่ไปที่ ewedel ซึ่งชี้แจงว่าคำตอบนั้นอยู่ในไฟล์ btsnoop_hci.log โดยใช้ Wireshark; และ prittstift69 เพื่อแบ่งปันวิธีง่ายๆในการสร้างไฟล์บันทึกนี้]

นี่คือการสอนที่เป็นมิตรกับมือใหม่ทีละขั้นตอนสรุปคำตอบที่ได้รับแล้วพร้อมกับการตีความผลลัพธ์บางอย่างจากฉัน

ดังที่ prittstift69 และคนอื่น ๆ พูดถึงคุณสามารถ "เปิดใช้งานบันทึกการสอดแนมบลูทู ธ HCI" ภายใต้ตัวเลือกนักพัฒนา ไม่จำเป็นต้องทำตามแนวทางที่ซับซ้อนยิ่งขึ้นที่ ewedel แนะนำ

  1. เริ่มต้นด้วยการปิดบลูทู ธ บนอุปกรณ์ Android (ฉันจะเรียกมันว่า 'โทรศัพท์')

  2. เปิดบันทึกการบลูทู ธ HCI ภายใต้ตัวเลือกของนักพัฒนา

  3. เปิดบลูทู ธ บนโทรศัพท์และเชื่อมต่อกับตัวรับสัญญาณบลูทู ธ (ฉันจะเรียกมันว่า 'ตัวรับ') ขั้นตอนนี้จะถือว่าผู้รับได้รับการจับคู่กับโทรศัพท์ก่อนหน้านี้

  4. เล่นเพลงบนโทรศัพท์ของคุณ (เป็นไฟล์ WAV หรือ FLAC ที่ไม่มีการบีบอัด) สิบวินาทีคือสิ่งที่คุณต้องการ (อาจจะน้อยกว่านี้)

  5. ปิด Bluetooth บนโทรศัพท์

  6. ปิดบันทึกการสอดแนมบลูทู ธ HCI

  7. ถ่ายโอนไฟล์ btsnoop_hci.log (ฉันพบใน / sdcard / Android / Data /) ไปยังคอมพิวเตอร์ของคุณ เปิด wireshark บนคอมพิวเตอร์ของคุณและเปิดไฟล์ btsnoop_hci.log

  8. ตัวกรองสำหรับ "btavdtp" (ไม่มีเครื่องหมายอัญประกาศ) ค้นหาข้อความจากโทรศัพท์ไปยังผู้รับ "ส่งคำสั่ง - SetConfiguration .... " นี่คือข้อความที่โทรศัพท์ส่งไปยังผู้รับด้วยการกำหนดค่าสุดท้ายที่จะใช้สำหรับเสียงนี้ หลังจากเสร็จสิ้นการจับมือกัน ข้อความในฟิลด์ข้อมูลจะบอกคุณว่าการกำหนดค่าสุดท้ายคืออะไร

[SBC] ถ้าเป็น SBC คุณอาจต้องการทราบว่า bitpool คืออะไร หากต้องการทำสิ่งนี้ลบตัวกรองสำหรับ btavdtp และค้นหาข้อความที่มี Protocol SBC และคลิกที่ตัวกรอง ด้านล่างในส่วนรายละเอียดขยายข้อมูลตัวแปลงสัญญาณ Bluetooth SBC จากนั้นขยายข้อมูล Frame ใด ๆ (หรือทั้งหมด) ที่นั่นควรแสดง Bitpool ที่ใช้โดย Frame นั้นอย่างชัดเจน ถ้าเป็น 35 มีโอกาสดีที่อัตราตัวอย่างของคุณคือ 44.1 kHz คุณกำลังใช้ Joint Stereo และใช้โปรไฟล์เสียง SBC ระดับกลาง ( http://soundexpert.org/news/-/blogs/bluetooth-audio) -quality-a2dp ) บิตเรตสำหรับเสียงที่บีบอัดนั้นคือ 229 kbits / วินาที SBC ซึ่งได้คะแนน 4.68 ในการทดสอบของ Sound Expert ( http://soundexpert.org/encoders-224-kbps ) ซึ่งเทียบเท่ากับ mp3 ประมาณ 110-130 kbits / วินาที

[APT-X] ถ้าเป็น APT-X ทั้งโทรศัพท์และเครื่องรับของคุณรองรับ APT-X และนั่นคือสิ่งที่ใช้งานอยู่ สมมติว่า 16 บิต 44.1kHz ตัวแปลงสัญญาณทำงานที่ 352kbits / s


"เป็นไฟล์ WAV หรือ FLAC ที่ไม่มีการบีบอัดในอุดมคติ" คุณไม่ต้องการเล่น MP3 เพื่อดูว่ามันส่งเป็น MP3 หรือไม่?
endolith

2
เฉพาะในกรณีที่เป้าหมายของคุณคือดูว่า A2DP รองรับ mp3 ทั้งสองด้าน (คำถามที่ถูกต้อง) อย่างไรก็ตามประสบการณ์ของฉันคือการรองรับ mp3 ทั้งสองด้านนั้นหายาก (ฉันไม่เคยเห็นมันมาในอุปกรณ์ใด ๆ เลยและฉันก็มีไม่มาก) อย่างน้อยที่สุดกับอุปกรณ์ Android ตัวเลือกตัวแปลงสัญญาณ A2DP ที่เป็นไปได้มากที่สุดของคุณคือ SBC และ APTX การเล่นไฟล์เสียงที่ไม่มีการบีบอัดจะทำให้โทรศัพท์เข้ารหัสอีกครั้ง
klaberte

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