error: insufficient permissions for device

本文探讨了如何通过adb命令修改文件权限,使得adb在所有用户下都能以root权限运行,避免权限不足的问题。同时,介绍了adb的启动、停止及shell操作的基本用法,以及在Android开发中adb的重要角色。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考

shily@hh-desktop:~$cd ~/sdk/android-sdk_eng.sdk_linux-x86/tools
shily@hh-desktop:~/sdk/android-sdk_eng.sdk_linux-x86/tools$ ls -l adb
-rwxr-xr-x 1 shily shily  341694 2010-05-11 05:46 adb
shily@hh-desktop:~/sdk/android-sdk_eng.sdk_linux-x86/tools$ sudo chown root:root adb
[sudo] password for shily:
shily@hh-desktop:~/sdk/android-sdk_eng.sdk_linux-x86/tools$ ls -l adb
-rwxr-xr-x 1 root root   341694 2010-05-11 05:46 adb
shily@hh-desktop:~/sdk/android-sdk_eng.sdk_linux-x86/tools$ sudo chmod u+s adb
shily@hh-desktop:~/sdk/android-sdk_eng.sdk_linux-x86/tools$ ls -l adb
-rwsr-xr-x 1 root root   341694 2010-05-11 05:46 adb
shily@hh-desktop:~/sdk/android-sdk_eng.sdk_linux-x86/tools$ 
这样无论哪个用户启动adb 使用的都是root权限,就不会提示权限不足的错误了。

=========================
在使用的过程中发现adb pull下来的文件属主权限为root:root,所以修改起来不方便。但是我不经常下载文件修改,也就忍了。


接着:

lws@lws:~/worksofts/android-sdk-linux/platform-tools$adb kill-server

lws@lws:~/worksofts/android-sdk-linux/platform-tools$ adb start-server
* daemon not running. starting it now on port 5037 *

* daemon started successfully *


lws@lws:~/worksofts/android-sdk-linux/platform-tools$ adb shell
root@android:/ # ls
acct
cache
cdrom
charger
config
d
data
default.prop
dev
emmc
etc
fat
init
init.goldfish.rc
init.qcom.rc
init.qcom.sh
init.qcom.usb.rc
init.qcom.usb.sh
init.rc
init.target.rc
initlogo.rle_320x480
initlogo.rle_480x800
initlogo_cu.rle_320x480
initlogo_cu.rle_480x800
mnt
persist
proc
res
root
sbin
sdcard
sys
system
ueventd.goldfish.rc
ueventd.rc
vendor

root@android:/ # exit


lws@lws:~/worksofts/android-sdk-linux/platform-tools$ cd 
lws@lws:~$ adb shell

root@android:/ # 



### 三级标题:权限问题导致设备查找失败 在运行 `uhd_find_devices` 时,只有使用 `sudo` 才能找到 USRP 设备的原因通常与 USB 设备的访问权限有关。USRP 设备通过 USB 接口与主机通信,而 Linux 系统对 USB 设备的访问权限有严格限制。普通用户可能没有足够的权限访问这些设备,因此在没有 `sudo` 的情况下,程序无法与 USRP 设备进行通信,导致设备查找失败。 具体来说,Linux 系统通过 `udev` 规则管理 USB 设备的权限。如果没有为 USRP 设备配置适当的 `udev` 规则,普通用户将无法访问设备。在这种情况下,必须使用 `sudo` 来提升权限,以确保程序可以访问 USB 设备。 可以通过创建自定义的 `udev` 规则文件来解决此问题。例如,创建一个名为 `99-usrp.rules` 的文件,并将其放置在 `/etc/udev/rules.d/` 目录下。文件内容可以包含以下规则,以确保所有用户都可以访问 USRP 设备: ```bash SUBSYSTEM=="usb", ATTR{idVendor}=="2500", MODE="0666" ``` 保存文件后,重新加载 `udev` 规则并重新插拔 USRP 设备: ```bash sudo udevadm control --reload-rules sudo udevadm trigger ``` 完成这些步骤后,普通用户应该能够在不使用 `sudo` 的情况下成功运行 `uhd_find_devices` 并找到 USRP 设备。 ### 三级标题:其他可能的原因 除了权限问题外,设备查找失败还可能与 UHD 库的版本有关。如果系统中安装了多个版本的 UHD 库,程序可能会链接到一个较低版本的库,而该版本不支持特定的 USRP 设备(如 E320X 系列)。在这种情况下,即使设备物理上连接到主机,程序也无法识别该设备。 可以通过以下命令检查系统中安装的 UHD 库版本: ```bash ldconfig -p | grep libuhd ``` 如果发现多个版本的 UHD 库,可以通过调整 `LD_LIBRARY_PATH` 环境变量来确保程序链接到正确的版本。例如: ```bash export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH ``` 此外,还可以通过创建符号链接来指定默认的 UHD 库版本: ```bash sudo ln -sf /usr/local/lib/libuhd.so.3.15.0 /usr/lib/x86_64-linux-gnu/libuhd.so ``` ### 三级标题:驱动文件缺失或路径错误 另一个可能导致设备查找失败的原因是驱动文件缺失或路径错误。UHD 库依赖于特定的 FPGA 镜像文件和驱动文件来与 USRP 设备通信。如果这些文件未正确安装或路径配置错误,程序将无法加载必要的驱动,从而导致设备查找失败。 可以通过以下命令下载并安装所需的驱动文件: ```bash sudo uhd_images_downloader ``` 如果由于网络问题无法下载驱动文件,可以手动下载并解压驱动包,然后将其复制到指定目录: ```bash sudo cp -r /usr/local/share/uhd/images /usr/share/uhd ``` ### 三级标题:相关问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值