Jump to content

MacOsX on the Surface Pro 3


LonelyTV
 Share

195 posts in this topic

Recommended Posts

Update 

 

after adding a IOGEAR USB bluetooth and an ultra usb mini stick , i was able to get it working and connected on the internet. However I have done the mistake to upgrade to Yosemite 10.10.2 beta and this had actually screwed up the entire system. It clearly screwed up the graphic driver removing all accelerators and it became hellish slow . So i ended up reinstalling Yosemite 10.10.1 again! 

For the USB dongle I was using the universal RALINK panel + kext .... working wonderfully but the bluetooth seems a bit weird . It doesn't seem to be working properly. While it says the Bluetooth Pan os not connected, it seems however is capable of scanning devices and pair them for a few couples of seconds. 

 

I am wondering id there is any good kext driver for IOGEAR out-there? 

 

overall i have gotten the mobility desired , my only purchase will be the Microsoft bluetooth type cover adaptor making use of type cover 

 

 

post-1477304-0-86836400-1424536447_thumb.jpg

Link to comment
Share on other sites

Hi
great news - got the Type Cover 3 working on the Surface Pro 3 (both keyboard / trackpad):
it took me time to read to all the docs and postings - since I'm a newbie to this (hackintosh and usb drivers) - but now it works.

First - what was the problem ? The Type Cover Keyboard has standard value for bInterfaceClass = 3, but non standard values for bInterfaceSubClass = 0 and bInterfaceProtocol = 3 - therefore the IOUSBHIDDriver never matched (expects bInterfaceClass = 3, bInterfaceSubClass = 1. bInterfaceProtocol = 1)

So how to fix that:

first make a backup of /System/Library/Extensions/IOUSBFamily.kext so you can copy it back if needed


then open terminal
in terminal type:
"cd /System/Library/Extensions/IOUSBFamily.kext/Contents/PlugIns/IOUSBHIDDriver.kext/Contents/"
in terminal type:
"sudo vi Info.plist"
then duplicate the <key>Generic Keyboard</key> section and replace the integer values of bInterfaceProtocol with 0 and bInterfaceSubClass with 3 - so that it looks like the following section (the section in bold is the copy / pasted and modified section):

<key>Generic Keyboard</key>
<dict>
<key>CFBundleIdentifier</key>
<string>com.apple.iokit.IOUSBHIDDriver</string>
<key>HIDDefaultBehavior</key>
<string></string>
<key>IOClass</key>
<string>IOUSBHIDDriver</string>
<key>IOProviderClass</key>
<string>IOUSBInterface</string>
<key>bInterfaceClass</key>
<integer>3</integer>
<key>bInterfaceProtocol</key>
<integer>1</integer>
<key>bInterfaceSubClass</key>
<integer>1</integer>
</dict>
<key>Generic Keyboard</key>
<dict>
<key>CFBundleIdentifier</key>
<string>com.apple.iokit.IOUSBHIDDriver</string>
<key>HIDDefaultBehavior</key>
<string></string>
<key>IOClass</key>
<string>IOUSBHIDDriver</string>
<key>IOProviderClass</key>
<string>IOUSBInterface</string>
<key>bInterfaceClass</key>
<integer>3</integer>
<key>bInterfaceProtocol</key>
<integer>0</integer>
<key>bInterfaceSubClass</key>
<integer>3</integer>
</dict>

in terminal type:
"sudo diskutil repairpermissions /" and let it finish.
in terminal type:
"sudo touch /System/Library/Extensions" and waited while it finished reindexing the extensions.

now reboot and the keyboard and trackpad are working ;-)

So good luck !

The best way to apply this permanently is to build a codeless kext. Anybody with Xcode and a developer account is welcome to create it !

 

EDIT: i have now created the coddles kext - just take a look only posting on the next page

gkarg

  • Like 1
Link to comment
Share on other sites

Hi

great news - got the Type Cover 3 working on the Surface Pro 3 (both keyboard / trackpad):

it took me time to read to all the docs and postings - since I'm a newbie to this (hackintosh and usb drivers) - but now it works.

 

First - what was the problem ? The Type Cover Keyboard has standard value for bInterfaceClass = 3, but non standard values for bInterfaceSubClass = 0 and bInterfaceProtocol = 3 - therefore the IOUSBHIDDriver never matched (expects bInterfaceClass = 3, bInterfaceSubClass = 1. bInterfaceProtocol = 1)

 

So how to fix that:

 

first make a backup of /System/Library/Extensions/IOUSBFamily.kext so you can copy it back if needed

 

 

then open terminal

in terminal type:

"cd /System/Library/Extensions/IOUSBFamily.kext/Contents/PlugIns/IOUSBHIDDriver.kext/Contents/"

in terminal type:

"sudo vi Info.plist"

then duplicate the <key>Generic Keyboard</key> section and replace the integer values of bInterfaceProtocol with 0 and bInterfaceSubClass with 3 - so that it looks like the following section (the section in bold is the copy / pasted and modified section):

 

<key>Generic Keyboard</key>

<dict>

<key>CFBundleIdentifier</key>

<string>com.apple.iokit.IOUSBHIDDriver</string>

<key>HIDDefaultBehavior</key>

<string></string>

<key>IOClass</key>

<string>IOUSBHIDDriver</string>

<key>IOProviderClass</key>

<string>IOUSBInterface</string>

<key>bInterfaceClass</key>

<integer>3</integer>

<key>bInterfaceProtocol</key>

<integer>1</integer>

<key>bInterfaceSubClass</key>

<integer>1</integer>

</dict>

<key>Generic Keyboard</key>

<dict>

<key>CFBundleIdentifier</key>

<string>com.apple.iokit.IOUSBHIDDriver</string>

<key>HIDDefaultBehavior</key>

<string></string>

<key>IOClass</key>

<string>IOUSBHIDDriver</string>

<key>IOProviderClass</key>

<string>IOUSBInterface</string>

<key>bInterfaceClass</key>

<integer>3</integer>

<key>bInterfaceProtocol</key>

<integer>0</integer>

<key>bInterfaceSubClass</key>

<integer>3</integer>

</dict>

 

in terminal type:

"sudo diskutil repairpermissions /" and let it finish.

in terminal type:

"sudo touch /System/Library/Extensions" and waited while it finished reindexing the extensions.

 

now reboot and the keyboard and trackpad are working ;-)

 

So good luck !

 

The best way to apply this permanently is to build a codeless kext. Anybody with Xcode and a developer account is welcome to create it !

 

gkarg

 

Thats great news gkarg. Trying it now on my SP3

 

Thanks

 

Edit: works like a charm. Thanks

Link to comment
Share on other sites

Extraordinary work ...  Well done gkark !

 

on aside, for those like me with less programming skills I wasn't able to edit the IOUSBFamily.kext in the Terminal and VIM. Instead of editing the plist i was using textmate editor.

 

http://macromates.com

 

After installing the textmate editor in to the application folder ,  right mouse click on to the IOUSBFamily.kext , click on to "show package contents"  go to folder PlugIns then again right mouse click on to IOUSBHIDDriver.kext  "show package contents" and open the info.plist with textmate editor.  Duplicating the lines and changing the values as suggested by gkarg is a piece of cake using textmate .

 

Someone should upload the IOUSBFamily.kext  on this forums data base.

Link to comment
Share on other sites

Someone should upload the IOUSBFamily.kext  on this forums data base.

 

 

Hi tranceiver

Someone needs to create a codeless ketx just as an driver for the TypeCover3. This kext will only contain the plist to match the TypeCover3 (vendor/modell) and override the IOUSBFamily.kext, but will not contain any code. The benefit is, that the IOUSBFamily.kext stays, like it is - so a update won't breake it. I didn't have any time more, to begin with that, after spending much time on finding the problem / solution. But I can look also in this, if nobody else provides this kext.

 

Gkarg

Link to comment
Share on other sites

Hi
now the next big step for a working Type Cover 3 on the Surface 3. A working TypeCover 3 kext !
I have created the codeless kext (if you don't want to modify the IOUSBFamily.kext) for the TypeCover3 kext, which is attached to this post. Now it is also using the vendor / model id for correct matching.

The kext contains only a Info.plist for matching the device - nothing more - no binaries.


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>BuildMachineOSBuild</key>
<string>14C99</string>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleGetInfoString</key>
<string>2.2.0, Type Cover 3 Driver for Surface Pro 3.</string>
<key>CFBundleIdentifier</key>
<string>com.mykext.TypeCover3</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>I/O Kit Driver for Type Cover 3 USB HID Devices</string>
<key>CFBundlePackageType</key>
<string>KEXT</string>
<key>CFBundleShortVersionString</key>
<string>2.2.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>2.2.0</string>
<key>NSHumanReadableCopyright</key>
<string>Copyright © 2015 gkarg. All rights reserved.</string>
<key>IOKitPersonalities</key>
<dict>
<key>Generic Keyboard</key>
<dict>
<key>CFBundleIdentifier</key>
<string>com.apple.iokit.IOUSBHIDDriver</string>
<key>HIDDefaultBehavior</key>
<string></string>
<key>IOClass</key>
<string>IOUSBHIDDriver</string>
<key>IOProviderClass</key>
<string>IOUSBInterface</string>
<key>bInterfaceClass</key>
<integer>3</integer>
<key>bInterfaceProtocol</key>
<integer>0</integer>
<key>bInterfaceSubClass</key>
<integer>3</integer>
<key>ProductID</key>
<integer>2012</integer> 
<key>VendorID</key>
<integer>1118</integer> 
</dict>
</dict>
<key>OSBundleCompatibleVersion</key>
<string>1.8</string> 
<key>OSBundleLibraries</key>
<dict>
<key>com.apple.iokit.IOHIDFamily</key>
<string>1.6</string>
<key>com.apple.iokit.IOUSBFamily</key>
<string>4.1.5</string>
<key>com.apple.kpi.bsd</key>
<string>10.4.2</string>
<key>com.apple.kpi.iokit</key>
<string>10.4.2</string>
<key>com.apple.kpi.libkern</key>
<string>10.4.2</string>
<key>com.apple.kpi.mach</key>
<string>10.4.2</string>
</dict>
<key>OSBundleRequired</key>
<string>Console</string>
</dict>
</plist>

So you can install it with Kext Drop or your preferred tool.
You have to enable "kext-dev-mode=1" in the Clover Boot Options to enable the loading of unsigned kext in general - if you like to use it - since I don't have a Apple Developer account to sign it - (if you have one - just create a Xcode project for a driver an delete everything in it - and overwrite it with the posted Info.plist)

Or stick with the solution posted before by editing the IOUSBFamily.kext (which kann be overwritten by an update and needs to be edited again in this case).

 

gkarg

TypeCover3.kext.zip

  • Like 1
Link to comment
Share on other sites

I am wondering what other tweaks have you guys done or found working on surface pro 3 with Yosemite

so far i got; 

 

- out of the box video driver with accelerator. Capable to play HDD videos, good refresh and high resolution. 

- Voodoo sound. Not great quality but acceptable. Everything works.

- Type cover with mouse pad. Fully working. 

- Battery plugin. Working well , showing fully the charge and time left. 

- wireless with mini stick using Radmin software. Perfect working. 

 

anything else?

 

I am still booting with injected kexts using clover boot which is a bit annoying but super fast. Yosemite is working incredible faster with no lags and identicaly to my 2011 late imac. 

Link to comment
Share on other sites

Hi all. I was just scrolling through this thread as I am planning to setup OS X on my sp 3 (i5/128gb) as well this evening.

 

I'm not an expert here but if I got it right, the problem with WiFi/BT is that no one knows the interface (or there is no interface) between WiFi driver/kext and the operating system. However, USB WiFi sticks are working perfectly fine. Can't we just somehow tell OS X that the internal WiFi device is something like an external USB WiFi stick?

 

Sorry if this is a stupid suggestion but I have never done anything closer to hardware than .net and java.

If I can help somehow just let me know :).

 

Edit: Did anybody experience a blue screen with small text on it instead of clover?

Link to comment
Share on other sites

I've created a new guide on how to install Yosemite on the Surface Pro 3. If anyone has issues with installs and such direct questions there so we can get it all on one place and help other users.

 

 

http://www.insanelymac.com/forum/topic/304796-guide-1010-on-the-surface-pro-3/


Hi all. I was just scrolling through this thread as I am planning to setup OS X on my sp 3 (i5/128gb) as well this evening.

 

I'm not an expert here but if I got it right, the problem with WiFi/BT is that no one knows the interface (or there is no interface) between WiFi driver/kext and the operating system. However, USB WiFi sticks are working perfectly fine. Can't we just somehow tell OS X that the internal WiFi device is something like an external USB WiFi stick?

 

Sorry if this is a stupid suggestion but I have never done anything closer to hardware than .net and java.

If I can help somehow just let me know :).

 

Edit: Did anybody experience a blue screen with small text on it instead of clover?

 

Sadly it's the lack of drivers that is holding back WiFi and Bluetooth from working. And, if I recall correctly it's not easy to write them to get it to work. So for now the hardware is deemed "incompatible" until someone figures it out.

 

and what kind of Blue Screen? Did it ask you for a drive key? if so you might need to turn off Bitlocker on your Windows drive.

Link to comment
Share on other sites

the folks from Marvell should totally consider writing drivers for all the platforms if they expect to have over 500 million devices using their chip set by the end of 2017 as advertised....they have opened now the market to linux users. 

Why would they bother writing drivers for this chip if Apple doesn't use it any of their devices? Are you willing to cough up quite a bit of money to fund Marvell's engineering team to write drivers for a platform that requires no official support?

 

I don't see why they should be obliged to write drivers for us. We know the risks of what will and won't work when we install OS X on unsupported devices. It's quite frankly a miracle that OS X even runs on non-Apple hardware without much tinkering in the system. There is a lot that Apple could do to prevent us or at the very least make it harder so I think we should count ourselves lucky.

 

As mentioned before, someone has to be up to the task to porting the drivers from Linux to OS X. Making proper Airport drivers will be very difficult because of the closed source nature of IO802.11 (or whatever the class is called). Ethernet drivers are more open source from what I understand so if anyone is going to port the drivers, it will have to behave a lot like the ralink USB ones.

Link to comment
Share on other sites

according to the readings I've done online , it seems apple has already used Marvell chipset in their first gen. Iphones. They are injecting very cheap products on the market with a highest quality price comparing.

 

I was readong on wiki here;  http://en.wikipedia.org/wiki/Marvell_Technology_Group

 

We know apple loves to create affordable devices packed with best technology, so I will assume they might explore again buying chipsets from Marvell? 

Link to comment
Share on other sites

hey guys need some help... I was able to install yosemite and I have the type cover working however I am not able to boot without the USB.  When I install clover on the OSX partition i don't get an EFI partition, the only EFI partition I can find is the SYSTEM partition from windows 8.

Link to comment
Share on other sites

hey guys need some help... I was able to install yosemite and I have the type cover working however I am not able to boot without the USB. When I install clover on the OSX partition i don't get an EFI partition, the only EFI partition I can find is the SYSTEM partition from windows 8.

Hi

did you try:

 

Open Clover Configurator to mount the EFI partition ( Extra > Mount EFI )

or you can manually mount the EFI partion with "sudo mount -t msdos /dev/disk0s2 /mnt/boot" - where disk0s2 should be replaced by your EFI partition disk number and /mnt/boot needs to be replaced by the mount path you like to use - don't forget to create this with - for my example - "sudo mkdir /mnt/boot"). If you don't know your EFI partition disk number, just execute "diskutil list" - it is the one named "EFI SYSTEM"

 

the you need to cd to your mounted EFI path (for my example "cd /mnt/boot") and execute the following tasks with sudo

sudo mv EFI/Microsoft/Boot/bootmgfw.efi EFI/Microsoft/Boot/bootmgfw-orig.efi

sudo cp EFI/CLOVER/Cloverx64.efi EFI/Microsoft/Boot/bootmgfw.efi

 

or just follow a good guide like:

 

http://www.insanelymac.com/forum/topic/287737-how-toclover-on-efi-partitionadd-to-bios/

 

gkarg

Link to comment
Share on other sites

 Share

×
×
  • Create New...