У меня есть Сервер Ubuntu 12.04 LTS, и на нем я установил gammu. Я использую его для управления моим "музыкальным сотовым телефоном" Nokia 5310 Xpress.
Теперь то, когда я работаю "gammu - определяют, что" это не работает, говорит, что у меня нет правильных полномочий устройства, но это работает с sudo gammu --identify
Теперь мое устройство Nokia перечислено как ttyACM0 в моем/dev/каталоге... его полномочия являются rw для корня и dialout... Я пытался изменить эти полномочия так, чтобы я мог использовать это устройство с gammu без sudo
... Я сделал sudo chmod 777 /dev/ttyACM0
и это изменило полномочия, но тем не менее это не работало...
Я даже пошел и добавил файл в/etc/udev/rules.d/под названием 40-41-descriptive-name.rules, который содержал следующую строку:
SUBSYSTEM=="usb", ATTR{idVendor}=="0421", ATTR{idProduct}=="006b", MODE="0600", OWNER="MyUserName"
и затем перезапущенный udev, но все еще никакая удача...
Я даже сделал sudo chown myusername /dev/ttyACM0
и дал мне владение устройства, но тем не менее я должен был использовать sudo для добиваний цели...
btw, если я делаю lsusb
Я получаю следующую информацию:
BUS 002 Device 003: ID 0421:006b Nokia Mobile Phones
Я попробовал все эти способы изменить полномочия устройства так, чтобы я мог использовать "gammu - определяют" вместо sudo gammu --identify
но никакая удача.
Как я могу зафиксировать эту дилемму?
Получив помощь от коллег, я нашел решение своей проблемы ...
В моем файле конфигурации gammu я изменил порт на / dev / phone
Затем я пошел в / etc / udev / rules / каталог и в нем я создал имя файла 99-phone.rules, затем в этом файле я написал следующую строку:
SUBSYSTEM == "usb", ATTRS {idVendor} == " 0421 ", ATTRS {idProduct} ==" 006b ", MODE =" 0666 ", SYMLINK + =" phone "
Затем я перезагрузил систему, а затем, когда я подключил свой телефон Nokia, я смог запустить команды на нем без использования sudo!
Спасибо всем, особенно @firusvg !!
Чтобы избежать потенциальных проблем с ситуацией, когда телефон распознается как / dev / ttyACM0, / dev / ttyACM1, ... или / dev / ttyUSB0, / dev / ttyUSB1, ... с последующими циклами подключения / переподключения, создайте символическую ссылку чтобы телефон был похож на /dev/phone
- задайте 99-phone.rules
правило udev с помощью:
KERNEL=="ttyUSB*", ATTRS{idVendor}=="0421", ATTRS{idProduct}=="006b", NAME="phone", MODE="0666"
KERNEL=="ttyACM*", ATTRS{idVendor}=="0421", ATTRS{idProduct}=="006b", NAME="phone", MODE="0666"
и измените порт в .gammurc на port=/dev/phone
. Теперь вы сможете выполнять команды gammu без sudo.
Конечно, удалите предыдущие правила из 40-41-descriptive-name.rules
. Обратите внимание, что две строки в 99-phone.rules
приведены только для того, чтобы охватить все возможные случаи для первоначального распознавания телефона (также обратите внимание MODE="0666"
- это даст rw для всех пользователей / групп).
Этот подход я использую для своего собственного SMS-шлюза (использующего три телефона и основанного на gammu-smsd), и до сих пор хорошо работает.
Также следует проверить демон Gammu gammu-smsd и его файл конфигурации . Сам демон будет работать от имени пользователя root, но затем команда gammu-smsd-inject позволит отправлять смс без прав root, если каталог спула доступен для записи. Также хорошо то, что демон будет периодически принимать сообщения.