Управление светодиодами на корпусе компьютера
От: power_led  
Дата: 21.03.10 13:12
Оценка:
Доброго времени суток.
Передо мной стоит задача управлять(вкл/выкл) светодиодом питания на корпусе компьютера с помощью программы под WinXP. В интернете в принципе есть похожие вещи, но только для светодиодов на клавиатуре. Был бы очень признателен за любую помощь по этому вопросу.
Re: Управление светодиодами на корпусе компьютера
От: ДимДимыч Украина http://klug.org.ua
Дата: 21.03.10 14:43
Оценка: +2 :)
Здравствуйте, power_led, Вы писали:

_>Передо мной стоит задача управлять(вкл/выкл) светодиодом питания на корпусе компьютера с помощью программы под WinXP.


Выясняли ли Вы, прежде чем браться за эту задачу, что решение возможно в принципе?
Обязательно бахнем! И не раз. Весь мир в труху! Но потом. (ДМБ)
Re: Управление светодиодами на корпусе компьютера
От: Centaur Россия  
Дата: 21.03.10 16:36
Оценка: 3 (1) +4 :))) :))) :))) :)
Здравствуйте, power_led, Вы писали:

_>Передо мной стоит задача управлять(вкл/выкл) светодиодом питания на корпусе компьютера с помощью программы под WinXP. В интернете в принципе есть похожие вещи, но только для светодиодов на клавиатуре. Был бы очень признателен за любую помощь по этому вопросу.

_>

ExitWindowsEx(EWX_POWEROFF, …) — светодиод гаснет.
SetSuspendState(FALSE, FALSE, FALSE) — светодиод начинает мигать.

Ну или перецепить светодиод с материнки на какой-нибудь другой девайс. На сетевуху, например, или на звук.
Re[2]: Управление светодиодами на корпусе компьютера
От: power_led  
Дата: 22.03.10 17:37
Оценка: 8 (1)
Здравствуйте, ДимДимыч, Вы писали:

ДД>Здравствуйте, power_led, Вы писали:


_>>Передо мной стоит задача управлять(вкл/выкл) светодиодом питания на корпусе компьютера с помощью программы под WinXP.


ДД>Выясняли ли Вы, прежде чем браться за эту задачу, что решение возможно в принципе?


Вот несколько примеров, на подобную тематику:
http://www.notebookforums.com/thread110937.html
http://atticstory.narod.ru/LED/

Правда, как я понял, они только для ноутбуков Asus. Возможно это и не совсем так, но зато показан принцип того, что такое управление возможно.
Примеры кстати я собирал на своем компе (материнка Asus), надеялся что получиться, но увы. Разбираюсь и ищу дальше.
Re[2]: Управление светодиодами на корпусе компьютера
От: power_led  
Дата: 22.03.10 17:46
Оценка:
Здравствуйте, Centaur, Вы писали:

C>Здравствуйте, power_led, Вы писали:


_>>Передо мной стоит задача управлять(вкл/выкл) светодиодом питания на корпусе компьютера с помощью программы под WinXP. В интернете в принципе есть похожие вещи, но только для светодиодов на клавиатуре. Был бы очень признателен за любую помощь по этому вопросу.

_>>

C>ExitWindowsEx(EWX_POWEROFF, …) — светодиод гаснет.

C>SetSuspendState(FALSE, FALSE, FALSE) — светодиод начинает мигать.

C>Ну или перецепить светодиод с материнки на какой-нибудь другой девайс. На сетевуху, например, или на звук.


Управление — это процесс длящийся во времени, в случае же использования предложенных функций слишком быстро управляющая программа теряет контроль

Про другие девайсы можно забыть, что-то перецеплять, вставлять, удалять категорически запрещено.
Re[3]: Управление светодиодами на корпусе компьютера
От: ДимДимыч Украина http://klug.org.ua
Дата: 23.03.10 13:55
Оценка:
Здравствуйте, power_led, Вы писали:

_>Возможно это и не совсем так, но зато показан принцип того, что такое управление возможно.


Возможно, во-первых, если заложена такая аппаратная возможность. В худшем случае светодиод может питаться прямо с линии +5В, и управлять им без аппаратной доработки невозможно в принципе. В более-менее современных системах светодиод управляется какой-то частью чипсета, потому как нужно уметь мигать им в различных режимах энергосбережения. Если работа светодиода аппаратно связана с режимом энергосбережения (а я бы делал именно так, потому что так наиболее надежно и независимо от ОС и ПО), то изменить состояние светодиода можно только изменив сам режим работы системы (как ниже предложил Centaur). Если же разработчики чипсета предусмотрели независимое управление светодиодом со стороны драйвера (как в вышеприведенных примерах), то да, управление для данного конкретного чипсета возможно и без аппаратных доработок.
Еще гипотетически существует такая возможность, что чипсет поддерживает загрузку внешней фирмвари — в таком случае так же теоретически можно залить собственную прошивку под конкретный чипсет. Но работающие примеры такого сценария лично мне не встречались.

_>Примеры кстати я собирал на своем компе (материнка Asus), надеялся что получиться, но увы. Разбираюсь и ищу дальше.


Отталкиваться нужно от конкретной модели чипсета. Для каких-то может и получится.
Обязательно бахнем! И не раз. Весь мир в труху! Но потом. (ДМБ)
Re[4]: Управление светодиодами на корпусе
От: power_led  
Дата: 23.03.10 21:32
Оценка:
Здравствуйте, ДимДимыч, Вы писали:

ДД>Здравствуйте, power_led, Вы писали:


_>>Возможно это и не совсем так, но зато показан принцип того, что такое управление возможно.


ДД>Возможно, во-первых, если заложена такая аппаратная возможность. В худшем случае светодиод может питаться прямо с линии +5В, и управлять им без аппаратной доработки невозможно в принципе. В более-менее современных системах светодиод управляется какой-то частью чипсета, потому как нужно уметь мигать им в различных режимах энергосбережения. Если работа светодиода аппаратно связана с режимом энергосбережения (а я бы делал именно так, потому что так наиболее надежно и независимо от ОС и ПО), то изменить состояние светодиода можно только изменив сам режим работы системы (как ниже предложил Centaur). Если же разработчики чипсета предусмотрели независимое управление светодиодом со стороны драйвера (как в вышеприведенных примерах), то да, управление для данного конкретного чипсета возможно и без аппаратных доработок.

ДД>Еще гипотетически существует такая возможность, что чипсет поддерживает загрузку внешней фирмвари — в таком случае так же теоретически можно залить собственную прошивку под конкретный чипсет. Но работающие примеры такого сценария лично мне не встречались.

_>>Примеры кстати я собирал на своем компе (материнка Asus), надеялся что получиться, но увы. Разбираюсь и ищу дальше.


ДД>Отталкиваться нужно от конкретной модели чипсета. Для каких-то может и получится.


Думаю уже можно переформулировать изначальный вопрос и начать искать более конкретную информацию по ATK ACPI драйверу для конкретного чипсета (в моем случае AMD 785G). У кого есть информация по этому драйверу, буду благодарен за её предоставление, ну и общие сведения про этот тип драйверов для начала не помешают.

А вообще, в век когда из ОС можно поменять напряжение на процессоре, остановить вентиляторы и прошить биос, хочется верить, что уж светодиодами возможно с легкостью управлять и подавно.
Re[3]: Управление светодиодами на корпусе компьютера
От: gear nuke  
Дата: 25.03.10 01:46
Оценка: 3 (1)
Здравствуйте, 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]: Управление светодиодами на корпусе компьютера
От: SLenik Россия http://slenik.net
Дата: 24.04.10 00:28
Оценка:
Здравствуйте, gear nuke, Вы писали:

GN>Здравствуйте, power_led, Вы писали:


_>>Вот несколько примеров, на подобную тематику:

_>>http://www.notebookforums.com/thread110937.html
_>>http://atticstory.narod.ru/LED/

GN>ИМХО автор по второй ссылке немного фантазирует на счёт:

GN>
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]: Управление светодиодами на корпусе компьютера
От: gear nuke  
Дата: 25.04.10 14:07
Оценка:
Здравствуйте, 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]: Управление светодиодами на корпусе компьютера
От: SLenik Россия http://slenik.net
Дата: 26.04.10 16:22
Оценка:
Здравствуйте, gear nuke, Вы писали:

SL>> И, в частности, ID 0x44454C00 почему-то включает power led то ли на ASUS M6N, то ли на каком-то ноуте ASUS из 3000й серии.


GN>Всё может быть, но судя по фрагменту ниже, драйвер не ожидает такой контрольный код.


GN>
GN>#define LED    0x44454c00

GN>int main(int argc, char *argv[]) {
GN>    int code = LED;

GN>    if (ATKACPIhandle) {
GN>        code |= argv[1][0];
GN>        onoff = argv[2][0] & 1;

GN>        CtrlACPI(code, 1, onoff);
GN>    }
GN>}
GN>


В теории — да. Но на практике все может быть совершенно по-другому. Взять хотя бы в пример мой ASUS M50Sv, который константой 'BLED' включает WiFi-диод и никакой константой не может включить диод батарейки
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.