Skip to content

About EFI Device Properties

RevoGirl edited this page Jul 3, 2011 · 5 revisions

Introduction

We are planning to change the EFI injection process in a way that will blow people away – onboard audio chips and graphics card should "just work" the Apple way. Without you ever having to think about it. Not even when you swap the graphics card or replace your motherboard, but until it works like that... this is what we have to do/use:

RevoBoot/i386/config/EFI/example.xml

<?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>
<!-- GPU properties -->
<key>PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)</key>
<dict>
	<key>@0,AAPL,boot-display</key>
	<data>
	AQAAAA==
	</data>
	<key>@0,name</key>
	<data>
	QVRZLER1Y2t3ZWVk
	</data>
	<key>@1,name</key>
	<data>
	QVRZLER1Y2t3ZWVk
	</data>
	<key>@2,name</key>
	<data>
	QVRZLER1Y2t3ZWVk
	</data>
	<key>@3,name</key>
	<data>
	QVRZLER1Y2t3ZWVk
	</data>
	<key>model</key>
	<data>
	QU1EIFJhZGVvbiBIRCA2ODUw
	</data>
</dict>
<!-- HDEF 892 properties -->
<key>PciRoot(0x0)/Pci(0x1b,0x0)</key>
<dict>
	<key>PinConfigurations</key>
	<data>
	AA==
	</data>
	<key>layout-id</key>
	<data>
	fAMAAA==
	</data>
	<key>subsystem-id</key>
	<data>
	oAAAAA==
	</data>
	<key>subsystem-vendor-id</key>
	<data>
	axAAAA==
	</data>
</dict>
<!-- FRWR properties -->
<key>PciRoot(0x0)/Pci(0x1c,0x4)/Pci(0x0,0x0)</key>
<dict>
	<key>fw-hub</key>
	<data>
	AAAAAA==
	</data>
</dict>
<!-- LAN properties -->
<key>PciRoot(0x0)/Pci(0x1c,0x5)/Pci(0x0,0x0)</key>
<dict>
	<key>built-in</key>
	<data>
	AQ==
	</data>
</dict>

RevoBoot/i386/config/EFI/data.h example snippet:

#define	STATIC_EFI_DEVICE_PROPERTIES \
0x5e, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, \
0x01, 0x00, 0x00, 0x00, 0x02, 0x01, 0x0c, 0x00, 0xd0, 0x41, 0x03, 0x0a, 0x00, 0x00, 0x00, 0x00, \
0x01, 0x01, 0x06, 0x00, 0x05, 0x1c, 0x01, 0x01, 0x06, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x04, 0x00, \
0x16, 0x00, 0x00, 0x00, 0x62, 0x00, 0x75, 0x00, 0x69, 0x00, 0x6c, 0x00, 0x74, 0x00, 0x2d, 0x00, \
0x69, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x01, 0x10, 0x01, 0x00, 0x00, 0x06, \
0x00, 0x00, 0x00, 0x02, 0x01, 0x0c, 0x00, 0xd0, 0x41, 0x03, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x01, \
0x01, 0x06, 0x00, 0x00, 0x01, 0x01, 0x01, 0x06, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x04, 0x00, 0x10, \
0x00, 0x00, 0x00, 0x6d, 0x00, 0x6f, 0x00, 0x64, 0x00, 0x65, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x16, \
0x00, 0x00, 0x00, 0x41, 0x4d, 0x44, 0x20, 0x52, 0x61, 0x64, 0x65, 0x6f, 0x6e, 0x20, 0x48, 0x44, \
0x20, 0x36, 0x38, 0x35, 0x30, 0x2e, 0x00, 0x00, 0x00, 0x40, 0x00, 0x30, 0x00, 0x2c, 0x00, 0x41, \
0x00, 0x41, 0x00, 0x50, 0x00, 0x4c, 0x00, 0x2c, 0x00, 0x62, 0x00, 0x6f, 0x00, 0x6f, 0x00, 0x74, \
0x00, 0x2d, 0x00, 0x64, 0x00, 0x69, 0x00, 0x73, 0x00, 0x70, 0x00, 0x6c, 0x00, 0x61, 0x00, 0x79, \
0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x40, \
0x00, 0x30, 0x00, 0x2c, 0x00, 0x6e, 0x00, 0x61, 0x00, 0x6d, 0x00, 0x65, 0x00, 0x00, 0x00, 0x10, \
0x00, 0x00, 0x00, 0x41, 0x54, 0x59, 0x2c, 0x44, 0x75, 0x63, 0x6b, 0x77, 0x65, 0x65, 0x64, 0x14, \
0x00, 0x00, 0x00, 0x40, 0x00, 0x33, 0x00, 0x2c, 0x00, 0x6e, 0x00, 0x61, 0x00, 0x6d, 0x00, 0x65, \
0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x41, 0x54, 0x59, 0x2c, 0x44, 0x75, 0x63, 0x6b, 0x77, \
0x65, 0x65, 0x64, 0x14, 0x00, 0x00, 0x00, 0x40, 0x00, 0x32, 0x00, 0x2c, 0x00, 0x6e, 0x00, 0x61, \
0x00, 0x6d, 0x00, 0x65, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x41, 0x54, 0x59, 0x2c, 0x44, \
0x75, 0x63, 0x6b, 0x77, 0x65, 0x65, 0x64, 0x14, 0x00, 0x00, 0x00, 0x40, 0x00, 0x31, 0x00, 0x2c, \
0x00, 0x6e, 0x00, 0x61, 0x00, 0x6d, 0x00, 0x65, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x41, \
0x54, 0x59, 0x2c, 0x44, 0x75, 0x63, 0x6b, 0x77, 0x65, 0x65, 0x64, 0x3e, 0x00, 0x00, 0x00, 0x01, \
0x00, 0x00, 0x00, 0x02, 0x01, 0x0c, 0x00, 0xd0, 0x41, 0x03, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x01, \
0x01, 0x06, 0x00, 0x04, 0x1c, 0x01, 0x01, 0x06, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x04, 0x00, 0x12, \
0x00, 0x00, 0x00, 0x66, 0x00, 0x77, 0x00, 0x2d, 0x00, 0x68, 0x00, 0x75, 0x00, 0x62, 0x00, 0x00, \
0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, \
0x00, 0x02, 0x01, 0x0c, 0x00, 0xd0, 0x41, 0x03, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x06, \
0x00, 0x00, 0x1b, 0x7f, 0xff, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, 0x50, 0x00, 0x69, 0x00, 0x6e, \
0x00, 0x43, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x66, 0x00, 0x69, 0x00, 0x67, 0x00, 0x75, 0x00, 0x72, \
0x00, 0x61, 0x00, 0x74, 0x00, 0x69, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x73, 0x00, 0x00, 0x00, 0x05, \
0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x61, 0x00, 0x79, 0x00, 0x6f, 0x00, \
0x75, 0x00, 0x74, 0x00, 0x2d, 0x00, 0x69, 0x00, 0x64, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, \
0x7c, 0x03, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x73, 0x00, 0x75, 0x00, 0x62, 0x00, 0x73, 0x00, \
0x79, 0x00, 0x73, 0x00, 0x74, 0x00, 0x65, 0x00, 0x6d, 0x00, 0x2d, 0x00, 0x76, 0x00, 0x65, 0x00, \
0x6e, 0x00, 0x64, 0x00, 0x6f, 0x00, 0x72, 0x00, 0x2d, 0x00, 0x69, 0x00, 0x64, 0x00, 0x00, 0x00, \
0x08, 0x00, 0x00, 0x00, 0x6b, 0x10, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x73, 0x00, 0x75, 0x00, \
0x62, 0x00, 0x73, 0x00, 0x79, 0x00, 0x73, 0x00, 0x74, 0x00, 0x65, 0x00, 0x6d, 0x00, 0x2d, 0x00, \
0x69, 0x00, 0x64, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00

Handy Scripts

RevoBoot/i386/config/EFI/xml2bin.sh

./gfxutil -i xml -o bin example.xml example.bin

RevoBoot/i386/config/EFI/bin2xml.sh

./gfxutil -i bin -o xml example.bin example.xml

RevoBoot/i386/config/EFI/create.sh

xxd -i -c 16 ./Desktop/example.bin | tail -n +2 | sed 'N;$!P;$!D;$d' | sed 's/$/ \\/' | sed '$s/.$//'