Hi everyone, I’m trying to get the Arducam 8MP 1080P USB Camera Module (the 1/4" CMOS IMX219 Mini UVC USB2.0 webcam, model B07TYKH1KC) to stream video in our Android app and I’m completely stuck. We’re on Android 11 running on a Digi devkit, camera connected over USB. The camera shows up and Android lists it as an ‘external’ camera, but we never get an actual preview. Has anyone run into this?
Welcome! Can you share a bit more about how you’re accessing the camera? Which API are you using (Camera2 or CameraX), what preview surface type (TextureView vs SurfaceView), and is there anything in logcat when the preview fails?
Sure, full setup:
- Platform: Android 11
- Target device: Digi devkit (CC8M Mini - Digi Embedded for Android | ConnectCore 8M Mini)
- Camera connected via USB; Android classifies it as facing ‘external’
- Product page: https://www.arducam.com/product/b0196arducam-8mp-1080p-usb-camera-module-1-4-cmos-imx219-mini-uvc-usb2-0-webcam-board-with-1-64ft-0-5m-usb-cable-for-windows-linux-android-and-mac-os/
For the app I’ve tried both Camera2 and CameraX, with both TextureView and SurfaceView. I followed this StackOverflow approach for SurfaceView: https://stackoverflow.com/questions/39893367/how-to-show-the-camera-preview-on-a-surfaceview
I also noticed the product page says ‘Android compatibility: contact us for support’.
Here’s a photo of the hardware connection: 
Thanks for the detail. Can you describe exactly where it fails? Does the camera open successfully and then fail when you create the capture session, or does it fail earlier? Any error codes showing up in logcat?
All four combos (Camera2/CameraX x TextureView/SurfaceView) fail in the same spot. The device opens, but configuring the streams throws:
CAMERA_ERROR (3): endConfigure:510: Camera 101: Error configuring streams: Function not implemented (-38)
Then our app reports: com.papapill.vision.detection.DetectorException: Unable to create video streaming session.
Other brand/model USB cameras work fine in the exact same app, so it’s specific to this camera.
That -38 (ENOSYS) is being returned from the camera HAL during endConfigure, which is interesting. Can you paste the full stack trace from logcat? It should show which stream configuration is being rejected.
Here’s the full stack trace from logcat:
- Failed to start video.
- com.papapill.vision.detection.DetectorException: Unable to create video streaming session
at com.papapill.vision.capture.CameraConnection$Connection.lambda$streamVideo$1(CameraConnection.java:283)
at com.papapill.vision.capture.CameraConnection$Connection.$r8$lambda$NMAP_bzYIsC22leIu1xfRJJ-WbM(Unknown Source:0)
at com.papapill.vision.capture.CameraConnection$Connection$$ExternalSyntheticLambda0.accept(Unknown Source:6)
at com.papapill.screen.diagnostic.SurfaceTextureSetup.setupPreview(SurfaceTextureSetup.java:23)
at com.papapill.vision.capture.CameraConnection$Connection.streamVideo(CameraConnection.java:261)
at com.papapill.vision.capture.CameraConnection.streamVideo(CameraConnection.java:140)
at com.papapill.screen.diagnostic.VisionDiagnosticFragment.startVideo(VisionDiagnosticFragment.java:547)
at com.papapill.screen.diagnostic.VisionDiagnosticFragment.lambda$attachToCamera$17(VisionDiagnosticFragment.java:272)
at com.papapill.screen.diagnostic.VisionDiagnosticFragment.$r8$lambda$mL93mPbqkM-umlbPjJr_FND9z5g(Unknown Source:0)
at com.papapill.screen.diagnostic.VisionDiagnosticFragment$$ExternalSyntheticLambda47.apply(Unknown Source:8)
at java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:834)
at java.util.concurrent.CompletableFuture$UniHandle.tryFire(CompletableFuture.java:809)
at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:484)
at java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:1990)
at com.papapill.vision.capture.CameraConnection$OpenStateCallback.onOpened(CameraConnection.java:173)
at android.hardware.camera2.impl.CameraDeviceImpl$1.run(CameraDeviceImpl.java:151)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7656)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
Caused by: android.hardware.camera2.CameraAccessException: CAMERA_ERROR (3): endConfigure:510: Camera 101: Error configuring streams: Function not implemented (-38)
at android.hardware.camera2.CameraManager.throwAsPublicException(CameraManager.java:1009)
at android.hardware.camera2.impl.ICameraDeviceUserWrapper.endConfigure(ICameraDeviceUserWrapper.java:119)
at android.hardware.camera2.impl.CameraDeviceImpl.configureStreamsChecked(CameraDeviceImpl.java:484)
at android.hardware.camera2.impl.CameraDeviceImpl.createCaptureSessionInternal(CameraDeviceImpl.java:679)
at android.hardware.camera2.impl.CameraDeviceImpl.createCaptureSession(CameraDeviceImpl.java:644)
at com.papapill.vision.capture.CameraConnection$Connection.lambda$streamVideo$1(CameraConnection.java:281)
at com.papapill.vision.capture.CameraConnection$Connection.$r8$lambda$NMAP_bzYIsC22leIu1xfRJJ-WbM(Unknown Source:0)
at com.papapill.vision.capture.CameraConnection$Connection$$ExternalSyntheticLambda0.accept(Unknown Source:6)
at com.papapill.screen.diagnostic.SurfaceTextureSetup.setupPreview(SurfaceTextureSetup.java:23)
at com.papapill.vision.capture.CameraConnection$Connection.streamVideo(CameraConnection.java:261)
at com.papapill.vision.capture.CameraConnection.streamVideo(CameraConnection.java:140)
at com.papapill.screen.diagnostic.VisionDiagnosticFragment.startVideo(VisionDiagnosticFragment.java:547)
at com.papapill.screen.diagnostic.VisionDiagnosticFragment.lambda$attachToCamera$17(VisionDiagnosticFragment.java:272)
at com.papapill.screen.diagnostic.VisionDiagnosticFragment.$r8$lambda$mL93mPbqkM-umlbPjJr_FND9z5g(Unknown Source:0)
at com.papapill.screen.diagnostic.VisionDiagnosticFragment$$ExternalSyntheticLambda47.apply(Unknown Source:8)
at java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:834)
at java.util.concurrent.CompletableFuture$UniHandle.tryFire(CompletableFuture.java:809)
at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:484)
at java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:1990)
at com.papapill.vision.capture.CameraConnection$OpenStateCallback.onOpened(CameraConnection.java:173)
at android.hardware.camera2.impl.CameraDeviceImpl$1.run(CameraDeviceImpl.java:151)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7656)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
Caused by: android.os.ServiceSpecificException: endConfigure:510: Camera 101: Error configuring streams: Function not implemented (-38) (code 10)
at android.os.Parcel.createExceptionOrNull(Parcel.java:2387)
at android.os.Parcel.createException(Parcel.java:2357)
at android.os.Parcel.readException(Parcel.java:2340)
at android.os.Parcel.readException(Parcel.java:2282)
at android.hardware.camera2.ICameraDeviceUser$Stub$Proxy.endConfigure(ICameraDeviceUser.java:799)
at android.hardware.camera2.impl.ICameraDeviceUserWrapper.endConfigure(ICameraDeviceUserWrapper.java:116)
at android.hardware.camera2.impl.CameraDeviceImpl.configureStreamsChecked(CameraDeviceImpl.java:484)
at android.hardware.camera2.impl.CameraDeviceImpl.createCaptureSessionInternal(CameraDeviceImpl.java:679)
at android.hardware.camera2.impl.CameraDeviceImpl.createCaptureSession(CameraDeviceImpl.java:644)
at com.papapill.vision.capture.CameraConnection$Connection.lambda$streamVideo$1(CameraConnection.java:281)
Thanks, that’s really useful. The failure is happening in createCaptureSession → configureStreamsChecked → endConfigure, returning ENOSYS (-38). So the device opens fine, but the HAL on this platform is rejecting the specific stream configuration your app is asking for (resolution, format, usage flags, etc.).
Two things worth trying:
- Dump the StreamConfigurationMap for this camera and compare it against the resolution/format your app is requesting - make sure it’s actually listed as supported.
- Try a minimal config (e.g., YUV_420_888 at a small size) to see if endConfigure still returns -38.
Separately - have you tested this camera on another device/platform to rule out a hardware issue?
Here’s what I’ve tested:
- Windows 11 laptop: works fine via https://webcamtests.com/
- Pixel 5 (latest Android) with the USB Camera app: works
- Our Android app: other brand/model USB cameras work, this one doesn’t
I googled ‘endConfigure:510 Camera 101 Error configuring streams Function not implemented (-38)’ but nothing useful came up.
Thanks for the thorough testing. That’s consistent with the camera being fine as a standard UVC device - it’s driver-free and verified with the USB Camera app. The issue is specific to how this platform’s Android camera stack handles the camera’s stream configuration inside a custom Camera2/CameraX pipeline.
To be upfront: our team mainly works on embedded platforms (Raspberry Pi, Jetson) and has limited Android app development experience. We’ve verified the camera with the USB Camera app, but we haven’t tested it specifically for Android system development, so we don’t have a ready-made fix for this -38 error.
Just closing the loop - we’ve worked it out on our end. There’s an incompatibility between your camera and Android. So, no, your camera is not compatible with Android.
Thanks for the update. To summarize for anyone else hitting this: the camera works as a standard UVC device (verified with the USB Camera app), but in this Android 11 environment stream configuration fails with ‘Function not implemented (-38)’ - an incompatibility between the camera and the Android camera stack on that Digi devkit when using Camera2/CameraX. There’s no direct application-side solution from our side for Android system development.
For anyone needing Android-specific development or customization on this camera, please reach out to our sales team at [email protected] to discuss further evaluation and customization.