About this Install Guide

This guide is intended to get you up and running with this tool quickly with the most common settings. For a thorough review of all options, refer to the official documentation.

The Product Download Hub has an API to enable end users to automate management and download of their Arm products.

Entitlements and Download Manager

The easiest way to manage access is with the Entitlements and Download Manager . This Python based utility can be used to interrogate the download database, and fetch the required packages.

It can be used from Windows command line or a Linux terminal. These instructions are for Linux (Ubuntu 22.04LTS).

Install pre-requisites


            sudo apt update
sudo apt install -y python-is-python3 python3-pip

Install edmgr


            sudo pip install edmgr

Generate user token

In a browser, login to PDH and copy your token from the below:



The token is a very long text string, and is valid for one hour.

Login manager to PDH

Using the token above, register your identity with the edmgr utility.


            edmgr login token <your_token>

A successful login will output:


        Token saved in <save_location>


Determine the Product ID

To generate a list of products you are entitled to download use:


            edmgr entitlements

This may be a long list. You can filter by using the Product Code of the item you wish to download.

For example, the Product Code of Arm Development Studio is DS000B.


            edmgr entitlements -p <ProductCode>

From this output, you will get a six-digit numeric ID of the product you wish to download. This is the ProductID.

Determine the Release ID

For a given product, there will likely be multiple versions available for download. To see a list of these, use the ProductID as follows:


            edmgr releases -e <ProductID>

From this table, an ID will be shown for each available version. This ID is referred to as the ReleaseID.

For example, you can return the ReleaseID of Arm Development Studio 2023.1 of the form xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.

Determine the Artifact ID

Finally, you must determine the ArtifactID, which is the specific package to download.

To determine the ArtifactID, you need the ProductID and ReleaseID from above:


            edmgr artifacts -e <ProductID> -r <ReleaseID>

The ID given in the output are the available ArtifactIDs for this item.

To continue the example, the Arm Development Studio 2023.1 Linux installer ArtifactID is of the form yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy.

Download the artifact

The package can now be downloaded. You must specify the various IDs from above. Use -d to specify a directory to store the downloaded package.


            edmgr download-artifacts -e <ProductID> -r <ReleaseID> -a <ArtifactID> -d <directory>


When done, you can logout, deleting the cached token.


            edmgr logout

Use JSON format output for scripting

The default output format of the above is a human readable table. Add the -f json option to output in JSON format, which is better suited for automation. This can be applied to all relevant steps, for example.


            edmgr entitlements -f json

This output can be used to implement scripts to manage your downloads. A Python script to download the latest Arm Development Studio is shown below.



            import json
import os

# Set Product Code for Arm Development Studio

# Determine ProductID
cmd1="edmgr entitlements -p "+ProductCode+" -f json > "+ProductCode+".json"
f1 = open(""+ProductCode+".json", "r")
data1 =  json.loads(f1.read())
ProductID = data1[0]['id']
# Output ProductID for debug purposes
print("ProductID =", ProductID)

# Determine ReleaseID
cmd2="edmgr releases -e "+ProductID+" -f json > "+ProductID+".json"
f2 = open(""+ProductID+".json", "r")
data2 =  json.loads(f2.read())
ReleaseID = data2[0]['id']
# Output ReleaseID for debug purposes
print ("ReleaseID =", ReleaseID)

# Determine ArtifactID
cmd3="edmgr artifacts -e "+ProductID+" -r "+ReleaseID+" -f json > "+ReleaseID+".json"
f3 = open(""+ReleaseID+".json", "r")
data3 =  json.loads(f3.read())
ArtifactID1 = data3[0]['id']
ArtifactID2 = data3[1]['id']
# Output ArtifactID for debug purposes
print ("Two artifacts available (Windows and Linux installers)")
print ("ArtifactID1 =", ArtifactID1)
print ("ArtifactID2 =", ArtifactID2)

# Download Artifacts to current directory
cmd4="edmgr download-artifacts -e "+ProductID+" -r "+ReleaseID+" -a "+ArtifactID1+" -d ."
cmd5="edmgr download-artifacts -e "+ProductID+" -r "+ReleaseID+" -a "+ArtifactID2+" -d ."
print("Download complete")

# Tidy up (optional)
os.system("rm -rf *.json")
os.system("ls -l")
os.system("edmgr logout")

which can be executed (after logging in ) with:


            python pdh.py

You should see output similar to:


        ProductID = pppppp
ReleaseID = xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Two artifacts available (Windows and Linux installers)
ArtifactID1 = yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy
ArtifactID2 = zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz
Downloading <windows_installer>
All done!
Downloading <linux_installer>
All done!
Download complete



How would you rate the overall quality of this tool quick-install guide?