The Small Device Has Eyes

a small device has eyes now.
well, it is actually the Anbernic RG40XXV1 that runs a modified ROCKNIX with Umfeld’s CaptureSDL capturing images from a very cheap webcam.
it runs really well :) one thing i noticed that ( at least this particular camera ) is a bit picky about the resolution. although it advertizes a wide range of different resolutions it would only properly work with 1280×720px ( with other sometimes failing silently, sometime complaining verbously ). what a small price to pay for finally adding an eye to a small device.
a bit on the technical background: ROCKNIX already mounts some USB device ( like keyboards and WiFi dongles ) but fails to recognize cameras. so, after a bit of experimentation, i managed to reconfigure the linux kernel so that it would properly recognize USB cameras ( i.e USB Video Class (UVC) ). this is what i did:
modifying kernel configurations to support UVC
the configuration needs to be handled per device. in this case i am using H700 which is the SoC of Anbernic RG40XXV:
bring up the configuration menu:
cd /mnt/rocknix/distribution # adapt as needed
make kconfig-menuconfig-H700
#make kconfig-menuconfig-RK3326
in the configuration enable the following options:
enable with `*`:
> Device Drivers > Multimedia support > Media driver > Media USB Adapters
enable with `M`:
> Device Drivers > Multimedia support > Media driver > Media USB Adapters > USB Video Class (UVC)
> Device Drivers > Multimedia support > Media driver > Media USB Adapters > GSPCA based webcams
is already enabled with `*`:
> Device Drivers > Multimedia support > Media core support > Video4Linux core
enable with `M`:
> Device Drivers > USB support > xHCI HCD (USB 3.0) support
enable with `*`:
> Device Drivers > USB support > USB announce new devices
configuration is saved to:
/mnt/rocknix/distribution/projects/ROCKNIX/devices/H700/linux//linux.aarch64.conf
add module loading ( THIS IS NOT TESTED!!! ):
mkdir -p /mnt/rocknix/distribution/projects/ROCKNIX/devices/H700/filesystem/etc/modules-load.d
echo "uvcvideo" > /mnt/rocknix/distribution/projects/ROCKNIX/devices/H700/filesystem/etc/modules-load.d/uvcvideo.conf
then rebuild.
after installation and boot check if module is loaded:
lsmod | grep uvc # check if module is loaded
modprobe uvcvideo # if not load module manually
ls /dev/video* # if camera is detected this should show `/dev/video...`
if you are interested in build ROCKNIX yourself you can find my forked and modified version2 at https://github.com/dennisppaul/distribution/tree/feature/sdl3
-
i have not bothered yet to test this on other device e.g R36S. i reckon it should work the same way. with R36S and all its sibling, however, there is an issues: AFAIK they are not capable of handling USB hubs and therefore can only handle a single USB device. since they have no built in WiFi it is either WiFi or camera. again, this is not an unsolvable problem but not mine to address ATM. ↩
-
added SDL3 and glm packages as well as UVC support ↩