[MTCD Android Head Units General] scorillo_ro:
I have no previous experience with the apps you mention, so I don't know if some or all of them worked on the old units.

Anyway I gave them a try and found a solution for some of them!

First I want to say that I maintain my previous affirmation about DailyRoads Voyager: it's crash has nothing to do with accessing the USB camera. I know this worked on old units. Hope they'll fix the problem, I don't have a response from them to my email.

Caroo Free does not work and I don't know if it was working on old units, maybe never worked with USB cameras. Autoboy, Road Recorder and AutoGuard will work after the following trick. Did not test CamOnRoad as you said "no problem".

Now let's talk about the solution...

Looking through the logs after I was plugging in my USB camera I found this:

I/EventHub( 589): New device: id=10, fd=198, path='/dev/input/event3', name='UVC Camera (046d:0825)', classes=0x80000401, configuration='', keyLayout='/system/usr/keylayout/Generic.kl', keyCharacterMap='/system/usr/keychars/Generic.kcm', builtinKeyboard=false, wakeMechanism=EPOLLWAKEUP, usingClockIoctl=true
I/InputReader( 589): Device added: id=10, name='UVC Camera (046d:0825)', sources=0x00002103
...
D/CameraHal( 238): number of camdevice (0)
E/CameraHal( 238): camera_get_number_of_cameras(743): board profiles cam num 0
D/CameraHal( 238): camera_get_number_of_cameras(799): Open /dev/video0 success!
D/CameraHal( 238): camera_get_number_of_cameras(799): Open /dev/video1 success!
...
D/CameraHal( 238): camera_get_number_of_cameras(807): camera_get_number_of_cameras(807): availableDeivce 2, cam_cnt 0
D/CameraHal( 238): camera_get_number_of_cameras(834): Open /dev/video0 success!
D/CameraHal( 238): camera_get_number_of_cameras(842): video devicd(/dev/video0): capability card adv7181_back_3-0_100_100, driver rk312x-camera, bus_info , version 00000300, device_caps 00000000.
...
D/CameraHal( 238): camera_get_number_of_cameras(834): Open /dev/video1 success!
D/CameraHal( 238): camera_get_number_of_cameras(842): video devicd(/dev/video1): capability card UVC Camera (046d:0825), driver uvcvideo, bus_info usb-ff580000.usb-1.4, version 00030a00, device_caps 04000001.
...
D/CameraHal( 238): camera_get_number_of_cameras(1252): camera_get_number_of_cameras(1252): camPath: [0]/dev/video0 [1]/dev/video1 [2]
D/CameraHal( 238): camera_get_number_of_cameras(1253): camera_get_number_of_cameras(1253): driver: [0]rk312x-camera [1]uvcvideo [2]
D/CameraHal( 238): camera_get_number_of_cameras(1269): camera_get_number_of_cameras(1269): Current board have 2 cameras attached.
D/CameraHal( 238): camera_get_number_of_cameras(1272): meida_profiles_xml_control time (168861)us
I/CameraService( 238): CameraService::getNumberOfCameras() = 2
D/UsbDeviceManager( 589): usb camera num2

So our android is seeing two cameras and I think this might be the trick they used to fool other software and still their DVR app still works.

I did the following "dirty" trick in a Terminal Emulator window:

su
rm -f /dev/video0

Unplugged and plugged back in the USB camera and guess what? Android is reporting only one camera on /dev/video1 and the fore mentioned apps starts working. Guess one more time... the MTC DVR app stops working.

This "dirty" trick survives sleep mode because the android is not reinitialized, but you must do the trick again after a reboot.

I hope someone else will find a better way...