Начну со стандартной “отмазки”. Познания мои в Linux не велики, поэтому текст может содержать ошибки или возможно не самые оптимальные пути решения поставленной задачи. Хотя по моим наблюдениям в мире Linux единственно правильного решения по установке или настройке чего-либо нет, а есть стопицот разных мануалов/подходов. Поэтому просьба строго не судить, поправлять и предлагать что-то, чем просто критиковать. В общем призываю к конструктиву.
Задача:
- Установить и настроить Linux на OrangePI PC.
- Установить OctoPrint на Linux.
Немного вводной информации от разработчиков OctoPrint.
OctoPrint это host программное обеспечение для 3D-принтеров, которое управляет подключенным к нему 3D-принтером, фактически передавая ему команды для выполнения печати. Примеры других подобных программ это Printrun, Repetier Host, а также Cura.
OctoPrint отличается от существующих программных решений в том, что его главная цель заключается в предоставлении удобного веб-интерфейса, который позволяет контролировать принтер удаленно из любой точки вашей сети или даже из Интернета, предлагая те же опции и возможности обратной связи доступные из host приложений перечисленных выше. Для того чтобы достичь этого, OctoPrint интенсивно использует существующие веб-технологии и framework, такие как AJAX и HTML5 web sockets.
OctoPrint был разработан для запуска на небольших встраиваемых устройствах, таких как популярный Raspberry Pi. Это позволяет превратить ваш существующий 3D-принтер в принтер с доступом по сети или WiFi и отвязать его от вашего ноутбука или рабочей станции.
Существует несколько возможностей для установки OctoPrint, как то запуск ПО на Linux, Windows или MacOS. Если у вас есть одна из версий Raspberry Pi, то рекомендуется использовать максимально затюненный имидж OctoPi, подготовленный для записи на SD карту. Его можно забрать тут.
На OrangePi PC данный образ запустит мне не удалось (видимо образ заточен под Raspberry Pi), поэтому я пошел другим путем — установил его в качестве пакета ПО для работы в среде Python 2.7 на один из дистрибутивов Debian.
Для установки OctoPrint рекомендуется Raspbian, но образ, который мне удалось найти, набит разнообразным софтом, необходимым в основном в графической оболочке. Ну для чего мне, фактически на принт-сервере, Libreoffice и графические редакторы. Поэтому я решил сделать минималистичную “серверную” установку на Debian Wheezy. Думаю что никаких особых проблем не возникнет и c Debian Jessie и с Ubuntu. Тем кому необходима графическая оболочка могут использовать Ubuntu(с оболочкой Vivid_Mate) или Lubuntu. О том где их можно найти читайте ниже.
- Дистрибутивы Linux, рекомендованный производителем OrangePI PC, выложены тут
Образы можно взять c Google Drive
Update January 2017
Рекомендую использовать образ Armbian как наиболее свежий релиз. Есть образы под разные платы, не только Orange PI PC. Брать тут.
Кому то может понравится DietPI дистрибутив. Брать тут.
- Достаточно скачать два файла: Debian_wheezy_mini.img.xz и scriptbin_kernel.tar.gz.
Распаковать файлы можно архиватором 7Zip. - Для загрузки и работы устройства необходима micro SD карта с объемом минимум 4Гб (встроенного флэш-диска на OrangePI PC нет). Скорость записи на карту на работу ОС влияние конечно оказывает, но в данном случае не катастрофическое. Поэтому думаю не обязательно использовать карту с максимальными скоростными характеристиками. Достаточно использовать micro SD карту с классификацией скорости от 4 и выше.
- Перед записью образа ОС рекомендую SD карту отформатировать с опцией восстановления размера и сброса разметки. Для этого я использовал утилиту SDFormatter.
Внимание! Проверьте внимательно что выбран правильный носитель — буква SD карты (Drive). Иначе есть шанс снести все данные не с того диска или подключенного накопителя. - Для записи образа ОС используем утилиту Win32DiskImager.
Внимание! Точно также проверяем букву выбранного диска (Device).
Выбираем файл Debian_wheezy_mini.img и жмем Write.
Update January 2017
Для записи образа рекомендую к использованию мультиплатформенную утилиту Etcher
- После того как образ запишется на SD карту, в проводнике открываем раздел с названием BOOT. На Windows это пожалуй единственный раздел на карте который можно открыть без дополнительных утилит.
Удаляем все файлы которые там находятся.
Update January 2017
Для Armbian шаги 6-8 можно не делать
- Распаковываем архив scriptbin_kernel.tar.gz в отдельную директорию. Оттуда берем 2 файла и копируем в раздел BOOT карты:
— script.bin.OPI-PC_1080p60_hdmi — где OPI-PC указывает на модель устройства, а 1080p60_hdmi на разрешение и тип подключения которое будет использоваться при загрузке (можно выбрать другое подходящее для вашего монитора разрешение).
— uImage_OPI-2 — используется в случае если у вас OrangePI PC
- Переименовываем на карте файлы:
— script.bin.OPI-PC_1080p60_hdmi в script.bin
— uImage_OPI-2 в uImage
- Извлекаем карту и вставляем ее в устройство, включаем. О том, что образ ОС записан на карту корректно и OrangePI PC начал с нее грузиться, можно понять по загоревшемуся красному светодиоду на плате и конечно по логу загрузки на экране, если он подключен.
- Теперь необходимо узнать IP адрес который был присвоен DHCP сервером новому устройству в сети. Вот несколько способов как сделать это:
— посмотреть в консоль управления DHCP сервера или домашнего роутера (если он выполняет роль DHCP сервера в сети). Найти там новое устройство.
— использовать сканер сети, например Look@LAN Network Monitor.
— подключить клавиатуру и монитор к устройству, залогиниться и узнать адрес командой ifconfig. - Настраиваем Putty или другой подобный SSH клиент и подключаемся к OrangePI PC по IP адресу устройства. По умолчанию логин/пароль — orangepi/orangepi
- После первого входа, необходимо выполнить команду
sudo fs_resize
и перегружаем устройство.
sudo reboot
Update January 2017
Для Armbian делать не нужно
- Рекомендую поменять пароль по умолчанию для пользователей orangepi и root . Это можно сделать командой
passwd orangepi passwd root
Update January 2017
Для Armbian дефолтные логин/пароль — root 1234
- Обновляем список пакетов командой
sudo apt-get update
и обновляем ОС.
sudo apt-get dist-upgrade
- Настраиваем часовой пояс для системы и пользователя.
sudo tzselect sudo dpkg-reconfigure tzdata
и синхронизируем время
ntpdate pool.ntp.org
- Для поиска и обнаружения сервисов в локальной сети по DNS имени .local устанавливаем и настраиваем сервис AVAHI
sudo apt-get install avahi-daemon sudo apt-get install avahi-autoipd
- Прописываем имя хоста в соответствующих файлах.
Сохраняем изменения Ctrl+X, выходим из редактора и можно перегрузиться.
sudo nano /etc/hostname — пишем например orangeprint
sudo nano /etc/hosts — также прописываем orangeprint
sudo reboot
Теперь можно будет открывать веб страницу сервиса по адресу http://orangeprint.local:5000 или http://orangeprint:5000 - Далее рекомендую обновить ядро и модули Linux. При выполнении скрипт задаст несколько несложных вопросов. Только после этого у меня заработал WI-FI адаптер.
Update January 2017
Для Armbian обновление ядра делать не нужно.
wget http://loboris.eu/update_kernel.sh sudo mv update_kernel.sh /usr/local/bin sudo chmod +x /usr/local/bin/update_kernel.sh sudo update_kernel.sh sudo reboot
после перезагрузки выполняем командуsudo depmod -a
- Приступаем к установке сервиса OctoPrint. Последующие действия выполняем из под пользователя под которым будем запускать сервис.
cd ~ sudo apt-get install python-pip python-dev python-setuptools python-virtualenv git libyaml-dev build-essential git clone https://github.com/foosel/OctoPrint.git cd OctoPrint
Update January 2017 Для Armbian необходимо выполнить следующую команду, чтобы не получить ошибку virtualenv.
sudo pip install virtualenv --upgrade
sudo virtualenv venv sudo virtualenv --system-site-packages venv sudo ./venv/bin/python setup.py install mkdir ~/.octoprint
- Добавляем пользователя в группы, что даст возможность сервису открывать порты для общения с подключенным принтером.
sudo usermod -a -G tty orangepi sudo usermod -a -G dialout orangepi
- Для проверки работоспособности сервиса запускаем его следующей командой .
~/OctoPrint/venv/bin/octoprint
Открываем в броузере веб страницу http://orangeprint:5000
Выбираем тип авторизации который планируется использовать. Наслаждаемся веб порталом.
- Далее настраиваем автозапуск сервиса.
Копируем скрипт и настраиваем права на запуск.sudo cp ~/OctoPrint/scripts/octoprint.init /etc/init.d/octoprint sudo chmod +x /etc/init.d/octoprint
Копируем файл с настройками
sudo cp ~/OctoPrint/scripts/octoprint.default /etc/default/octoprint
Редактируем файл настроек — прописываем пользователя из под которого будет запускаться сервер и добавляем строку с указанием папки где находятся бинарники сервиса. Разкоментчиваем строки с настройками. Сохраняем изменения Ctrl+X и выходим из редактора.
sudo nano /etc/default/octoprint
DAEMON=/home/orangepi/OctoPrint/venv/bin/octoprint
Выполняем.sudo update-rc.d octoprint defaults
Перегружаем устройство.
sudo reboot
- После перезагрузки открываем в броузере веб страницу http://orangeprint:5000
Убеждаемся что сервис стартанул автоматически.
Остановить или рестартануть сервис можно следующей командойsudo service octoprint {start|stop|restart}
- Далее необходимо подключить принтер к USB порту устройства. В моем случае это бутерброд из RAMPS и Arduino Mega прошитый Marlin. Подключаем Arduino USB кабелем к одному из портов OrangePI PC.
- На главной странице http://orangeprint:5000 выбираем порт к которому подключен принтер и скорость соединения (у меня заработало на 115200). Жмем кнопку Connect.
Сервис OctoPrint подключиться к принтеру и сообщит краткий статус. Более подробную информацию по обмену данными и командами можно увидеть на закладке Terminal.
- Дальнейшее описание настроек и нюансов работы с сервисом OctoPrint будет представлено на отдельной странице. Читайте WIKI и FAQ от разработчиков — там много полезного по настройке уже представлено.
- Настройку WI-FI адаптера так-же не выкладываю, так как модели адаптеров могут быть совершенно разными и соответственно установка необходимого модуля и настройка будут различаться. Если повезет с моделью/чипсетом, то он заработает сразу после обновления ядра и модулей и останется только прописать SSID и пароль вашей беспроводной сети. Удачи с Linux!
Все отлично описано, но все-таки можно поподробней про настройку WI-FI адаптера (и что за модель ?).
НравитсяНравится
Рад бы поделится информацией, да танцы с бубном вокруг вайфай не закончились. четкой работы адаптера добится пока не удалось. Он если начинает работать то отваливается эзернет и наоборот. Мой адаптер Edup EP-N8508GS на чипе Realtek RTL8188C. Пробовал другие дистрибы — DietPI и Armbian, на них он поднимался гораздо лучше — попробуйте. настройка стандартная через редактирование /etc/network/interfaces работает в большинстве случаев сработала. в общем как я понял это не самый лучший чипсет для линукса на арм. Пишут вроде что на Ralink работает лучше и поддержка выше на дистирбах. в общем пока я упражнения по настройке приостановил-работаю над запуском притера. как появится время — оттестю, отпишу
НравитсяНравится
Разве sudo pip instal… верное? Вот как верное:
./venv/bin/pip install pip —upgrade
./venv/bin/python setup.py install
А то потом Plugin maanger работать не будет. И плагины вставать
НравитсяНравится 1 человек
возможно sudo там не к месту
я брал команды с сайта разраба на момент написания статьи
возможно поменялось все. апдейты начали регулярно выходить
самая актуальная инструкция конечно на сайте разраба
НравитсяНравится
К сожалению я дичайще извиняюсь. Реально надо. В вот на предложение pip’а потом еще обновить pip обращать внимания не стоит. Ибо новая версия как раз и не работает как надо. Корректно работает только версия ставящаяся автоматом.
НравитсяНравится
Дело в том что после «sudo pip install virtualenv —upgrade» вылетает алерт о том что надо и сам pip «верхний» обновить (грубо говоря окта крутится в свое собственном окружении заимствующим часть от родителя и по факту у нас 2 pip’а). Так вот ./venv/bin/pip install pip —upgrade надо, но при sudo pip install virtualenv —upgrade предлагается pip install pip —upgrade. Это и ломает pip в окте. Обратно к сожалению не выходит нормально починить, час возился. Плюнул и накатил все с нуля )
НравитсяНравится