Sunday, June 18, 2017

Dual monitor display with Nouveau and xrandr

Hello fellas.... Its been a while blogging... I would not repeat this statement yet again... !

This post explains how to setup a dual monitor display with Nouveau open source drivers and using the tool xrandr.

Hardware:

1. Nvidia GT 730 with 3 outputs - HDMI, VGA and DVI.

Platform of setup:

1. 2 Dell monitors of 20" display (using only 1 as of now)
2. 1 TV (Vu 32 inches)

OS: Linux Sarah.

Tools and Drivers:

Nouveau open source graphics driver and xrandr

The problem statement:

If you already read my setup, my TV supports a stupid resolution of only 1360x768 where as my Dell monitor supports upto 1600x900 both in 60Hz. A xrandr query shows a much bigger resolution.

Each time I installed a OS and installed Nvidia proprietary drivers, I had enough difficulties to setup for a dual display - cos - when mirrored displays were used - both TV and Monitor would end up only with 1024x768 resolution.

Why not Nvidia? 

1. The typical wrong misconception, that a VGA cable cannot be used to upgrade a resolution.

2. Being proprietary, it did not support xrandr properly (got Bad Mismatch errors)

The ultimate solution:

1. Uninstall all installed Nvidia drivers

2. Install Nouveau drivers.

Implementation of the solution:

1. sudo apt-get remove nvidia*
2. sudo apt-get purge nvidia*
3. sudo apt-get purge bumble*
4. sudo apt-get purge bbswitch
5. sudo apt-get --reinstall install xserver-xorg-video-nouveau
6. sudo apt-get --reinstall install  nouveau-firmware
7. sudo dpkg-reconfigure xserver-xorg
8. sudo dpkg-reconfigure xserver-xorg-video-nouveau
9. Remove all blacklisted nouveau names in /etc/modprobe.d/ folder
10. Reboot - sudo reboot now

Make sure that both the monitors are connected through your graphics card outputs.

Once booted back - nouveau should automatically pickup the displays.

But the screen resolution problem is not yet solved: 1 screen shows 1600x900 and the other 1360x768

Solution: Use xrandr tool

Commands:

1. gtf 1600 900 60 -x
2. xrandr --newmode "1600x900_60.00"  119.00  1600 1696 1864 2128  900 901 904 932  -HSync +Vsync
3. xrandr --addmode VGA-1 1600x900_60.00
4. xrandr --output VGA-1 --mode 1600x900_60.00

Finally I can even get a high resolution of 1920x1200 !

If need be, you can convert the above 4 lines to a shell script and execute the script at each startup.

Tc..
Ananth G S