You are not logged in.

#1 2022-06-30 20:14:27

ei
Member
Registered: 2020-07-16
Posts: 9

Fake underscan with X / xrandr?

I have an old NTSC CRT TV. I'm trying to use it as a second monitor, but the TV overscans and cuts off the outer extremities of the screen.

In my search, I found this chain of troubleshooting steps:

  • Adjust the TV's built-in geometry settings

  • Use an `xrandr` option such as `--set underscan on`

  • Use `--transform` to shrink the screen to fit on the monitor

  • Restrict the frame buffer using `--fb`

This TV is very old, and it does not have any geometry settings. Any fix would have to be handled by my computer, not by the TV.

I'm using an HDMI to RCA-composite to coaxial composite adapter set. Under `xrandr --props`, there is no underscan/overscan option. Here is the relevant section:

HDMI-1 connected 1280x720+0+0 (normal left inverted right x axis y axis) 1039mm x 584mm
	EDID: 
		00ffffffffffff0021573618bde90200
		251d010380351d7822ee91a3544c9926
		0f5054210f0081008140818090409500
		0101a940b300011d007251d01e206e28
		55000f484200001e0e1f008051001e30
		408037000f484200001c000000100000
		000000000000000000000000000000fc
		004d4143524f53494c49434f4e0a0119
		020334f152021113841f100312061507
		1605145e5f636423097f07830100006e
		030c001000003c20008001020304e50e
		61606566662150b051001b3040703600
		0f484200001e662156aa51001e30468f
		33000f484200001e8c0ad08a20e02d10
		103e9600100900000018000000000000
		000000000000000000000000000000b2
	max bpc: 12 
		range: (8, 12)
	content type: No Data 
		supported: No Data, Graphics, Photo, Cinema, Game
	Colorspace: Default 
		supported: Default, SMPTE_170M_YCC, BT709_YCC, XVYCC_601, XVYCC_709, SYCC_601, opYCC_601, opRGB, BT2020_CYCC, BT2020_RGB, BT2020_YCC, DCI-P3_RGB_D65, DCI-P3_RGB_Theater
	aspect ratio: Automatic 
		supported: Automatic, 4:3, 16:9
	Broadcast RGB: Automatic 
		supported: Automatic, Full, Limited 16:235
	audio: auto 
		supported: force-dvi, off, auto, on
	link-status: Good 
		supported: Good, Bad
	CTM: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 
		0 1 
	CONNECTOR_ID: 83 
		supported: 83
	non-desktop: 0 
		range: (0, 1)
   1280x720      60.00 +  50.00    59.94  
   1920x1080     60.00    50.00    59.94  
   1920x1080i    60.00    50.00    59.94  
   1600x1200     60.00  
   1680x1050     59.88  
   1400x1050     59.95  
   1280x1024     75.02    60.02  
   1440x900      59.90  
   1280x960      60.00  
   1366x768      59.79  
   1360x768      60.02  
   1280x800      59.91  
   1280x768      59.87  
   1024x768      75.03    70.07    60.00  
   800x600       60.32  
   720x576       50.00  
   720x576i      50.00  
   720x480       60.00    59.94  
   720x480i      60.00    59.94* 
   640x480       60.00    59.94  

I attempted to use the `--transform` option, hoping that by adjusting the first 2 diagonal matrix entries I could have xrandr take the whole 720x480i set of pixels and smoosh it into the upper left corner of the TV and leave a black region behind, but instead, `--transform` always resulted in the resolution changing, deviating from 720x480i to compensate for the scale difference to preserve the area on the monitor occupied by the screen. This meant that `--transform` could only have the effect of translating, rotating, skewing, and changing the pixel density of the screen. There was no way I could figure out to change the actual area occupied on the screen.

I saw a forum entry suggest that `--transform` could be combined with a restricted frame buffer, smaller than the new resolution by using `--fb`, but for me this ended up still increasing the resolution of the screen but simply making the overflowing portion invisible. This is not desired.

Does anyone know if there's a way to fake underscan, either with xrandr or something else that runs on top of X?

Offline

#2 2022-06-30 21:13:15

progandy
Member
Registered: 2012-05-17
Posts: 5,304

Re: Fake underscan with X / xrandr?

You could try to use custom modeline like these, but that might not work with an HDMI to RCA adapter since it has to convert the received signal anyways.

Modeline "640x480"   25.175   640 656 720 840   480 481 484 500  -hsync -vsync

from https://www.epanorama.net/faq/vga2rgb/calc.html
Apply it with xrandr newmode/addmode: https://wiki.archlinux.org/title/Xrandr#Screen_Blinking

More information:
https://arachnoid.com/modelines/index.html especially section "Adjustments"
https://www.linuxdoc.org/HOWTO/XFree86- … ngs-HOWTO/
http://www.geocities.ws/podernixie/htpc/modes-en.html

Last edited by progandy (2022-06-30 21:16:44)


| alias CUTF='LANG=en_XX.UTF-8@POSIX ' | alias ENGLISH='LANG=C.UTF-8 ' |

Offline

#3 2022-06-30 21:47:44

seth
Member
From: Don't DM me only for attention
Registered: 2012-09-03
Posts: 73,108

Re: Fake underscan with X / xrandr?

Do you use the proprietary nvidia driver?

Offline

#4 2022-07-01 01:44:50

ei
Member
Registered: 2020-07-16
Posts: 9

Re: Fake underscan with X / xrandr?

seth wrote:

Do you use the proprietary nvidia driver?

I do not have an Nvidia graphics card. I'm using Intel integrated graphics. My CPU is an Intel i7-3520M (4) @ 3.600GHz. Neofetch lists my graphics capabilities as "Intel 3rd Gen Core processor Graphics Controller".

Offline

#5 2022-07-01 06:57:07

seth
Member
From: Don't DM me only for attention
Registered: 2012-09-03
Posts: 73,108

Re: Fake underscan with X / xrandr?

What do you get for

xrandr --output HDMI-1 --mode 720x480i --panning 720x480 --transform 1.05,0,-32,0,1.05,-24,0,0,1

Offline

Board footer

Powered by FluxBB