> For the complete documentation index, see [llms.txt](https://asus-isg-aidc.gitbook.io/guide/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://asus-isg-aidc.gitbook.io/guide/latest/portal/firmwareintroduction/firmwarerepository.md).

# Firmware Repository

| Developer | Last modified |
| --------- | ------------- |
| AIDC Team | 2026/05/05    |

## Feature Description

Firmware Repository is a centralized page for managing firmware files. Here you can upload new firmware, add tags to firmware for classification, and directly initiate update tasks for devices from the repository.

![FirmwareRepository](https://pub-f334ff01208c4e6195b80133ac6e6030.r2.dev/portal/firmwareManagement/repository.png)

***

## Page Structure

At the top of the page is a prominent **Upload Firmware** button.

Below are two rows of filtering tools:

* **First row**: Filter by firmware type (All Types / BIOS / BMC / NIC / NVMe)
* **Second row**: Filter by tags + keyword search

***

## Filtering and Searching

### Filter by Type

Click type tag buttons to display only firmware of the corresponding type:

| Button    | Display Range      |
| --------- | ------------------ |
| All Types | All firmware       |
| BIOS      | BIOS firmware only |
| BMC       | BMC firmware only  |
| NIC       | NIC firmware only  |
| NVMe      | NVMe firmware only |

### Filter by Tags

Click the "Tag" dropdown menu and select a specific tag to filter firmware containing that tag.

### Keyword Search

Enter keywords in the search field to search by the following fields:

* Firmware Name
* Description
* Vendor
* Version Number

***

## Firmware Cards

Each firmware is presented in card format, containing the following information:

| Field         | Description                                                    |
| ------------- | -------------------------------------------------------------- |
| Type Tag      | Firmware type distinguished by color (BIOS / BMC / NIC / NVMe) |
| Firmware Name | Identifying name of the firmware                               |
| File Name     | Actual file name                                               |
| Version       | Firmware version number                                        |
| File Size     | Displayed in KB or MB                                          |
| Tags          | Assigned classification tags (displayed as small tags)         |

### Operation Buttons on Cards

| Button               | Function                                       |
| -------------------- | ---------------------------------------------- |
| Create Update Task   | Directly create update task with this firmware |
| Edit Tags / Add Tags | Edit or add tags for this firmware             |
| Delete (delete icon) | Delete this firmware                           |

***

## Upload Firmware

![UploadFirmware](https://pub-f334ff01208c4e6195b80133ac6e6030.r2.dev/portal/firmwareManagement/repository-upload.png)

Click the **Upload Firmware** button in the upper right corner of the page to open the upload dialog.

### Upload Process

**1. Select Firmware Type**

Select firmware type from dropdown (required): BIOS, BMC, NIC, NVMe.

**2. Set Tags (Optional)**

![SetTags](https://pub-f334ff01208c4e6195b80133ac6e6030.r2.dev/portal/firmwareManagement/add-tag.png)

Select one or more tags from the tag dropdown. The tag field label changes with the selected firmware type (such as Model, System, Series, or All).

If no suitable tags exist, you can enter a tag name in the "Add new tag" field and click **Add** to create a new tag.

If you typed a new tag name but did not click **Add**, the upload flow is blocked until the tag is either created or cleared.

**3. Upload File**

There are two ways to upload files:

* **Drag and drop**: Directly drag the file to the upload area and release
* **Choose file**: Click the "Choose File" button to select a file from your computer

> **Note**: File names cannot contain spaces, parentheses `()`, square brackets `[]`, or curly braces `{}`, otherwise upload will fail.

**4. Upload Progress**

After file upload begins, a progress bar and percentage will be displayed. After upload completion, it enters server processing phase, showing "Processing file on server...".

> If processing takes a long time, the system shows a "Processing may take a while" message. If processing times out, the dialog tells you to refresh the list manually later.

**5. Upload Result**

| Status  | Display Content                                 |
| ------- | ----------------------------------------------- |
| Success | Checkmark icon + "Upload successful!"           |
| Failed  | Error icon + "Upload failed. Please try again." |

After successful upload, if you want to delete the just-uploaded file, you can click the displayed delete button.

***

## Create Update Task (From Repository)

Click the **Create Update Task** button on a firmware card to open a task creation dialog with three steps.

![SelectMethod](https://pub-f334ff01208c4e6195b80133ac6e6030.r2.dev/portal/firmwareManagement/update-by-file.png)

### Step 1: Select Update Method

Fill in the **Task Name** and select the update method to use from the list.

Each update method displays its description and type code to help you choose the correct option.

> **Note**: The Repository dialog does not expose a `remotely` / `locally` toggle. Tasks created from this page are fixed to `locally` mode, and if only one method is available it is selected automatically.

> **Additional note**: Even though the UI does not expose a remote/local mode switch, the fields shown in the dialog still depend on the backend parameter schema of the selected update method.

### Step 2: Select Devices

![SelectDevices](https://pub-f334ff01208c4e6195b80133ac6e6030.r2.dev/portal/firmwareManagement/update-byfile-select-devices.png)

This step is the same as device selection on the Firmware Update page:

* Expand/collapse device lists by group
* Check checkboxes next to devices to select them
* Click "Select All Ready" to select all available devices at once

Each device displays: device name, status label (Online / Offline / Updating / Unknown), model, IP address.

> **Note**: Offline or updating devices cannot be checked.

### Step 3: Configure Update Parameters or NVMe Devices

![NVMeConfiguration](https://pub-f334ff01208c4e6195b80133ac6e6030.r2.dev/portal/firmwareManagement/byfile-nvme-configuration.png)

Depending on the selected update method, the content displayed in this step will vary:

#### Update Source and File Information (Displayed When Applicable)

Before the configuration parameters section, if the selected update method's parameter schema includes specific fields, the system displays read-only information blocks with the following content:

**1. Update Source**

If the update method's parameter schema includes the `updateAction` field, this block displays the fixed value `locally`, indicating that the Repository flow consistently uses local firmware file mode.

**2. Selected Firmware File**

If the update method's parameter schema includes the `filename` field, this block displays the currently selected repository firmware artifact filename.

> **Note**: These two information blocks are read-only displays. Their purpose is to clearly show users the update source and firmware file used by the Repository flow. They only appear when the backend method parameter schema includes the corresponding fields.

#### Scenario A: The selected method defines a URL parameter

* **Firmware File URL**: Enter the firmware download link

This does not mean the user can switch the Repository flow into `remotely` mode. The Repository UI itself does not provide a remote/local toggle. The URL field appears only when the selected method definition requires `firmwareUrl`, or when its dynamic parameters include `uri` / `firmwareUrl`.

**URL Format Validation**

The system automatically validates the entered URL format. The entered URL must comply with the following rules:

| Validation Rule                      | Description                                                                                       |
| ------------------------------------ | ------------------------------------------------------------------------------------------------- |
| **Protocol Required**                | Only accepts URLs starting with `http://` or `https://`                                           |
| **Valid URL Format**                 | Must include a valid hostname or IP address                                                       |
| **Filename with Extension Required** | URL path must end with a filename that includes an extension (e.g., `.bin`, `.ima`, `.cap`, etc.) |

When the entered URL does not comply with the rules, a red error message will immediately display below the field. If validation errors exist, the **Create & Start Task** button is automatically disabled and submission is blocked.

✅ **Valid URL Example**: `http://10.10.31.69/firmware/bmc/R72324112_NCHC_2.ima`

❌ **Invalid URL Examples**: `sss`, `http://hostname`, `http://hostname/path/`

> **Actual submission behavior**: If the selected update method does not require a URL parameter, the system submits the currently selected Repository artifact as `filename`, and no Firmware URL input is required.

#### Scenario B: NVMe Type - Single Device / Device Range Configuration

If the update method corresponds to NVMe type, this step will display an "NVMe Device Configuration" section:

**Add Device Range Configuration**

* **NVMe Device (Required)**: Enter a single device index or device range
  * The input field automatically displays the `/dev/nvme` prefix; you only need to enter the numeric portion
  * Single-device format: `1`, `5`, `10`, etc.
  * Range format: `1~10`, `5~12`, etc.
  * Start number must be ≤ end number
* **Exclude Device (Optional)**: Enter a single device index to exclude
  * The input field automatically displays the `/dev/nvme` prefix; you only need to enter the numeric portion
  * Format: `1`, `5`, `7`, etc.
  * Must be within the specified range

> **Note**: NVMe firmware updates currently support SAMSUNG firmware only.

**Support for Multiple Configurations**

![MultipleNVMeConfiguration](https://pub-f334ff01208c4e6195b80133ac6e6030.r2.dev/portal/firmwareManagement/multiple-nvme-devices-setting.png)

* Click the green **"+"** button on the title right to add configurations
* When multiple configs exist, click the red **"−"** button on the right to delete a row
* System automatically consolidates and calculates final device list

**Device List Preview**

* Below configurations, a blue "Device List Preview" panel displays
* Shows calculated results in real-time, including total device count
* Single-device and range configurations are both reflected in the preview

#### Scenario C: Additional Configuration Parameters

If the selected update method includes other parameters, Step 3 also shows a **Configuration Parameters** section. It may include:

* Enum dropdowns
* Text inputs
* Boolean toggles

When the method includes `updateMode`, the UI shows timing hints. If that selection restricts allowed firmware extensions, the currently allowed extensions are also displayed.

### Complete Creation

After confirming settings, click **Create & Start Task** to create and start the task.

| Result  | Display Content                           |
| ------- | ----------------------------------------- |
| Success | Checkmark icon + success message + Job ID |
| Failed  | Error icon + detailed error description   |

After success you can choose:

* **Close**: Return to the repository list
* **View History**: Jump directly to Update History

***

## Manage Tags

### Edit Firmware Tags

Click the **Edit Tags / Add Tags** button on a firmware card to open the edit tags dialog:

* Select or remove tags from the dropdown menu
* Click **Save** to save changes
* Click **Cancel** to cancel

### Delete Tags

To delete a tag (remove from the entire system), use the tag management function. Before deletion, the system will display a confirmation dialog listing all firmware files associated with this tag. After confirming, click **Delete Tag** to execute deletion.

***

## Delete Firmware

Click the delete icon on a firmware card to start deletion immediately. While deletion is in progress, the card shows a pending overlay, and the item is removed from the list after the worker finishes.
