8

I've been reading up recently on different ways of wirelessly streaming media. At first I ignored bluetooth connections because of the quality, but then I started reading about aptX, which sounded pretty good (no pun intended). The only problem is that I have no idea if my devices support aptX - one of them being a Galaxy Player 4.0 (it is totally OK if you don't know what that is) with a custom ROM, where I'm figuring that it's probably not supported. Here's my question, though - the way I understand it, aptX is only a sort of codec that is used during the transmission via Bluetooth - so I'm figuring that it should, in theory at least, be possible to install this aptX codec on any computer or phone. Obviously the company/companies behind aptX are not advertising it this way - but is it still possible to do this somehow?

5
  • 1
    Would depend entirely on the device and how much of the Bluetooth stack is modifiable. If you're asking about Windows, Linux or other computer OSes, please specify. If you're asking specifically about phones, please go to the appropriate site (e.g. Android Enthusiasts, Ask Different, Windows Phone).
    – Bob
    Jul 27 '15 at 0:22
  • So it's generally possible, it would just require a modifiable bluetooth stack (and obviously some programming skills, if it hasn't been done by anyone else)? If that's the case, that would answer my question for this purpose, and I could go onto one of the other sites to get more exact information. Jul 27 '15 at 15:07
  • 2
    Depends if the Bluetooth & codec processig were implemented in user-accessible software, OS privileged software, firmware or hardware. And of course technically possible does not necessarily mean it's practical. IIRC CSR provides aptX support in Windows via a driver installation, but such a modification would be difficult if not impossible on your typical phone unless the OEM already supported it (mostly because it's proprietary and the owners don't seem to be interested in doing so).
    – Bob
    Jul 27 '15 at 15:09
  • Sorry about my edit, I didn't realize you had already replied. Jul 27 '15 at 15:11
  • OK, that answers my question. Could you please post it so I can mark it as the answer? Jul 27 '15 at 15:14
10

At its core, Apt-X is "just" a particular encoding for audio, taking advantage of clauses in the Bluetooth spec that allow vendor extensions.

In effect, from a hardware standpoint, all you technically need is a Bluetooth radio supporting the data rates and physical layer transmission modes that come with Bluetooth 3.0 (or later, since all the later specs are backwards compatible). It is difficult to impossible to retrofit Bluetooth 3.0 support onto a 2.1 or earlier radio due to hardware limitations, but once you have a Bluetooth 3.0 stack, adding apt-X is simply a software challenge.

So the Bluetooth stack for apt-X looks something like this:

  • Bluetooth 3.0 "base platform" (this includes physical radio specifications, link-layer protocols, minimum data transfer rates, connectivity and authentication, and eventually the A2DP stereo audio profile).
  • The apt-X codec, or an implementation thereof, which sits on top of A2DP and is advertised as being available. The client device and the host negotiate on what codec to use, then decide to use apt-X as the preferred codec if it's available on both sides.

Bob is 100% correct that doing this on an Android device, even with root, would be nigh-on impossible, because of how deeply the Bluetooth stack is buried in the system.

Furthermore, obtaining a copy of the apt-X codec is extremely difficult if you don't already have one. Possible issues include:

  • How do you get a copy of binaries of the apt-X codec for your platform?
  • Assuming you get the binaries, what's the chance they're compatible with your Bluetooth stack and toolchain? If any library versions, etc. are incompatible, it won't work.
  • Licensing. CSR licenses apt-X on a per-device basis. If they were aware of you doing this, they might have cause to go after you on legal grounds for copyright violation.
  • If you were to try and implement your own version of the apt-X codec, how are you going to find out how to do this, without an open standard? apt-X is proprietary, so you'd have to reverse engineer their code (which may be illegal).
  • Assuming you were able to find a working implementation of apt-X, how would you then integrate that into the Bluetooth stack of your device, which can vary widely in implementation? You'd have to compile it, fix any interface or header errors, linkage errors, etc.
  • Finally, even if you get all the software 100% working and everything is great, you could still be strung up on patent license violations in the extremely likely instance of CSR having exclusive software patents on some algorithms or ideas used in the apt-X codec. Think you can't patent an idea? Think again. Software OEMs do it all the time.

These days, the only reliable way to get apt-X is to buy devices (host devices and client devices) that actively advertise built-in apt-X support. They will probably have a CSR logo on the device or in the marketing literature advertising this support. Absent that, it's very unlikely that apt-X support has been added, and you're probably using something like SBC (or possibly AAC if you're lucky).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.