Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Где блокирован доступ к /dev/rfcomm0 (мобилкин и т.п. COM порт через синезуб)?  (Прочитано 4088 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Artif

  • Автор темы
  • Участник
  • *
  • Сообщений: 207
    • Просмотр профиля
Беру телефон. Под Ubuntu 12.04 в Blueman подключаюсь к нему, к сервису Serial port. Ок. Всё выглядит правильно: появился файл /dev/rfcomm0 (права нужные есть), в Blueman семафоры показывают позитивное.

Но вот, для соединялки с интернетом wvdial, доступ к /dev/rfcomm0 чем-то заблокирован для пользователя. Чем? Как получить RW доступ к порту?

Пытаюсь использовать этот порт как модем.
$ wvdial --config=...conf
--> WvDial: Internet dialer version 1.61
--> Cannot open /dev/rfcomm0: Device or resource busy
--> Cannot open /dev/rfcomm0: Device or resource busy
--> Cannot open /dev/rfcomm0: Device or resource busy
$
Теперь от имени чистого рута:
$ sudo su
# wvdial --config=...conf
--> WvDial: Internet dialer version 1.61
--> Cannot get information for serial port.
--> Initializing modem.
--> Sending: AT
OK
... и дальше пошла писать губерния;
... коннект к интернету в итоге успешный.

Самое важное, что на команду АТ телефон ответил ОК. Т.е. в принципе оно работает, причём синезубая связь установлена штатно, без root. Т.к. от имени рута программа НЕзависящая от синезуба успешно подключается, то мои конфиги, я надеюсь, без ошибок. А вот доступ к /dev/rfcomm0 чем-то заблокирован для пользователя. Чем? Как получить RW доступ к порту?

Я в группе dialout. Смотрел права на файл порта - для этой группы чтение запись есть:
$ ls -l /dev/rfcomm0
crw-rw---- 1 root dialout 216, 0 июня   4 21:51 /dev/rfcomm0

Сделал strace cat /dev/rfcomm0, результат под спойлером:
(Нажмите, чтобы показать/скрыть)

Сижу, думаю, что бы значило:fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 1), ...}) = 0
open("/dev/rfcomm0", O_RDONLY|O_LARGEFILE) = -1 EBUSY (Device or resource busy)

И где доступ перекрыт. Network Manager + AppArmor ???

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Wars ~.o

Оффлайн Artif

  • Автор темы
  • Участник
  • *
  • Сообщений: 207
    • Просмотр профиля
пример, могу эти https://forum.ubuntu.ru/index.php?topic=170593.0

Да. Это запуск от имени рута, а под рутом-то оно работает. Можно даже так:
sudo echo "%dialout ALL=(ALL) NOPASSWD: /usr/bin/wvdial" > /etc/sudoers.d/wvdial-as-root.policyА запускать: sudo wvdial

Но я хочу понять, где в системе настроена эта блокировка и как настроить/снять её, но не обойти стороной. Чего она для USB системы без рута позволяет wvdial соединяться по проводам, а без проводов - нет?!

Там же дальше-то как... Следующий вопрос: тоже самое про GPS. Следующий - OBD2 в машине через синезуб. Следующий - вообще про COM порт через синий зуб. На каждый чих правило в sudoers - не согласен. Так же ведь - вообще сразу от имени рута работать... :)

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
тест
1 рута и терминал
sudo su
mkfifo /tmp/test1
chmod 777 /tmp/test1
cat /tmp/test1
постоять cat.
2 открывать новое терминал и пользователь
~$ echo "hello" > /tmp/test1и смотри первую терминал кто вывод от рута. )))
Wars ~.o

Оффлайн Artif

  • Автор темы
  • Участник
  • *
  • Сообщений: 207
    • Просмотр профиля
Оно работает. "hello" выскакивает из потока. И?

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Wars ~.o

Оффлайн Artif

  • Автор темы
  • Участник
  • *
  • Сообщений: 207
    • Просмотр профиля
cat /tmp/test1 && wvdial

Пока не отработает "cat /tmp/test1", пока из потока что-либо не появится - не будет кода возврата, оператор && ждёт этот код. Т.к. в поток ничего не записывается, эта строка сама по себе - вечное ожидание.

Именно это я сейчас и пронаблюдал - бесконечное ожидание. Ты куда клонишь? Обрисуй идею.

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
скрипт программист, чем софт.)))
Wars ~.o

Оффлайн Artif

  • Автор темы
  • Участник
  • *
  • Сообщений: 207
    • Просмотр профиля

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
извините, я тоже не понял.
Wars ~.o

Оффлайн truegeek

  • FPGA Designer
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 4214
  • аЦкий схемотехник
    • Просмотр профиля
Artif,
может есть смысл натравить lsof?

Оффлайн Artif

  • Автор темы
  • Участник
  • *
  • Сообщений: 207
    • Просмотр профиля
Artif,
может есть смысл натравить lsof?

Натравил.
(Нажмите, чтобы показать/скрыть)
Выходит: bluetoothd запущен от root и использует /dev/rfcomm0. На первый взгляд - ничего такого, каждый файл чем-то открыт и используется, но это ещё не запрешает кому-то другому открыть и тоже записать.

Что такое krfcommd - не знаю. Но оно напрямую-то и не выскакивает.

Попробую с wvdial посмотреть.
Полный вывод strace wvdial вот - http://pastebin.com/PJvXTVby
Здесь хвост вывода strace wvdial:
(Нажмите, чтобы показать/скрыть)
« Последнее редактирование: 05 Июня 2012, 20:54:25 от Artif »

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
$ wvdial опять, всех sudo.
Wars ~.o

Оффлайн Artif

  • Автор темы
  • Участник
  • *
  • Сообщений: 207
    • Просмотр профиля
Для сравнения вывод strace wvdial под root( http://pastebin.com/wa8p3hGW ), т.е. "когда всё работает":
(Нажмите, чтобы показать/скрыть)
« Последнее редактирование: 05 Июня 2012, 21:11:19 от Artif »

Оффлайн Alexander Frank

  • Новичок
  • *
  • Сообщений: 14
    • Просмотр профиля
Artif,
мне помогло добавление себя в группу "root"
а также (возможно излишнее)

sudo rfcomm bind 1 (MAC BT телефона) 4   (создаёт устройство /dev/rfcomm1 и сопоставляет его 4 порту блутуз (у меня на нём висит виртуальный порт GPS  просмтреть можно командой sdptool browse (мак блутуз))

sudo chmod 666 /dev/rfcomm1
sudo chown  user:user /dev/rfcomm1
(смена владельца и разрешений для себя)

после подправить конфиг gpsd
/etc/default/gpsd

------------------------------------------------------------------------------
# Devices gpsd should collect to at boot time.
# They need to be read/writeable, either by user gpsd or the group dialout.
DEVICES="/dev/rfcomm1"
-------------------------------------------------------------------------------

после остановить демон gpsd и через секунд 10 его запустить снова
sudo /etc/init.d/gpsd stop
sudo /etc/init.d/gpsd start

и желательно посмотреть статус
/etc/init.d/gpsd status

● gpsd.service - GPS (Global Positioning System) Daemon
   Loaded: loaded (/lib/systemd/system/gpsd.service; indirect; vendor preset: enabled)
   Active: active (running) since
 Main PID: 1927 (gpsd)
   CGroup: /system.slice/gpsd.service
           └─1927 /usr/sbin/gpsd -N /dev/rfcomm1

----------------------- systemd[1]: Started GPS (Global Positioning System) Daemon.
----------------------- systemd[1]: Starting GPS (Global Positioning System) Daemon...

кружок перед gpsd.service будет зелёным

на телефоне пока нашёл 2 программы работающие - одну бесплатную (BlueNMEA), вторую платную (Bluetooth GPS Output  10 минут работает, потом выключается).

теперь дело только за программой навигатром
« Последнее редактирование: 21 Мая 2015, 23:34:41 от Alexander Frank »
Centrino mobile Core2Duo T7250 2GHz  2Gb ram
160 Gb Hdd  GF 8600M 256Mb
Ubuntu 10.04 amd64

 

Страница сгенерирована за 0.062 секунд. Запросов: 25.