Cubietruck — третье поколение плат для разработчика от наших китайских братьев. Размерами она примерно вдвое больше предшественников (8х11см — с пару сигаретных пачек), зато имеет "на борту" 2Гб памяти и VGA разъём. Выведенных GPIO контактов, конечно, гораздо меньше (54 против 96 у предыдущей версии), зато есть 8Гб NAND флеша, гигабитная сетевая карта и комбинированный Wifi+Bluetooth 4 чип с разведённой по плате антенной.
Посчитав расходы на электричество для NAS (Synology DS411), я решил попробовать заменить его и ноутбук, используемый для чтения почты ;) на этого малыша. Заодно избавиться от шума вентиляторов ИБП и NAS.
Установка и настройка.
Что нам потребуется:- Собственно, сам Кубик. Мой был с чипом ревизии "В". Это следует учитывать, потому как кое-что в этой ревизии, говорят, не работает.
- Micro SD карта на 4Гб
- Адаптер USB-RS232(TTL)
- Блок питания USB 5В, 1А для начала (потом заменим на 5+12)
- Монитор с VGA или HDMI входом
- Компьютер с Linux+VirtualBox или отдельной Windows (пригодится для восстановления)
- В качестве дополнительных запчастей будут использованы:
- Блок питания с батарейным резервированием Mean Well ADS-5512 с аккумулятором на 7А•ч
- 2Tb HDD 3.5" (WD Caviar Green WD20EARS)
- USB-Hub порта на 4 с внешним питанием (благо +5В у нас навалом)
- Пара кусков стеклотекстолита в качестве прослойки и платы для подключения к выводам Cubietruck
- Передатчик NRF24L01 для сбора метео-данных и возможного дальнейшего "поумнения" дома
Первый запуск.
Подключаем монитор, клавиатуру, мышь и поставляемый в комплекте шнурок питания. Включаем и, через несколько секунд, любуемся несколько чудны́м, но местами узнаваемым интрефейсом Android. Cubietruck приходит с предустановленной версией 4.2.2. Ходят упорные слухи, что по-умолчанию, изображение выводится на HDMI выход и, подключив VGA, мы можем очень долго пялиться в черный экран. Отвечу традиционно — у меня заработало ©.Замечательно. Можно уже установить и начать играться в бешеных птиц™, но наша задача —
Планы. Планы. Планы.
Итак, чего же хочется в итоге:- Получить более-менее привычное окружение для простых повседневных задач. Это означает
- Debian-based linux
- Видео, звук, книго-читалка
- Офис, если повезёт — Libre
- Минимальное окружение для программирования (gcc, python, avr-gcc, avrdude). В идеале хотелось бы wine, но тут уже архитектура не позволит :(
- Файлопомойка
- Книжная библиотека с выкачивалкой обновлений СамИздат-а
- Обслуживание метео-датчиков посредством NRF24L01, отправка данных на narodmon.ru.
- Управление через ИК пульт (ибо приёмник в комплекте — надо брать!©)
- Ну и прочее управление чем-то — выводов-то как бы не три десятка доступных
Устанавливаем Linux.
Cubietruck может загружаться с трёх носителей (и в такой последовательнсти):Для начала экспериментов будем использовать micro-SD карточку — проще. После нескольких попыток заработал дистрибутив под простым и очевидным названием Cubian, поэтому дальнейшее повествование будет основано именно на нём. В desktop версии мне что-то не понравилось, поэтому решено было установить простую "серверную" и уже её доводить до ума.
Создаём загрузочную флешку.
- Качаем и распаковываем "text-mode" образ для нашей платы с cubian.org:
$ wget http://ubuntuone.com/6DsamiUUY8Z75gvwunC91w $ 7z x Cubian-base-r5-a20.img.7z
- Определяем путь к нашей флешке:
В данном случае это /dev/mmcblk0.$ sudo sfdisk -s /dev/sda: 312571224 /dev/sdb: 62522712 /dev/mmcblk0: 3872256 всего: 378966192 блоков
- Записываем. ВНИМАНИЕ! Все данные на флешке будут стёрты!
Используем pv вместе с dd дабы хоть как-то видеть прогресс записи.$> pv Cubian-base-r5-a20.img | sudo dd of=/dev/mmcblk0 -bs=4096 ; sync
- Переставляем флешку в выключенный cubietruck, подключаем его к VGA монитору, сети Ethernet с DHCP сервером и включаем (без сети может минут 10 "висеть" в поисках адреса). Ждём… Ещё ждём… И… НИЧЕГО! А дело всё в том, что линусковые дистрибутивы настроены на вывод через HDMI. Как быть? Ну, во-первых, не отключать сразу питание — подождать с десяток минут пока дистрибутив развернётся, а во-вторых, вспоминаем про USB-UART переходник!
- Подключаем USB-UART переходник к ТРЁМ пинам на плате — TX(белый провод), RX(зеленый провод), GND(чёрный провод). Красный провод НИКУДА НЕ ПОДКЛЮЧАТЬ! Подключаем переходник к компьютеру и запускаем любимый терминал примерно такой строкой:
Если проделать это до включения, то можно было полюбоваться на процесс загрузки. А так — нажимаем Enter и видим приглашение ввести пароль.$> minicom -b 115200 -D /dev/ttyUSB0 -o -c on -t xterm -L
- Логинимся со стандартными для этой сборки cubie/cubie...
Cubie login: cubie Password: ... $ sudo -i [sudo] password for cubie: #
- И начинаем исправлять настройки. Подробности есть в fex guide, нам же надо поставить тип монитора в VGA:
# cd /boot # cp script.bin script.orig # fex2bin script.bin 1.fex # nano 1.fex ^W (поиск): disp_mode<Enter>
Исправляем параметры, чтобы получилось так:
Для screen1 можно выставить аналогичные параметры или поставить output_type=3, а disp_mode=4, что, в теории, должно дать режим "clone" для второго дисплея. 3 в output_type означает HDMI, 4 - VGA, output_mode=4 даёт 1024х768 VGA или 720p50 для HDMI.[disp_init] disp_mode = 0 screen0_output_type = 4 screen0_output_mode = 4 fb0_framebuffer_num = 2 fb0_format = 10 fb0_pixel_sequence = 0 fb0_scaler_mode_enable = 1 fb1_framebuffer_num = 2 fb1_format = 10 fb1_pixel_sequence = 0 fb1_scaler_mode_enable = 1
Сохраняем результаты работы:
^O<Enter> ^X # fex2bin 1.fex script.bin # reboot
- Через несколько секунд мы должны увидеть в терминале лог загрузки, а на VGA дисплее двух обезьян и тот же лог, заканчивающийся приглашением ввести логин/пароль.
- Логинимся, пробуем поработать в текстовом режиме и выключаем.
- Вынимаем флешку, запускаем систему и… да, снова — тишина. Это, если не повезло, а коль повезло — снова чудной Андроид.
Восстановление убитого NAND.
Если нам не повезло и загрузка с NAND перестала работать (это как раз одно из "чудес" ревизии "B"), то чуть ли не единственный шанс её вернуть — прошить готовые NAND образы через специальные утилиты. Лучше — официальный Андроид, для гарантии.- Отключаем Cubietriuck от питания и лишних проводов, готовим mini-USB кабель в компьютер
- Качаем утилиту для прошивки и нужнуй образ:
$ wget http://dl.cubieboard.org/software/tools/livesuit/LiveSuitV306_For_Linux64.zip $ wget http://ubuntuone.com/3Z95tYxkcpvKq5oc2Zdpka $ wget http://dl.cubieboard.org/software/a20-cubietruck/android/ct-nand-v1.01-20140109.img.gz
Не забываем, что образ нужен для ревизии "B", а виндовая утилита тоже может пригодиться. - Настраиваем udev по мануалу из LiveSuit (но надёжнее запускать от рута - у меня что-то чудило)
- Распаковываем образ и устанавливаем LiveSuit:
$ gunzip ct-nand-v1.01-20140109.img.gz $ unzip LiveSuitV306_For_Linux64.zip $ cd LiveSuit_For_Linux64 $ chmod +x LiveSuit.run $ ./LiveSuit.run
- Устанавливается оно в ~/Bin. Переходим туда и из терминала запускаем LiveSuit.sh из-под админа
- Выбираем распакованный образ
- Зажав кнопку FEL, втыкаем mini-USB в cubietruck и нажимаем его кнопку Power секунд на 5÷10. Повторять можно, выключая и включая устройство без выдёргивания шнурка. Для этого зажать кнопку Power на 5÷10сек, пока не уменьшится яркость (или погаснет) светодиод питания
- Как загорятся лампочки, отпускаем всё (в это же время начнёт двигаться прогресс-бар прошивки)
- Ждём некоторое время и получаем ошибку. В терминале видно что-то типа "invalid argument" в какой-то строке .cpp файла. Есть подозрение, что более новые версии прошивок будут прошиваться нормально, а пока нам потребуется Windows
- Загружаемся в windows, имея под рукой дистрибутив и прошивку из п.2. В случае с VirtualBox потребуются традиционные пляски с бубном вокруг подключения новых USB устройств. Как и при прошивке телефонов, создаётся 2 (или даже 3) USB устройства, которые надо добавить в авто-подключаемые. Первое описано в китайском мануале LiveSuit с ID 1f3a:efe8, второе имеет тот же ID, но другую ревизию. В фильтре VirtualBox надо стереть ревизию и оставить только ID
- Далее — аналогично Linux-у, с поправкой на установку драйверов при первом подключении. Выбор образа на второй закладке, прошивка начинается также автоматически при подключении cubieboard, когда задан файл. Шьётся очень долго, минут 10. Можно сходить испить кофею
В качестве средства управления в text-mode версии установлен ajenti, что само по себе неплохо, но ест довольно много памяти. Если не требуется удалённая админская панель — удаляем. Если требуется — пользуется, помня, что URL надо писать как HTTPS, иначе не заработает: https://my-cool-ip:8000/. Логин по-умолчанию стандартный (root/admin)
Ещё одним сюрпризом станет изменённый порт ssh. Лезем в /etc/ssh/ssh.conf и правим 36000 на стандартный 22, если не беспокоимся о попытках удалённого взлома.
Установка LXDE и видео
Предполагает наличие не менее 1Гб свободного места на флешке.- Обновляем систему:
$ sudo apt-get update $ sudo cubian-update $ sudo apt-get upgrade
- Добавляем поддержку сетевых шар:
Потянет за собой samba-3, что пригодится для расшаривания будущего NAS$ sudo apt-get install cifs-utils nfs-client
- Устанавливаем XOrg:
$ sudo apt-get install xserver-xorg-core xinit xserver-xorg-video-sunximali sunxi-disp-test $ sudo apt-get install libvdpau-sunxi $ echo "VDPAU_DRIVER=sunxi" | sudo tee -a /etc/environment $ echo "export VDPAU_DRIVER=sunxi" | sudo tee -a /etc/skel/.bashrc $ echo "export VDPAU_DRIVER=sunxi" >> ~/.bashrc
- Добавляем в /etc/rc.local (до строки exit 0) следующее:
Первые две строки для работы VDPAU, третья — для работы субтитров через ускоритель. Она что-то рушит в не-полноэкранном режиме, поэтому не включается автоматом через переменную. Для активации аппаратных субтитров надо задатьchmod 777 /dev/cedar_dev chmod 777 /dev/disp chmod 777 /dev/g2d
$ export VDPAU_OSD=1
- Тестируем установку:
Строка запускает х-сервер и показывает разноцветную пирамидку на сером фоне. Если всё получилось, то увидим именно её. Выход по Ctrl+C, но мне пришлось переключиться в терминал (Ctrl+Alt+F4) потому как в иксах комбинация не срабатывала.$ xinit /usr/bin/sunxi_disp_test -- :0
- Устанавливаем LXDE и запускаем:
Убеждаемся, что всё работает, но в отвратительном разрешении 1024х768. Снова лезем в /boot/1.fex правим screen0_output_mode на желаемое и перезагружаемся$ sudo apt-get install lxde $ sudo adduser cubian video $ sudo service mdm restart
- Устанавливаем SMPlayer для ускоренного видео:
Внимание на запятую в конце строки vc — без неё перестанет работать не-VDPAU воспроизведение$ sudo apt-get install smplayer $ echo "ao=alsa" >> ~/.mplayer/config $ echo "vo=vdpau" >> ~/.mplayer/config $ echo "vc=ffmpeg12vdpau,ffh264vdpau,ffvc1cdpau," >> ~/.mplayer/config
- Добавляем шару на прежний NAS для тестирования:
$ echo "10.0.0.5:/volume1/Video /mnt/video nfs,user,rsize=65535,wsize=65535,_netdev,vers=3,auto 0 0" \ | sudo tee -a /etc/fstab $ sudo mkdir /mnt/video $ sudo chmod a+x /mnt/video $ sudo mount -a
Вместо заключения
Итак, мы получили рабочую систему с лёгким графическим менеджером, способную играть музыку и видео и практически ничего не потребляющую. Тест работы показал потребление 0.17÷0.3А от 12В блока питания в зависимости от нагрузки. Максимальный ток при программном проигрывании видео мало отличался от аппаратного (оба в пределах 0.26÷0.3А) но даже 720p видео можно смотреть только с аппаратным ускорением. Аппаратное ускорение тестировалось на 5Гб BDRip-е 1280х548 "Звёздных войн" и не тормозило на самых динамичных сценах. Загрузка же процессора показывалась в пределах 10%.
Грубый предварительный расчёт даёт нам потребление порядка 12÷15Вт:
- 12В х 0.3А х 0.82 = 2.95Вт с учётом КПД импульсного стабилизатора, которого не будет в итоговой схеме
- 12В х 0.55А + 5В х 0.7А = 10.1Вт — максимальное потребление винчестера, если верить маркировке на нём.
- Протестировано с Seagate Barracuda 7200.9 (5Вx0.46А, 12Вx0.56А) — фактическое потребление 0.7А х 13.5В = 9.45Вт. НО! При раскрутке блинов диск отъедает не менее 2.6А на 1÷2 секунды.
Конец первой части.
Продолжение читать здесь.
Комментариев нет:
Отправить комментарий