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


Автор Тема: Как дать доступ к LPT порту обычному пользователю  (Прочитано 2780 раз)

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

Оффлайн su_cpp

  • Автор темы
  • Новичок
  • *
  • Сообщений: 19
    • Просмотр профиля
Доброго!

Столкнулся с проблемой на Ubuntu 16.04.1 LTS
Мне нужен доступ к управлению LPT портом, на нем висит несколько светодиодов, ими надо управлять.

1. Устройства для LPT порта никакого не обнаружил:
meuser@serv3:$ ls /dev/lp*
ls: cannot access '/dev/lp*': No such file or directory
meuser@serv3:$ ls /dev/par*
ls: cannot access '/dev/par*': No such file or directory

2. Пытаюсь посмотреть модули:
meuser@serv3:$ lsmod | grep lp
... пусто
meuser@serv3:$ lsmod | grep pa
multipath              16384  0
pata_acpi              16384  0
pata_via               16384  3

3. Смотрю устройства
sudo lspci -vv | grep parallel
... пусто
sudo dmesg | grep parallel
... пусто
sudo lspci -vv | grep lp
... пусто
sudo dmesg | grep lp0
... пусто
sudo lspci -vv | grep 378
... пусто
sudo dmesg | grep 378
[    0.094215] pnp 00:0b: [io  0x0378-0x037f]
... это все что есть

Однако, вот эта программа на С, позволяет работать с портом, но только от имени супервользователя
#include <stdio.h>
#include <stdlib.h>
#include <sys/io.h>
main(int argc, char **argv)
{
  if (ioperm(0x378,1,1))
  {
    printf("Couldn't get the port at %x\n", 0x378);
    exit(1);
  }
  outb(255, 0x378); // светодиоды зажигаются
}

Мне надо чтобы эта программа могла работать с портом под обычным пользователем.
Я добавлял пользователя в группу lp но это ничего не дает :(
meuser@serv3:$ groups
meuser adm lp cdrom sudo dip plugdev lxd lpadmin sambashare

Пользователь в группе, но доступа по прежнему нет.
Светодиоды загораются, но только под суперпользователем.
Помогите разобраться.

Оффлайн Morisson

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 4588
    • Просмотр профиля
sudo adduser ты uucp
suod adduser ты dialout
перезагружаешься

Оффлайн su_cpp

  • Автор темы
  • Новичок
  • *
  • Сообщений: 19
    • Просмотр профиля
sudo adduser ты uucp
suod adduser ты dialout
перезагружаешься

благодарю.
выполнил, перезагрузился.

meuser@serv3:~/$ groups
alexey adm lp uucp dialout cdrom sudo dip plugdev lxd lpadmin sambashare

НО.. не работает :(
порт не открывается...

Оффлайн Morisson

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 4588
    • Просмотр профиля
su_cpp, cat /sys/class/printer/lp0/device/resources

Оффлайн su_cpp

  • Автор темы
  • Новичок
  • *
  • Сообщений: 19
    • Просмотр профиля
cat /sys/class/printer/lp0/device/resources

meuser@serv3:~$ cat /sys/class/printer/lp0/device/resources
cat: /sys/class/printer/lp0/device/resources: No such file or directory

Оффлайн su_cpp

  • Автор темы
  • Новичок
  • *
  • Сообщений: 19
    • Просмотр профиля
Больше нет идей ни у кого?

Оффлайн Morisson

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 4588
    • Просмотр профиля
su_cpp, У тебя устройство, возможно не lp0 называется, а /dev/ttyUSB0

Оффлайн su_cpp

  • Автор темы
  • Новичок
  • *
  • Сообщений: 19
    • Просмотр профиля
В общем проблема решается установкой модуля cups
при этом появляется устройство /dev/lp0 и /dev/parport0
собственно на при установке cups на чистый сервер, попутно ставится еще несколько модулей, которые вероятно и добавляют устройства

программатор АВР заработал - он использует /dev/parport0

программно так же возможно использовать параллельный порт - светодиодами управлять можно
но возникает проблема с чтением входных сигналов lpt порта - решения пока не нашел

Оффлайн Peter_I

  • Старожил
  • *
  • Сообщений: 2141
    • Просмотр профиля
Это низкий уровень. М.б., возможно с помощью ioctl, там в "man ioctl_list" упоминается lp.h
и есть какие-то команды. Но ioctl мало документирована, ннадо искать в Интернете варианты
вызова ioctl с этими командами.
Пётр.

Оффлайн РыжийПёс

  • Активист
  • *
  • Сообщений: 694
  • 好红狼
    • Просмотр профиля
Мне надо чтобы эта программа могла работать с портом под обычным пользователем.
Как вариант, запускать программу через sudo при этом внеся программу в какую-нибудь группу исключений, для которых, sudo работает без пароля.
(Нажмите, чтобы показать/скрыть)
Ну или создать демона, который будет рулить портом и запускаться от рута при старте системы, при этом принимать запросы обычных пользователей.
Каждый отдельно взятый человек, перешедший на GNU Linux, приближает всё остальное человечество к Светлому Будущему.

 

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