Серийный конвертер USB ttyUSB0 выдача разрешений - PullRequest
2 голосов
/ 31 мая 2011

Мы разрабатываем приложение, которое считывает данные с последовательного устройства.Существующий код C ++ повторно используется в качестве разделяемой библиотеки (libProtocol.so создается с использованием NDK) для чтения и декодирования данных с устройства и передачи их в приложение.Но когда устройство подключено, код общей библиотеки не может получить доступ к устройству из-за проблем с разрешениями.В команде оболочки adb ls -l / dev / ttyUSB0 показывает "crw ------- root root".Если я вручную использую chmod 777 ttyUSB0 из adb и после этого запускаю приложение, оно может открыть порт.(Если я создаю C ++ exe для доступа к последовательному порту USB и запускаю в среде Android, он может получить доступ к порту, но доступ из общей библиотеки не удается)

  1. Можно ли постоянно изменять разрешения?
  2. Работает ли android от имени root или любого другого пользователя?
  3. Обычно ttyUSB0 относится к группе дозвона, поэтому он отображается как root и crw ------- вместо crw-rw----?
  4. Зачем нужен доступ из exe works и доступ из разделяемой библиотеки?

Аппаратная платформа: Beagle Board - XM OS: Android Froyo Кто-нибудь может помочь?

1 Ответ

1 голос
/ 01 июня 2011

Вам необходимо выяснить, где создается файл устройства, и установить соответствующие разрешения. Это может быть файл /init.rc или аналогичный, или это может быть что-то, запускаемое при вставке USB-устройства. Рекурсивный grep файловой системы для части имени устройства (привилегированного пользователя) может получить ответ за пару минут, помогая вам найти все, что встречается в этой строке, по крайней мере, при условии, что это в собственном коде, а не файл класса dalvik (который я считаю маловероятным)

Приложения Android обычно не запускаются от имени пользователя root; это довольно сложно заставить их сделать это, потому что они обычно не запускаются в обычном смысле, а вместо этого разветвляются из процесса zygote (так что общие отображения библиотеки могут быть общими). Но вариант в том, что приложения для Android могут - неофициально - запускать двоичные файлы setuid и использовать их в качестве прокси для выполнения каких-либо задач, т. Е. У вас может быть что-то, что просто записывает что-либо, полученное на его stdin, в порт и печатает все, полученное от порта, на его стандартный вывод.

...