This blog post explains how to fix the no permissions error the Android Debugger displays when running the adb devices command Linux. The solutions presented here have been tested and found working on Ubuntu Lucid, but they should also work on other Ubuntu and Linux versions as well.
This official help center page has many working and non-working answers to the problem, and many comments. The root cause of the problem is that the current user doesn't have sufficient permissions to access the USB device file created when the phone was connected in USB debug mode.
Killing all running adb server instances with sudo killall adb, disconnecting the phone, reconnecting the phone, and then running sudo adb devices instead (so adb gets run as root) fixes the problem.
Alternatively, it is possible to implement a long-term fix which doesn't require sudo, thus it works with e.g. IntelliJ IDE integration:
- Create a file named /tmp/android.rules with the following contents (hex vendor numbers were taken from the vendor list page):
SUBSYSTEM=="usb", ATTRS{idVendor}=="0bb4", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="0e79", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="0502", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="0b05", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="413c", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="0489", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="091e", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="18d1", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="0bb4", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="12d1", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="24e3", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="2116", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="0482", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="17ef", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="1004", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="22b8", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="0409", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="2080", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="0955", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="2257", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="10a9", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="1d4d", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="0471", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="04da", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="05c6", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="1f53", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="04e8", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="04dd", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="0fce", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="0930", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="19d2", MODE="0666"
- Run the following commands (without the leading
$
):$ sudo cp /tmp/android.rules /etc/udev/rules.d/51-android.rules $ sudo chmod 644 /etc/udev/rules.d/51-android.rules $ sudo chown root. /etc/udev/rules.d/51-android.rules $ sudo service udev restart $ sudo killall adb
- Disconnect the USB cable between the phone and the computer.
- Reconnect the phone.
- Run adb devices to confirm that now it has permission to access the phone.
Please note that it's possible to use , USER="$LOGINNAME"
instead of , MODE="0666"
in the .rules file, substituting $LOGINNAME
for your login name, i.e. what id -nu prints.
Yay, it's working, thanks! :)
ReplyDeleteThank You very much. It helps.
ReplyDeleteThank you man, you rock :) I´ve read and tried 50 manuals like yours but each one was missing the most important step... : to unplug and plug in again the phone :D :) thx again
ReplyDelete#pt-br
ReplyDeleteMuito bom. Funcionou perfeitamente por aqui. Obrigado pela dica.
#en
Very good. It worked perfectly here. Thanks for the tip.
Thanks :) helped me :)
ReplyDeleteThank you so much! Now to move forward...
ReplyDeleteThanks very much! If you want, you can add Archos devices to the list (ID: 0e79)
ReplyDeleteThanks a ton..it really worked...:)
ReplyDeleteYou made my day! Thanks a lot!
ReplyDeletePerfect :) Thank you
ReplyDeleteThanks buddy... :)
ReplyDeleteYou rock! Thank you!
ReplyDeleteThank you very much : )
ReplyDeleteWonderful walk through
ReplyDeleteThis works too:
ReplyDeleteassuming adb is in your path etc:
sudo pkill -f adb (killall adb remaining)
sudo env PATH=$PATH adb devices
hav fun
@georges: Your commands constitute a good short-term solution, but after a few hours adb stops working, and your commands have to be run again (... and again). The solution in my bog post solves the problem for good.
ReplyDelete@georges: after hours searching and nothing working, (previously I had no problems in ubuntu, but moved to Linux Mint Debian Edition) your solution worked for me. Thanks georges and pts!
ReplyDeleteTHIS WORKED PERFECTLY! Thank you. I wish I could point all the questions here
ReplyDeleteThanks, It works.
ReplyDeleteThank you so much.
ReplyDeleteIt worked for my LG P970 perfectly !!!
Thanks!!
ReplyDeleteI was trying to fastboot (command not found) and with this min changes, you saved me.
Thank you very much. It worked!!!
ReplyDeleteThanks!!!! This worked for me :-)
ReplyDeleteThank a ton... it works like a butter..
ReplyDeleteThank you, it worked like a charm. :)
ReplyDeleteYou are king :) Thanx very much
ReplyDeleteworked for me, thanks a lot
ReplyDeletethank you You saved my ass...
ReplyDeleteYou rock man!
I already have the file /etc/udev/rules.d/51-android.rules but I'm smart enough not to overwrite it. For those less knowledgeable, perhaps you might change your instructions to: cat tmpfile >> udevfile
ReplyDeleteBig thanks for the info.
I am having problems and need help please
ReplyDeleteafter typing in the command:
chown. root.....
i get:usage chown [:GROUP] [FILE2]....
then i typed command:
service udev restart
and i get:
unknown command udev
usage: service [-h|-?]
service list
service check SERVICE
service call SERVICE CODE [i32 INT |s16 STR]...
options:
i32 write the integer INT into the send parcel s16 write the utf-16 string STR into the send parcel
then i tried killall adb but i get: adb no process killed
any suggestions please?
Thank you! Working like a Charm on Ubuntu 14.04 and my Zopo Mobile
ReplyDeleteThanks!!!!
ReplyDeleteMany Thanks.
ReplyDeleteIt works!!!
ReplyDeleteGod Bless You man!
ReplyDeleteTHANX A LOT!!
ReplyDeleteGOD BLESS YOU!!
Thanks a lot. Works like a charm
ReplyDeleteThanks... it worked for me.... :)
ReplyDeleteMany thanks, it work :)
ReplyDeleteYou are awesome! This old post helped me today! For anyone lost, Lava Iris 300 use HTC's vendor id: 0bb4
ReplyDeleteThank you very much... its saves my day :) ..
ReplyDeleteMany thanks man! Finally a good fix! I was having a problem with ZTE V790 and Ubuntu 14.04, but now is all set :)
ReplyDeleteExcelente.. me quieto el sombrero... Gracias
ReplyDeleteYou ROCK ! it works!!!!!!!!!!
ReplyDeletewhere is /tmp/android.rules ??
ReplyDeleteunder what folder /tmp is? so i can create that android.rules file?
@Medio81: Create a file named android.rules anywhere, with any text editor, and then copy it to /tmp: sudo cp android.rules /tmp/android.rules
ReplyDeleteMany thanks, it worked!
ReplyDeleteYou superman!
ReplyDeleteMany thanks from Finland! :D
ReplyDelete