Gnome 우분투에서 디스플레이가 1080만 됩니다

모니터 인식이 안돼서 그런걸까요?

안녕하세요.

현재 배포된 우분투는 wayland compositor 기반 입니다.

x11기반의 경우 해상도 조절이 가능한데 반해 wayland의 경우 해상도 설정이 안되는 단점이 있습니다.

아무래도 embedded system 기반이다 보니, 이런 저런 단점들이 존재하긴 합니다. ㅠㅠ

4k 모니터를 사용하려면 커널 빌드시, display 의 해상도를 4k로 조절하는 device tree 내 설정을 변경해야 합니다.

관련해서 설정하는 방법을 곧 공유드리도록 하겠습니다.

고맙습니다.

안녕하세요.

4K 모니터 설정을 위한 방법 공유 드립니다.

  1. 첫번째로 커널 arch/arm64/boot/dts/telechips/tcc805x/override/topst-d3-g-disp.dtsi를 아래와 같이 변경합니다.

  2. u-boot의 arch/arm64/boot/dts/telechips/tcc805x/override/topst-d3-g-disp.dtsi를 아래와 같이 변경합니다.

  3. u-boot의 arch/arm/dts/telechips/tcc805x/override/topst-d3-g-disp-target-config.dtsi를 아래와 같이 수정합니다.

  4. 4K 이미지의 fwdn을 위해 fwdn시 필요한 dram_param.bin 파일을 교체해야합니다. 아래와 같이 qos 관련 설정을 변경해야합니다.

이후 bitbake -C compile u-boot-topst, bitbake -C compile linux-topst로 빌드하여 이미지를 생성하시면 됩니다.

다만 우분투 이미지는 빌드법이 따로 공개가 되어있지 않기에 4K 우분투로 빌드된 fwdn파일들과 fai이미지 파일 공유 드립니다.

4K Ubuntu Image

단 공유드리는 이미지는 1번째 화면만 4K로 고정할당되어 사용할 수 있으며, 추가 3대의 모니터는 FHD로 동작합니다.

감사합니다 :slight_smile:

설명 감사합니다.

  • 4K 우분투 이미지 링크에 접근 권한이 없습니다.
  • 4K 우분투 이미지는 gnome 우분투인가요?
  • 적어주신 Yocto 관련 명령으로 이미지를 만들면 결과물이 D3G-TOPST-Yocto-image-v1.0.0 요런게 나오나요?
    • 제가 아직 Yocto를 한번도 해보지 않은 상태입니다.
  • 4K 우분투 이미지 링크에 접근 권한이 없습니다.
    → 권한은 다시 확인해보겠습니다. 확인 후 바로 답변 드리겠습니다.

  • 4K 우분투 이미지는 gnome 우분투인가요?
    → 네, 맞습니다. 사용하시고 계시던 Gnome 우분투 4K입니다.

  • 적어주신 Yocto 관련 명령으로 이미지를 만들면 결과물이 D3G-TOPST-Yocto-image-v1.0.0 요런게 나오나요?
    → 네, 맞습니다. 위 내용과 같이 빌드하게 되면, 우분투가 아닌 Yocto image가 생성됩니다.

추가적으로 4K를 사용하시려면, 사용하시는 모니터가 4K를 지원해야 동작이 가능합니다.

감사합니다.

이미지 공유 드립니다.

현재 gnome 우분투는 릴리즈 이전이기 때문에 채팅으로 다운로드 비밀번호 공유 드립니다.

d3g_4k_gnome_ubuntu-v1.0.0.zip

감사합니다.

fwdn.sh를 실행했는데 Segmentation fault가 나왔습니다.

제가 놓힌게 있을까요?

pyohwan@hp-elitedesk-705-g5-desktop-mini-debian12:~/topst-d3-g/d3g_4k_gnome_ubuntu-v1.0.0$ ./fwdn.sh 
[main:30] FWDN V8 v1.4.12 - 2022.8.19 13:49:14
[LoadFWDNRom:417] Start to load FWDN rom
[LoadMCERT:606] /home/pyohwan/topst-d3-g/d3g_4k_gnome_ubuntu-v1.0.0/boot-firmware/./prebuilt/mcert.bin
[LoadHSM:623] /home/pyohwan/topst-d3-g/d3g_4k_gnome_ubuntu-v1.0.0/boot-firmware/./prebuilt/hsm.cs.bin
[SendFWDNHeader:648] /home/pyohwan/topst-d3-g/d3g_4k_gnome_ubuntu-v1.0.0/boot-firmware/./prebuilt/fwdn.rom - Header
[SendFWDNBody_V8:551] /home/pyohwan/topst-d3-g/d3g_4k_gnome_ubuntu-v1.0.0/boot-firmware/./prebuilt/fwdn.rom - Body
[LoadFWDNRom:428] Complete to load FWDN rom
[GetFWDNRomVersion:1588] fwdn.rom version : 23.5.22
[GetFileAndWriteCommand:762] /home/pyohwan/topst-d3-g/d3g_4k_gnome_ubuntu-v1.0.0/boot-firmware/./prebuilt/dram_params.bin
[PrintDeviceInfo:1201] --------------Device info-------------
[PrintDeviceInfo:1202] 

----- Detail of Storages -----
#### eMMC Info ####
Manufacture ID: 0x15
OEM: 0x100
Name: BJTD4 
User Capacity: 29.1 GiB (31268536320 Byte)
Boot Capacity: 4 MiB (4194304 Byte)
RPMB Capacity: 4 MiB (4194304 Byte)
Speed Mode: HS200

----- Summary of Storages -----
eMMC : O
SNOR : X
UFS : X
- O : Init success
- X : Init failed or not exist

----- Summary of DRAM Init -----
DRAM Init : Success (Result 0x0 )
DRAM Size : 8192MB

[PrintDeviceInfo:1203] --------------------------------------
[CMDCommand:1412] Start CMD Command
[CMDCommand:1427] CMD Command - (�a), (size = 6)
[ReceiveFWDNPacket:224] Received Nack
[PrintUSBLog:203] MICOM : Received Commands: �a
Failed to initialize device

[CMDCommand:1439] Failed to receive response(0xf001)
[main:30] FWDN V8 v1.4.12 - 2022.8.19 13:49:14
[GetFWDNRomVersion:1588] fwdn.rom version : 23.5.22
[CMDCommand:1412] Start CMD Command
./fwdn.sh: line 4: 28215 Segmentation fault      ./fwdn --storage emmc --low-format
[main:30] FWDN V8 v1.4.12 - 2022.8.19 13:49:14
[GetFWDNRomVersion:1588] fwdn.rom version : 23.5.22
[CMDCommand:1412] Start CMD Command
./fwdn.sh: line 5: 28217 Segmentation fault      ./fwdn -w boot-firmware/boot.single.json
[main:30] FWDN V8 v1.4.12 - 2022.8.19 13:49:14
[GetFWDNRomVersion:1588] fwdn.rom version : 23.5.22
[CMDCommand:1412] Start CMD Command
[CMDCommand:1427] CMD Command - (�!k), (size = 6)
[ReceiveFWDNPacket:224] Received Nack
[PrintUSBLog:203] MICOM : Received Commands: �!k
Unknown cmd: �!k

[CMDCommand:1439] Failed to receive response(0xf001)

Windows에서만 확인해보고, Linux에서 확인을 해보지 못했습니다.

확인 후 답변 남기도록 하겠습니다.

감사합니다.

우선 공유드린 fai이미지 파일과 boot-firmware/prebuilt/dram_params.bin만 원래 사용하시던 폴더로 복붙하여 진행해주실 수 있으실까요?

확인해보니 스크립트 파일에서 각 줄마다 실행하는 ./fwdn 파일이 잘못되어있었습니다.
최신 버전의 fwdn파일이 아니라 예전 버전의 fwdn파일이어서 동작 실패가 발생했습니다.
정상작동하는 fwdn파일 전달 드립니다.

전달드렸던 fwdn파일 삭제 후 재전달드리는 fwdn파일로 대체하신 후 진행 부탁드립니다.
fwdn

번거롭게 해드려 죄송합니다.

감사합니다!!

감사합니다. 4K 디스플레이 되는것을 확인했습니다.

2K로 조절이 동적으로 조절이 안되는데 이는 wayland의 단점인가 보네요.

2k로 바꿀려면 커널 빌드를 또해야 하는거죠?

네, 맞습니다. 2K를 사용하기 위해선 커널을 2K로 설정하여 재빌드하여야합니다.

현재 디바이스트리에서 해상도를 고정하여 사용하고 있으므로 여러 해상도 지원이 불가합니다.

D3-G GNOME에서 다중 해상도 선택 가능하게 하기 (DTB 수정)

안녕하세요. D3-G에서 GNOME 디스플레이 설정에 1920x1080만 나오는 문제를 DTB 수정으로 해결했습니다.

원인 분석

D3-G의 Telechips DRM 드라이버는 HDMI EDID를 읽지 않고, DTB의 display-timings에 정의된 해상도만 사용합니다. 현재 DTB에 timing이 하나뿐이라 1080p만 나오는 것입니다.

DP 드라이버(telechips_drm_dp.c)의 tccdrm_dp_get_dev_node_modes 함수가 display-timings 내 모든 timing을 순회해서 모드 리스트에 추가하므로, DTB에 timing만 추가하면 GNOME에서 선택 가능해집니다.

수정 방법

kernel-src/arch/arm64/boot/dts/telechips/tcc805x/override/topst-d3-g-disp.dtsitccdrm_dp0 display-timings에 아래 timing을 추가합니다.

timing_drm_dp0_2k: 2560x1440p60@1 {
    clock-frequency = <241500000>;
    hactive = <2560>;
    vactive = <1440>;
    hfront-porch = <48>;
    hback-porch = <80>;
    hsync-len = <32>;
    hsync-active = <1>;
    vback-porch = <33>;
    vfront-porch = <3>;
    vsync-len = <5>;
    vsync-active = <1>;
    de-active = <1>;
    pixelclk-active = <1>;
};

timing_drm_dp0_4k30: 3840x2160p30@2 {
    clock-frequency = <297000000>;
    hactive = <3840>;
    vactive = <2160>;
    hfront-porch = <176>;
    hback-porch = <296>;
    hsync-len = <88>;
    hsync-active = <1>;
    vback-porch = <72>;
    vfront-porch = <8>;
    vsync-len = <10>;
    vsync-active = <1>;
    de-active = <1>;
    pixelclk-active = <1>;
};

timing_drm_dp0_4k60: 3840x2160p60@3 {
    clock-frequency = <594000000>;
    hactive = <3840>;
    vactive = <2160>;
    hfront-porch = <176>;
    hback-porch = <296>;
    hsync-len = <88>;
    hsync-active = <1>;
    vback-porch = <72>;
    vfront-porch = <8>;
    vsync-len = <10>;
    vsync-active = <1>;
    de-active = <1>;
    pixelclk-active = <1>;
};

DTB 빌드 및 적용

# 빌드
cd ~/kernel-src
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- dtbs

# 백업 (필수)
sudo dd if=/dev/mmcblk0p3 of=/mnt/ssd/mmcblk0p3_backup.img bs=4096

# 적용
sudo dd if=arch/arm64/boot/dts/telechips/tcc805x/tcc8050-topst-d3-g.dtb of=/dev/mmcblk0p3 bs=4096

# 재부팅
sudo reboot

D3-G는 DTB가 별도 파티션(mmcblk0p3)에 단독으로 저장됩니다. 백업 후 진행하면 복구도 가능합니다.

결과

재부팅 후 아래와 같이 4개 해상도가 노출됩니다:

$ cat /sys/class/drm/card0/card0-DP-1/modes
1920x1080
2560x1440
3840x2160
3840x2160

4K 사용 시 주의사항

4K(3840x2160)로 설정하면 화면이 지지직거리는 현상이 발생합니다. dmesg에서 아래 에러가 반복됩니다:

[  121.812112] tccdrm-vioc tcc-drm-lcd: [drm:lcd_irq_handler] *ERROR* FIFO UNDERRUN
[  121.912114] tccdrm-vioc tcc-drm-lcd: [drm:lcd_irq_handler] *ERROR* FIFO UNDERRUN
[  122.478774] tccdrm-vioc tcc-drm-lcd: [drm:lcd_irq_handler] *ERROR* FIFO UNDERRUN

su.nam 님 댓글을 보니 dram_param.py QoS 설정 변경과 VIC 코드 수정이 필요한 것 같은데, 저는 Yocto 빌드 환경이 없습니다. @su.nam 님, Yocto 없이 QoS 설정을 적용할 수 있는 방법이 있을까요?

현재 안정적으로 사용 가능한 해상도: 2560x1440

fractional scaling 사용하려면:

gsettings set org.gnome.mutter experimental-features "['scale-monitor-framebuffer']"
3 Likes

안녕하세요, 생글이님.

알려주신 내용으로 2K, 720p. Ubuntu에서 4K 해상도까지 정상 동작 확인했습니다.
fwdn시 boot.single.json파일을 emmc에 write하는데요, 이 때 write되는 dram_params.bin파일을 qos가 enable된 bin파일로 바꿔주셔야합니다.
기존 fwdn하시던 파일(우분투 fai이미지가 있는파일)에서 boot-firmware/prebuilt/ 경로에 있는 dram_params.bin을 dram_params.bin 파일로 대체 부탁드립니다.
이후 cmd에서 fwdn.exe파일이 있는 경로로 이동해주신 후, 아래 명령어 사용해주시면 됩니다.

.\fwdn.exe --fwdn boot-firmware\fwdn.json --write boot-firmware\boot.si
ngle.json

fwdn 완료 후 재부팅 뒤 4K해상도 변경 확인해주시면 되겠습니다.

감사합니다.