Jump to content

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


  • Please log in to reply
7 replies to this topic

#1
~pcwiz

~pcwiz

    InsanelyMac V.I.P.

  • Retired
  • 5,900 posts
  • Gender:Male
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 "</dict>" 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 :)

#2
Winters75

Winters75

    InsanelyMac Protégé

  • Members
  • Pip
  • 9 posts
  • Location:Finland
Hi!

Is it the same procedure for a graphics card?

#3
dankasfuk

dankasfuk

    InsanelyMac Protégé

  • Members
  • Pip
  • 30 posts
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

#4
~pcwiz

~pcwiz

    InsanelyMac V.I.P.

  • Retired
  • 5,900 posts
  • Gender:Male
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

#5
cipz

cipz

    InsanelyMac Protégé

  • Members
  • Pip
  • 35 posts
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..

#6
Bit Shoveler

Bit Shoveler

    InsanelyMac Geek

  • Coders
  • 111 posts
  • Gender:Male
  • Location:Six blocks from AMD HQ
  • Interests:Hackable Macs

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.

#7
Scumble B

Scumble B

    InsanelyMac Protégé

  • Members
  • Pip
  • 12 posts
  • Gender:Male
  • Location:New York
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)

#8
Warren21

Warren21

    InsanelyMac Protégé

  • Just Joined
  • Pip
  • 3 posts
Thanks for the instruction...I will now reboot the pc for the result...I hope i will not encounter errors.



Regards


Albert

_____
Pret immobilier





0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

© 2014 InsanelyMac  |   News  |   Forum  |   Downloads  |   OSx86 Wiki  |   Mac Netbook  |   Web hosting by CatN  |   Designed by Ed Gain  |   Logo by irfan  |   Privacy Policy