Sorry guys; I got a bit lost about Gene's request on this thread; usually a handle dump like # dh > handles.txt it's all we need to see the relationship between the NBP's device handle and the Service Binding handles. Did you get handles.txt? is it available for download somewhere?>>>Gene, after modifying some of Patrick's code I have been able to get the EFI_GUID - 83F01464-99BD-45E5-B383AF6305D8E9E6 <<< OK that GUID is EFI_UDP4_SERVICE_BINDING_PROTOCOL_GUID then you bound the required Service Binding protocol. Could you please show us here the modified code?>>>Does this give you the info you need? <<< Depending on your code changes we could infer the handle structure but the dump I've mentioned before (if you didn't already uploaded somewhere) would be nice to see. Best, Patrick
> >>> > Gene, after modifying some of Patrick's code I have been able to get the > EFI_GUID - 83F01464-99BD-45E5-B383AF6305D8E9E6 > <<< > > OK that GUID is EFI_UDP4_SERVICE_BINDING_PROTOCOL_GUID > then you bound the required Service Binding protocol. > Could you please show us here the modified code? >FWIW, http://uefi.blogspot.com/2012/08/how-to-efiguid-vs-registry-guid-format. html If searching for: 83F01464-99BD-45E5-B383AF6305D8E9E6 you might possibly need to search instead for: 83F01464-99BD-45E5-B383-AF6305D8E9E6 or even for: 83f01464-99bd-45e5-b383-af6305d8e9e6 I'm not sure if this will help in this (or in some other) context: "BIOS Implementation Test Suite" http://biosbits.org/ https://github.com/biosbits/bits/blob/master/python/efi.py Incidentally, one of the few recent commits was: "efi: Add GUIDs for EFI networking protocols " (and some other commit, regarding compatibility with GCC 5.2; another FWIW) My apologies if this happens to be noise only. Regards, Ady.
Thanks Derrik; I got your efi-dh.txt I've found this: 252: SimpleNetwork PXEBaseCode LoadFile DevicePath(0000:0000:0000:0000:0000:0000)) 267: SimpleNetwork PXEBaseCode LoadFile DevicePath(065F36E00EE,0x1)/IPv4(0.0.0.0)) 27C: SimpleNetwork PXEBaseCode LoadFile DevicePath(0000:0000:0000:0000:0000:0000)) 291: SimpleNetwork PXEBaseCode LoadFile DevicePath(065F36E00EF,0x1)/IPv4(0.0.0.0)) 2A6: SimpleNetwork PXEBaseCode LoadFile DevicePath(0000:0000:0000:0000:0000:0000)) 2BB: SimpleNetwork PXEBaseCode LoadFile DevicePath(CDCD40CA5F0,0x0)/IPv4(0.0.0.0)) 2D0: SimpleNetwork PXEBaseCode LoadFile DevicePath(0000:0000:0000:0000:0000:0000)) 2E5: SimpleNetwork PXEBaseCode LoadFile DevicePath(CDCD40CA5F4,0x0)/IPv4(0.0.0.0)) 23E: MTFTPv4ServiceBinding DHCPv4ServiceBinding UDPv4ServiceBinding UnknownDevice TCPv4ServiceBinding IPv4ServiceBinding ARPServiceBinding UnknownDevice EfiMtftp6ServiceBindingProtocolGuid IPv4Config EfiDhcp6ServiceBindingProtocolGuid EfiUdp6ServiceBindingProtocolGuid UnknownDevice EfiTcp6ServiceBindingProtocolGuid EfiIp6ConfigProtocolGuid EfiIp6ServiceBindingProtocolGuid ManagedNetworkServiceBinding EfiVlanConfigProtocolGuid SimpleNetwork HIIConfigAccess AdapterInfo(AdapterInfo) EfiFirmwareManagementProtocolGuid UnknownDevice UnknownDevice NetworkInterfaceIdentifier31 UnknownDevice DevicePath(0x0,0x0)/MAC(5065F36E00EE,0x1)) UnknownDevice 268: MTFTPv4ServiceBinding DHCPv4ServiceBinding UDPv4ServiceBinding UnknownDevice TCPv4ServiceBinding IPv4ServiceBinding ARPServiceBinding UnknownDevice EfiMtftp6ServiceBindingProtocolGuid IPv4Config EfiDhcp6ServiceBindingProtocolGuid EfiUdp6ServiceBindingProtocolGuid UnknownDevice EfiTcp6ServiceBindingProtocolGuid EfiIp6ConfigProtocolGuid EfiIp6ServiceBindingProtocolGuid ManagedNetworkServiceBinding EfiVlanConfigProtocolGuid SimpleNetwork HIIConfigAccess AdapterInfo(AdapterInfo) UnknownDevice UnknownDevice NetworkInterfaceIdentifier31 UnknownDevice DevicePath(0x0,0x1)/MAC(5065F36E00EF,0x1)) UnknownDevice 292: MTFTPv4ServiceBinding DHCPv4ServiceBinding UDPv4ServiceBinding UnknownDevice TCPv4ServiceBinding IPv4ServiceBinding ARPServiceBinding UnknownDevice EfiMtftp6ServiceBindingProtocolGuid IPv4Config EfiDhcp6ServiceBindingProtocolGuid EfiUdp6ServiceBindingProtocolGuid UnknownDevice EfiTcp6ServiceBindingProtocolGuid EfiIp6ConfigProtocolGuid EfiIp6ServiceBindingProtocolGuid ManagedNetworkServiceBinding EfiVlanConfigProtocolGuid SimpleNetwork HIIConfigAccess EfiFirmwareManagementProtocolGuid AdapterInfo(AdapterInfo) EfiDriverHealthProtocolGuid UnknownDevice UnknownDevice DevicePath(0x0,0x0)/MAC(8CDCD40CA5F0,0x0)) NetworkInterfaceIdentifier NetworkInterfaceIdentifier31 2BC: MTFTPv4ServiceBinding DHCPv4ServiceBinding UDPv4ServiceBinding UnknownDevice TCPv4ServiceBinding IPv4ServiceBinding ARPServiceBinding UnknownDevice EfiMtftp6ServiceBindingProtocolGuid IPv4Config EfiDhcp6ServiceBindingProtocolGuid EfiUdp6ServiceBindingProtocolGuid UnknownDevice EfiTcp6ServiceBindingProtocolGuid EfiIp6ConfigProtocolGuid EfiIp6ServiceBindingProtocolGuid ManagedNetworkServiceBinding EfiVlanConfigProtocolGuid SimpleNetwork HIIConfigAccess EfiFirmwareManagementProtocolGuid AdapterInfo(AdapterInfo) EfiDriverHealthProtocolGuid UnknownDevice UnknownDevice DevicePath(0x0,0x1)/MAC(8CDCD40CA5F4,0x0)) NetworkInterfaceIdentifier NetworkInterfaceIdentifier31 Then we have: 1) Handles 267,291,2BB,2E5 correspond to the IPv4 PXEBaseCode protocols (one handle per NIC in your system). one of these handles is used every time you boot syslinux.efi as NBP. 2) Handles 252,27C,2A6,2D0 idem before but for IPv6 (ignore them) 3) Handles 23E,268,292,2BC correspond (among other things) to the Service Binding protocols we are looking for (UDPv4ServiceBinding) (one handle per NIC in your system) The goal: We must bind the UDPv4ServiceBinding handle that has a matching MAC with the PXEBaseCode used for booting syslinux.efi The problem: It is supposed there's always a possible MAC match between PXEBaseCode and UDPv4ServiceBinding protocols, but this does not happen in what I consider your faulty FW. i.e. if we consider PXEBaseCode handle 267 -> MAC 0065F36E00EE UDPv4ServiceBinding handle 23E -> MAC 5065F36E00EE You can see the MACs are "almost" identical but there's not match! While 5065F36E00EE is a valid HP MAC, 0065F36E00EE is not. something identical happens with the rest of handle pairs. My code relies on a full MAC match in order to decide which UDPv4ServiceBinding to use. Of course in your case you'll get an error; there's never a suitable UDPv4ServiceBinding available. I do not know why on earth HP uses different MACs for the same hardware, they are even changing their MAC vendor signature! I can only think you are running a test version of the FW where the different MAC signatures are probably used at the DHCP/PXE server side to know what protocol is the client using for transfers (just a shot in the dark guess). Conclusion: I think you should update your firmware. IMHO it does not make sense to mod Syslinux code in order to catch this issue. Best, Patrick
>>>If searching for: 83F01464-99BD-45E5-B383AF6305D8E9E6 you might possibly need to search instead for: 83F01464-99BD-45E5-B383-AF6305D8E9E6 or even for: 83f01464-99bd-45e5-b383-af6305d8e9e6 <<< Hi Ady, Those GUIDs are just the text representation of a 16 byte hexadecimal number. The format/case in this context does not really matter. Best, Patrick
On Fri, Aug 28, 2015 at 4:22 AM, Patrick Masotta <masottaus at yahoo.com> wrote:> Thanks Derrik; I got your efi-dh.txt > > I've found this: > > 252: SimpleNetwork PXEBaseCode LoadFile DevicePath(0000:0000:0000:0000:0000:0000)) > 267: SimpleNetwork PXEBaseCode LoadFile DevicePath(065F36E00EE,0x1)/IPv4(0.0.0.0)) > 27C: SimpleNetwork PXEBaseCode LoadFile DevicePath(0000:0000:0000:0000:0000:0000)) > 291: SimpleNetwork PXEBaseCode LoadFile DevicePath(065F36E00EF,0x1)/IPv4(0.0.0.0)) > 2A6: SimpleNetwork PXEBaseCode LoadFile DevicePath(0000:0000:0000:0000:0000:0000)) > 2BB: SimpleNetwork PXEBaseCode LoadFile DevicePath(CDCD40CA5F0,0x0)/IPv4(0.0.0.0)) > 2D0: SimpleNetwork PXEBaseCode LoadFile DevicePath(0000:0000:0000:0000:0000:0000)) > 2E5: SimpleNetwork PXEBaseCode LoadFile DevicePath(CDCD40CA5F4,0x0)/IPv4(0.0.0.0)) > > 23E: MTFTPv4ServiceBinding DHCPv4ServiceBinding UDPv4ServiceBinding UnknownDevice TCPv4ServiceBinding IPv4ServiceBinding ARPServiceBinding UnknownDevice EfiMtftp6ServiceBindingProtocolGuid IPv4Config EfiDhcp6ServiceBindingProtocolGuid EfiUdp6ServiceBindingProtocolGuid UnknownDevice EfiTcp6ServiceBindingProtocolGuid EfiIp6ConfigProtocolGuid EfiIp6ServiceBindingProtocolGuid ManagedNetworkServiceBinding EfiVlanConfigProtocolGuid SimpleNetwork HIIConfigAccess AdapterInfo(AdapterInfo) > EfiFirmwareManagementProtocolGuid UnknownDevice UnknownDevice NetworkInterfaceIdentifier31 UnknownDevice DevicePath(0x0,0x0)/MAC(5065F36E00EE,0x1)) > UnknownDevice > > 268: MTFTPv4ServiceBinding DHCPv4ServiceBinding UDPv4ServiceBinding UnknownDevice TCPv4ServiceBinding IPv4ServiceBinding ARPServiceBinding UnknownDevice EfiMtftp6ServiceBindingProtocolGuid IPv4Config EfiDhcp6ServiceBindingProtocolGuid EfiUdp6ServiceBindingProtocolGuid UnknownDevice EfiTcp6ServiceBindingProtocolGuid EfiIp6ConfigProtocolGuid EfiIp6ServiceBindingProtocolGuid ManagedNetworkServiceBinding EfiVlanConfigProtocolGuid SimpleNetwork HIIConfigAccess AdapterInfo(AdapterInfo) > UnknownDevice UnknownDevice NetworkInterfaceIdentifier31 UnknownDevice DevicePath(0x0,0x1)/MAC(5065F36E00EF,0x1)) > UnknownDevice > > 292: MTFTPv4ServiceBinding DHCPv4ServiceBinding UDPv4ServiceBinding UnknownDevice TCPv4ServiceBinding IPv4ServiceBinding ARPServiceBinding UnknownDevice EfiMtftp6ServiceBindingProtocolGuid IPv4Config EfiDhcp6ServiceBindingProtocolGuid EfiUdp6ServiceBindingProtocolGuid UnknownDevice EfiTcp6ServiceBindingProtocolGuid EfiIp6ConfigProtocolGuid EfiIp6ServiceBindingProtocolGuid ManagedNetworkServiceBinding EfiVlanConfigProtocolGuid SimpleNetwork HIIConfigAccess EfiFirmwareManagementProtocolGuid AdapterInfo(AdapterInfo) > EfiDriverHealthProtocolGuid UnknownDevice UnknownDevice DevicePath(0x0,0x0)/MAC(8CDCD40CA5F0,0x0)) > NetworkInterfaceIdentifier NetworkInterfaceIdentifier31 > > 2BC: MTFTPv4ServiceBinding DHCPv4ServiceBinding UDPv4ServiceBinding UnknownDevice TCPv4ServiceBinding IPv4ServiceBinding ARPServiceBinding UnknownDevice EfiMtftp6ServiceBindingProtocolGuid IPv4Config EfiDhcp6ServiceBindingProtocolGuid EfiUdp6ServiceBindingProtocolGuid UnknownDevice EfiTcp6ServiceBindingProtocolGuid EfiIp6ConfigProtocolGuid EfiIp6ServiceBindingProtocolGuid ManagedNetworkServiceBinding EfiVlanConfigProtocolGuid SimpleNetwork HIIConfigAccess EfiFirmwareManagementProtocolGuid AdapterInfo(AdapterInfo) > EfiDriverHealthProtocolGuid UnknownDevice UnknownDevice DevicePath(0x0,0x1)/MAC(8CDCD40CA5F4,0x0)) > NetworkInterfaceIdentifier NetworkInterfaceIdentifier31 > > > Then we have: > > 1) Handles 267,291,2BB,2E5 > correspond to the IPv4 PXEBaseCode protocols (one handle per NIC in your system). > one of these handles is used every time you boot syslinux.efi as NBP. > > 2) Handles 252,27C,2A6,2D0 > idem before but for IPv6 (ignore them) > > 3) Handles 23E,268,292,2BC > correspond (among other things) to the Service Binding protocols we are looking for (UDPv4ServiceBinding) > (one handle per NIC in your system) > > > The goal: > We must bind the UDPv4ServiceBinding handle that has a matching MAC with the PXEBaseCode used for > booting syslinux.efi > > > The problem: > It is supposed there's always a possible MAC match between PXEBaseCode and UDPv4ServiceBinding protocols, > but this does not happen in what I consider your faulty FW. > i.e. > if we consider > PXEBaseCode handle 267 -> MAC 0065F36E00EEMore importantly: look at the actual captured text. It does NOT specify a valid MAC in its entirety and leaves off the leading nibble (11 characters, not 12). Handle 267 shows "065F36E00EE" not "0065F36E00EE".> UDPv4ServiceBinding handle 23E -> MAC 5065F36E00EE > > You can see the MACs are "almost" identical but there's not match! > While 5065F36E00EE is a valid HP MAC, 0065F36E00EE is not. > something identical happens with the rest of handle pairs. > > My code relies on a full MAC match in order to decide which UDPv4ServiceBinding to use. > Of course in your case you'll get an error; there's never a suitable UDPv4ServiceBinding available. > I do not know why on earth HP uses different MACs for the same hardware, they are even changing > their MAC vendor signature!It is possible that this is a visual bug but it DOES give a hint that there may be an issue in the MAC addresses.> I can only think you are running a test version of the FW where the different MAC signatures > are probably used at the DHCP/PXE server side to know what protocol is the client using for transfers > (just a shot in the dark guess). > > Conclusion: > I think you should update your firmware. IMHO it does not make sense to mod Syslinux code in order to > catch this issue.Derrick is already running the latest firmware on this machine. -- -Gene