We are using IP addresses in U-boot for the client and server that are different from those specified in the Flashing Embedded Linux over Ethernet document since we have a private network setup for communication between the Ubuntu Linux host and the device. For the host we are using 192.168.0.8 instead of 192.168.10.1, and for the client we are using 192.168.0.1 instead of 192.168.10.2.

We are running the Ubuntu Linux host in a VMware virtual machine in a Windows 7 OS. We've been successfully using this setup, along with our private network, to debug and download a Qt Application to the device. We can also use SCP to copy files to and from the device using commands from a Terminal Emulator window in Ubuntu Linux.

We've tried pining the host IP address from U-boot, and we receive the following output which indicates that U-boot sees the host:

The client seems to be timing out waiting for a connection to the TFTP server.

We've made sure that the TFTP server is running by executing the following command from a Terminal Emulator window: sudo service tftpd-hpa start.

We also have the necessary files available in the /srv/tftp/ location which were placed there using the ./update.sh -o /srv/tftp/. We found documentation online that indicates problems occur on occasion when using the line: TFTP_ADDRESS="[::]:69" in a file. The suggestion was to use: TFTP_ADDRESS="0.0.0.0:69" instead. We tried this but still experienced the same problem.

What can we do to fix this problem and make TFTP work correctly as it will be important for us to use this method of downloading the image in the future?

This looks like your tftp server is not correctly setup, I doubt it has to do with the Colibri side of things.

You could test for an active firewall blocking incoming tftp traffic.

As a test I turned off both the Windows 7 firewall and the Ubuntu Linux firewall running in the VMware virtual machine. It did not help. I still have same problem.

File permissions in /srv/tftp/... ?

I set the file permissions of all files in the /srv/tftp folder to read & write. It did not help. I still have the same problem.

And last but not least: does the file exist?

The files exists on the PC in the /srv/tftp/colibri_imx7 folder. The flash_eth.img file is located there.

I tried the: tftp localhost -c get colibri_imx7/flash_eth.img command that you provided above, on the host PC. It didn't work. I had to use: sudo tftp localhost -c get colibri_imx7/flash_eth.img. It worked and the file was copied. I had to use sudo since the file permissions to set according to the Toradex documentation: How to setup Networking for Embedded Linux Application Development is in the line: sudo chown -R :nogroup /srv/tftp/ so it's set for root permissions. If I execute the line: sudo chown -R [My Username]:nogroup /srv/tftp/ then I can execute the line: tftp localhost -c get colibri_imx7/flash_eth.img as you provided above and it works, but in either case I cannot run: run setupdate from U-boot. The attempt is made to download the file, but it times out.

I also tried booting the module into embedded Linux and running the line that you provided above: tftp -g -r colibri_imx7/flash_eth.img 192.168.0.8 using my host IP address of 192.168.0.8, but it does not work. I receive a timeout error.

Yeah, I don't know. For now the USB drive that I have works when used to flash our Colibri i.MX7D modules, but it would be nice to get Ethernet updating to work because access space will be vary limited in the released product and we have the ability to connect Ethernet externally.

1 Answer

We've actually got this working now. The problem had to do with the fact that we are running Ubuntu Linux in a VMware virtual machine. I had to configure the VMware Workstation for port forwarding, set the Ubuntu firewall to allow a connection on port 69, and configure an inbound rule for Windows Firewall on port 69 as well.

Now, it seems to be working fine. Thanks for all of the information everyone. I appreciate your suggestions as I worked through solving this problem. :).