qemu-user-static icon indicating copy to clipboard operation
qemu-user-static copied to clipboard

please add support for /dev/video* for the guest aarch64 running in host x86_64

Open vak opened this issue 5 years ago • 0 comments

/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

vak avatar Oct 16 '20 10:10 vak