【问题标题】:USB Serial converter ttyUSB0 permission issueUSB串口转换器ttyUSB0权限问题
【发布时间】:2011-05-31 11:43:13
【问题描述】:

我们正在开发一个从串行设备读取数据的应用程序。现有的 C++ 代码作为共享库(libProtocol.so 使用 NDK 构建)被重用,以读取和解码来自设备的数据并将其传递给应用程序。但是当设备连接时,由于权限问题,共享库代码无法访问设备。在 adb shell 命令 ls -l/dev/ttyUSB0 中显示“crw------- root root”。如果我手动使用 adb 中的 chmod 777 ttyUSB0 并运行应用程序,它就可以打开端口。 (如果我创建一个 C++ exe 来访问 USB 串行端口并在 android 环境中运行,它可以访问端口但从共享库访问失败)

  1. 是否可以永久更改权限?
  2. android 是作为 root 用户还是其他任何用户运行?
  3. 一般ttyUSB0属于拨出组,为什么显示为root和crw-------而不是crw-rw----?
  4. 为什么从 exe 访问有效,从共享库访问失败?

硬件平台:Beagle Board - XM 操作系统:Android Froyo 有人可以帮忙吗?

【问题讨论】:

  • 我不认为这是一个编程问题。
  • @unwind 该解决方案可能需要一些编程,并且对于任何面向使用或管理的站点来说都有些晦涩难懂。另请注意,发布者正在编写应用程序。

标签: android android-ndk beagleboard


【解决方案1】:

您需要确定设备文件的创建位置,并适当地设置权限。这可能在 /init.rc 或类似文件中,也可能在插入 USB 设备时触发的东西中。对部分设备名称(由特权用户)的文件系统的递归 grep 可以帮助您找到出现该字符串的所有内容,至少在本机代码中而不是在本机代码中,而不是dalvik 类文件(我认为不太可能)

Android 应用程序通常不会以 root 身份运行;让它们这样做非常复杂,因为它们通常不会在正常意义上启动,而是从 zygote 进程中分叉出来(因此可以共享公共库映射)。但一个选项是,android 应用程序可以 - 非官方地 - 启动 setuid 二进制文件,并将它们用作代理来做事,即,您可以拥有一些东西,它只需将在其标准输入上接收到的任何内容写入端口,并在其上打印从端口接收到的任何内容。标准输出。

【讨论】:

  • 前段时间看了下串口的东西,可以确认是init.rc创建了设备节点
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-07
  • 2016-08-06
  • 1970-01-01
相关资源
最近更新 更多