Help Configuring Multiple Monitors on Dual ATI Cards

Hello, this is one of those, “Hey, this is my first post, please help me!!” kind of posts. Anyways, here it goes!

I am switching from Windows to openSuSE because most of my games run in Steam anyways, also trying to become more prolific in RPM based distribution since my company is offering classes for RedHat next month. Basically, by running a command to probe PCI VGA devices, I found that SuSE is recognizing that I have two video cards. They are both ATI Radeon 5450's. On my Windows 7 partition, all three monitors are coming up just fine, in SuSE only the middle one is coming up (Middle monitor on first card, side monitors on second card). I just need help getting the two side monitors to show up so I can use them.

Thanks!    --- Collier ---
  1. install the propritary driver for that card

  2. Assuming KDE go to Config Desktop - monitor and see if you can configure it.

So what I did was the “1-Click Install” listed on the FGLRX wiki and installed through YaST. After a restart, I was no longer using the open source drivers, but instead had the FGLRX drivers installed.

Now there is no 3D acceleration, Steam won’t boot because of it and frame rates just moving a desktop window are slow. I ended up connecting one of my side monitors to the first card and it shows up. Under the “Size & Orientation” settings I now get four options (presumably from having drivers for both cards):

DFP1
DFP2 (Connected)
CRT1
CRT2 (Connected)

Before on the open source drivers, I had:

DVI (Connected)
VGA (Connected)
HDMI

Its not even picking up any monitors on the secondary card. Besides that, when I try and configure the displays to be side-by-side, it reverts back to “Clone of” when I hit apply.

What I need help with now is:

  1. Enabling 3D acceleration
  2. Having the “Position” settings work when hitting apply
  3. Getting the second cards monitors to be detected.

I’ve tried searching for some of this through Google and am not finding anything specific to this problem, again, thanks!

If you’re using the fglrx driver, I wonder if you shouldn’t try configuring the dual screen setup with ‘amdcccle’ instead?

I just tried using that command. I got a weird output with lots of errors in terminal, and then the CCC Panel popped up after a few seconds. It was still showing only two monitors with a third ‘unknown’ device with a picture of a graphics card. Setting up the monitors still failed, not even a screen flash and would remain cloned.

I saw an option called “Xinerama” which was for panning windows accross all monitors, so I checked that, it asked me to restart so I did.

Now comes the funky part… After the restart, the left monitor (the one on my second graphics card) was now active, but my other ones are now inactive. Under display properties, it showed six monitors with a little goldfish in them, but where all my displays were was blanked out (drop down menu). Under ‘Display Properties’, it shows 4000 x 4000 with a refresh rate of 160Hz. Upon disabling “Xinerama” and restarting, only my left monitor is still showing, and its a black & white vertical monitor so I am reading and typing this sideways because the rotate function does not work.

'Im about to restart and disconnect this display to see what happens, and if I can get anything else adjusted or fixed I will post back. I’ve never worked with dual-video cards in linux, so I am not used to these errors or anything. 3D Acceleration still is inactive. Thanks again for the support!!!

I believe something is not working right with the driver. I uninstalled fglrx and restarted. Login came up on my middle monitor (attached to card 1) and I got my hardware acceleration back, however even weirder results… Now my right monitor will not come up, showing an amber light on the front of the display, and when I disconnect and reconnect it the 'Size & Orientation" panel notes when it is connected and disconnected, but still nothing coming up on the second display. And still no signs of it detecting the second card. I rebooted into windows and all three monitors come up without a hitch.

If there is another driver besides fglrx for ATI/AMD cards, or a way to force detect my second card with the open source drivers (which may be the best option seeing how everything but second card was working) that would be great!

Also, heres what I get with ‘lspci’, showing my cards are both detected:

collier@SuSE-Gaming:~> /sbin/lspci -nnk | grep VGA -A2
01:00.0 VGA compatible controller [0300]: Advanced Micro Devices [AMD] nee ATI Cedar PRO [Radeon HD 5450/6350] [1002:68f9]
        Subsystem: PC Partner Limited Device [174b:e145]
        Kernel driver in use: radeon
--
02:00.0 VGA compatible controller [0300]: Advanced Micro Devices [AMD] nee ATI Cedar PRO [Radeon HD 5450/6350] [1002:68f9]
        Subsystem: PC Partner Limited Device [174b:e164]
        Kernel driver in use: radeon
collier@SuSE-Gaming:~> 

I’m not sure if what you’re trying to achieve (3 monitors spanning one desktop) is yet possible, but fwiw have a read of the following

1 big display on 4 monitors via 2 cards - HD 5750 fglrx

I doubt that the X-server (using the open source radeon driver) will cope with two graphics cards concurrently, at least without some manual configuration of the /etc/X11/xorg.conf.d/ config files. (Well beyond my experience and available hardware).

This blog details one users experinece with multiple monitors and the proprietary fglrx driver:

Ubuntu and Multiple Monitors – AMD Edition | Linux Academy Blog

Thanks for the swift reply! Im gonna try giving some of this a shot tonight and probably continue tomorrow as it is getting late here. Basically the setup I want to achieve:

.___________
|… |
|… | ___________________ _______________
|… ||… ||… |
| … || … ||… |
|… ||… ||… |
|… ||… ||… |
|… ||… ||… |
|||||______|
…Planar… Acer AL2216W… Acer AL1717
…Dome Q2… (Primary)

Left monitor for an internet browser; middle monitor for desktop and games, movies ect.; right monitor for terminal and hardware monitor.

Just a basic three monitor set up, which I have in Windows fine. I just would like to transition myself to linux and I have always favored openSuSE more than any other distro. I like Ubuntu, but need to jump into the RedHat world.

As stated, Ill give these guides a shot and reply back tomorrow with my results!

Edit: Also, I could probably achieve the three monitors using an HDMI adaptor on the primary video card, but I’d like to avoid this if possible so I dont have to go out and buy more cables, plus if I ever wanted crossfire in the future I’d like to actually utilize the second card.

Please note that there are other constraints to be aware of (that have a direct impact with the desktop environments). Summed up well here:

https://forums.opensuse.org/english/get-technical-help-here/hardware/477331-12-1-kde-triple-monitor-two-graphic-cards-nouveau-instead-nvidia.html#post2479317

So far, I managed to get CCC to display the two monitors on the first card, and I tried to set up panning there. It asked to restart so I logged out. NOW, at the logon prompt, my middle display has the logon, and the right monitor is extended!! But when I login it reverts back to cloned… And now the CCC loads for about a minute, never shows up, and when I try to run it again it says amdcccle is already running.

Getting frustrated lol. I tried installing the drivers from AMD’s website, tried the 1-click method, and tried through YaST’s repositories. All seem to be identical versions of this driver.

After reading that article and examining my situation, it comes down to this:

  1. Use the open source driver; having Hardware Acceleration enabled, only two monitors at a time in extended mode.

or

  1. Use AMD closed source drivers; no hardware acceleration, two monitors on primary card OR just the one monitor on secondary card after fiddling with settings.

Don’t know why this has to be so difficult, will continue reading up tomorrow, frustrated and need sleep! Lol

I don’t think its possible to do what you’re trying to accomplish. There is a limitation with the ways the desktop environments work with the X-server in one session. BTW, which DE are you using?

There’s lots of accounts of others experimenting with eyefinity and the AMD CCC. For example

https://bbs.archlinux.org/viewtopic.php?id=137327
multiple monitors - 3 displays with AMD Radeon HD 6900 series; 2 DVI 1 HDMI - Super User

Exactly –> You don’t know why it is the case! And I assure you that it is for good reason that it is the case (and not because everyone using Linux loves things to be backwards and so difficult). Second, it strongly appears that you’re extrapolating from your user experience under Windows and have formed skewed expectations. Just because it works easily under Windows (at least, it does now, but certainly wasn’t always the case), does not mean it should work easily under Linux. Linux is not Windows.

The X display server framework is old and creeky. It was developed in years gone by and has been modified in many ways, on numerous occasions, in attempts to provide a graphics environment compatible with modern technologies. We’re at the point where changing the framework to accommodate some modern day feature sets is a MAJOR task. Further, there are only a few people who actually participate, as well know/understand how to perform the required plumbing (without f#@king up everything else, for everyone else!). This helps to explain why some features (that work so wonderfully in Windows!) take (what may seem like) eons to become available under Linux. It also provides good reason as to why newer display servers (e.g. Wayland, …) are being developed.

All that said, you can accomplish what you seek, only, you will have to configure X for it. Using the fglrx, you should* be able to get acceleration across all the monitors using their Xinerama implementation. With the OSS stack, you might also be able to get a nice solution with xrandr and Provider Objects.

  • I haven’t tested it (or run the fglrx for a good long while now), so that is why I say “should” … in any regard, that doesn’t in the least shift my opinion that Xinerama still sucks (for a variety of reasons).

What I was alluding to was that it may already work for you under 12.3, provided you have updated the graphics stack and server components … I monkeyed around with it under both 12.2 and 12.3, but it didn’t work for me (though I didn’t spend much time on it, and it most certainly has for others i.e. https://forums.opensuse.org/english/get-technical-help-here/laptop/488399-opensuse-12-3-nvidia-geforce-610m-using-bumblebee-displaylink.html#post2569756 … or for others using other distros with requisite components in place i.e. xrandr 1.4 multi-gpu works!!).

In any regard, I found that getting it to work in the forthcoming 13.1 was very easy; see my post here: https://forums.opensuse.org/english/get-technical-help-here/hardware/480963-usb-dvi-displaylink-opensuse-12-2-kde-xrandr-krandr-4.html#post2586253. So, if you attempt now and it doesn’t work, it more then likely will in a couple of months on the new release.

I just had another go at it under 12.2 and was successful … I brought both the kernel and display stack completely up to date (at least, via what is available through the openSUSE kernel and Xorg/Mesa repos). Only problem encountered was that all the new microcode/firmwares weren’t written to the initrd during the kernel update for some reason, so initial boot failed to load the drm/kernel module for one of the adapters (resulting in a miles less than optimal fbdev driven environment). After updating initrd (i.e. “sudo mkinitrd”), all was well again on the next boot.

I will presume that updating and configuring 12.3 would be pretty straight forward as well. But putting that assumption to test will have to wait for another day …

I’m reviving this thread to ask if it possible to use 2 AMD cards in multimonitor setup with the open source driver and KDE.

I have a dual monitor setup with one AMD card and although the second one is recognized it is not activated. For start I want an extra monitor connected to the second card to use for the same desktop (not clone).

I can provide any other necessary info if someone has an idea how to achieve that (if it is possible).

Yes; do:

xrandr --setprovideroutputsource 1 0

Then, after that, turn on the output for the second adapter – you can do that via xrandr or one of the gui’s (I suggest you use kscreen as it will be obvious what to do, though any of the other RANDR frontends will work too, albeit just not as intuitively as it is with kscreen). After that, you are left on your own as to how to make that config persistent across boots without any further intervention on your part (I added it as a start up script used by the Display manager, but there are ninety-four gazillion other ways you can accomplish it).

Thanks for the answer.

I have those:

xrandr --setprovideroutputsource 1 0
Could not find provider with index 1

and

xrandr --listproviders
Providers: number : 1
Provider 0: id: 0x54 cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 2 outputs: 3 associated providers: 0 name:radeon

My lspci gives this:

01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Oland XT [Radeon HD 8670/R7 250]
02:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Park [Mobility Radeon HD 5430]

and on dmesg I can see that the second adapter is recognized:

dmesg | grep drm
    1.354704] [drm] Initialized drm 1.1.0 20060810
    1.360979] [drm] radeon kernel modesetting enabled.
    1.361038] fb: conflicting fb hw usage radeondrmfb vs VESA VGA - removing generic driver
    1.361354] [drm] initializing kernel modesetting (OLAND 0x1002:0x6610 0x1458:0x2270).
    1.361375] [drm] register mmio base: 0xFEA00000
    1.361376] [drm] register mmio size: 262144
    1.361576] [drm] Detected VRAM RAM=2048M, BAR=256M
    1.361576] [drm] RAM width 128bits DDR
    1.361653] [drm] radeon: 2048M of VRAM memory ready
    1.361654] [drm] radeon: 1024M of GTT memory ready.
    1.361960] [drm] GART: num cpu pages 262144, num gpu pages 262144
    1.363238] [drm] probing gen 2 caps for device 1002:5a16 = 31cd02/0
    1.363242] [drm] PCIE gen 2 link speeds already enabled
    1.378321] [drm] Loading OLAND Microcode
    1.379707] [drm] PCIE GART of 1024M enabled (table at 0x0000000000276000).
    1.380612] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
    1.380613] [drm] Driver supports precise vblank timestamp query.
    1.380666] [drm] radeon: irq initialized.
    1.552741] [drm] ring test on 0 succeeded in 2 usecs
    1.552746] [drm] ring test on 1 succeeded in 1 usecs
    1.552749] [drm] ring test on 2 succeeded in 1 usecs
    1.552810] [drm] ring test on 3 succeeded in 2 usecs
    1.552818] [drm] ring test on 4 succeeded in 1 usecs
    1.740248] [drm] ring test on 5 succeeded in 2 usecs
    1.740253] [drm] UVD initialized successfully.
    1.741116] [drm] Enabling audio 0 support
    1.741117] [drm] Enabling audio 1 support
    1.741118] [drm] Enabling audio 2 support
    1.741119] [drm] Enabling audio 3 support
    1.741120] [drm] Enabling audio 4 support
    1.741120] [drm] Enabling audio 5 support
    1.741166] [drm] ib test on ring 0 succeeded in 0 usecs
    1.741264] [drm] ib test on ring 1 succeeded in 0 usecs
    1.741306] [drm] ib test on ring 2 succeeded in 0 usecs
    1.741327] [drm] ib test on ring 3 succeeded in 0 usecs
    1.741347] [drm] ib test on ring 4 succeeded in 1 usecs
    1.893460] [drm] ib test on ring 5 succeeded
    1.893777] [drm] Radeon Display Connectors
    1.893778] [drm] Connector 0:
    1.893779] [drm]   HDMI-A-1
    1.893780] [drm]   HPD1
    1.893781] [drm]   DDC: 0x6540 0x6540 0x6544 0x6544 0x6548 0x6548 0x654c 0x654c
    1.893782] [drm]   Encoders:
    1.893782] [drm]     DFP1: INTERNAL_UNIPHY
    1.893783] [drm] Connector 1:
    1.893784] [drm]   DVI-D-1
    1.893784] [drm]   HPD2
    1.893785] [drm]   DDC: 0x6530 0x6530 0x6534 0x6534 0x6538 0x6538 0x653c 0x653c
    1.893786] [drm]   Encoders:
    1.893787] [drm]     DFP2: INTERNAL_UNIPHY
    1.893787] [drm] Connector 2:
    1.893788] [drm]   VGA-1
    1.893789] [drm]   DDC: 0x65c0 0x65c0 0x65c4 0x65c4 0x65c8 0x65c8 0x65cc 0x65cc
    1.893789] [drm]   Encoders:
    1.893790] [drm]     CRT1: INTERNAL_KLDSCP_DAC1
    1.893833] [drm] Internal thermal controller with fan control
    1.893871] [drm] probing gen 2 caps for device 1002:5a16 = 31cd02/0
    3.209326] [drm] radeon: dpm initialized
    3.278130] [drm] fb mappable at 0xC1480000
    3.278131] [drm] vram apper at 0xC0000000
    3.278132] [drm] size 7299072
    3.278132] [drm] fb depth is 24
    3.278133] [drm]    pitch is 6912
    3.278226] fbcon: radeondrmfb (fb0) is primary device
    4.604990] radeon 0000:01:00.0: fb0: radeondrmfb frame buffer device
    4.604995] [drm] Initialized radeon 2.36.0 20080528 for 0000:01:00.0 on minor 0
    4.605244] [drm] initializing kernel modesetting (CEDAR 0x1002:0x68E1 0x1043:0x3000).
    4.605257] [drm] register mmio base: 0xFE920000
    4.605258] [drm] register mmio size: 131072
    4.726158] [drm] GPU not posted. posting now...
    4.728680] [drm] Detected VRAM RAM=512M, BAR=256M
    4.728681] [drm] RAM width 64bits DDR
    4.728687] [drm] radeon: 512M of VRAM memory ready
    4.728688] [drm] radeon: 1024M of GTT memory ready.
    4.728877] [drm] GART: num cpu pages 262144, num gpu pages 262144
    4.729876] [drm] enabling PCIE gen 2 link speeds, disable with radeon.pcie_gen2=0
    4.731028] [drm] Loading CEDAR Microcode
    4.732593] [drm] PCIE GART of 1024M enabled (table at 0x000000000025D000).
    4.734186] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
    4.734186] [drm] Driver supports precise vblank timestamp query.
    4.734225] [drm] radeon: irq initialized.
    4.750441] [drm] ring test on 0 succeeded in 1 usecs
    4.750496] [drm] ring test on 3 succeeded in 1 usecs
    4.947930] [drm] ring test on 5 succeeded in 1 usecs
    4.947933] [drm] UVD initialized successfully.
    4.947983] [drm] Enabling audio 0 support
    4.948006] [drm] ib test on ring 0 succeeded in 0 usecs
    4.948029] [drm] ib test on ring 3 succeeded in 0 usecs
    5.119720] [drm] ib test on ring 5 succeeded
    5.119929] [drm] Radeon Display Connectors
    5.119931] [drm] Connector 0:
    5.119932] [drm]   HDMI-A-2
    5.119933] [drm]   HPD1
    5.119935] [drm]   DDC: 0x6440 0x6440 0x6444 0x6444 0x6448 0x6448 0x644c 0x644c
    5.119936] [drm]   Encoders:
    5.119937] [drm]     DFP1: INTERNAL_UNIPHY1
    5.119938] [drm] Connector 1:
    5.119939] [drm]   DVI-I-1
    5.119939] [drm]   HPD4
    5.119941] [drm]   DDC: 0x6460 0x6460 0x6464 0x6464 0x6468 0x6468 0x646c 0x646c
    5.119942] [drm]   Encoders:
    5.119942] [drm]     DFP2: INTERNAL_UNIPHY
    5.119943] [drm]     CRT1: INTERNAL_KLDSCP_DAC1
    5.119944] [drm] Connector 2:
    5.119945] [drm]   VGA-2
    5.119946] [drm]   DDC: 0x6430 0x6430 0x6434 0x6434 0x6438 0x6438 0x643c 0x643c
    5.119947] [drm]   Encoders:
    5.119948] [drm]     CRT2: INTERNAL_KLDSCP_DAC2
    5.125514] [drm] Internal thermal controller without fan control
    5.132190] [drm] radeon: dpm initialized
    5.178481] [drm] fb mappable at 0xB045E000
    5.178483] [drm] vram apper at 0xB0000000
    5.178484] [drm] size 5242880
    5.178485] [drm] fb depth is 24
    5.178485] [drm]    pitch is 5120
    5.178587] radeon 0000:02:00.0: fb1: radeondrmfb frame buffer device
    5.178591] [drm] Initialized radeon 2.36.0 20080528 for 0000:02:00.0 on minor 1

So it seems that xrandr doesn’t “detect” the second adapter. Is anything additional needed on xorg.conf, maybe? I don’t use any custom entries for the first adapter and the two monitors connected on it.

Thanks again.

Yes; the output above most certainly conveys that xrandr is only finding a single provider capable adapter.

However, that said, are you able to obtain regular xrandr info from both adapters? (for explanation, see: https://forums.opensuse.org/showthread.php/495394-External-Monitor-Troubles-Dell-U2412M-w-Thinkpad-W530?p=2624088#post2624088)

Is anything additional needed on xorg.conf, maybe? I don’t use any custom entries for the first adapter and the two monitors connected on it.
No; no xorg configs are required.

You didn’t say, but I would assume that its the

 Oland XT [Radeon HD 8670/R7 250]

adapter which is not playing nice.

The dmesg drm output you provided looks fine, but can you provide the output of:

/sbin/lspci -nnk | grep -A2 VGA

and

ls -la /sys/class/drm/card?

and a suse paste (and then provide link) to the xorg log

( my quick thoughts are that you will either require a newer kernel driver, so that it will work in respects to the Oland adapter, and/or that you’re composited desktop is not working properly … because the glamour and mesa requirements needed for the Oland aren’t available in stock 13.1 … i.e. require updating your graphics stack )

No this adapter:

01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Oland XT [Radeon HD 8670/R7 250]

is active now with two monitors attached.

This one is not enabled, where I want the third monitor:

02:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Park [Mobility Radeon HD 5430]

Here are the outputs of the commands you have asked.

/sbin/lspci -nnk | grep -A2 VGA
01:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Oland XT [Radeon HD 8670/R7 250] [1002:6610]
        Subsystem: Gigabyte Technology Co., Ltd Device [1458:2270]
        Kernel driver in use: radeon
--
02:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Park [Mobility Radeon HD 5430] [1002:68e1]
        Subsystem: ASUSTeK Computer Inc. Caicos [Radeon HD 5450] [1043:3000]
        Kernel driver in use: radeon
ls -la /sys/class/drm/card?
lrwxrwxrwx 1 root root 0 Mar  7 14:53 /sys/class/drm/card0 -> ../../devices/pci0000:00/0000:00:02.0/0000:01:00.0/drm/card0
lrwxrwxrwx 1 root root 0 Mar  7 14:53 /sys/class/drm/card1 -> ../../devices/pci0000:00/0000:00:04.0/0000:02:00.0/drm/card1

and the link to my Xorg.0.log: http://paste.opensuse.org/46283991

I’m running with latest stable Xorg and drivers and with 3.13 kernel (all from opensuse buildservice repos). I have full compositing support and no problems with the OLAND chipset (as I said is the one that drives the two working displays).

Thanks again for your time. I want to avoid the binary driver as hell…