Using the Built in TFTP Server on OS X El Capitan

On Windows I love the lightweight and open source TFTPD32, but there may come a time when you find youself needing to transfer some files and all you have is your trusty mac.

Luckily there’s a built in tftp daemon that you can use in a pinch.

By default tftpd uses the following folder:

/private/tftpboot

which is hidden in finder, but can be accessed by using “go to folder” or hitting Command+Shift+G and entering /private/tftpboot

osxtftp01

To launch the daemon run the following commands:

sudo launchctl load -F /System/Library/LaunchDaemons/tftp.plist
sudo launchctl start com.apple.tftpd

Be sure Read/Write/eXecute permissions are set on the tftpboot folder and any files you wish to transfer:

sudo chmod 777 /private/tftpboot
sudo chmod 777 /private/tftpboot/*

If you’ll be transferring a file TO your TFTP server, the file will technically need to exist on the server beforehand so create it with touch. For example:

sudo touch /private/tftpboot/running-config
sudo chmod 777 /private/tftpboot/running-config

If you’d like a graphical front end for launching tftp then check out the great TftpServer.

osxftp03

Now go ahead and get transferring.

osxtftp02

28 thoughts on “Using the Built in TFTP Server on OS X El Capitan”

  1. Thanks, that was helpful! Obviously TFTP Tool does not let me change the working path on El Capitan. That’s ok, but unexpected 😉 Works fine now!

  2. Thank you for taking time to write this post. I actually was running the TFTP Gui and it stopped working after updating to El Capitan. Running these two commands below helped me.
    sudo chmod 777 /private/tftpboot
    sudo chmod 777 /private/tftpboot/*

  3. Nice post. It did what I needed it to do. Do I just reboot or is there anything to do to shut down the tftp server?

    1. I did find a Mac terminal pocket guide in our office. I did a sudo launchctl stop com.apple.tftpd and a sudo launchctl unload /System/Library/LaunchDaemons/tftp.plist

  4. I’ve tried three different tftp servers, and the problem I have on both my machines is that port 69 still shows closed. tcpdump shows the incoming tftp requests, and the filename, but that’s it. That bangs away for a minute, then the tftp on the other end (cisco switch) times out.

    Any ideas? Firewall is off.

    1. Make sure you are looking at the UDP port binding – not TCP
      Make sure that nothing else has already binded to port UDP 69 (use netstat). If another process has it bound up, you will have to stop that process first
      Make sure that you are trying to open the tftp server as root – since UDP 69 is a privileged port, you can’t get it open if you are not running as root

  5. Click on start TFTP does not start the TFTP server. Anything I am missing?
    Folder rights properly set. I see Green colour for both working folder and parent folder permissions.

  6. Although English is not my mother tongue, I was born in the German speaking area, but as far as I understand I have to go with Mac OS X El Capitan, with Server Connect, sounds very promising.

    But I will follow this tutorial point by point exactly with TFTP server, in case of problems with the installation I will log in here.

  7. when use tftpserver,there are some error :
    Apr 12 11:22:05 xiaoxiliudeMacBook-Pro TftpServer[18380]: objc[18380]: Class FIFinderSyncExtensionHost is implemented in both /System/Library/PrivateFrameworks/FinderKit.framework/Versions/A/FinderKit (0x7fff8eaf9c90) and /System/Library/PrivateFrameworks/FileProvider.framework/OverrideBundles/FinderSyncCollaborationFileProviderOverride.bundle/Contents/MacOS/FinderSyncCollaborationFileProviderOverride (0x114ba5cd8). One of the two will be used. Which one is undefined.

  8. HI I have been struggling this issue. My TfgpServer gui shows server status as “Stopped” while Attirbutes OK shows all green. Any advice?

  9. I used this post to debrick my Archer C7 router. It showed no log when transferring the firmware but did the trick. The frontend you have linked to in the post did not, however, work. Thanks much!

  10. built in tftpd in Catalina exits immediately with an error code 1. no workaround I could find. Apparently there was an upgrade path to macOS Server via Mac App Store, but it’s been discontinued.

    ended up using dnsmasq and its built in tftpd capability. See “Anonymous” comment from 2017. they got the syntax wrong though.

    install Brew if you haven’t already via instructions from brew.sh.

    then: sudo brew install dnsmasq
    to temporarily run tftpd and serve files from your current directory then:
    dnsmasq -d –enable-tftp -tftp-root=.

  11. How do I point my Cisco phone to the TFTP server I just created?

    It needs to be a URL, I tried

    tftp://LOCAL_MACHINE_IP:69/private/tftpboot/FIRMWAREFILE.loads
    tftp://LOCAL_MACHINE_IP/private/tftpboot/FIRMWAREFILE.loads
    tftp://localhost:8800/private/tftpboot/FIRMWAREFILE.loads
    tftp://localhost/private/tftpboot/FIRMWAREFILE.loads
    tftp://private/tftpboot/FIRMWAREFILE.loads

    Nothing has worked! What’s the right address?

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.