воскресенье, 18 августа 2013 г.

Выжать все! OverClocking notebook N56VM

Повторение данных действий может привести к печальным последствиям для вашего ноутбука и кошелька. Помните! Я за кирпич из ноута не ответственен.  Все что вы будете делать - это только ваше решение. Перед любыми изменениями BIOS я настоятельно рекомендую иметь под рукой программатор. Я намерено не буду подробно расписывать шаги, т. к. те кто понимают, что они делают, знают как это делать или могут нагуглить.

И так, что можно выжать из ноутбука Asus N56VM.
1. Это увеличить скорость памяти
2. Это увеличить скорость графики GT 630M
3. Это увеличить скорость шины и процессора

По п. 3 сразу скажу, что пока до него не удалось добраться, а вот пункты 1 и 2 я сейчас и распишу.

п. 1 Увеличиваем скорость памяти попутно открываем скрытые настройки BIOS.

Для этого нам понадобятся следующие утилиты:
1. Hex редактор HxD
2. Утилита AMIBCP_Aptio_4.53.0.50
3. Утилита MMTool-4.50 (AMI Aptio EFI)
4. Набор утилит intel_tools_8.1.10.1286, нам нужна будет Flash Programming Tool

И так:
С помощью Flash Programming Tool сливаем наш BIOS и открываем все нужные настройки в AMIBCP. 
После этого нам будут доступны все меню кроме меню Chipset. Для того чтоб открыть меню Chipset  Нам нужно будет намного покопаться, я так и не нашел в инете инструкцию как его открыть, по этому пришлось копать самому. Производитель решил очень глубоко спрятать это меню, по этому его невозможно открыть с помощью AMIBCP. После долгого гугления я как то наткнулся на утекшие сырцы UEFI Bios, что мне помогло после их изучения наткнуться на вот такой код в модуле Setup:
BOOLEAN FormsetVisible[] = {
    TRUE, //Main formset is always displayed
    SHOW_ADVANCED_FORMSET, //Advanced formset
    SHOW_CHIPSET_FORMSET, //Chipset formset
    TRUE, //Boot formset is always displayed
    SHOW_SECURITY_FORMSET, //Security formset
    TRUE //Exit formset is always displayed
};
  Получается что нам всего лишь нужно найти Hex последовательность байт 010100010101
и заменить на 010101010101, т. е. все включить.
С помощью MMTool был выгружен и распакован модуль Setup, а с помощью HxD заменен нужный байт, но вот беда в модуле должна быть прописана нужная контрольная сумма, она находится по адресу x11h, т. к. фактически мы изменили всего один бит, то нам нужно уменьшить число по адресу x11h на 1. У меня было xC9h, стало xC8h, после этого закинуть полученный новый Setup модуль в BIOS c помощью MMTool. После прошивки и выключения-включения(обязательно), у вас в настройках BIOS появится меню Chipset.
А в нем еще настройки памяти, я у себя установил тайминги вместо 11-11-11-28 на 9-9-9-24.

Внимание! Данное действие или изменение частоты может привести к тому, что ноут не загрузится! Восстановление только на программаторе! Я предупредил!
Некоторые неправильные настройки в BIOSe могут привести к не включению ноута, восстановить который можно только на программаторе.

п. 2 Увеличиваем скорость графики GT 630M. Редактируем VBIOS

Дополнительная утилита NiBiTor.v6.06
С помощью MMTool выгрузить драйвер GT 630M 10de - 0de9.
Адреса частот core и boost (спасибо за наводки на адреса Klem):
6f8b - boost
7009 - boost
7066 - boost
7089 - core
Частота высчитывается следующим образом: частота * 2 конвертируем в hex и меняем в файле(помним про последовательность байтов). Я заменил core на частоту 720MHg, boost на 900MHg. Оставил тротлинг, это все таки защищает чип от перегрева.
Далее с помощью утилиты NiBiTor.v6.06 меняем частоты памяти (у меня 1025) и шрейдера (1600), сохраняем. Утилита сама посчитает контрольную сумму. И возвращаем драйвер в BIOS.

Вот и все! У кого получился кирпич, я не виноват!
PS: Я намеренно не выкладываю файлы, чтоб уменьшить кол-во кирпичей. Вы можете их запросить у меня по почте (файлы а не кирпичи ;)

Если вы знаете как разблокировать частоты процессора, прошу мне подсказать, буду очень благодарен, это как я понял где то в регионе ME.

среда, 1 мая 2013 г.

Свои действия на мультимедийные кнопки в Asus

По просьбе Олега Петушкова написал программу управления мультимедийными кнопками.
Проект вырос с проекта Мигаем подсветкой клавиатуры.
Программа заменяет C:\Program Files (x86)\ASUS\ATK Package\ATK Media\DMedia.exe
Чтоб все корректно работало DMedia.exe убрана из автозагрузки
Теперь о программе.
Возможности:

  1. Мигает подсветкой клавиатуры при приходе сообщения или поступления звонка Skype (Внимание! Microsoft прекращает поддержку Skype Desktop API т. о. данная функциональность может пропасть при установке новых версий Skype)
  2. Включает подсветку по расписанию
  3. Динамически подсвечивает клавиатуру когда нажимаете кнопки
  4. "Цветомузыка" - мигаем в такт музыке.
  5. Запускает 6 приложений кнопками FN+: Media(Instant key), 1, T, C, V и Enter цифровой клавиатуры (Настраивается)
  6. Посылает short cuts в программы указанные в списке.
  7. Имеет на каждую multimedia кнопку курсора 2 действия.   

Программа перехватывает все события посланные в DMedia от HControl и передает дальше в зависимости от настроек.
Установка:
  1. Установить программу из инсталляции.
  2. Настроить под свою программу (по умолчанию в списке присутствует управление VLC плейром).
 Настройка:
Управляемые программы ищутся по заголовку окна который определяется в поле "Title" с помощью regex 
Поле "Name" - просто имя программы(не несет функциональности)
Поле "Active" - использовать данное правило. (если галочка не стоит то обрабатываться не будет)
Поле "Post/Send" - использует разные методы работы с программой Send(галочка присутствует)  - посылает в активное окно нажатия кнопок, по этому окно которым управляем становится активным, Post посылает сообщения в любое окно и не делает это активным (нестабильно, использовать на свой страх и риск, может приводить к падению программ)
Поле "IfForeGround" - команды будут обрабатываться только если вы работаете в этом окне, окна помеченные этой галочкой обрабатываются в первую очередь.
Поле "RetToFront" -  возвращает в активность окно с которым вы работали перед нажатием кнопок, используется совместно с "Send"
Действия кнопок курсора программируются с помощью Keys Enumeration вписываем Member name кнопки через +. Пример CTRL+Left: ControlKey+Left
Кнопки поддерживают двойное быстрое нажатие таким образом можно запрограммировать 8 действий.
Скачать инсталляцию
Если есть баги(а они есть ;), то пишите)
02.05.2013 12:53 - новая версия исправил проблему со Скайпом. По идее если скайп не установлен, то теперь не будет вылетать, а только отключать функциональность мигания.
03.05.2013 - Пофиксил ошибки, спасибо Олегу Петушкову за помощь в тестировании и вылавливании ошибок.
05.05.2013 - Версия 2.0.2: В метод Post добавлена работа с кнопками alt, ctrl, shift
для окна определенного с помощью ".*" в Title события идут в текущие окно, таким образом можно делать глобальные short cuts. Мелкие исправления.
05.05.2013 - Версия 2.0.3: Добавил возможность запуска приложений с параметрами
Пример: открытия любимого сайта explorer.exe http://google.com
05.05.2013 - Версия 2.0.4: Теперь программа ест намного меньше памяти
07.05.2013 - Версия 2.0.5: "*." обрабатывается после окон помеченных "IfForeGround"
Добавлена в установку настройка для медиа кнопок и youtube.
12.05.2013 - Версия 2.0.6: Исправлена работа со Skype, убраны настройки youtube.
26.05.2013 - Версия 2.0.7: Добавлена автоматическое включение подсветки клавиатуры по времени, Добавлена динамическое включение подсветки, нажали на кнопку подсветка загорелась и через заданный промежуток потухла.
01.06.2013 - Версия 2.0.8: Добавлена "Цветомузыка" мигаем в такт музыке ;) Полезности ни какой, за то прикольно. Мелкие исправления и улучшения.
18.06.2013 - Версия 2.0.9: Много исправлений, меню в трее.
19.06.2013 - Версия 2.1.0: Исправление ошибок,  переименование проекта.
20.06.2013 - Версия 2.1.1: Добавлена функция Spark, устранена утечка памяти из-за SkypeApi.
02.11.2013 - Версия 2.2.1: Добавленна возможность на enter цифровой клавиатуры назначить своё приложение.
11.09.2014 - Подтверждена работа на ноутках Nx6, G550 и др.

Известные проблемы: При приходе сообщения не мигает - Skype API генерирует события после первых 2-х...4-х сообщений.

Примеры для Title:
.*VLC - ищет окно с названием в конце VLC
.* - любое окно

Примеры для кнопок:
для Alt + Ctrl + Shift + 2  вписываем LMenu+ControlKey+ShiftKey+D2

Пример запуска VLC:
"C:\Program Files\VideoLAN\VLC\vlc.exe" d:\music
Откроет VLC и проиграет музыку которая в d:\music


Скриншоты:

Если в окно Title ввести ".*", поставить галку на "Post/Send" и ввести в качестве горячих Up - MediaStop, Down - MediaPlayPause, Left - MediaPreviousTrack, Right - MediaNextTrack, то можно управлять приложением, поддерживающим клавиши мультимедиа, например Winamp


воскресенье, 17 марта 2013 г.

Мигаем подсветкой клавиатуры

Дело было вечером, делать было нечего. Купил я как то ноут Asus N56VM, в нем есть подсветка клавиатуры и подумалось мне, что просто подсветка это не интересно.
Что можно сделать с подсветкой? - Правильно! Помигать!
Вот и взялся я посмотреть как включается подсветка. После некоторых поисков, локализовал управление подсветкой с помощью клавиатуры в "C:\Program Files (x86)\ASUS\ATK Package\ATK Hotkey\HControl.exe". После дебагинка в IDA были найдено следующие:
что подсветка включалась - выключалась с помощью вызова DeviceIoControl с определенными параметрами. В результате была написана функция включения и регулировки подсветки.
        public static int GetLevel()
        {
            return Level(0, 0x424B4C47);
        } 
        public static int SetLevel(int level)
        {
            return Level(level, 0x424B4C53);
        }
        public static int Level(int level, int code)
        {
            byte[] outBuffer = new byte[0x300];
            int[] inBuffer = new int[6] { 2, 0, 1, 8, 0x040000, 0x80 };
            inBuffer[1] = code;
            inBuffer[5] = level | 0x80;
            bool result = false;
            int bytesReturned = 0;
            SafeFileHandle _hdev = new SafeFileHandle(CreateFile("\\\\.\\ATKACPI", 0xC0000000, 3, IntPtr.Zero, 3, 0, IntPtr.Zero), true);
            if (_hdev.IsClosed | _hdev.IsInvalid)
            {
                WarningMessage("Error opening device");
                return -1;
            }
            unsafe
            {
                fixed (byte* p1 = &outBuffer[0])
                {
                    fixed (int* p = &inBuffer[0])
                    {
                        result = DeviceIoControl(_hdev, 0x00222404, (IntPtr)p, 0x18, (IntPtr)p1, 0x300, out bytesReturned, IntPtr.Zero);
                    }
                }
            }
            if (result == false)
            {
                int error_code = Marshal.GetLastWin32Error();
                WarningMessage("error code: " + error_code);
                return -1;
            }
            if (code == 0x424B4C47)
            {
                return outBuffer[0x10];
            }
            return level;
        }
 Консольную утилиту для регулировки и мигания подсветки для Asus Nx6 можно скачать тут

 Но просто мигать подсветкой не интересно, по этому после непродолжительного изучения SkypeAPI была написана программа  которая мигает подсветкой при приходе сообщения или поступления звонка. Программа висит в трее и позволяет регулировать подсветку и мигает при событии от skype. Инсталляция убрана в связи с не актуальностью.
Программа работает на серии ноутбуков Asus Nx6  при установленном Skype.

Если у вас есть идеи как еще можно использовать подсветку клавиатуры, то пишите в комментариях.

14.04.3013 Добавлена возможность запускать свои приложения при нажатии fn+ 1, V, C


GPS в Asus P525

Сейчас все смартфоны имеют встроенный GPS, a вот раньше, 6 лет назад, не в каждом он был.
Захотелось мне как то встроить в свой старый девайс GPS модуль.
И так имеем GPS GTPA010(FGPMMOPA6B) модуль купленный на ebay, имеет на борту UART и USB 
В Asus p525 используется IRDA модуль TFBS4711, который нужно удалить, т. к. нам нужен свободный UART.
Приступаем:
1. Сдуваем паяльным феном технический разъем он будет мешать, собрать потом телефон, на месте разъема будет GPS модуль. 

2. Сдуваем паяльным феном модуль IRDA , он нам уже не нужен, 
и подпаиваем 
тонкие проводки там где был модуль IRDA для соединения с GPS.


 
3. Подпаиваем следующие 2 - TXD(вход IRDA), 3 - RXD(выход IRDA), 4- сигнал включения 
и соединяем c GPS модулем 
IRDA - GPS 
3(RXD) - 9(TX) 
2(TXD) - 10(RX) 
4(SD) - 2 (ENABLE)


4. Рядом со светодиодом зарядки я припаял еще один светодиод (SMD очень мелкий) один вывод на землю (-) другой через 330 Ом на 
вывод 5 (3D-FIX) GPS модуля, он показывает состояние GPS.

5. Рядом с модулем расположил ионистор(старый я выпаял) соединив его проводом с выводом где раньше был старый ионистор и 4 (VBACKUP) выводом GPS модуля. Землю для ионистора и модуля взял тут же на плате. 
Плюс (+) для питания брал, показал красной стрелкой на фотографии.
 
Ну вот в принципе и все, с железом 
 
Но как оказалось этого мало чтоб GPS реально заработал т. к. драйвер порта работал с протоколом IRDA, а нам нужны чистые данные на выводах.
Вот тут засада и началась.  Нужен был драйвер которые не оборачивает данные в IRDA протокол. Пришлось патчить родные драйвера с помощью IDA и Assembler. Скачать драйвер можно на форуме ссылка 
приведена ниже. Так же для данного модуля написал загрузку EPO для WM, для быстрого поиска спутников.
Итог: GPS работает на com4, Навител работает отлично. 

PS: Можно подключить не только GPS модуль но и почти любое устройство с последовательным портом и управлять данными с девайса 

Форум