Jump to content

[Guide] 10.11 El Capitan On the Surface Pro 4


maj1es2tic
 Share

232 posts in this topic

Recommended Posts

maj1es2tic

 

I tried platform ID 0x19230000 and it fixed the glitches in graphics. Can you try the same thing and let me know if it works

 

Thanks

Good deal, that seems hopeful. Would you mind posting your ioreg when you get a chance? Thx!

Never mind. Doing that fixed all the glitches and the desktop looked AWESOME but brought up a whole bunch of new issues. No videos will play, my USB wifi and Bluetooth stopped working. Not sure what I did. Was really excited for a sec there. haha.

 

Actually, I just dug into the binary and that's not a valid device id.  Oh well....

Link to comment
Share on other sites

I'm wondering if when you did that OSX knowing that it was invalid changed it to something that was. Like an older model (HD 4600?) If you can reproduce it check your "about" to see what model it shows...

 

Edit: and definitely save an ioReg if you get it working again so we have a "snapshot" of what OSX is doing / seeing to make it work. :)

 

 

Never mind. Doing that fixed all the glitches and the desktop looked AWESOME but brought up a whole bunch of new issues. No videos will play, my USB wifi and Bluetooth stopped working. Not sure what I did. Was really excited for a sec there. haha.

Good question. I don't have an adapter at home but I'll check it out when I get to my office on Monday. :-)

 

EDIT* - Out of curiosity, have you connected anything to the mini displayport connector? I'd be curious to know if it displayed anything.

Good news!!! Setting ig-platform-id to 0x1923000 fixed my graphics as well... well, as far as it did for you. it seems that it is picking something else, and that something else has a super low memory, whcih is why you can't play videos and such. when i looked at "about", it still said "Intel HD 520" but it was only showing up as 19mb of memory. So, of course you can't do anything really with it. I saved an IOReg and i'll upload it here so we can figure out what graphics it's really using so we can boost the memory and just use that one instead of the default 1912 or whatever.

Here's my ioreg with graphics set to 1923 and no glitches, but only 19mb of graphics memory.

 

ioreg

It looks like it's picking a default display, like what it uses for the installer. No graphics acceleration enabled. The graphics acceleration is likely what is causing the artifacts because the FrameBuffer isn't fully completed for the HD 5x0 series. Which is probably why OSX keeps setting my device-id to 1916, because it's likely the one Apple engineers are testing with, and the one with the most completed FrameBuffer. (That's just a theory/guess on my part). :-)

My next trials will be to see if the HD 520 would work if i fake it out to be the previous Intel 5th gen processor / gen8 graphics, HD 5500/6000. My gut feeling says my HD 520 would be equivalent to the HD 5500, and the i7's HD 530 would be equivalent to the HD 6000.... Again, just a hunch. 

 

https://software.intel.com/en-us/articles/intel-graphics-developers-guides

Link to comment
Share on other sites

There could be more, but these are the only valid ones I could find in the binary - 

0x191E0000
0x19160000
0x19260000
0x19B10000
0x19120000
0x19120001
0x19170001
0x19120001
0x19320001
0x19160002
0x19260002
0x19E10003
 
0x19160000 matches the device id of the HD 520 so that is why it appears in your ioreg.  Whether or not that will ultimately be the one that works for the core i5 SP4 remains to be seen tho.  I find it interesting that when you put in one that is not valid, it appears in your ioreg under ig-platform-id, but when you were putting in 0x19160000, it was showing up as 0x19120000.  Not sure what to make of that.  Hopefully 10.11.3 will solve some issues for us.
Link to comment
Share on other sites

I'm having a heck of a time trying to figure out how to reload kext caches in 10.11. Is there a trick? I'm editing kexts (info.plist and HEx editing the contents) inside S/L/E. I remove the /S/L/Caches/com.apple.kext.caches folder and reboot.  And none of my changes are being picked up at all.

 

 

EDIT: NVM... It finally picked up a change. Took a few reboots? Or, maybe I didn't delete the caches folder the first time I rebooted? it's late...

Link to comment
Share on other sites

Yeah, so... I changed every device in SKLFrameBuffer kext and no matter what I changed, i saw no improvements in graphics artifacts. When I lowered all of the numbers to 16mb minimum for everything, it got a little bit worse... But when I raised all of the numbers to 128mb, or even 1024mb I saw no marked improvement from stock settings. I'm going to have to give up at this point and wait/hope for a framebuffer fix in 10.11.3 or maybe someone else could come up with a better alternative. 

 

Two things to note...

 

1.) In my "about" and "system report" ... No matter what settings I choose, it always always always says my Graphics adapter is 1536mb of memory. Is that a hard coded text value or is that a possible indicator that the values aren't really being used from SKLFrameBuffer Kext?

 

2.) In my IOREG, drilling down into SKLFramebuffer Controller, it is showing "VRAM,totalMB" as this Hex value, NO MATTER what I have set in the .kext file:

< 00 06 00 00 00 00 00 00 >

3.) Applying this Info.plist change a. ) Seems to have fixed the screen wake up blank issue, and b. ) seems to allow the device to reboot / shut down without kernel panic or other weird issues. Not sure if it's due to another change, but I didn't notice either a or b working properly before. ;-)

vi /System/Library/Extensions/AppleGraphicsControl.kext/Contents/PlugIns/AppleGraphicsDevicePolicy.kext/Contents/Info.plist

CHANGE THIS:
           
<key>Mac-65CE76090165799A</key>
<string>Config2</string>


TO THIS:


<key>Mac-65CE76090165799A</key>
<string>Config1</string>
Link to comment
Share on other sites

I'm having a heck of a time trying to figure out how to reload kext caches in 10.11. Is there a trick? I'm editing kexts (info.plist and HEx editing the contents) inside S/L/E. I remove the /S/L/Caches/com.apple.kext.caches folder and reboot.  And none of my changes are being picked up at all.

 

 

EDIT: NVM... It finally picked up a change. Took a few reboots? Or, maybe I didn't delete the caches folder the first time I rebooted? it's late...

 

Shouldn't normally.  I use kext wizard to delete caches/repair permissions rather than do it manually.

 

 

 

Yeah, so... I changed every device in SKLFrameBuffer kext and no matter what I changed, i saw no improvements in graphics artifacts. When I lowered all of the numbers to 16mb minimum for everything, it got a little bit worse... But when I raised all of the numbers to 128mb, or even 1024mb I saw no marked improvement from stock settings. I'm going to have to give up at this point and wait/hope for a framebuffer fix in 10.11.3 or maybe someone else could come up with a better alternative. 

 

Two things to note...

 

1.) In my "about" and "system report" ... No matter what settings I choose, it always always always says my Graphics adapter is 1536mb of memory. Is that a hard coded text value or is that a possible indicator that the values aren't really being used from SKLFrameBuffer Kext?

 

2.) In my IOREG, drilling down into SKLFramebuffer Controller, it is showing "VRAM,totalMB" as this Hex value, NO MATTER what I have set in the .kext file:

< 00 06 00 00 00 00 00 00 >

 

Hard to know what's really happening.  Maybe the framebuffer values are hardcoded while they are working to complete it.  This stuff is over my head, I only know enough to be dangerous to my own hardware.  lol.

Link to comment
Share on other sites

When I attempt a DSDT edit to change my GFX0 to an HD 5500 (there's a post in the forum about making that card work), it kernel panics. I'm likely running into the bios issue that OSX has with that device. My GPU in Windows is claiming that it's being given 128mb dedicated from the bios and I don't know or feel comfortable with hacking a variable in my bios to set it to 64mb. :-/

Link to comment
Share on other sites

... In the meantime ...

 

If you look at the initial post, I added a link to a YouTube video on instructions for installing Cappy in VMware. This isn't an ideal solution, but for now it's as good as it gets if you want a working and usable OSX. Touchscreen passes through and if you make the proper VMX file edits, the App Store and iCloud and iMessages and even FaceTime audio works. The downside is that in a Vm you get no more than 128mb graphics so you can't really watch videos or do any websites that involve flash or video rendering. The cameras don't pass through either. But it's pretty smooth other than those few things. :-)

Link to comment
Share on other sites

When I attempt a DSDT edit to change my GFX0 to an HD 5500 (there's a post in the forum about making that card work), it kernel panics. I'm likely running into the bios issue that OSX has with that device. My GPU in Windows is claiming that it's being given 128mb dedicated from the bios and I don't know or feel comfortable with hacking a variable in my bios to set it to 64mb. :-/

 

I've done it on other computers, it's not that big a deal *provided* you can extract the IFR, but I can't imagine that spoofing the 5500 would work given that Broadwell and Skylake are two totally different architectures.  :-(

Link to comment
Share on other sites

so, I'm playing with Clover config.plist a little more. And, it looks like my graphics artifacts are almost all gone.  When it boots up now, the main interface looks great, and i get a real cursor instead of a block. It was a coming up as a square blob, and then moving the cursor rapidly would turn it into a real cursor.  Also, the bottom menu was all kinds of colors, now it comes up as the beautiful semi-clear bar that it should be ... the only artifacts left is the top menu bar, mainly when you click on any dropdown. the dropdown is black with white text, and then you see some artifacting (blues and such) streak the top menu bar... until you close the dropdown then it resets itself.

 

The only thing I really changed was dropping:

<key>QPI</key>
<integer>100</integer>

Which lets Clover figure it out. I think there's some correlation to cpu / clock speed / timing ... that is going to make the artifacts go away completely. But, I'm not sure what to change really at this point.

 

 

I also changed the AppleIntelSKLGraphicsFramebuffer.kext to this (everywhere [replace all] not just in 00001619 section):

01030303 00000008 00000008 00000005

I think 000000005 is a great value for the cursor. Anything less and it shows up as a block/blob of text until you move the mouse around.

 

Still trying to figure out the best value for frame buffer... But I really think it has something to do with clock speed / timing. 

Link to comment
Share on other sites

Hi

great, that somebody managed it to install OS X on the Surface Pro 4. i didn't try it, because I also upgraded to the Surface Pro 4 from my Surface Pro 3 and realized, that the WIFI/Bluetooth Combo is still the same <censored>

 

So i have two questions:

 

1. did you need the TypeCover.kext or did the new TypeCover work out of the box ?

2. do you have the same problem like me and many others, that WIFI is not working, when you attach a USB 3.0 device (stick or hub) ? This is one reason, i didn't try to install it via A USB 3.0 stick. This problem is discussed in http://answers.microsoft.com/en-us/surface/forum/surfpro4-surfnetwork/wifi-and-usb30-peripheral-issue-on-surface-pro4/a532fab4-b41f-4f8c-a5bf-0bd559b49d74

 

So, good luck

Gkarg

Link to comment
Share on other sites

1.) No, the typecover works out of the box now.

2.) I installed using a USB 3.0 device, and USB 3.0 seems to be working just fine. I don't have a USB WIFI card to test out, but I don't see any reason why it wouldn't work.

 

 

Hi
great, that somebody managed it to install OS X on the Surface Pro 4. i didn't try it, because I also upgraded to the Surface Pro 4 from my Surface Pro 3 and realized, that the WIFI/Bluetooth Combo is still the same <censored>

So i have two questions:

1. did you need the TypeCover.kext or did the new TypeCover work out of the box ?
2. do you have the same problem like me and many others, that WIFI is not working, when you attach a USB 3.0 device (stick or hub) ? This is one reason, i didn't try to install it via A USB 3.0 stick. This problem is discussed in http://answers.microsoft.com/en-us/surface/forum/surfpro4-surfnetwork/wifi-and-usb30-peripheral-issue-on-surface-pro4/a532fab4-b41f-4f8c-a5bf-0bd559b49d74

So, good luck
Gkarg

Link to comment
Share on other sites

1.) No, the typecover works out of the box now.

2.) I installed using a USB 3.0 device, and USB 3.0 seems to be working just fine. I don't have a USB WIFI card to test out, but I don't see any reason why it wouldn't work.

Hi

Ok - thanks for 1.)

For 2.) the problem is not, that a USB WIFI stick is not working. The problem is, that while a USB 3.0 device - e.g. USB stick is attached to the Surface Pro 4 USB port, the internal WIFI doesn't work any more - seems to be an problem with interferences from USB 3.0 - the details are explained in the referenced thread.

But since the internal WIFI does not work under OS X anyway, nobody will suffer from this problem, while booting from an USB 3.0 OS X stick.

 

I ran into this problem, because i tried to create the USB stick under Windows with bdutility - http://www.insanelymac.com/forum/topic/283190-bdutilityexe-make-clover-bootflash-with-macosx-distr-under-windows/

 

Thanks

Gkarg

Link to comment
Share on other sites

It appears that the surface pro trackpad is a Wacom device. I booted up to Ubuntu and noticed the device ID. When I searched for the device ID on the internet, Wacom drivers popped up. ;-)

 

Also, the Pen and digitizer is N-Trig (as noted from the iFixit tear down). If the touchscreen were a straight up USB interface, it would work natively in most distros as a USB HID device. 

 

I have heard that the next release of Ubuntu will have support for the touchscreen.  It already works great for the Wifi. I'm really leaning toward porting the wifi drivers to OSX. I can't believe no one else has done this yet. it would help so many people with Marvel Avastar chips, not just surface. 

Link to comment
Share on other sites

It appears that the surface pro trackpad is a Wacom device. I booted up to Ubuntu and noticed the device ID. When I searched for the device ID on the internet, Wacom drivers popped up. ;-)

 

Also, the Pen and digitizer is N-Trig (as noted from the iFixit tear down). If the touchscreen were a straight up USB interface, it would work natively in most distros as a USB HID device. 

 

I have heard that the next release of Ubuntu will have support for the touchscreen.  It already works great for the Wifi. I'm really leaning toward porting the wifi drivers to OSX. I can't believe no one else has done this yet. it would help so many people with Marvel Avastar chips, not just surface. 

Hey, do you mind coming back into the VoodooI2C gitter to share some of the details of the touchscreen? I'm curious to know what you found out. Also, I don't want to burst your bubble but the reason no one has ported the WiFi drivers is that it is extremely difficult. Firstly, the OS X header files for IO802.11 is not open source so the only knowledge we have of the class structure is from reverse engineering. Secondly, the wifi drivers for the marvell is just so much more complicated than even the intel drivers that the iwidarwin project attempted to port (which were never successfully completed). In short, I don't think there has ever been a successful wifi driver port from Linux to OS X.

 

If I had access to an SP3 or an SP4, I could easily sort out bluetooth, thats fairly simple from what I've seen while looking at the marvell source. The WiFi is an entirely different beast though.

  • Like 1
Link to comment
Share on other sites

I can join in a while, I have family visiting for the holidays. I also need to reinstall OSX on my SP4, as one of the hacks I did seems to have destroyed it's booting ability. Ooops.

 

 

 

Hey, do you mind coming back into the VoodooI2C gitter to share some of the details of the touchscreen? I'm curious to know what you found out. Also, I don't want to burst your bubble but the reason no one has ported the WiFi drivers is that it is extremely difficult. Firstly, the OS X header files for IO802.11 is not open source so the only knowledge we have of the class structure is from reverse engineering. Secondly, the wifi drivers for the marvell is just so much more complicated than even the intel drivers that the iwidarwin project attempted to port (which were never successfully completed). In short, I don't think there has ever been a successful wifi driver port from Linux to OS X.

 

If I had access to an SP3 or an SP4, I could easily sort out bluetooth, thats fairly simple from what I've seen while looking at the marvell source. The WiFi is an entirely different beast though.


Also it might not be impossible to port the Wifi adapter to an ethernet driver, even if it's a command-line based setup for now, because those interfaces are documented. ;-) I just want to be able to use this thing with touch, so for me, it's worth my time to figure out the porting of the Wifi, if someone else is working on the touch. I have a background in C/C++/Java programming, and long long ago, I made a monitor for the ndiswrapper for linux, so I'm a little bit familiar with programming for network devices already. ;-) Plus, it's a challenge to hear that no one else is or has or can do it. 

Link to comment
Share on other sites

I can join in a while, I have family visiting for the holidays. I also need to reinstall OSX on my SP4, as one of the hacks I did seems to have destroyed it's booting ability. Ooops.

 

 

 

 

Also it might not be impossible to port the Wifi adapter to an ethernet driver, even if it's a command-line based setup for now, because those interfaces are documented. ;-) I just want to be able to use this thing with touch, so for me, it's worth my time to figure out the porting of the Wifi, if someone else is working on the touch. I have a background in C/C++/Java programming, and long long ago, I made a monitor for the ndiswrapper for linux, so I'm a little bit familiar with programming for network devices already. ;-) Plus, it's a challenge to hear that no one else is or has or can do it.

 

Hi

There is already an XCode Project, which i referenced in the following post:

http://www.insanelymac.com/forum/topic/299021-macosx-on-the-surface-pro-3/?p=2109875

(there are interesting infos in the following posts, also) which contains the stub for WIFI and the code for bluetooth - but i never got the Surface Pro 3 marvel firmware loaded - this would be a good starting point for sure.

The last version / statement about porting WIFI can be found at

http://www.insanelymac.com/forum/topic/292645-guide-surfacepro-1-2-osx-android-windows-multiboot/page-76?do=findComment&comment=2017083

 

Gkarg

Link to comment
Share on other sites

I tried to recompile the avastar kext. Inserted the firmware from here, but i'm not sure that's the right firmware. I used the PCIe/usb. but maybe it's the other one?

 

Anyways, after adding a bunch of missing header files, it compiled, I changed the info.plist to reflect the wifi for the SP4 (Vendor 11AD, device 2B38 [converted to decimal/integer since the plist has them as integers]) and it loaded into the kernel without errors. But nothing happened. No bluetooth.

  • Like 1
Link to comment
Share on other sites

Ok... more fun info.

 

Without changing a single thing in the SKLGraphics kext, if I run off of battery without the power cable plugged in, I get better graphics and less artifacting. I'm guessing it has something to do with the cpu running at a different speed/frequency...

Link to comment
Share on other sites

I tried to recompile the avastar kext. Inserted the firmware from here, but i'm not sure that's the right firmware. I used the PCIe/usb. but maybe it's the other one?

 

Anyways, after adding a bunch of missing header files, it compiled, I changed the info.plist to reflect the wifi for the SP4 (Vendor 11AD, device 2B38 [converted to decimal/integer since the plist has them as integers]) and it loaded into the kernel without errors. But nothing happened. No bluetooth.

The SP3's marvell bluetooth no longer works the same way as the SP2's. You need to load the wifi firmware to the card which then enables the bluetooth over USB. It's possible (and maybe probable) that the SP4's works in the same way.

Link to comment
Share on other sites

Finally had a chance to play around with this a bit. I've had no more luck with the video artifacts than anyone else, and IMO until there's a MacBook refresh, we are probably out of luck. OTOH, I was able to get fully patched/functioning set of DSDT/SSDTs together. Combined with a mobile platform id and SMBIOS, brightness control, hi density scaling, and sleep/wake functionality are working. The only oddity with sleep is that if you close the type cover to initiate sleep, upon waking you lose brightness control. This doesn't happen if you let it time out or use the menu. Also, the power button doesn't work for sleep/wake. I removed all the stock DSMs so I think that it's a matter of going back through the original to see if the methods associated with the power button can be written back in cleanly. Also, I am not using the inject all usb kext or the port limit patch. It seems that with the MacBook 11,2 SMBIOS things match up well enough to not need it. And nobody else has mentioned it, but when I did this, the SD card reader was recognized and is functioning. (It's seen as a usb 3.0 device).

 

That's all for now, I'm starting to build the necessary battery patches to get that recognized properly. Our EC device has a lot of things that will have to be fixed before it works tho. :-( hopefully 10.11.3 will have more frame buffer improvements!

Oh, and I also have native power management working after adding a custom CPU to Pike's script. On a plane to New York now, but after I get back from my trip, I'll post up a full compliment of DSDT, SSDTs, config, ioreg, etc. for you guys to dig through.

  • Like 2
Link to comment
Share on other sites

Finally had a chance to play around with this a bit. I've had no more luck with the video artifacts than anyone else, and IMO until there's a MacBook refresh, we are probably out of luck. OTOH, I was able to get fully patched/functioning set of DSDT/SSDTs together. Combined with a mobile platform id and SMBIOS, brightness control, hi density scaling, and sleep/wake functionality are working. The only oddity with sleep is that if you close the type cover to initiate sleep, upon waking you lose brightness control. This doesn't happen if you let it time out or use the menu. Also, the power button doesn't work for sleep/wake. I removed all the stock DSMs so I think that it's a matter of going back through the original to see if the methods associated with the power button can be written back in cleanly. Also, I am not using the inject all usb kext or the port limit patch. It seems that with the MacBook 11,2 SMBIOS things match up well enough to not need it. And nobody else has mentioned it, but when I did this, the SD card reader was recognized and is functioning. (It's seen as a usb 3.0 device).

 

That's all for now, I'm starting to build the necessary battery patches to get that recognized properly. Our EC device has a lot of things that will have to be fixed before it works tho. :-( hopefully 10.11.3 will have more frame buffer improvements!

Oh, and I also have native power management working after adding a custom CPU to Pike's script. On a plane to New York now, but after I get back from my trip, I'll post up a full compliment of DSDT, SSDTs, config, ioreg, etc. for you guys to dig through.

Looking forward to seeing the SSDTs to see if I can help you guys uncover the touchscreen mystery :)

Link to comment
Share on other sites

 Share

×
×
  • Create New...