Доброго времени суток.
Передо мной стоит задача управлять(вкл/выкл) светодиодом питания на корпусе компьютера с помощью программы под WinXP. В интернете в принципе есть похожие вещи, но только для светодиодов на клавиатуре. Был бы очень признателен за любую помощь по этому вопросу.
Здравствуйте, power_led, Вы писали:
_>Передо мной стоит задача управлять(вкл/выкл) светодиодом питания на корпусе компьютера с помощью программы под WinXP.
Выясняли ли Вы, прежде чем браться за эту задачу, что решение возможно в принципе?
Обязательно бахнем! И не раз. Весь мир в труху! Но потом. (ДМБ)
Здравствуйте, power_led, Вы писали:
_>Передо мной стоит задача управлять(вкл/выкл) светодиодом питания на корпусе компьютера с помощью программы под WinXP. В интернете в принципе есть похожие вещи, но только для светодиодов на клавиатуре. Был бы очень признателен за любую помощь по этому вопросу. _>
Здравствуйте, ДимДимыч, Вы писали:
ДД>Здравствуйте, power_led, Вы писали:
_>>Передо мной стоит задача управлять(вкл/выкл) светодиодом питания на корпусе компьютера с помощью программы под WinXP.
ДД>Выясняли ли Вы, прежде чем браться за эту задачу, что решение возможно в принципе?
Правда, как я понял, они только для ноутбуков Asus. Возможно это и не совсем так, но зато показан принцип того, что такое управление возможно.
Примеры кстати я собирал на своем компе (материнка Asus), надеялся что получиться, но увы. Разбираюсь и ищу дальше.
Re[2]: Управление светодиодами на корпусе компьютера
Здравствуйте, Centaur, Вы писали:
C>Здравствуйте, power_led, Вы писали:
_>>Передо мной стоит задача управлять(вкл/выкл) светодиодом питания на корпусе компьютера с помощью программы под WinXP. В интернете в принципе есть похожие вещи, но только для светодиодов на клавиатуре. Был бы очень признателен за любую помощь по этому вопросу. _>>
C>ExitWindowsEx(EWX_POWEROFF, …) — светодиод гаснет. C>SetSuspendState(FALSE, FALSE, FALSE) — светодиод начинает мигать.
C>Ну или перецепить светодиод с материнки на какой-нибудь другой девайс. На сетевуху, например, или на звук.
Управление — это процесс длящийся во времени, в случае же использования предложенных функций слишком быстро управляющая программа теряет контроль
Про другие девайсы можно забыть, что-то перецеплять, вставлять, удалять категорически запрещено.
Re[3]: Управление светодиодами на корпусе компьютера
Здравствуйте, power_led, Вы писали:
_>Возможно это и не совсем так, но зато показан принцип того, что такое управление возможно.
Возможно, во-первых, если заложена такая аппаратная возможность. В худшем случае светодиод может питаться прямо с линии +5В, и управлять им без аппаратной доработки невозможно в принципе. В более-менее современных системах светодиод управляется какой-то частью чипсета, потому как нужно уметь мигать им в различных режимах энергосбережения. Если работа светодиода аппаратно связана с режимом энергосбережения (а я бы делал именно так, потому что так наиболее надежно и независимо от ОС и ПО), то изменить состояние светодиода можно только изменив сам режим работы системы (как ниже предложил Centaur). Если же разработчики чипсета предусмотрели независимое управление светодиодом со стороны драйвера (как в вышеприведенных примерах), то да, управление для данного конкретного чипсета возможно и без аппаратных доработок.
Еще гипотетически существует такая возможность, что чипсет поддерживает загрузку внешней фирмвари — в таком случае так же теоретически можно залить собственную прошивку под конкретный чипсет. Но работающие примеры такого сценария лично мне не встречались.
_>Примеры кстати я собирал на своем компе (материнка Asus), надеялся что получиться, но увы. Разбираюсь и ищу дальше.
Отталкиваться нужно от конкретной модели чипсета. Для каких-то может и получится.
Обязательно бахнем! И не раз. Весь мир в труху! Но потом. (ДМБ)
Здравствуйте, ДимДимыч, Вы писали:
ДД>Здравствуйте, power_led, Вы писали:
_>>Возможно это и не совсем так, но зато показан принцип того, что такое управление возможно.
ДД>Возможно, во-первых, если заложена такая аппаратная возможность. В худшем случае светодиод может питаться прямо с линии +5В, и управлять им без аппаратной доработки невозможно в принципе. В более-менее современных системах светодиод управляется какой-то частью чипсета, потому как нужно уметь мигать им в различных режимах энергосбережения. Если работа светодиода аппаратно связана с режимом энергосбережения (а я бы делал именно так, потому что так наиболее надежно и независимо от ОС и ПО), то изменить состояние светодиода можно только изменив сам режим работы системы (как ниже предложил Centaur). Если же разработчики чипсета предусмотрели независимое управление светодиодом со стороны драйвера (как в вышеприведенных примерах), то да, управление для данного конкретного чипсета возможно и без аппаратных доработок. ДД>Еще гипотетически существует такая возможность, что чипсет поддерживает загрузку внешней фирмвари — в таком случае так же теоретически можно залить собственную прошивку под конкретный чипсет. Но работающие примеры такого сценария лично мне не встречались.
_>>Примеры кстати я собирал на своем компе (материнка Asus), надеялся что получиться, но увы. Разбираюсь и ищу дальше.
ДД>Отталкиваться нужно от конкретной модели чипсета. Для каких-то может и получится.
Думаю уже можно переформулировать изначальный вопрос и начать искать более конкретную информацию по ATK ACPI драйверу для конкретного чипсета (в моем случае AMD 785G). У кого есть информация по этому драйверу, буду благодарен за её предоставление, ну и общие сведения про этот тип драйверов для начала не помешают.
А вообще, в век когда из ОС можно поменять напряжение на процессоре, остановить вентиляторы и прошить биос, хочется верить, что уж светодиодами возможно с легкостью управлять и подавно.
Re[3]: Управление светодиодами на корпусе компьютера
Здравствуйте, power_led, Вы писали:
_>Вот несколько примеров, на подобную тематику: _>http://www.notebookforums.com/thread110937.html _>http://atticstory.narod.ru/LED/
_>Правда, как я понял, они только для ноутбуков Asus. Возможно это и не совсем так, но зато показан принцип того, что такое управление возможно.
ИМХО автор по второй ссылке немного фантазирует на счёт:
//Другие идентификаторы, которые на m50Sv не работают, но, возможно сработают на других ноутбуках#define Power_LED 0x44454C00 // идентификатор диода Power
Если посмотреть на оригинал кода (первая ссылка) то становится понятно, что к Power_LED это число никакого отношения не имеет (по идее, дожно быть 0x44454c50)
#define MLED 0x44454c4d
#define TLED 0x44454c54
#define WLED 0x44454c57
#define LED 0x44454c00/// ...int main(int argc, char *argv[]) {
int code = LED;int onoff;
if (argc != 3) {
fputs("usage: ",stderr);
fputs(argv[0],stderr);
fputs(" M|T|W 0|1\n",stderr);
exit(1);
}
/* Open the Asus device driver. If it's not there,
there's nothing we can do. */
ATKACPIhandle = CreateFile("\\\\.\\ATKACPI",
GENERIC_READ|GENERIC_WRITE,
FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING,
0, NULL);
if (ATKACPIhandle) {
code |= argv[1][0];
onoff = argv[2][0] & 1;
CtrlACPI(code, 1, onoff);
}
}
_>Примеры кстати я собирал на своем компе (материнка Asus), надеялся что получиться, но увы. Разбираюсь и ищу дальше.
Попробуй брутфорс Промимо IOCTL 0x222404, ATKACPI похоже понимает еще 0x222400 и 0x222408 — зачем они, не разбирался, за порчу оборудования не отвечаю
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth
Re[4]: Управление светодиодами на корпусе компьютера
GN>//Другие идентификаторы, которые на m50Sv не работают, но, возможно сработают на других ноутбуках
GN> #define Power_LED 0x44454C00 // идентификатор диода Power
GN>
GN>Если посмотреть на оригинал кода (первая ссылка) то становится понятно, что к Power_LED это число никакого отношения не имеет (по идее, дожно быть 0x44454c50) GN>[c] GN>#define MLED 0x44454c4d GN>#define TLED 0x44454c54 GN>#define WLED 0x44454c57
GN>#define LED 0x44454c00
GN>/// ...
Хотелось бы уточнить по поводу появления числа 0x44454C00 в коде по ссылке http://atticstory.narod.ru/LED/. За основу была взята англоязычная программа (как я узнал позднее, ее автор — Howard Chu), которая успешно работала с диодами (правда, только в 32-битных системах). И, в частности, ID 0x44454C00 почему-то включает power led то ли на ASUS M6N, то ли на каком-то ноуте ASUS из 3000й серии. К сожалению, привести ссылку я не могу — сайт автора почему-то не работает плюс я не могу найти тему, в которой было обсуждение (она была на форуме vip.asus.com).
С уважением,
SLenik.
Re[5]: Управление светодиодами на корпусе компьютера
Здравствуйте, SLenik, Вы писали:
SL>Хотелось бы уточнить по поводу появления числа 0x44454C00 в коде по ссылке http://atticstory.narod.ru/LED/. За основу была взята англоязычная программа (как я узнал позднее, ее автор — Howard Chu), которая успешно работала с диодами (правда, только в 32-битных системах).
Именно её исходники я и цитировал.
SL> И, в частности, ID 0x44454C00 почему-то включает power led то ли на ASUS M6N, то ли на каком-то ноуте ASUS из 3000й серии.
Всё может быть, но судя по фрагменту ниже, драйвер не ожидает такой контрольный код.
#define LED 0x44454c00
int main(int argc, char *argv[]) {
int code = LED;
if (ATKACPIhandle) {
code |= argv[1][0];
onoff = argv[2][0] & 1;
CtrlACPI(code, 1, onoff);
}
}
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth
Re[6]: Управление светодиодами на корпусе компьютера
Здравствуйте, gear nuke, Вы писали:
SL>> И, в частности, ID 0x44454C00 почему-то включает power led то ли на ASUS M6N, то ли на каком-то ноуте ASUS из 3000й серии.
GN>Всё может быть, но судя по фрагменту ниже, драйвер не ожидает такой контрольный код.
GN>
В теории — да. Но на практике все может быть совершенно по-другому. Взять хотя бы в пример мой ASUS M50Sv, который константой 'BLED' включает WiFi-диод и никакой константой не может включить диод батарейки