{"id":35159,"date":"2019-10-31T22:02:38","date_gmt":"2019-10-31T19:02:38","guid":{"rendered":"https:\/\/prohoster.info\/blog\/modifitsiruem-bluetooth-stek-dlya-uluchsheniya-zvuka-na-naushnikah-bez-kodekov-aac-aptx-i-ldac\/"},"modified":"2019-10-31T22:02:38","modified_gmt":"2019-10-31T19:02:38","slug":"modifitsiruem-bluetooth-stek-dlya-uluchsheniya-zvuka-na-naushnikah-bez-kodekov-aac-aptx-i-ldac","status":"publish","type":"post","link":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/modifitsiruem-bluetooth-stek-dlya-uluchsheniya-zvuka-na-naushnikah-bez-kodekov-aac-aptx-i-ldac","title":{"rendered":"Modifying the Bluetooth stack to enhance sound quality on headphones without AAC, aptX, and LDAC codecs","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i>Before reading this article, it is recommended to familiarize yourself with the previous article: <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/427997\/\">Audio over Bluetooth: a detailed look at profiles, codecs, and devices<\/a><\/noindex><\/i><\/p>\n<p>Some users of wireless headphones report low sound quality and a lack of high frequencies when using the standard SBC Bluetooth codec, which is supported by all audio devices. A common recommendation for improving sound is to purchase devices and headphones that support aptX and LDAC codecs. These codecs require licensing fees, which makes devices that support them more expensive.<\/p>\n<p>It turns out that the poor quality of SBC is due to artificial limitations in Bluetooth stacks and headphone settings, and this limitation can be bypassed on any existing devices through software changes to the smartphone or computer.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>SBC Codec<\/h2>\n<p>The SBC codec has many different parameters that are negotiated during the connection setup. Among them are:<\/p>\n<ul>\n<li>Number and type of channels: Joint Stereo, Stereo, Dual Channel, Mono;<\/li>\n<li>Number of frequency bands: 4 or 8;<\/li>\n<li>Number of blocks in a packet: 4, 8, 12, 16;<\/li>\n<li>Bit distribution algorithm during quantization: Loudness, SNR;<\/li>\n<li>Maximum and minimum value of the bit pool used during quantization (bitpool): typically, from 2 to 53.<\/li>\n<\/ul>\n<p>The decoding device must support any combination of these parameters. The encoding device may not implement all of them.<br \/>\nExisting Bluetooth stacks typically negotiate the following profile: Joint Stereo, 8 bands, 16 blocks, Loudness, bitpool 2..53. This profile encodes 44.1 kHz audio at a bitrate of 328 kbps.<br \/>\nThe bitpool parameter directly affects the bitrate within a profile: the higher it is, the higher the bitrate, and consequently the quality.<br \/>\nHowever, the bitpool parameter is not tied to a specific profile; other parameters such as channel type, number of frequency bands, and number of blocks also significantly influence the bitrate. The bitrate can be indirectly increased by negotiating non-standard profiles without changing the bitpool.<\/p>\n<p><img decoding=\"async\" alt=\"Modifying the Bluetooth stack to enhance sound quality on headphones without AAC, aptX, and LDAC codecs\" src=\"\/wp-content\/uploads\/2019\/06\/4836fdb65b1204173bd6e01ef2d0cc6c.svg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>\n<i>Formula for calculating SBC bitrate<\/i><\/p>\n<p>\nFor example, the Dual Channel mode encodes the channels separately, using the entire bitpool for each channel. Forcing the device to use Dual Channel instead of Joint Stereo, we will nearly double the bitrate at the same maximum bitpool value: 617 kbps.<br \/>\nIn my opinion, using a non-profile-specific bitpool value at the negotiation stage is a shortcoming of the A2DP standard, which led to an artificial limitation on SBC quality. It would have been wiser to negotiate the bitrate instead of the bitpool.<\/p>\n<p>These fixed values for Bitpool and Bitrate originate from a table of recommended values for high-quality audio. However, a recommendation is not a reason to confine ourselves to these values.<\/p>\n<p><img decoding=\"async\" alt=\"Modifying the Bluetooth stack to enhance sound quality on headphones without AAC, aptX, and LDAC codecs\" src=\"\/wp-content\/uploads\/2019\/06\/1076b610245c4bcb88e5812bdea27e60.svg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nThe A2DP v1.2 specification, which was in effect from 2007 to 2015, mandates that all decoding devices must correctly handle bitrates up to 512 kbps:<\/p>\n<blockquote><p>The decoder of the SNK shall support all possible bitpool values that do not result in excess of the maximum bitrate. This profile limits the available maximum bitrate to 320 kbps for mono, and 512 kbps for two-channel modes.<\/p><\/blockquote>\n<p>The new version of the specification has no bitrate limitation. It is assumed that modern headphones released after 2015 that support EDR can handle bitrates of up to \u2248730 kbps.<\/p>\n<p>For some reason, the Bluetooth stacks I have checked, such as Linux (PulseAudio), Android, Blackberry, and macOS, have artificial limitations on the maximum value of the bitpool parameter, which directly affects the maximum bitrate. However, this is not the biggest issue; almost all headphones also restrict the maximum bitpool value to 53.<br \/>\nAs I have already confirmed, most devices work well on a modified Bluetooth stack with a bitrate of 551 kbps, without interruptions or crackling. However, such a bitrate will never be negotiated under normal conditions on standard Bluetooth stacks.<\/p>\n<h2>Modify the Bluetooth stack<\/h2>\n<p>Any Bluetooth stack that is compliant with the A2DP standard supports Dual Channel mode, but activating it through the interface is not feasible.<\/p>\n<p>Let's add a switch to the interface! I created patches for Android 8.1 and Android 9 that provide full Dual Channel support in the stack, add a mode to the mode switching menu in developer tools, and handle SBC with Dual Channel support as if it's an additional codec, like aptX, AAC, or LDAC (Android refers to this as HD Audio), adding a checkbox in the Bluetooth device settings. Here's how it looks:<\/p>\n<p><img decoding=\"async\" alt=\"Modifying the Bluetooth stack to enhance sound quality on headphones without AAC, aptX, and LDAC codecs\" src=\"\/wp-content\/uploads\/2019\/06\/5f14e2955f1dcaefa8ddc4b8fa413de1.svg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/review.lineageos.org\/q\/topic:bt-sbc-hd-dualchannel-pie+(status:open%20OR%20status:merged)\">Patch for Android 9<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/review.lineageos.org\/q\/topic:bt-sbc-hd-dualchannel+(status:open%20OR%20status:merged)\">Patch for Android 8.1<\/a><\/noindex><\/p>\n<p>When the checkbox is activated, Bluetooth audio starts transmitting at a bitrate of <b>551 kbps<\/b>, if the headphones support a connection speed of 3 Mbps, or <b>452 kbps<\/b>, if the headphones only support 2 Mbps.<\/p>\n<p>This patch is included in the following alternative firmware:<\/p>\n<ul>\n<li><b>LineageOS<\/b><\/li>\n<li><b>Resurrection Remix<\/b><\/li>\n<li><b>crDroid<\/b><\/li>\n<\/ul>\n<h2>Where did the 551 and 452 kbps come from?<\/h2>\n<p>Bluetooth's air partitioning technology is designed for effective transmission of large fixed-size packets. Data is transmitted in slots, with the maximum number of slots sent in one transmission being 5. There are also transmission modes that use 1 or 3 slots, but not 2 or 4. In 5 slots, you can transmit up to 679 bytes at a connection speed of 2 Mbps and up to 1021 bytes at a speed of 3 Mbps, while in 3 slots, the limits are 367 and 552 bytes respectively.<\/p>\n<p><img decoding=\"async\" alt=\"Modifying the Bluetooth stack to enhance sound quality on headphones without AAC, aptX, and LDAC codecs\" src=\"\/wp-content\/uploads\/2019\/06\/c4596cb8ebdbaf2b57e201117e640f2f.svg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIf we want to transmit less data than 679 or 1021 bytes, but more than 367 or 552 bytes, the transmission will still take 5 slots, and the data will be transmitted in the same amount of time, reducing transmission efficiency.<\/p>\n<p><img decoding=\"async\" alt=\"Modifying the Bluetooth stack to enhance sound quality on headphones without AAC, aptX, and LDAC codecs\" src=\"\/wp-content\/uploads\/2019\/06\/c9b0645c78d41d7d3a9879930c091d2a.svg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSBC in Dual Channel mode, at 44100 Hz audio with Bitpool 38 parameters, 16 blocks per frame, 8 frequency ranges, encodes audio into frames of 164 bytes, with a bitrate of 452 kbps.<br \/>\nAudio must be encapsulated in L2CAP and AVDTP transmission protocols, which take away 16 bytes from the useful audio payload.<\/p>\n<p><img decoding=\"async\" alt=\"Modifying the Bluetooth stack to enhance sound quality on headphones without AAC, aptX, and LDAC codecs\" src=\"\/wp-content\/uploads\/2019\/06\/2fd899e7b521497844e1354ae5f825eb.svg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Thus, in one Bluetooth transmission with 5 slots, we can fit 4 audio frames:<\/p>\n<pre><code class=\"plaintext\">679 (EDR 2 mbit\/s DH5) - 4 (L2CAP) - 12 (AVDTP\/RTP) - 1 (SBC header) - (164*4) = 6<\/code><\/pre>\n<p>\nWe fit 11.7 ms of audio data into the transmitted packet, which will be sent in 3.75 ms, leaving us with 6 unused bytes in the packet.<br \/>\nIf we slightly raise the bitpool, we won't be able to pack 4 audio frames into a single packet anymore. We'll have to send 3 frames at a time, which reduces transmission efficiency, decreases the amount of audio transmitted per packet, and will quickly lead to audio stuttering in poor radio conditions.<\/p>\n<p>Similarly, a bitrate of 551 kbps was selected for EDR 3 Mbps: with Bitpool 47, 16 blocks in the frame, and 8 frequency bands, the frame size is 200 bytes at a bitrate of 551 kbps. One packet contains 5 frames or 14.6 ms of music.<\/p>\n<p>The algorithm for calculating all SBC parameters is quite complex, and it's easy to get confused if calculating manually; that's why I created an interactive calculator to assist those interested: <noindex><a rel=\"nofollow\" href=\"https:\/\/btcodecs.valdikss.org.ru\/sbc-bitrate-calculator\/\">btcodecs.valdikss.org.ru\/sbc-bitrate-calculator<\/a><\/noindex><\/p>\n<h2>Why is all this needed?<\/h2>\n<p>Contrary to the common belief about the sound quality of the aptX codec, in some files it can yield worse results than SBC with a standard bitrate of 328 kbps.<\/p>\n<p>SBC dynamically allocates quantization bits for frequency bands, operating on the principle of 'from low to high.' If the entire bitrate is used on lower and mid frequencies, the upper frequencies will be 'cut off' (resulting in silence instead).<br \/>\naptX quantizes frequency bands with the same number of bits continuously, which is why it has a constant bitrate: 352 kbps for 44.1 kHz, 384 kbps for 48 kHz, and it cannot 'transfer bits' to the frequencies that need them the most. Unlike SBC, aptX will not 'cut off' frequencies but will add quantization noise to them, reducing the audio dynamic range and sometimes introducing characteristic crackles. SBC, on the other hand, 'eats details' \u2014 discarding the quietest sections.<br \/>\nOn average, compared to SBC 328k, aptX introduces fewer distortions in music with a wide frequency range, but in music with a narrow frequency range and wide dynamic range, SBC 328k sometimes performs better.<\/p>\n<p>Let's consider a specific case. The spectrogram of a piano recording:<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/er\/nq\/rc\/ernqrcwa0ic5mqwopjg5zbu_fxm.png\"><img decoding=\"async\" alt=\"Modifying the Bluetooth stack to enhance sound quality on headphones without AAC, aptX, and LDAC codecs\" src=\"\/wp-content\/uploads\/2019\/06\/91247edc12764c6a4985e5a58ec1ad81.svg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>The main energy lies in frequencies from 0 to 4 kHz and extends up to 10 kHz.<br \/>\nThe spectrogram of the file compressed in aptX looks as follows:<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/dl\/bl\/do\/dlbldoq_rdrjykephl2ostfbafk.png\"><img decoding=\"async\" alt=\"Modifying the Bluetooth stack to enhance sound quality on headphones without AAC, aptX, and LDAC codecs\" src=\"\/wp-content\/uploads\/2019\/06\/aad46eb446ac9c5cffbd0ce8bd11e45b.svg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>And this is how SBC 328k looks.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/us\/3m\/ke\/us3mke0av1s_1ezkyk6ycq1g2vo.png\"><img decoding=\"async\" alt=\"Modifying the Bluetooth stack to enhance sound quality on headphones without AAC, aptX, and LDAC codecs\" src=\"\/wp-content\/uploads\/2019\/06\/1b879741ea109c10c9e94a9a17830fc6.svg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>It is evident that SBC 328k periodically completely cut off the range above 16 kHz, consuming all the available bitrate for ranges below this value. However, aptX introduced more distortions in the frequency spectrum audible to the human ear, which can be seen in the subtracted original spectrogram from the aptX spectrogram (the brighter, the more distortions):<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/ug\/-i\/5z\/ug-i5zpihrfnvumf9no_glecqna.png\"><img decoding=\"async\" alt=\"Modifying the Bluetooth stack to enhance sound quality on headphones without AAC, aptX, and LDAC codecs\" src=\"\/wp-content\/uploads\/2019\/06\/7820015a2ef3c7f97802de179f2201eb.svg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>While SBC 328k distorted the signal less in the range from 0 to 10 kHz, it cut off the rest:<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/tf\/x8\/7z\/tfx87z8hpenx51spblrfvkc-ihe.png\"><img decoding=\"async\" alt=\"Modifying the Bluetooth stack to enhance sound quality on headphones without AAC, aptX, and LDAC codecs\" src=\"\/wp-content\/uploads\/2019\/06\/793e3011a6aa07f1750cf0a5cca204cf.svg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>The 485k SBC bitrate was sufficient to preserve the entire frequency range without disabling bands.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/_c\/mc\/xy\/_cmcxyxwlf7u4tv-rbplwk5bmtu.png\"><img decoding=\"async\" alt=\"Modifying the Bluetooth stack to enhance sound quality on headphones without AAC, aptX, and LDAC codecs\" src=\"\/wp-content\/uploads\/2019\/06\/27f215a26658b9b2bf3d852f4da96740.svg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>The 485k SBC on this track significantly outperforms aptX in the 0-15 kHz range, with a smaller but still noticeable difference in the 15-22 kHz range (the darker it gets, the fewer distortions):<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/e-\/qz\/h8\/e-qzh8azmingcbhvuwxj8iptuau.png\"><img decoding=\"async\" alt=\"Modifying the Bluetooth stack to enhance sound quality on headphones without AAC, aptX, and LDAC codecs\" src=\"\/wp-content\/uploads\/2019\/06\/b65c37703ee677f561929ba714ed19ec.svg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/files.catbox.moe\/kpx711.zip\">Archive of original audio, SBC, and aptX.<\/a><\/noindex>.<\/p>\n<p>By switching to high-bitrate SBC, you\u2019ll get sound that often exceeds aptX on any headphones. On headphones supporting EDR at 3 Mbps, a bitrate of 551 kbps delivers sound comparable to aptX HD.<\/p>\n<h2>Can you do even more?<\/h2>\n<p>The Android patch also includes an option for even greater bitrate increase for EDR 2 Mbps devices. You can increase the bitrate from 452 kbps to 595 kbps, at the cost of reduced transmission stability in complex radio conditions.<br \/>\nSimply set the persist.bluetooth.sbc_hd_higher_bitrate variable to 1:<\/p>\n<pre><code class=\"plaintext\"># setprop persist.bluetooth.sbc_hd_higher_bitrate 1<\/code><\/pre>\n<p>\nThe extreme bitrate patch has only been accepted in LineageOS 15.1, but not in 16.0.<\/p>\n<h2>Compatibility with devices<\/h2>\n<p>SBC Dual Channel is supported by almost all headphones, speakers, and car head units. It's no wonder, as the standard mandates support in any decoding devices. There are a few devices where this mode causes issues, but these are isolated cases.<br \/>\nFor more details on compatible devices, check out <noindex>4pda<\/noindex> or <noindex><a rel=\"nofollow\" href=\"https:\/\/forum.xda-developers.com\/android\/software-hacking\/improve-bluetooth-audio-quality-t3832615\">xda-developers<\/a><\/noindex>.<\/p>\n<h2>Comparison of sound differences<\/h2>\n<p>I created a web service that encodes audio to SBC (as well as aptX and aptX HD) in real-time, right in the browser. With it, you can compare the sound of various SBC profiles and other codecs without actually transmitting audio via Bluetooth, using any wired headphones, speakers, and your favorite music, while also adjusting encoding parameters during audio playback.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/btcodecs.valdikss.org.ru\/sbc-encoder\/\">btcodecs.valdikss.org.ru\/sbc-encoder<\/a><\/noindex><\/p>\n<h2>Communication with Android developers<\/h2>\n<p>I have written to many Bluetooth stack developers at Google, asking them to consider integrating the patches into the main branch of Android \u2014 AOSP, but I haven't received a single response. My patches in <noindex><a rel=\"nofollow\" href=\"https:\/\/android-review.googlesource.com\/q\/topic:bt-sbc-hd-dualchannel+(status:open%20OR%20status:merged)\">the patch management system Gerrit for Android<\/a><\/noindex> also went uncommented by anyone involved.<br \/>\nI would appreciate assistance regarding the developers at Google and the implementation of SBC HD in Android. The patch in Gerrit is already outdated (this is an early revision), and I will update it if the developers are interested in my changes (updating it is challenging for me, as I do not have devices compatible with Android Q).<\/p>\n<h2>Conclusion<\/h2>\n<p>Smartphone users with LineageOS, Resurrection Remix, and crDroid firmware can enjoy improved sound quality right now; they only need to activate the option in their Bluetooth device settings. Linux users can also achieve a higher SBC bitrate by installing <noindex><a rel=\"nofollow\" href=\"https:\/\/lists.freedesktop.org\/archives\/pulseaudio-discuss\/2019-June\/031168.html\">the patch from Pali Roh\u00e1r<\/a><\/noindex>, which, among other things, adds support for aptX, aptX HD, and FastStream codecs.<br \/>\n<br \/>Source: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/455316\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0435\u0440\u0435\u0434 \u043f\u0440\u043e\u0447\u0442\u0435\u043d\u0438\u0435\u043c \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0451\u0439: \u0410\u0443\u0434\u0438\u043e \u0447\u0435\u0440\u0435\u0437 Bluetooth: \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e \u043f\u0440\u043e\u0444\u0438\u043b\u044f\u0445, \u043a\u043e\u0434\u0435\u043a\u0430\u0445 \u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0445 \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0431\u0435\u0441\u043f\u0440\u043e\u0432\u043e\u0434\u043d\u044b\u0445 \u043d\u0430\u0443\u0448\u043d\u0438\u043a\u043e\u0432 \u043e\u0442\u043c\u0435\u0447\u0430\u044e\u0442 \u043d\u0438\u0437\u043a\u043e\u0435 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u0432\u0443\u043a\u0430 \u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u043a \u0432\u044b\u0441\u043e\u043a\u0438\u0445 \u0447\u0430\u0441\u0442\u043e\u0442 \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e Bluetooth-\u043a\u043e\u0434\u0435\u043a\u0430 SBC, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442 \u0432\u0441\u0435 \u0430\u0443\u0434\u0438\u043e\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430. \u0427\u0430\u0441\u0442\u043e\u0439 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0435\u0439 \u0434\u043b\u044f \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f \u0437\u0432\u0443\u043a\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u043a\u0443\u043f\u043a\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u0438 \u043d\u0430\u0443\u0448\u043d\u0438\u043a\u043e\u0432 \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u043a\u043e\u0434\u0435\u043a\u043e\u0432 aptX \u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-35159","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0435\u0440\u0435\u0434 \u043f\u0440\u043e\u0447\u0442\u0435\u043d\u0438\u0435\u043c \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0451\u0439: \u0410\u0443\u0434\u0438\u043e \u0447\u0435\u0440\u0435\u0437 Bluetooth: \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e \u043f\u0440\u043e\u0444\u0438\u043b\u044f\u0445, \u043a\u043e\u0434\u0435\u043a\u0430\u0445 \u0438.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/modifitsiruem-bluetooth-stek-dlya-uluchsheniya-zvuka-na-naushnikah-bez-kodekov-aac-aptx-i-ldac\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u043c Bluetooth-\u0441\u0442\u0435\u043a \u0434\u043b\u044f \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f \u0437\u0432\u0443\u043a\u0430 \u043d\u0430 \u043d\u0430\u0443\u0448\u043d\u0438\u043a\u0430\u0445 \u0431\u0435\u0437 \u043a\u043e\u0434\u0435\u043a\u043e\u0432 AAC, aptX \u0438 LDAC | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0435\u0440\u0435\u0434 \u043f\u0440\u043e\u0447\u0442\u0435\u043d\u0438\u0435\u043c \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0451\u0439: \u0410\u0443\u0434\u0438\u043e \u0447\u0435\u0440\u0435\u0437 Bluetooth: \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e \u043f\u0440\u043e\u0444\u0438\u043b\u044f\u0445, \u043a\u043e\u0434\u0435\u043a\u0430\u0445 \u0438.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/modifitsiruem-bluetooth-stek-dlya-uluchsheniya-zvuka-na-naushnikah-bez-kodekov-aac-aptx-i-ldac\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:02:38+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:02:38+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Modifying the Bluetooth stack to enhance sound quality on headphones without AAC, aptX, and LDAC codecs | ProHoster","description":"Before reading this article, it is recommended to review the previous article: Audio over Bluetooth: in-depth information on profiles, codecs, and.","canonical_url":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/modifitsiruem-bluetooth-stek-dlya-uluchsheniya-zvuka-na-naushnikah-bez-kodekov-aac-aptx-i-ldac","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"en_US","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u043c Bluetooth-\u0441\u0442\u0435\u043a \u0434\u043b\u044f \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f \u0437\u0432\u0443\u043a\u0430 \u043d\u0430 \u043d\u0430\u0443\u0448\u043d\u0438\u043a\u0430\u0445 \u0431\u0435\u0437 \u043a\u043e\u0434\u0435\u043a\u043e\u0432 AAC, aptX \u0438 LDAC | ProHoster","og:description":"\u041f\u0435\u0440\u0435\u0434 \u043f\u0440\u043e\u0447\u0442\u0435\u043d\u0438\u0435\u043c \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0451\u0439: \u0410\u0443\u0434\u0438\u043e \u0447\u0435\u0440\u0435\u0437 Bluetooth: \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e \u043f\u0440\u043e\u0444\u0438\u043b\u044f\u0445, \u043a\u043e\u0434\u0435\u043a\u0430\u0445 \u0438.","og:url":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/modifitsiruem-bluetooth-stek-dlya-uluchsheniya-zvuka-na-naushnikah-bez-kodekov-aac-aptx-i-ldac","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:02:38+00:00","article:modified_time":"2019-10-31T19:02:38+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"35159","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 22:08:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 15:47:35","updated":"2026-01-21 22:08:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/35159","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/comments?post=35159"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/35159\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media?parent=35159"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/categories?post=35159"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/tags?post=35159"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}