Kako izmijeniti Bluetooth stogove na Androidu za izuzetno poboljšanu Bluetooth kvalitetu zvuka



Isprobajte Naš Instrument Za Uklanjanje Problema

Upozorenje: Ovo je vrlo napredni vodič koji uključuje izmjenu vaših Bluetooth snopova na Androidu - pročitajte ovaj vodič u cijelosti i slijedite sve upute točno kako su date.



Unatoč činjenici da su Bluetooth slušalice i Bluetooth audio postale prilično popularne, to predstavlja malo problema s audiofilima, jer Bluetooth dokazano smanjuje kvalitetu zvuka, jer se dijelovi audio informacija i frekvencija gube u zraku putem Bluetooth streaminga.



Zbog toga neki proizvođači izlažu aptX i LDAC kodeke kako bi poboljšali kvalitetu zvuka u odnosu na standardni SBC Bluetooth kodek koji podržavaju sve slušalice i većina Bluetooth uređaja - međutim, uređaji s aptX i LDAC kodecima mnogo su skuplji jer su ti kodeci zahtijevaju naknade za licencu, koje potrošač dugoročno plaća.



Niska kvaliteta zvuka SBC Bluetooth kodeka uzrokovana je umjetnim ograničenjima svih trenutnih Bluetooth stogova i konfiguracijom slušalica, a to se ograničenje može zaobići na bilo kojem postojećem uređaju.

Ako ste zainteresirani za Bluetooth zvuk, na kraju ovog vodiča pokazat ćemo vam kako izvršiti izbacivanje zapisnika Bluetooth zvuka i pregledati ga kako biste vidjeli kakvu kvalitetu i frekvenciju zvuka dobivate s Androidovog Bluetooth prijamnika.

Većina ovog vodiča usredotočit će se na nekoliko jednostavnih podešavanja i načina čitanja vašeg Bluetooth audio izlaza kako bi se znatno poboljšala kvaliteta izlaza standardnih SBC Bluetooth kodeka - pažljivo pročitajte cijeli ovaj vodič jer je vrlo poučan i postoji mnogo različitih stvari za bljeskanje ili podešavanje, ovisno o modelu uređaja.



Na ovom kraju ovog vodiča nalazi se popis unaprijed zakrpanih Bluetooth snopova za mnoge popularne Android uređaje - oni se mogu bljeskati u oporavku kao i bilo koji drugi bljeskavi .zip - ako nijedan uređaj ne pripada vama, imat ćete kako biste slijedili vodič za izmjenu Bluetooth snopova na Androidu.

Kratke tehničke informacije o SBC kodeku

SBC ima puno različitih parametara koji se dogovaraju tijekom faze postavljanja veze:

  • Vrsta i broj audio kanala: zajednički stereo, stereo, dvokanalni, mono;
  • Broj frekvencijskih opsega: 4 ili 8;
  • Broj audio blokova u jednom paketu: 4, 8, 12, 16;
  • Algoritam dodjele bita za kvantizaciju: Glasnost, SNR;
  • Maksimalno i minimalno spremište bitova korišteno u procesu kvantizacije: obično 2-53.

Dekoder je potreban da podrži bilo koju kombinaciju ovih parametara. Davač može implementirati samo dio njih.

Postojeći Bluetooth snopovi obično pregovaraju o sljedećem profilu: Zajednički stereo, 8 opsega, 16 blokova, Glasnost, bitpool 2..53. Ovaj profil kodira zvuk od 44,1 kHz s brzinom od 328 kbps.

Bitpool parametar izravno utječe na brzinu prijenosa unutar istog profila: što je veći, bitrate je veći, a time i na kvalitetu.

Međutim, bitpool parametar nije vezan za određeni profil. Na brzinu prijenosa bitno utječu i drugi parametri: vrsta audio kanala, broj frekvencijskih opsega, broj audio blokova. Možete posredno povećati brzinu prijenosa dogovaranjem nestandardnih profila, bez mijenjanja bitpola.

Na primjer, Dual Channel kodira kanale zasebno, koristeći cijeli bitpool za svaki kanal. Prisiljavanjem uređaja da koristi Dual Channel umjesto Joint Stereo dobit ćemo gotovo udvostručenu brzinu prijenosa pri istom maksimalnom bitpolu, 617 kbps.

Po meni se čini da bi bitpool trebao biti unutarnja varijabla. Greška je u dizajnu specifikacije A2DP što vrijednost bitpola nije vezana za druge parametre kodeka i definirana je samo kao globalna vrijednost.

Te fiksne vrijednosti Bitpoola i Bitratea potječu od preporučenih vrijednosti za visokokvalitetni zvuk. No, preporuka nije izgovor za ograničavanje profila na ove vrijednosti.

A2DP specifikacija v1.2, koja je bila aktivna od 2007. do 2015. godine, zahtijeva da svi dekoderi rade ispravno s brzinama prijenosa do 512 kbps:

Dekoder SNK mora podržavati sve moguće vrijednosti bitpola koje ne rezultiraju prekoračenjem maksimalne brzine prijenosa. Ovaj profil ograničava dostupnu maksimalnu brzinu prijenosa na 320 kb / s za mono i 512 kb / s za dvokanalne načine rada.

U novoj verziji specifikacije nema ograničenja brzine prijenosa. Pretpostavlja se da moderne slušalice objavljene nakon 2015. godine mogu podržavati bitrate do 1000 kbps .

Iz nekog razloga, svi trenutno testirani Bluetooth stekovi (Linux (PulseAudio), Android, Blackberry i macOS) imaju umjetna ograničenja maksimalnog parametra bitpola, što izravno utječe na maksimalnu brzinu prijenosa. Ali to nije najveći problem, gotovo sve slušalice također ograničavaju maksimalnu vrijednost bitpola na 53.

Većina uređaja dobro funkcionira na modificiranom Bluetooth stogu s brzinom od 507 kbps, bez prekida i pucketanja. Ali takav bitrate nikad se neće pregovarati u normalnim uvjetima, s osnovnim Bluetooth snopovima.

*** Potrebno za testiranje pomoću vodiča ispod: bluetooth-dualchannel-test-ubuntu-18.04.1-desktop-amd64.iso.torrent

Kako testirati na računalu

Test kompatibilnosti SBC slušalica s visokom brzinom prijenosa najlakše je izvesti na računalu s Bluetooth adapterom. Pripremio sam Ubuntu sliku s modificiranim Bluetoothom, koji se može pokretati kao na virtualnom stroju (povezivanjem Bluetooth adaptera kao USB uređaja unutar virtualnog stroja, to također radi s adapterima ugrađenim u prijenosna računala) ili dizanjem s računala USB bljeskalicu. Ova slika koristi sljedeći profil: dvokanalni, 8 opsega, 16 blokova, glasnost, bitpool 2..41, 44,1 kHz, koji osigurava bitnu brzinu od 485 kbps.

Trčanje u VM-u

  • Preuzmite Virtualbox i Virtualbox Extension Pack: https://www.virtualbox.org/wiki/Downloads;
  • Instalirajte Virtualbox, pokrenite ga;
  • Instalirajte proširenje koristeći Datoteka → Postavke → Proširenja;
  • Stvorite novi virtualni stroj: Linux, Ubuntu (64-bitni), 1024 RAM-a. Ne stvarajte HDD.
  • Dođite do postavki virtualnog stroja, u Pohrana odaberite Controller: IDE, Empty, pritisnite ikonu CD → Odaberite datoteku virtualnog optičkog diska;
  • Odaberite preuzeti bluetooth-dualchannel-test-ubuntu-18.04.1-desktop-amd64.iso;
  • Spremite i zatvorite prozor postavki, pokrenite virtualni stroj;
  • Desnom tipkom miša kliknite ikonu USB kabela u donjem desnom kutu, odaberite svoj Bluetooth adapter;

Pokretanje na računalu

Slika podržava BIOS / CSM i UEFI dizanje.

  • Snimite sliku na USB flash pogon pomoću programa Etcher: https://etcher.io/. Ovim ćete postupkom izbrisati sve postojeće datoteke s USB pogona.
  • Isključite računalo;
  • Umetnite USB flash pogon, uključite računalo i pritisnite gumb za redoslijed pokretanja (obično Esc ili F12);
  • Odaberite svoj USB flash pogon.

Izvođenje testa

  • (nije obavezno, ali preporučeno) Dvaput kliknite na skriptu “Btsnoop Dump” na radnoj površini. Pokrenut će Bluetooth prikupljanje podataka za kasniju analizu. Ne zatvarajte prozor terminala.
  • Prebacite slušalice u način uparivanja;
  • Kliknite strelicu u gornjem desnom kutu, odaberite ikonu Bluetooth → Bluetooth postavke;
  • Odaberite slušalice, pričekajte dok se uparivanje ne završi i zatvorite prozor;
  • Postavite Ubuntu glasnoću na oko 2/3. Također smanjite glasnoću pomoću gumba na slušalicama jer bi moglo biti vrlo glasno nakon uparivanja.
  • Otvorite mapu “music”, reproducirajte “testrecord1.flac”;
  • (nije obavezno, ali se preporučuje) Zatvorite uređaj, zatvorite prozor terminala. Ovo će zaustaviti prikupljanje podataka.
  • (nije obavezno, ali preporučljivo) Otvorite preglednik Firefox, prenesite odlagalište podataka (btsnoop_hci.btsnoop na radnoj površini) na https://btcodecs.valdikss.org.ru/

Možete slušati drugu glazbu u glazbenoj mapi ili prenijeti vlastitu;

U slušalicama ne bi smjelo biti pucketanja, prekida zvuka ili drugih izobličenja zvuka. Ako čujete dobar visokokvalitetni zvuk, to znači da vaše slušalice podržavaju zvuk brzinom od 485 kbps.

Kako testirati na Android uređaju

Da biste testirali s Android pametnog telefona ili tableta, morate koristiti modificirani Bluetooth stog, koji zahtijeva privilegiju root.

Kako snimiti Bluetooth odlagalište podataka na Androidu

  1. Isključite Bluetooth;
  2. U postavkama razvojnih programera omogućite prekidač 'Omogući Bluetooth HCI snoop log';
  3. Uključite Bluetooth, povežite se sa slušalicama pomoću Bluetooth izbornika (to je važno! Ne dopustite automatsko povezivanje!);
  4. Reproducirajte kratki audio uzorak;
  5. Otvorite postavke programera, onemogućite prekidač 'Omogući Bluetooth HCI snoop log';
  6. Trebao bi biti stvoren /storage/emulated/0/btsnoop_hci.log ili /data/misc/bluetooth/logs/btsnoop_hci.log. Ako nedostaje, otvorite /etc/bluetooth/bt_stack.conf pomoću uređivača teksta i pogledajte put u opciji BtSnoopFileName.

U slušalicama ne bi smjelo biti pucketanja, prekida zvuka ili drugih izobličenja zvuka. Ako s zakrpanom knjižnicom čujete dobar visokokvalitetni zvuk, to znači da vaše slušalice podržavaju zvuk brzinom od 512 kbps.

Molimo pažljivo slijedite gornji algoritam. Pogotovo ako isključite slušalice ili odspojite nakon uparivanja, važno je ručno se povezati sa slušalicama iz Bluetooth postavki, ne dopustiti automatsko povezivanje!

Uređaji koji podržavaju SBC najmanje 512 kbit / s

  • JOŠ IBFree
  • JBL Everest 310
  • JBL Everest 700
  • Skullcandy HESH 3
  • Sony WI-C400
  • Sony MDR-1ABT
  • Sony MDR-ZX770BT
  • Sony MDR-XB650BT
  • Sony MDR-XB950B1
  • Sony SBH50
  • Bluedio T4s (Bitpool max 39. Odgovorite da ne podržavate Dual Channel, ali radite ako je prisiljen, 462 kbit / s. Nije u skladu s A2DP specifikacijom.)
  • Bluedio T5 (Odgovorite da ne podržava dvostruki kanal, ali radite ako je prisiljen. Nije u skladu s A2DP specifikacijom.)
  • Bluedio T6 (Odgovorite da ne podržava dvostruki kanal, ali radite ako je prisiljen. Nije u skladu s A2DP specifikacijom. Usvojite Max 97220 čip.)
  • Bluetooth Marshall Major II
  • Overdrive RealForce D1
  • Graditelj W830BT
  • DEXP BT-250
  • Logitech BT adapter
  • Noname automobilska glavna jedinica (CSR8645 čip)
  • Sony DSX-A400BT automobilska glavna jedinica

Uređaji koji podržavaju SBC veći od 512 kbit / s

  • JBL Everest 310 (617-660 kbit / s)
  • Sony WI-C400 (576 kbit / s)
  • Sony MDR-ZX770BT (617-660 kbit / s)
  • Bluetooth Marshall Major II (617-660 kbit / s)
  • Overdrive RealForce D1 (730 kbit / s, dvokanalni, 4 podopsega)

Uređaji koji ne rade s većom brzinom prijenosa ili dvostrukim kanalima

  1. Harper HB-202 (čvarci; čip Beken BK3256)
  2. Sony Ericsson MW600 (izobličenja visoke frekvencije, pucketanje; uređaj iz 2009.)

Zašto je ovo važno: SBC 328k i 485k vs aptX

Suprotno uvriježenom mišljenju o aptX kvaliteti zvuka, u nekim slučajevima može proizvesti lošiju kvalitetu zvuka od SBC-a sa standardnom brzinom od 328 kB.

SBC dinamički raspoređuje bitove kvantizacije za frekvencijske pojaseve djelujući na principu 'od dna do vrha'. Ako je cijela brzina prijenosa korištena za donju i srednju frekvenciju, gornje frekvencije su 'odsječene' (utišane).

aptX konstantno kvantira frekvencijske pojaseve s istim brojem bitova, što ga čini konstantnim bitrate kodekom: 352 kbps za 44,1 kHz, 384 kbps za 48 kHz. Ne može 'prenijeti bitove' na frekvencije koje su u njima uglavnom potrebne. Za razliku od SBC-a, aptX neće 'rezati' frekvencije, već će im dodati šum kvantizacije, smanjujući dinamički raspon zvuka i ponekad uvodeći pucketanje. SBC, naprotiv, 'jede detalje' - odbacuje najtiša područja.

U prosjeku, u usporedbi sa SBC 328k, aptX čini manje izobličenja u glazbi sa širokim frekvencijskim rasponom, ali na glazbi s uskim frekvencijskim rasponom i širokim dinamičkim rasponom SBC 328k ponekad pobjeđuje.

Razmotrimo poseban slučaj, klavirsku snimku. Evo spektrograma:


Najviše energije leži u frekvencijama od 0-4 kHz, a traje do 10 kHz.
Spektrogram datoteke aptX datoteke izgleda ovako:

Ovdje je SBC 328k:

Vidljivo je da je SBC 328k povremeno u potpunosti odsjekao opseg iznad 16 kHz i koristio sve dostupne brzine prijenosa za opsege ispod ove vrijednosti. Međutim, aptX je uveo više izobličenja u frekvencijski spektar koji čuje ljudsko uho, što se može vidjeti na oduzetom izvornom spektrogramu od aptX spektrograma (što je svjetlije, to je više izobličenja):


Iako je SBC 328k uveo manje izobličenja, signal je u rasponu od 0 do 10 kHz, a ostalo je izrezano:

Bitrate 485k za SBC bio je dovoljan za spremanje cijelog frekvencijskog raspona, bez presijecanja opsega.

SBC 485k na ovom audio uzorku puno je bolji od aptX-a u rasponu od 0-15 kHz i s manjom, ali i dalje uočljivom razlikom - na 15-22 kHz (što je tamnije, to je manje izobličenja):

Prebacivanjem na SBC s velikom brzinom prijenosa, dobit ćete zvuk superiorniji od aptX-a većinu vremena, na bilo kojim slušalicama.

  • original_and_aptx.zip
  • sbc.zip

Kako izmijeniti Bluetooth stogove na Androidu 5 - 7

Te bi se izmjene trebale primijeniti na Android bluetooth hrpe Bluedroid (Android 5) i Fluoride (Android 6-7). Qualcomm-modificirani stog nije podržan.

Zamijenite Joint Stereo s Dual Channel u standardnoj SBC konfiguraciji

android / platforma / vanjski / bluetooth / bluedroid / btif / co / bta_av_co.c: 99

Kodirati:

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 * /};

Zamijenite A2D_SBC_IE_CH_MD_JOINT sa A2D_SBC_IE_CH_MD_DUAL.

Povećajte prioritet dvostrukog kanala

android / platforma / vanjski / bluetooth / bluedroid / btif / co / bta_av_co.c: 41

Kodirati:

ako (src_cap.ch_mode & A2D_SBC_IE_CH_MD_JOINT) pref_cap.ch_mode = A2D_SBC_IE_CH_MD_JOINT; inače if (src_cap.ch_mode & A2D_SBC_IE_CH_MD_STEREO) pref_cap.ch_mode = A2D_SBC_IE_CH_MD_STEREO; inače ako (src_cap.ch_mode & A2D_SBC_IE_CH_MD_DUAL) pref_cap.ch_mode = A2D_SBC_IE_CH_MD_DUAL; inače ako (src_cap.ch_mode & A2D_SBC_IE_CH_MD_MONO) pref_cap.ch_mode = A2D_SBC_IE_CH_MD_MONO; Pomakni ako je s A2D_SBC_IE_CH_MD_DUAL na vrh.
  1. Onemogućite ili povećajte ograničenje brzine prijenosa

Android bluetooth stog ima ne samo ograničenje bitpola, već i ograničenje brzine, 328 kbit / s. Ako slušalice podržavaju, na primjer, bitpool 53 za 48 kHz, Android će smanjiti bitpool prema dolje kako bi se uklopio u ograničenje od 328 kbit / s. To će se dogoditi NAKON pregovaranja o kodeku, u fazi kodiranja, ne uzima se u obzir vrijednost bitova u paketu Bluetooth SetCapabilities.

android / platforma / vanjski / bluetooth / bluedroid / btif / src / btif_media_task.c: 172

Kodirati:

#define DEFAULT_SBC_BITRATE 328

Zamijenite s 512.

  1. (samo za eksperimente) Onemogući MTU ograničenje.

To je potrebno za brzine prijenosa veće od ~ 580 kbit / s.

btif / src / btif_media_task.c: 174

Kodirati:

/ * 2DH5 nosivost od 679 bajtova - (4 bajta L2CAP zaglavlje + 12 bajtova AVDTP zaglavlje) * / #define MAX_2MBPS_AVDTP_MTU 663

Kako izmijeniti Bluetooth stogove na Androidu 8 - 9

Te izmjene nisu testirane, ali trebale bi funkcionirati.

Dodajte dvokanalnu podršku u A2DP SBC izvor

/platform/system/bt/stack/a2dp/a2dp_sbc.cc:55

Kodirati:

/ * SBC SRC mogućnosti kodeka * / static const tA2DP_SBC_CIE a2dp_sbc_caps = A2DP_SBC_IE_BLOCKS_8;

dodajte A2DP_SBC_IE_CH_MD_DUAL u ch_mode.

Zamijenite Joint Stereo s Dual Channel u zadanoj konfiguraciji

/platform/system/bt/stack/a2dp/a2dp_sbc.cc:82

Kodirati:

/ * Zadano SBC kodek konfiguracija * / 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 * /};

Zamijenite A2DP_SBC_IE_CH_MD_JOINT sa A2DP_SBC_IE_CH_MD_DUAL.

Povećajte prioritet dvostrukog kanala

/platform/system/bt/stack/a2dp/a2dp_sbc.cc:1155

Kodirati:

statički modul_izbora_najboljeg_kanala (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) {p_res_SD_MD_MD_DD_MD_DB_DP_DP_DP p_codec_config-> channel_mode = BTAV_A2DP_CODEC_CHANNEL_MODE_STEREO; povratak istinit; } if (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; povratak istinit; } ako (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; povratak istinit; } ako (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; povratak istinit; } return false; }

Pomakni ako je s A2DP_SBC_IE_CH_MD_DUAL na vrh.

Povećajte ograničenje brzine prijenosa

/platform/system/bt/stack/a2dp/a2dp_sbc_encoder.cc:42

Kodirati:

#define A2DP_SBC_DEFAULT_BITRATE 328

Zamijenite s 512.

  1. (samo za eksperimente) Onemogući MTU ograničenje

To je potrebno za brzine prijenosa veće od ~ 580 kbit / s.

/platform/system/bt/stack/a2dp/a2dp_sbc_encoder.cc:47

Kodirati:

#define MAX_2MBPS_AVDTP_MTU 663

Zakrpani Bluetooth stogovi (flešeribilni)

  • Le Max 2 Oreo 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 (Resurrection Remix 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
  • Le Max 2 Oreo Patched.zip
  • Huawei P9 (Android 7) .zip
  • Samsung Galaxy S4 LTE GT-I9505 (Android 7.1.2; LineageOS 14.1-20180615-NIGHTLY-jfltexx) .zip
  • zip
  • Le Max 2 Oreo Patched.zip
10 minuta čitanja