Kuidas muuta Androidi Bluetooth-korstnate Bluetoothi ​​heli kvaliteedi parandamiseks

Kuidas muuta Androidi Bluetooth-korstnate Bluetoothi ​​heli kvaliteedi parandamiseks

How Modify Bluetooth Stacks Android

Hoiatus: see on väga arenenud juhend, mis hõlmab Androidi Bluetooth-korstnate muutmist - lugege seda juhendit tervikuna ja järgige kõiki juhiseid täpselt nii, nagu antud.



Hoolimata asjaolust, et Bluetooth-peakomplektid ja Bluetooth-heli on muutunud üsna populaarseks, on see audiofiilide jaoks natuke probleem, sest on tõestatud, et Bluetooth vähendab helikvaliteeti, kuna heli-infobitid ja sagedused kaovad Bluetoothi ​​voogesituse kaudu õhku.



Sellepärast pakuvad mõned tootjad aptX- ja LDAC-koodekeid, et parandada helikvaliteeti tavalise SBC Bluetooth-koodeki abil, mida toetavad kõik kõrvaklapid ja enamik Bluetooth-seadmeid, kuid aptX- ja LDAC-koodekitega seadmed on palju kallimad nõuda litsentsitasusid, mida tarbija maksab pikas perspektiivis.

SBC Bluetooth-koodeki madal helikvaliteet on tingitud kõigi praeguste Bluetooth-korstnate ja kõrvaklappide konfiguratsiooni kunstlikest piirangutest ning sellest piirangust saab mööda hiilida kõigis olemasolevates seadmetes.



Kui olete huvitatud Bluetooth-helist, näitame selle juhendi lõpus, kuidas võtta Bluetooth-helilogi prügikast ja kontrollida seda, et näha, millist helikvaliteeti ja -sagedust saate oma Androidi Bluetooth-vastuvõtjast.

Suurem osa sellest juhendist keskendub mõnele lihtsale näpunäidele ja viisidele, kuidas oma Bluetooth-heliväljundit lugeda, et parandada standardsete SBC Bluetooth-koodekite väljundkvaliteeti - lugege palun hoolikalt seda juhendit, kuna see on üsna hariv ja seal on palju erinevaid asju vilkuma või näpistama, olenevalt seadme mudelist.

Selle juhendi lõpus on paljude populaarseimate Android-seadmete eelpaigutatud Bluetooth-korstnate loend - neid saab taastamisel vilkuda nagu iga muudki välgutatavat .zip-i - kui ükski seade ei kuulu teile, on teil järgige Androidi Bluetooth-korstnate muutmise juhendit.



Lühike tehniline teave SBC koodeki kohta

SBC-l on ühenduse seadistamise etapis palju erinevaid parameetreid:

  • Helikanali tüüp ja number: ühine stereo, stereo, kahekanaliline, mono;
  • Sagedusribade arv: 4 või 8;
  • Heliplokkide arv ühes paketis: 4, 8, 12, 16;
  • Kvantimisbiti jaotamise algoritm: valjus, SNR;
  • Kvantimisprotsessis kasutatav maksimaalne ja minimaalne bittivaramu: tavaliselt 2–53.

Dekooder on vajalik nende parameetrite mis tahes kombinatsiooni toetamiseks. Kodeerija tohib rakendada ainult osa neist.

Olemasolevad Bluetooth-korstnad peavad tavaliselt läbirääkimisi järgmise profiili üle: Ühine stereo, 8 riba, 16 plokki, Loudness, bitpool 2..53. See profiil kodeerib 44,1 kHz heli bittikiirusega 328 kbps.

Bitpooli parameeter mõjutab otseselt sama profiili bitikiirust: mida suurem see on, seda suurem on bitikiirus ja seega ka kvaliteet.

Kuid bitpooli parameeter ei ole seotud kindla profiiliga. Bittikiirust mõjutavad oluliselt ka muud parameetrid: helikanali tüüp, sagedusribade arv, heliplokkide arv. Bittikiirust saate suurendada kaudselt mittestandardsete profiilide üle läbirääkimisi pidades, ilma bitimahtu muutmata.

Näiteks kodeerib Dual Channel kanaleid eraldi, kasutades iga kanali jaoks kogu bitipooli. Kui sunnite seadme kasutama Joint Stereo asemel Dual Channel'i, saame peaaegu maksimaalse bitikiiruse samal maksimaalsel bitipoolil, 617 kbps.

Mulle tundub, et bitpool peaks olema sisemine muutuja. A2DP spetsifikatsiooni disaini viga on see, et bitupli väärtus ei ole seotud teiste kodekiparameetritega ja on määratletud ainult globaalse väärtusena.

Need fikseeritud Bitpool ja Bitrate väärtused pärinevad kvaliteetsete helide soovitatavatest väärtustest. Kuid soovitus ei ole vabandus profiili piiramiseks nende väärtustega.

Aastatel 2007–2015 aktiivne A2DP spetsifikatsioon v1.2 nõuab, et kõik dekoodrid töötaksid korrektselt kuni 512 kbps bitikiirusega:

SNK dekooder peab toetama kõiki võimalikke bitipooli väärtusi, mis ei too kaasa maksimaalse bitikiiruse ületamist. See profiil piirab mono jaoks maksimaalset bitikiirust 320 kb / s ja kahekanaliliste režiimide puhul 512 kb / s.

Spetsifikatsiooni uues versioonis pole bitikiiruse piirangut. Eeldatakse, et pärast 2015. aastat välja antud kaasaegsed kõrvaklapid võivad bitikiirust toetada kuni 1000 kbps .

Millegipärast on kõigil praegu testitud Bluetoothi ​​korstnatel (Linux (PulseAudio), Android, Blackberry ja macOS) maksimaalse bitiparameetri parameetrite kunstlikud piirangud, mis mõjutab otseselt maksimaalset bitikiirust. Kuid see pole suurim probleem, peaaegu kõik kõrvaklapid piiravad ka maksimaalse bitpooli väärtuse 53-ni.

Enamik seadmeid töötab modifitseeritud Bluetooth-virnas, mille bitikiirus on 507 kb / s, ilma katkestusteta ja pragunemata. Kuid sellise bitikiiruse üle ei saa tavapärastes tingimustes kunagi läbi rääkida, kui Bluetoothi ​​varud on varustatud.

*** Nõutav testimiseks allpool toodud juhendite abil: bluetooth-dualchannel-test-ubuntu-18.04.1-desktop-amd64.iso.torrent

Kuidas testida arvutis

Kõrge bitikiirusega SBC kõrvaklappide ühilduvustesti on kõige lihtsam teha arvutis Bluetooth-adapteriga. Olen ette valmistanud modifitseeritud Bluetooth-korstnaga Ubuntu pildi, mida saab käivitada nagu virtuaalmasinas (ühendades Bluetooth-adapter USB-seadmena virtuaalmasinasse, töötab see ka sülearvutitesse sisseehitatud adapteritega) või käivitades USB-mälupulgal. See pilt kasutab järgmist profiili: kahekanaliline, 8 riba, 16 plokki, Loudness, bitpool 2..41, 44,1 kHz, mis tagab bitikiiruse 485 kbps.

VM-is töötamine

  • Laadige alla Virtualbox ja Virtualbox Extension Pack: https://www.virtualbox.org/wiki/Downloads;
  • Installige Virtualbox, käivitage see;
  • Installige Extension Pack, kasutades File → Preferences → Extensions;
  • Looge uus virtuaalne masin: Linux, Ubuntu (64-bitine), 1024 RAM. Ärge looge kõvaketast.
  • Navigeerige virtuaalmasina sätete juurde, valige jaotises Salvestus Kontroller: IDE, Tühi, vajutage CD ikooni → Valige virtuaalse optilise ketta fail;
  • Valige allalaaditud bluetooth-dualchannel-test-ubuntu-18.04.1-desktop-amd64.iso;
  • Salvestage ja sulgege seadete aken, käivitage virtuaalne masin;
  • Paremklõpsake paremas alanurgas USB-kaabli ikooni, valige oma Bluetooth-adapter;

Töötab arvutis

Pilt toetab BIOS / CSM ja UEFI käivitamist.

  • Kirjutage pilt Etcheri abil USB-mälupulgale: https://etcher.io/. See toiming kustutab kõik USB-draivil olevad failid.
  • Lülitage arvuti välja;
  • Sisestage USB-mälupulk, lülitage arvuti sisse ja vajutage alglaadimise järjekorra nuppu (tavaliselt Esc või F12);
  • Valige oma USB-mälupulk.

Testi sooritamine

  • (valikuline, kuid soovitatav) Topeltklõpsake töölaual skripti “Btsnoop Dump”. See alustab Bluetoothi ​​andmete hõivamist hilisemaks analüüsiks. Ärge sulgege terminaliakent.
  • Lülitage kõrvaklapid sidumisrežiimile;
  • Klõpsake paremas ülanurgas olevale noolele, valige Bluetoothi ​​ikoon → Bluetoothi ​​seaded;
  • Valige kõrvaklapid, oodake, kuni sidumine on lõpule jõudnud, ja sulgege aken;
  • Määrake Ubuntu helitugevuseks umbes 2/3. Samuti vähendage helitugevust peakomplekti nuppude abil, kuna see võib pärast sidumist olla väga vali.
  • Avage kaust 'muusika', esitage 'testrecord1.flac';
  • (valikuline, kuid soovitatav) Sulgege mängija, sulgege terminaliaken. See peatab andmete hõivamise.
  • (valikuline, kuid soovitatav) Avage Firefoxi brauser, laadige üles andmete dump (btsnoop_hci.btsnoop töölaual) aadressile https://btcodecs.valdikss.org.ru/

Saate muusikakaustas muusikat kuulata või oma üles laadida;

Kõrvaklappides ei tohiks olla praginat, heli katkemist ega muid heli moonutusi. Kui kuulete head ja kvaliteetset heli, tähendab see, et teie kõrvaklapid toetavad heli bitikiirusega 485 kbps.

Kuidas testida Android-seadmes

Androidi nutitelefonist või tahvelarvutist testimiseks peate kasutama modifitseeritud Bluetooth-virna, mis nõuab juurõigusi.

Kuidas hõivata Bluetoothi ​​andmekogumit Androidis

  1. Lülitage Bluetooth välja;
  2. Arendaja seadetes lubage lüliti „Luba Bluetooth HCI snoop log”;
  3. Lülitage Bluetooth sisse, ühendage peakomplektiga Bluetoothi ​​menüü abil (see on oluline! Ärge lubage automaatset ühendust!);
  4. Esita lühike helinäide;
  5. Avage arendaja seaded, keelake lüliti „Enable Bluetooth HCI snoop log”;
  6. Peaks olema loodud /storage/emulated/0/btsnoop_hci.log või /data/misc/bluetooth/logs/btsnoop_hci.log. Kui see puudub, avage /etc/bluetooth/bt_stack.conf tekstiredaktoriga ja vaadake teed valikus BtSnoopFileName.

Kõrvaklappides ei tohiks olla praginat, heli katkemist ega muid heli moonutusi. Kui kuulete lappitud teegiga head ja kvaliteetset heli, tähendab see, et teie kõrvaklapid toetavad heli bitikiirusega 512 kbps.

Palun järgige hoolikalt ülaltoodud algoritmi. Eriti kui lülitate kõrvaklapid välja või katkestate ühenduse pärast ühendamist, on oluline ühendada kõrvaklappidega käsitsi Bluetoothi ​​seadetest, ärge lubage automaatset ühendust!

Seadmed, mis toetavad vähemalt 512 kbit / s SBC-d

  • 1 ROHKEM 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. Vastake, et te ei toeta Dual Channel'i, kuid töötage sundimise korral, 462 kbit / s. Ei vasta A2DP spetsifikatsioonile.)
  • Bluedio T5 (reageerige kahekanalilise toe mittetoetamisele, kuid töötage sundimise korral. Ei vasta A2DP spetsifikatsioonile.)
  • Bluedio T6 (reageerige kahekanalilise toe mitte toetamisele, kuid töötage sundimise korral. Ei vasta A2DP spetsifikatsioonile. Võta vastu Max 97220 kiip.)
  • Marshall Major II Bluetooth
  • RealForce D1 ülekandmine
  • Edifier W830BT
  • DEXP BT-250
  • Logitech BT adapter
  • Noname'i autotööstuse peakomplekt (kiip CSR8645)
  • Sony DSX-A400BT autopea

Seadmed, mis toetavad SBC kiirust üle 512 kbit / s

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

Seadmed, mis ei tööta suurema bitikiirusega või kahe kanaliga

  1. Harper HB-202 (pragunemised; kiip Beken BK3256)
  2. Sony Ericsson MW600 (kõrgsageduslikud moonutused, pragunemised; seade aastast 2009)

Miks see on oluline: SBC 328k ja 485k vs aptX

Vastupidiselt levinud arvamusele aptX helikvaliteedist võib see mõnel juhul anda halvema helikvaliteedi kui SBC standardse 328 k bitikiirusega.

SBC eraldab dünaamiliselt sagedusribade kvantimisbitid, toimides põhimõttel „alt üles”. Kui alumise ja keskmise sageduse jaoks kasutati kogu bitikiirust, siis ülemised sagedused on „ära lõigatud“ (vaigistatud).

aptX kvantiseerib sagedusribasid pidevalt sama arvu bittidega, mis muudab selle konstantseks bitikiiruse koodekiks: 352 kbps 44,1 kHz jaoks, 384 kbps 48 kHz jaoks. See ei saa bitti 'üle kanda' sagedustele, mida nendes enamasti vaja on. Erinevalt SBC-st ei lõika aptX sagedusi, vaid lisab neile kvantimismüra, vähendades heli dünaamilist ulatust ja viies mõnikord sisse praginaid. SBC, vastupidi, 'sööb üksikasju' - viskab vaiksemad alad minema.

Keskmiselt moonutab aptX võrreldes SBC 328k-ga laias sagedusalas muusikat vähem, kuid kitsa sagedusvahemiku ja laia dünaamilise ulatusega muusikas võidab mõnikord SBC 328k.

Vaatleme erijuhtumit - klaverisalvestust. Siin on spektrogramm:


Kõige rohkem energiat peitub 0–4 kHz sagedustel ja see kestab kuni 10 kHz.
Faili aptX faili spektrogramm näeb välja selline:

Siin on SBC 328k:

On näha, et SBC 328k katkestas perioodiliselt täielikult vahemiku üle 16 kHz ja kasutas sellest väärtusest madalamate vahemike jaoks kõiki saadaolevaid bitikiirusi. Kuid aptX tõi inimkõrva poolt kuuldavasse sagedusspektrisse rohkem moonutusi, mida on näha aptX-i spektrogrammist lahutatud algsel spektrogrammil (mida heledam, seda rohkem moonutusi):


Kuigi SBC 328k on vähem moonutanud signaali vahemikus 0 kuni 10 kHz, ja ülejäänud on välja lülitatud:

SBC jaoks mõeldud bitikiirus 485k oli kogu sagedusala salvestamiseks piisav, ilma ribasid katkestamata.

Selle heliproovi SBC 485k on palju parem kui aptX vahemikus 0–15 kHz ja väiksema, kuid siiski märgatava erinevusega - sagedusel 15–22 kHz (mida tumedam, seda vähem moonutusi):

Suure bitikiirusega SBC-le üleminekul saate suurema osa ajast aptX-i heli kõigis kõrvaklappides.

  • original_and_aptx.zip
  • sbc.zip

Kuidas muuta Bluetoothi ​​korstnat Android-seadmes 5–7

Neid muudatusi tuleks rakendada Androidi bluetoothi ​​korstnate Bluedroid (Android 5) ja Fluoride (Android 6-7) jaoks. Qualcommi modifitseeritud virna ei toetata.

Asendage ühine stereo kahekanalilise standardse SBC konfiguratsioonis

android / platvorm / väline / bluetooth / bluedroid / btif / co / bta_av_co.c: 99

Kood:

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

Asendage A2D_SBC_IE_CH_MD_JOINT väärtusega A2D_SBC_IE_CH_MD_DUAL.

Suurendage kahe kanaliga prioriteeti

android / platvorm / väline / bluetooth / bluedroid / btif / co / bta_av_co.c: 41

Kood:

if (src_cap.ch_mode & A2D_SBC_IE_CH_MD_JOINT) pref_cap.ch_mode = A2D_SBC_IE_CH_MD_JOINT; else if (src_cap.ch_mode & A2D_SBC_IE_CH_MD_STEREO) pref_cap.ch_mode = A2D_SBC_IE_CH_MD_STEREO; else if (src_cap.ch_mode & A2D_SBC_IE_CH_MD_DUAL) pref_cap.ch_mode = A2D_SBC_IE_CH_MD_DUAL; else if (src_cap.ch_mode & A2D_SBC_IE_CH_MD_MONO) pref_cap.ch_mode = A2D_SBC_IE_CH_MD_MONO; Teisalda, kui koos A2D_SBC_IE_CH_MD_DUAL-ga üles.
  1. Keela või suurenda bitikiiruse piirangut

Androidi bluetooth-virnal pole mitte ainult bitimängu piirangut, vaid ka bitikiiruse piirangut 328 kbit / s. Kui kõrvaklapid toetavad näiteks bitpool 53 48 kHz jaoks, vähendab Android bitimahtu alla, et see mahuks 328 kbit / s piiridesse. See juhtub PÄRAST kodekite läbirääkimisi, kodeerimise etapis, ärge arvestage bitipunkti väärtust paketis Bluetooth SetCapilities.

android / platvorm / väline / bluetooth / bluedroid / btif / src / btif_media_task.c: 172

Kood:

#define DEFAULT_SBC_BITRATE 328

Asendage 512-ga.

  1. (ainult katsete jaoks) Keela MTU piirang.

See on vajalik bittikiiruse korral, mis on suurem kui ~ 580 kbit / s.

btif / src / btif_media_task.c: 174

Kood:

/ * 2DH5 kasuliku koormuse suurus 679 baiti - (4 baiti L2CAP päis + 12 baiti AVDTP päis) * / #define MAX_2MBPS_AVDTP_MTU 663

Bluetoothi ​​korstnate muutmine operatsioonisüsteemis Android 8–9

Neid muudatusi pole testitud, kuid need peaksid töötama.

Lisage kahekanaliline tugi A2DP SBC allikasse

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

Kood:

/ * SBC SRC koodeki võimalused * / staatiline konst tA2DP_SBC_CIE a2dp_sbc_caps = A2DP_SBC_IE_BLOCKS_8;

lisage faili ch_mode A2DP_SBC_IE_CH_MD_DUAL.

Vaikekonfiguratsioonis asendage ühine stereo kahe kanaliga

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

Kood:

/ * Vaikimisi SBC koodekiga konfiguratsiooni * / 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 * /};

Asendage A2DP_SBC_IE_CH_MD_JOINT väärtusega A2DP_SBC_IE_CH_MD_DUAL.

Suurendage kahe kanaliga prioriteeti

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

Kood:

staatilise bool 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) {p_result-> ch_mode = A2DP_SBC_IE_CH_MD_JOINT; p_kodek_konfig-> kanal_režiim = BTAV_A2DP_CODEC_CHANNEL_MODE_STEREO; return true; } if (ch_mode & A2DP_SBC_IE_CH_MD_STEREO) {p_result-> ch_mode = A2DP_SBC_IE_CH_MD_STEREO; p_kodek_konfig-> kanal_režiim = BTAV_A2DP_CODEC_CHANNEL_MODE_STEREO; return true; } if (ch_mode & A2DP_SBC_IE_CH_MD_DUAL) {p_result-> ch_mode = A2DP_SBC_IE_CH_MD_DUAL; p_kodek_konfig-> kanal_režiim = BTAV_A2DP_CODEC_CHANNEL_MODE_STEREO; return true; } if (ch_mode & A2DP_SBC_IE_CH_MD_MONO) {p_result-> ch_mode = A2DP_SBC_IE_CH_MD_MONO; p_kodek_konfig-> kanal_režiim = BTAV_A2DP_CODEC_CHANNEL_MODE_MONO; return true; } return false; }

Teisalda, kui koos A2DP_SBC_IE_CH_MD_DUAL-iga ülespoole.

Suurendage bitikiiruse piiri

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

Kood:

#define A2DP_SBC_DEFAULT_BITRATE 328

Asendage 512-ga.

  1. (ainult katsete jaoks) Keela MTU piirang

See on vajalik bittikiiruse korral, mis on suurem kui ~ 580 kbit / s.

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

Kood:

#define MAX_2MBPS_AVDTP_MTU 663

Plaasterdatud Bluetooth-virnad (välgutavad)

  • 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
  • tõmblukk
  • Le Max 2 Oreo Patched.zip
10 minutit loetud