Graphics on MacBook Pro retina 10.1

– Firstly I would just like to mention that openSUSE 13.1 runs without any major problems out of the box using GRUB2 and UEFI on a MacBook
– Thanks to everyone that worked hard on this.

The laptop display and HDMI port works, but I’d like to enable the following;

  • Switch between integrated and discreet display
  • Use a Mini DisplayPort with an external screen

I tried plugging in a MDP adapter at various stages.
Before boot, login screen does not show, after login, display locks up (Caps and Num Lock still responds)
In single user mode I can see that the Mini DisplayPort adapter is detected in /sys/class/drm/card0-DP-1/status

After some digging through the logs it turns out it’s the nouveau driver that breaks when the MDP is plugged.

I was planning on installing Bumblebee (http://en.opensuse.org/SDB:NVIDIA_Bumblebee) hoping that it resolves the problem, but apparently Apple doesn’t use the NVIDIA Optimus technology. I’m not sure if Bumblebee will fix it or worsen it.

I tried vgaswitcheroo to switch between the display cards using
echo <switcheroo_command> > /sys/kernel/debug/vgaswitcheroo/switch
but most of them either do nothing (except for OFF) or lock up the display.

Does anybody have any suggestions or experience with this?

Some system information:

cat /etc/os-release


NAME=openSUSE
VERSION="13.1 (Bottle)"
VERSION_ID="13.1"
PRETTY_NAME="openSUSE 13.1 (Bottle) (x86_64)"
ID=opensuse
ANSI_COLOR="0;32"
CPE_NAME="cpe:/o:opensuse:opensuse:13.1"
BUG_REPORT_URL="https://bugs.opensuse.org"
HOME_URL="https://opensuse.org/"
ID_LIKE="suse"

lspci -nnk | grep VGA -A2


00:02.0 VGA compatible controller [0300]: Intel Corporation 3rd Gen Core processor Graphics Controller [8086:0166] (rev 09)
        Subsystem: Apple Inc. Device [106b:00f7]
        Kernel driver in use: i915
--
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GK107M [GeForce GT 650M Mac Edition] [10de:0fd5] (rev a1)
        Subsystem: Apple Inc. Device [106b:00f2]
        Kernel driver in use: nouveau

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


lrwxrwxrwx 1 root root 0 Oct  2 07:11 /sys/class/drm/card0 -> ../../devices/pci0000:00/0000:00:01.0/0000:01:00.0/drm/card0
lrwxrwxrwx 1 root root 0 Oct  2 07:11 /sys/class/drm/card1 -> ../../devices/pci0000:00/0000:00:02.0/drm/card1

ls /sys/class/drm/*/status | xargs -I {} -i bash -c “echo -n {}: ; cat {}”


/sys/class/drm/card0-DP-1/status:disconnected
/sys/class/drm/card0-DP-2/status:disconnected
/sys/class/drm/card0-HDMI-A-1/status:connected
/sys/class/drm/card0-eDP-1/status:connected
/sys/class/drm/card1-VGA-1/status:disconnected

cat /sys/kernel/debug/vgaswitcheroo/switch


0:DIS:+:Pwr:0000:01:00.0
1:IGD: :Pwr:0000:00:02.0
2:DIS-Audio: :Pwr:0000:01:00.1

Some dmidecode info


Handle 0x002E, DMI type 0, 24 bytes
BIOS Information
        Vendor: Apple Inc.
        Version: MBP101.88Z.00EE.B03.1212211437
        Release Date: 12/21/2012
        ROM Size: 8192 kB
        Characteristics:
                PCI is supported
                BIOS is upgradeable
                BIOS shadowing is allowed
                Boot from CD is supported
                Selectable boot is supported
                ACPI is supported
                IEEE 1394 boot is supported
                Smart battery is supported
                Function key-initiated network boot is supported
        BIOS Revision: 0.1

Handle 0x002F, DMI type 1, 27 bytes
System Information
        Manufacturer: Apple Inc.
        Product Name: MacBookPro10,1
        Version: 1.0
        Serial Number: xxxxxxxxxxxx
        UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
        Wake-up Type: Power Switch
        SKU Number: System SKU#
        Family: Mac

zypper search -s nouveau


S | Name                          | Type    | Version      | Arch   | Repository
--+-------------------------------+---------+--------------+--------+------------------------
  | libXvMC_nouveau               | package | 9.2.3-61.9.1 | x86_64 | openSUSE-Current-Update
  | libXvMC_nouveau               | package | 9.2.2-61.6.1 | x86_64 | openSUSE-Current-Oss
  | libXvMC_nouveau               | package | 9.2.3-61.9.1 | i586   | openSUSE-Current-Update
  | libXvMC_nouveau               | package | 9.2.2-61.6.1 | i586   | openSUSE-Current-Oss
  | libXvMC_nouveau-32bit         | package | 9.2.3-61.9.1 | x86_64 | openSUSE-Current-Update
  | libXvMC_nouveau-32bit         | package | 9.2.2-61.6.1 | x86_64 | openSUSE-Current-Oss
i | libdrm_nouveau2               | package | 2.4.46-3.2.2 | x86_64 | openSUSE-Current-Oss
v | libdrm_nouveau2               | package | 2.4.46-3.2.2 | i586   | openSUSE-Current-Oss
i | libdrm_nouveau2-32bit         | package | 2.4.46-3.2.2 | x86_64 | openSUSE-Current-Oss
  | libvdpau_nouveau              | package | 9.2.3-61.9.1 | x86_64 | openSUSE-Current-Update
  | libvdpau_nouveau              | package | 9.2.2-61.6.1 | x86_64 | openSUSE-Current-Oss
  | libvdpau_nouveau              | package | 9.2.3-61.9.1 | i586   | openSUSE-Current-Update
  | libvdpau_nouveau              | package | 9.2.2-61.6.1 | i586   | openSUSE-Current-Oss
  | libvdpau_nouveau-32bit        | package | 9.2.3-61.9.1 | x86_64 | openSUSE-Current-Update
  | libvdpau_nouveau-32bit        | package | 9.2.2-61.6.1 | x86_64 | openSUSE-Current-Oss
i | xorg-x11-driver-video-nouveau | package | 1.0.9-3.1.2  | x86_64 | openSUSE-Current-Oss
v | xorg-x11-driver-video-nouveau | package | 1.0.9-3.1.2  | i586   | openSUSE-Current-Oss

zypper search -s intel


S | Name                   | Type       | Version       | Arch   | Repository
--+------------------------+------------+---------------+--------+-------------------------
i | intel-gpu-tools        | package    | 1.3-5.1.2     | x86_64 | openSUSE-Current-Oss
v | intel-gpu-tools        | package    | 1.3-5.1.2     | i586   | openSUSE-Current-Oss
i | libdrm_intel1          | package    | 2.4.46-3.2.2  | x86_64 | openSUSE-Current-Oss
v | libdrm_intel1          | package    | 2.4.46-3.2.2  | i586   | openSUSE-Current-Oss
i | libdrm_intel1-32bit    | package    | 2.4.46-3.2.2  | x86_64 | openSUSE-Current-Oss
i | ucode-intel            | package    | 20130906-6.2  | x86_64 | openSUSE-Current-Update
v | ucode-intel            | package    | 20130906-1.1  | x86_64 | openSUSE-Current-Oss
v | ucode-intel            | package    | 20130906-6.2  | i586   | openSUSE-Current-Update
v | ucode-intel            | package    | 20130906-1.1  | i586   | openSUSE-Current-Oss
  | ucode-intel            | srcpackage | 20130906-6.2  | noarch | openSUSE-Current-Update
i | vaapi-intel-driver     | package    | 1.2.0-2.1.1   | x86_64 | openSUSE-Current-Oss
v | vaapi-intel-driver     | package    | 1.2.0-2.1.1   | i586   | openSUSE-Current-Oss
i | xf86-video-intel       | package    | 2.99.906-12.1 | x86_64 | openSUSE-Current-Update
v | xf86-video-intel       | package    | 2.99.906-8.1  | x86_64 | openSUSE-Current-Update
v | xf86-video-intel       | package    | 2.99.906-4.1  | x86_64 | openSUSE-Current-Update
v | xf86-video-intel       | package    | 2.99.905-1.1  | x86_64 | openSUSE-Current-Oss
v | xf86-video-intel       | package    | 2.99.906-12.1 | i586   | openSUSE-Current-Update
v | xf86-video-intel       | package    | 2.99.906-8.1  | i586   | openSUSE-Current-Update
v | xf86-video-intel       | package    | 2.99.906-4.1  | i586   | openSUSE-Current-Update
v | xf86-video-intel       | package    | 2.99.905-1.1  | i586   | openSUSE-Current-Oss
  | xf86-video-intel       | srcpackage | 2.99.906-12.1 | noarch | openSUSE-Current-Update
  | xf86-video-intel       | srcpackage | 2.99.906-8.1  | noarch | openSUSE-Current-Update
  | xf86-video-intel       | srcpackage | 2.99.906-4.1  | noarch | openSUSE-Current-Update
  | xf86-video-intel-32bit | package    | 2.99.906-12.1 | x86_64 | openSUSE-Current-Update
  | xf86-video-intel-32bit | package    | 2.99.906-8.1  | x86_64 | openSUSE-Current-Update
  | xf86-video-intel-32bit | package    | 2.99.906-4.1  | x86_64 | openSUSE-Current-Update
  | xf86-video-intel-32bit | package    | 2.99.905-1.1  | x86_64 | openSUSE-Current-Oss

Thanks in advance

Having a look at the problem there are a few things I can try:

  • Upgrading libdrm_nouveau2 using the X11: XOrg repo
  • Install the NVIDIA driver
  • Install the NVIDIA driver manually
  • Ugrade to Tumbleweed

I read a few places about the libdrm_nouveau2 in X11: XOrg being unstable, but that depends on your point of view.
I decided to skip it and try the NVIDIA driver first

I first tried the NVIDIA driver from the repositories, didn’t work. Even tried different versions, no go.
I eventually I gave up on this option.

After installing the NVIDIA driver manually everything worked. The HDMI, DisplayPort, everything. Games worked correctly, etc…
** BUT**, I don’t think I’ll be keeping it.
The nouveau driver uses modeset, and NVIDIA doesn’t. Which is like going back 10 years.
Things don’t fluently and seamlessly work, there are all kinds of niggly irritating bugs and annoyances all over the show.
Obviously /sys/kernel/debug/vgaswitcheroo/switch is not available any more and my battery life is ruined.
The fan will also be worn out within a year.
If I have my choice, I’ll put it away and only take it out for games, that’s how bad it is.

I’m still contemplating switching to Tumbleweed.
Having used it before it’s familiar territory but I need a stable environment on my laptop.

Here’s an idea; run OS X on it because it was designed specifically for it?

Here’s an idea; run OS X on it because it was designed specifically for it?

And miss out on hacking Linux to make it work?
Where would the fun in that be?

I’ll find an acceptable way of getting it to work.

Some play games for entertainment, I hack and break computers in weird and exciting ways!

To each their own, I have an MBP that I run OS X on (actually multiple) and SUSE in a VM.

I’m a pragmatic.