Wednesday 30 May 2012

Troubleshooting the TFTP Service

This is a companion post to the Troubleshooting PXE in SCCM OSD series.

Troubleshooting PXE in SCCM OSD Part 1
Troubleshooting PXE in SCCM OSD Part 2
Troubleshooting PXE in SCCM OSD Part 3

As seen in the previous blog posts, a key part of the PXE process is the TFTP download of boot files to the client machine. If things aren't working it's always worth checking the tftp service is behaving as you'd expect. Microsoft provide a basic TFTP client with Windows. It's installed by default on Windows XP, but you'll need to do a wee bit of work to get this program working on Windows 7.

Installing and configuring the TFTP client on Windows 7

Firstly, to install the tftp client
  1. In Control Panel, choose Programs and Features.
  2. On the left hand pane, click "Turn Windows features on and off"
  3. Find the entry for TFTP Client and tick the box. This will probably require a restart.


Secondly, you need to allow the tftp client through the Windows Firewall
  1. Go to the Windows Firewall Control Panel.
  2. On the left hand pane, click Allow a program or feature through Windows Firewall.
  3. Click Allow another program.
  4. Click Browse. Browse to C:\Windows\system32, choose tftp.exe then click Open.
  5. On the Add a Program dialog, ensure "Trivial File Transfer Protocol App" is selected. Click Add.
  6. Check that on the "Allow programs to communicate through Windows Firewall" page "Trivial File Transfer Protocol App" is selected and allowed-



A quick test to see whether TFTP is working

Once you have a working tftp client, run up a command prompt. Run the following command-
C:\Users\Administrator>tftp -i servername get smsboot\x86\pxeboot.n12
-where servername is your PXE server. You should get an almost instantaneous response-
Transfer successful: 25772 bytes in 1 second(s), 25772 bytes/s
If this works, then your TFTP service looks healthy. If not, read on...

Some common TFTP errors

  • Error on server : The specified file was not found.

    If you get the following response-
    Error on server : The specified file was not found. Connect request failed
    You are probably missing files in the RemoteInstall directory. Browse to this directory, or map a drive to the folder (it's shared out as \\servername\reminst) and check that you have the relevant file structure



    If the folders are missing, or the folders are empty, then something is wrong with the PXE service point. The most common solution to this is to remove the role and reinstate it.
  • Error on server : Access violation.

    This suggests a permission problem in the RemoteInstall directory. Check the NTFS permissions.


If you are getting a response from the server, but are seeing a timeout error, this could be due to an overaggressive network filter. To check this create a small file in the SMSBoot folder. In the following example I created a text file called test.txt which contained the word "test".
C:\Users\Administrator>tftp -i servername get smsboot\test.txt
Transfer successful: 8 bytes in 1 second(s), 8 bytes/s
If this command is successful, but larger files can not be transferred, then check with your networking people. I have seen this happen when port 69 is opened but other ports are blocked. From our observations, the first 512 bytes can be transferred over port 69, but anything above 512 bytes will be transferred on a randomly assigned ephemeral port. If you've asked the networking people to allow tftp traffic, there is a chance they've only opened up port 69 and not factored in the ephemeral ports.

No comments: