Jump to content

[Guide] SurfacePro 1 & 2 Osx-Android-Windows multiboot


JahStories
 Share

2,617 posts in this topic

Recommended Posts

(surface2)

 

I'm happy you figured out how to enable Qe & Ci, to fix the glitches you can try to use another platform id in the clover config file.

But the main issue in this case is fixing "the clock"...

the audio and other peripherals drivers are just a minor problem, hope you get it fixed.

 

For some reason, it refuses to accept ig-platform-id's set in the Clover plist, which was why I had to do it using a ssdt.aml patch (not that this is difficult). However, I've tried just about every platform ID known to man and have it working pretty well now, with the occasional glitch that just requires a displayport reset.

 

I'm working on the clock problem as we speak trying to find ways to get that fixed. Audio will be a pain, since it's a Realtek ACL280 which doesn't seem to be supported by anyone yet. I also have no battery/power support at all. How did you go about battery status on the first pro?

 

EDIT: The CPU sits at 23x without nullcpu, so its not an issue currently.

Link to comment
Share on other sites

Using the battery related pack in the main post, without the AppleSmartBattery kext that causes panik, there is partial battery support, the icon on the menubar don't show actual battery state, but it warns when the battery is draining and show the remaining time.

Link to comment
Share on other sites

(surface2)

 

I have full battery support working with RehabMan's battery manager (manually patched the DSDT), 12 states of power control using native kexts, and sound working with VoodooHDA. Sleep/waking from sleep works fine. 

 

I get an interesting message while booting:

 

Slow TSC, setting rtc.nanoshift_time = 4

 

I'm not sure what effect it has on the RTC, but I'll be trying some kernel patches in the near future to see if I can remedy the issue.

 

The problem is indeed with xnu-2422.1.72/osfmk/i386/rtclock.c. I've forced shift to 0 and the clock is much better. It's currently about 1/10th a second too fast, which I'm working to rectify.

 

Actually, it appears that the TSC value is being transmitted incorrectly... either by Clover or something else. In any event, the TSC value is being displayed as the bus speed rather than the max CPU frequency, which forced the RTC device to "shift" the results to try to keep up. By forcing the TSC value in the kernel itself, I now have a completely functional clock.

 

EDIT: Confirmed, clock is fixed by forcing TSC value. I'll see if I can find a legitimate way of gaining this value outside of querying the TSC register so it's more compatible than with just one specific device. Afterwards I'll update the guide with all the new changes I've made along the way.

 

EDIT2: Also, Microsoft changed the pen id between Surface and Surface Pro 2, so the touch-base driver currently only works with touch and not the pen. I e-mailed them the new ID's so they can update their driver. The new ID's are VID 0x045E / PID 0x079C.

  • Like 1
Link to comment
Share on other sites

(surface2)

 

I have full battery support working with RehabMan's battery manager (manually patched the DSDT), 12 states of power control using native kexts, and sound working with VoodooHDA. Sleep/waking from sleep works fine. 

 

I get an interesting message while booting:

 

Slow TSC, setting rtc.nanoshift_time = 4

 

I'm not sure what effect it has on the RTC, but I'll be trying some kernel patches in the near future to see if I can remedy the issue.

 

The problem is indeed with xnu-2422.1.72/osfmk/i386/rtclock.c. I've forced shift to 0 and the clock is much better. It's currently about 1/10th a second too fast, which I'm working to rectify.

 

Actually, it appears that the TSC value is being transmitted incorrectly... either by Clover or something else. In any event, the TSC value is being displayed as the bus speed rather than the max CPU frequency, which forced the RTC device to "shift" the results to try to keep up. By forcing the TSC value in the kernel itself, I now have a completely functional clock.

 

EDIT: Confirmed, clock is fixed by forcing TSC value. I'll see if I can find a legitimate way of gaining this value outside of querying the TSC register so it's more compatible than with just one specific device. Afterwards I'll update the guide with all the new changes I've made along the way.

 

EDIT2: Also, Microsoft changed the pen id between Surface and Surface Pro 2, so the touch-base driver currently only works with touch and not the pen. I e-mailed them the new ID's so they can update their driver. The new ID's are VID 0x045E / PID 0x0799.

 

Hi, Great Job ...

 

The clock issue is the main problem.

I hope you figure out a working solution for all the Surface Pro 2 users soon.

 

If you are ready, can you make a detailed guide ?

 

Tx in advance ... :-)

Link to comment
Share on other sites

Hi, Great Job ...

 

The clock issue is the main problem.

I hope you figure out a working solution for all the Surface Pro 2 users soon.

 

If you are ready, can you make a detailed guide ?

 

Tx in advance ... :-)

 

I'll be updating the instructions with all the files needed later tonight (including a kernel to fix the clock issue). I just want to clean up the DSDT edits I made for the battery and power support, and of course make the TSC fix in the kernel more dynamic instead of a static, one processor only fix.

Link to comment
Share on other sites

ehi SonicRat happy you fixed almost everything on the surface2 

this is a clean dsdt extracted from the first surface pro, can you check it out?

maybe we can fix the issues on the first surface pro, sleep would be great but even battery could make it perfect :)

thanks 

Link to comment
Share on other sites

Sure, I'll take a look, as that's next on my list is tackling the DSDT's. Once I have all of those squared away, I'll be narrowing down my "required kexts." I've got the kernel all fixed and ready to go. It tries to identify the i5-4200u CPU ID and then assigns the correct TSC frequency, or boots normally if its not found. I'm also working on fixing the USB 3.0 sleep issue as well.

 

In other news, touch-base added Surface Pro 2 support to their drivers.

 

 

EDIT: Oh! Also, there's another way to install that saves your original Windows installation and keeps the recovery partitions.

 

1) Open Disk Management in Windows 8/8.1

2) Select the C:\ partition, right click and goto "Shrink Volume"

3) Shrink volume to desired size

4) Format the new partition as NTFS and assign it a drive letter.

5) Start the mavericks installer, open Disk Utility, then "erase/reformat" the newly created NTFS partition as HFS+

6) Install to newly formatted HFS+ partition

7) Afterwards, install Clover UEFI bootloader to the HD

Link to comment
Share on other sites

mhhh nice, but i think is better to format the disk since there is no native support to boot MBR on osx, GUID instead is supported by both and on a 128gb every gb is precious so i think that is better without recovery partition, that may not work without secure boot.

 

btw i'm editing the first post to remove all those warning on the surface 2 steps ;)

Link to comment
Share on other sites

Surface2

The Surface Pro 2 comes default with a GUID partition map, did your SP have a MBR map?

Cool, that is a nice advantage for the Surface Pro 2.

I have a 256GB version. I think it's nice that I can leave the recover partition on the Surface.

 

I would be happy for a good working dual boot Surface Pro 2. This will be the best hackintosh in the world.

I'm looking forward for your guide ...

Link to comment
Share on other sites

Try this.

 

1) Remove VoodooBattery and any other battery management kexts

2) Install "clean" Mavericks AppleACPIPlatform.kext -- it may work with the patched one, but there's no longer a need for it and it causes problems for native power management, so toss it and go with the original mavericks one

3) Install new ACPIBatteryManager.kext from here: https://code.google.com/p/os-x-acpi-battery-driver/downloads/list

 

Remove caches, reboot, and see if it gives you normal power display/battery status in System Information.

 

 

In other news, I'm just about done with the SP2 stuff... the only thing driving me nuts is the backlight. I have it working, but it only functions after the computer has "woke" from a sleep.... it doesn't work right after a boot. That's the last hangup on the SP2 side. Other than that, just about everything seems to work well.

 

EDIT: Seems the DSDT went missing? Reattached....

dsdt.aml.zip

  • Like 2
Link to comment
Share on other sites

I can suggest you to try generating a new smbios with clover configurator,

its better even for editing themes and such...

As far as i've tried with the surface 1 i can't access the App Store or iCloud at all, i just receive a warn about an unknown error... :/

Some said that its hard to make it work without an ethernet interface on en0... 

 

Good luck!

Link to comment
Share on other sites

Share your wisdom :-)

 

Does the APP STORE and Icloud work on the SP2 ?

 

I don't have network on it at all yet....

 

 

I can suggest you to try generating a new smbios with clover configurator,

its better even for editing themes and such...

As far as i've tried with the surface 1 i can't access the App Store or iCloud at all, i just receive a warn about an unknown error... :/

Some said that its hard to make it work without an ethernet interface on en0... 

 

Good luck!

I'm not sure who you were talking to in particular, but I'm using MacBookAir6,2 which gives me the most power states for the processor. Once I get this backlight taken care of I should be just about done with the SP2.

 

 

EDIT: Did it not attach the SP1 DSDT battery fix? I don't see it on my post any longer.

Link to comment
Share on other sites

the fix worked only with the kext, no dsdt used or seen in your later post.

 

btw

 

I was suggesting clover configurator only to create a correct serial and for easier editing of the config.plist in clover and to try fixing the iCloud access

If you take a look on the forum there is a thread about fixing the access on the first surface, but it isn't answered yet,

and there you will see that some folks suggested me that the problem was the en0 ethernet.

 

There isn't any problem at all on the surface one with power states with nullcpu, but without it the blackscreen after sleep issue is still present, so i think it's not nullcpu that break sleep,

maybe your dsdt could help...

 

hope so 

:)

Link to comment
Share on other sites

the fix worked only with the kext, no dsdt used or seen in your later post.

 

btw

 

I was suggesting clover configurator only to create a correct serial and for easier editing of the config.plist in clover and to try fixing the iCloud access

If you take a look on the forum there is a thread about fixing the access on the first surface, but it isn't answered yet,

and there you will see that some folks suggested me that the problem was the en0 ethernet.

 

There isn't any problem at all on the surface one with power states with nullcpu, and without it the blackscreen after sleep issue is still present.

 

Oh, in that case, you're likely not getting native battery support and its coming through the modified ACPIPlatform.kext. I fixed the earlier post with the DSDT now, so it should fix that problem for you and enable native power management and battery support with the ACPIBatteryStatus.kext. Just download the dsdt.aml and stick it in EFI/CLOVER/ACPI/patched/.

 

 

Do you have HWSensors installed? It lets you see what power state the processor is running in. Does your SP1 alternate states or does it sit fixed at one particular level? The SP2 requires "native" ACPIPlatform and the 10.8.5 AppleIntelCPUPowerManagement.

Link to comment
Share on other sites

 Share

×
×
  • Create New...