Настройка видеовыхода в orangepiEnv.txt
Используйте кабель Micro HDMI-HDMI для подключения платы разработки Orange Pi и дисплея HDMI.
Если на дисплее HDMI отображается изображение после запуска ОС Linux, это означает, что интерфейс HDMI работает нормально.
Настройка разрешения HDMI (HDMI resolution setting)
1) В файле /boot/orangepiEnv.txt ОС Linux есть переменная disp_mode, которую можно использовать для установки разрешения HDMI.
Разрешение ОС Linux по умолчанию — 1080p60.
root@orangepi:/boot# cat orangepiEnv.txt verbosity=1 console=both disp_mode=1080p60
2) Переменная disp_mode поддерживает значения настройки, как показано в следующей таблице.
disp_mode supported value | HDMI Resolution | HDMI refresh rate
Поддерживаемое значение | Разрешение HDMI | Частота обновления HDMI
480i 720x480 60 576i 720x480 50 480p 720x480 60 576p 720x576 60 720p50 1280x720 50 720p60 1280x720 60 1080i50 1920x1080 50 1080i60 1920x1080 60 1080p24 1920x1080 24 1080p50 1920x1080 50 1080p60 1920x1080 60
3) Измените значение переменной disp_mode на разрешение, которое вы хотите вывести, а затем перезапустите ОС. HDMI отобразит установленное разрешение.
Ширина и высота Framebuffer (How to modify the width and height of Framebuffer)
1) В файле /boot/orangepiEnv.txt ОС Linux есть две переменные fb0_width и fb0_height, которые можно использовать для установки ширины и высоты фреймбуфера.
В ОС Linux по умолчанию используется fb0_width = 1280, fb0_height = 720.
root@orangepi:~# cat /boot/orangepiEnv.txt verbosity=1 console=both disp_mode=720p60 fb0_width=1280 fb0_height=720
2) Рекомендуемые значения fb0_width и fb0_height, соответствующие разным разрешениям :
HDMI resolution fb0_width fb0_height 480p 720 480 576p 720 576 720p 1280 720 1080p 1920 1080
3) При одинаковом разрешении HDMI отображение разных fb0_width и fb0_height выглядит следующим образом:
Разрешение HDMI — 1080p60, fb0_width и fb0_height — 1920×1080
Разрешение HDMI — 1080p60, fb0_width и fb0_height — 1280×720
Настройки видеовыхода в SCRIPT.BIN
- Для установки аппаратных настроек Orange Pi используется файл Script.bin. Дополнительные сведения об этом файле.
- Поэтому для изменения разрешения видеовыхода необходимо изменить Script.bin.
- Для некоторых дистрибутивов, таких как Armbian, были реализованы и представлены инструменты, связанные с внесением изменений в конфигурацию оборудования простым и автоматическим способом, таким как скрипт h3disp (который позволяет изменять разрешение видеовыхода) этот инструмент автоматически обновляет файл script.bin, поэтомуо пользователь может не знать параметры .fex. Однако это очень полезно, если мы ставим Armbian, а если устанавливаем другой дистрибутив, то скрипта такого нет, и поэтому нам придется прибегнуть к модификации script.bin вручную.
Часть интересующего нас файла script.bin, соответствующая конфигурации экрана, находится в разделе [disp_init] , сначала мы рассмотрим каждый из его параметров:
[Disp_init] disp_init_enable = 1; Выход видео на экран включен disp_mode = 0; Использовать только конфигурацию для экрана "screen0" screen0_output_type = 3; Выход Screen 0: HDMI screen0_output_mode = 5; Разрешение и частота Screen 0: 720p60 screen1_output_type = 3; Выход Screen 1: HDMI (не используется) screen1_output_mode = 10; Разрешение и частота Screen 1: 1080p60 (не используется) fb0_format = 0; Формат видеоэкрана Screen 0 fb0_width = 0; Ширина видеоэкрана Screen 0 fb0_height = 0; Высота видеоэкрана Screen 0 fb1_format = 0; Формат видеоэкрана Screen 1 fb1_width = 0; Ширина видеоэкрана Screen1 fb1_height = 0; Высота видеоэкрана Screen1
Вся необходимая информация о значениях файла FEX находится на этом сайте . Я объясню вам это ниже:
- disp_init_enable: Включить / отключить использование экрана (видеовыход). Как вы можете видеть в предыдущей конфигурации, она включена. 0 для отключения; 1 для включения
- disp_mode: Устанавливает используемые параметры отображения. Может принимать следующие значения от 0 до 4.
0 — соответствует конфигурации экрана screen0
1 — соответствует конфигурации экрана screen1
2 — dualhead (screen0, screen1, fb0, fb1) (2 экрана, 2 видео-буфера)
3 — xinerama (screen0, screen1, fb0) (2 экрана, один большой видео-буфер)
4 — clone (screen0, screen1, fb0) (2 экрана, один стандартный видео-буфер)(он показывает то же самое на обоих экранах)
В предыдущей конфигурации включен режим экрана 0, который использует настройки screen0 и поэтому учитывает только значения следующих строк screen0_output_ и fb0_. - screenN_output_type: Устанавливает тип устройства вывода видео (тип отображения). Он может принимать значения от 0 до 4: любой дисплей, ЖК-дисплея, телевизора, HDMI или VGA , соответственно.
- screenN_output_mode: устанавливает режим вывода видео . Для типа дисплея HDMI / VGA это значение устанавливает разрешение выходного видеосигнала со значениями от 0 до 10 , в то время как для типа телевизионного экрана устанавливает видеосигнал в PAL или NTCS со значениями 11 или 14 соответственно.
- fbN_format / ширина / высота: Устанавливает формат пикселей, на ширину и высоту видео буфера (буфер кадра), соответствующий экрану screenN. Значение 0 означает, что эти значения соответствуют выбранному разрешению экрана.
Пример: Установить разрешение 1080P60
Если мы используем дистрибутив Armbian, который настроен по умолчанию с разрешением экрана 720p60, и мы хотим настроить его на максимальное разрешение, поддерживаемое нашим экраном 1080p60, то легко с помощью скрипта h3disp и командой:
sudo h3disp -m 1080p60
А если скрипта h3disp нет то необходимо делать всё вручную:
1 — Создаем резервный файл в случае возникновения ошибки:
sudo cp /boot/script.bin /boot/script.bak
2 — Делаем преобразование двоичного файла bin в формат fex редактируемого текста:
sudo bin2fex /boot/script.bin /boot/script.fex
3 — Редактируем файл fex:
sudo nano /boot/script.fex
Анализируя установленные значения по умолчанию, имеем конфигурацию экрана screen0 ( disp_mode = 0 ), и она настроена как HDMI 720p ( screen0_output_type = 3 и screen0_output_mode = 5 ), экран screen1 не используется, но его значения такие же, как на экране screen0:
[disp_init] disp_init_enable = 1; Выход видео на экран разрешен disp_mode = 0; Использовать только конфигурацию для экрана "screen0" screen0_output_type = 3; Выход Screen 0: HDMI screen0_output_mode = 5; Разрешение и частота Screen 0: 720p60 screen1_output_type = 3; Выход Screen1: HDMI (не используется) screen1_output_mode = 5; Разрешение и частота Screen1: 720p60 (не используется)
Единственная модификация, которую нужно внести в файл, — это изменить строку «screen0_output_mode = 5» и установить значение режима 10 (разрешение 1080p60):
screen0_output_mode = 10; Разрешение и частота Screen 0: 1080p60
Раздел disp_init файла должен выглядеть так:
[disp_init] disp_init_enable = 1; Выход видео на экран разрешен disp_mode = 0; Использовать только конфигурацию для экрана "screen0" screen0_output_type = 3; Выход Screen 0: HDMI screen0_output_mode = 10; Разрешение и частота Screen 0: 1080p60 screen1_output_type = 3; Выход Screen 1: HDMI (не используется) screen1_output_mode = 5; Разрешение и частота Screen 1: 720p60 (не используется)
4 — Закройте файл, сохранив его с таким же именем:
Ctrl X, Y (Yes), Enter
5 — Преобразовать отредактированный файл fex в двоичный формат:
sudo fex2bin /boot/script.fex /boot/script.bin
6 — Перезапускаем систему, чтобы изменения вступили в силу:
sudo reboot
Друзья,есть апельсинкп plus 2e,armbian,подключил к монитору с dvi входом,все отлично.но иногда смотрю фильмы на тв с hdmi ,соответственно приходиться постоянно менять script.bin и перезагружаться. Можно ли как то переключаться между dvi hdmi без лишник насилий над железкой? Спасибо
Может попробовать такие штуки как делитель и конвертер в vga. Тогда отпадет сразу две вещи: менять файл script и не надо перетыкать кабель.
Спасибо,разветвитель конечно нужен. Но конвертер,ищу более интеллигентное решение) для чего эта опция-dualhead? Для двух мониторов с разными режимами…
Через dualhead можно попытаться, вот нашел как люди делали Если получиться повторить то непременно сообщите, очень интересен такой способ подключения =)
В итоге заказал такой свитч
http://ali.pub/2d6rbc ,не знаю что он делает с сигналом,но и на ТВ с hdmi и на мониторе с dvi работает отлично,без применения h3disp. Без свитча нужно было постоянно утилитой менять режимы,иначе на тв шла зелень.
А можно ли таким образом задавать разрешения отличные от 16:9 или 4:3 ?
OrangePi+2E — многие говорят, что нельзя.
Какие разрешения нам предлагают, то только те и можно установить, в Armbian их достаточно много, у меня монитор 16:10 и я разрешение подобрал из имеющихся. А если есть умение ковырятся в исходниках, то я думаю там можно любое разрешение поставить и пересобрать систему, но это я так думаю, читал где-то давно как разрешение меняют на нестандартное. Очень тяжко.
Возможно ли, подобным способом установить разрешение 480i по HDMI на orange PI Prime с ОС Android?
И если возможно, то каким образом добраться на android до файла script.bin?
Спасибо.
В Android с изменением разрешения всё сложно, script.bin там меняется в исходниках как я понимаю, вот статью на форуме нашел, там меняют script.bin, можно попробовать. Я со своей апельсинкой такое не пробовал. Данный способ можно использовать частично в частности как отредактировать script.bin.