Android Studio 2.3 using emulator from console, "/dev/kvm device: permission denied" for root user
Asked Answered
B

5

19

I'm trying to start a virtual android device which I created with the avdmanager of Android Studio 2.3 (via command line)

all commands are performed as root user

when i try to start the emulator via $ ~/Android/Sdk/tools/./emulator @Nexus_5X_Api_23_x86 the output is:

emulator: ERROR: x86_64 emulation currently requires hardware acceleration!
Please ensure KVM is properly installed and usable.
CPU acceleration status: This user doesn't have permissions to use KVM (/dev/kvm)

I'm using an Ubuntu 16.04 server with 64-Bit, Android Studio is started via x11 forwarding so my desktop environment is used (which is an ubuntu 16.04, 64-Bit too!)

when i'm typing $ kvm-ok it gives me:

INFO: /dev/kvm exists
KVM acceleration can be used

To proof that the .avd I'm trying to access exists:

$ ~/Android/Sdk/tools/bin/./avdmanager list avd

gives the output:

März 15, 2017 4:30:53 NACHM. sun.util.PropertyResourceBundleCharset$PropertiesFileDecoder decodeLoop
INFO: Invalid or unmappable UTF-8 sequence detected. Switching encoding from UTF-8 to ISO-8859-1
Available Android Virtual Devices:
    Name: Nexus_5X_Api_23_x86
  Device: Nexus 5X (Google)
    Path: /root/.android/avd/Nexus_5X_Api_23_x86.avd
  Target: Google APIs (Google Inc.)
          Based on: Android 6.0 (Marshmallow) Tag/ABI: google_apis/x86_64
  Sdcard: 800M

further the permissions for /dev/kvm are:

root@h2627852:~# ls -l /dev/kvm
crwxrwxrwx 1 root kvm 10, 232 Mär 15 10:48 /dev/kvm
root@h2627852:~# groups root
root : root kvm libvirtd libvirt

performing emulator-check gives me:

root@h2627852:~# ~/Android/Sdk/tools/./emulator-check accel hyper-v cpu-info window-mgr desktop-env
accel:
11
This user doesn't have permissions to use KVM (/dev/kvm)
accel
hyper-v:
0
Hyper-V runs only on Windows
hyper-v
cpu-info:
146
Intel CPU|Virtualization is supported|64-bit CPU|
cpu-info
debug1: client_input_channel_open: ctype x11 rchan 3 win 65536 max 16384
debug1: client_request_x11: request from ::1 36346
debug1: channel 1: new [x11]
debug1: confirm x11
debug1: channel 1: FORCE input drain
window-mgr:
0
GNOME Shell
window-mgr
desktop-env:
0
mate
desktop-env

I really don't know what to do anymore, searched all over the forum but didn't found a replicate of this problem for my system, the fixes for the same problem on other systems doesn't worked for me, already tried to completely purge and reinstall all qemu, libvirt, libvirtd and kvm packages without success.

Any help is appreciated!!

edit:
~/Android/Sdk/tools/./emulator @Nexus_5X_Api_23_x86 -verbose givese me,

following output:

emulator:Android emulator version 25.3.0.0 (build_id 3394391)
emulator:Found AVD name 'Nexus_5X_Api_23_x86'
emulator:Found AVD target architecture: x86_64
emulator:argv[0]: '/root/Android/Sdk/tools/./emulator'; program directory: '/root/Android/Sdk/tools'
emulator:  Found directory: /root/Android/Sdk/system-images/android-23/google_apis/x86_64/

emulator:Probing for /root/Android/Sdk/system-images/android-23/google_apis/x86_64//kernel-ranchu: file exists
emulator:Auto-config: -engine qemu2 (based on configuration)
emulator:  Found directory: /root/Android/Sdk/system-images/android-23/google_apis/x86_64/

emulator:try dir /root/Android/Sdk/tools
emulator:try dir /root/Android/Sdk/tools/./
emulator:try dir /root/Android/Sdk/emulator
emulator:Found target-specific 64-bit emulator binary: /root/Android/Sdk/emulator/qemu/linux-x86_64/qemu-system-x86_64
emulator:Adding library search path: '/root/Android/Sdk/emulator/lib64'
emulator:Adding library search path: '/root/Android/Sdk/emulator/lib64/libstdc++'
emulator:  Found directory: /root/Android/Sdk/system-images/android-23/google_apis/x86_64/

emulator:  Found directory: /root/Android/Sdk/system-images/android-23/google_apis/x86_64/

emulator:GPU emulation is disabled
emulator: Adding library search path for Qt: '/root/Android/Sdk/emulator/lib64/qt/lib'
emulator: Setting Qt plugin search path: QT_QPA_PLATFORM_PLUGIN_PATH=/root/Android/Sdk/emulator/lib64/qt/plugins
emulator: Running :/root/Android/Sdk/emulator/qemu/linux-x86_64/qemu-system-x86_64
emulator: qemu backend: argv[00] = "/root/Android/Sdk/emulator/qemu/linux-x86_64/qemu-system-x86_64"
emulator: qemu backend: argv[01] = "@Nexus_5X_Api_23_x86"
emulator: qemu backend: argv[02] = "-verbose"
emulator: Concatenated backend parameters:
 /root/Android/Sdk/emulator/qemu/linux-x86_64/qemu-system-x86_64 @Nexus_5X_Api_23_x86 -verbose
emulator: Android virtual device file at: /root/.android/avd/Nexus_5X_Api_23_x86.ini
emulator: virtual device content at /root/.android/avd/Nexus_5X_Api_23_x86.avd
emulator: virtual device config file: /root/.android/avd/Nexus_5X_Api_23_x86.avd/config.ini
emulator: using core hw config path: /root/.android/avd/Nexus_5X_Api_23_x86.avd/hardware-qemu.ini
emulator: Found AVD target API level: 23
emulator: Read property file at /root/Android/Sdk/system-images/android-23/google_apis/x86_64//build.prop
emulator: No boot.prop property file found.
emulator: Warning: config.ini contains invalid skin.path entry: (null)
emulator: autoconfig: -skin HVGA
emulator: autoconfig: -skindir (null)
emulator: autoconfig: -kernel /root/Android/Sdk/system-images/android-23/google_apis/x86_64//kernel-ranchu
emulator: Target arch = 'x86_64'
emulator: Auto-detect: Kernel image requires new device naming scheme.
emulator: Auto-detect: Kernel does not support YAFFS2 partitions.
emulator: autoconfig: -ramdisk /root/Android/Sdk/system-images/android-23/google_apis/x86_64//ramdisk.img
emulator: Using initial system image: /root/Android/Sdk/system-images/android-23/google_apis/x86_64//system.img
emulator: autoconfig: -data /root/.android/avd/Nexus_5X_Api_23_x86.avd/userdata-qemu.img
emulator: autoconfig: -initdata /root/.android/avd/Nexus_5X_Api_23_x86.avd/userdata.img
emulator: autoconfig: -cache /root/.android/avd/Nexus_5X_Api_23_x86.avd/cache.img
emulator: autoconfig: -sdcard /root/.android/avd/Nexus_5X_Api_23_x86.avd/sdcard.img
emulator: Increasing RAM size to 1024MB
emulator: VM heap size 0MB is below hardware specified minimum of 256MB,setting it to that value
emulator: System image is read only
emulator: GPU emulation is disabled
emulator: Found 2 DNS servers: 85.214.7.22 81.169.163.106
emulator: skin name 'HVGA' aliased to '320x480'
emulator: found magic skin width=320 height=480 bpp=16

emulator: CPU Acceleration: DISABLED
emulator: CPU Acceleration status: This user doesn't have permissions to use KVM (/dev/kvm)
emulator: ERROR: x86_64 emulation currently requires hardware acceleration!
Please ensure KVM is properly installed and usable.
CPU acceleration status: This user doesn't have permissions to use KVM (/dev/kvm)
Britisher answered 15/3, 2017 at 15:45 Comment(3)
Don't use tools/emulator use ` $ANDROID_HOME/emulator/emulator` insteadKamikamikaze
The problem remains the same, because '$ANDROID_HOME/emulator/emulator' is just symlinked to '$ANDROID_HOME/tools/emulator' since Android Studio 2.3Britisher
Possible duplicate of Android Studio: /dev/kvm device permission deniedSpecs
G
57

Simply try this. this was work for me

$ sudo chown username -R /dev/kvm

sometimes you need to run this code also

$ cd Android/Sdk/emulator/lib64/libstdc++
$ mv libstdc++.so.6 libstdc++.so.6.bak
$ ln -s /usr/lib64/libstdc++.so.6
Grizel answered 11/5, 2018 at 8:2 Comment(1)
I have to do this everytime I try to open emulator? Is this how it should go? There is no one-time-fix for it?Samuelsamuela
J
27

Try these steps:

Install qemu-kvm like following

sudo apt install qemu-kvm

Add user to kvm group using the following command:

sudo adduser <username> kvm

If you are getting permission denied, try following command

sudo chown <username> /dev/kvm

It worked for me in Ubuntu 18.04

Jeannajeanne answered 5/8, 2018 at 11:2 Comment(3)
I have to do this everytime I try to open emulator? Is this how it should go? There is no one-time-fix for it?Samuelsamuela
This works but it's not a solution. Once we want to open the emulator again, the error shows up again.Deathblow
@SherinBinu did you find a one-time-fix for it?Frigg
T
5

Assuming that you want to apply this change of ownership using the current OS user, use the following:

sudo chown $(whoami) -R /dev/kvm

Thicket answered 22/10, 2019 at 8:7 Comment(1)
chown: invalid user: ‘whoami’ -- so I wrapped it like this: $(whoami)Mayne
B
4

I solved the problem running

sudo apt install qemu-kvm
sudo chown username -R /dev/kvm
Brickwork answered 5/4, 2019 at 11:23 Comment(0)
T
0

Check nano /etc/group contains a line begins with kvm and ends with your user name. If not then run:

sudo gpasswd -a $USER kvm
Toothless answered 16/12, 2020 at 0:30 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.