Change screen resolution permanently


#1

So I have installed Ubuntu (exactly VIM2_Ubuntu-mate-16.04_Linux-4.9_V171028 from FirmwareResources page).

The problem is that normally I don’t have access to 1080p monitor and I got error message on monitor about unsupported resolution.

I plugged the Khadas to other monitor supporting 1080p, I tried to change resolution, but on the Display settings the only option is 1080p.

I have tried to change the resolution by modyfying /sys/class/display/mode to 720p60hz.
The screen resolution is changed to 720p, but after a reboot this changes back to 1080p.

Is there a way to add other resolutions to Display Settings (like 720p,480p and possibly others), because now I’m not able to use Khadas on my own monitor.

Thanks a lot.


#2

Hi BonusBGC,

When you change the resolution to 720p60hz, dose it display OK ?

Try to add HDMI service to setup resolution via serial uart

Update khadas_init.sh

khadas@Khadas:~$ sudo tee /etc/initramfs-tools/scripts/local-top/khadas_init.sh <<-EOF
#!/bin/sh                                                                   

bpp=32

#mode=1080p60hz
mode=720p60hz

case \$mode in
       1080*)
       fbset -fb /dev/fb0 -g 1920 1080 1920 2160 \$bpp
       fbset -fb /dev/fb1 -g 32 32 32 32 32
       echo \$mode > /sys/class/display/mode
       echo 0 > /sys/class/graphics/fb0/free_scale
       echo 1 > /sys/class/graphics/fb0/freescale_mode
       echo 0 0 1919 1079 > /sys/class/graphics/fb0/free_scale_axis
       echo 0 0 1919 1079 > /sys/class/graphics/fb0/window_axis
       echo 0 > /sys/class/graphics/fb1/free_scale
       ;;
      *)
       fbset -fb /dev/fb0 -g 1280 720 1280 1440 \$bpp
       fbset -fb /dev/fb1 -g 32 32 32 32 32
       echo \$mode > /sys/class/display/mode
       echo 0 > /sys/class/graphics/fb0/free_scale
       echo 1 > /sys/class/graphics/fb0/freescale_mode
       echo 0 0 1279 719 > /sys/class/graphics/fb0/free_scale_axis
       echo 0 0 1279 719 > /sys/class/graphics/fb0/window_axis
       echo 0 > /sys/class/graphics/fb1/free_scale
       ;;
esac

# Enable framebuffer device
echo 0 > /sys/class/graphics/fb0/blank

# Blank fb1 to prevent static noise
echo 1 > /sys/class/graphics/fb1/blank

echo 0 > /sys/devices/virtual/graphics/fbcon/cursor_blink
EOF

Add executable permition to khadas_init.sh

khadas@Khadas:~$ sudo chmod +x /etc/initramfs-tools/scripts/local-top/khadas_init.sh

Recreate uInitrd

khadas@Khadas:~$ sudo mkinitramfs -o /boot/initrd.img 4.9.40
khadas@Khadas:~$ sudo mkimage -A arm64 -O linux -T ramdisk -a 0x0 -e 0x0 -n "initrd"  -d /boot/initrd.img  /boot/uInitrd
khadas@Khadas:~$ sudo sync

Add HDMI service

khadas@Khadas:~$ sudo tee /lib/systemd/system/0hdmi.service <<-EOF
[Unit]
Description=HDMI init
DefaultDependencies=no
Wants=rsyslog.service systemd-journald.service
Before=syslog.target sysinit.target
After=local-fs.target

[Service]
Type=oneshot
ExecStart=/boot/hdmi.sh
RemainAfterExit=no

[Install]
WantedBy=sysinit.target
EOF

Add HDMI service script

khadas@Khadas:~$ sudo tee /boot/hdmi.sh <<-EOF
#!/bin/sh

bpp=32

#mode=1080p60hz
mode=720p60hz

case \$mode in
       1080*)
       fbset -fb /dev/fb0 -g 1920 1080 1920 2160 \$bpp
       fbset -fb /dev/fb1 -g 32 32 32 32 32
       echo \$mode > /sys/class/display/mode
       echo 0 > /sys/class/graphics/fb0/free_scale
       echo 1 > /sys/class/graphics/fb0/freescale_mode
       echo 0 0 1919 1079 > /sys/class/graphics/fb0/free_scale_axis
       echo 0 0 1919 1079 > /sys/class/graphics/fb0/window_axis
       echo 0 > /sys/class/graphics/fb1/free_scale
       ;;
      *)
       fbset -fb /dev/fb0 -g 1280 720 1280 1440 \$bpp
       fbset -fb /dev/fb1 -g 32 32 32 32 32
       echo \$mode > /sys/class/display/mode
       echo 0 > /sys/class/graphics/fb0/free_scale
       echo 1 > /sys/class/graphics/fb0/freescale_mode
       echo 0 0 1279 719 > /sys/class/graphics/fb0/free_scale_axis
       echo 0 0 1279 719 > /sys/class/graphics/fb0/window_axis
       echo 0 > /sys/class/graphics/fb1/free_scale
       ;;
esac

# Enable framebuffer device
echo 0 > /sys/class/graphics/fb0/blank

# Blank fb1 to prevent static noise
echo 1 > /sys/class/graphics/fb1/blank

echo 0 > /sys/devices/virtual/graphics/fbcon/cursor_blink
EOF

Add executable permition to /boot/hdmi.sh

khadas@Khadas:~$ sudo chmod +x /boot/hdmi.sh
khadas@Khadas:~$ sudo systemctl enable 0hdmi
khadas@Khadas:~$ sudo sync
khadas@Khadas:~$ sudo reboot

You can modify mode in script /boot/hdmi.sh to change the resolution.

mode=720p60hz set resolution to 720P
mode=1080p60hz set resolution to 1080P

Thanks.