Linux – Put file with tftp client in Linux


I am going to put a new ROM file on a network attached instrument and I need to use tftp.
Does anyone know how to do this?

I am going to upload two different files and they will go into separate folders.

Best Answer

It is probably best to use the TFTP server (or "service" in MS parlance) that is "native" to the operating system distribution on which you wish to run the TFTP server.

If you are using Ubuntu, try this article by David Sudjiman.

If you are using Debian, try this Nixcraft article.

If you are using CentOS, RHEL or Fedora try this blog post.

If you are using MS Windows, try TFTPD32. This isn't a "native" server in the sense of being in the Windows distribution, but it is a commonly used TFTP server.

If the device that you are attaching to the network is itself a TFTP server and you need to upload a file to that server using a TFTP client, then you need to find out

  1. The IP address of the device
  2. The file name that the device is expecting to receive

You might also need the port number on which the devices TFPT server is listening if it is not the TFTP well-known (standard) port, port 69.

If the device configures itself using DHCP from a server on your network then you can look at the DHCP service log files to see what its IP address is. Another possibility is that the device configures an ad-hoc IP network. So you need to have some documentation about the device to know how it configures itself.

Most of the above mentioned TFTP server packages also install TFTP clients. If you don't want to install the servers then some distribution have stand-alone TFPT clients, but they are usually not installed as part of the standard installation so you will have to install them manually.

Once you know the IP address of the device and the name of the file that it is expecting to receive, you should be able to upload the file to the device by using a command like

tftp -c put myfile theirfile

Since the tftp default transfer mode is ASCII and you are uploading a ROM, the command should probably be

tftp -m binary -c put myfile theirfile

Where "myfile" is the name of the file you wish to upload and "theirfile" is the name that the file should have on the device. You might also want to use the "-v" command parameter so that if something goes wrong you can see what it was:

tftp -v -c put myfile theirfile

If the server is running on another port, say 8069, then the command syntax would be

tftp -v 8069 -c put myfile theirfile

If the local file already has the correct name, then the command is simply

tftp -v -c put myfile