Как установить и настроить ОС на Orange Pi Zero 2W в 2025 году
На текущий момент этому одноплатнику почти 2 года. В интернете качественная информация по нему либо затерялась в свалке нерешенных вопросов и ответов, либо устарела. Я решил написать гайд, в первую очередь для себя, чтобы еще раз не проходить путь, который у меня занял 5 дней.
У меня Orange Pi Zero 2W на 4 ГБ и официальная плата расширения.
Выбор операционной системы
"Конечно, можно прочитать гайды общего рода, собрать ядро, настроить ОС, потратить пару недель/месяцев на все это и жить счастливо, но зачем это делать, если производитель позаботился о нас?" — подумал я.
После перебора операционных систем могу сказать, что относительно самой не проблемной из server-версий оказалась Ubuntu Focal (образ под названием Orangepizero2w_1.0.0_ubuntu_focal_server_linux5.4.125) и последняя версия от Armbian (на момент 16.01.2025). Если кратко, то в первой сборке работает из коробки звук, но она не умеет перезагружаться, а вторая перезагружается, но в ней не работает звук, и после первой настройки ломается конфигуратор. Экономить место на карте я не хотел, поэтому пошел другим путем — установка версии с графической оболочкой и обрезка ее самостоятельно. После 3 дней испытаний была выбрана Ubuntu Noble 1.0.4 c ядром 6.1.31 (образ под названием "Orangepizero2w_1.0.4_ubuntu_noble_desktop_xfce_linux6.1.31") — допилить ее оказалось проще, чем остальные.
Более подробные результаты тестирования:
Orangepizero2w_1.0.0_ubuntu_focal_desktop_xfce_linux5.4.125
Bluetooth: проверки не было
Звук: звук то замедлялся, то "пердел" в наушниках, либо ускорялся и замедлялся при изменении громкости
Потоковое видео: без проверки
Работает ли перезагрузка корректно: нет
Имеется ли возможность включить ГПУ: в конфигураторе параметра нет, возможно, можно включить через редактирование конфигурационного файла dtb
Графические артефакты: общая тормознутость графической оболочки
Orangepizero2w_1.0.0_debian_bullseye_desktop_xfce_linux5.4.125
Bluetooth: проверки не было
Звук: работает (качество по HDMI хорошее, по 3.5 jack чуть хуже), в трее звук не переключается, только через настройки адаптера
Потоковое видео: vkvideo без тормозов воспроизводит в 480p, 720p с лагами
Работает ли перезагрузка корректно: нет
Имеется ли возможность включить ГПУ: неизвестно
Графические артефакты: на некоторых сайтах в встроенном браузере во время анимаций (например, сайт радио "Шоколад") или обновления экрана мигает курсор и имеются подлагивания
Orangepizero2w_1.0.2_ubuntu_jammy_desktop_xfce_linux6.1.31
Общими словами: браузер не запустился, в логах было вагон ошибок, на которые не хотелось тратить время, решил даже не продолжать тестировать
Orangepizero2w_1.0.2_debian_bookworm_desktop_xfce_linux6.1.31
Bluetooth: проверки не было
Звук: работает (хорошо), в трее звук переключается через раз
Потоковое видео: vkvideo без тормозов воспроизводит в 480p, 720p с лагами
Работает ли перезагрузка корректно: да
Имеется ли возможность включить ГПУ: да, улучшает взаимодействие с графической оболочкой
Графические артефакты: как у Orangepizero2w_1.0.0_debian_bullseye_desktop_xfce_linux5.4.125
Orangepizero2w_1.0.2_debian_bullseye_desktop_xfce_linux6.1.31
Bluetooth: проверки не было
Звук: работает, но не переключился после открытия громкости в адаптере, артефакт с ускорением воспроизведения
Потоковое видео: проверки не было
Работает ли перезагрузка корректно: проверки не было
Имеется ли возможность включить ГПУ: проверки не было
Графические артефакты: проверки не было
Orangepizero2w_1.0.4_ubuntu_noble_desktop_xfce_linux6.1.31
Bluetooth: работает
Звук: работает (хорошо), в трее звук переключается без проблем, но в 3 из 10 случаев, если переключать звук именно через свойство адаптера, то появляется артефакт в виде ускоренного или замедленного воспроизведения, лечится это остановкой аудиопотока и переключением на неактивный выход
Потоковое видео: в онлайне с сайта vkvideo поначалу были тормоза при воспроизведении видео в 720p, но через какое-то время пропали
Работает ли перезагрузка корректно: да
Имеется ли возможность включить ГПУ: да, улучшает взаимодействие с графической оболочкой
Графические артефакты: как у Orangepizero2w_1.0.0_debian_bullseye_desktop_xfce_linux5.4.125, но часть артефактов можно починить
Примечания:
- На следующий день я выяснил, что скорость на i2c у этой сборки меньше, чем у других, что негативно влияло на работу некоторых приборов, но я нашел, как это исправить.
- Пару раз после отправки сигнала о перезагрузке в нештатной ситуации одноплатник с этой ОС все же не перезагрузился.
Установка и настройка ОС
- Скачиваем Orangepizero2w_1.0.4_ubuntu_noble_desktop_xfce_linux6.1.31. Ссылку можно найти на официальном сайте одноплатника или в начале поста
- Если у вас Windows, то с помощью Rufus записываем образ на карту (выбирайте высокоскоростную карту).
- Вставляем карту в одноплатник, ждем первой загрузки (она обычно дольше, чем последующие).
- Настраиваем подключение к Wi-Fi, добавляем раскладку для клавиатуры через приложения в трее.
- Открываем консоль и выполняем команду:
orangepi-config
- Перезагружаемся.
- Открываем консоль и добавляем репозитории в файл
/etc/apt/sources.list
deb [arch=arm64] http://ports.ubuntu.com/ focal main multiverse universe deb [arch=arm64] http://ports.ubuntu.com/ focal-security main multiverse universe deb [arch=arm64] http://ports.ubuntu.com/ focal-backports main multiverse universe deb [arch=arm64] http://ports.ubuntu.com/ focal-updates main multiverse universe
- Обновляемся:
sudo apt update sudo apt upgrade -y sudo apt dist-upgrade -y sudo apt autoremove -y
- Я по умолчанию устанавливаю/обновляю следующие пакеты:
sudo apt install -y wget curl git make cmake build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev llvm xz-utils tk-dev libffi-dev liblzma-dev python3-openssl python3-dev i2c-tools python3-smbus python3-smbus2
Немного про оптимизацию
- В настройках рабочего стола и отображения я изменил количество рабочих столов и убрал различные графические эффекты в виде анимаций и теней (последнее сомнительно помогло).
- Работа в браузере (Firefox) затруднена. Как вариант, можно выделить больше памяти и подкрутить другие параметры, но не факт, что это сильно поможет — разницы я особо не заметил, но я и не сильно нагружал.
- Вписываем в адресную строку
about:configи меняем следующие настройки:
browser.cache.disk.enable → false
browser.cache.memory.enable → true
browser.cache.memory.capacity → 524288 (512 МБ)
browser.tabs.unloadOnLowMemory → true
network.prefetch-next → false
- Либо можно пойти другим путем, установить более легкий браузер, например Falkon:
sudo apt install falkon
- При использовании Falkon действительно меньше графических артефактов, и некоторые элементы на страницах отображаются лучше, чем в Firefox, но на страницах телеграмма подлагивания имеются.
- Мучать карту я не хотел, поэтому отключил swap на ней (хотя насколько это может помочь, неизвестно):
sudo swapoff -a sudo sed -i '/swap/d' /etc/fstab
- Своей рабочей директорией я считаю папку
/opt, поэтому перехожу в нее.
Установка Python 3.9
В этой сборке ОС имеется Python версии 3.12. Если необходима версия 3.9, то вот список команд:
wget https://www.python.org/ftp/python/3.9.21/Python-3.9.21.tgz && tar -xvf Python-3.9.21.tgz && cd Python-3.9.21 && ./configure --enable-optimizations --with-openssl=$(dirname $(dirname $(which openssl))) && make && sudo make altinstall && cd .. && rm -rf Python-3.9.21 Python-3.9.21.tgz
Уходим пить чай, выполнение займет много времени.
Настройка виртуального окружения Python 3.9
- Создаем виртуальное окружение:
sudo mkdir -p /opt/projects/default_p39_venv && sudo chown -R orangepi:orangepi /opt/projects/default_p39_venv && python3.9 -m venv /opt/projects/default_p39_venv
- Активация виртуального окружения (на будущее):
source /opt/projects/default_p39_venv/bin/activate
- Для деактивации:
deactivate
Настройка скорости i2c
Как я говорил ранее, в этой сборке скорость на i2c установлена минимальная, из-за этого при отправке изображений на дисплей типа ssd1306 были артефакты: изображение загружалось построчно. Советы в интернете, по типу
отредактируйте загрузочный файл /boot/orangepiEnv.txt и добавьте туда доп. параметр с уточнением скоростине помогли, а значит, настало время для "тяжелого люкса", но нет, я не про сборку ядра, тут все проще.
- Подключаем устройство к одноплатнику согласно своей схеме, пины можно посмотреть с помощью команды:
gpio readall
- Смотрим список устройств:
i2cdetect -l
- Мое устройство подключено к первому из списка, получаем более подробную информацию о нем:
i2cdetect -y 1
- Видим в ответе
3c, либо другой адрес - Делаем резервную копию Device Tree Binary (DTB):
sudo cp /boot/dtb/allwinner/sun50i-h618-orangepi-zero2w.dtb /boot/dtb/allwinner/sun50i-h618-orangepi-zero2w.dtb.backup
- Устанавливаем ПО для работы с файлом:
sudo apt install device-tree-compiler
- Конвертируем файл в текстовый формат:
dtc -I dtb -O dts -o sun50i-h618-orangepi-zero2w.dts /boot/dtb/allwinner/sun50i-h618-orangepi-zero2w.dtb
- Чтобы узнать более точное место редактирования параметра управления скоростью передачи данных, я ищу строчку i2c1, где 1 - это номер i2c из команды выше (i2cdetect)
- Находим строчку формата
i2c1 = "/soc/i2c@5002400". - Далее ищем список параметров по этому адресу и вписываю в него
clock-frequency = <400000>;. Должно получиться примерно следующее:
i2c@5002400 {
compatible = "allwinner,sun50i-h616-i2c\0allwinner,sun8i-v536-i2c\0allwinner,sun6i-a31-i2c";
reg = <0x5002400 0x400>;
interrupts = <0x00 0x07 0x04>;
clocks = <0x02 0x49>;
resets = <0x02 0x18>;
pinctrl-names = "default";
pinctrl-0 = <0x2f>;
status = "disabled";
#address-cells = <0x01>;
#size-cells = <0x00>;
clock-frequency = <400000>;
phandle = <0x78>;
};
- Компилируем обратно в dtb:
dtc -I dts -O dtb -o sun50i-h618-orangepi-zero2w.dtb sun50i-h618-orangepi-zero2w.dts
- Копируем файл:
sudo cp sun50i-h618-orangepi-zero2w.dtb /boot/dtb/allwinner/
- Перезагружаемся:
sudo reboot
- Радуемся!
А затем можно удалить графическую оболочку и радоваться облегченной и полностью рабочей server версией ОС