Acpi sam0714 1 что за устройство
Перейти к содержимому

Acpi sam0714 1 что за устройство

Драйвер ACPI\VEN_SAM&DEV_0714 для Windows 10 x64 Bit

Любое программное обеспечение, работающее с драйверами, для идентификации последних использует специальные коды. Сегодня мы разберем, как бесплатно скачать, а также установить ACPI\VEN_SAM&DEV_0714 для Windows 10. При этом будет описано сразу два варианта, а именно: на автоматический и ручной.

Описание драйвера

Данный драйвер используется для обнаружения и корректной работы тачпада Synaptics SMBus TouchPad. Такие устройства, например, применяются в ноутбуках Samsung 300E4EV. Естественно, если программное обеспечение отсутствует, повреждено или не работает, устройство не может функционировать полноценно. Давайте исправим проблему.

Samsung 300E4EV

Загрузка и установка

Как уже было сказано, инструкция по правильной установке драйвера, о котором мы сегодня говорим, будет рассмотрена на примере Windows 10 сразу в двух вариантах:

  1. Автоматическая установка.
    1. Воспользовавшись поисковым инструментом операционной системы, открываем штатную утилиту под названием диспетчер устройств.
    2. В списке выбираем ветку с неработающим оборудованием. Делаем правый клик и из контекстного меню выбираем пункт автоматического обновления.
    3. Дожидаемся завершения скачивания нужного драйвера.
    1. Описанный выше вариант в рамках Windows 10 не всегда работает правильно. Если драйвер в автоматическом режиме не был найден, попробуем установить его вручную. Для этого перейдите ниже и скачайте архив с нужными нам файлами.
    2. Распакуйте и поместите в удобное место содержимое архива.
    3. Запустите файл с расширением .inf. Сделайте правый клик из контекстного меню выберите пункт Установить.

    Synaptics SMBus TouchPad

    И в первом, и во втором случае после завершения установки драйвера компьютер нужно перезапустить.

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

    Скачать

    Дальше вы можете переходить к реализации приведенной выше пошаговой инструкции. Все доступные ниже файлы взяты с официального сайта и являются полностью оригинальными.

    Исправляем ACPI на Samsung N250

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

    В теории, такая система должна была сделать драйвера для чипсета ненужными. Она весьма мощная (если не сказать «раздутая»), и вполне может справиться с такой задачей; например, на Маках ACPI используется весьма широко и грамотно.

    В реальности, однако, поставщики PC-совместимых систем зачастую включают ошибочные или неполные таблицы ACPI, и не последней причиной для этого является vendor lock-in. Таким образом, эти системы требуют использования нетривиальных обходных путей, зачастую недокументированных и тоже не всегда корректно работающих. Вместо этого, я попытался исправить ACPI для одной такой системы.

    Компьютер, который у меня есть — нетбук Samsung N250+. У него достаточно неплохое «железо» (за исключением охочей до батарейки и вообще кривой WiFi-карточки Broadcom, которую я сразу же заменил на аналогичую Atheros), но качество BIOS-а весьма печальное. На момент релиза не было даже возможности включить (или выключить) WiFi из Linux-системы: его состояние можно было изменить только через CMOS Setup Utility. На данный момент драйвер есть, но он использует фундаментально порочный подход, и страдает от некоторых проблем.

    Исследование текущего состояния

    Поддержка возможностей нетбука, для которых код в ACPI отсутствовал, изначально была реализована в модуле ядра easy slow down manager, который в итоге был принят в ядро как samsung-laptop.c.

    Как видно на строке 725 исходного кода, этот драйвер использует вызовы SMI (и интерфейс Samsung под названием SABI) для того, чтобы устанавливать уровень подсветки, изменять «режим производительности» (который на самом деле всего лишь меняет скорость вращения вентиляторов) и включать питание беспроводному модулю. SMI-вызов — это команда, которая заставляет ЦП активировать так называемый режим управления системой (SMM), специальную возможность чипсета и процессора, одинаково похожую на гипервизор и руткит.

    BIOS может настроить чипсет так, чтобы он перехватывал определенные операции (например, доступ к выбранным регионам памяти или портов ввода-вывода) и активировал SMM, ОС не может ни обнаружить факт входа в SMM (кроме как косвенными методами), ни прервать его, ни предотвратить. После этого, BIOS может выполнить произвольный код: например, SMM используется для того, чтобы сэмулировать для старых ОС (например, ДОС) поддержку PS/2-мыши в тех случаях, когда подключена USB-мышь. Более того, область памяти, выделенная для обработчика SMM, ни при каких обстоятельствах не доступна ОС, делая прямой анализ логики ее работы невозможным.

    К счастью, в этом случае вызовы SMI, скорее всего, меняют лишь пару байтов, и, если повезет, можно будет определить их расположение, не изучая код режима SMM.

    Рассмотрим поближе таблицы ACPI. Существует множество их типов, но в данном случае важна только одна, DSDT — таблица с байткодом обработчиков многих системных событий.

    Для извлечения таблицы из системы и модификации ее кода нам потребуются две утилиты: «acpidump» и «iasl». На Debian-подобной ОС они находятся в пакетах с тем же названием.

    Для наглядности, я оформил таблицу с историей моих изменений как репозиторий github; начальное состояние содержится в этом коммите. Как видно, таблица весьма длинная: более 5000 строк. Таблицы длиной более чем в 25000 строк встречаются вполне регулярно.

    При попытке скомпилировать таблицу обратно в байткод (наберите make ) без каких-либо изменений компилятор выведет несколько ошибок и замечаний. Их достаточно легко исправить, глядя только на сообщения и спецификацию ACPI; в этой теме форума Gentoo есть несколько неплохих подсказок. Кстати, она на семь лет старше моего нетбука, но советы до сих пор актуальны. Исправленную таблицу можно увидеть здесь.

    Чиним подсветку

    У моего нетбука светодиодная подсветка, и поэтому ее яркость можно менять, просто включая ее на определенную долю одинаковых интервалов времени, например, для затемнения на 30% можно держать ее включенной 70% времени. Чтобы мерцание не было заметно, это переключение (ШИМ) происходит на частоте, заведомо превышающей чувствительность человеческого глаза — скажем, 200кГц вполне достаточно.

    В данном случае, скважность ШИМ, вероятно, изменяется встроенным графическим контроллером. Вот он на шине PCI:

    Цифры «00:02.0» — адрес устройства на шине. Зная этот адрес, можно запросить или изменить параметры устройства, так как Linux предоставляет множество точек управления через sysfs. Одна из них позволяет читать и записывать конфигурационное пространство PCI: блок из 256 байтов, в котором хранятся настройки устройства. Первые 64 байта в этом блоке имеют определенное спецификацией значение, а остальные могут свободно использоваться производителем для своих нужд.

    Проверим, что происходит с конфигурацией при изменении уровня подсветки (несмотря на то, что здесь приведен пример для Linux с открытым драйвером, все это можно сделать и для закрытого драйвера или даже на Windows; считать конфигурационное пространство можно и в ней):

    Таким образом, байт по адресу 0xf4 управляет уровнем подсветки. Можно в этом убедиться, запустив команду sudo setpci -s 00:02.0 f4.b=80 (заменив 80 на нужный уровень подсветки).

    Теперь перепишем DSDT так, чтобы обновлялось это значение (и, возможно, в процессе этого получится узнать, почему управление подсветкой через ACPI вообще не работает):

    Согласно спецификации ACPI (приложение B, раздел 6.2, стр. 704), совместимое описание графического адаптера должно реализовывать методы _BCL , _BCM и _BQC . В нашем DSDT эти методы определены на строке 1767. Вот их откоментированный исходный код:

    Чтобы изменить этот код для работы через конфигурационное пространство PCI, нужно добавить новое поле в структуру, описывающую это пространство. Адрес адаптера 00:02.0 соответствует значению 0x0002000 в ACPI (раздел 6.1.1, стр. 200). Устройство с таким адресом определено на строке 1325; за определением следует описание конфигурационного пространства PCI.

    Как было упомянуто, первые 64 (0x40) байтов в этом пространстве зарезервированы для внутреннего испольования. Из-за этого ACPI даже не включает их в регион; он определен как OperationRegion(IGDP, PCI_Config, 0x40, 0xC0) , где третий аргумент означает отступ с начала области PCI_Config. Поле, управляющее яркостью, расположено по адресу 0xf4 во всем пространстве, и 0xb4 в этом регионе.

    За определением региона следуют определения полей. Вся конструкция Field представляет из себя поток битовых полей (длина определена в битах, а не байтах), одно за другим, перемежающееся указанием смещений (Offset), задаваемых, напротив, в байтах. Назовем наше поле BLVL и включим его в структуру:

    Так как система имен ACPI иерархическая, это поле теперь доступно глобально под именем _SB.PCI0.IGD0.BLVL (имя составлено из вложенных конструкций Device и Scope), и методы для управления яркостью теперь можно переписать так, чтобы они обращались к полю BLVL напрямую:

    Обновленная DSDT также лежит в репозитории.

    Во время тестирования своих изменений мне потребовалось отладить код в DSDT. Отладочный вывод работает при помощи команды вида Store (something, Debug). Для того, чтобы Linux отправил сообщение в лог, нужно добавить параметр ядра acpi.debug_level=0x1f .

    Измененную и собранную ( make или iasl -tc dsdt.dsl ) DSDT теперь нужно отправить на место той, что предоставил поставщик. Для этого можно было бы перепрошить BIOS — но я даже не знаю внутреннюю структуру BIOS-а (и, если уж об этом зашла речь, способа его перепрошивки). Проще и безопаснее проинструктировать Linux использовать нашу DSDT вместо системной. Для этого, нужно собрать dsdt.hex (опция -tc инструктирует iasl генерировать массив Си, что и требуется), положить его в каталог include/ исходников ядра и установить опцию CONFIG_ACPI_CUSTOM_DSDT_FILE в «dsdt.hex». (Она недоступна, если включена опция CONFIG_STANDALONE, «Select only drivers that do not need compile-time external firmware» в «Generic driver options».)

    Можно собрать ядро, установить его и перезагрузиться. Вуаля: теперь изменение яркости подсветки работает со стандартным драйвером ACPI. (Например, echo 7 >/sys/class/backlight/acpi_video0/brightness ).

    Другие функции

    Для того, чтобы найти другие похожие поля, изменяемые кодом в SMM, я написал простой скрипт. Нужно отметить, что некоторые устройства, а именно мосты PCI Express и сетевые адаптеры, порождают множество самопроизвольных изменений.

    К сожалению, ни скорость вентилятора, ни выключатель беспроводного модуля не оказались связаны ни с какими изменениями в конфигурационном пространстве. Вероятно, они производятся через Embedded Controller или интерфейс SMBus, что означает отсутствие постоянных изменений в системной памяти.

    Более того, даже если бы я обнаружил интерфейс отключения беспроводного модуля, я бы не смог использовать стандартный способ его представления системе — из-за отсутствия такого способа в природе. На ноутбуках, где этот интерфейс действительно задан в ACPI, существует платформенно-специфичный драйвер для его обработки (в отличие от подсветки, для которой существует общий стандарт).

    «Sciencespaces»

    Sciencespaces — is a huge database of drivers for various devices that are so essential to us in everyday life. All drivers are selected manually by our experts from the manufacturer and thoroughly tested, so you can always be sure about the safety of your work when downloading drivers from our site. All drivers in our database specially organized by manufacturer and by types of devices, thats why you will find the right driver very quickly.

    On Sciencespaces you will always find a lot of drivers for printers, scanners, video cards, and many other devices. The site has a convenient search engine where you can immediately find the desired driver for your device just using the following form:

    You can also use a convenient directory in which you will find the correct driver for your device. For best search results, select one of the categories presented in the list below:

    • Biometric devices
    • Bluetooth devices
    • Cameras & Scanners
    • Fireware devices
    • Hard disk controllers
    • Host controllers
    • Human Interface Devices
    • Infrared devices
    • Joysticks & Game devices
    • Keyboards
    • Memory card devices
    • Modems
    • Monitors
    • Mouses
    • Multifunctional devices
    • Multimedia
    • NAS devices
    • Network adapters
    • Network services & protocols
    • Others devices
    • PCI devices
    • PCMCIA devices
    • Phones
    • PhysX devices
    • Ports
    • Printers
    • Processors
    • SCSI adapters
    • Smart card readers
    • Storage devices
    • System devices
    • Tape drives
    • UPS
    • USB devices
    • USB display adapters
    • USB drives
    • USB host controllers
    • Videocards
    • Videocodecs
    • Videorecorders
    • Wifi devices
    • xDSL Modems

    Also, very often the owners of laptops ask us to help with the search of drivers.

    Most laptop owners can exactly determine the model of their laptops (for example to read the information on the reverse side of the device where the manufacturers often specify the exact name and model of the device or see the documentation that came with the purchase), but to find out what equipment is installed on a particular model of laptop sometimes very difficult.

    We decided to do away with this problem once and for all. That’s why we put together the best possible database of different models of laptops from different manufacturers, divided them into categories, and now present you the convenient directory where you can always find your laptop model, see the list of equipment installed on it, and download exactly the driver that you exactly fit.

    To find drivers for laptop models, choose the manufacturer of your device from the list below:

    • Acer
    • ASUS
    • HP
    • Dell
    • MSI
    • Samsung
    • Toshiba
    • Sony
    • Lenovo
    • Fujitsu Siemens
    • Fujitsu
    • eMachines
    • Intel
    • Packard Bell
    • Apple
    • Clevo
    • BenQ
    • LG
    • Notebook
    • IBM
    • Compaq
    • Gericom
    • Gateway
    • Matsushita
    • DEPO
    • Medion
    • NEC
    • Gigabyte
    • K-Systems

    If, after all our efforts you still have difficulty in finding the right driver, you can contact us for help 🙂 We wish you a pleasant experience with our project and a stable operating equipment.

Добавить комментарий

Ваш адрес email не будет опубликован.