Post Reply 
 
Thread Rating:
  • 1 Votes - 5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
X1 Gen1 Carbons hang when trying to get a DHCP address through the embedded script
2015-03-05, 04:54 (This post was last modified: 2015-03-05 04:54 by nappington.)
Post: #1
X1 Gen1 Carbons hang when trying to get a DHCP address through the embedded script
I'm experiencing a very curious problem - I'm using the embedded script method to chainload into iPXE. This is not a problem for any device I try to netboot except for the 2013 X1 Carbons with their proprietary USB NIC dongles

The machines do get an initial DHCP address and pull down iPXE successfully through TFTP. The embedded script loads, but once I try to get a DHCP address either through the DHCP command or the ifopen command the machine hangs and becomes unresponsive. This image shows what happens when I drop down to a shell and try to get a DHCP address. Nothing except for hard resetting the machine works from this point.

A Packet capture shows absolutely zero dhcp discover requests being sent out by the machine itself. when it tries to get a dhcp address

The problem appears to be related with BIOS versions. All machines with UEFI version 2.56 work fine, but the ones with 2.50 or lower fail like this. It seems that 2.56 fixes this issue, but the changelogs haven't been helpful in indicating what it fixed.

I understand that I can the BIOS for each machine with an older UEFI version, but we possess a ridiculously large number of machines that it would be very cost-ineffective, and I'm curious if I can implement iPXE for these machines in a way that allows these X1s to bypass the hanging or if anyone else has experienced this issue before
Find all posts by this user
Quote this message in a reply
2015-03-05, 11:17
Post: #2
RE: X1 Gen1 Carbons hang when trying to get a DHCP address through the embedded script
(2015-03-05 04:54)nappington Wrote:  The machines do get an initial DHCP address and pull down iPXE successfully through TFTP. The embedded script loads, but once I try to get a DHCP address either through the DHCP command or the ifopen command the machine hangs and becomes unresponsive. This image shows what happens when I drop down to a shell and try to get a DHCP address. Nothing except for hard resetting the machine works from this point.

Which iPXE binary are you using? (In particular: are you using a BIOS or UEFI build of iPXE, and are you using the UNDI, SNP/NII, or native driver?)

What output do you get from "ifstat" before you attempt DHCP?

Michael
Visit this user's website Find all posts by this user
Quote this message in a reply
2015-03-05, 13:57
Post: #3
RE: X1 Gen1 Carbons hang when trying to get a DHCP address through the embedded script
sorry - for some reason I pasted the wrong link for the image. Ifstat net0 produces the following:

http://imgur.com/GdtXuVU

I'm compiling the iPXE binary pretty much with default settings from source - at least, I haven't been building it with .efirom.

I'm fairly certain I'm using UNDI, since I'm compiling undionly.kpxe with an embedded script to break out of the loop. (But how do I check?)
Find all posts by this user
Quote this message in a reply
2015-03-05, 18:05 (This post was last modified: 2015-03-05 18:08 by nappington.)
Post: #4
RE: X1 Gen1 Carbons hang when trying to get a DHCP address through the embedded script
Some extra information.

The moment I do anything related to performing a network action that's not ifstat (ifopen, dhcp, even a loopback test) iPXE stops - it doesn't quite hang, but I can't go back to the console anymore. The lights on the Lenovo USB NIC also shut off.

This happens in both the default BIOS console and the VESA framebuffer console.

See another example image here: http://i.imgur.com/CGmrECD.jpg



Could this potentially be a driver issue? How do I build ipxe/force ipxe to use a different driver than the one it's currently using, and how can I tell what driver it's using right now?
Find all posts by this user
Quote this message in a reply
2015-03-05, 20:12
Post: #5
RE: X1 Gen1 Carbons hang when trying to get a DHCP address through the embedded script
Another update.

I've downloaded the and I'm serving the default undionly.kpxe file from http://ipxe.org/howto/chainloading (that should technically result in an infinite loop if I don't set any dhcp server options).

The X1 loads into iPXE for the first time, but after it enumerates for the ASIX USB dongle again it halts without proceeding, as shown here: http://i.imgur.com/hdK61Ks.jpg

Am I correct in assuming that it hasn't even hit my custom iPXE build yet? I'm not familiar what's baked into undionly.kpxe (drivers?), but is there anything that can be changed with undionly.kpxe that might fix this?
Find all posts by this user
Quote this message in a reply
2015-03-05, 21:00
Post: #6
RE: X1 Gen1 Carbons hang when trying to get a DHCP address through the embedded script
I just answered the following on IRC: If you're using UEFI mode, you shouldn't be using undionly.kpxe, you should be using either ipxe.efi or snp.efi. If you're trying to get a USB NIC to work then you should definitely be using ipxe.efi as I'm going to assume that your USB NIC doesn't have a PXE ROM, thus snp.efi is useless (because there is no existing SNP/NII driver loaded which iPXE can use).
Visit this user's website Find all posts by this user
Quote this message in a reply
2015-03-05, 22:20
Post: #7
RE: X1 Gen1 Carbons hang when trying to get a DHCP address through the embedded script
We're using BIOS mode for our iPXE images for maximum compatibility across all devices.

I find it fairly strange that the USB NIC works fine without issue when the machine is at a higher bios version, though nothing in the actual changelogs indicate what the lenovo engineers have done to fix this situation
Find all posts by this user
Quote this message in a reply
2015-03-09, 11:01
Post: #8
RE: X1 Gen1 Carbons hang when trying to get a DHCP address through the embedded script
You're using the USB branch published by John Willis, aren't you? Because it seems like you're trying to use an iPXE-native driver for the ASIX USB NIC. I would recommend you try to use the official branch from git.ipxe.org and try to use the undionly.kpxe driver via chainloading. I believe the ASIX USB adapter is not supported by the USB ECM/NCM drivers, so using UNDI is your only option (for now). Once we're able to incorporate the ASIX USB driver into the new USB driver framework for iPXE you should be able to use ipxe.usb or ipxe.pxe.
Visit this user's website Find all posts by this user
Quote this message in a reply
2015-03-09, 15:23
Post: #9
RE: X1 Gen1 Carbons hang when trying to get a DHCP address through the embedded script
Nope, this is all with the default git branch and I began by trying to chainload into iPXE.

Honestly, this just looks like some kind of bios SNAFU with lenovo, since it does work once I update the bios on the machine.
Find all posts by this user
Quote this message in a reply
2015-03-10, 10:15
Post: #10
RE: X1 Gen1 Carbons hang when trying to get a DHCP address through the embedded script
Currently you need to build ecm.iso or ncm.iso because the USB drivers are not included in ipxe.iso/ipxe.usb. This will change soon, but for now you need to do that. There has been some talk of supporting the asix USB NICs in mainline, but it'll take some time, because the developer need to get hold of a ASIX-based USB NIC first.
Visit this user's website Find all posts by this user
Quote this message in a reply
Post Reply 




User(s) browsing this thread: 1 Guest(s)