Jump to content
InsanelyMac Forum
~pcwiz

[How To] Ethernet EFI Strings (device-properties)

Recommended Posts

Well I didn't see this explained anywhere else so here goes. NO guarantee that this will work!:

 

1) Download gfxutil from here

 

2) Place the gfxutil executable on your desktop, open Terminal and run the following commands to copy gfxutil to the bin folder:

 

sudo -s
[enter password]
cp -R ~/Desktop/gfxutil /bin/

 

3) Run the following command in Terminal:

 

gfxutil -f ethernet

 

You get an output something like:

 

DevicePath = PciRoot(0x1)/Pci(0x1c,0x5)/Pci(0x0,0x0)

 

Just drop the "DevicePath = " part and copy the "PciRoot(0x1)/Pci(0x1c,0x5)/Pci(0x0,0x0)" part to the clipboard. Note that the PciRoot path changes depending on your configuration.

 

4) Copy this plist file to a text editor (TextEdit, etc.):

 

<?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>##-your-path-here-##</key>
	<dict>
	<key>built-in</key>
	<string>0x01</string>
	</dict>
</dict>
</plist>

 

Now replace the "##-your-path-here-##" with the PciRoot path you copied to the clipboard. The final plist looks something like this:

 

<?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>PciRoot(0x1)/Pci(0x1c,0x5)/Pci(0x0,0x0)</key>
	<dict>
	<key>built-in</key>
	<string>0x01</string>
	</dict>
</dict>
</plist>

 

Now you have to make sure that this is in plain text. In TextEdit, go to the format menu and click "Make Plain Text". Now save it as "ethernet.plist" on your Desktop, if it asks you whether you are sure you want to save it with that extension, just accept and use .plist.

 

5) Open Terminal again and run the following commands:

 

cd ~/Desktop
gfxutil -i xml -o hex ethernet.plist ethernet.hex
mv ~/Desktop/ethernet.hex ethernet.txt

 

6) There will be a file called "ethernet.txt" on the desktop now. Open this file and you will see a hex string something like this:

 

4b00000001000000010000003f0000000100000002010c00d041030a0100000001010600051c0101
60000007fff0400160000006200750069006c0074002d0069006e0000000500000001

 

Of course your string may be different. Copy this long string to the clipboard. Now, run the following command from Terminal:

 

cp -R /Library/Preferences/SystemConfiguration/com.apple.Boot.plist ~/Desktop/

 

7) Now there will be com.apple.Boot.plist on your desktop. Open the plist with a text editor. It will show something like this:

 

<?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>Kernel</key>
<string>mach_kernel</string>
<key>Kernel Flags</key>
<string></string>
<key>Timeout</key>
<string>5</string>
</dict>
</plist>

 

Your plist may differ from this one, don't worry about it. Now, right before the "" line, add these two lines:

 

<key>device-properties</key>
<string>##your-hex-string</string>

 

Replace "##your-hex-string" with the hexadecimal string you copied earlier. The plist should now look something like:

 

<?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>Kernel</key>
<string>mach_kernel</string>
<key>Kernel Flags</key>
<string></string>
<key>Timeout</key>
<string>5</string>
	<key>device-properties</key>
	<string>4b00000001000000010000003f0000000100000002010c00d041030a0100000001010600051c
101060000007fff0400160000006200750069006c0074002d0069006e0000000500000001</string>
</dict>
</plist>

 

OK now save the plist.

 

8) Now we have to copy the plist back. Open Terminal and type in:

 

sudo -s
cp -R /Library/Preferences/SystemConfiguration/com.apple.Boot.plist /Library/Preferences/SystemConfiguration/efibackup.plist
cp -R ~/Desktop/com.apple.Boot.plist /Library/Preferences/SystemConfiguration/

 

Thats it! Repair permissions, cross your fingers, and reboot :)

Share this post


Link to post
Share on other sites
Advertisement

Hi pcwiz, thanks for the how to!

Everything works fine until I try to convert my .plist file to hex, then I get the dreaded "gfxutil: invalid property list xml inputfile 'ethernet.plist'!" error. Any suggestions? Thanks!

Mike

Share this post


Link to post
Share on other sites

Well its almost the same for a graphics card, but the device path and the majority of the plist will be different so its a bit harder. As for the problem with ethernet.plist, maybe you made a typo somewhere? One common issue is that you used saved it in some formatted format (e.g. RTF, which TextEdit saves to automatically). Make SURE that if you are using TextEdit its in "Plain Text" mode. If it still doesn't work OSx86Tools can do this automatically for you

Share this post


Link to post
Share on other sites

how if i want to use 2 kind of efi strings?

 

1 for vga string

 

1 for ethernet string

 

how do i set those in com.apple.Boot.plist?

 

<key>device-properties</key>

<string>vgastring+ethernetstring</string> --> filled with 2 strings in one field

 

or

 

<key>device-properties</key>

<string>vgastring</string>

<key>device-properties</key>

<string>ethernetstring</string> --> filled each string in one field

 

thanks in advanced..

Share this post


Link to post
Share on other sites
how if i want to use 2 kind of efi strings?

 

1 for vga string

 

1 for ethernet string

 

how do i set those in com.apple.Boot.plist?

 

See the file that gets generated in step 4 of ~pcwiz's first post? You have a couple of files that look like this Time Machine Ethernet fix:

 

<?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>PciRoot(0x1)/Pci(0x1c,0x5)/Pci(0x0,0x0)</key>
	<dict>
			<key>built-in</key>
			<string>0x01</string>
	</dict>
</dict>
</plist>

 

And this graphics card description (this example is for my GeForce 9600 GT card):

 

<?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>PciRoot(0x1)/Pci(0x1,0x0)/Pci(0x0,0x0)</key>
<dict>
	<key>@0,compatible</key>
	<string>NVDA,NVMac</string>
	<key>@0,device_type</key>
	<string>display</string>
	<key>@0,name</key>
	<string>NVDA,Display-A</string>
	<key>@1,compatible</key>
	<string>NVDA,NVMac</string>
	<key>@1,device_type</key>
	<string>display</string>
	<key>@1,name</key>
	<string>NVDA,Display-B</string>
	<key>NVCAP</key>
	<data>
	BAAAAAAAAwAMAAAAAAAABwAAAAA=
	</data>
	<key>NVPM</key>
	<data>
	AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
	</data>
	<key>VRAM,totalsize</key>
	<string>0x20000000</string>
	<key>device_type</key>
	<string>NVDA,Parent</string>
	<key>model</key>
	<string>PNY Verto GeForce 9600GT</string>
	<key>name</key>
	<string>display</string>
	<key>rom-revision</key>
	<string>PNY Verto GeForce 9600GT OpenGL Engine [EFI]</string>
</dict>
</dict>
</plist>

 

You need to merge the contents of the two files. Take the inner key-dict pairs and splice them together like this:

 

<?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>PciRoot(0x1)/Pci(0x1c,0x5)/Pci(0x0,0x0)</key>
	<dict>
		   <key>built-in</key>
		   <string>0x01</string>
	</dict>
<key>PciRoot(0x1)/Pci(0x1,0x0)/Pci(0x0,0x0)</key>
<dict>
	<key>@0,compatible</key>
	<string>NVDA,NVMac</string>
	<key>@0,device_type</key>
	<string>display</string>
	<key>@0,name</key>
	<string>NVDA,Display-A</string>
	<key>@1,compatible</key>
	<string>NVDA,NVMac</string>
	<key>@1,device_type</key>
	<string>display</string>
	<key>@1,name</key>
	<string>NVDA,Display-B</string>
	<key>NVCAP</key>
	<data>
	BAAAAAAAAwAMAAAAAAAABwAAAAA=
	</data>
	<key>NVPM</key>
	<data>
	AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
	</data>
	<key>VRAM,totalsize</key>
	<string>0x20000000</string>
	<key>device_type</key>
	<string>NVDA,Parent</string>
	<key>model</key>
	<string>PNY Verto GeForce 9600GT</string>
	<key>name</key>
	<string>display</string>
	<key>rom-revision</key>
	<string>PNY Verto GeForce 9600GT OpenGL Engine [EFI]</string>
</dict>
</dict>
</plist>

 

Then continue from step 5 - use gfxutil to encode this plist into hex and insert that as the device-properties string in com.apple.Boot.plist.

Share this post


Link to post
Share on other sites

Hey,

 

Great guide, thanks for posting this info PCWIZ, and Bit Shovler for the combo string clarifiacation!I was able to get my GeForce 9600GT working properly on retail 10.5.6 on Asus P5Q. I attempted to get my Intel Ethernet Pro 100 PCI card working with efi, I combined the keys and generated the hex as I did when I got the GFX straightened out. There was good news, and bad news. The good news was that I am still able to boot, and my GFX card is stiill working properly. The bad, ethernet did not work still.

 

If anyone can point me in the right direction on getting either my intel ethernet pro 100 card, or my p5q boards built in attansic L1e ethernet working, then I would be really set. I will be trying the same steps for the onboard LAN next, but that seems like a dead end.

 

EDIT

Well things got a little strange. I managed to trick OSX into picking up the intel pci nic, by re enabling the onboard lan. I was able to reach my network and internet like a charm, but strangely and unfortunately this stops working after the following reboot. At first I though I screwed something up by being impatient and adding changes to the strings but I repeated the original steps and same thing happened.

 

What I did was, with onboard LAN disabled in BIOS, ran gfxutil and got my devicepath for ethernet, so I'm assuming it is only dealing with the Intel Pro 100 PCI card. I use the path and combine the keys with my working gfx string, generate the hex, back up my boot.plist, replace with new edited one. Reboot, LAN not working, no MAC listed, no go, now I reboot, enable onboard LAN in BIOS, boot into OSX, check network pane, NIC IS WORKING!, the cable is in the secondary PCI intel card. reboot again, now NIC is back to showing no MAC.

 

I'm lost as to how to fix this. When I plug rj45 to the onboard nic the status never changed, only the intel PCI card ever did.

 

LSPCI info:

 

 

02:00.0 Ethernet controller [0200]: Attansic Technology Corp. L1 Gigabit Ethernet Adapter [1969:1026] (rev b0)

04:01.0 Ethernet controller [0200]: Intel Corporation 82557/8/9/0/1 Ethernet Pro 100 [8086:1229] (rev 0c)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Posts

    • It seems nice that chris1111 provided a patch, but I can't -- in good conscience -- download a random binary file from github and run it on my system.    What is so proprietary about his patch that he can't include source? I think I'll wait until the updated driver comes out before I update...  Does anyone know where to look for updates to the webdriver from Nvidia? I've ever found a page that lists them, just links to the actual files to download, and that root is not 'browsable'. I'd like to monitor that site to see when a version is updated for the 17E202 build. Once that is released, I can update OSX and should be fine.  
    • hey MaLd0n  It's been a while since I used clover, so a lot of things went rusty. Can you please look at my setup and guide/help what should be done next?  https://fex.net/354949878474?fileId=441517695   Current setup:  GA-Z97X-UD3H Xeon e3 1245v3  Msi GTX 1050ti Gaming X
    • Hi @fabiosun and thank's for your patience with an old and stubborn man.   I am 100 % sure that my MSR 0xE2 register is unlocked thank's to you.   My system is 100% stable and I haven't had one kp with this configuration in the last two weeks.    I'm now running without TSCAdjustReseat.kext and I can't se any issues in performance with or without that kext. What I however can se is that the amount of total energy consumed during the test-cycle are 10 times higher without the kext (three times Cinebench CPU and two times Luxmark open CL) as you can see in the output from my AppleIntelInfo.kext attached in my earlier post.   I have tested running Cinebench five times in a row with or without TSC kext and have exactly the same performance (see attached files). Temperature is not a problem at all.   Everything seems to be fine so I guess I have to wait and see if upcoming 10.13.5 maybe recognise Intel Xeon w series processor as native.     
    • Tried with HPET enabled and disabled so I don't think it's that. I'd tried with bus ratio before to no effect but wouldn't hurt to try again. The clock runs at the correct speed.
    • could be an HPET / TSC Sync issue. does your system clock slow down or run faster then it should. also check cpu and buss ratios.


×