Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Blamp26/boardcontrol

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

59 Commits

Repository files navigation

boardcontrol

CI

Status Language Hardware writes

Quick links: Documentation · Project Map · Safety Model · Roadmap

Open-source experimental alternative to MSI Center / Mystic Light for low-level LED initialization control on the MSI motherboard family 7A45.

The current codebase is a safety-first research MVP. It models known register-level behavior but does not perform real hardware writes yet.

Documentation

MS-7E75 Safe Linux HID Commands

Status: read-only / dry-run only. Phase 4 is on hold.

Passive MSI Center USBPcap evidence for MB -> JARGB_V2_1 observed HID Feature SET_REPORT 0x50 with length 290. The only live MSI Center write path observed so far is 0x50/290. Do not use JARGB_V2_1 -> 0x90 as a first-write plan; 0x90..0x93 remain static/decompiled evidence only until live traffic confirms them. This does not approve Linux writes.

Allowed commands:

cargo run -- linux hid inventory
cargo run -- linux hid gate
cargo run -- linux hid dry-run --zone JRGB1 --color ff0000
cargo run -- linux hid dry-run --zone JARGB_V2_1 --color ff0000

Expected wording:

  • READ ONLY or DRY RUN ONLY
  • devices_opened = no
  • writes_performed = no
  • support = unsupported/not enabled

Forbidden here:

  • write, apply, or set commands
  • write-once
  • HID SetFeature
  • general Linux lighting support claims

Helpful references:

Project Map

flowchart LR
 App[MSI Center / Mystic Light] --> DLL[MBAPI / Driver Engine]
 DLL --> Driver[NTIOLib driver]
 Driver --> NCT[Nuvoton NCT6779D]
 Driver --> SMBus[Intel SMBus]
 NCT --> Init[7A45 LED init/reset]
 SMBus --> Renesas[Renesas LED controller 0x52]
 Renesas --> RGB[RGB / effects / modes]
 boardcontrol[boardcontrol Rust CLI] --> Doctor[doctor preflight]
 boardcontrol --> Trace[TraceBackend]
 boardcontrol --> ReadOnly[Linux read-only NCT reads]
 Doctor --> Safety[DMI + /proc/ioports + /dev/port checks]
 ReadOnly --> Allowlist[7A45 allowlist]
Loading

boardcontrol currently implements the safe/read-only side of this map: trace simulation, DMI preflight, chip detection, and allowlisted NCT register reads. LED write/apply commands are not implemented yet.

The plan commands calculate RMW reports without writing to hardware or mutating the trace backend.

Project Status

Current MVP status:

  • Rust CLI
  • trace backend for safe sequence simulation
  • experimental Linux read-only Super I/O chip detection
  • no real LED hardware writes yet
  • supports only MSI board profile 7A45
  • models the Nuvoton NCT6779D LED init/reset sequence
  • includes safe RMW allowlist logic
  • includes a pure in-memory MS-7E75 MB800 HID Phase 0 report builder
  • passes cargo check, cargo test, and cargo clippy -- -D warnings

Supported Hardware Status

Board Super I/O Renesas SMBus Status
7A45 Nuvoton NCT6779D 0x52 Trace simulation + experimental Linux read-only chip detection

Architecture

MSI 7A45 LED control paths:

  • NCT6779D Super I/O through ports 0x4E / 0x4F
  • Renesas LED controller through Intel SMBus address 0x52

MVP structure:

  • TraceBackend
  • board profile
  • NCT allowlist
  • RMW executor
  • CLI commands

Safety Model

  • no blind writes
  • all NCT writes are modeled as read-modify-write
  • every changed bit must be allowed by (LDN, REG, allowed_change_mask)
  • unknown boards are unsupported
  • real hardware writes are intentionally not implemented yet
new_value = (current & and_mask) | or_mask
changed = current ^ new_value
if changed & !allowed_change_mask != 0:
 block
else:
 write

Current CLI

cargo run -- detect --board 7A45
cargo run -- nct init-7a45 --dry-run
cargo run -- nct reset-led --dry-run
cargo run -- nct plan-init-7a45
cargo run -- nct plan-reset-led

--dry-run commands print a planning report first and then execute the same sequence against TraceBackend. The plan commands only calculate RMW reports and do not mutate even the trace backend. Safe CI smoke tests cover only trace/planning commands and do not access hardware.

Test Commands

cargo fmt
cargo check
cargo test
cargo clippy -- -D warnings

Roadmap

  • Trace-only Rust CLI MVP
  • 7A45 NCT init/reset sequence model
  • Safe RMW allowlist tests
  • Linux read-only NCT6779D chip detection
  • Linux read-only allowlisted NCT register reads
  • Safe doctor/preflight diagnostics
  • RMW planning/report layer
  • MS-7E75 research-only DMI detection
  • MS-7E75 HID Phase 0 in-memory report builder
  • Linux /dev/port backend for controlled NCT RMW writes
  • /proc/ioports conflict checks
  • Renesas SMBus raw write backend
  • Renesas RGB/mode mapping
  • Windows backend

Experimental Read-Only Hardware Detection

cargo run -- nct detect-chip --backend dev-port --confirm-read

This command only performs Super I/O config-mode register reads for chip identification. It does not execute LED init/reset writes.

Linux only. Requires permission to access /dev/port. The command refuses to run without --confirm-read. Hardware read commands are gated by Linux DMI checks and are expected to run only on hosts that look like MSI 7A45. Non-target systems, such as Dell OptiPlex machines, are rejected before opening /dev/port.

Safe Diagnostics

cargo run -- doctor

doctor performs non-invasive environment checks only. It reads DMI and /proc/ioports, checks whether /dev/port exists, and explains whether hardware-read commands would be blocked. It does not open /dev/port and does not perform Super I/O port I/O.

Experimental Allowlisted Register Read

cargo run -- nct read-reg --board 7A45 --backend dev-port --ldn 0x09 --reg 0xE0 --confirm-read

This command only reads a single allowlisted NCT6779D register for the selected board profile. It refuses unknown boards, unsupported chips, non-allowlisted registers, and runs only after explicit --confirm-read.

Legal / Project Note

This project does not include MSI binaries, MSI drivers, MSI logos, or decompiled MSI source code. It is an independent clean-room implementation based on observed hardware behavior and register-level research.

About

Experimental open-source Rust CLI for MSI 7A45 LED initialization research, with safety-first NCT6779D and SMBus knowledge map.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /