6

I have an audio file recorded in 5.1 surround sound. I'd like to play this from my Android Device.

The issue I have is the various Android devices I have (tablets/phones) all contain the standard 3.5mm jack, which I think means stereo only! I'm not after a simulated surround sound, I need access to the outputs! Maybe it's possible via the USB?

My exact requirement (if it helps) is to end up with 4 outputs. Front-left and front-right as a stereo pair and back-left and back-right as a stereo pair (I don't need the sub-channel). However, being able to somehow split the signal so each goes to its own speaker is also fine, I can worry about the rest. The focus is on how the Android device can provide this signal(s).

The device I want to connect to is External Sound Card With USB 5.1 (note it's USB input). Maybe with the new USB DAC input?

8 Answers 8

5

There are many ways you can get the audio out.

Through wire:

  1. Head phone jack - you clearly said it can deliver only two channel audio.
  2. USB - You can use an OTG adapter and plug in a 5 channel USB sound card and get the 5 channel audio out.
  3. USB Type C may have this support native.

Wireless:

  1. Bluetooth - if the A2DP profile is supported (will be supported from v2.0 onwards) you can stream audio in stereo - again not good enough for you.
  2. Screencast protocols like Miracast or DLNA might support as it can be considered as a HDMI connection over Wi-Fi. These should support 5 channel audio.

Of course for all these you have to have a player which has appropriate codec support (usually AC3).

4
  • 2.USB - You can use an OTG adapter and plug in a 5 channel USB sound card and get the 5 channel audio out. That seems like the answer... Can you confirm it means I can get 5 channels out and not 5 virtual channels? Commented Oct 20, 2016 at 9:48
  • I am sorry, I cannot confirm as I have not tried myself.
    – Narayanan
    Commented Oct 20, 2016 at 10:14
  • As I have written in my answer, it will be only virtual. Android can only use 2 channels over USB Commented Oct 20, 2016 at 10:36
  • Then this answer might not deserve the 'accepted' status unless the OP accepts the wireless based solution.
    – Narayanan
    Commented Oct 21, 2016 at 6:18
3

In stock Android, it's not possible to have more than two audio channels (stereo) via USB as documented here.

The 3.5mm jack, as well as Bluetooth, do not support more than 2 channels either (although enhanced aptX (Bluetooth) does support 5.1 surround sound, it's not yet supported by Android).

You can connect an external sound card, it may even work but you won't have 5.1 output through your Android's USB port which means you could only have virtual surround sound on an external sound card.

2

I don't know what possibilities were available back in 2016 when this question was first posted, but today I managed to get multi-channel audio working on my Android 12 TvOS tvbox with a USB 7.1 channel external soundcard.

I used the docs from https://source.android.com/docs/core/audio/implement-policy and edited /vendor/etc/usb_audio_policy_configuration.xml to add a multi-channel output to the config. (As shipped, the config only supported stereo.) I basically copied some info from the HDMI policy. Here's a diff showing what I changed. Note that you'd need root access to make these changes on your box.

--- /tmp/usb0.xml   2023-04-04 08:53:35.572497487 +0100
+++ /tmp/usb1.xml   2023-04-04 09:18:15.012439753 +0100
@@ -21,6 +15,11 @@
             <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
                      samplingRates="44100" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
         </mixPort>
+        <mixPort name="usb_multi output" role="source">
+            <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+                     samplingRates="44100 48000"
+                     channelMasks="AUDIO_CHANNEL_OUT_STEREO AUDIO_CHANNEL_OUT_QUAD AUDIO_CHANNEL_OUT_5POINT1 AUDIO_CHANNEL_OUT_7POINT1"/>
+        </mixPort>
         <mixPort name="usb_device output" role="source"/>
         <mixPort name="usb_device input" role="sink"/>
     </mixPorts>
@@ -38,7 +37,7 @@
         <route type="mix" sink="USB Host Out"
                sources="usb_accessory output"/>
         <route type="mix" sink="USB Device Out"
-               sources="usb_device output"/>
+               sources="usb_device output,usb_multi output"/>
         <route type="mix" sink="USB Headset Out"
                sources="usb_device output"/>
         <route type="mix" sink="usb_device input"

For reference: I have an H96 Max V58 tvbox, and used this StarTech USB soundcard. https://www.startech.com/en-us/cards-adapters/icusbaudio7d

Also note: this soundcard also has SPDIF input and output. The SPDIF out carries the front left/right channels too, same as the analog output. That turns out to work perfectly for my purpose. I'm using Edifier S350DB for my front speakers; this is an active speaker set with 2 bookshelf speakers and a subwoofer and I'm using TOSlink optical cable for the connection. My original setup was

 (back of room)         (front of room)
   Projector
       |
     HDMI
       |
     TVbox ---> SPDIF -> front speakers

Now it's

 (back of room)         (front of room)
   Projector
       |
     HDMI
       |
     TVbox
       |
      USB ---> SPDIF -> front speakers
       |
      RCA -> rear speaker amp

I added a simple stereo amp and pair of passive bookshelf speakers for the rear surround channels, and use this with Kodi (version 20) set to use a 4.0 speaker configuration. In 4.0, the rear channels are actually coming out the output labeled "center/sub" on the StarTech box.

0
1

Multichannel support exists, but from what I can tell, it's not necessarily standardized. I still can't confirm to what extent it is supported, but my limited understanding suggests that only external devices designed with Android in mind would be able to work with multi-channel support, and would otherwise either not recognize the extra channels, or just duplicate it over to those channels.

It's a shame that Android doesn't have a way to actually manage audio streams or channels, but it seems that has more to do with the way external sound devices are implemented more than anything.

https://source.android.com/devices/audio/usb

1

You could try this app: USB Audio Player PRO.

The developer claims to have built its own USB audio driver and thus supports multi-channel streams: USB audio driver in USB audio player/recorder pro and audio evolution mobile.

0

Others have suggested that USB audio only supports stereo (2-channel) audio streams, and that 5.1 could be achieved using 3rd party applications. The reference to it only supporting stereo is outdated (Android 5.0, 2014). This limitation is no longer present. The Android USB Audio HAL supports up to 8 channels (7.1).

2
  • 1
    Please add references or links to support your answer
    – Gokul NC
    Commented Jan 10, 2018 at 8:19
  • 1
    This could be very interesting. The answer for me in the end was buy a Windows 10 tablet as it just works with surround sound. However, I'm still very keen to know more about this, especially as source.android.com/devices/audio doesn't show any information to confirm this (at least that I could see) Commented Jan 10, 2018 at 11:42
0

Via normal miniplug stereo output, you should be able to feed into a Dolby-enabled system which separates the encoded extra channels from the stereo output. That's not true discrete multichannel, but it sounds OK to me on my home stereo.

I"m also looking to try to get this from an Android in an outdoor portable music situation, hopefully via Bluetooth.

0

I can confirm that multichannel audio works if the /vendor/etc/usb_audio_policy_configuration.xml policy is updated as described above.

The caveat is that not all players actually output proper multichannel audio. KODI, MPV and Nova players work, VLC does not.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .