---
sidebar_position: 0
---

# firmware

The `sos.management.firmware` API groups together methods for working with the firmware of the device.

:::warning
Always check if your absolute firmware URL ends with a firmware file. Example: `https://cnd.your-cms.com/brightsign/fw/brightsign-update.bsfw`
:::

:::info
For BrightSign firmware upgrade, please ensure that you have a text file with the SHA1 hash of that firmware file.
- Firmware file path: `https://cnd.your-cms.com/brightsign/fw/brightsign-update.bsfw`
- SHA1 txt file: `https://cnd.your-cms.com/brightsign/fw/brightsign-update.bsfw.sha1.txt`
:::

<details>
    <summary>Firmware Management Capabilities</summary>
		| Capability | Description |
		|:------------|:-------------|
		| `FIRMWARE_UPGRADE` | If device can upgrade firmware version |

		If you want to check if the device supports this capability, use [`sos.management.supports()`](https://developers.signageos.io/sdk/sos_management/#supports).
</details>

## Methods

### getType()

The `getType()` method returns the type of the firmware currently installed on the device.

This information, when combined with firmware version, can be used to identify a correct firmware image to install on the current device.

<details>
    <summary>Linux and Android prefixes</summary>
		| Type | Description |
		|:------------|:-------------|
		| `rpi` | Any Raspberry Pi 3 or Compute Module 3 |
		| `rpi4` | Any Raspberry Pi 4 or Compute Module 4 |
		| `benq-` | Any Benq display |
		| `philips-` | Any Philips display |
		| `sharp-` | Any Sharp display |
		| `elo-` | Any Elo display |
</details>

```ts expandable
getType(): Promise<string>;
```

#### Return value

A promise that resolves to the current firmware type.

#### Example

```ts
const type = await sos.management.firmware.getType();
console.log(type); // e.g. rpi4
```

<Separator />

### getVersion()

The `getVersion()` method returns the version of the firmware currently installed on the device.

```ts expandable
getVersion(): Promise<string>;
```

#### Return value

A promise that resolves to the current firmware version.

#### Example

```ts
const version = await sos.management.firmware.getVersion();
console.log(version); // Returns String e.g. T-HKMLAKUC-2020.5
```

<Separator />

### upgrade(baseUrl, version)

The `upgrade(baseUrl, version)` does the same as `upgrade(version, baseUrl)`.

```ts expandable
upgrade(baseUrl: string, version: string): Promise<void>;
```

#### Params

| Name      | Type     | Required         | Description                                      |
|-----------|----------|------------------|--------------------------------------------------|
| `baseUrl` | `string` |  <div>Yes</div>  | The server URL where firmware files are located. |
| `version` | `string` |  <div>Yes</div>  | The version of the firmware being installed.     |

#### Return value

A promise that resolves when the firmware upgrade is initiated.

#### Example

```ts
await sos.management.firmware.upgrade('https://cdn.your-cms.com/tizen/pmf/fw/2080_4.bem', 'T-HKMLAKUC-2080.4');
```

<Separator />

### upgrade(fwUri)

The `upgrade(fwUri)` method initializes a firmware upgrade. Open users can upgrade fw passing FQN
uri where the firmware main file is located.

This file type/extension differs for every platform. E.g.:
- SSSP: http://example.com/fw/T-0.0.0.msd
- Tizen: http://example.com/fw/T-0.0.0.bem
- Webos: http://example.com/fw/0.0.0.epk
- Brightsign: http://example.com/fw/hd2-0.0.0.bsfw
- Linux: http://example.com/fw/rpi-0.0.0.img.zip
- Android: http://example.com/fw/FB-00.0.0.zip

```ts expandable
upgrade(fwUri: string): Promise<void>;
```

#### Params

| Name    | Type     | Required         | Description                                      |
|---------|----------|------------------|--------------------------------------------------|
| `fwUri` | `string` |  <div>Yes</div>  | FQN uri where the firmware main file is located. |

#### Return value

A promise that resolves when the firmware upgrade is initiated.

#### Example

```ts
await sos.management.firmware.upgrade('https://cdn.your-cms.com/tizen/pmf/fw/2080_4.bem');
```

:::note[GitHub Example]

- [ Example applet with firmware upgrade](https://github.com/signageos/applet-examples/tree/master/examples/management-js-api/firmware)

:::

<Separator />

### upgrade(version, baseUrl)

The `upgrade(version, baseUrl?)` method initializes a firmware upgrade using version and baseUrl. Platform users can install general
firmware version directly with passing just version number. Optionally, the baseUrl can be passed as argument to specify server where
the firmware files are accessible.

```ts expandable
upgrade(version: string, baseUrl?: string): Promise<void>;
```

#### Params

| Name      | Type     | Required         | Description                                                                                           |
|-----------|----------|------------------|-------------------------------------------------------------------------------------------------------|
| `version` | `string` |  <div>Yes</div>  | The version of the firmware being installed.                                                          |
| `baseUrl` | `string` |  <div>No</div>   | Optional server URL where firmware files are located.<br/>(Default value: `"https://2.signageos.io"`) |

#### Return value

A promise that resolves when the firmware upgrade is initiated.

#### Example

```ts
await sos.management.firmware.upgrade('T-HKMLAKUC-2080.4');
```