Обратите внимание, что в моделях 2020 года вывод видео через интерфейс Type-C не поддерживается
BIOS одностраничный (UEFI со старым интерфейсом, английский язык есть, поддержка виртуализации тоже присутствует).
На ноутбук предустановлен PC Manager, в котором собраны все сведения о железе, с его помощью можно напрямую качать обновления драйверов и BIOS. Несмотря на китайскую родину ноутбука, это приложение примеряет язык системы и отлично работает на русском, хотя некоторые разделы остаются не переведёнными.
Версия на Intel без крышки (более длинные трубки и больше конденсаторов для питания MX150):
Dramcryx, Каковы личные впечатления?
Яркость экрана при разном освещении, маркость, греется ли?
Что нравится, а что не очень?
Что понравилось: 1) внешний вид. Выглядит совсем не дёшево, понятное дело, что на МакБук очень похож, но и материалы не худшие (корпус, конечно, штампованный, а не фрезированный). 2) звук. На максимальной громкости динамики начинают проглатывать некоторые частоты, но это скорее вина драйвера, который старается сделать их ещё громче, на 80% громкости звук прекрасный и все ещё очень громкий. 3) дисплей. Он не претендует на звание даже хорошей IPS матрицы с такими-то показателями цветопередачи, но он неплох и приятен, получше некоторых флагманов смартфонов прошлых лет с IPS. 4) клавиатура. Очень и очень похожа по ощущениям на макбуковскую до бабочки. Писать на ней очень приятно. 5) автономность. Естественно, заявленные 12-13 часов достигаются только при удобных производителю условиях. Средняя нагрузка (каким бы обширным это понятие не было), съест АКБ за 6-7 часов. Мне с головой хватает, но это уже зависит от вас.
Что не понравилось: 1) софтина управления дровами на первый взгляд приятная, но иногда она грузит процессор каким-то сервисом передачи сообщений (на сервера КНР, разумеется) 2) хоть это и не зависит от Huawei, но ситуация с драйверами для AMD весьма запутанная и неприятная, драйвера надо искать не на сайте AMD, а в каталоге обновлений Microsoft. Не комильфо.
Опять же, я на российском рынке просто лучше бы не нашел, поэтому считайте, что мне не к чему придираться.
Как отпечаток пальцев показывает себя? Случаются ли промохи? Если да, то какой процент?
Требуется ли перестановка винды для смены языка на английский?
Блин, крутой бук. Думаю прикупить версию с AMD. Жалко денег на лишнюю видеокарту. Нашел только на geekbuying. На али его просто нет, gb не отправляет в РФ. Dramcryx, что скажешь по этому поводу? Сам где его брал? А не делал замеры скорости диска? Что там вообще стоит?
Как думаете Linux встанет?
GRomR1, стоит SanDisk X600, как я и говорил, SATA, замеры не делал (теоретически должно быть 550/500 на последовательное чтение/запись). Я покупал через посредника china-towns. Я их не могу порекомендовать из-за невысокой надёжности их рабочих методов, но со мной все отлично прошло. Завтра, скорее всего, подберу варианты покупки его и сделаю пост. Подписывайтесь на тему, давайте развивать конкуренцию Xiaomi. 😉
В данной статье описан процесс написания простейшего драйвера, который выводит скан-коды нажатых клавиш. Также в данной статье описан процесс настройки рабочего места для написания драйверов. Если Вам интересно, прошу под кат.
Подготовка стенда
Установка необходимого ПО для написания простейшего драйвера
Настройка рабочего места
Установка DDK
Установка предельно проста. Единственное на что необходимо обратить внимание — это диалог, в котором Вам предлагается выбрать компоненты, которые будут установлены. Настоятельно рекомендую отметить всю документацию и примеры.
Установка и настройка Microsoft® Visual Studio 2005
Установка и настройка DDKWizard
Установка необходимого ПО для запуска драйверов
Постановка задачи
Задача: написать драйвер, который будет выводить в дебаг скан-коды нажатых клавиш и их комбинаций.
Немного теории
IRP — это структура, которая используется драйверами для обмена данными.
Отличия между верхними и нижними фильтрующими драйверами
Через верхние фильтрующие драйверы проходят все запросы, а это значит, что они могут изменять и/или фильтровать информацию, идущую к функциональному драйверу, ну и далее, возможно, к устройству. Пример использования верхних фильтрующих драйверов: Фильтр-хук драйвер, который устанавливает свою хук-функцию для системного драйвера IpFilterDirver, для отслеживания и фильтрации траффика. Такие драйверы используются в брандмауэрах.
Через нижние фильтрующие драйверы проходит меньше запросов потому что большинство запросов выполняет и завершает функциональный драйвер.
Проблемы синхронизации
В драйвере, который мы будем писать, есть несколько «проблемных» секций. Для нашего драйвера вполне достаточно использования ассемблерных вставок:
Префикс lock позволяет безопасно выполнить идущую за ним команду. Она блокирует остальные процессоры, пока выполняется команда.
Экшен
Для начала необходимо включить заголовочные файлы «ntddk.h», «ntddkbd.h»
Также необходимо описать структуру DEVICE_EXTENSION
Объект pLowerDO это объект устройства, который находится ниже нас в стеке. Он нужен нам для того чтобы знать кому дальше отправлять IRP-пакеты. Еще для работы нашего драйвера нам нужна переменная, в которой будет храниться количество не завершенных запросов.
Начнем с функции, которая является главной точкой входа нашего драйвера.
theDriverObject – объект драйвера, содержит указатели на все необходимые операционной системе функции, которые мы должны будем инициализировать. ustrRegistryPath – имя раздела в реестре, где хранится информация о данном драйвере. Для начала необходимо объявить и обнулить переменные:
Далее, как я и писал выше, нужно инициализировать указатели на функции
Функция DispatchRead будет обрабатывать запросы на чтение. Она будет вызываться, когда нажата или отпущена клавиша клавиатуры. Функция DriverUnload вызывается, когда драйвер уже не нужен и его можно выгрузить из памяти, или когда пользователь сам выгружает драйвер. В данной функции должна производиться «зачистка», т.е. освобождаться ресурсы, которые использовались драйвером, завершаться все незавершенные запросы и т.д. Функция DispatchThru это функция-заглушка. Все что она делает это передача IRP-пакета следующему драйверу (драйверу который находится под нашим в стеке, т.е. pLowerDO из DEVICE_EXTENSION ). Далее мы вызываем нашу функцию, для создания и установки нашего устройства в стек устройств:
Эта функция создает объект устройства, настраивает его и включает в стек устройств поверх \\Device\\KeyboardClass0
pKeyboardDevice – это объект устройсва, которое мы должны создать. Вызываем IoCreateDevice для создания нового устройства
Флаги, которые мы устанавливаем для нашего устройства, должны быть эквивалентными флагам устройства, поверх которого мы включаемся в стек. Далее мы должны выполнить преобразования имени устройства, которое мы включаем в стек.
Функция IoAttachDevice внедряет наше устройство в стек. В pdx->pLowerDO будет храниться объект следующего (нижнего) устройства.
Далее разберем функцию DispatchRead с прототипом:
Данная функция будет вызываться операционной системой при нажатии или отпускании клавиши клавиатуры Увеличиваем счетчик незавершенных запросов
Перед тем как передать запрос следующему драйверу мы должны настроить указатель стека для драйвера. IoCopyCurrentIrpStackLocationToNext копирует участок памяти, который принадлежит текущему драйверу, в область памяти следующего драйвера. Когда запрос идет вниз по стеку в нем еще нет нужных нам данных, поэтому мы должны задать функцию, которая вызовется, когда запрос будет идти вверх по стеку с нужными нам данными.
где ReadCompletionRoutine наша функция. Передаем IRP следующему драйверу:
Структура PKEYBOARD_INPUT_DATA используется для описания нажатой клавиши.
Проверяем, удачно завершен запрос или нет
Узнаем количество клавиш
И выводим каждую клавишу:
И не забываем уменьшать количество не обработанных запросов
Возвращаем статус запроса
Разберем функцию завершения работы. Прототип:
Извлекаем устройство из стека:
Проверяем есть незавершенные запросы или нет. Если мы выгрузим драйвер без этой проверки, при первом нажатии на клавишу после выгрузки будет БСоД.
Как запустить драйвер и просмотреть отладочную информацию
Для запуска драйвера я использовал утилиту KmdManager. Для просмотра отладочной информации использовалась утилита DbgView.
P. S. Статью писал давно, ещё на третьем курсе, сейчас уже почти ничего не помню. Но если есть вопросы, постараюсь ответить. P. P. S. Прошу обратить внимание на комментарии, в частности на этот
Это виртуальная инструкция к любому «железу» в компьютере
«Слетели драйвера», «У меня нет драйверов на принтер», «Видеокарте нужны драйвера» — если вам непонятно, что это значит и на что влияют драйверы, то эта статья для вас.
Что такое драйвер
Драйвер — это программа, которая работает как инструкция для операционной системы. Драйвер объясняет операционке, как пользоваться каким-то устройством.
Устройство — это то, что физически подключается к компьютеру:
Драйвер рассказывает компьютеру, как этим железом пользоваться, что оно умеет, какие команды понимает и как это железо могут использовать другие программы.
👉 Технически драйвер — это программа, которая висит в памяти компьютера всё время, пока компьютеру нужно это устройство.
Известное и неизвестное железо
Операционная система в компьютере знает и умеет многое, в том числе и работать со стандартным оборудованием. Стандартным — это значит тем, которое предоставляет стандартные возможности.
Например, клавиатура, мышь или веб-камера — это стандартное оборудование, потому что независимо от производителя они делают примерно одно и то же.
Разработчики операционной системы знают про такое оборудование, поэтому могут написать стандартные драйверы, которые подойдут к большинству устройств. Именно поэтому мы можем купить в магазине новую мышь и просто подключить её к компьютеру без установки дополнительных программ — операционная система сама разберётся, что делать.
Но бывает так, что разработчики добавили в устройство нестандартные возможности: переназначение сочетаний клавиш, сделали мышь с несколькими колёсиками или встроенный лазерный дальномер в видеокамеру. В этом случае компьютер не разберётся, как этим всем пользоваться, потому что в стандартных драйверах про это ничего нет.
В таких случаях разработчики устройств пишут свой драйвер, который объяснит компьютеру, как пользоваться всеми возможностями устройства. Этот драйвер нужно будет установить.
Сложное оборудование
Ещё бывает так, что оборудование хоть и стандартное, но сложное, например, видеокарта или принтер. Каждый производитель добавляет свои функции и технологии, которые считает нужными, и чаще всего они не совпадают с другими. Если подключить такое устройство к компьютеру, то компьютер, скорее всего, разберётся, что именно в него воткнули, то как с этим работать — неизвестно.
Здесь тоже нужны драйверы — они идут или в комплекте с устройством на компакт-диске или их качают с официального сайта производителя. Чем сложнее устройство, тем больше вероятность, что без установки дополнительных драйверов оно работать не будет.
Например, если у вас навороченная видеокарта, вы вставляете её в компьютер и сначала видите странную огромную картинку с низким разрешением. Это значит, что компьютер пока не нашёл драйверов на эту карточку и запустил её в «режиме совместимости» — то есть в том режиме, в котором он точно сможет ей управлять. Но возможности видеокарты будут сильно порезаны, пока мы не установим нужные нам драйверы.
Что значит «слетели драйвера»?
Это значит, что компьютер не может найти файлы с инструкциями от какого-то устройства. Так бывает при обновлениях системы, заражении вирусом или просто кто-то случайно мог удалить нужные файлы или папку целиком.
Решение простое: берёте заново драйвер с официального сайта или тот, который шёл в комплекте с устройством, и запускаете программу-установщик заново. А она уже сама разберётся, каких файлов не хватает, и настроит всё заново.
Драйверы нужны только на Windows?
Драйверы нужны на всех компьютерах и для всех операционных систем. Но некоторые операционки идут с кучей драйверов в комплекте, а у других этот набор более скромный.
Общее правило для 2021 года такое: большая часть оборудования, которое нужно для обычной офисной работы, подключится к любому компьютеру без необходимости что-то устанавливать. Операционка сама поймёт, что это за устройство, и, скорее всего, у неё уже будут драйверы.
А вот какое-то более сложное оборудование (например, профессиональная аудиокарта или видеокамера) потребуют установки драйверов от производителя.
В чём проблема с драйверами
Проблема в том, что часто производители не делают новые драйверы для старого оборудования. Например:
Есть диджейский контроллер Numark NS7 — это профессиональное оборудование для диджеев и артистов, оно стоит дорого и нужно примерно 100 тысячам человек на всей планете.
Когда контроллер только вышел, компания Numark выпускала драйвера на все свежие операционные системы, проблем с совместимостью не было.
Потом аппарат сняли с производства, поддержку прекратили. Последняя версия драйверов, которую выпустил Numark, — для Windows 10 и MacOS 10.12 (Sierra). С тех пор у Windows вышло большое обновление до 11, а MacOS обновился раз пять. Причём последние две версии сделаны для процессоров Apple, и уже нет надежды, что Numark обновит драйверы для этой архитектуры.
Так что, если вам достался этот редкий профессиональный прибор, вы вынуждены сидеть на древней MacOS Sierra, которая стремительно перестаёт поддерживаться современным софтом.
Что с этим делать? А ничего ты с этим не сделаешь. Такова жизнь.
Жемчужина с барахолки или реверс-инжиниринг IP-камеры DCS-5220A1
Лето благополучно закончилось, а значит приходит время покидать насиженные места, родные дачные кооперативы и стаями отправляться в город. Все бы хорошо, но как-то боязно оставлять на целых полгода хозяйство без присмотра. Задался и я подобным вопросом. В итоге решил оборудовать участок нехитрым комплектом из веб-камеры и доступа в интернет (скорее всего 3G). Начал, как водится, с малого — с поиска подходящей по бюджету камеры. Бюджет мой составлял примерно около 20$.
Pan-tilt-zoom-камера (PTZ-камера) — камера, которая поддерживает удалённое управление направлением и зумом. PTZ — это аббревиатура от панорамирования, наклона и зума (pan, tilt, zoom), которая описывает возможности управления камерой.
Да, насторожился. Но жаба пересилила, а ей вторила самоуверенность («да неужели не разберемся?!»). Камера оказалась старой, но с отличным светочувствительным сенсором (как-раз то что нужно, чтобы наблюдать ситуацию вечером). Решено и камера у меня на столе.
Фотографии с авторскими пометками, это дает о себе знать прошлое в мастерской по ремонту сотовых. Все время делаешь себе cолюшены на случай прихода аналогичной модели :). Вдоволь посмотрев на плату, я собрал все обратно и решил посмотреть как камера будет работать с родным ПО (благо с сервера d-link удалось скачать какие-то огромные пакеты).
Несмотря на внимательно изучение сначала русского, потом и английского мануала, мне так и не стало ясно, как обнаружить камеру. Пришлось искать на антресолях старый хаб, подключать к нему камеру, устанавливать wireshark и слушать ethernet. Прослушивание дало ip-адрес «192.168.0.99». Забив его в ручные настройки программы d-link Network Camera Installation, камера подхватилась. Для работы с подобными камера предназначена другая утилита от d-link D-ViewCam. В ней также пришлось вводить адрес вручную, камера обнаружилась и я даже смог проверить работу PTZ. Камера действительно неплохо управляется и ездит вправо-влево/вверх-вниз с разрешением «один зубчик передаточной шестеренки» :). Правда постоянно щелкать мышкой немного утомляет.
В чистом итоге, телнет-сессия дала гораздо больше ответов, чем все официальные сайты (и даже официальный канал Телеграм 🙂 ) вместе взятые. Ниже информация об аппаратных особенностях данной камеры, собранная через telnet и консоль UART:):
$ cat /proc/cpuinfo Processor : FA526id(wb) rev 1 (v4l) BogoMIPS : 136.80 Features : swp half thumb Hardware : Vivotek VVTK1000 Revision : 0000 Serial : 0000000000000000
На заметку/напоминание всем кто решится повторять подобные эксперименты — к выходу UART подключайтесь через преобразователь уровней (у меня это был FTDI232).
Внимательно проанализировав консольные логи загрузки, стало примерно ясно, что ядро напрямую распаковывается в оперативную память. Теоретически, на сайте можно найти GPL прошивки если не для всех, то по крайней мере, для многих продуктов d-link. Но именно для моей модели cкачать последнюю прошивку не удалось. Ладно, взял первую попавшуюся (файл *.pkg) и скормил ее binwalk.
$binwalk DCS-5220_A2_v1.05.pkg DECIMAL HEXADECIMAL DESCRIPTION __________________________________________ 54_0x36_uImage header, OS Kernel Image, compression type: none, image name: «linux-2.4.26» 11770 _0x2DFA _gzip compressed data, maximum compression, 897238_0xDB0D6_gzip compressed data, maximum compression, file name: «initrd.img» 2935070_0x2CC91E_gzip compressed data
Синий экран с ошибкой «THREAD STUCK IN DEVICE DRIVER», что делать?
При запуске некоторых игр (часто при смене графических настроек в них) Windows вылетает с синим экраном и ошибкой «THREAD STUCK IN DEVICE DRIVER» (ее фото скинул вам на почту). Сначала подумал, что поймал какой-то вирус или ОС приказала долго жить.
Переустановил полностью Windows, обновил ее, проверил все на вирусы и.. это не помогло. Подскажите что не так, в сервис бы отнес, но сейчас везде карантин. Печалька.
Очень неприятная штука, в большинстве случаев связанна с видеодрайвером (сбойная версия, некорректная установка, конфликт с др. устройствами и пр.).
Ниже приведу несколько рекомендаций для ее устранения.
THREAD STUCK IN DEVICE DRIVER — внешний вид ошибки (если перевести на русский: «драйвера ожидают определенного действия от видеокарты, что вызвало ошибку. «.
Что можно сделать для устранения «THREAD STUCK. »
👉 ШАГ 1
И так, первое, что порекомендую в этом случае — поменять видеодрайвер (и не всегда самый новый драйвер подойдет). Это тем более актуально, если вы пользуетесь теми драйверами, которая нашла сама ОС Windows 10.
Скриншот с сайта AMD
Открыть настройки Radeon
Отключаем доп. настройки в видеодрайвере
Обновить драйвер — выбрать вручную
👉 ШАГ 2
Далее советую зайти в настройки BIOS и загрузить оптимальные настройки, т.е. сбросить текущие на безопасные (либо вручную отключить режим Turbo/Boost для ЦП, и установить «родную» частоту ОЗУ (Memory Clock/DRAM Frequency) ). На моем «железе» частота составляет 2933 MHz. 👇
Установка частоты ОЗУ 2933 MHz
Примечание : в особенности это относится ко встроенным видеокартам (AMD Ryzen Vega 8/11, Intel HD), т.к. их производительность сильно зависит от частоты плашек ОЗУ. При выставлении высокой частоты — нередко встроенная карта начинает выдавать подобные «пируэты».
Как обновить UEFI (BIOS) материнской платы (на примере ASRock)
👉 ШАГ 3
Еще одной характерной причиной появл. синих экранов может стать высокая температура графического чипа. Перед запуском игр или ресурсоемких приложений — установите себе одну из утилит для мониторинга температуры видеокарты, и проследите: до каких значений она доходит.
GPU-Z — просмотр температуры
Возможно, стоит почистить ПК от пыли, поменять термопасту, и установить доп. кулеры в системный блок на вдув/выдув. Все эти меры в комплексе могут снизить температуру на десятки градусов!
👉 ШАГ 4
Также желательно проверить и вашу карту (на которой сыпятся ошибки) в другом системном блоке.
В некоторых случаях синий экран с сообщением «THREAD STUCK IN DEVICE DRIVER» может указывать на аппаратные проблемы. * В домашних условиях подобное не устранимо.
Если у вас б/у видеокарта — возможно, у нее не «родной» BIOS (т.е. ее перепрошил предыдущий хозяин под какую-либо узкую задачу). В этом случае вполне может появиться подобная проблема.
И, если все вышеперечисленное не помогло, я бы посоветовал попробовать самостоятельно прошить BIOS видеокарты заводской («родной») прошивкой.