PWR Industries · Guide

How to set up a TFTP server on Mac

Need to push firmware to a switch or back up a router config? Your Mac can be the TFTP server. There are two ways: the TFTP daemon that ships with macOS, set up from Terminal, or Octet, a TFTP server for Mac with a window, a log and a Start button.

// 1 · The hard way: macOS built-in tftpd

Terminal

macOS includes tftpd, but it is off by default and has no settings window. Every command below runs in Terminal and needs your admin password.

Step 1. Start the server

# Load the built-in TFTP daemon (it listens on UDP port 69)
$ sudo launchctl load -F /System/Library/LaunchDaemons/tftp.plist

Step 2. Add your files

tftpd serves the folder /private/tftpboot. Devices can only download files that are in it and readable.

# Copy a firmware image into the TFTP folder
$ sudo cp ~/Downloads/c9300-17.15.06.bin /private/tftpboot/
$ sudo chmod 644 /private/tftpboot/c9300-17.15.06.bin

Step 3. Allow uploads (optional)

By default tftpd won’t create new files, so an upload such as a config backup fails unless the file already exists and is writable. Open up the folder, then create each target file before the device sends it.

$ sudo chmod 777 /private/tftpboot
$ sudo touch /private/tftpboot/lab-sw1-config.txt
$ sudo chmod 666 /private/tftpboot/lab-sw1-config.txt

A world-writable folder lets anyone on the network overwrite those files, so only do this on a trusted lab network and tighten it again afterwards.

Step 4. Check that it’s listening

$ sudo lsof -i :69
# Look for a launchd or tftpd line with UDP *:tftp. No output means it isn't running.

Step 5. Stop it when you’re done

$ sudo launchctl unload -F /System/Library/LaunchDaemons/tftp.plist

Firewall note: if the macOS firewall is on (System Settings → Network → Firewall), it may block incoming connections, and devices will time out. Also find your Mac’s IP address yourself, in System Settings → Network or with ipconfig getifaddr en0 (en0 is usually Wi-Fi or built-in Ethernet). There is no transfer log to watch, so when a copy fails you have to guess why.

// 2 · The easy way: Octet

Under a minute

Octet is a TFTP server for Mac that skips Terminal. It runs on Apple silicon Macs with macOS 14 or later.

Pick a folder

Click Choose… and select any folder with your images and configs. No /private/tftpboot, no chmod.

Click Start

Octet listens on UDP port 69 and turns GET and PUT on or off with a switch.

Read the IP

Octet shows your Mac’s LAN IP, ready to type into the device.

Watch the log

Every transfer and error is logged, so a failed copy tells you why.

Octet Lite (1.0.2) is the free, basic version. Download Octet Lite. Octet TFTP, with faster transfers, progress bars, safe uploads, allowed devices and menu bar mode, is in review with Apple for the Mac App Store ($4.99). Compare Lite and Octet TFTP →

// Copy files from a Cisco device

IOS / IOS-XE

Either way, the device side is the same. In these examples the Mac is at 192.168.1.50.

! Download a firmware image from the Mac to flash (interactive prompts)
lab-sw1# copy tftp: flash:
Address or name of remote host []? 192.168.1.50
Source filename []? c9300-17.15.06.bin
! Back up the running config to the Mac
lab-sw1# copy running-config tftp:
Address or name of remote host []? 192.168.1.50
Destination filename [lab-sw1-confg]? lab-sw1-config.txt
! Using a management port or VRF? Set the source interface first:
lab-sw1(config)# ip tftp source-interface GigabitEthernet0/0

Device can ping the Mac but the copy times out? Something between them is blocking TFTP. See firewall and routing tips.

Skip the Terminal

Octet Lite is a free download for Apple silicon Macs. Octet TFTP is in review with Apple for the Mac App Store.