Ubuntu issues with TV's

Ubuntu Version:
Kubuntu 24.04

Desktop Environment (if applicable):
KDE Plasma

Problem Description:
I have a Dell Laptop (Latitude 5500), and a Westinghouse TV (WD40FB2530) attached through an HDMI cable. If I run “xrandr -q” with the TV off, I get:

HDMI-1 disconnected (normal left inverted right x axis y axis)

But if I run that command with the TV on, I get:

HDMI-1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 880mm x 490mm

Plus all the display modes below.

I am able to use the TV, but the issue is I have to manually turn it on every time. It appears that Ubuntu is just unable to “see” or interact with the TV if it’s off. I have a WIndows laptop, and if I turn it on or bring it out of sleep mode, it will automatically turn the TV on. Is this just not a feature that Ubuntu supports?

I have a separate desktop computer also with Kubuntu 24.04 that only has a TV (Westinghouse WE55UDT108) attached to it, with no monitor. It has the same issue where I have to manually turn the TV on. Previously, I had a WIndows installed on this desktop, and it would automatically turn the TV on when I turned the computer on.

In addition, for the 2nd one, when I turn the desktop computer on it defaults to 640x480 for the resolution on the TV. I was able to modify the .bashrc file to use xrandr to manually set it to the “native” resolution of 1920x1080, but I don’t understand why Ubuntu can’t automatically detect the “native” resolution on the TV.

Relevant System Information:

Dell Latitude 5500
Westinghouse WD40FB2530
Dell Xeon
Westinghouse WE55UDT108

What I’ve Tried:
I have tried running xrandr to get system information, but I can’t find anything that will tell Ubuntu to turn on these TV’s when the computers come out of sleep mode or start up from being turned off.

This is old, but my guess is it relates to your issue: the EDID information (which comes with the display itself and should be considered immutable) is misleading. I wouldn’t be shocked to see this issue in a TV in particular.

I would install the read-edid package. Then run sudo get-edid | parse-edid. It will run through your buses and report the ones it finds (e.g. 2 potential busses found: 2 3) and then provide a human-readable version of the EDID information for the first one (e.g. 2). You can specify particular devices by using the bus number (e.g. sudo get-edid -b 3 | parse-edid).

Read it carefully and see if anything looks weird and if there are any errors of any kind. That might give you a clue. There’s not much you can do about it except work around it, but you’ll at least know why.

This is a strange one. I don’t have any devices that automatically turn on. That would be a cool feature. I assume that if you put the computer to sleep but leave the display on and then wake the computer, that the display works as expected?

If Windows can “see” the EDID correctly, then Linux should also be able to do so as well.
I suspect windows is just basically checking the HDMI cable to see if anything is attached and then sends a signal to turn the tv on. Linux probably examines all facets of the signals on the cables and cannot work out what to do with them. As soon as the tv detects a video input, probably the sync signal, that should bring it out of standby.
I presume the tv is actually on standby not completely off!
A way round it may be to fit a smart plug and use that to turn it on or off.

All HDMI sockets on most tv sets are not equal. There is usually only one which will pass dts, eARC, Dolby for instance. There are 3 categories of HDMI connectors, with variants of each one. For instance, standard cat1, standard cat1 with ethernet, cat3 4k, cat3 8k.

I don’t know what you can do to enable the same function in Linux as you get with windows, but there may be someone out there who knows more about how windows does it, I suspect this forum may not be the best place to find it. You may get better results on some of the windows forums.

2 Likes

It is very likely that windows sends a CEC wakeup command to the TV or something along these lines, perhaps you can craft something around the cec-ctl tool to achieve similar behavior…

https://manpages.ubuntu.com/manpages/focal/man1/cec-ctl.1.html

3 Likes

My experience dictates that Windows often does different things with the same information.

@ogra That’s a novel suggestion, very practical and looks easy to implement.

I am using the same cable for my Linux laptop as I did with the Windows laptop, and since Windows is able to turn the TV on from being completely off (not just in standby mode) I don’t think the issue is the cable. :slight_smile:

I installed v4l-utils to try out the cec-ctl command using the documentation here: Ubuntu Manpage: cec-ctl - An application to control cec devices. Unfortunately, in my /dev folder there are no cec devices. I went to my TV’s settings and I don’t see any references to “CEC”. I was really hoping this would work. I’m not sure how Windows is able to turn it on.

I just had a thought, depending on which graphics card is in your laptop, Windows will automatically use the manufacturers driver, Linux will probably just be using a generic nouveau driver. Perhaps try installing the manufacturers driver in Linux to see if that has the desired effect.

2 Likes

That was a good thought. According to HardInfo, the laptop has an Intel Mesa UHD 620. I went to Intel’s support site for this video card (https://www.intel.com/content/www/us/en/support/products/96551/graphics/processor-graphics/intel-hd-graphics-family/intel-hd-graphics-620.html), and unfortunately they only have Windows drivers for it.

However, if I run “sudo lshw -c video” it shows that it is using some Intel driver:

description: VGA compatible controller
       product: WhiskeyLake-U GT2 [UHD Graphics 620]
       vendor: Intel Corporation
       physical id: 2
       bus info: pci@0000:00:02.0
       logical name: /dev/fb0
       version: 02
       width: 64 bits
       clock: 33MHz
       capabilities: pciexpress msi pm vga_controller bus_master cap_list rom fb
       configuration: depth=32 driver=i915 latency=0 resolution=1920,1080
       resources: irq:146 memory:90000000-90ffffff memory:80000000-8fffffff ioport:3000(size=64) memory:c0000-dffff

But I’m not sure if this is the right driver. I went to Software & Updates and checked Additional Drivers, and it says “No additonal drivers available”.

I also have this:

$ modinfo i915
filename:       /lib/modules/6.8.0-55-generic/kernel/drivers/gpu/drm/i915/i915.ko.zst
license:        GPL and additional rights
description:    Intel Graphics
author:         Intel Corporation
author:         Tungsten Graphics, Inc.

If that TV is only in standby then “ddccontrol” might be able to activate it. It uses the Display Data Channel / Command Interface over an I2C bus that’s part of every display connector since VGA.

On my machine
dddcontrol dev:/dev/i2c-1 -r 214 -w 5
will turn the display off while
dddcontrol dev:/dev/i2c-1 -r 214 -w 1
turns it on.

To find out the right device, the right registers, and the right values you can use
ddccontrol -p
You might have to do a conversion of the register addresses since it gives them in hexadecimal but expects them in decimal (or you could use the math functions of the shell, “$((0xd6))” instead of the ‘214’ in the command works … ).

1 Like

Thank you for letting me know about this program! I tried to run it but unfortunately got an error that my TV is not in the database. It asked to run this command (LANG= LC_ALL= ddccontrol -p -c -d) and send them the results of the output, which I did. Hopefully it will help them improve the program.