Cannot use UVC camera and USB microphone simultaneously from same device


I’m running into an issue on Android where I cannot simultaneously use the video and audio interfaces of a single external USB device. I’m trying to determine whether this is a limitation of Android’s USB/audio architecture or something incorrect in my implementation.

This is not an issue on all devices, only some (until now only) Samsung devices.

I’ve got an external USB device , connected (USB-C 2.0, isochronous) to an android mobile device:
The USB device exposes:

  • a UVC camera

  • a UAC microphone

So it’s a single composite device with separate interfaces for video and audio.

From the logs:

  • Interfaces 0–7 -> UVC (class 14)

  • Interfaces 8–10 -> USB Audio (class 1)

What I am doing:

  • For video:

    • Using UVC via USB host

    • Tried both AndroidUSBCamera and UVCCamera, currently going with UVCCamera

  • For audio:

    • Using Android’s normal audio stack (AudioRecord)

    • Selecting the USB mic

Both share the same underlying USB device session in my code, but:

  • Camera is handled via native USB (libuvc-style)

  • Audio goes through Android framework

What happens:

  • Start camera and put it in a preview, works fine

  • After a small delay

  • Start mic

  • Video dies but microphone still works

  • When I restart the camera, then the audio fails

Same when do the mic first. It feels as if the audio “takes over” the device and kills the video stream.

What I’ve tested

  • Camera only works

  • Audio only works

  • Both together conflicts

  • When I plug in other webcams to test, then this also happens.

Also:

  • Tried different UVC libs (saki4510t UVCCamera, AndroidUSBCamera, alexey-pelykh UVCCamera), but ended in the same behavior

  • Different configs (FPS, resolution, buffer sizes), no real change

  • This issue does not occur on the following Samsung devices: A16, A6, A50, S24 FE, S24

  • But it does occur on these: S22, S22 Ultra, A53, A35, A26

My suspicion:

It feels like an Android USB ownership issue, not a timing bug.

My current theory:

  • The device is composite (video + audio interfaces)

  • UVC library uses Android USB host API (user-space)

  • Android audio stack uses system-level USB audio driver

  • When audio starts, Android:

    • reclaims something

    • reconfigures endpoints

    • or otherwise interferes with the device

So two different “USB stacks” are fighting over one physical device?..

How, do I receive isochronous video and audio from an external USB device on android.

  • video (UVC)

  • audio (USB mic) (UAC?)

from the same device, at the same time.

If anyone has dealt with this or has pointers such as existing libs (or even “this is impossible on stock Android”), I’d really appreciate it

0
Apr 14 at 3:36 PM
User Avatarlucas hilgevoord
#android#audio-recording#uvc#android-usb#usb-hostcontroller

No answer found for this question yet.