Кастомные драйвера что это
Кастомные драйвера что это
Здесь будут собираться драйвера для видео от INTEL грубо говоря кастомые, вносящие разные изменения в отличии от стоковых.
Для успешной установки лучше удалить текущие драйвера через Display Driver Unistaller во избежания синих экранов и проблем после установки.
Версия:EVALUATION RELEASE 5
Операционная система:Windows 7/8/10 32 бит.
P.S. бывает такое что вместо установщика, вылезает неизвестно что, для решения проблемы достаточно в папке lang/hdmi удалить папку RUS и все встанет на места.
Операционная система:Windows 7/8/10.
Операционная система:Windows 7/8.
Операционная система:Windows 7/8/10 64 бит.
P.S. бывает такое что вместо установщика, вылезает неизвестно что, для решения проблемы достаточно в папке lang/hdmi удалить папку RUS и все встанет на места.
Операционная система:Windows 7/8/10.
P.S. бывает такое что вместо установщика, вылезает неизвестно что, для решения проблемы достаточно в папке lang/hdmi удалить папку RUS и все встанет на места.
Возможности:
- Такие же что у и Omega
Операционная система:Windows 7/8/10 64 бит.
P.S. бывает такое что вместо установщика, вылезает неизвестно что, для решения проблемы достаточно в папке lang/hdmi удалить папку RUS и все встанет на места.
Операционная система:Windows 7/8/10 64 бит.
P.S. бывает такое что вместо установщика, вылезает неизвестно что, для решения проблемы достаточно в папке lang/hdmi удалить папку RUS и все встанет на места.
Поддержка OpenGL 3.0 за счет ЦПУ: ТУТ
На данный момент тут собраны актуальные кастомные драйвера. Раздел будет пополнятся со временем.
Если есть идеи по поводу наполнение шапки, пишите в QMS
Использование драйверов из Android приложения
Что необходимо
Стоит сказать что я использовал ОС Linux Ubuntu 11.10 и все примеры буду приводить для неё.
Первые 3 пункта очевидны, как добиться 4 и 5 легко найти в интернете. Последние два рассмотрим подробно.
Выбор тулчейна для кросс компиляции модулей ядра (драйверов)
В данной статье мы не рассматриваем возможность прошивки собственноручно собранного ядра на свой телефон поэтому мы должны придерживаться определённых правил.
Для того чтобы узнать каким компилятором собрано ядро на нашем устройстве выполняем команду:
c помощью любого эмулятора терминала или используя утилиту adb:
В результате получаем строку вроде этой:
Видим что у нас установлено ядро версии 3.0.69 локальная версия «-g26a847e» и собрано оно тулчейном Linaro GCC 4.7-2012.07. Зная версию находим необходимый тулчейн и распаковываем в любую папку. У меня путь выглядел так:
Сборка ядра
Как было сказано выше в моём случае это 3.0.69-g26a847e. Немного поковырявшись на гитхабе прошивки (PACman for HTC Desire S) я определил что это ядро AndromadusMod.
Копируем найденные иходники себе на локальную машину (я предварительно форкнул необходимый репозиторий себе в гитхаб и выполнил git clone, производители вроде Google и изготовители кастомных прошивок держат исходники ядра в репозиториях с открытым доступом, некоторые просто позволяют скачать исходники в виде архива). Для меня это выглядело так:
Теперь нужно найти конфигурацию с которой собрано ядро нашего устройства. В большинстве случаев конфигурация лежит на самом устройстве и получить её можно с помощью adb, распаковать и скопировать в папку с исходниками ядра:
Необходимо также немного изменить конфигурацию — установить локальную версию на идентичную той что мы узнали ранее и выключить автоматическое назначение локальной версии. Сделать это можно с помощью любого текстового редактора:
После переходим в папку с исходниками, настраиваем переменные окружения для сборки и собственно собираем ядро:
Теперь можно перейти к программированию.
Написание кода
Android приложение
Теперь создадим класс обёртку для нашей jni библиотеки:
Создадим папку jni в корне проекта Android приложения.
Далее сгенерируем Си хедер для нашей нативной библиотеки:
Драйвер ядра
Запуск
Для начала зальём собранный драйвер на устройство, и установим его в ядро, заодно сделаем ноду драйвера доступной для всех:
Если версия ядра модифицирована правильно и ядро совпадает с тем которое было на устройстве ошибок быть не должно.
После можно запускать Android приложение напрямую через eclipse или установить его. Нажимаем единственную кнопку и получаем результат:
Логи ядра можно получить командой:
Что такое драйвер и зачем он нужен
Это виртуальная инструкция к любому «железу» в компьютере
«Слетели драйвера», «У меня нет драйверов на принтер», «Видеокарте нужны драйвера» — если вам непонятно, что это значит и на что влияют драйверы, то эта статья для вас.
Что такое драйвер
Драйвер — это программа, которая работает как инструкция для операционной системы. Драйвер объясняет операционке, как пользоваться каким-то устройством.
Устройство — это то, что физически подключается к компьютеру:
Драйвер рассказывает компьютеру, как этим железом пользоваться, что оно умеет, какие команды понимает и как это железо могут использовать другие программы.
👉 Технически драйвер — это программа, которая висит в памяти компьютера всё время, пока компьютеру нужно это устройство.
Известное и неизвестное железо
Операционная система в компьютере знает и умеет многое, в том числе и работать со стандартным оборудованием. Стандартным — это значит тем, которое предоставляет стандартные возможности.
Например, клавиатура, мышь или веб-камера — это стандартное оборудование, потому что независимо от производителя они делают примерно одно и то же.
Разработчики операционной системы знают про такое оборудование, поэтому могут написать стандартные драйверы, которые подойдут к большинству устройств. Именно поэтому мы можем купить в магазине новую мышь и просто подключить её к компьютеру без установки дополнительных программ — операционная система сама разберётся, что делать.
Но бывает так, что разработчики добавили в устройство нестандартные возможности: переназначение сочетаний клавиш, сделали мышь с несколькими колёсиками или встроенный лазерный дальномер в видеокамеру. В этом случае компьютер не разберётся, как этим всем пользоваться, потому что в стандартных драйверах про это ничего нет.
В таких случаях разработчики устройств пишут свой драйвер, который объяснит компьютеру, как пользоваться всеми возможностями устройства. Этот драйвер нужно будет установить.
Сложное оборудование
Ещё бывает так, что оборудование хоть и стандартное, но сложное, например, видеокарта или принтер. Каждый производитель добавляет свои функции и технологии, которые считает нужными, и чаще всего они не совпадают с другими. Если подключить такое устройство к компьютеру, то компьютер, скорее всего, разберётся, что именно в него воткнули, то как с этим работать — неизвестно.
Здесь тоже нужны драйверы — они идут или в комплекте с устройством на компакт-диске или их качают с официального сайта производителя. Чем сложнее устройство, тем больше вероятность, что без установки дополнительных драйверов оно работать не будет.
Например, если у вас навороченная видеокарта, вы вставляете её в компьютер и сначала видите странную огромную картинку с низким разрешением. Это значит, что компьютер пока не нашёл драйверов на эту карточку и запустил её в «режиме совместимости» — то есть в том режиме, в котором он точно сможет ей управлять. Но возможности видеокарты будут сильно порезаны, пока мы не установим нужные нам драйверы.
Что значит «слетели драйвера»?
Это значит, что компьютер не может найти файлы с инструкциями от какого-то устройства. Так бывает при обновлениях системы, заражении вирусом или просто кто-то случайно мог удалить нужные файлы или папку целиком.
Решение простое: берёте заново драйвер с официального сайта или тот, который шёл в комплекте с устройством, и запускаете программу-установщик заново. А она уже сама разберётся, каких файлов не хватает, и настроит всё заново.
Драйверы нужны только на Windows?
Драйверы нужны на всех компьютерах и для всех операционных систем. Но некоторые операционки идут с кучей драйверов в комплекте, а у других этот набор более скромный.
Общее правило для 2021 года такое: большая часть оборудования, которое нужно для обычной офисной работы, подключится к любому компьютеру без необходимости что-то устанавливать. Операционка сама поймёт, что это за устройство, и, скорее всего, у неё уже будут драйверы.
А вот какое-то более сложное оборудование (например, профессиональная аудиокарта или видеокамера) потребуют установки драйверов от производителя.
В чём проблема с драйверами
Проблема в том, что часто производители не делают новые драйверы для старого оборудования. Например:
Есть диджейский контроллер Numark NS7 — это профессиональное оборудование для диджеев и артистов, оно стоит дорого и нужно примерно 100 тысячам человек на всей планете.
Когда контроллер только вышел, компания Numark выпускала драйвера на все свежие операционные системы, проблем с совместимостью не было.
Потом аппарат сняли с производства, поддержку прекратили. Последняя версия драйверов, которую выпустил Numark, — для Windows 10 и MacOS 10.12 (Sierra). С тех пор у Windows вышло большое обновление до 11, а MacOS обновился раз пять. Причём последние две версии сделаны для процессоров Apple, и уже нет надежды, что Numark обновит драйверы для этой архитектуры.
Так что, если вам достался этот редкий профессиональный прибор, вы вынуждены сидеть на древней MacOS Sierra, которая стремительно перестаёт поддерживаться современным софтом.
Что с этим делать? А ничего ты с этим не сделаешь. Такова жизнь.
Работа масштабирования в драйвере NVidia 496.84 (хот фикс)
Первым «жирным голубем», повышающим производительность в играх за счет некоторого ухудшения графики, была технология DLSS. Она помогала первым картам серии RTX «переваривать» «священные лучи Хуанга», которые очень значительно снижали производительность даже топовых карт семейства Тьюринг. И работала она исключительно на картах серии RTX.
реклама
Но, спустя некоторое время, компания AMD выпускает свой ответ: технологию FSR, которая не требовала для работы наличия тензорных ядер и работала на всех видеокартах.
И вот теперь «родной дядя Хуанг» обрадовал нас новостью: все обладатели более-менее современных видеокарт от NVidia, имеют возможность получить аналог FSR во всех играх.
Достаточно только скачать драйвер 496.76.Основы были заложены уже давно, когда в драйвере появилась функция масштабирования изображения и повышения резкости с настройкой зернистости (тот самый шарп).
реклама
Ну и, так как, GTX 1070 уже давно звезд с небес не хватает, то стоит проверить, что данная функция даст с точки зрения производительности.
Процессор i7-8700t (рабочие частоты 3800-3900 МГц)
Оперативная память: 16 Гб, таковая частота 2666 МГц (14-16-16-32 cr1)
реклама
Материнская плата: AsRock B360 Fatality Gaming K4
Видеокарта: EVGA GTX 1070 FTW
Операционная система: Windows 10 LTSC
реклама
Тестирование на драйвере 496.76 было приостановлено по двум причинам: просто безобразная работа с изображением и выход хот фикса 496.84, который как раз и должен был решит некоторые проблемы.
Мысли по началу были просто грандиозными: куча игр, где можно проверить работу масштабирования. Но. реальность оказалась гораздо суровее.
Для начала некоторое введение в работу данной технологии применительно к разрешению 1080р.
После установки драйвера нам надо на главной странице панели управления NVidia выбрать функцию масштабирования изображения. По умолчанию резкость стоит на уровне 50%,но для каждой игры его можно выставить индивидуально.
Также стоит поставить галочку на функции «индикатор в оверлее». Это очень полезная функция, как выяснилось далее.
При активации масштабирования, в разрешении 1080р нам становятся доступны новые разрешения, которые появятся в меню игр: 1632х918, 1477х831, 1280х720, 1129х635.
По идее, это аналогично уровням качества в настройке FSR от AMD.
Теперь об индикаторе масштабирования. При работе только резкости изображения, в левом верхнем углу экрана появляется синяя надпись NIS, при задействовании технологии масштабирования надпись становится зеленой. Мелочь, но она показывает, работает функция или нет.
Для начала я попробовал работу данной технологии в игре Horizon Zero Dawn. Но она отказывалась работать. Работает только резкость. При изменении разрешения на 1632х918 просто уменьшается разрешение, но масштабирование не работает.
Далее идем в Shadow of the Tomb Raider. Тут масштабирование сработало. Но вот результат меня вообще не удовлетворил.
Настройки игры максимальные, сглаживание ТАА.
Все выглядит логично: снижение разрешения делает картинку более расплывчатой, но повышает фпс.
Теперь включаем масштабируемость в драйвере. Резкость стоит по умолчанию на 50%. В игре выставляем разрешение 1632х918. NIS горит зеленым, значит масштабируемость работает (но на скриншотах не отображается):
К сожалению, скриншоты до конца не передают качество картинок. Ухудшение изображения заметно, но фпс вырос. Посчитаем процент прироста: 10%, не густо.
Для более подробного сравнения скриншотов отправляемся сюда: SOTTR.
Следующей игрой будет Immortals Fenyx Rising.
Настройки игры кастомные: высокие, кроме текстур (очень высокие), отключено размытие.
Применение масштабирования (1632х918, 50% резкости):
Совсем не впечатляет, а прирост жалкие 5%.
1920х1080, настройки максимальные Fidelity CAS отключена:
Настройки графики те же, разрешение 1600х900:
18% прироста производительности. И опять мое мнение, которое в полной мере не подтверждается скриншотами: в этой игре работа масштабирования (из протестированных игр) самая лучшая.
Сначала нативное разрешение 1920х1080, настройки графики максимальные:
Теперь с FSR с пресетом Ultra Quality (1477х831):
Пресет Quality (1280х720):
Отключаем технологию FSR и задействуем модификатор разрешения:
Да, разрешения разные, но особой разницы в изображении я не вижу. Уж точно не в пользу технологии НВидиа. А прирост ничтожный.
Что по итогу? Вывод мой сугубо субъективный.
Технология от NVidia крайне сырая. Я точно также могу в старом драйвере снизить разрешение до 1600х900 и выкрутить желаемый уровень резкости, настроив попутно уровень зернистости.
Пока мой личный «рейтинг» технологий повышения производительности такой:
DLSS (сужу чисто по видео и скриншотам), немного от нее отстает более простая, но «народная» FSR и в конце списка, припадая на обе ноги, плетется новинка от NVidia.
Драйвер — это просто
Многие считают что самому создать драйвер для Windows это что-то на грани фантастики. Но на самом деле это не так. Конечно, разработка драйвера для какого-то навороченного девайса бывает не простой задачей. Но ведь тоже самое можно сказать про создание сложных программ или игр. В разработке простого драйвера нет ничего сложного и я попытаюсь на примерах это показать.
Сперва нам нужно определится в чем мы же будем создавать наш первый драйвер. Поскольку материал ориентирован на новичков, то язык программирования был выбран один из простых, и это не Си или ассемблер, а бейсик. Будем использовать один из диалектов бейсика — PureBasic. Из коробки он не обучен создавать драйверы, но у него удачный набор файлов, используемых для компиляции и небольшое шаманство позволяет добавить эту возможность. Процесс компиляции состоит из нескольких этапов. Если кратко, то он происходит следующим образом: Сначала транслятор «перегоняет» basic-код в ассемблер, который отдается FASM’у (компилятор ассемблера), который создает объектный файл. Далее в дело вступает линкер polink, создающий исполняемый файл. Как компилятор ассемблера, так и линкер могут создавать драйверы и если немного изменить опции компиляции, то получим не исполняемый файл, типа EXE или DLL, а драйвер режима ядра (SYS).
Скачать немного модифицированную бесплатную демо версию PureBasic 4.61 x86 можно на файлопомойке, зеркало.
Если нужно создать драйвер для x64 системы, качайте эту версию, зеркало.
Дистрибутивы имеют небольшие размеры, около 3 МБ каждый. С помощью этой версии можно создавать только драйвера.
Скачиваем, распаковываем и запускаем, кликнув по файлу «PureBasic Portable». При этом запустится IDE и вылезет окошко с сообщением что это демо-версия и списком ограничений. Из него наиболее существенным является ограничение числа строк кода, равное 800, а для создания простых драйверов этого может хватить. Остальные ограничения в нашем случае, не существенны.
Окно IDE с загруженным кодом драйвера показано на скрине.
Компиляция драйвера выполняется через меню «Компилятор» (это если кто не понял).
Теперь определимся что будет делать наш первый драйвер. Обычно при изучении программирования начинают с простых вещей, скажем, выполнения математических операций и вывода результата. Вот пусть наш драйвер делает тоже самое, ведь банальная математика производимая в режиме ядра это очень круто!
Может показаться что это куча бессмысленного кода, но это не так.
У каждого драйвера должна быть точка входа, обычно у нее имя DriverEntry() и выполнена она в виде процедуры или функции. Как видите, в этом драйвере есть такая процедура. Если посмотрите на начало кода, то в первых строках увидите как ей передается управление. В этой процедуре происходит инициализация драйвера. Там же назначается процедура завершения работы драйвера, которая в нашем случае имеет имя UnloadDriver(). Процедуры CreateDispatch() и CloseDispatch() назначаются обработчиками соединения и отсоединения проги из юзермода.
Процедура DeviceIoControl() будет обрабатывать запросы WinAPI функции DeviceIoControl(), являющейся в данном драйвере связью с юзермодом. В конце кода расположена так называемая ДатаСекция (DataSection), в которой находятся имена драйвера, сохраненные в формате юникода (для этого использована одна из фишек ассемблера FASM).
Теперь рассмотрим как драйвер будет взаимодействовать с внешним миром. Это происходит в процедуре DeviceIoControl(). В ней отслеживается одно сообщение, а именно — #IOCTL_MyPlus, которое отправляет юзермодная прога, когда ей нужно сложить два числа в режиме ядра (круто звучит, правда?). Когда такое сообщение получено, то считываем из системного буфера, адрес указателя на структуру со слагаемыми, производим сложение и результат помещаем в системный буфер. Собственно это основная задача нашего первого драйвера.
Видите сколько понадобилось кода для выполнения простейшей математической операции — сложения двух чисел?
А теперь рассмотрим программу, работающую с этим драйвером. Она написана на том же PureBasic.
При старте программы вызывается функция OpenDriver(), которая загружает драйвер. Для упрощения, имя драйвера, имя службы и описание службы заданы одинаковыми — «pbDrPlus». Если загрузка неудачная, то выводится соответствующее сообщение и программа завершает свою работу.
Процедура Plus() осуществляет связь с драйвером. Ей передаются хэндл, доступа к драйверу и слагаемые числа, которые помещаются в структуру и указатель на указатель которой, передается драйверу. Результат сложения чисел будет в переменной «Result».
Далее следует код простейшего GUI калькулятора, скопированного из википедии.
Когда закроют окно, то перед завершением работы программы, закрывается связь с драйвером и производится его деинсталляция из системы.
Результат сложения чисел 8 и 2 на скриншоте.
Исходные коды драйвера и программы, можно найти в папке «Examples», PureBasic на файлопомойке, ссылку на который давал в начале статьи. Там так же найдете примеры драйвера прямого доступа к порам компа и пример работы с памятью ядра.
PS.
Помните, работа в ядре чревата мелкими неожиданностями аля, BSOD (синий экран смерти), поэтому экспериментируйте осторожно и обязательно всё сохраняйте перед запуском драйвера.
За возможную потерю данных, я ответственности не несу!