Linux device driver management

Saved searches

Use saved searches to filter your results more quickly

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

solus-project/linux-driver-management

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Sign In Required

Please sign in to use Codespaces.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

README.md

Goal: Let’s reinvent PnP for Linux

Linux Driver Management provides a core library and some tooling to enable the quick and easy enumeration of system devices, and functionality to match devices to packages/drivers. This is designed to be as agnostic as feasible whilst supporting a wide range of device classes, to provide a building block for driver management and discovery in Linux distributions.

Through this library we aim to centralise driver management solutions for Linux, and allow all distributions a chance to improve the UX around driver/device installation through device/driver discovery, with hotplug capabilities. Users should be able to plug in that new device and have the corresponding drivers offered to them dynamically, without having to hunt through software centers and menus for driver tools. Additionally — users might not realise they need to install extra support, and will rightfully believe that it’s «broken».

Linux Driver Management is a Solus project

Effectively LDM provides a core library and some tooling around it. The library can be used to provide automatic hardware detection utilities and driver matching, in the style of .modaliases files (or with custom plugins at runtime).

  • Device enumeration
  • Discoverability by capability (i.e. via type or subsystem and type)
  • Abstraction of device complexities ( usb_device -> usb_interface -> hid visible as single toplevel device)
  • Hotplug support via udev — allows offering drivers when a device is plugged in.
  • Matching of drivers/packages to specific hardware through multiple classes
  • GL/X11 configuration for proprietary drivers/Optimus («always on» support)
  • Abstraction of system GPU configuration to determine iGPU vs dGPU, hybrid/optimus identification, simple classification, etc.
Читайте также:  Беспроводной usb адаптер linux

Currently LDM library does the minimum work needed to enumerate devices and access very basic properties, whilst providing fairly complex matching systems. However, there are some things left to do in future:

  • Expose udev/system properties of devices
  • Add APIs to deal with each individual device child type
  • Further expose LdmWifiDevice , etc.

In short the enumeration functions currently focus on detecting capabilities, and for the first release advanced introspection has been omitted.

The core library provides a GObject API to query and discover devices. The LdmManager type is the main library entry point and supports library-level plugins to extend the detection capabilities.

Devices are abstracted into toplevel LdmDevice objects, which are usually a composite device hiding the ugly internal details of sysfs / udev . This allows searching for, and interaction with, toplevel LdmUSBDevice objects for example that have a composite «type» of all child nodes. With this capability we can deal with a device logically, such as a «Logitech Keyboard», which exposes the HID and USB capabilities. Internally the child node tree is used to allow complex device matching through the plugin implementation.

The library ships with GObject Introspection bindings and can be used from any GIR enabled language (such as Vala and Python).

from gi.repository import Ldm manager = Ldm.Manager() printers = manager.get_devices(Ldm.DeviceType.USB | Ldm.DeviceType.PRINTER) print(printers[0].get_name()) # "Some Printer" providers = manager.get_providers(printers[0]) print(providers[0].get_package()) # some-printer-package

This section provides information on the specifics of distribution integration of LDM. Most of this is focused on X11 specifics.

Note: As a design decision to simplify LDM, we opted to support «modern» libGL management only, and not those requiring manual management of the libGL.so* links (as Solus used to have). Thus it is assumed that the end user can only have one variant of a proprietary driver installed, and not multiple conflicting version of the NVIDIA driver. It is also assumed that mesa libGL is always available.

For best results, we recommend a libglvnd enabled graphical architecture, with each major versioned NVIDIA driver having a conflict with each other to enforce mutual exclusion. Additionally it is well advised to integrate the Fedora ModulePath patches to xorg-server to allow specifying the private NVIDIA directory for the libglx.so extension, to remove conflicts with xorg-server ‘s implementation.

LDM ships with a set of session hooks for popular display managers such as gdm , sddm and LightDM . These hooks will run ldm-session-init for X11 sessions, and should always be run. When an Optimus enabled system is configured with LDM, the session hook is responsible for setting up xrandr to allow «always on» Optimus support.

This is provided via the library ( LdmGLXManager ) and exposed via the CLI command linux-driver-management configure gpu . This is intended to be run by the distro’s postinstall hook system to set up the X11 configuration. This has been chiefly designed in mind with static packages that provide the relevant snippets for X11 to find library paths (see the Fedora ModulePath patches to xorg-server ). It is recommended to use a glvnd-enabled system with separation between the libGL links as linux-driver-management no longer provides libGL symlink management.

Читайте также:  Unity assets extractor linux

During configuration, LDM will remove invalid /etc/X11/xorg.conf files if they explicitly enable a driver (i.e. Driver «nvidia» ). For proprietary drivers LDM will create /etc/X11/xorg.conf.d/00-ldm.conf to turn on the driver at boot.

This may be unnecessary for some distros that use PrimaryGPU style patches however it should still be enabled. See the Optimus section for more details on this.

On GLVND enabled systems, the modern NVIDIA proprietary driver is able to use the correct libGL depending on the screen and kernel drivers. Currently LDM will enable «always on» support for Optimus via the 00-ldm.conf X11 snippet.

In future iterations of LDM, we will make it easier to «disable» the NVIDIA card without removing the drivers and needing to reboot, just a logout and login again. To do this LDM will require control over the X11 configuration and early session initialisation, which is why it is recommended to not make use of PrimaryGPU unconditional Optimus enabling in conjunction with LDM.

The next natural step after this toggle behaviour will be to introduce support for dynamically enabling the dGPU for specific workloads. This will only be effective if LDM is given absolute control over the driver enabling in X11.

The core form of driver matching is to use *.modaliases files. These are identical in syntax to the older Ubuntu Jockey style modalias files, and can be used in a drop in fashion. Notably these files provide matching currently for the following subsystems:

Example modalias files can be found in the tests/data/*.modaliases set. Essentially they provide a fnmatch(3) style string to match each device node modalias , the name of the kernel driver, and the name of the package or bundle that the user would need to install to enable it. It is then up to the consumer of the APIs to do something with those providers.

These modaliases can be generated at package build time and split into subpackages, allowing the main driver tool/software center to depend on all -modaliases subpackages to provide drop-in hardware detection. The exact interpretation of the kernel driver and package/bundle name are left to the discretion of the library consumer in order to allow LDM to remain agnostic.

For open source kernel drivers with well defined modaliases, you can use the mkmodaliases(1) tool provided by LDM to automatically generate these files during your package build. Note however that for the NVIDIA Proprietary drivers this will lead to poor matching, a problem well understood by many distributions already. It is also recommended to use a custom modalias for the broadcom drivers due to a poor built-in loose match:

alias pci:v000014E4d*sv*sd*bc02sc80i* wl broadcom-sta 

Whilst .modaliases files typically refer to kernel modules, they can be (ab)used in software centers and such to match devices to userspace packages that add capabilities, as more of a recommendation system. For example, matching hid: lines for a mouse and providing a custom userspace USB driver ( usbfs ).

Читайте также:  Astra linux настроить интернет

With the default meson configuration, modaliases will be found in /usr/share/linux-driver-management/modaliases .

Copyright © 2016-2018 Linux Driver Management Developers

linux-driver-management is available under the terms of the LGPL-2.1

Источник

Linux Mint Driver Manager and Device Driver Manager available via PPA, Install in Ubuntu/Linux Mint

Device Driver Manager is developed by Schoelje, and this tool to help users installing third-party hardware drivers. Currently Nvidia, Intel, ATI, VIA and Broadcom drivers can be installed and allows to install the PAE kernel for multi-core 32-bit systems. DDM uses the repositories to download and install the appropriate packages.

device driver manager

To install Device Driver Manager in Ubuntu/Linux Mint open Terminal (Press Ctrl+Alt+T) and copy the following commands in the Terminal:

Install Linux Mint ‘Driver Manager’ in Ubuntu 14.04 Trusty/13.10 Saucy/13.04 Raring/12.10 Quantal/and other related Ubuntu derivatives

Linux Mint 15 had Driver Manager for the first time which is developed by Linux Mint team. Mint-Drivers relies on the same Ubuntu driver manager back-end and works the same way as software-properties-gtk. It just looks a bit better than Ubuntu Additional drivers.
The «Driver Manager» is an independent application, separate from «Software Sources» and which you can launch straight from the menu.
Drivers are listed by package name, and their version are clearly stated (in the case of the NVIDA drivers you can therefore choose according to a particular version instead of wondering what «current» or «updates» really mean).
Devices from popular brands (NVIDIA, ATI, Broadcom, Samsung and so on. ) are illustrated with an icon.

To install Mint Driver Manager in Ubuntu open Terminal (Press Ctrl+Alt+T) and copy the following commands in the Terminal:

Источник

compizomania

Менеждер драйверов и устройств — Device Driver Manager, это графический инструмент, созданный разработчиками Linux Mint для определения и установки драйвера видеокарты, драйвера wifi, а также проверки возможности установки ядра PAE 32-битных систем на мультипроцессорах.
В настоящее время приложением поддерживаются следующие драйверы: Nvidia, ATI, Intel, VIA и Broadcom.
После открытия Device Driver Manager, программа будет сканировать систему на наличие любых доступных драйверов. По окончании сканирования и определения драйверов и ядра, вам просто нужно выберать драйвер или ядро, DDM загрузит и установит соответствующие пакеты, используя доступные репозитории в вашей системе.

Установка Device Driver Manager в Ubuntu

Вы можете загрузить deb пакет по ЭТОЙ ссылке и установить его в Центре приложений Ubuntu или выполнить следующие команды в терминале (Ctrl+Alt+T):

cd /tmp && wget http://packages.linuxmint.com/pool/main/d/ddm/ddm_0.5.4_all.deb && sudo dpkg -i ddm_0.5.4_all.deb

После установки можно начать пользоваться программой.

Источник

Оцените статью
Adblock
detector