unraid / unraid/api

[Feature Bounty] Generic LED and LCD Controller Subsystem

Open
#1,785 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
TypeScript
Stars
113
Forks
22
Avg merge
10h 40m
Merged PRs (30d)
13

Description

This RFC proposes the creation of a standardised, generic subsystem within Unraid to control hardware LEDs and LCD panels found on various server chassis and add on devices (e.g., Lincstation, UGreen. and custom LCD panels etc). This would create a single API that hardware vendors and plugin developers could hook into.

Description of Feature:

Overview Currently, controlling hardware indicators like LEDs or status LCDs is vendor specific. Each manufacturer uses their own proprietary methods, making it difficult to provide consistent support in Unraid. This results in a fragmented experience where some hardware works and others don't work at all.

Proposed Solution: A Standardised Controller API

• Develop a core subsystem in Unraid that provides a standardized way to interact with LEDs and LCDs.

• This subsystem would act as a middleware layer. Unraid would send status information (e.g., "System Booting," "CPU Usage: 50%", "Disk 3 Error") to the API.

• Hardware specific drivers (which could be built in or added via plugins) would then translate these standard API calls into the specific commands needed for their device.

Feature Details

Unified Hardware Status Display

• Current Issue: Lack of a standard way to display system status on physical hardware.

• Proposed Solution:

◦ The API should support both simple LEDs (changing color, blinking) and multi line character LCDs.

◦ During system boot, the subsystem could display boot progress on an LCD screen ?

◦ Once the system is running, the GUI would allow users to customise what is displayed.

◦ A new settings page would let users configure their hardware and choose what metrics to show (e.g., CPU/memory usage, network throughput, disk status, array health).

◦ It would also allow users to control aesthetic elements, such as turning off overly bright LEDs.

How This Feature Will Benefit Unraid Users

• Provides at a glance system status without needing to log into the web GUI.

• Creates a consistent experience across different hardware brands.

• Enables a rich ecosystem for developers to easily add support for new hardware enclosures and display devices.

Where This Feature Will Exist in the Web GUI

• A new settings page, likely under Settings -> System Settings, called "LED/LCD Display" or similar.

• On this page, users would select their hardware type from a dropdown and configure the information they want to be displayed.

Why This Feature Should Be Added to Unraid

• It makes Unraid more integrated with the hardware it runs on.

• It encourages hardware vendors to support Unraid by giving them a simple, standard API to target.

• It replaces insecure, bloated, and vendor specific solutions with a secure and unified native implementation.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

No files, tests, or entry points are named. Start by surveying the TypeScript API monorepo and clarifying the subsystem boundary, device-driver or plugin contract, supported LED and LCD capabilities, and GUI settings scope. Done means an agreed design and implementation plan for the standard API, hardware integrations, status display, and configuration page.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
api, backend-api-design, embedded-iot
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.