Автор Тема: Orange PI PC TVout v2  (Прочитано 8413 раз)

Оффлайн Алексей Симаков

  • Новичок
  • *
  • Сообщений: 18
  • Карма: +1/-0
    • Просмотр профиля
Orange PI PC TVout v2
« : Январь 12, 2016, 11:09:42 am »
так. Буду краток. Настройка ТВ-выхода производится как описано в факах. Смотрите комментарии админа (tracert) выше.
Здесь совсем для тупых (как я, например) :))))
Система должна быть предварительно установлена и опробована в обычном HDMI режиме (чтобы было понятно, что проблема именно с настройкой конфигурационных
файлов, а не с тем, что система вообще не работает).
Шнурок, должен быть распаян и подготовлен. Для подключения к плате, я изуродовал гарнитуру от смартфона с джеком 3,5мм.
Обратите внимание, джек должен быть 4 контактный!!! 1контакт (он же "масса", или "земля") расположен непосредственно возле ручки джека, далее идут 3 контакта.
Считаем от общего (земляного)провода 1-TV, 2-звук, 3-звук. То есть выводы в самом конце джека -звуковые. А тот что ближе к массе, -это ТВ.
Про звук не спрашивайте, не проверял. Мне это было не важно. Эту сторону медали, буду грызть в другой раз.
Нам нужно скорректировать 2 файла.
На microSD карте, идем в раздел linux, каталог etc в этом каталоге ищем и модифицируем файл modules
Файл модифицируется под sudo в любом текстовом редакторе.

Здесь привожу полностью текст файла modules с включённым режимом ТВ

# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.

#For SATA Support
#sw_ahci_platform

##Display and GPU
##lcd
##hdmi
tv
#ump
##disp
#mali
##mali_drm
##8192cu
##8188eu
#8189es
#gpio-sunxi

Вы можете просто скопировать этот текст и вставить его в редактор, сохранив затем под именем modules, в каталоге etc, раздела linux вашей microSD карты.
А вообще, логика этого файла такова. Он указывает ядру, какие модули включать в загрузку. Строки начинающиеся символом решётки # -закомментированы. То есть
ядро будет эти записи игнорировать. А чтобы оно начало что-то загружать из этого списка, решётку перед параметром, нужно убрать. То есть раскомментировать параметр. Обратите внимание, строки ##lcd , ##hdmi, -начинаются с решёток, то есть ядро их грузить не будет. А вот строка tv -написана без решётки, значит при загрузке, ядро включит драйвер ТВ. Ещё раз повторюсь. Если вам сложно понять логику настроек файла, то просто скопируйте вышеприведенный текст и замените им текст вашего modules-файла. Если всё поняли, то нужно просто добавить после строк ##lcd,##hdmi, -строку tv , без символа решётки перед ней.
На этом настройка файла modules завершена.

Переходим к настройке файла script.fex

Это файл, который служит исходником для компиляции файла script.bin находящегося в загрузочном (ВООТ) разделе вашей microSD карты.
Для того чтобы начать работать со script.fex файлом нужно сделать вот что.

1- необходимо скачать следующие репозитории:
Для чего открываем терминал и вводим:

git clone git://github.com/linux-sunxi/sunxi-tools.git
git clone git://github.com/linux-sunxi/sunxi-boards.git

2. Зайдите (не забудьте, мы работаем в терминале!!!)в директорию sunxi-tools (по умолчанию, эта директория у меня находится в домашнем каталоге /home/alexey) и выполните в терминале команду

make fex2bin 

3. Скачайте script.fex файл для вашей модели OPi. (этот файл, должен находиться в той же директории sunxi-tools, поэтому откройте папку, куда у вас всё сохраняется из интернета, и перенесите этот файл в папку sunxi-tools)
4. Сделайте в редакторе необходимые изменения.

Теперь о том, что собственно нужно менять.
Я приведу ту часть, которая подвергается изменениям, для обеспечения работы ТВ выхода, поскольку весь файл большой и с непривычки в нём легко потеряться.
Итак. Фрагмент файла script.fex

;-----------------------------------------------------------------
;auto_hpd    -   1:need hotplud for hdmi/tv;  0:don't hotplud for lcd
;output_type -   0:none; 1:lcd; 2:tv; 4:hdmi; 8:vga (as default config in homlet)
;hdmi_channel-   the display channel for hdmi (as default config in homlet)
;cvbs_channel-   the display channel for cvbs (as default config in homlet)
;hdmi_mode   -   as default config for output of hdmi in homlet
;cvbs_mode   -   as default config for output of tv in homlet. 11:PAL; 14:NTSC
;check the definition(of hdmi/cvbs_mode) of disp_tv_mode in sunxi_display2.h
;hdmi_mode_check - disable/enable the function of checking hdmi mode, 0 is disable, 1 is enable
;-----------------------------------------------------------------
[boot_disp]
advert_disp     = 1
auto_hpd        = 1
output_type     = 2
hdmi_channel    = 0
hdmi_mode       = 4
cvbs_channel    = 1
cvbs_mode       = 14
output_full     = 1
hdmi_mode_check = 1

;----------------------------------------------------------------------------------
;disp init configuration
;
;disp_mode             (0:screen0<screen0,fb0>; 1:screen1<screen1,fb0>)
;screenx_output_type  (0:none; 1:lcd; 3:hdmi;)
;screenx_output_mode  (used for hdmi output, 0:480i 1:576i 2:480p 3:576p 4:720p50)
;                     (5:720p60 6:1080i50 7:1080i60 8:1080p24 9:1080p50 10:1080p60)
;fbx format           (0:ARGB 1:ABGR 2:RGBA 3:BGRA 5:RGB565 8:RGB888 12:ARGB4444 16:ARGB1555 18:RGBA5551)
;fbx_width,fbx_height (framebuffer horizontal/vertical pixels, fix to output resolution while equal 0)
;lcdx_backlight       (lcd init backlight,the range:[0,256],default:197
;----------------------------------------------------------------------------------
[disp_init]
disp_init_enable         = 1
disp_mode                = 1

screen0_output_type      = 3
screen0_output_mode      = 2

screen1_output_type      = 2
screen1_output_mode      = 14

fb0_format               = 1
fb0_width                = 0
fb0_height               = 0

fb1_format               = 0
fb1_width                = 0
fb1_height               = 0

;----------------------------------------------------------------------------------
;hdmi configuration
;----------------------------------------------------------------------------------
[hdmi_para]
hdmi_used           = 0
hdmi_power          = "vcc-hdmi-18"

[tv_para]
tv_used = 1
tv_dac_used = 1
tv_dac_src0 = 0

Идеология проста, вы можете просто скопировать данный кусок и заменить им аналогичный в вашем script.fex-файле.
Но лучше понять логику модификации параметров. Так вы сможете попробовать различные режимы. Поскольку то, что русскому хорошо,
-то немцу -смерть. Я про то, что телевизоры у всех разные и у кого-то мои настройки могут не "прокатить". Тогда потребуется
самостоятельно что-то подкорректировать. А для того, чтобы.... -нужно знать! Собственно поэтому.

Любые параметры могут принимать значения 0 или 1. Ноль -это параметр выключен, а 1 -параметр включен.
Кроме этого некоторые параметры могут принимать значения отличные от этих значений, поэтому рассмотрим подробнее эти параметры.
Смотрите фрагмент файла выше. Здесь я только поясняю. Всё что без пояснения оставляйте как есть, а где есть пояснения можете менять и
экспериментировать.

;-----------------------------------------------------------------
;auto_hpd    -   1:need hotplud for hdmi/tv;  0:don't hotplud for lcd
;output_type -   0:none; 1:lcd; 2:tv; 4:hdmi; 8:vga (as default config in homlet)
;hdmi_channel-   the display channel for hdmi (as default config in homlet)
;cvbs_channel-   the display channel for cvbs (as default config in homlet)
;hdmi_mode   -   as default config for output of hdmi in homlet
;cvbs_mode   -   as default config for output of tv in homlet. 11:PAL; 14:NTSC
;check the definition(of hdmi/cvbs_mode) of disp_tv_mode in sunxi_display2.h
;hdmi_mode_check - disable/enable the function of checking hdmi mode, 0 is disable, 1 is enable
;-----------------------------------------------------------------
[boot_disp]
advert_disp     = 1
auto_hpd        = 1
output_type     = 2  ;указание типа выхода 2 -это собственно ТВ выход. Если поставить 4 - то вывод будет на HDMI
hdmi_channel    = 0
hdmi_mode       = 4
cvbs_channel    = 1
cvbs_mode       = 14 ;ТВ формат PAL/NTSC  11-PAL, 14 NTSC вначале, у меня было выставлено 11, но картинка уходила за края экрана ТВ  <---------|
                     ;а после того как поставил в 14, то есть NTSC, всё заработало в пределах границ экрана ТВ.                                |
output_full     = 1                                                                                                                            |
hdmi_mode_check = 1                                                                                                                                                                                                                                                                       |
                                                                                                                                               |
                                                                                                                                               |

Следующая секция кода инициализация дисплея. Здесь указываются режимы разрешений для HDMI, а также включение/выключение ТВ/HDMI выхода         |
                                                                                                                                               |
;----------------------------------------------------------------------------------                                                            |
;disp init configuration                                                                                                                       |
;                                                                                                                                              |
;disp_mode             (0:screen0<screen0,fb0>; 1:screen1<screen1,fb0>)                                                                        |     
;screenx_output_type  (0:none; 1:lcd; 3:hdmi;)                                                                                                 |
;screenx_output_mode  (used for hdmi output, 0:480i 1:576i 2:480p 3:576p 4:720p50)                                                             |
;                     (5:720p60 6:1080i50 7:1080i60 8:1080p24 9:1080p50 10:1080p60)                                                            |
;fbx format           (0:ARGB 1:ABGR 2:RGBA 3:BGRA 5:RGB565 8:RGB888 12:ARGB4444 16:ARGB1555 18:RGBA5551)                                      |
;fbx_width,fbx_height (framebuffer horizontal/vertical pixels, fix to output resolution while equal 0)                                         |
;lcdx_backlight       (lcd init backlight,the range:[0,256],default:197                                                                        |
;----------------------------------------------------------------------------------                                                            |
[disp_init]                                                                                                                                    |
disp_init_enable         = 1                                                                                                                   |
disp_mode                = 1 ; здесь указывается тип используемого выхода для процессора H3, ТВ выход -это значение 1 в этом параметре         |   
                                                                                                                                               |
screen0_output_type      = 3                                                                                                                   |
screen0_output_mode      = 2                                                                                                                   |
                                                                                                                                               | 
screen1_output_type      = 2 ;изменения в этих строках относятся к ТВ выходу. 2-это ТВ выход                                                   |
screen1_output_mode      = 14;это те же самые PAL/NTSC. должно быть аналогично со значением cvbs_mode =14 из вышеприведённой секции кода >-----|

fb0_format               = 1 ;порядок формирования ТВ сигнала. Из-за неправильной установки, может нарушиться цветность, и будет сбой при входе
                             ;в систему. Поэтому поэкспериментируйте с этим параметром, у вас может быть иное значение. Первоначально у меня
                             ;был установлен "0", приветственное окно ubuntu.mate было красного цвета, вместо сине-зеленого, и был невозможен
                             ;вход в систему. После ввода пароля, всё обваливалось, и снова возникало окно ввода пароля. После замены этого
                             ;параметра на "1", всё нормализовалось.
fb0_width                = 0
fb0_height               = 0

fb1_format               = 0
fb1_width                = 0
fb1_height               = 0

Остальные строки интереса не представляют и их можно оставить в умолчаниях.
После внесения всех изменений, сохраните файл в папке sunxi-tools под именем script.fex

Теперь можно создать script.bin файл:

Открываем проводник файлов (графический режим) и терминал.
В терминале входим в каталог sunxi-tools
В проводнике также входим в каталог sunxi-tools он в вашем домашнем каталоге   "home/имя пользователя"  у меня тут:  "home/alexey".
Ищем файл под именем fex2bin и перетаскиваем его в окно терминала (иначе, в ручном режиме, у меня что-то не заработало).
В проводнике появится команда   '/home/alexey/sunxi-tools/fex2bin' убираем одинарные кавычки '  ' с обеих сторон строки и дописываем, чтобы получилось
так:  /home/alexey/sunxi-tools/fex2bin script.fex script.bin   
Вместо alexey -название вашей учетной записи, например dmitry, или andrey.
После чего нажимаете enter на клавиатуре. Будет скомпиллирован файл script.bin
Он будет лежать в папке sunxi-tools Смотрите внимательней!!! Файлов с именем script там много, но у них разные расширения. Нам нужен именно с расширением bin
Теперь в проводнике файлов, в графическом режиме, копируйте, или вырезайте этот файл и вставляйте его вместо аналогичного файла в каталоге BOOT вашей microSD карты.
После этого, вставляйте её в вашу апельсину и пробуйте результат.
Хочу сразу предупредить, что качество картинки в ТВ режиме не особенно высокое, но для просмотра фильмов вполне годится.
Заниматься же настройкой системы, особенно в графическом режиме, - сродни мазохизму, ибо некоторые окна невозможно ни переместить в нужное место, ни нажать на нужные клавиши в них. Но, в общем на любителя. Кстати, пробовал SDR радио принимать на ubuntu.mate на сайте RN3DKT. Вполне себе ничего. Картинку кажет, глюков нет. Сегодня попробую в обычном HDMI режиме со звуком попринимать.

За сим всё. Если что-то не получается не стесняйтесь спрашивать и экспериментировать.
« Последнее редактирование: Январь 12, 2016, 02:20:11 pm от warik »