В этой статье мы расскажем, как с нуля настроить Raspberry Pi для работы с устройствами UNC0xx (и не только).
Если вы уже настроили свою Raspberry Pi, вы можете пропустить текст, посвящённый её первичной настройке, и перейти сразу к настройке, относящейся к устройствам UNC0xx.
Вам понадобятся:
- Raspberry Pi. Спасибо, Капитан Очевидность :)
- Карта памяти формата SD ёмкостью не менее 4Gb. Впрочем, больше тоже не надо.
- Источник питания для Raspberry Pi. Вот с этим могут быть сложности. Разъём питания у Raspberry Pi имеет форму MicroUsb, что наводит пользователей на мысль использовать питание от порта USB — например, от настольного компьютера. Так вот, не надо так делать: порт USB не даст столько тока, сколько нужно Raspberry, и это, заметим, официально утверждается самими её создателями. Посему вам потребуется блок питания с разъёмом MicroUSB. Найти такой не так просто, и, кстати, не путайте MicroUSB и MiniUSB, потому что MiniUSB в этот разъём не влезет.
- Связь с Интернетом не только для вашего рабочего компьютера, но и (после успешной инсталляции) для Raspberry. В связи с этим необходимо учесть некоторые особенности. Во-первых, связь с сетью должна быть проводная, то есть, попросту говоря, вам потребуется шнур витой пары. Во-вторых, в вашей сети должен быть DHCP-сервер, настроенный так, чтобы, когда Raspberry потребует себе IP-адрес, ей его выдали и с этого адреса дали выйти в Интернет.
- Монитор, допускающий подключение по интерфейсу HDMA. Ну то есть теоретически можно использовать обычный телевизор с "тюльпаном", но теория от практики несколько отличается.
- Клавиатура и (желательно) мышка — обе USBшные.
- Компьютер — как минимум, чтобы залить на карточку образ операционной системы. Естественно, необходима возможность работы с SD-картами: либо встроенный кард-ридер, либо внешний.
Записываем Raspbian на SD-карту
Этот раздел написан в расчёте на пользователей Linux; как всё то же самое сделать на других системах, включая Windows, вы можете прочитать здесь: http://elinux.org/RPi_Easy_SD_Card_Setup (на английском). Общая идея такова: вы скачиваете из Интернета файл образа, распаковываете его и записываете на вашу SD-карточку поверх всего, что там есть, причём именно как образ диска, а не как простой файл. В частности, под Windows это можно сделать с помощью программы Win32DiskImager (http://sourceforge.net/projects/win32diskimager).
Raspbian — это версия дистрибутива Debian, специально подготовленная для Raspberry Pi. Наиболее простой способ её установки — скачать из Интернета готовый образ в виде одного файла и залить этот файл на карту (не скопировать, а именно залить как образ!). Проще всего взять на странице http://www.raspberrypi.org/downloads образ «Raspbian “wheezy”» в виде zip-файла, и в дальнейшем мы предполагаем, что именно этот образ вы и используете. Это не означает, что нельзя пользоваться другими вариантами образа, другими способами инсталляции, другими дистрибутивами и даже другими операционными системами (да, FreeBSD для Raspberry Pi тоже есть); если вы что-то такое сделаете, поделитесь с нами впечатлениями :)
Итак, скачиваем файл; на момент написания данного текста он назывался 2013-05-25-wheezy-raspbian.zip
и занимал чуть больше 500 Mb. Опционально можно проверить контрольную сумму для этого файла:
user@comp:~$ sha1sum 2013-05-25-wheezy-raspbian.zip 131f2810b1871a032dd6d1482dfba10964b43bd2 2013-05-25-wheezy-raspbian.zip
Длинное 16-ричное число, выданное командной sha1sum
, должно совпасть с указанным на странице, где вы брали файл; таким способом мы можем убедиться, что скачанный вами файл — это именно то, что предлагается на сайте. Файл, как мы видим, запакован в формат ZIP, так что его потребуется распаковать:
user@comp:~$ unzip 2013-05-25-wheezy-raspbian.zip Archive: 2013-05-25-wheezy-raspbian.zip inflating: 2013-05-25-wheezy-raspbian.img
Процесс распаковки займёт некоторое время, файл всё-таки довольно большой. В результате у нас появится файл 2013-05-25-wheezy-raspbian.img
(img — от слова image, то есть «образ»), это и есть файл образа. На момент написания этого текста он занимал чуть меньше 2 Gb.
Следующим действием будет узнать, каково в нашей системе имя устройства для SD-карты — вопрос абсолютно очевидный для опытных пользователей, но не совсем понятный для новичков. Самый простой способ — воспользоваться командой dmesg
, которая показывает отладочные сообщения ядра операционной системы. С этого момента все наши действия потребуют полномочий системного администратора! Зайдите в систему под пользователем root
, либо воспользуйтесь командой su
, либо командой sudo bash
, либо просто запускайте все дальнейшие команды через sudo
. Итак, не вставляя пока SD-карту в устройство чтения, дайте команду
dmesg -c
Эта команда выдаст вам все сообщения ядра, которые хранятся в памяти (скорее всего, все с момента загрузки системы). Не обращайте на них внимания: сейчас для нас важнее ключик -c
, который эти сообщения очистит, так что следующая команда dmesg
выдаст нам только те сообщения ядра, которые появились с момента подачи предыдущей команды. Теперь вставьте вашу карточку и снова дайте ту же команду. Она напечатает что-то вроде следующего:
[ 4571.734369] sd 6:0:0:0: [sdf] 7744512 512-byte logical blocks: (3.96 GB/3.69 GiB) [ 4571.740404] sd 6:0:0:0: [sdf] Assuming drive cache: write through [ 4571.751422] sdf: sdf1
Здесь sdf
— это имя физического устройства (как раз то, что нам нужно), а sdf1
— это имя раздела на нём; раздел нам не понадобится, он всё равно исчезнет в процессе дальнейшей подготовки. Если быть точными, соответствующие имена устройств — /dev/sdf
и /dev/sdf1
(или что там вам выдали — мысленно добавьте в начало строчку «/dev/
»).
Ещё один момент состоит в том, что «современные» дистрибутивы Linux обычно стремятся тут же смонтировать любой диск, который к ним подключают. Опытные пользователи эту функцию обычно убирают вручную, но если на вашей системе эта возможность не была искоренена, то, скорее всего, единственный раздел вашей карточки уже смонтирован. Нам это помешает. Чтобы увидеть список смонтированных дисков, дайте команду mount
без параметров; если в её выдаче вы увидите строчку вроде следующей:
/dev/sdf1 on /media type vfat (rw)
(в первом слове строки — имя вашего устройства, точнее, его раздела) — значит, ваша система вам любезно смонтировала вашу карточку, не дожидаясь ваших указаний. Впрочем, это легко исправить: просто дайте команду umount /dev/sdf1
, и дело с концом.
Прежде чем идти дальше, проверьте ещё раз, что на вашей карточке нет никаких нужных вам файлов! Вы все их сейчас потеряете.
Следующий шаг — запись образа на диск. Здесь важно не перепутать: мы пишем образ не на раздел, а на диск (то есть карточку) целиком. Делается это командой dd
:
root@comp:/home/user# dd if=2013-05-25-wheezy-raspbian.img of=/dev/sdf bs=4M
Это означает, что мы хотим переписать информацию из файла с именем 2013-05-25-wheezy-raspbian.img
непосредственно на устройство /dev/sdf
блоками по 4 Mb. Этот процесс может занять несколько минут, времени вполне хватит, чтобы выпить чаю.
Собственно говоря, на этом процесс подготовки SD-карты завершён и подходит очередь самой Raspberry Pi.
Начальная настройка
Подключите к вашей Raspberry, по меньшей мере, следующее:
- монитор (через HDMI);
- клавиатуру (через USB);
- блок питания (в розетку его пока не втыкайте);
- шнур Ethernet (соединение с локальной сетью).
Завершить инсталляцию Raspbian вы можете и без сети, но для настройки её на работу с устройствами UNC0xx потребуется установка дополнительных пакетов из репозитория Raspbian через Интернет, так что сеть понадобится в любом случае; коль скоро это так, гораздо проще сеть подключить с самого начала, настроить удалённый доступ (это гораздо проще, чем может показаться), отключить от вашей Raspberry монитор и клавиатуру и всю дальнейшую работу с ней производить удалённо, используя свой основной компьютер.
Вставьте свежеподготовленную карточку в слот и включите питание. Никакой кнопки включения у Raspberry Pi нет, она включается подачей питания, так что сразу начнёт загружаться. На экране монитора вы увидите в левом верхнем углу логотип Raspberry Pi в виде стилизованной «землянички», всё остальное пространство экрана займут обычные текстовые сообщения загрузки Debian. Через некоторое время фон экрана станет синим и появится меню начальной настройки.
Первый пункт меню называется «Expand Filesystem». Выберите его и нажмите Enter: система подстроит размеры разделов на вашей SD-карточке к её реальной ёмкости, что позволит при дальнейшей работе с Raspberry использовать всё пространство вашей SD-карты. Операция происходит примерно за секунду, после чего система сообщает о её завершении и о том, что файловая система автоматически подстроится под размеры раздела на средующей перезагрузке. Сообщение выводится в виде диалога с кнопкой Ok. Просто нажмите Enter, и вы снова попадёте в меню начальной настройки.
Воспользуйтесь вторым пунктом меню, чтобы установить пароль для пользователя pi
. По умолчанию этот пароль — raspberry
, но лучше его в таком виде не оставлять, поскольку следующим шагом мы запустим ssh-сервер и с помощью этого пароля можно будет получить полный контроль над нашей Raspberry. Выбрав второй пункт меню и нажав Enter, вы увидите диалог, который предупреждает вас, что сейчас-де с вас спросят новый пароль. Нажмите Enter. Вопреки ожиданиям, запрос пароля можно сходу не заметить, поскольку создатели Raspbian для этого воспользовались обычной программой passwd
; посмотрите в самую нижнюю строку экрана, пароль у вас спрашивают именно там. Дважды введите свой пароль, каждый раз завершая ввод нажатием Enter. Учтите, пароль при вводе не отображается вообще никак, ни буквами, ни звёздочками — но это не значит, что машина его не принимает!
Ещё нам предлагают настроить автоматический запуск графической оболочки и локализационные опции, но без всего этого можно прекрасно обойтись. Выберите восьмой пункт меню, который называется «Advanced Settings». Появится ещё одно меню, в котором нас интересуют два пункта: «A2 Hostname» и «A4 SSH». Выбрав первый из них, задаём имя нашей Raspberry в локальной сети, что-нибудь вроде raspi
или любое другое на ваш вкус. После установки имени нас выкидывают снова в начальное меню, так что придётся ещё раз выбрать Advanced Settings, потом пункт «A4 SSH», где нас спросят, желаем ли мы, чтобы SSH-сервер был включен (Enabled) или выключен (Disabled). Выбираем Enabled, жмём Enter, ещё раз Enter. Собственно говоря, всё, от меню начальной настройки нам больше ничего не нужно.
Между прочим, с самого начала можно войти в систему в режиме обычной командной строки: для этого нужно переключиться на другую виртуальную консоль нажатием Alt-F2, Alt-F3 и т.д., а вернуться на основную консоль, где запущено меню начальной настройки, можно нажатием Alt-F1. Полезно также знать, что, если вы когда-то потом захотите вновь увидеть меню начальной конфигурации, это можно сделать, запустив программу raspi-config
.
На текущий момент у нас уже сконфигурирована сеть, причём Raspberry Pi имеет тот ip-адрес, который ей выдал ваш DHCP-сервер. Если вы не знаете, какой это адрес, войдите в систему, как описано абзацем выше, и дайте команду ifconfig
. Первые две строчки её выдачи будут выглядеть примерно так:
pi@raspberrypi ~ $ ifconfig eth0 Link encap:Ethernet HWaddr b8:27:00:55:00:55 inet addr:10.12.7.70 Bcast:10.12.7.255 Mask:255.255.255.0 ...
Собственно говоря, здесь 10.12.7.70 — искомый адрес, а b8:27:00:55:00:55
— аппаратно заданный MAC-адрес сетевой карты нашей Raspberry. Вы можете настроить свой DHCP-сервер (возможно, он совмещён с вашим домашним маршрутизатором) так, чтобы ваша Raspberry каждый раз получала один и тот же ip-адрес, это делается с помощью привязки к MAC-адресу; за конкретными инструкциями обратитесь к руководству по эксплуатации того устройства, которое обеспечивает у вас раздачу адресов по DHCP. Отметим, что таким устройством может при желании стать сама Raspberry, но это уже несколько другая история.
Поскольку начальную настройку мы уже закончили, можно завершить работу с меню и позволить системе перезагрузиться. Нажимаем Tab, стрелкой вправо выбираем Finish, нажимаем Enter, потом ещё раз Enter, чтобы ответить положительно на вопрос о перезагрузке.
Настройка сети
Если вы настроили свой DHCP-сервер так, чтобы ваша Raspberry Pi получала фиксированный адрес в вашей локальной сети и адрес этот вам известен, вы можете на этом завершить работу с консолью Raspberry, отсоединить от неё монитор и клавиатуру: все дальнейшие действия можно выполнить удалённо; этот параграф можете пропустить до конца. Если же по какой-то причине настраивать DHCP-сервер вы не хотите, можно настроить на Raspberry статический ip-адрес. Для этого нужно, по меньшей мере, знать, какой ip-адрес в вашей сети свободен (и НЕ входит в число выдаваемых DHCP-сервером), какова маска сети, адрес шлюза и адрес DNS-сервера.
Дождитесь загрузки Raspberry и войдите в систему; напомним, что имя пользователя — pi
, а пароль вы в самом начале задали сами (если не задали, то пароль — raspberry
; смените его!) Получите полномочия системного администратора:
sudo bash
После этого откройте на редактирование файл /etc/network/interfaces
. Для этого можно воспользоваться имеющимся в системе по умолчанию редактором nano
:
root@raspi:/home/pi# nano /etc/network/interfaces
Если вы опытный пользователь Unix, возможно, вы предпочтёте редактор vi
— если так, то вы сами знаете, что делать дальше. Для тех, кто не столь искушен в пользовании *nix-системами, отметим, что для сохранения файла в nano
нужно нажать Ctrl-O, а для выхода — Ctrl-X. Файл /etc/network/interfaces
исходно выглядит так:
auto lo iface lo inet loopback iface eth0 inet dhcp allow-hotplug wlan0 iface wlan0 inet manual wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf iface default inet dhcp
Группа из последних четырёх строчек имеет отношение к беспроводным сетевым адаптерам; настройка такового — тема для отдельной статьи, а пока к вашей Raspberry не подключено ничего беспроводного, вы можете смело «закомментарить» эти строчки, поставив перед каждой из них символ #
. Точно так же следует закомментарить строчку, описывающую интерфейс eth0
, а вместо неё написать следующее:
iface eth0 inet static address 10.12.7.70 netmask 255.255.255.0 gateway 10.12.7.1
(замените приведённые здесь адреса вашими ip-адресом, маской и адресом шлюза). Кроме того, добавьте строчку auto eth0
, чтобы интерфейс включался при загрузке системы. Окончательно ваш файл примет вид:
auto lo iface lo inet loopback # iface eth0 inet dhcp auto eth0 iface eth0 inet static address 10.12.7.70 netmask 255.255.255.0 gateway 10.12.7.1 # allow-hotplug wlan0 # iface wlan0 inet manual # wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf # iface default inet dhcp
Сохраните его и откройте на редактирование файл /etc/resolv.conf
:
nano /etc/resolv.conf
В этот файл нужно вписать строчки, соответствующие адресам DNS-серверов в вашей сети, например:
nameserver 10.12.0.3 nameserver 10.12.7.31
Всё, настройка сети завершена. Теперь вы совершенно точно можете отключать монитор и клавиатуру, больше они вам потребоваться не должны.
Проверка удалённого доступа
Если на вашей основной машине используется Linux или любой другой Unix (в том числе MacOS X), просто откройте терминал и дайте команду
ssh pi@10.12.7.70
(подставьте ip-адрес вашей Raspberry). Для регулярной работы, естественно, удобнее завести для вашей Raspberry доменный адрес (имя хоста); если у вас нет доступа к местному DNS-серверу, пропишите имя в ваш /etc/hosts
: откройте этот файл на редактирование с правами системного администратора и впишите туда строчку
10.12.7.70 raspi
Это позволит в дальнейшем использовать в командах слово raspi
вместо ip-адреса, который не слишком удобно запоминать. В частности, запуск ssh теперь будет выглядеть так:
user@comp:~$ ssh pi@raspi The authenticity of host 'raspi (10.12.7.70)' can't be established. RSA key fingerprint is 31:00:fd:0b:a9:67:5f:87:ce:d6:78:36:c2:8a:7b:0f. Are you sure you want to continue connecting (yes/no)?
Здесь нужно ответить yes
, это потребуется только в первый раз, потом ваш ssh запомнит публичный ключ Raspberry и больше вопросов задавать не будет. Дальше у вас спросят пароль:
pi@raspi's password:
Введите пароль, установленный во время начальной настройки.
Если вы работаете с Windows, скачайте программу putty
(http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html) и запустите её, введите в соответствующее поле ввода ip-адрес вашей Raspberry, выберите протокол ssh, порт 22 и нажмите Enter. В ответ на вопрос login as:
введите имя pi
, в ответ на запрос пароля — пароль, установленный во время начальной настройки.
Если всё в порядке, вы увидите примерно следующие надписи:
Linux raspi 3.6.11+ #456 PREEMPT Mon May 20 17:42:15 BST 2013 armv6l The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Sat Jul 20 12:30:27 2013 from frock.intranet pi@raspi ~ $
Для проверки дайте пару команд:
pi@raspi ~ $ pwd /home/pi pi@raspi ~ $ ls Desktop ocr_pi.png python_games pi@raspi ~ $
Всё, удалённый доступ работает.
Настройка пользователей и паролей
Невзирая на широкое распространение и популярность утилиты sudo
, использовать её следует с большой осторожностью, а лучше не использовать вовсе. С точки зрения безопасности в сеансе работы вообще никогда не следует повышать свои полномочия, так что sudo
вообще не должна использоваться никогда и ни для чего, ну а классическая su
может использоваться только для понижения полномочий (например, если в сеансе работы под системным администратором возникла потребность запустить какую-нибудь программу с полномочиями обычного пользователя, но не наоборот). Чтобы выполнять команды с полномочиями системного администратора, в систему следует войти под именем root
; если речь идёт о локальной системе, следует переключиться на текстовую консоль и зайти с неё (разумеется, ни в коем случае нельзя запускать под администратором всю графическую обвеску, она для этого слишком сложна и, как следствие, ненадёжна), если же мы используем удалённый доступ, следует с самого начала делать ssh root@hostname
, а не заходить, как это часто делают в наши дни, под непривилегированным пользователем и потом повышать свои полномочия. Регулярное повышение полномочий пользователя означает, что при взломе непривилегированного аккаунта злоумышленник едва ли не автоматически получит доступ и к привилегированному аккаунту тоже.
Содержимое этого параграфа, в принципе, опционально, но мы возьмём на себя смелость настоятельно рекомендовать всё же сделать следующее:
- установить пароль для пользователя
root
; - проверив, что заход напрямую под пользователем
root
работает, убрать из системы утилиту sudo; - завести себе непривилегированного пользователя под выбранным именем;
- заблокировать учётную запись
pi
.
Итак, для начала заходим в систему, как обычно, под именем pi
и получаем полномочия системного администратора командой sudo bash
. Теперь устанавливаем пароль для пользователя root
:
root@raspi:/home/pi# passwd root Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully root@raspi:/home/pi#
Заходим с рабочей машины на нашу Raspberry под именем root с использованием только что установленного пароля (в Unix-системах понадобится команда ssh root@raspi
, под Windows запускаете, как обычно, Putty и на запрос Login as:
вместо pi
вводите root
). Если это получилось, утилита sudo
нам больше не нужна. Убираем её:
root@raspi:~# apt-get remove sudo Reading package lists... Done Building dependency tree Reading state information... Done The following packages will be REMOVED: gksu sudo 0 upgraded, 0 newly installed, 2 to remove and 0 not upgraded. After this operation, 2286 kB disk space will be freed. Do you want to continue [Y/n]?
На этом месте смело отвечаем y
. Всё, опасной утилиты sudo
в системе больше нет.
Теперь заводим для себя нормального пользователя, для чего даём команду adduser
, которая сама спросит у нас пароль для нового пользователя (вводится, как обычно, дважды), полное имя и дополнительную информацию, которую можно не задавать:
root@raspi:~# adduser vasya Adding user `vasya' ... Adding new group `vasya' (1002) ... Adding new user `vasya' (1001) with group `vasya' ... Creating home directory `/home/vasya' ... Copying files from `/etc/skel' ... Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully Changing the user information for vasya Enter the new value, or press ENTER for the default Full Name []: Vasiliy Pupkin Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] y root@raspi:~#
Пробуем зайти под ним вместо обычного pi
. Убедившись, что всё в порядке, блокируем (но на всякий случай не убираем) пользователя pi
:
passwd -l pi
Ключ -l
(от слова lock) позволяет заблокировать пароль заданного пользователя, что нам сейчас и требуется.
Финальным ударом давайте уберём ещё один потенциальный источник проблем с безопасностью — утилиту su
. Деинсталлровать её из системы не нужно, она иногда нужна для понижения, а не повышения полномочий; лучше сделать так:
chmod go-rx /bin/su
Мы всегда, в случае чего, сможем откатить это действие, дав команду chmod go+rx /bin/su
, но пока мы этого не сделали, запускать su
сможет только пользователь root
.
Устанавливаем компилятор и сопутствующие пакеты
Мы приближаемся к нашей исходной цели — научить Raspberry Pi работать с устройствами UNC0xx. Сейчас нам будет нужно установить некоторые дополнительные пакеты, которые позволят откомпилировать на вашей Raspberry наше программное обеспечение. Прежде чем начинать работу по установке пакетов, желательно обновить список пакетов и их версий, доступных из репозиториев Raspbian; это делается командой
apt-get update
Её выполнение может занять пару минут. После этого можно устанавливать нужные нам пакеты.
Скорее всего, в системе уже установлены компиляторы языков Си и Си++, в чём можно убедиться, попробовав их запустить:
root@raspi:~# gcc --version gcc (Debian 4.6.3-14+rpi1) 4.6.3 Copyright (C) 2011 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. root@raspi:~# g++ --version g++ (Debian 4.6.3-14+rpi1) 4.6.3 Copyright (C) 2011 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. root@raspi:~#
Если вдруг в вашем случае это оказалось не так, вы можете установить их:
apt-get install gcc-4.6 g++-4.6
Система сборки GNU Make
(команда make
) у нас уже тоже есть, если нет — поставьте её:
apt-get install make
Для компиляции программного обеспечения Unicontrollers нам потребуется библиотека libusb
, а если вы хотите воспользоваться программами с графическим интерфейсом, такими как UNC Monitor, сверх этого потребуется библиотека wxWidgets-gtk. Ставим их:
apt-get install libusb-dev libwxgtk2.8-dev
Для опытных пользователей порекомендуем ещё добавить редактор Vim и системы контроля версий CVS и Git; кроме того, мы рекомендуем поставить пакет lftp
и использовать программу lftpget
вместо wget
. Ставим:
apt-get install vim cvs git lftp
Теперь наша Raspberry готова к загрузке и компиляции программного обеспечения для работы с устройствами UNC0xx.
Загрузка, сборка и установка ПО
ВНИМАНИЕ! Из соображений безопасности загрузку и компиляцию ПО следует производить под непривилегированным пользователем, ни в коем случае не под root'ом!
Базовое ПО
Исходные тексты программного обеспечения доступны на нашем сайте единым архивом. На момент написания этой статьи наиболее свежая версия ПО имела номер 2120611; архив расположен по адресу http://www.unicontrollers.com/static/soft/unc0xx-2120611.tgz. Заходим в систему под непривилегированным пользователем и скачиваем архив:
vasya@raspi ~ $ lftpget http://www.unicontrollers.com/static/soft/unc0xx-2120611.tgz
Распаковываем его:
vasya@raspi ~ $ tar -xzf unc0xx-2120611.tgz
У нас появилась директория с исходниками, заходим туда и смотрим, что там есть:
vasya@raspi ~ $ cd unc0xx-2120611/ vasya@raspi ~/unc0xx-2120611 $ ls -F commandline/ firmware/ unc_data.h unc_prot.h wx/ COPYING gpl-3.0.txt unc_id.h WARRANTY vasya@raspi ~/unc0xx-2120611 $
В поддиректории commandline
расположены исходники утилит командной строки, включая основную программу для управления устройствами UNC0xx — утилиту uncctl
. Там же находится библиотека функций для доступа к устройствам, предназначенная для программ на языках Си и Си++. Чтобы всё это собрать, войдите в эту директорию и дайте команду make
:
vasya@raspi ~/unc0xx-2120611 $ cd commandline/ vasya@raspi ~/unc0xx-2120611/commandline $ ls grab_com.c hidapi.h Makefile.mingw README uncctl.c uncusb.h hidapi.c Makefile qc.c scanbus.c uncusb.c vasya@raspi ~/unc0xx-2120611/commandline $ make gcc -O0 -Wall -g `libusb-config --cflags` -I. -I.. -c uncctl.c -o uncctl.o gcc -O0 -Wall -g `libusb-config --cflags` -I. -I.. -fpic -c grab_com.c -o grab_com.o gcc -O0 -Wall -g `libusb-config --cflags` -I. -I.. -fpic -c uncusb.c -o uncusb.o ar crs libuncusb.a uncusb.o gcc -static -o uncctl uncctl.o grab_com.o libuncusb.a `libusb-config --libs` gcc -O0 -Wall -g `libusb-config --cflags` -I. -I.. -c scanbus.c -o scanbus.o gcc -static -o scanbus scanbus.o `libusb-config --libs` vasya@raspi ~/unc0xx-2120611/commandline $ ls grab_com.c hidapi.h Makefile.mingw scanbus uncctl uncusb.c grab_com.o libuncusb.a qc.c scanbus.c uncctl.c uncusb.h hidapi.c Makefile README scanbus.o uncctl.o uncusb.o vasya@raspi ~/unc0xx-2120611/commandline $
Инсталляция свежесобранной программы заключается в копировании исполняемого файла в директорию /usr/local/bin
; делать это нужно, имея полномочия системного администратора. Для этого войдите в систему под именем root
и скопируйте файл командой cp
:
root@raspi:~# cd /home/vasya/unc0xx-2120611/commandline/ root@raspi:/home/vasya/unc0xx-2120611/commandline# cp uncctl /usr/local/bin
Для проверки подключите к вашей Raspberry устройство UNC0xx. Помните, что порты Raspberry Pi не способны обеспечить ток питания, необходимый для устройств UNC0xx! Используйте внешнее питание или устройства с собственным встроенным блоком питания (UNC001-3,4, UNC012). Для прямого доступа к периферии необходимы полномочия системного администратора, так что команду uncctl
следует давать из-под пользователя root
:
root@raspi:~# uncctl -L <id> [serial number ] version 7775 [ee05:a001:7775] 2120611 1 UNC0xx device(s) found root@raspi:~#
Программы с графическим интерфейсом
Исходные тексты программ с графическим интерфейсом расположены в поддиректории wx
. Зайдите туда и дайте последовательно команды make uncmon
, make demo
; результатом станут исполняемые файлы uncmon
и demo
. Войдя под пользователем root
, скопируйте их в /usr/local/bin
аналогично тому, как это было сделано с файлом uncctl
.
Чтобы запустить эти программы, необходимо поручить ssh проброс портов системы XWindow; это делается флагом -X
. Учитывая, что программам потребуется доступ к аппаратуре, необходимо запускать их с полномочиями системного администратора (пользователя root
) то есть на вашей основной машине следует дать команду
ssh -X root@raspi
и, войдя в систему, дать команду uncmon
(или uncmon &
, чтобы запустить программу в фоновом режиме). Окно программы UNC Monitor вы увидите на своём экране (на экране рабочей машины), несмотря на то, что запущена она будет на Raspberry Pi. Можно произвести такой запуск короче, в одну команду на рабочей машине:
ssh -X root@raspi uncmon
К сожалению, задействование аналогичных возможностей под Windows требует довольно сложной настройки (необходимо инсталлировать на машину под Windows один из существующих X-серверов, после этого настроить Putty на проброс соответствующих портов), что заведомо выходит за рамки нашей статьи. В ближайшее время мы надеемся выпустить программу, способную, в числе прочего, управлять устройствами UNC0xx через веб-интерфейс, что позволит использовать браузер в качестве графического интерфейса к устройствам, подключённым к Raspberry Pi или любой другой Unix-машине.
Ключевые слова/keywords: Raspberry Pi, Raspbian, управляющий компьютер, умный дом, умный дом своими руками, бюджетный умный дом, умный дом для программиста, бюджетное решение для умного дома