Up and downloading files to Navico NOS chart plotters

The Navico (B&G, Simrad and Lowrance) chart plotters running on NOS, so the Zeus, Vulcan, NSS, NSO, Carbon etc. devices have a little known feature that is an enormous help if you regularly need to transfer files onto or off the device from a different system. The Linux operating system on these devices has the FTP protocol enabled. This allows you to transfer files using the Ethernet connection of the device. It doesn’t matter whether this is wireless or not.

To access this, use any FTP client to do casual (different) transfers. If you are really regularly doing this, it makes sense to use a command line client that is easier to automate — but that is just the software engineer in me speaking!

Now for the rest of this post, I am going to assume that you are running macOS or Microsoft Windows, as I assume that Linux users just need the hint “use the FTP, Luke”…

The first thing you need to establish is the hostname or IP address of your chart plotter. If you gave the plotter a friendly name, and you have a DHCP server with dynamic DNS support, you are able to use the friendly name of the system. My network on-board runs such a DHCP server (DNSmasq) so that I can just access “zeus”, “vulcan12” and “vulcan7”. If you don’t know what all this stuff means, just go to your plotter and find out the IP address. To do this, select the Pages > Settings > Network > Info menu and make a note of the IP address.

If you use a graphical user interface FTP client, you will need to download some software. I recommend FileZilla, which is free. Once you have it installed, create a new connection. Set the IP address, and ask for “anonymous FTP”. Now connect to the server (= your plotter) and you should see a directory listing. You can now drag & drop files across from your computer.

If you use a command line FTP client, you can use scripting (shell files on macOS and CMD or powershell on Windows) to repeat the file transfer. For instance, you can create a desktop button that just transfers all GPX routes from a particular directory to your plotter. This means one-time up-front more work, but then an easier time once you need to do the transfer. I like this as it allows me to swap in easy time (in harbour) for hard times (out sailing).

Probably the simplest to use is curl as it is already installed on macOS and (really recent) versions of MS Windows 10 and 11. Open a terminal or “DOS box” and type curl and <enter> and see what happens. If it works, type curl --help and <enter>, and read through. If it doesn’t, on macOS you’re doing something wrong. On Windows, upgrade your installation and if that doesn’t help, install curl yourself — either install git for windows which includes curl, or the chocolatey package manager.

Curl is brilliant, but can be a bit overwhelming. Here are some examples to get you started. Note that zeus is the name of my plotter, just replace with your plotter’s name or IP address.

Find out which micro SD cards are present:
curl ftp://zeus/

Find out which directories are available:
curl ftp://zeus/userdata/

Find out which screenshots are on the plotter:
curl ftp://zeus/userdata/Screenshots/

Download all screenshots on macOS:

for f in $(curl -l ftp://zeus/userdata/Screenshots/) 
 do curl -O ftp://zeus/userdata/Screenshots/$f 

Or on Microsoft Windows in a .CMD file (all on one line):

for /f %%f in ('curl ftp://zeus/userdata/Screenshots/') do curl -O ftp://zeus/userdata/Screenshots/%%f

Well I hope that helps. Note that there are many other FTP clients which all have their own benefits. On older macOS and Windows installations you will find the original ftp client. ncftp is popular and much better; easy to install if you run brew on macOS or Chocolatey on Windows. Another tool that is useful is wget.

TIP: if you find that your plotter’s IP address keeps changing, change the DHCP server so that if passes a fixed IP address to the plotter.