(C)
К сожалению, подключение NXT блока для его программирования, не происходит автоматически в удобном для пользователя виде, за исключением специализированных Linux дистрибутивов таких как nxcEditor LiveCD Но это компенсируется тем, что добиться этого можно с минимальным количеством изменения стандартных настроек системы.
Ниже рассматривается пошаговая инструкция настройки подключения NXT блока через USB.
Итак, первое что нужно сделать после подключения USB кабеля к блоку и компьютеру/ноутбуку, - это убедиться что система увидела блок. Для этого нужно посмотреть в файл /var/log/messages (или запустить команду dmesg) и убедиться, что существуют строчки подобные этим:
от рута:
Но если теперь попытаться от имени текущего пользователя (который, конечно же не суперпользовател - root, иначе это потенциальная дыра в безопасности системы) загрузить программу на блок
Это объясняется тем, что файл, ответственный за доступ к этому устройству доступен на запись только пользователю root.
Для того, чтобы исправить такое поведение, а именно автоматическое создание файла устройства, но только теперь с нужным правами доступа нужно создать специальный конфигурационный файл для подсистемы динамического управления устройствами. Все файлы этой подсистемы, предназначенные для редактирования, лежат в данной директории:
Теперь, если взглянуть на директорию с файлами доступа к USB устройствам, то видно, что новый созданный файл обладает именно теми свойствами, которые были указаны в конфигурационном файле:
Хотя операционные системы на базе ядра Linux шагнули уже далеко вперед в плане пользовательского удобства и автоматической настройки, что называется, из коробки, но все же некоторые вопросы еще приходится решать по старинке - в ручную изменяя конфигурационные файлы и исследуя журналы работы системы (в обычной речи ITшников - логи). |
К сожалению, подключение NXT блока для его программирования, не происходит автоматически в удобном для пользователя виде, за исключением специализированных Linux дистрибутивов таких как nxcEditor LiveCD Но это компенсируется тем, что добиться этого можно с минимальным количеством изменения стандартных настроек системы.
Ниже рассматривается пошаговая инструкция настройки подключения NXT блока через USB.
Итак, первое что нужно сделать после подключения USB кабеля к блоку и компьютеру/ноутбуку, - это убедиться что система увидела блок. Для этого нужно посмотреть в файл /var/log/messages (или запустить команду dmesg) и убедиться, что существуют строчки подобные этим:
от рута:
Jun 9 00:35:00 mybox kernel: [ 245.767163] usb 2-2: new full speed USB device number 3 using ohci_hcd
Jun 9 00:35:00 mybox kernel: [ 246.216417] usb 2-2: New USB device found, idVendor=0694, idProduct=0002
Jun 9 00:35:00 mybox kernel: [ 246.216428] usb 2-2: New USB device strings: Mfr=0, Product=0, SerialNumber=1
Jun 9 00:35:00 mybox kernel: [ 246.216436] usb 2-2: SerialNumber: 0016530D7AB9
Здесь следует обратить на такие параметры устройства, как idVendor иidProduct, а также на номер устройства (device number). Именно idVendorравное "0694" и idProduct равное "0002" определяют, что мы имеем дело с NXT блоком.Но если теперь попытаться от имени текущего пользователя (который, конечно же не суперпользовател - root, иначе это потенциальная дыра в безопасности системы) загрузить программу на блок
nbc -d -S=usb struct.nxc
То программа скомпилируется, но не загрузиться. Хотя если же запускать ровно такую же команду от суперпользователя root, то загрузка произойдет успешно.Это объясняется тем, что файл, ответственный за доступ к этому устройству доступен на запись только пользователю root.
# ls -l /dev/bus/usb/002/
total 0
crw-rw-r--. 1 root root 189, 128 Jun 8 21:15 001
crw-rw-r--. 1 root root 189, 129 Jun 8 21:15 002
crw-rw-r--. 1 root root 189, 130 Jun 9 00:38 003
Т.е. когда непривилегированный пользователь пытается работать с этим файлом, то ему, естественно, возвращается ошибка доступа к этому файлу.Для того, чтобы исправить такое поведение, а именно автоматическое создание файла устройства, но только теперь с нужным правами доступа нужно создать специальный конфигурационный файл для подсистемы динамического управления устройствами. Все файлы этой подсистемы, предназначенные для редактирования, лежат в данной директории:
# ls -l /etc/udev/rules.d/
total 16
-rw-r--r--. 1 root root 134 Jun 8 10:34 60-vboxadd.rules
-rw-r--r--. 1 root root 535 Jun 8 06:23 70-persistent-cd.rules
-rw-r--r--. 1 root root 771 Jun 10 2011 90-alsa-tools-firmware.rules
-rw-r--r--. 1 root root 53 Oct 27 2011 91-drm-modeset.rules
Сюда же нужно положить новый файл для автоматической конфигурации файлов доступа к NXT блоку (изменять содержимое директории сможет толькоroot - суперпользователь).# cat > /etc/udev/rules.d/80-nxt.rules
SUBSYSTEM=="usb_device", ACTION=="add", SYSFS{idVendor}=="0694", SYSFS{idProduct}=="0002", SYMLINK+="nxt-%k", MODE="0666"
Если после этого в логах появляется такая вот ошибкаJun 9 00:51:55 fedora-vbox udevd[342]: SYSFS{}= will be removed in a future udev version, please use ATTR{}= to match the event device, or ATTRS{}= to match a parent device, in /etc/udev/rules.d/80-nxt.rules:1
Это значит, что здесь запущена более новая версия подсистемы и по этому нужно использовать немного другой конфигурационный файл. SUBSYSTEM=="usb", ACTION=="add", ATTRS{idVendor}=="0694", ATTRS{idProduct}=="0002", SYMLINK+="nxt-%k", MODE="0666"
После этого можно отсоединить USB кабель (или выключить блок)Jun 9 00:58:05 mybox kernel: [ 1631.153201] usb 2-2: USB disconnect, device number 3
А затем снова подсоединить или включить блок. После, в логах появятся ровно такие же сообщения как и приведенные в самом начале заметки, только номер устройства (device number)будет отличаться.Теперь, если взглянуть на директорию с файлами доступа к USB устройствам, то видно, что новый созданный файл обладает именно теми свойствами, которые были указаны в конфигурационном файле:
# ls -l /dev/bus/usb/002/
total 0
crw-rw-r--. 1 root root 189, 128 Jun 8 21:15 001
crw-rw-r--. 1 root root 189, 129 Jun 8 21:15 002
crw-rw-rw- 1 root root 189, 131 Jun 9 01:31 004
К тому же, для более простого доступа к NXT блоку, создалась специальная символьная ссылка.# ls -l /dev/nxt*
lrwxrwxrwx. 1 root root 15 Jun 9 01:28 /dev/nxt-2-2 -> bus/usb/002/004
Если получившиеся результаты такие же, как это показано выше, то это на означает, что работать с NXT блоком, можно будет любому непривилегированному пользователю. И теперь эта команда и скомпилирует программу, на языке NXC, и загрузит ее на блок.nbc -d -S=usb struct.nxc
Комментариев нет:
Отправить комментарий