Thursday, May 2, 2024
 Popular · Latest · Hot · Upcoming
50
rated 0 times [  50] [ 0]  / answers: 1 / hits: 237397  / 3 Years ago, thu, july 1, 2021, 8:28:45

I'm using Ubuntu 12.10 and I have installed Android SDK, set it's path in my user .bashrc and it works.



The problem is that my phone requires adb to be ran by root for permissions, but running adb with sudo I get the following error:



sudo: adb: command not found



I tried to simply use sudo -E adb start-server, but it doesn't work. Tried to add the export path line to /root/.bashrc and (after realizing it didn't help) to /etc/bash.bashrc.



I remember I could set it on my Arch Linux, but I guess my problem now is connected to Ubuntu root account not behaving like I expect it.






What I don't understand is the following:



These don't work:



martin@alyx:~$ sudo adb devices
sudo: adb: command not found


This does (typing the full path):



martin@alyx:~$ sudo /opt/android-sdk-linux/platform-tools/adb devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached
CM7-Blade device


This doesn't work (using -E with sudo):



martin@alyx:~$ sudo -E adb devices
sudo: adb: command not found


This works (as root):



martin@alyx:~$ sudo su
root@alyx:/home/martin# adb devices
List of devices attached
CM7-Blade device


I'm totally confused now and I'd appreciate some clarifying on how to set a path for sudo or how else I could solve my problem.



(And please, don't say adb shouldn't be ran as root.)



Thanks in advance!



Edit:
By requiring root permissions I mean that I need them because otherwise I get:



$ adb devices 
List of devices attached
???????????? no permissions


which doesn't occur as superuser. Sorry if it was misunderstanding.


More From » sudo

 Answers
2

Please read the following first: How do I set up Android ADB?






Configuring USB access



First, you don't need root permissions to run ADB if you have set the permissions accordingly. The AOSP site provides examples for Configuring USB Access for Pixel/Nexus devices. You can use the following scheme for non-Nexus devices:



SUBSYSTEM=="usb", ATTR{idVendor}=="xxxx", ATTR{idProduct}=="xxxx", MODE="0600", OWNER="<username>"


Vendor and product ID can be obtained by using lsusb and searching for your device. (Note: The device actually is a Galaxy Nexus.)



$ lsusb | grep -i samsung
Bus 002 Device 103: ID 04e8:6860 Samsung Electronics Co., Ltd GT-I9100 Phone [Galaxy S II]


So my /etc/udev/rules.d/51-android.rules udev rule looks like this:



# adb protocol on maguro/toro (Galaxy Nexus)
SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", ATTR{idProduct}=="6860", MODE="0600", OWNER="username"


You may want to repeat this for the other phone states like fastboot if needed. To let the changes take effect either reload udev (sudo udevadm control --reload) or reboot (recommended).



Making programs available



Instead of modifying the path variable I would suggest adding a symbolic link to the executable either in ~/bin/ (user only) or in /usr/local/bin/ (system wide).



mkdir ~/bin/
ln -s /opt/android-sdk-linux/platform-tools/adb ~/bin/

[#34429] Saturday, July 3, 2021, 3 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
iething

Total Points: 49
Total Questions: 127
Total Answers: 112

Location: Luxembourg
Member since Tue, Jan 25, 2022
2 Years ago
;