Skip to content

fbcon switches external HDMI-A-1 from 3840x2160 to 2560x1440 on VT switch (TTY) #580

Description

@qabbalah

Machine: MacBook Pro 16" (M2 Max, 2023)
OS: Fedora 44 Asahi Remix
External monitor: LG 27us550-w
Connection: HDMI

The external display reports3840x2160@60as its preferred mode.

KDE Plasma runs correctly at 3840x2160.

However, in TTY, the monitor OSD will show an warning that say it is rendered at 2560x1440 instead. Text is clipped on the right and bottom edges of the screen.

video=HDMI-A-1:3840x2160@60 has no effect.
video=2560x1440 has no effect
Monitor overscan is disabled (Just Scan).

some debug info:
when i am in kde

journalctl -k | grep -i fbcon

 asahi kernel: fbcon: Deferring console take-over
 asahi kernel: fbcon: Deferring console take-over

when i switch to tty:

 asahi kernel: fbcon: Taking over console

i also captured the difference between /sys/kernel/debug/dri/2/state in KDE vs TTY: (both -u and -y version are pasted here, -y side by side at the bottom)

--- state-kde.txt	
+++ state-tty.txt	
@@ -1,6 +1,23 @@
 plane[35]: plane-0
-	crtc=(null)
-	fb=0
+	crtc=crtc-0
+	fb=61
+		allocated by = [fbcon]
+		refcount=3
+		format=XR24 little-endian (0x34325258)
+		modifier=0x0
+		size=3456x2160
+		layers:
+			size[0]=3456x2160
+			pitch[0]=13824
+			offset[0]=0
+			obj[0]:
+				name=0
+				refcount=3
+				start=00040000
+				size=29868032
+				imported=no
+				dma_addr=0x0000010ffe000000
+				vaddr=000000002476eb09
 	crtc-pos=3456x2160+0+0
 	src-pos=3456.000000x2160.000000+0.000000+0.000000
 	rotation=1
@@ -22,26 +39,26 @@
 	color-pipeline=0
 plane[48]: plane-2
 	crtc=crtc-1
-	fb=62
-		allocated by = kwin_wayland
-		refcount=2
-		format=AR30 little-endian (0x30335241)
+	fb=61
+		allocated by = [fbcon]
+		refcount=3
+		format=XR24 little-endian (0x34325258)
 		modifier=0x0
-		size=3840x2160
+		size=3456x2160
 		layers:
-			size[0]=3840x2160
-			pitch[0]=15360
+			size[0]=3456x2160
+			pitch[0]=13824
 			offset[0]=0
 			obj[0]:
 				name=0
-				refcount=2
-				start=000456bc
-				size=33177600
-				imported=yes
-				dma_addr=0x0000010ff8000000
-				vaddr=0000000000000000
-	crtc-pos=3840x2160+0+0
-	src-pos=3840.000000x2160.000000+0.000000+0.000000
+				refcount=3
+				start=00040000
+				size=29868032
+				imported=no
+				dma_addr=0x0000010ffe000000
+				vaddr=000000002476eb09
+	crtc-pos=2560x1440+0+0
+	src-pos=2560.000000x1440.000000+0.000000+0.000000
 	rotation=1
 	normalized-zpos=0
 	color-encoding=ITU-R BT.709 YCbCr
@@ -60,18 +77,18 @@
 	color_mgmt_changed=0
 	color-pipeline=0
 crtc[45]: crtc-0
-	enable=0
-	active=0
+	enable=1
+	active=1
 	self_refresh_active=0
 	planes_changed=1
-	mode_changed=1
-	active_changed=1
-	connectors_changed=1
-	color_mgmt_changed=0
-	plane_mask=0
-	connector_mask=0
-	encoder_mask=0
-	mode: "": 0 0 0 0 0 0 0 0 0 0 0x0 0x0
+	mode_changed=0
+	active_changed=0
+	connectors_changed=0
+	color_mgmt_changed=0
+	plane_mask=1
+	connector_mask=1
+	encoder_mask=1
+	mode: "3456x2160": 120 1042130 3456 3464 3496 3536 2160 2278 2360 2456 0x48 0x0
 	background_color=ffff000000000000
 crtc[58]: crtc-1
 	enable=1
@@ -85,10 +102,10 @@
 	plane_mask=4
 	connector_mask=2
 	encoder_mask=2
-	mode: "3840x2160": 60 594000 3840 4016 4104 4400 2160 2168 2178 2250 0x48 0x0
+	mode: "2560x1440": 60 241500 2560 2608 2640 2720 1440 1443 1448 1481 0x40 0x0
 	background_color=ffff000000000000
 connector[47]: eDP-1
-	crtc=(null)
+	crtc=crtc-0
 	self_refresh_aware=0
 	interlace_allowed=0
 	ycbcr_420_allowed=0

plane[35]: plane-0						plane[35]: plane-0
	crtc=(null)					      |		crtc=crtc-0
	fb=0						      |		fb=61
							      >			allocated by = [fbcon]
							      >			refcount=3
							      >			format=XR24 little-endian (0x34325258)
							      >			modifier=0x0
							      >			size=3456x2160
							      >			layers:
							      >				size[0]=3456x2160
							      >				pitch[0]=13824
							      >				offset[0]=0
							      >				obj[0]:
							      >					name=0
							      >					refcount=3
							      >					start=00040000
							      >					size=29868032
							      >					imported=no
							      >					dma_addr=0x0000010ffe000000
							      >					vaddr=000000002476eb09
	crtc-pos=3456x2160+0+0						crtc-pos=3456x2160+0+0
	src-pos=3456.000000x2160.000000+0.000000+0.000000		src-pos=3456.000000x2160.000000+0.000000+0.000000
	rotation=1							rotation=1
	normalized-zpos=0						normalized-zpos=0
	color-encoding=ITU-R BT.709 YCbCr				color-encoding=ITU-R BT.709 YCbCr
	color-range=YCbCr limited range					color-range=YCbCr limited range
	color_mgmt_changed=0						color_mgmt_changed=0
	color-pipeline=0						color-pipeline=0
plane[40]: plane-1						plane[40]: plane-1
	crtc=(null)							crtc=(null)
	fb=0								fb=0
	crtc-pos=0x0+0+0						crtc-pos=0x0+0+0
	src-pos=0.000000x0.000000+0.000000+0.000000			src-pos=0.000000x0.000000+0.000000+0.000000
	rotation=1							rotation=1
	normalized-zpos=1						normalized-zpos=1
	color-encoding=ITU-R BT.709 YCbCr				color-encoding=ITU-R BT.709 YCbCr
	color-range=YCbCr limited range					color-range=YCbCr limited range
	color_mgmt_changed=0						color_mgmt_changed=0
	color-pipeline=0						color-pipeline=0
plane[48]: plane-2						plane[48]: plane-2
	crtc=crtc-1							crtc=crtc-1
	fb=62						      |		fb=61
		allocated by = kwin_wayland		      |			allocated by = [fbcon]
		refcount=2				      |			refcount=3
		format=AR30 little-endian (0x30335241)	      |			format=XR24 little-endian (0x34325258)
		modifier=0x0							modifier=0x0
		size=3840x2160				      |			size=3456x2160
		layers:								layers:
			size[0]=3840x2160		      |				size[0]=3456x2160
			pitch[0]=15360			      |				pitch[0]=13824
			offset[0]=0							offset[0]=0
			obj[0]:								obj[0]:
				name=0								name=0
				refcount=2		      |					refcount=3
				start=000456bc		      |					start=00040000
				size=33177600		      |					size=29868032
				imported=yes		      |					imported=no
				dma_addr=0x0000010ff8000000   |					dma_addr=0x0000010ffe000000
				vaddr=0000000000000000	      |					vaddr=000000002476eb09
	crtc-pos=3840x2160+0+0				      |		crtc-pos=2560x1440+0+0
	src-pos=3840.000000x2160.000000+0.000000+0.000000     |		src-pos=2560.000000x1440.000000+0.000000+0.000000
	rotation=1							rotation=1
	normalized-zpos=0						normalized-zpos=0
	color-encoding=ITU-R BT.709 YCbCr				color-encoding=ITU-R BT.709 YCbCr
	color-range=YCbCr limited range					color-range=YCbCr limited range
	color_mgmt_changed=0						color_mgmt_changed=0
	color-pipeline=0						color-pipeline=0
plane[53]: plane-3						plane[53]: plane-3
	crtc=(null)							crtc=(null)
	fb=0								fb=0
	crtc-pos=0x0+0+0						crtc-pos=0x0+0+0
	src-pos=0.000000x0.000000+0.000000+0.000000			src-pos=0.000000x0.000000+0.000000+0.000000
	rotation=1							rotation=1
	normalized-zpos=1						normalized-zpos=1
	color-encoding=ITU-R BT.709 YCbCr				color-encoding=ITU-R BT.709 YCbCr
	color-range=YCbCr limited range					color-range=YCbCr limited range
	color_mgmt_changed=0						color_mgmt_changed=0
	color-pipeline=0						color-pipeline=0
crtc[45]: crtc-0						crtc[45]: crtc-0
	enable=0					      |		enable=1
	active=0					      |		active=1
	self_refresh_active=0						self_refresh_active=0
	planes_changed=1						planes_changed=1
	mode_changed=1					      |		mode_changed=0
	active_changed=1				      |		active_changed=0
	connectors_changed=1				      |		connectors_changed=0
	color_mgmt_changed=0				      |		color_mgmt_changed=0
	plane_mask=0					      |		plane_mask=1
	connector_mask=0				      |		connector_mask=1
	encoder_mask=0					      |		encoder_mask=1
	mode: "": 0 0 0 0 0 0 0 0 0 0 0x0 0x0		      |		mode: "3456x2160": 120 1042130 3456 3464 3496 3536 21
	background_color=ffff000000000000				background_color=ffff000000000000
crtc[58]: crtc-1						crtc[58]: crtc-1
	enable=1							enable=1
	active=1							active=1
	self_refresh_active=0						self_refresh_active=0
	planes_changed=1						planes_changed=1
	mode_changed=0							mode_changed=0
	active_changed=0						active_changed=0
	connectors_changed=0						connectors_changed=0
	color_mgmt_changed=0						color_mgmt_changed=0
	plane_mask=4							plane_mask=4
	connector_mask=2						connector_mask=2
	encoder_mask=2							encoder_mask=2
	mode: "3840x2160": 60 594000 3840 4016 4104 4400 2160 |		mode: "2560x1440": 60 241500 2560 2608 2640 2720 1440
	background_color=ffff000000000000				background_color=ffff000000000000
connector[47]: eDP-1						connector[47]: eDP-1
	crtc=(null)					      |		crtc=crtc-0
	self_refresh_aware=0						self_refresh_aware=0
	interlace_allowed=0						interlace_allowed=0
	ycbcr_420_allowed=0						ycbcr_420_allowed=0
	max_requested_bpc=0						max_requested_bpc=0
	colorspace=Default						colorspace=Default
connector[60]: HDMI-A-1						connector[60]: HDMI-A-1
	crtc=crtc-1							crtc=crtc-1
	self_refresh_aware=0						self_refresh_aware=0
	interlace_allowed=0						interlace_allowed=0
	ycbcr_420_allowed=0						ycbcr_420_allowed=0
	max_requested_bpc=0						max_requested_bpc=0
	colorspace=Default						colorspace=Default
	broadcast_rgb=Automatic						broadcast_rgb=Automatic
	is_limited_range=n						is_limited_range=n
	output_bpc=0							output_bpc=0
	output_format=RGB						output_format=RGB
	tmds_char_rate=0						tmds_char_rate=0

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions