Skip to content

Oksion/XiControl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Xi Control

Windows .NET License Buy Me a Coffee

Лёгкая утилита в трее для ноутбуков Xiaomi / Redmi (Redmibook) — в первую очередь для Xiaomi Book Pro 14 (2026), на котором она разработана и обкатана, но не только для него. Защита заряда батареи, режимы производительности, OSD и «оживление» фирменных клавиш.

Всё управление идёт через штатный WMI-интерфейс прошивки (MiCommonInterface, ODM Bitland «MIFS») — тот же канал, которым пользуется официальный Xiaomi PC Manager. Никакого WinRing0, никаких сторонних драйверов и прямого доступа к EC.

Панель быстрых настроек

Панель быстрых настроек (удержание кнопки Mi): пять режимов производительности и лимит заряда. Значок в трее меняется по активному режиму:

Значок в трее

Возможности

  • 🔋 Защита заряда — «беречь батарею» (зарядка до ~80%) / полный заряд 100%.
    • ChargeGuard: прошивка сбрасывает лимит после сна и переключения питания — утилита автоматически переустанавливает его.
  • Режимы производительности: Эко (скрытый режим прошивки) / Тихий / Авто / Турбо / Полная мощность. Эко и Полную мощность можно убрать из UI через конфиг.
  • 🖥️ OSD-оверлей (тёмная карточка, авторские иконки):
    • подключение/отключение зарядки («Зарядка до 80%» / «Работа от батареи» + уровень);
    • смена режима производительности и лимита заряда;
    • микрофон вкл/выкл, подсветка клавиатуры (выкл / 50% / 100% / авто).
  • 🅼 Mi-кнопка:
    • короткое нажатие — циклическое переключение режимов с OSD;
    • удержание — панель быстрых настроек (режимы + заряд 80/100, закрытие по Esc/X/клику вне).
  • ⌨️ Оживление «мёртвых» клавиш: проекция → Win+P, «настройки» → переключение лимита заряда 80/100 с OSD, AI-клавиша → Copilot (Win+C) или своя программа, клавиша микрофона мьютит системный микрофон.
  • 🎨 Значок в трее меняется по режиму, монохром под светлую/тёмную панель задач; тёмное меню в тон системной теме (переключается на лету).
  • 🦉 «Режим совы» — не гасить экран и не засыпать; закрытая крышка на питании от сети лишь выключает экран (на батарее — штатный сон). Сова в панели / галочка в меню; тайминги электропитания не изменяются, действие крышки восстанавливается. Можно скрыть фичу целиком ("OwlMode": false в конфиге).
  • 🌐 Язык интерфейса: русский / английский / китайский (中文).
  • 🚀 Автозапуск через Планировщик заданий (без UAC-запроса при входе, работает на батарее).

Совместимость

Проверено на Xiaomi Book Pro 14 (TM2424). Должно работать на ноутбуках Xiaomi/Redmi производства ODM Bitland с WMI-классом MiCommonInterface (большинство Redmibook / Xiaomi Book последних поколений).

Проверить свою машину (PowerShell):

Get-CimClass -Namespace root/wmi -ClassName MiCommonInterface

Если класс нашёлся — интерфейс есть. Набор поддерживаемых функций зависит от модели (утилита определяет их в рантайме и не падает на неподдерживаемых).

Установка

Готовый exe — на странице релизов:

  • XiControl-vX.X.X-win-x64.exe — самодостаточный, ничего ставить не нужно (~70 МБ);
  • XiControl-vX.X.X-win-x64-net8.exe — лёгкий (~2 МБ), требует .NET 8 Desktop Runtime.

Запуск — от администратора (это требование WMI-интерфейса прошивки — даже чтение без elevation не работает).

Сборка из исходников:

dotnet build src/XiControl.csproj -c Release
# → src/bin/Release/net8.0-windows/XiControl.exe

Один переносимый .exe (без установленного .NET):

dotnet publish src/XiControl.csproj -c Release -r win-x64 --self-contained -p:PublishSingleFile=true

Использование

Запусти XiControl.exe (подтверди UAC) — появится значок в трее.

Действие Результат
Клик по значку (любой кнопкой) Меню: заряд, режим, язык, автозапуск, выход
Mi-кнопка, одинарный клик Следующий режим производительности + OSD
Mi-кнопка, двойной клик Переключение лимита заряда 80% ↔ 100% + OSD
Mi-кнопка, удержание ~0.5 с Панель быстрых настроек
Клавиша микрофона Мьют/анмьют системного микрофона + OSD
Клавиша «настройки» Переключение лимита заряда 80% ↔ 100% + OSD
Клавиша подсветки клавиатуры OSD с уровнем (выкл / 50% / 100% / авто)

Для автозапуска включи «Запускать с Windows» в меню — задача планировщика создаётся с повышенными правами, поэтому при входе UAC-запрос не показывается.

Скрыть ненужные режимы

Проще всего — галочки в меню трея: Настройки → Показывать «Эко» / «Полную мощность» (применяется сразу). То же самое в %APPDATA%\XiControl\config.json (скрытый режим включить из приложения станет нельзя):

"EcoMode": false,
"FullSpeedMode": false
  • Эко — скрытый режим прошивки, которого нет в официальном софте (на проверенной модели гасит подсветку клавиатуры и снижает яркость экрана — самый экономный профиль);
  • Полная мощность — если не пользуешься или хочешь исключить случайное включение (режим шумный и требует питания от DC-разъёма).

По умолчанию оба показываются. После правки перезапусти приложение.

Переназначение клавиш

Раскладка клавиш переключается в меню: Настройки → «Клик Mi — производительность» / «Двойной клик Mi» / «Клавиша настроек — заряд». То же самое — в config.json:

"SettingsKey": "settings",
"MiShortPress": "charge"
  • SettingsKey — клавиша «настройки»: "charge" (по умолчанию) — переключение заряда 80/100, "settings" — открыть Параметры Windows;
  • MiShortPress — раскладка кликов Mi-кнопки: "modes" (по умолчанию) — одинарный клик переключает режимы по кругу, двойной — заряд 80/100; "charge" — наоборот (одинарный — заряд, двойной — режимы). Удержание Mi всегда открывает панель.
  • MiDoubleClickfalse отключает жест двойного клика: одинарный клик срабатывает мгновенно, без окна ожидания ~300 мс (по умолчанию true).

Настройка AI-клавиши

По умолчанию AI-клавиша открывает Copilot (Win+C). Можно назначить свою программу — в %APPDATA%\XiControl\config.json добавь:

"AiKeyProgram": "C:\\Tools\\MyApp.exe",
"AiKeyArgs": "--flag"

Подойдёт exe, документ или URL (например "https://chat.example.com"); переменные окружения (%USERPROFILE% и т.п.) раскрываются. AiKeyArgs — опционально. После правки конфига перезапусти приложение. Учти: XiControl работает с правами администратора, поэтому запущенная программа тоже их унаследует.

Ограничения

  • Порог «беречь батарею» зашит в прошивку — произвольный процент через WMI невозможен. На проверенной модели (TM2424) это ≈80%; на других моделях порог может отличаться (например, 70% на моделях, которые обслуживал MI Control).
  • Комбинация Fn+Mi не отличима от одиночной Mi (прошивка шлёт одинаковые события), поэтому используется короткое/длинное нажатие.
  • Набор функций зависит от модели: телеметрия (обороты вентиляторов, температуры) на проверенной машине прошивкой не поддерживается.

Как это работает

Протокол MIFS разобран и задокументирован в docs/:

Коротко: метод MiInterface принимает 32-байтовый буфер ([1] — GET 0xFA / SET 0xFB, [3] — команда, [4]/[6] — аргументы) и возвращает статус в OUT[1] (0x80 — ок). Заряд — команда 0x10, режимы — 0x08, события клавиш приходят WMI-событием HID_EVENT20.

Протокол восстановлен по открытым источникам (включая драйвер ядра Linux) без копирования чужого кода — переносились только факты об интерфейсе. Подробности и лицензии источников: docs/04-references.md.

Разработка

src/            приложение (C# / .NET 8 / WinForms)
assets/svg/     иконки: osd/ — цветные 128×128, tray/ — монохром 24×24 (currentColor)
tools/IconPreview/  рендер иконок в PNG для проверки + генерация app.ico
docs/           документация протокола и архитектуры
reference/      PowerShell-пробы, журналы исследования прошивки

Диагностика: ошибки пишутся в %APPDATA%\XiControl\log.txt.

История изменений: CHANGELOG.md · Планы: ROADMAP.md

Лицензия

GPL-3.0.

Утилита пригодилась? Можно угостить кофе ☕.


English

Xi Control — a lightweight tray utility for Xiaomi / Redmi (Redmibook) laptops, built and tested primarily on the Xiaomi Book Pro 14 (2026) but not limited to it: battery charge limit (~80% / 100%) with automatic re-arm after sleep, performance modes (Quiet / Auto / Turbo / Full speed), OSD overlays, Mi button handling (short press — cycle modes, hold — quick settings panel) and fixes for otherwise dead special keys.

Everything is driven through the firmware's stock WMI interface (MiCommonInterface, Bitland "MIFS") — no WinRing0, no third-party drivers. Requires Windows 10/11 x64 and administrator rights (a firmware WMI requirement). UI is available in English.

Check compatibility: Get-CimClass -Namespace root/wmi -ClassName MiCommonInterface. Build: dotnet build src/XiControl.csproj -c Release. License: GPL-3.0.

About

Tray utility for Xiaomi/Redmi laptops: battery charge limit (80%), performance modes, OSD and Mi button — driver-free, via the stock firmware WMI interface (MIFS)

Topics

Resources

License

Stars

4 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors

Languages