---
title: Apply a Custom Resolution
slug: technical/apply-a-custom-resolution
docTags: 
createdAt: 2025-03-11T06:58:09.587Z
---

All BrightSignOS versions from 8.3 on support custom video modes in Series 3 and later hardware platforms.

# Modeline Format

Modeline is a configuration line that delivers information to the server about a connected display and how it should be driven at the specified display resolution. The modeline below is specific to formats up to and including 4K and the modeline format follows  [XFree86\_Modeline](https://en.wikipedia.org/wiki/XFree86_Modeline):

![](https://api.archbee.com/api/optimize/511c8QBH-VHiwWnyzIwUb/OyfbeP7Z0IOvIWUiTx8e-_image2021-6-2215-28-53.png)

## Modeline Notes

- The horizontal and vertical sync flags (`hsync` and `vsync`) are required, but other flags are not supported.
- Only progressive video modes are supported (not interlaced video modes).
- The pixel clock frequency will be rounded to the nearest 0.25MHz.

There are several ways to calculate a modeline:

- The `cvt` command line program, which is available on Linux, generates modelines in the correct format (though you must remove the quotation marks around the mode name). Use the `-r` flag, which reduces blanking.
- **EDID Information** in the **Video** tab of the BrightSign Author DWS, and the `edid hdmi` BrightSign command line, both output the Detailed Descriptor Mode (DTD) EDID entries in the modeline format. You can connect a screen, query the EDID, and use the resulting modeline as your custom modeline.
- You can create your own modeline from the documentation for a particular screen.

# Modeline Format - 8K

![](https://api.archbee.com/api/optimize/0prk6SO2dy9LdU77jB8D1/nLSBLzkPmOMNsKA8sXv9A-20260204-163844.png)

Note that for 8K standards, using the ‘cvt' tool to generate modelines may not generate meaningful values (i.e. they can exceed the maximum pixel clock), and you may need to use a CEA-861-compliant modeline (like the 8K example above).

# Custom Mode

Setting `videomode` to `custom` means that the stored modeline will be used. The configured mode will always be 8 bits per color and RGB. For modes where the pixel area is greater than 2.5 million, the graphics layer will be a quarter size and upscaled by default. Setting the mode to `custom:fullres` forces a full resolution graphics layer as with the higher resolution preset modes. Some players don't allow `fullres` modes - see [Full-Resolution Graphics](docId\:TJNw230KCx6i9tNihfCvD) for more info. 

# Enable Custom Resolutions in BrightScript

Use `SetCustomModeline()` in [roVideoMode](docId\:QQ734nQz0hCwNI0uNSdMP) to parse the modeline, check that it is within the supported range, and then store the value in the registry. The new modeline is only active when the videomode is set to `custom` and, as with most videomode changes, it requires an application restart. Methods like `GetConfiguredMode` will return the width, height, and calculated frame rate from the custom mode. See the examples at the bottom of this page.

# Enable Custom Resolutions in JavaScript

The [videomodeconfiguration](docId\:uupZxkYFlBSOLyh8oLcES) class contains `setCustomModeline()`, which returns whether or not a restart is required. If the videomode is already set to `custom`, a restart will be required.

## Example

```javascript
VMC = require("@brightsign/videomodeconfiguration");
let video_config = new VMC;
let modelinesuccess = await video_config.setCustomModeline("Modeline 3440x1440R 319.75 3440 3488 3520 3600 1440 1443 1453 1481 +hsync -vsync");
let modesuccess = await video_config.setMode({modeName: "custom"})
```

# Modeline Limitations

BrightSign players support any videomode which has:

- A width between the narrowest and widest of any of the preset videomodes (for example, between 640 and 4096 on 4K players, or between 640 and 7680 on 8K players).
- A height between the shortest and tallest of any of the preset videomodes (for example, between 288 and 2160 on 4K players, or between 288 and 4320 on 8K players).
- A pixel clock frequency between 25.0MHz and 2376.0MHz for 8K players, 25.0MHz and 594.0MHz for 4K players, or between 25.0MHz and 200.0MHz for HD players

# Examples

See [this page](https://github.com/brightsign/video-mode-plugin/tree/master) for example video-mode plugins for single and multi HDMI® output models.
