kvm permission denied on Android Studio emulator - android

When I try to run an AVD, I get this erros:
/dev/kvm device permission denied
Yeah, I know, I don't have the permission to access /dev/kvm, I know that I can "solve" it by changing the /dev/kvm permission to my user, and set my user to kvm group, it is working but when I restart my user session, the /dev/kvm permission return to root user and root group, and I need to set the permission to my group again and again...
How to set this permission and prevent that when I reboot my computer my permission are not changed anymore?
SO: Ubuntu 18.04.01

This command should help you:
sudo setfacl -m u:$USER:rwx /dev/kvm
Using it you will grant to current user rwx permissions to /dev/kvm. Or just replace $USER to any user you need.
As mentioned in setfacl manpages "This utility sets Access Control Lists (ACLs) of files and directories." It's a little bit different from chmod and chown. Using it you can grant required permissions to specific user. It's a bit more powerful tool and much more fine-grained. If you want to dive deeper, read about Access Control Lists. For example, in ubuntu docs: https://help.ubuntu.com/community/FilePermissionsACLs

Had same problem, it worked when you restart the program.
sudo chmod 777 -R /dev/kvm

Permissions for kernel virtual machine can be updated with the command sudo chmod 777 -R /dev/kvm in ubuntu system.

Update system BIOS Setting Assus
Power on the system and press[delete] key to enter BIOS [EZ Mode]
Press [F7] key to enter BIOS [Advance Mode] as below picture:
(If press [delete] key to enter [Advanced Mode] directly and then no need to press [F7] key any more)
Select [Advanced] page and click [CPU Configuration] item
Select [Intel(VMX) Virtualization Technology] item and set to [Enabled]
Press [F10] key and click [OK] ,the system will auto reboot

The right permissions are:
sudo chmod 666 /dev/kvm

Related

"ADB Root access is disabled" Even with root access enabled

I'm trying to patch Tingle on my Xiaomi Redmi 4A running on LineageOS 17.1 via ADB for enabling system spoofing signature for microG. But I'm getting this error :ADB Root access is disabled by system setting - enable in Settings -> System -> Developer options everytime I type adb root in cmd (running as admin). My device is rooted with Magisk 20.4 and the 'Super Access' option is enabled as "Apps and ADB". I've also enabled "Android debugging" option under the 'Settings -> System -> Developer options'.
But I'm unable to find any option called 'ADB Root access' or 'Root Access' under 'Settings -> System -> Developer options'. I've also tried abdb Insecure by Chainfire.
But with no luck, the problem still persist. I just want to get root access in my adb interface to be able to use Tingle.
Note : I'm on Android 10. My SELinux status is enforcing (not permissive) and my ROM isn't stock nor official.
Thanks in advance! Any kind of help would be highly appreciated. <3
As #biAji pointed out, the 'Rooted debugging' option is not shown if ro.debuggable is set to 0 in the system props. The ADB as root option will be visible in developer options if you add the line ro.debuggable=1 anywhere in the /system/build.prop file.
If you cannot edit the file as root but su is working in the adb shell or any terminal app then SmartPack Kernel Manager might be able to help. Install the app and go to the Build prop Editor section from the menu. If you can find a key-value pair ro.debuggable then edit its value to 1. If it doesn't exist then create a new prop with that name as key and the value as 1.
Now reboot the device and check if an ADB as Root option appears in developer options. If it does, the build.prop file was successfully edited and now you can uninstall SmartPack.
After check the source code, this settings item will be available if the device is debuggable
#Override
public boolean isAvailable() {
return Build.IS_DEBUGGABLE;
}
And it's depend on the system props ro.debuggable which is set to 0 in my case.
I think I need a debuggable-boot image to patch the device.

Linux Grant Android Studio (AVD) permissions /dev/kvm (Permissions Denied)

I'm confused with how to give permissions to Android Studio to install Virtual Devices through AVD manager.
I tired to add permissions to the folder and relogged-in without success. I'm also confused with commands regarding group and username; am I suppose to substitute username with name of user.
Currently if I do theses commands I get
ls -al /dev/kvm
crw-rw---- 1 root root 10, 232 May 7 20:23 /dev/kvm
grep kvm /etc/group
I get nothing printed
So, I know there is no group. I don't want to give privilages to root just the user name for example "blade".
I also checked with the device supports KVM
egrep -c '(vmx|svm)' /proc/cpuinfo
8
kvm-ok
8
Thanks!
First, you'll need to install the qemu-kvm package. For Debian/Ubuntu:
sudo apt install qemu-kvm
Next, add your user to the kvm group:
sudo adduser <username_here> kvm
Finally, log out and log back in or reboot your computer for the changes to take effect.
See complete tutorial at https://www.linuxslaves.com/2018/10/fix-android-studio-devkvm-device-permission-denied-ubuntu.html
Update VT from Bios Setting
Power on the system and press[delete] key to enter BIOS [EZ Mode]
Press [F7] key to enter BIOS [Advance Mode] as below picture:
(If press [delete] key to enter [Advanced Mode] directly and then no need to press [F7] key any more)
Select [Advanced] page and click [CPU Configuration] item
Select [Intel(VMX) Virtualization Technology] item and set to [Enabled]
Press [F10] key and click [OK] ,the system will auto reboot

Android ADB devices unauthorized

Configuration:
Windows 8.1
ADB version: 1.0.32
Smartphone: Oneplus One
Problem
I installed the Samsung drivers as it is said to do. When I run the ADB devices command, it said unauthorized.
Already tried:
I've done everything that'd been said on this post: https://stackoverflow.com/a/25546300/1848376
But the problem is that I don't get a prompt on the phone to tell me I must accept the connection.
When I run the command adb shell, here is the answer:
error: device unauthorized.
This adbd's $ADB_VENDOR_KEYS is not set; try 'adb kill-server' if that seems wrong.
Otherwise check for a confirmation dialog on your device.
I did "adb kill-server", but it didn't change anything. Why?
Try Revoke USB DEBUGGING Authorization.
Enable USB debugging again.
It worked.
Thankgod xda developers exist : http://forum.xda-developers.com/verizon-lg-g3/help/unable-to-access-adb-t2830087
Just had to delete adbkey file in C:Users/$Name/.android adbkey.pub was missing.
Restart after this and both files are there.
If this does not work :
- Try Revoke USB DEBUGGING Authorization.
- Enable USB debugging again.
In sequence:
adb kill-server
in your DEVICE SETUP, go to developer-options end disable usb-debugging
press REVOKE USB debugging authorizations, click OK
enable usb-debugging
adb start-server
I removed the following files from the ~/.android folder:
adbkey
adbkey.pub
I disabled and enabled ADB within device and now it works...
in Developer options,
Enable USB debugging.
Give a authorization.
(if there is no a Developer option menu, you have to click 3 times build number of Phone State menu to be developer. you can sse a developer option menu.)
Delete existing adbkeys
OR
Rename adbkeys
Best practise is to rename the keys because it provides backup.
cd ~/.Android
mv adbkey adbkey2
mv adbkey.pub adbkey.pub2
Next stop & start the server
cd ~/Android/Sdk/platform-tools
Locate the device
/Android/Sdk/platform-tools$ ./adb devices
/Android/Sdk/platform-tools$ ./adb kill-server
/Android/Sdk/platform-tools$ ./adb start-server
Then, stop the emulator Open AVD manager, click on the down arrow, then click on wipe data
Restart the emulator. Then everything works fine :)
This worked for me
1- Go to ~/.android/ and remove “adbkey”
2- Disconnect USB connection
3- adb kill-server
4- Revoke USB debugging authorizations (in developer option)
5- Reconnect the device to the Ma
6- adb devices
Try this uncheck the "verify apps via USB" in developer options and then turn on and off the "USB Debugging". It works with me.
Ensure that you have accepted the pressed the "ok" button when it is asking it is showing the fingerprint of the device after connecting through usb to your PC.
In Android studio, Run menu > Run shows OFFLINE ... for the connected device.
Below is the procedure followed to solve it:
(Read the below note first) Delete the ~/.android/adbkey (or, rename to ~/.android/adbkey2, this is even better incase you want it back for some reason)
Note: I happened to do this step, but it didn't solve the problem, after doing all the below steps it worked, so unsure if this step is required.
Run locate platform-tools/adb
Note: use the path that comes from here in below commands
Kill adb server:
sudo ~/Android/Sdk/platform-tools/adb kill-server
You will get a Allow accept.. message popup on your device. Accept it. This is important, which solves the problem.
Start adb server:
sudo ~/Android/Sdk/platform-tools/adb start-server
In Android studio, do Run menu > Run again
It will show something like Samsung ... (your phone manufacture name).
Also installs the apk on device correctly this time without error.
Hope that helps.
None of the methods listed on this page worked for me; specifically:
I had an issue where the Settings app would crash when selecting Revoke USB debugging authorizations
I was running LineageOS 14 x86_64
I was using ADB over network
The /data/misc/adb contained no adb_keys file
Removing my local ~/.android/adbkey did not help either
I had root access from the local terminal
I was not getting any confirmation dialog
adb: error: failed to get feature set: device unauthorized.
This adb server's $ADB_VENDOR_KEYS is not set
Try 'adb kill-server' if that seems wrong.
Otherwise check for a confirmation dialog on your device.
- waiting for device -
In the end, I found a very useful post here that suggested to manually put the contents of ~/.android/adbkey.pub inside the /data/misc/adb/adb_keys file.
They suggested one of these two methods:
From another working device, copy the adb_keys file into your computer:
# On the other Android device
cp /data/misc/adb/adb_keys /sdcard
# From your computer
adb pull /sdcard/adb_keys .
Then put the working adb_keys file into the problematic Android device's sdcard (using Web or MTP) named as adb_keys, then copy the file into the correct path:
# On the problematic device
cp /sdcard/adb_keys /data/misc/adb/adb_keys
The other method is to simply copy your machine's adbkey.pub from the ~/.android/ directory, and put it into the problematic Android device's sdcard (using Web or MTP) named as adb_keys, then copy the file into the correct path:
# On the problematic device
cp /sdcard/adbkey.pub /data/misc/adb/adb_keys
(Note: there's a similar answer on SO that goes into further details for this method.)
Since I was running a web server on my computer, and I had curl installed on Android, I su'ed from the terminal and ran the following on my Android device:
cd /data/misc/adb
curl 192.168.1.35:8080/adbkey.pub > adb_keys
Killed the adb daemon (using adb kill-server) and BAM! The adb shell worked fine, like it should have been from the beginning.
Hopefully, the method described here works for you as it did for me.
First Remove the adbkey and adbkey.pub from the .android directory in your Home directory.
Make .android directory in your home with 710 permissions: $ chmod 710 .android/ and ownership as: chown -R <user>:<user> .android/. Ex:
$ chmod 710 .android/
$ chown -R ashan:ashan .android/
Go to developer options in your mobile and tap option Revoke USB debugging authorizations
Turn off all USB Debugging and Developer Options in the device and disconnect the device from your machine.
Connect the device again and at first turn on the Developer Options. Then Turn on the USB debugging.
At this point in your mobile, you will get a prompt for asking permission from you. Note: you must check the checkbox always accept from this …. option and click ok.
Now in you machine, start the adb server: adb start-server.
Hopefully when you issue the command: adb devices now, you will see your device ready authorized.
I was hit by this problem, too. I'm using my custom build of AOSP on Nexus 5X. I've added a single line in build/core/main.mk:
diff --git a/core/main.mk b/core/main.mk
index a6f829ab6..555657539 100644
--- a/core/main.mk
+++ b/core/main.mk
## -362,6 +362,8 ## else # !enable_target_debugging
ADDITIONAL_DEFAULT_PROPERTIES += ro.debuggable=0
endif # !enable_target_debugging
+ADDITIONAL_DEFAULT_PROPERTIES += ro.adb.secure=1
+
## eng ##
ifeq ($(TARGET_BUILD_VARIANT),eng)
Now adb shell works fine
Those materials are useful (Chinese articles): http://www.voidcn.com/blog/kc58236582/article/p-6335996.html, http://blog.csdn.net/fanmengke_im/article/details/28389439
Try deleting the adbkey file from C/.android folder
and then run the commands as
mentioned above i.e.
adb kill-server, adb start-server and adb devices
.
Your app is being detected as some harmful program.
Turn off "Verify apps over USB" option. It's in the same view as "USB debugging".
All you need is to authorize debug mode.
1. make sure your Device is connected to your PC.
2. Allow authorized for debug mode via Android-Studio by going to
Run -> Attach debugger to Android process
than you will see the pop up window for allow debug mode in your Device, press OK. done.
i hope it help to someone.
I had the same problem after reinstalled my android studio. Here's what I did to make my adb work again:
-path to C:\Users\User\AppData\Local\Android\sdk\platform-tools
-Shift+r.click and start command from here instead.
for anyone encountering this later this may also help. I encountered this exact issue trying to use adb from a user command prompt and the answers above did not help, but the problem went away with an "adb kill-server" when running in an administrator command prompt.
This worked for me:
rm ~/.android/adbkey.pub
sudo ./adb kill-server
sudo ./adb start-server
sudo ./adb -s emulator-5554 install ~/apk_to_install.apk
I'm not sure if is a good idea run adb with sudo privileges,but it was the only way I get it works. Regards.
I got this as root when as a non-root user I was getting permissions errors trying to connect to custom recovery (Philz). so I killed adb server, copied the .android subdirectory of my user account into /root, chowned -R to root.root, and restarted adb server. I'm in!
Disconnect USB between PC and device
Stop adb server by entering "adb kill-server" in command window
On device use "Revoke USB debugging authorizations" in "Developer Options"
On PC delete "adbkey" file in user directory, for example "C:\Users\Amit\.android"
Reconnect the device to the PC
Open a command window and enter "adb devices". Watch the device's screen for any Authorization message and allow the connection.
I suppose you have enabled On-device Developer Options in your smartphone? If not you can take a look at the steps provided by Android, http://developer.android.com/tools/device.html#developer-device-options
For FIRE STICK 4K it actually says in the dialog:
Otherwise check for a confirmation dialog on your device
Indeed on the TV in the other room there was a confirmation dialog. Doh'!
I had this problem and it wasnt solved by the deleting of any keys (at least deleting them didnt fix it, maybe had an effect after i did fix it though)
I actually had a discrepancy between my sdk-tools version and my Android Studio version. After updating my tools it still didnt work, but after updating AS (to 1.4) everything worked fine again.
Always update both sdk-tools and AS version together ;)

Android adb show "Allow USB debugging?" window

I am using Mobogenie software to backup data on my smartphone. When I do it, program invokes "Allow USB debugging?" window on my device, obviously via ADB. The question is - how? In the screenshot below (it is in Russian language)
button which is in red ellipse says: "Show this popup window again" and when I press it, my device shows "Allow USB debugging?" window. But i couldn't find any useful information about how to do the same thing - with ADB (which command should I use) or any other way. Maybe sombody got an idea? Or is there any way to kind of trace commands or find out how this progrom does it?
ADB Secure device authorizations are stored in a whitelist located here: /data/misc/adb/adb_keys
There's no way to remove RSA keys from the whitelist without having root access.
Having said that... If you do not "Allow USB Debugging" when that window pops up (by pressing cancel) or if you do not check the box that says "Always allow from this computer", then the RSA key is not stored in the whitelist. By running adb kill-server and then adb start-server, it forces a new check of the connected computer's RSA key.
My guess is that the button that is circled is there basically just kills and restarts the ADB server to have the popup come back, in case the user did not "Always allow" or if they Cancelled the request.
EDIT: I see that Mobogenie also includes a "one click root" feature... As sketchy as that sounds, if your device is rooted, then Mobogenie could be deleting your computer's stored key from your whitelist. As for this theory, there are multiple methods - one being simply doing a pure delete:
adb start-server
adb shell
cd /data/misc/adb
rm abd_keys
exit
adb kill-server
adb start-server
I also got the same issue in my lenovo mobile. Initially I thought the issue is with my mobile.
But actually the issue is the adb don't have enough permission to read the rsa key to communicate with the device. When we run adb server it'll create a folder named .android(Linux - /home/--username--/.android, Windows - C:/Users/--username--/.android) in the home directory of the current user which contains the adb rsa key files used to communicate between the devices.
When I check the folder is assigned with root permission(I am using Ubuntu 16.04 and I don't know how its assigned). So when I try to run adb start-server it is trying to create .android folder. But the current folder with root access is not allowing this to create the adb keys. That's why its failed.
So I deleted the folder using below command. Use the particular method to delete the folder based on your operating system. Below I mentioned for linux.
sudo rm -rf .android
Then restarted the adb server using below command.
adb start-server
Now It created the .android folder with the current user permission. Once done this I got the Allow USB debugging dialog.
Hope it help someone.

How to connect to a dev phone and gain the root permission through "adb shell"

I'm using a dev phone (Nexus One). I connected to it through "adb shell" but I couldn't get the root permission. When I run "su" in the shell, I got
$ su
su: permission denied
Actually I cannot access "/sbin" at all.
When I used the "root" option in "adb", I got errors too:
./adb root -s xxx shell
adbd cannot run as root in production builds
I got this error no matter I used a downloaded SDK or I compiled an SDK from the source. I'm not sure about what "production builds" actually means. Does it mean that I need to compile Android and put it on the phone? I thought a dev phone already has the root permission unlocked.
Thanks for your help.
You should unlock your phone - root it. Nexus One comes with this option, but you have to enable it. You can read this article or google for more.

Categories

Resources