Ubuntu Mate 20.04 on RPi 4B: 3 different resolutions: pre-login/splash, login, and user. How to set each?

[I previously asked this at askubuntu.com, not thinking to look for Ubuntu Mate support first.]
I have installed Ubuntu Mate 20.04.1 on a Raspberry Pi 4 Model B 8GB.

I have the problem that hdmi_group=1 hdmi_mode=18 [576p] settings made in:
/boot/firmware/usercfg.txt
apply only to the splash screen, before the appearance of the login screen.
Q. Is that correct?

However, the login screen displays at 1080p.
Q. Where is that being set?

Finally, after logging in as any user, the screen displays at 720p.
Q. Where is that being set?

Thank you,
Oert

After some days of work I have been able to answer two of the three questions; I don't know if there are other solutions.

Q. Is the resolution of the splash/pre-login screen set in:
/boot/firmware/usercfg.txt
A. Yes. Using, for example, hdmi_group=1 [CEA] hdmi_mode=18 [576p]
[Note: edited post to clarify that usercfg.txt is the recommended location for changes like this.]

Q. How is the resolution of the login screen set?
A. [don't yet know]

Q. How is the resolution of the userscreen set?
One way appears to be to edit:
~/.config/monitors.xml
[I don't know if this file is created when the account is created or if it is created as a side effect of calling some application, like Control-Center->Display.]

I am building the RPi 4 as a desktop for an associate who specifically requested Ubuntu Mate with which he is already familiar.

I have as yet been unable to find a definitive answer to this question in any of ubuntuDOTorg, ubuntu-mateDOTorg, raspberrypiDOTorg, and now here ubuntu-mateDOTcommunity/c/support/raspberry-pi.

It feels a little like "Ubuntu Mate on Raspberry Pi 4" is something of a Twilight-Zone case. I plan to build a second iteration and will use Raspios for comparison, but meanwhile will try to bone up on logfiles to see if I can find clues for where things are done.

I found one way to set the login/unusually-named-greeter screen solution, with a crowbar.

The Raspberry Pi 4 Model B (RPi4B) uses "VideoCore" not nvidia graphics. As a result, the configuration file does nothing. As an experiment I edited (a copy of) it:

# Note: doing it this way preserves the orig. datestamp and shows "someone's been here"
# mv /usr/share/lightdm/lightdm.d/90-nvidia.conf /usr/share/lightdm/lightdm.d/90-nvidia.confORIG
# cp /usr/share/lightdm/lightdm.d/90-nvidia.confORIG /usr/share/lightdm/lightdm.d/90-nonvidia.conf
# vi /usr/share/lightdm/lightdm.d/90-nonvidia.conf
Edit:
display-setup-script=/etc/lightdm/myscript.sh # NOTE: a script not a command w/args

# vi /etc/lightdm/myscript.sh:
#!/bin/sh
xrandr --output <displayID> --mode 720x480 # changed to 1280x720 for production

Questions remain:

  • Is renaming files sufficient to prevent execution? (Could check /var/log/ for prime-*.log)
  • Is it okay to have a user script in /etc/lightdm/?

Hi, not sure if you figured out how to change resolution of login screen or not but I recently got this working myself so this may help you or others.

I found these 2 links as my starting point:

See post titled "Probable Cause"

See 6th answer that talks about editing/creating a file in the /usr/share/X11/xorg.conf.d directory

I wanted a lower resolution for the monitor I have connected to my pi 4B instead of 1920x1080 it chooses as default - was creating flickering/buzzing sometimes.

Anyway, I ran xrandr --q to see what modes were already on mine:

Screen 0: minimum 320 x 200, current 1280 x 720, maximum 7680 x 7680
HDMI-1 connected primary 1280x720+0+0 (normal left inverted right x axis y axis) 300mm x 260mm
1280x720 60.00*+ 59.94
1920x1080 60.00 + 50.00 50.00
1680x1050 74.89 59.88
1400x1050 74.87 59.95
...

[Note that xrandr reports that my preferred and current setting is 1280x720 because I already changed it, but it was showing 1920x1080 as the preferred when I first ran it]

It was defaulting to 1920x1080 but I wanted 1280x720 so I created a file I called 55-preferred-login-res.conf and put it in the directory /usr/share/X11/xorg.conf.d like the 2nd example I included above had. The contents of that file is:

Section "Monitor"
    Identifier "HDMI-1"
    Option "PreferredMode" "1280x720"
EndSection

$ sudo cp 55-preferred-login-res.conf /usr/share/X11/xorg.conf.d

After shutting down my raspberry pi and starting up again, it starts at 1280x720 resolution, so that worked for me.

Peace.