คำเตือน: นี่เป็นคำแนะนำขั้นสูงที่เกี่ยวข้องกับการปรับเปลี่ยนบลูทู ธ สแต็กของคุณบน Android - อ่านคู่มือนี้อย่างครบถ้วนและปฏิบัติตามคำแนะนำทั้งหมดตามที่ระบุ
แม้ว่าชุดหูฟังบลูทู ธ และเสียงบลูทู ธ จะเป็นที่นิยม แต่ก็เป็นปัญหาเล็กน้อยสำหรับออดิโอไฟล์เนื่องจากบลูทู ธ ได้รับการพิสูจน์แล้วว่าลดคุณภาพเสียงเนื่องจากข้อมูลเสียงและความถี่ส่วนน้อยหายไปในอากาศผ่านการสตรีมบลูทู ธ
นี่คือเหตุผลที่ผู้ผลิตบางรายออกตัวแปลงสัญญาณ aptX และ LDAC เพื่อปรับปรุงคุณภาพเสียงให้ดีขึ้นกว่าตัวแปลงสัญญาณบลูทู ธ SBC มาตรฐานซึ่งรองรับโดยหูฟังทั้งหมดและอุปกรณ์บลูทู ธ ส่วนใหญ่อย่างไรก็ตามอุปกรณ์ที่มีตัวแปลงสัญญาณ aptX และ LDAC มีราคาแพงกว่ามากเนื่องจากตัวแปลงสัญญาณเหล่านี้ ต้องมีค่าธรรมเนียมใบอนุญาตซึ่งผู้บริโภคจ่ายในระยะยาว
คุณภาพเสียงต่ำของตัวแปลงสัญญาณบลูทู ธ SBC เกิดจากข้อ จำกัด เทียมของการกำหนดค่าบลูทู ธ สแต็กและหูฟังปัจจุบันทั้งหมดและข้อ จำกัด นี้สามารถหลีกเลี่ยงได้กับอุปกรณ์ที่มีอยู่
หากคุณสนใจเสียงบลูทู ธ เราจะแสดงให้คุณเห็นในตอนท้ายของคู่มือนี้เกี่ยวกับวิธีถ่ายโอนบันทึกเสียงบลูทู ธ และตรวจสอบเพื่อดูคุณภาพเสียงและความถี่ที่คุณได้รับจากเครื่องรับบลูทู ธ ของ Android
คู่มือนี้ส่วนใหญ่จะเน้นไปที่การปรับแต่งง่ายๆและวิธีอ่านเอาต์พุตเสียง Bluetooth ของคุณเพื่อเพิ่มคุณภาพเอาต์พุตของตัวแปลงสัญญาณบลูทู ธ SBC มาตรฐานอย่างมาก - โปรดอ่านคู่มือทั้งหมดนี้อย่างละเอียดเนื่องจากมีการศึกษาค่อนข้างมากและมีหลายสิ่งที่แตกต่างกัน เพื่อแฟลชหรือปรับแต่งขึ้นอยู่กับรุ่นอุปกรณ์ของคุณ
ในตอนท้ายของคู่มือนี้เป็นรายการบลูทู ธ สแต็คที่ติดตั้งไว้ล่วงหน้าสำหรับอุปกรณ์ Android ยอดนิยมจำนวนมากซึ่งสามารถแฟลชในการกู้คืนได้เช่นเดียวกับที่คุณทำกับไฟล์. zip อื่น ๆ หากไม่มีอุปกรณ์ใดเป็นของคุณคุณจะมี เพื่อทำตามคำแนะนำสำหรับการแก้ไขบลูทู ธ สแต็กบน Android
ข้อมูลทางเทคนิคสั้น ๆ เกี่ยวกับ SBC codec
SBC มีพารามิเตอร์ต่างๆมากมายที่ต่อรองระหว่างขั้นตอนการตั้งค่าการเชื่อมต่อ:
- ประเภทและหมายเลขช่องสัญญาณเสียง: สเตอริโอร่วม, สเตอริโอ, ช่องสัญญาณคู่, โมโน;
- จำนวนคลื่นความถี่: 4 หรือ 8;
- จำนวนบล็อกเสียงในหนึ่งแพ็คเก็ต: 4, 8, 12, 16;
- อัลกอริธึมการจัดสรรบิต Quantization: Loudness, SNR;
- พูลบิตสูงสุดและต่ำสุดที่ใช้ในกระบวนการหาปริมาณ: โดยปกติคือ 2-53
จำเป็นต้องใช้ตัวถอดรหัสเพื่อรองรับการรวมกันของพารามิเตอร์เหล่านี้ ตัวเข้ารหัสอาจใช้เพียงบางส่วนเท่านั้น
สแต็คบลูทู ธ ที่มีอยู่มักจะเจรจาโปรไฟล์ต่อไปนี้: สเตอริโอร่วม, 8 แบนด์, 16 บล็อค, ความดัง, บิตพูล 2..53 โปรไฟล์นี้เข้ารหัสเสียง 44.1 kHz ด้วยบิตเรต 328 kbps
พารามิเตอร์ Bitpool ส่งผลโดยตรงต่อบิตเรตภายในโปรไฟล์เดียวกัน: ยิ่งสูงเท่าใดบิตเรตก็จะยิ่งสูงขึ้นเท่านั้นและด้วยเหตุนี้คุณภาพ
อย่างไรก็ตามพารามิเตอร์ bitpool ไม่ถูกผูกไว้กับโปรไฟล์เฉพาะ บิตเรตยังได้รับผลกระทบอย่างมีนัยสำคัญจากพารามิเตอร์อื่น ๆ เช่นประเภทช่องสัญญาณเสียงจำนวนย่านความถี่จำนวนบล็อกเสียง คุณสามารถเพิ่มบิตเรตทางอ้อมได้โดยการเจรจาต่อรองโปรไฟล์ที่ไม่ได้มาตรฐานโดยไม่ต้องเปลี่ยนบิตพูล
ตัวอย่างเช่น Dual Channel เข้ารหัสแชนเนลแยกกันโดยใช้ bitpool ทั้งหมดสำหรับแต่ละแชนเนล การบังคับให้อุปกรณ์ใช้ Dual Channel แทน Joint Stereo จะทำให้เราได้รับบิตเรตเพิ่มขึ้นเกือบสองเท่าที่ bitpool สูงสุดเท่ากันคือ 617 kbps
สำหรับฉันแล้วรู้สึกว่า bitpool ควรเป็นตัวแปรภายใน เป็นข้อผิดพลาดในการออกแบบข้อกำหนด A2DP ที่ค่า bitpool ไม่ผูกกับพารามิเตอร์ตัวแปลงสัญญาณอื่นและกำหนดเป็นค่าส่วนกลางเท่านั้น
ค่า Bitpool และ Bitrate คงที่เหล่านี้มาจากค่าที่แนะนำสำหรับเสียงคุณภาพสูง แต่คำแนะนำไม่ใช่ข้ออ้างในการ จำกัด โปรไฟล์ไว้ที่ค่าเหล่านี้
ข้อกำหนด A2DP v1.2 ซึ่งใช้งานตั้งแต่ปี 2550 ถึง 2558 กำหนดให้ตัวถอดรหัสทั้งหมดทำงานได้อย่างถูกต้องด้วยบิตเรตสูงสุด 512 kbps:
ตัวถอดรหัสของ SNK จะต้องรองรับค่า bitpool ที่เป็นไปได้ทั้งหมดที่ไม่ส่งผลให้อัตราบิตสูงสุดเกิน โปรไฟล์นี้ จำกัด อัตราบิตสูงสุดที่มีอยู่ที่ 320kb / s สำหรับโมโนและ 512kb / s สำหรับโหมดสองแชนเนล
ในข้อกำหนดเวอร์ชันใหม่ไม่มีการ จำกัด บิตเรต สันนิษฐานว่าหูฟังสมัยใหม่ที่วางจำหน่ายหลังปี 2015 สามารถรองรับบิตเรตได้ สูงถึง 1,000 kbps .
ด้วยเหตุผลบางประการบลูทู ธ สแต็กที่ทดสอบในปัจจุบันทั้งหมด (Linux (PulseAudio), Android, Blackberry และ macOS) มีข้อ จำกัด เทียมของพารามิเตอร์ bitpool สูงสุดซึ่งส่งผลโดยตรงต่อบิตเรตสูงสุด แต่นี่ไม่ใช่ปัญหาที่ใหญ่ที่สุดหูฟังเกือบทั้งหมดยัง จำกัด ค่า bitpool สูงสุดไว้ที่ 53
อุปกรณ์ส่วนใหญ่ทำงานได้ดีบนสแต็กบลูทู ธ ที่แก้ไขโดยมีบิตเรต 507 kbps โดยไม่มีการขัดจังหวะและเสียงแตก แต่บิตเรตดังกล่าวจะไม่สามารถเจรจาได้ภายใต้เงื่อนไขปกติโดยมีบลูทู ธ สแต็คสต็อก
*** จำเป็นสำหรับการทดสอบโดยใช้คำแนะนำด้านล่าง: บลูทู ธ dualchannel ทดสอบ ubuntu-18.04.1-desktop-amd64.iso.torrent
วิธีทดสอบบนพีซี
การทดสอบความเข้ากันได้ของหูฟัง SBC บิตเรตสูงเป็นวิธีที่ง่ายที่สุดในการดำเนินการบนพีซีด้วยอะแดปเตอร์บลูทู ธ ฉันได้เตรียมอิมเมจ Ubuntu พร้อมบลูทู ธ สแต็กที่ปรับเปลี่ยนแล้วซึ่งสามารถทำงานได้เหมือนในเครื่องเสมือน (โดยการเชื่อมต่ออะแดปเตอร์บลูทู ธ เป็นอุปกรณ์ USB ภายในเครื่องเสมือนมันยังทำงานร่วมกับอะแดปเตอร์ที่มีอยู่ในแล็ปท็อป) หรือโดยการบูตจาก แฟลชไดรฟ์ USB ภาพนี้ใช้โปรไฟล์ต่อไปนี้: Dual Channel, 8 แบนด์, 16 บล็อค, Loudness, bitpool 2..41, 44.1 kHz ซึ่งให้บิตเรต 485 kbps
ทำงานใน VM
- ดาวน์โหลด Virtualbox และ Virtualbox Extension Pack: https://www.virtualbox.org/wiki/Downloads;
- ติดตั้ง Virtualbox เริ่มต้น
- ติดตั้ง Extension Pack โดยใช้ File → Preferences → Extensions;
- สร้างเครื่องเสมือนใหม่: Linux, Ubuntu (64 บิต), 1024 RAM อย่าสร้าง HDD
- ไปที่การตั้งค่าเครื่องเสมือนในที่จัดเก็บเลือกคอนโทรลเลอร์: IDE ว่างเปล่ากดไอคอนซีดี→เลือกไฟล์ออปติคัลดิสก์เสมือน
- เลือกดาวน์โหลด bluetooth-dualchannel-test-ubuntu-18.04.1-desktop-amd64.iso;
- บันทึกและปิดหน้าต่างการตั้งค่าเริ่มเครื่องเสมือน
- คลิกขวาที่ไอคอนสาย USB ที่ด้านล่างขวาเลือกอะแดปเตอร์บลูทู ธ ของคุณ
ทำงานบนพีซี
ภาพรองรับการบูต BIOS / CSM และ UEFI
- เบิร์นภาพไปยังแฟลชไดรฟ์ USB โดยใช้ Etcher: https://etcher.io/ การดำเนินการนี้จะลบไฟล์ที่มีอยู่ทั้งหมดในไดรฟ์ USB
- ปิดพีซี
- ใส่แฟลชไดรฟ์ USB เปิดพีซีและกดปุ่มสั่งการบูต (โดยปกติคือ Esc หรือ F12)
- เลือกแฟลชไดรฟ์ USB ของคุณ
ทำการทดสอบ
- (ไม่บังคับ แต่แนะนำ) ดับเบิลคลิกที่สคริปต์“ Btsnoop Dump” บนเดสก์ท็อป จะเริ่มจับข้อมูลบลูทู ธ เพื่อการวิเคราะห์ในภายหลัง อย่าปิดหน้าต่างเทอร์มินัล
- เปลี่ยนหูฟังเป็นโหมดจับคู่
- คลิกที่ลูกศรที่มุมขวาบนเลือกไอคอนบลูทู ธ →การตั้งค่าบลูทู ธ
- เลือกหูฟังของคุณรอจนกว่าการจับคู่จะเสร็จสมบูรณ์และปิดหน้าต่าง
- ตั้งค่าระดับเสียงของ Ubuntu เป็นประมาณ 2/3 ลดระดับเสียงโดยใช้ปุ่มชุดหูฟังเนื่องจากอาจดังมากหลังจากจับคู่
- เปิดโฟลเดอร์“ music” เล่น“ testrecord1.flac”;
- (ไม่บังคับ แต่แนะนำ) ปิดเครื่องเล่นปิดหน้าต่างเทอร์มินัล การดำเนินการนี้จะหยุดการดักจับข้อมูล
- (ไม่บังคับ แต่แนะนำ) เปิดเบราว์เซอร์ Firefox อัปโหลดการถ่ายโอนข้อมูล (btsnoop_hci.btsnoop บนเดสก์ท็อป) ไปที่ https://btcodecs.valdikss.org.ru/
คุณสามารถฟังเพลงอื่นในโฟลเดอร์เพลงหรืออัปโหลดเพลงของคุณเอง
ไม่ควรมีเสียงแตกเสียงขาดตอนหรือเสียงผิดเพี้ยนอื่น ๆ ในหูฟัง หากคุณได้ยินเสียงคุณภาพสูงนั่นหมายความว่าหูฟังของคุณรองรับเสียงที่มีอัตราบิต 485 kbps
วิธีทดสอบบนอุปกรณ์ Android
ในการทดสอบจากสมาร์ทโฟนหรือแท็บเล็ต Android คุณต้องใช้บลูทู ธ สแต็คที่แก้ไขแล้วซึ่งต้องใช้สิทธิ์รูท
วิธีถ่ายโอนข้อมูลบลูทู ธ บน Android
- ปิดบลูทู ธ
- ในการตั้งค่านักพัฒนาให้เปิดสวิตช์“ เปิดใช้งานบันทึกการสอดแนมบลูทู ธ HCI”
- เปิดบลูทู ธ เชื่อมต่อกับชุดหูฟังของคุณโดยใช้เมนูบลูทู ธ (สิ่งนี้สำคัญห้ามเชื่อมต่ออัตโนมัติ!)
- เล่นตัวอย่างเสียงสั้น ๆ
- เปิดการตั้งค่านักพัฒนาปิดสวิตช์“ เปิดใช้งานบันทึกการสอดแนมบลูทู ธ HCI”;
- ควรมีการสร้าง /storage/emulated/0/btsnoop_hci.log หรือ /data/misc/bluetooth/logs/btsnoop_hci.log หากไม่มีให้เปิด /etc/bluetooth/bt_stack.conf ด้วยโปรแกรมแก้ไขข้อความและดูเส้นทางในตัวเลือก BtSnoopFileName
ไม่ควรมีเสียงแตกเสียงขาดตอนหรือเสียงผิดเพี้ยนอื่น ๆ ในหูฟัง หากคุณได้ยินเสียงคุณภาพสูงที่มีไลบรารีที่ได้รับการแก้ไขนั่นหมายความว่าหูฟังของคุณรองรับเสียงที่มีอัตราบิต 512 kbps
โปรดปฏิบัติตามอัลกอริทึมด้านบนอย่างระมัดระวัง โดยเฉพาะอย่างยิ่งหากคุณปิดหูฟังหรือตัดการเชื่อมต่อหลังจากจับคู่สิ่งสำคัญคือต้องเชื่อมต่อกับหูฟังด้วยตนเองจากการตั้งค่าบลูทู ธ อย่าอนุญาตให้เชื่อมต่ออัตโนมัติ!
อุปกรณ์ที่รองรับ SBC อย่างน้อย 512 kbit / s
- 1MORE iBFree
- JBL เอเวอเรสต์ 310
- JBL เอเวอเรสต์ 700
- Skullcandy HESH 3
- โซนี่ WI-C400
- โซนี่ MDR-1ABT
- โซนี่ MDR-ZX770BT
- โซนี่ MDR-XB650BT
- โซนี่ MDR-XB950B1
- โซนี่ SBH50
- Bluedio T4s (Bitpool max 39. ตอบสนองเพื่อไม่รองรับ Dual Channel แต่ทำงานได้หากถูกบังคับ 462 kbit / s ไม่เป็นไปตามข้อกำหนด A2DP)
- Bluedio T5 (ตอบสนองเพื่อไม่รองรับ Dual Channel แต่จะทำงานได้หากถูกบังคับไม่เป็นไปตามข้อกำหนด A2DP)
- Bluedio T6 (ตอบสนองเพื่อไม่รองรับ Dual Channel แต่ทำงานได้หากถูกบังคับไม่เป็นไปตามข้อกำหนด A2DP ใช้ชิปสูงสุด 97220)
- Marshall Major II Bluetooth
- Overdrive RealForce D1
- Edifier W830BT
- DEXP BT-250
- Logitech BT Adapter
- หน่วยหัวยานยนต์ที่ไม่ใช่ชื่อ (ชิป CSR8645)
- เฮดยูนิตยานยนต์ Sony DSX-A400BT
อุปกรณ์ที่รองรับ SBC สูงกว่า 512 kbit / s
- JBL Everest 310 (617-660 กิโลบิต / วินาที)
- Sony WI-C400 (576 กิโลบิต / วินาที)
- Sony MDR-ZX770BT (617-660 กิโลบิต / วินาที)
- Marshall Major II Bluetooth (617-660 kbit / s)
- Overdrive RealForce D1 (730 kbit / s, dual channel, 4 subbands)
อุปกรณ์ที่ใช้บิตเรตที่สูงกว่าหรือ Dual Channel ไม่ได้
- Harper HB-202 (เสียงแตก; ชิป Beken BK3256)
- Sony Ericsson MW600 (การบิดเบือนความถี่สูงเสียงแตกอุปกรณ์จากปี 2009)
เหตุใดจึงสำคัญ: SBC 328k และ 485k เทียบกับ aptX
ตรงกันข้ามกับความเชื่อที่นิยมในคุณภาพเสียง aptX ในบางกรณีอาจให้คุณภาพเสียงที่แย่กว่า SBC ที่มีบิตเรตมาตรฐาน 328k
SBC จะจัดสรรบิตเชิงปริมาณสำหรับย่านความถี่แบบไดนามิกโดยทำหน้าที่ 'จากล่างขึ้นบน' หากใช้บิตเรตทั้งหมดสำหรับความถี่ต่ำและกลางความถี่ด้านบนจะ“ ถูกตัดออก” (ปิดเสียง)
aptX วัดคลื่นความถี่ที่มีจำนวนบิตเท่ากันอย่างต่อเนื่องซึ่งทำให้ตัวแปลงรหัสบิตเรตคงที่: 352 kbps สำหรับ 44.1 kHz, 384 kbps สำหรับ 48 kHz ไม่สามารถ 'โอนบิต' ไปยังความถี่ที่ส่วนใหญ่ต้องการได้ ซึ่งแตกต่างจาก SBC ตรงที่ aptX จะไม่ 'ตัด' ความถี่ แต่จะเพิ่มเสียงรบกวนในการหาปริมาณลดช่วงไดนามิกของเสียงและบางครั้งก็ทำให้เกิดเสียงแตก ในทางตรงกันข้าม SBC“ กินรายละเอียด” - ทิ้งพื้นที่ที่เงียบที่สุด
โดยเฉลี่ยแล้วเมื่อเทียบกับ SBC 328k aptX จะทำให้ดนตรีมีความผิดเพี้ยนน้อยลงด้วยช่วงความถี่กว้าง แต่สำหรับเพลงที่มีช่วงความถี่แคบและช่วงไดนามิกกว้าง SBC 328k บางครั้งก็ชนะ
ขอให้เราพิจารณาเป็นกรณีพิเศษคือการบันทึกเสียงเปียโน นี่คือโปรแกรมสเปกตรัม:
พลังงานส่วนใหญ่อยู่ในความถี่ 0-4 kHz และอยู่ได้ถึง 10 kHz
สเปกโตรแกรมของไฟล์ aptX ไฟล์มีลักษณะดังนี้:
นี่คือ SBC 328k:
จะเห็นได้ว่า SBC 328k ตัดช่วงที่สูงกว่า 16 kHz เป็นระยะ ๆ และใช้บิตเรตที่มีอยู่ทั้งหมดสำหรับช่วงที่ต่ำกว่าค่านี้ อย่างไรก็ตาม aptX นำเสนอความผิดเพี้ยนมากขึ้นในสเปกตรัมความถี่ที่ได้ยินโดยหูของมนุษย์ซึ่งสามารถมองเห็นได้จากสเปกโตรแกรมดั้งเดิมที่ลบออกจากสเปกตรัม aptX (ยิ่งสว่างขึ้นความผิดเพี้ยนก็ยิ่งมากขึ้น):
ในขณะที่ SBC 328k นำสัญญาณที่ผิดเพี้ยนน้อยลงในช่วง 0 ถึง 10 kHz และส่วนที่เหลือได้รับการсut:
Bitrate 485k สำหรับ SBC เพียงพอที่จะบันทึกช่วงความถี่ทั้งหมดโดยไม่ต้องตัดแถบ
SBC 485k ในตัวอย่างเสียงนี้ดีกว่า aptX มากในช่วง 0-15 kHz และมีความแตกต่างที่น้อยกว่า แต่ยังเห็นได้ชัด - ที่ 15-22 kHz (ยิ่งมืดความเพี้ยนน้อยกว่า):
เมื่อเปลี่ยนไปใช้ SBC ที่มีบิตเรตสูงคุณจะได้รับเสียงที่เหนือกว่า aptX เกือบตลอดเวลาบนหูฟังใด ๆ
- original_and_aptx.zip
- sbc.zip
วิธีปรับเปลี่ยน Bluetooth Stacks บน Android 5 - 7
การปรับเปลี่ยนเหล่านี้ควรใช้กับสแต็คบลูทู ธ Android Bluedroid (Android 5) และ Fluoride (Android 6-7) ไม่รองรับสแต็กที่แก้ไขโดย Qualcomm
แทนที่ Joint Stereo ด้วย Dual Channel ในการกำหนดค่า SBC มาตรฐาน
android / แพลตฟอร์ม / ภายนอก / บลูทู ธ / bluedroid / btif / co / bta_av_co.c: 99
รหัส:
const tA2D_SBC_CIE btif_av_sbc_default_config = {BTIF_AV_SBC_DEFAULT_SAMP_FREQ / * samp_freq * / A2D_SBC_IE_CH_MD_JOINT / * ch_mode * / A2D_SBC_IE_BLOCKS_16 / * block_len * / A2D_SBC_IE_SUBBAND_8 / * num_subbands * / A2D_SBC_IE_ALLOC_MD_L / * alloc_mthd * / BTA_AV_CO_SBC_MAX_BITPOOL / * max_bitpool * / A2D_SBC_IE_MIN_BITPOOL / * min_bitpool * /};
แทนที่ A2D_SBC_IE_CH_MD_JOINT ด้วย A2D_SBC_IE_CH_MD_DUAL
เพิ่มลำดับความสำคัญของช่องสัญญาณคู่
android / แพลตฟอร์ม / ภายนอก / บลูทู ธ / bluedroid / btif / co / bta_av_co.c: 41
รหัส:
ถ้า (src_cap.ch_mode & A2D_SBC_IE_CH_MD_JOINT) pref_cap.ch_mode = A2D_SBC_IE_CH_MD_JOINT; อื่นถ้า (src_cap.ch_mode & A2D_SBC_IE_CH_MD_STEREO) pref_cap.ch_mode = A2D_SBC_IE_CH_MD_STEREO; อื่นถ้า (src_cap.ch_mode & A2D_SBC_IE_CH_MD_DUAL) pref_cap.ch_mode = A2D_SBC_IE_CH_MD_DUAL; อื่นถ้า (src_cap.ch_mode & A2D_SBC_IE_CH_MD_MONO) pref_cap.ch_mode = A2D_SBC_IE_CH_MD_MONO; ย้ายถ้าด้วย A2D_SBC_IE_CH_MD_DUAL ไปด้านบน
- ปิดใช้งานหรือเพิ่มข้อ จำกัด บิตเรต
สแต็กบลูทู ธ Android ไม่เพียง แต่มีขีด จำกัด bitpool เท่านั้น แต่ยัง จำกัด บิตเรต 328 kbit / s หากหูฟังรองรับเช่น bitpool 53 สำหรับ 48 kHz Android จะลดบิตพูลลงเพื่อให้พอดีกับขีด จำกัด 328 kbit / s สิ่งนี้จะเกิดขึ้นหลังจากการเจรจาตัวแปลงสัญญาณในขั้นตอนการเข้ารหัสอย่าคำนึงถึงค่า bitpool ในแพ็กเก็ต Bluetooth SetCapabilities
android / แพลตฟอร์ม / ภายนอก / บลูทู ธ / bluedroid / btif / src / btif_media_task.c: 172
รหัส:
# กำหนด DEFAULT_SBC_BITRATE 328
แทนที่ด้วย 512
- (สำหรับการทดลองเท่านั้น) ปิดใช้งานขีด จำกัด MTU
สิ่งนี้จำเป็นสำหรับบิตเรตที่สูงกว่า ~ 580 kbit / s
btif / src / btif_media_task.c: 174
รหัส:
/ * ขนาดเพย์โหลด 2DH5 679 ไบต์ - (4 ไบต์ L2CAP Header + 12 bytes AVDTP Header) * / #define MAX_2MBPS_AVDTP_MTU 663
วิธีแก้ไข Bluetooth Stacks บน Android 8 - 9
การปรับเปลี่ยนเหล่านี้ยังไม่ได้รับการทดสอบ แต่ควรได้ผล
เพิ่มการรองรับ Dual Channel ใน A2DP SBC Source
/platform/system/bt/stack/a2dp/a2dp_sbc.cc:55
รหัส:
/ * ความสามารถของตัวแปลงสัญญาณ SBC SRC * / คงที่ tA2DP_SBC_CIE a2dp_sbc_caps = A2DP_SBC_IE_BLOCKS_8;
เพิ่ม A2DP_SBC_IE_CH_MD_DUAL ใน ch_mode
แทนที่ Joint Stereo ด้วย Dual Channel ในการกำหนดค่าเริ่มต้น
/platform/system/bt/stack/a2dp/a2dp_sbc.cc:82
รหัส:
/ * เริ่มต้น SBC ตัวแปลงสัญญาณการกำหนดค่า * / const tA2DP_SBC_CIE a2dp_sbc_default_config = {A2DP_SBC_IE_SAMP_FREQ_44 / * samp_freq * / A2DP_SBC_IE_CH_MD_JOINT / * ch_mode * / A2DP_SBC_IE_BLOCKS_16 / * block_len * / A2DP_SBC_IE_SUBBAND_8 / * num_subbands * / A2DP_SBC_IE_ALLOC_MD_L / * alloc_method * / A2DP_SBC_IE_MIN_BITPOOL, / * min_bitpool * / A2DP_SBC_MAX_BITPOOL, / * max_bitpool * / BTAV_A2DP_CODEC_BITS_PER_SAMPLE_16 / * bits_per_sample * /};
แทนที่ A2DP_SBC_IE_CH_MD_JOINT ด้วย A2DP_SBC_IE_CH_MD_DUAL
เพิ่มลำดับความสำคัญของช่องสัญญาณคู่
/platform/system/bt/stack/a2dp/a2dp_sbc.cc:1155
รหัส:
บูลแบบคงที่ select_best_channel_mode (uint8_t ch_mode, tA2DP_SBC_CIE * p_result, btav_a2dp_codec_config_t * p_codec_config) {if (ch_mode & A2DP_SBC_IE_CH_MD_JOINT- A2DP_SBC_IE_CH_MD_JOINT-A2) p_codec_config-> channel_mode = BTAV_A2DP_CODEC_CHANNEL_MODE_STEREO; กลับจริง } ถ้า (ch_mode & A2DP_SBC_IE_CH_MD_STEREO) {p_result-> ch_mode = A2DP_SBC_IE_CH_MD_STEREO; p_codec_config-> channel_mode = BTAV_A2DP_CODEC_CHANNEL_MODE_STEREO; กลับจริง } ถ้า (ch_mode & A2DP_SBC_IE_CH_MD_DUAL) {p_result-> ch_mode = A2DP_SBC_IE_CH_MD_DUAL; p_codec_config-> channel_mode = BTAV_A2DP_CODEC_CHANNEL_MODE_STEREO; กลับจริง } ถ้า (ch_mode & A2DP_SBC_IE_CH_MD_MONO) {p_result-> ch_mode = A2DP_SBC_IE_CH_MD_MONO; p_codec_config-> channel_mode = BTAV_A2DP_CODEC_CHANNEL_MODE_MONO; กลับจริง } กลับเท็จ; }
ย้ายถ้าด้วย A2DP_SBC_IE_CH_MD_DUAL ไปด้านบน
เพิ่มขีด จำกัด บิตเรต
/platform/system/bt/stack/a2dp/a2dp_sbc_encoder.cc:42
รหัส:
#define A2DP_SBC_DEFAULT_BITRATE 328
แทนที่ด้วย 512
- (สำหรับการทดลองเท่านั้น) ปิดใช้งานขีด จำกัด MTU
สิ่งนี้จำเป็นสำหรับบิตเรตที่สูงกว่า ~ 580 kbit / s
/platform/system/bt/stack/a2dp/a2dp_sbc_encoder.cc:47
รหัส:
# กำหนด MAX_2MBPS_AVDTP_MTU 663
บลูทู ธ ที่ติดตั้งแล้ว (Flashable)
- เลอแม็กซ์ 2 โอรีโอ Patched.zip
- LeEco Cool Changer S1 EUI_5.8.19S.zip
- Leeco LE2 (EUI 5.9.26s, Android 6) .zip
- Xiaomi Mi Note (Miui 9 Miui.su usnkreal v8.4.12, Android 6.0.1) .zip
- Xiaomi mi note 3 (MIUI 9, Android 7) .zip
- Xiaomi Mi4c (Android 7.0 NRD90M, MIUI-9.5 9.5.1.0 (NXKCNFA)) zip
- Xiaomi MI5s (MIUI Global 9.6.1.0, Android 7) .zip
- Xiaomi Redmi 3s (android 6.01, mmb29m, miui global 9.6.1.0) .zip
- Xiaomi Redmi 4 (MiuiPro 10 8.8.2, Android 6.0.1, MMB29M) .zip
- Xiaomi Redmi 4 Prime.zip
- Xiaomi Redmi 4 pro (MIUI 9, miuipro 8.4.26) .zip
- Xiaomi Redmi Note 3 (รีมิกซ์ Android 7.1.2_r36) .zip
- Redmi Note 4x (Masik Premium, android 7.0) .zip
- Asus Zoom (Android 5, 2.26.40.108_20160520) .zip
- เลอแม็กซ์ 2 โอรีโอ Patched.zip
- Huawei P9 (Android 7) .zip
- Samsung Galaxy S4 LTE GT-I9505 (Android 7.1.2; LineageOS 14.1-20180615-NIGHTLY-jfltexx) .zip
- ซิป
- เลอแม็กซ์ 2 โอรีโอ Patched.zip