I have a Toshiba Satellite C660-10T that isn’t displaying the image on screen correctly. It should have a resolution of 1366x768@58hz but Xorg has detected the max resolution as 1280x800 so the bottom of the image is off the screen and I have about 2cm of blank space on the right of the screen. I know the problem is caused but the EDID being detected incorrectly and this is compounded by the resolution not being divisible by 8. It also seems from looking at the xorg logs that the intel driver is setting the physical screen size too small.
When I try and set the correct resolution with xrandr I get a screen size is too small error. So to fix it I need to create a custom screen and monitor configs in xorg but so far I’ve had no luck in achieving this.
I would consider renaming the xorg config file /etc/X11/xorg.conf to /etc/X11/xorg.conf.old and then reboot. The problem you descript can occur on an upgrade and you don’t really need the file at all.
It’s not an upgrade. I did a fresh install and as of right now I don’t have an active xorg.conf, 50-device.conf, 50-monitor.conf or 50-device.conf. I do know this is a common problem with this type of panel and I also know from the google searches I’ve been doing that it is fixable you just need to get the right config. A lot of people that have had this problem seem to just disable the edid detection and then set a custom config for the monitor and screen. I’ve not done that before and i’m not used to this new split way config of configuring X11.
It should have a resolution of 1366x768@58hz but Xorg has detected the max resolution as 1280x800
Your best strategy might be to test a display mode using xrandr first. I note that 1366x768 is an unusual display mode (and I recall threads where drivers could not deal with it because 1366 wasn’t divisible by 8). I wonder if 1368x768 might work for you. The cvt utility can be used to generate modelines eg
I tried the commands and this is the output I got from “xrandr --fb”
xrandr --fb 1368x768
xrandr: specified screen 1368x768 not large enough for output LVDS1 (1280x800+0+0)
but I tired to add the mode anyway and when I tried to add it to the device with “xrandr --addmode” I got
xrandr --addmode LVDS1 1368x768_60.00
X Error of failed request: BadMatch (invalid parameter attributes)
Major opcode of failed request: 140 (RANDR)
Minor opcode of failed request: 18 (RRAddOutputMode)
Serial number of failed request: 34
Current serial number in output stream: 35
This is where I got stuck before I started messing with the xorg config files and why I posted on the forums. So what’s the next step?
It is very difficult to read between the lines wrt what you tried PRIOR to trying the xrandr command.
Did you first try
cvt 1366 768 58
to generate a mode line ? deano_ferrari knows this subject matter far better than I, so possibly he does not need as much information as I to figure how you were following the recommended advice/approach. I confess maybe I read the thread too fast, but I could not see where it was recommended to try “xrandr --fb 1368x768” to the exclusion of other commands.
but I tired to add the mode anyway and when I tried to add it to the device with “xrandr --addmode” I got
xrandr --addmode LVDS1 1368x768_60.00
X Error of failed request: BadMatch (invalid parameter attributes)
Major opcode of failed request: 140 (RANDR)
Minor opcode of failed request: 18 (RRAddOutputMode)
Serial number of failed request: 34
Current serial number in output stream: 35
That means the driver probably can’t handle that mode. You may need to investigate others. Maybe use google to find other threads with same/similar hardware.
Another suggestion is to try using a Live distro that may use a different kernel/graphics driver version. If you can get something that works with correctly configuring your display, you can record the working mode reported in Xorg.0.log or via
You suggested I should test a display mode. That command tests a display mode and I posted the result of running it.
I did some searching and I have found a couple of threads on different forums that describe this problem and offer a few possible resolutions. One suggested creating a custom xorg.conf that creates virtual screen to load the new screen resolution on to. I tried it and it didn’t work. The result after a reboot was the kernel boot splash and one X started to load I was present with a black screen with a cursor marker on the top left on the screen. So I then tried to lower the resolution to 800x600 as a test and to my surprise it would not change. This would indicate that something is fundamentally wrong here. I would try a live CD but I don’t have any spare discs or USB drives I can use.
I did also run “xrandr --verbose” and it states that the maximum resolution supported is 32767x32767. Obviously that maximum is for multiple monitor setups but it does give me hope that the driver does at least support higher resolutions that those I am being offered.
I do have one question: If I wanted to instruct the video driver/framebuffer to ignore the (apparently invalid) EDID being supplied by the panel where is it best to put the X11 option “IgnoreEDID”?
Also if you have any further thoughts, or pieces of advice I would really appreciate you voicing them.
I do have one question: If I wanted to instruct the video driver/framebuffer to ignore the (apparently invalid) EDID being supplied by the panel where is it best to put the X11 option “IgnoreEDID”?
Also if you have any further thoughts, or pieces of advice I would really appreciate you voicing them.
I don’t think that option is valid for the intel driver.
Refer
man intel
You’ll see there is an option for DDC (disabling), but IMHO you’d be better off trying to get a working modeline (via xrandr) first.
BTW, this may well be a driver issue that needs to be addressed, either by upgrading, or perhaps a bug report.
In recent versions, it is possible to supply a custom EDID file to the kernel, though. Also X uses this then, just like as if the monitor would have sent it.
Of course this could be a bug in either the driver or the framebuffer. If that is the case i’ll have to look at updating the kernel and/or X to see if that fixes it.
As for supplying a custom EDID, that is an interesting idea and something I will have to look into.
I am currently building a custom kernel based on the sources supplied with the distro with the mode setting/mode detection disabled to see if that makes any difference. I would have ended up building one anyway as I have a nasty addiction to building kernels so all the unnecessary **** is removed and I have a more system specific, possibly slightly faster kernel.
Also, as it is Friday, once the kernel is built and tested I won’t be looking at this again till tomorrow.
I had a look at making custom xorg.conf.d configs for my screen after building the Kernel and that just lead to X server start failures. So, I had a go at creating a custom EDID and so far so good. I’ve got the stage where I need to test it to make sure it works and the documentation for it in the kernel sources says I need to use edid-decode, which should be included with the tools in X11 it seems openSUSE has omitted it. Does anyone know where I can get it from? I did a quick search in YaST and on google and can’t seem to find it.
I manage to get the EDID file written and I’m now building another kernel with the command to load it for LVDS1 only hard coded therein. I’m really hoping it works.
Again, thanks for all the help and advice guys, I really couldn’t have done it without you.
Now for another question (and this probably in the wrong place): If this EDID firmware works and I wanted to have it included or placed somewhere that other users could just download it and install it or even have it placed, say, in the hardware compatibility DB on the wiki, what would I need to do?
You don’t have to build a new kernel for that.
Just specify the option (“drm_kms_helper.edid_firmware=LVDS-1:edid/your_edid.bin”) in your boot loader entry.
Or did you custom compile your kernel without support for this?
You are right, I didn’t have to but instead of supplying the option to load the firmware at boot time you can use the kernel command line to build the option into the kernel itself - which is much tidier - but I had disabled this feature in the previous build.
Now on to something I wasn’t expecting…
The kernel booted fine but for some reason wasn’t able to find the EDID file I had placed in /lib/firmware/edid/ and produced the error “[drm:edid_load] ERROR Requesting EDID firmware “edid/1368x768.bin” failed (err=-2)”. I have googled it but all I could find was a google group on the subject and the fix was never posted and a thread on the ubuntu forums that just doesn’t make any sense.