CSA USB Tool - Create .iso Image

CSAUSBTool is a downloader and ISO image creation tool. It downloads all the required applications/tools for a CSA to support an event (NI Update, LabVIEW, Eclipse, C++ toolchain, Silverlight, etc).

I initially made this tool for CSA’s in Ontario, as I thought it’d be nice and easy to get the most updated tools, libraries, etc from a single tool.

Note: This requires Internet access to run, as it grabs the list of software to download, their URL’s, and their MD5 hash from the GitHub Repo.
(Specifically, the file corresponding to the year selected. ie. for 2018 - https://github.com/JamieSinn/CSA-USB-Tool/blob/master/Software2018.csv)

The tool works as such;

Select a competition year to download the data for (2017, and 2018 are the years supported so far)

Select a download directory to download all the tools to (Note, the total size is very large, over 10 GB due to LV - choose accordingly)

Then, select a folder for the .ISO file to be outputted. This does not have to be the same directory, but I just like having it all in one area.

Next, select whether you want to download all the files at once (Async downloads) - I highly recommend this, as it speeds download up immensely.

Lastly, click Download.

Note, if you’ve previously downloaded the most up to date software, it won’t re-download them. Before it downloads, it checks for a file in the output directory with the same name, as well as the same MD5 hash. If the hash and file are correct, it skips to the next file. If you have downloaded them, the tool will hang for a bit while it computes the MD5 hashes (doing that on the LV file takes the longest, since it’s massive)

The software needed for the selected competition year is downloaded, don’t worry if the download bar is flashing, as it updates for each file being downloaded, and their percentage of completion.

After about ~15-20 minutes, depending on your download speed - you should have the folder you selected filled with the required software.

Note for the above photo: NI Update and LabVIEW are not done downloading, but the others are.

When everything is ready and done, press the Build ISO Image button, and there will be a .iso image file with the name of CSA_USB_####.iso where #### is the year selected.

The source for this tool is available here: https://github.com/JamieSinn/CSA-USB-Tool
And releases are available here: https://github.com/JamieSinn/CSA-USB-Tool/releases

If you would like to suggest more software to be added to it, feel free to submit a pull request to the relevant year’s CSV file. The format is explained in the header of the file.


This is an awesome idea, we always make a google drive directory for the team to use for this purpose but this is so much easier. Thank You.

So you are telling me…

That I can use this simple tool and download all the required software a day or two before an event to make sure everything is updated? And all in one place, in a simple app?

This is amazing. I’d like to see FIRST take a good long look at doing something like this every year and supporting your effort.

This is amazing - Thanks for doing this!

Indeed! And it’ll create a way for you to distribute it on USB’s easily!

I’d love to see FIRST adopt something like this, but that may be a bit hard to push.

For anyone who’s interested, let me know if you’d like any changes or updates to the tool! Very open to suggestions and additions! (Gotta give thanks to Garrett for the Silverlight and the eclipse plugins)

Thanks. You did work with the idea and writing it though.

This is awesome, thanks!

Just released version 2018.3 - adding support for remote CSV files as a commandline param.

This way teams can provide custom CSV links (must be an http link) so they can download specific software. The format must still be the same in the CSV though.

How about local files? I’d like to be able to include the JDK, but I don’t think you can automate downloading it.

So in the CSV, you would provide something like: “local:C:\Users.…\jdk.zip” and it would copy it to the output directory?

I can do something like that. Let me know if there’s any additional tweaks to it I’m missing

Yep, that’s what I was thinking. Being able to download the latest manual would be nice too, but that would need a way to disabled checksum checks (or else frequent updates)

The update system is entirely remote, you don’t have to download a new version of the software each time, since it grabs the CSV from github each time it’s run.

I’ll add the manual link to the current version so the latest is downloaded each time.

I’ll post again when the local data is pushed.

Supports local files. Note, because of how the file path is parsed, there can be no spaces in it.

Prepend any local paths with “local:” - no quotes.

Hope that helps!

In progress of updating/collecting hashes for all the new downloads! Will be launching a new release by the end of the week!

1 Like

First 2019 build released!

1 Like

You should add the vscode install .zip to the image (which is downloaded by the wpilib installer). Also, the wpilib offline installer is commented out? (and you should probably grab both the 32-bit and 64-bit versions, most teams are using 64-bit, but the classmates will need 32-bit).

The WPILib offline installer for 32 was added a bit over a half hour ago, I didn’t have the file downloaded to get the md5 for it.

I’ll add the 64 bit WPILib offline too.

The WPILib Offline Installer has to be online to download VSCode (because of license restrictions against redistribution) or it can be pointed to an already downloaded zip file. Because of that, the iso tool should also download VSCode. The location the WPILIB Offline Installer uses is defined here:

The way the tool downloads files is that upon completion it checks the listed md5 against the one it computes. Does that URL provide a static version that I can get an md5 from, or does it update without warning?

The WPILib installer does not use the downloaded vscode archives directly. What it does is it downloads both 32 and 64 bit versions of vscode, and puts them into a single zip file. The installer expects this single zip file. This is why you can use the downloaded zip with either the 32 or 64 bit installer.

You can find the code to do this here.