C4 Color Range 문의

Post Reply
heavyman
Posts: 41
Joined: Thu Nov 24, 2016 1:18 pm
languages_spoken: korean
Has thanked: 0
Been thanked: 1 time
Contact:

C4 Color Range 문의

Post by heavyman »

MIPI LCD를 MIPI to HDMI board에 연결하여 ODROID-C4에 연결해서 사용합니다.
White가 White로 안나오고 Black이 Black으로 안나오는 문제가 있어 Color Range가 달라서 발생하는 것으로 추정하고 있습니다.
일반 Monitor를 C4에 연결하여 Monitor의 OSD 메뉴에서 확인해보니 C4에서 Limited RGB로 내보내고 있는 것으로 보입니다.
C4에서 Full RGB로 출력할 수 있는 방법이 있나요?
hdmitx=forcergb는 해봤는데 안됩니다.
OD는 ubuntu-20.04-4.9-mate-odroid-c4-hc4-20201214.img.xz 사용하고 있습니다.

User avatar
odroid
Site Admin
Posts: 36945
Joined: Fri Feb 22, 2013 11:14 pm
languages_spoken: English, Korean
ODROIDs: ODROID
Has thanked: 1598 times
Been thanked: 1072 times
Contact:

Re: C4 Color Range 문의

Post by odroid »

일반 Monitor에서도 Black/While 색상이 실제와 다르게 표시되나요?

heavyman
Posts: 41
Joined: Thu Nov 24, 2016 1:18 pm
languages_spoken: korean
Has thanked: 0
Been thanked: 1 time
Contact:

Re: C4 Color Range 문의

Post by heavyman »

일반 모니터에서는 제대로 표현됩니다.
일반 모니터를 연결한 뒤에 모니터의 OSD 메뉴에서 Input Color Format을 보면 YPbPr로 되어 있습니다.

User avatar
odroid
Site Admin
Posts: 36945
Joined: Fri Feb 22, 2013 11:14 pm
languages_spoken: English, Korean
ODROIDs: ODROID
Has thanked: 1598 times
Been thanked: 1072 times
Contact:

Re: C4 Color Range 문의

Post by odroid »

저희가 잘 모르는 분야의 문제인것 같습니다.

사용하시는 MIPI LCD 및 AD 보드의 사양서를 볼 수 있는 링크가 있을까요?

heavyman
Posts: 41
Joined: Thu Nov 24, 2016 1:18 pm
languages_spoken: korean
Has thanked: 0
Been thanked: 1 time
Contact:

Re: C4 Color Range 문의

Post by heavyman »

추가 정보가 늦었습니다.
ODROID보드의 적용 제품은 LCD를 사용한 3D Printer 입니다.
LCD의 백라이트 대신에 UV를 사용합니다.
그래서 LCD를 통과한 UV 양을 측정합니다.
White(255) 이미지 상태에서 UV 통과양이 C2를 연결했을 때는 3.43이 나오고, C4를 연결했을 때는 2.465가 나옵니다.
Black(0) 이미지 상태에서 UV 통과양은 C2를 연결했을 때는 0.017이 나오고, C4를 연결했을 때는 0.585가 나옵니다.

LCD를 C2에 연결했을 때는 아래와 같이 선명하게 나옵니다.
Image

LCD를 C4에 연결했을 때는 아래와 같이 노이즈가 낀 것처럼 나옵니다.
Image

LCD를 C2에 연결하고 boot.ini에서 forcergb를 끈 상태에서는 아래와 같이 나옵니다.
C4 처럼 노이즈가 끼지는 않고 forcergb를 켰을 때보다 밝게 나옵니다.
Image

C2의 boot.ini는 아래와 같습니다.

Code: Select all

ODROIDC2-UBOOT-CONFIG

setenv display_autodetect "true"

setenv hdmi_forcergb "1"        # Enabled

setenv m_bpp "32"

setenv hpd "true"

setenv monitor_onoff "false" # true or false

setenv nographics "0"

setenv mesontimer "1"

setenv disableuhs "false"

setenv mmc_removable "true"

setenv usbmulticam "false"

setenv disable_vu7 "true"

setenv condev "console=ttyS0,115200n8 console=tty0"   # on both

setenv maxcpus "4"

setenv max_freq "1536"  # 1.536GHz

###########################################

# Boot Arguments
if test "${display_autodetect}" = "true"; then usb pwren; hdmitx edid; fi
if test "${m}" = "custombuilt"; then setenv cmode "modeline=${modeline}"; fi
if test "${disable_vu7}" = "false"; then setenv hid_quirks "usbhid.quirks=0x0eef:0x0005:0x0004"; fi
if test "${hdmi_forcergb}" = "1"; then setenv hdmitx "hdmitx=forcergb"; fi

setenv bootargs "root=UUID=e139ce78-9841-40fe-8823-96a304a09859 rootwait ro ${condev} no_console_suspend hdmimode=${m} ${cmode} ${hdmitx} m_bpp=${m_bpp} vout=${vout} fsck.repair=yes net.ifnames=0 elevator=noop disablehpd=${hpd} max_freq=${max_freq} maxcpus=${maxcpus} monitor_onoff=${monitor_onoff} disableuhs=${disableuhs} mmc_removable=${mmc_removable} usbmulticam=${usbmulticam} ${hid_quirks}"

# Booting

setenv loadaddr "0x11000000"
setenv dtb_loadaddr "0x1000000"
setenv initrd_loadaddr "0x13000000"

fatload mmc 0:1 ${initrd_loadaddr} uInitrd
fatload mmc 0:1 ${loadaddr} Image
fatload mmc 0:1 ${dtb_loadaddr} meson64_odroidc2.dtb
fdt addr ${dtb_loadaddr}

if test "${mesontimer}" = "0"; then fdt rm /meson_timer; fdt rm /cpus/cpu@0/timer; fdt rm /cpus/cpu@1/timer; fdt rm /cpus/cpu@2/timer; fdt rm /cpus/cpu@3/timer; fi
if test "${mesontimer}" = "1"; then fdt rm /timer; fi

if test "${nographics}" = "1"; then fdt rm /reserved-memory; fdt rm /aocec; fi
if test "${nographics}" = "1"; then fdt rm /meson-fb; fdt rm /amhdmitx; fdt rm /picdec; fdt rm /ppmgr; fi
if test "${nographics}" = "1"; then fdt rm /meson-vout; fdt rm /mesonstream; fdt rm /meson-fb; fi
if test "${nographics}" = "1"; then fdt rm /deinterlace; fdt rm /codec_mm; fi

booti ${loadaddr} ${initrd_loadaddr} ${dtb_loadaddr}
C4의 boot.ini는 아래와 같습니다.

Code: Select all

ODROIDC4-UBOOT-CONFIG

setenv bootlabel "Hardkernel Ubuntu 20.04"

setenv board "odroidc4"
setenv display_autodetect "true"
setenv hdmimode "1080p60hz"
setenv monitor_onoff "false" # true or false
setenv overscan "100"
setenv sdrmode "auto" 
setenv voutmode "hdmi"
setenv disablehpd "false"
setenv cec "true"
setenv disable_vu7 "true"
setenv max_freq_a55 "1908"    # 1.908 GHz, default value
setenv maxcpus "4"
setenv enable_wol "0"

setenv hdmi_forcergb "1"        # Enabled          


# Set load addresses
setenv dtb_loadaddr "0x10000000"
setenv dtbo_addr_r "0x11000000"
setenv k_addr "0x1100000"
setenv loadaddr "0x1B00000"
setenv initrd_loadaddr "0x3700000"

if test "${variant}" = "hc4"; then
       setenv max_freq_a55 "1800"
fi

load mmc ${devno}:1 ${loadaddr} config.ini \
    && ini generic ${loadaddr}
if test "x${overlay_profile}" != "x"; then
    ini overlay_${overlay_profile} ${loadaddr}
fi

setenv condev "console=ttyS0,115200n8"   # on both


### Normal HDMI Monitors
if test "${display_autodetect}" = "true"; then hdmitx edid; fi
if test "${hdmimode}" = "custombuilt"; then setenv cmode "modeline=${modeline}"; fi
if test "${cec}" = "true"; then setenv cec_enable "hdmitx=cec3f"; fi
if test "${disable_vu7}" = "false"; then setenv hid_quirks "usbhid.quirks=0x0eef:0x0005:0x0004"; fi


# Boot Args
setenv bootargs "root=UUID=e139ce78-9841-40fe-8823-96a304a09859 rootwait rw ${condev} ${amlogic} no_console_suspend fsck.repair=yes net.ifnames=0 elevator=noop hdmimode=${hdmimode} cvbsmode=576cvbs max_freq_a55=${max_freq_a55} maxcpus=${maxcpus} voutmode=${voutmode} ${cmode} disablehpd=${disablehpd} cvbscable=${cvbscable} overscan=${overscan} ${hid_quirks} monitor_onoff=${monitor_onoff} logo=osd0,loaded ${cec_enable} sdrmode=${sdrmode} enable_wol=${enable_wol}"

# Load kernel, dtb and initrd
load mmc ${devno}:1 ${k_addr} Image.gz
load mmc ${devno}:1 ${dtb_loadaddr} amlogic/meson64_odroid${variant}.dtb
load mmc ${devno}:1 ${initrd_loadaddr} uInitrd
fdt addr ${dtb_loadaddr}

if test "x{overlays}" != "x"; then
    fdt resize ${overlay_resize}
    for overlay in ${overlays}; do
        load mmc ${devno}:1 ${dtbo_addr_r} amlogic/overlays/${board}/${overlay}.dtbo \
            && fdt apply ${dtbo_addr_r}
    done
fi

# unzip the kernel
unzip ${k_addr} ${loadaddr}

# boot
booti ${loadaddr} ${initrd_loadaddr} ${dtb_loadaddr}
C2, C4 모두 detect된 modeline은 아래와 동일합니다.

Code: Select all

modeline=1080,1920,121710,99599,50,1080,1156,1166,1222,1920,1970,1972,1992,0,0,1
C2의 OS 버전은

Code: Select all

Linux odroid64-ram600 3.16.63+ #1 SMP PREEMPT Tue Apr 9 11:18:28 UTC 2019 aarch64 aarch64 aarch64 GNU/Linux
C4의 OS 버전은

Code: Select all

Linux odroidc4 4.9.236+ #1 SMP PREEMPT Tue Dec 22 18:41:19 UTC 2020 aarch64 aarch64 aarch64 GNU/Linux
AD 보드는
https://www.digitalview.com/controllers ... oller.html

LCD는
https://drive.google.com/file/d/1YD1bFU ... sp=sharing

joy
Posts: 1544
Joined: Fri Oct 02, 2015 1:44 pm
languages_spoken: english
ODROIDs: ODROID-C1+, XU4, X
Has thanked: 170 times
Been thanked: 207 times
Contact:

Re: C4 Color Range 문의

Post by joy »

안녕하세요.

C4에 현재 hdmitx=forcergb 기능이 없는 것으로 보입니다.
좀 더 상세하게 내용을 확인하고 기능을 확인한 후, 진행사항을 공유해 드리겠습니다.
이 후, C4에서도 원하시는 화면이 나오는지 다시 테스트를 부탁 드리겠습니다.

joy
Posts: 1544
Joined: Fri Oct 02, 2015 1:44 pm
languages_spoken: english
ODROIDs: ODROID-C1+, XU4, X
Has thanked: 170 times
Been thanked: 207 times
Contact:

Re: C4 Color Range 문의

Post by joy »

안녕하세요.

C4에 hdmi color space를 강제로 RGB444로 설정할 수 있는 기능을 추가하였습니다.

정식 버전에 포함하기 전에 테스트 커널 이미지를 공유해 드리오니, 시간이 괜찮으실 때 테스트를 해봐 주시겠습니까?

1. 테스트 Image.gz 다운로드
아래 링크에서 Image.gz를 받으실 수 있습니다.
https://drive.google.com/drive/folders/ ... sp=sharing

2. 기존 Image.gz 백업 후, 테스트용 Image.gz 복사
카드의 BOOT 폴더에 있는 기존 Image.gz을 따로 백업해 두시고,
이 후 테스트용 Image.gz를 BOOT 폴더에 복사해 주세요.

3. boot.ini에 아래 라인 추가
BOOT 폴더에 있는 boot.ini에 아래 라인을 추가.

Code: Select all

# Boot Args
setenv bootargs "root=UUID=e139ce78-9841-40fe-8823-96a304a09859 rootwait rw ${condev} ${amlogic} no_console_suspend
 fsck.repair=yes net.ifnames=0 elevator=noop hdmimode=${hdmimode} cvbsmode=576cvbs max_freq_a55=${max_freq_a55} max
cpus=${maxcpus} voutmode=${voutmode} ${cmode} disablehpd=${disablehpd} cvbscable=${cvbscable} overscan=${overscan} 
${hid_quirks} monitor_onoff=${monitor_onoff} logo=osd0,loaded ${cec_enable} sdrmode=${sdrmode} enable_wol=${enable_
wol}"

### Boot Args 아래 부분에 추가
setenv bootargs ${bootargs} hdmitx=forcergb
4. 재부팅 후 테스트
참고로, 커널 이미지만 공유해 드렸기 때문에 모듈 드라이버들은 정상적으로 동작하지 않을 것입니다.
USB WIFI 등 기타 동작은 안될 수 있으므로 이 테스트 이미지는 forcergb 테스트용으로만 사용하세요.

이상입니다.

color space가 YUV444 default에서 RGB444로 변경된 것은 아래 sysfs node에서 확인하였습니다만,
저희 쪽에 RGB only로 동작하는 모니터가 없어서 사용하고 계신 모니터에서 어떻게 동작하는지 확인해주시면 도움이 될 것 같습니다.

forcergb 적용 전/후에 변경 내용은 아래 sysfs에서 확인 가능합니다.
ssh connection이나 desktop 화면 terminal을 사용하시면 됩니다.

1. forcergb 적용 전
cs = 0

Code: Select all

root@odroid:~# cat /sys/class/amhdmitx/amhdmitx0/config 
cur_VIC: 116
cur_video_param->VIC=116
cd = 4
cs = 0
audio config: on
audio on/off: on
audio source: SPDIF
audio type: L-PCM
audio channel num: 2 channels
audio sample rate: 44.1kHz
audio sample size: 16bit
3D config: off

2. forcergb 적용 후
cs = 2

Code: Select all

root@odroid:~# cat /sys/class/amhdmitx/amhdmitx0/config 
cur_VIC: 116
cur_video_param->VIC=116
cd = 4
cs = 2
audio config: on
audio on/off: on
audio source: SPDIF
audio type: L-PCM
audio channel num: 2 channels
audio sample rate: 44.1kHz
audio sample size: 16bit
3D config: off

heavyman
Posts: 41
Joined: Thu Nov 24, 2016 1:18 pm
languages_spoken: korean
Has thanked: 0
Been thanked: 1 time
Contact:

Re: C4 Color Range 문의

Post by heavyman »

테스트 해보았지만 결과는 동일합니다.
Image

/sys/class/amhdmitx/amhdmitx0/config의 cs값이 제가 테스트하는 보드에서는 forcergb 적용 전이 2이고 적용 후가 0으로 나옵니다.
dmesg에서 kernel command line은

Code: Select all

[    0.000000] Kernel command line: root=UUID=e139ce78-9841-40fe-8823-96a304a09859 rootwait rw console=ttyS0,115200n8 no_console_suspend fsck.repair=yes net.ifnames=0 elevator=noop hdmimode=custombuilt cvbsmode=576cvbs max_freq_a55=1908 maxcpus=4 voutmode=hdmi modeline=1080,1920,121710,99599,50,1080,1156,1166,1222,1920,1970,1972,1992,0,0,1 disablehpd=false cvbscable= overscan=100 monitor_onoff=false logo=osd0,loaded hdmitx=cec3f sdrmode=auto enable_wol=0 hdmitx=forcergb
와 같습니다.

joy
Posts: 1544
Joined: Fri Oct 02, 2015 1:44 pm
languages_spoken: english
ODROIDs: ODROID-C1+, XU4, X
Has thanked: 170 times
Been thanked: 207 times
Contact:

Re: C4 Color Range 문의

Post by joy »

확인 감사합니다.

1080x1920 모드인 경우에만 발생하는 노이즈일수도 있을 것 같습니다.
해당 해상도로 문제를 재현해보고 다시 내용 공유해드리겠습니다.

heavyman
Posts: 41
Joined: Thu Nov 24, 2016 1:18 pm
languages_spoken: korean
Has thanked: 0
Been thanked: 1 time
Contact:

Re: C4 Color Range 문의

Post by heavyman »

올려주신 커널 이미지를 올려서 일반 모니터에 연결해서 Input Color Format을 봤을 때 여전히 YPbPr로 나옵니다.
Last edited by heavyman on Thu Feb 25, 2021 3:29 pm, edited 2 times in total.

joy
Posts: 1544
Joined: Fri Oct 02, 2015 1:44 pm
languages_spoken: english
ODROIDs: ODROID-C1+, XU4, X
Has thanked: 170 times
Been thanked: 207 times
Contact:

Re: C4 Color Range 문의

Post by joy »

heavyman wrote:
Thu Feb 25, 2021 3:10 pm
올려주신 커널 이미지를 올려서 일반 모니터에 연결해서 Input Color Format을 봤을 때 여전히 YPbPr로 나옵니다.
아. 그렇군요.
확인 감사합니다.
저희쪽에서 칩 내부 설정말고 실제로 출력 color format을 확인할 수 방법도 다시 찾아보겠습니다.

heavyman
Posts: 41
Joined: Thu Nov 24, 2016 1:18 pm
languages_spoken: korean
Has thanked: 0
Been thanked: 1 time
Contact:

Re: C4 Color Range 문의

Post by heavyman »

ODROID-C2에서 forcergb 옵션을 껐을 때는 일반 모니터에서 Input Color Format이 YPbPr로 잡히고 아래 사진의 표시한 부분과 같이 노이즈들이 떠다닙니다.
Image

ODROID-C2에서 forcergb 옵션을 켰을 때는 일반 모니터에서 Input Color Format이 RGB로 잡히고 노이즈가 없습니다.
Image

ODROID-C4에서는 올려주신 커널 이미지를 적용했을 때나 적용하지 않았을 때나 모두 일반 모니터에 연결했을 때 Input Color Format이 YPbPr로 나오고 작은 노이즈들이 떠다닙니다.

heavyman
Posts: 41
Joined: Thu Nov 24, 2016 1:18 pm
languages_spoken: korean
Has thanked: 0
Been thanked: 1 time
Contact:

Re: C4 Color Range 문의

Post by heavyman »

그리고 제가 테스트하고 있는 일반 모니터는 DELL의 1920x1200 해상도 모니터인데 C2에 연결하면 1920x1200으로 잡히는데 C4에 연결하면 1920x1080으로 잡히네요.

heavyman
Posts: 41
Joined: Thu Nov 24, 2016 1:18 pm
languages_spoken: korean
Has thanked: 0
Been thanked: 1 time
Contact:

Re: C4 Color Range 문의

Post by heavyman »

저희가 사용하고 있는 다른 종류의 1440x2560 LCD를 C2에 연결했을 때는 제대로 나와서 현재 제품에 사용하고 있습니다.

C2에서 forcergb 옵션을 켰을 때
Image

C2에서 forcergb 옵션을 껐을 때
Image

그런데 해당 LCD를 C4에 연결하면 화면이 계속 떨립니다.
https://drive.google.com/file/d/1CWIwZb ... sp=sharing

C2와 C4에서 modeline은 동일하게 아래와 같이 나옵니다.

Code: Select all

modeline=1440,2560,204790,128798,50,1440,1510,1545,1590,2560,2572,2574,2576,0,0,1

joy
Posts: 1544
Joined: Fri Oct 02, 2015 1:44 pm
languages_spoken: english
ODROIDs: ODROID-C1+, XU4, X
Has thanked: 170 times
Been thanked: 207 times
Contact:

Re: C4 Color Range 문의

Post by joy »

@heavyman,
상세한 테스트 내용 공유해주셔서 감사합니다.

관련 증상은 두 가지 문제점을 수정해야 하는 부분입니다.

(1) 1080x1920 portrait 비정상 화면
C2에서는 정상적으로 동작하는 일부 Portrait 해상도가 C4에서는 노이즈가 생기면서 화면이 좌우로 떨리는 증상이 있습니다.
저희쪽에서도 재현이 되는 문제이며 현재 가장 높은 우선 순위로 문제점 파악을 진행하고 있습니다.
알려주신 1440x2560 모드도 같이 확인하겠습니다.

(2) forcergb 기능 추가
이 부분 역시 C2와 동일하게 기능을 추가하겠습니다.

내용이 업데이트되는 대로 바로 공유해 드리겠습니다.

Post Reply

Return to “C4/HC4”

Who is online

Users browsing this forum: No registered users and 2 guests