please add support for /dev/video* for the guest aarch64 running in host x86_64
/kind enhancement
Description: Any attempt to work with video in aarch64 architecture emulated on x86_64 leads currently to the error "Function not implemented". For example:
# v4l2-ctl -l --verbose
Failed to open /dev/video0: Function not implemented
root@12dd9b6fcfcb:/# ll /dev/video*
crw-rw---- 1 root video 81, 0 Oct 16 09:23 /dev/video0
crw-rw---- 1 root video 81, 1 Oct 16 09:23 /dev/video1
Steps to reproduce the issue:
I have a following setup:
Host Hardware: x86_64 equipped with a webcam (tried different webcams) Host OS: Ubuntu 20.04.1
Guest Architecture: aarch64 Guest OS: Ubuntu 20.04 (also tried 16.x and 18.x)
Emulation: quemu-user-static (also tried binfmt)
Guest OS is running via Docker + QEMU
➜ cat /proc/sys/fs/binfmt_misc/qemu-aarch64
enabled
interpreter /usr/bin/qemu-aarch64-static
flags: F
offset 0
magic 7f454c460201010000000000000000000200b700
mask ffffffffffffff00fffffffffffffffffeffffff
Results received: see desrciption.
Environment:
- QEMU version: (if you can know it):
ipxe-qemu-256k-compat-efi-roms/focal,now 1.0.0+git-20150424.a25a16d-0ubuntu4 all [installed,automatic] ipxe-qemu/focal-updates,now 1.0.0+git-20190109.133f4c4-0ubuntu3.2 all [installed,automatic] qemu-block-extra/focal-updates,now 1:4.2-3ubuntu6.7 amd64 [installed,automatic] qemu-kvm/focal-updates,now 1:4.2-3ubuntu6.7 amd64 [installed] qemu-system-common/focal-updates,now 1:4.2-3ubuntu6.7 amd64 [installed,automatic] qemu-system-data/focal-updates,now 1:4.2-3ubuntu6.7 all [installed,automatic] qemu-system-gui/focal-updates,now 1:4.2-3ubuntu6.7 amd64 [installed,automatic] qemu-system-x86/focal-updates,now 1:4.2-3ubuntu6.7 amd64 [installed,automatic] qemu-user-binfmt/focal-updates,now 1:4.2-3ubuntu6.7 amd64 [installed,automatic] qemu-user/focal-updates,now 1:4.2-3ubuntu6.7 amd64 [installed] qemu-utils/focal-updates,now 1:4.2-3ubuntu6.7 amd64 [installed,automatic] qemu/focal-updates,now 1:4.2-3ubuntu6.7 amd64 [installed]
- Container application: Docker
Output of docker version, podman version or singularity version
➜ docker version
Client: Docker Engine - Community
Version: 20.10.0-beta1
API version: 1.40
Go version: go1.13.15
Git commit: ac365d7
Built: Tue Oct 13 18:15:22 2020
OS/Arch: linux/amd64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 19.03.13
API version: 1.40 (minimum version 1.12)
Go version: go1.13.15
Git commit: 4484c46d9d
Built: Wed Sep 16 17:01:20 2020
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.4.1
GitCommit: c623d1b36f09f8ef6536a057bd658b3aa8632828
runc:
Version: 1.0.0-rc92
GitCommit: ff819c7e9184c13b7c2607fe6c30ae19403a7aff
docker-init:
Version: 0.18.0
GitCommit: fec3683
Guest aarch64 runs in privileged mode:
docker run --privileged --device=/dev/video0:/dev/video0 --env DISPLAY=unix$DISPLAY -v $XAUTH:/root/.Xauthority -v /tmp/.X11-unix:/tmp/.X11-unix -it --rm arm64v8/ubuntu:20.04 bash
Additional information:
I tried also binfmt way to register emulators. The output of v4l-ctl was a little bit different:
# v4l2-ctl -l
Unsupported ioctl: cmd=0xffffffff80685600
Failed to open /dev/video0: Function not implemented