Введение
В новом ядре linux-4.4 переписали механизм работы с deviceTree. Теперь они больше не компилируются вместе с ядром, а поставляются отдельным репозиторием. В прошлый раз, когда я пытался завести китайский 4х дюймовый дисплей WaveShare, никаких адекватных мануалов не было. Максимум, что я смог найти - это исходники модуля для старого ядра (linux-3.8.13). Провозившись неделю я всё-таки собрал своё ядро, с которым не расстаюсь.
Но время меняется, уже давно все перешли на Debian 8.7, но мануалов как подключить дисплей BB-VIEW на новом ядре я так и не нашёл.
Установка Debian 8.7 на BeagleBone
- Качаем свежий образ с официального сайта: beagleboard.org/latest-images
- Теперь и под линуксом появилась удобная утилита для заливки образа файловой системы на SD-карту. Больше не нужно копировать в консоли через dd, боясь ошибиться и затереть себе содержимой жёсткого диска. Заливаем на SD-карту через Etcher.
- Вставляем SD-карту в BB и ждём загрузки
Как найти BeagleBone в сети
Есть несколько стандартных способов подключения к консоли BeagleBone
- SSH через Ethernet
- UART через Debug-разъём на плате (нужно купить преобразователь USB->UART)
- Втыкаем Биглбон в USB-порт, устанавливаем драйвера и на нашем компе создаётся вторая подсеть 192.168.7.0, в которой и будет наш BeagleBOne.
Лично мне проще втыкать Биглбон в роутер и общаться с ним по сети. Только вот одна проблема: как узнать его адрес?
Для этого есть утилита nmap, которая сканирует все живые компьютеры в вашей локальной сети.
Сканируем сеть:
nmap -sP 192.168.1.1/24
Не забудьте справьте на 192.168.0.1, ели у вас нулевая подсеть.
И.... стучимся к каждому найденному айпишнику:
ssh Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.
Один из них обязательно ответит приветствием.
Обновление Debian
Наверное это очевидно, но на всякий случай напишу.
sudo apt-get update
sudo apt-get upgrade
Вполне вероятно, что при этой операции у вас может не хватить свободного места на SD-карте. Не беда. Выключаем Биглбон, вставляем SD-карту в компьютер, а дальше при помощи gparted просто увеличиваем размер соответствующего раздела (главное - не менять начало раздела).
Где брать драйвера дисплея
Проще всего установить оверлеи из репозитория debian.
Обновляем пакет с оверлеями:
sudo apt update ; sudo apt install bb-cape-overlays
Обновляем пакет с оверлеями:
Если не помогло, то можем собрать из исходников
Вообще, репозиторий оверлеев теперь располагается по адресу: https://github.com/beagleboard/bb.org-overlays
Но! Создатели BeagleBone уже всё за вас продумали, и уже склонированный репозиторий находится на SD-карте вашего BeagleBone по адресу: /opt/source/bb.org-overlays
Заходим туда.
Обновляем исходники драйверов до последней версии:
git pull origin master
Обновляем компилятор DTC:
./dtc-overlay.sh
Собираем и устанавливаем *.dtbo драйвера:
./install.sh
На этом этапе должен собраться новый образ initrd, включающий собранные драйвера.
Как включить нужный *.dtbo драйвер
Рассмотрим на примере 7-дюймового диспле BB-VIEW.
Редактируем файл /boot/uEnv.txt (не забываем sudo, т.к. владелец файла root)
И вставляем туда (ближе к концу) следующие строчки:
cape_disable=bone_capemgr.disable_partno=BB-GREEN-HDMI
cape_enable=bone_capemgr.enable_partno=BB-VIEW-LCD7-01
Первая строчка запрещает загрузку HDMI-драйвера. Т.к. BB-VIEW конфликтует по ножкам с HDMI. Вторая строка - загружает соответствующий модуль.
Перезагружаемся и проверяем.
Типичные проблемы
После перезагрузки через некоторые время все лампочки потухают и устройство выключается
Не хватает питания. Скорее всего выключение BeagleBone происходит в момент включения подсветки дисплея. С дисплеем рекомендуется использовать USB-зарядку с током не менее 2А. Кроме зарядки также важен USB-кабель. Плохой кабель уменьшает ток и напряжение на входе биглбона. Лучше всего брать короткие и толстые кабели.
Как изменить разрешение экрана и неправильные цвета
Картинка с рабочим столом Debian появляется, но сплюснутая и на половину экрана. Как изменить разрешение?
Редактируем файл /etc/X11/xorg.conf. Находим там раздел Section "Screen", и в нём параметр DefaultDepth. Ставим значение 24. Сохраняем, перезагружаем. Должно работать!