Usb drivers linux mint

Драйверы устройств в Linux

Часть 11: Драйверы USB в Linux

Оригинал: «Device Drivers, Part 11: USB Drivers in Linux»
Автор: Anil Kumar Pugalia
Дата публикации: October 1, 2011
Перевод: Н.Ромоданов
Дата перевода: июнь 2012 г.

Эта статья, которая является частью серии статей о драйверах устройств в Linux, поможет вам начать писать ваш первый драйвер USB в системе Linux.

Флеш устройство Пагса было именно тем устройством, которым Светлана воспользовалась, когда они сели вдвоем за изучение мира драйверов USB в Linux. Самым быстрым способом с ним разобраться был обычный способ Пагса — выбрать устройство USB и написать для него драйвер для того, чтобы с ним поэкспериментировать. Поэтому они выбрали флэш устройство (т.е. USB флешку), которое было под рукой — JetFlash от Transcend, с ID поставщика 0x058f и ID продукта 0x6387 .

Обнаружение устройства USB в Linux

Независимо от того, есть ли драйвер для устройств USB в Linux системе или его нет, допустимое устройство USB всегда будет обнаруживаться в системе Linux в пространстве аппаратных средств и в пространстве ядра, поскольку система создана (и выполняет обнаружение) в соответствии со спецификациями протокола USB. Обнаружение в аппаратном пространстве осуществляется хост контроллером USB — как правило, соответствующем шинным устройством, аналогичным устройству PCI в системах x86. Соответствующий драйвер хост-контроллера обнаруживает устройство и транслирует информацию низкоуровнего физического слоя в конкретную информацию более высокого уровня протокола USB. Затем информация протокола USB, касающаяся устройства и, имеющая специальный формат, заносится в общий слой ядра USB (драйвер usbcore) в пространстве ядра, что позволяет обнаруживать устройства USB в пространстве ядра даже в том случае, когда отсутствует драйвер конкретного устройства.

Дальше — дело различных драйверов, интерфейсов и приложений (которые различны в различных дистрибутивах Linux) отображать обнаруженные устройства в пользовательском пространстве. На рис.1 показана иерархия подсистемы USB в Linux.

Рис.1: Подсистема USB в Linux

Краткий список всех обнаруженных устройств USB можно получить с помощью команды lsusb , которую следует запустить в роли пользователя root. На рис.2 приведен такой список как для случая с флэш устройством, так и без него. Параметр -v в команде lsusb позволяет получить более подробную информацию.

Рис.2: Информация, выдаваемая командой lsusb

Во многих дистрибутивах Linux, таких как Mandriva, Fedora, . , драйвер usbfs сконфигурирован так, что он загружается по умолчанию. В результате можно с помощью команды cat /proc/bus/usb/devices из директория /proc извлечь конкретную информации об обнаруженном USB-устройстве, представленную в удобном виде. На рис.3 показан типичный пример такой информации, которая находится в специальной секции, описывающей флэш-устройство. В списке обычно присутствует по одному такому разделу для каждого допустимого устройства USB, обнаруженного в системе.

Рис.3: Фрагмент информации из proc, касающейся USB

Разбираемся в секции, описывающей устройство USB

Чтобы дальше разбираться с этими секциями, нужно в первую очередь понять, что такое допустимое устройство USB. Для всех допустимых устройств USB есть одна или несколько конфигураций. Конфигурация устройства USB похожа на профиль, причем в качестве конфигурации, используемой по умолчанию, обычно используется первая конфигурация. Таким образом, в Linux для каждого устройства по умолчанию поддерживается только одна конфигурация. Для каждой конфигурации в устройстве может быть один или несколько интерфейсов. Интерфейс соответствует функции, предоставляемой устройством.

Читайте также:  Windows terminal preview служба не запущена

Интерфейсов может быть столько, сколько есть функций, предоставляемых устройством. Так, скажем, устройство МФУ USB-принтер (многофункциональное устройство) может выполнять печать, сканирование и отправку факсов, и, скорее всего, для него будет, по крайней мере, три интерфейса, по одному для каждой из функций. Таким образом, в отличие от других драйверов устройств, драйвер USB устройства, как правило, связывается / пишется отдельно для каждого интерфейса, а не для устройства в целом — это значит, что для устройства USB может быть несколько драйверов устройств, причем для интерфейсов различных устройств может использоваться один и тот же драйвер, — хотя, конечно, для одного интерфейса не может быть более одного драйвера.

Вполне нормальной и достаточно обычной является ситуация, когда для всех интерфейсов устройства USB используется один и тот же драйвер USB. В записи Driver=. для директория proc (рис. 3) показано, что в драйвер отсутствует отображение интерфейса ( none ).

Для каждого интерфейса есть один или несколько источников / приемников данных. Источник / приемник данных (endpoint) похож на конвейер (pipe), используемый для передачи информации в зависимости от функции либо в интерфейс, либо из интерфейса устройства. В зависимости от типа информации, источники / приемники данных могут быть четырех типов: Control, Interrupt, Bulk и Isochronous.

Прим.пер.: Подробное описание указанных четырех типов источников / приемников данных будет приведено в следующей статье данной серии статей.

Согласно спецификациям протокола USB во всех допустимых устройствах USB должен быть неявно используемый источник / приемник данных с номером 0 (end-point zero) — единственный двунаправленный источник / приемник данных. На рис.4 приведена полная наглядная схема допустимого устройства USB, соответствующее приведенному выше объяснению.

Рис.4: Общий взгляд на устройство USB

Вернемся обратно к секциям устройств USB (рис. 3) — первая буква в каждой строке соответствует различным частям спецификации устройства USB. Например, D — устройству, C — конфигурации, I — интерфейсу, E — источнику / приемнику данных (endpoint) и т.д. Подробнее об этом и о многом другом смотрите в исходном коде ядра в файле Documentation/usb/proc_usb_info.txt .

Регистрация драйвера USB для флеш устройства

«Похоже, для того, чтобы можно было самостоятельно написать первый драйвер USB, потребуется узнать много всего о протоколе USB, — конфигурацию устройства, интерфейсы, конвейеры передачи данных, четыре типа передачи данных, а также многие другие обозначения, например, T, B, S, …, которые есть в спецификации устройств USB» — вздохнула Светлана.

«Да, но ты не беспокойся — со всем этим можно будет разобраться подробнее позже. Давай со всем этим разбираться последовательно — возьмем интерфейс флеш устройства, связанного с драйвером нашего USB-устройства ( pen_register.ko )» — утешил Пагс.

Как и в любом другом Linux-драйвере, здесь также требуется конструктор и деструктор — используется тот же самый шаблон драйвера, который использовался для всех драйверов. Но содержимое будет другим, поскольку это драйвер слоя аппаратного протокола, т.е. горизонтальный драйвер в отличие от символьного драйвера, который был одним из вертикальных драйверов, рассмотренных ранее. Разница лишь в том, что вместо регистрации и отмены регистрации в VFS, здесь это должно выполняться на уровне соответствующего протокола — в данном случае — в ядре USB; вместо того, чтобы предоставлять интерфейс пользовательского пространства, например, файл устройства, он должен подключиться к реальному устройству в пространстве аппаратных средств.

Интерфейсы API для ядра USB выглядят следующим образом (прототип в
):

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

Собираем все вместе в файл pen_register.c , который будет выглядеть следующим образом:

Затем можно повторить обычные шаги, выполняемые для любого Linux драйвера:

  • Собираем драйвер (файл .ko ) с помощью запуска команды make .
  • Загружаем драйвер с помощью команды insmod .
  • Выдаем список загруженных модулей с помощью команды lsmod .
  • Выгружаем драйвер с помощью команды rmmod .

Но, что удивительно, результат не будет таким, как ожидалось. Используйте команду dmesg и загляните в директорий proc для просмотра различных журналов и прочих подробностей. Это связано не с тем, что драйвер USB отличается от символьного драйвера, — здесь есть одна проблема. На рис.3 показано, что у флэш-устройства есть один интерфейс (с номером 0), который уже связан с обычным драйвером usb-storage.

Читайте также:  Описание счетчиков производительности windows

Теперь, для того, чтобы связать наш драйвер с этим интерфейсом, нам нужно выгрузить драйвер usb-storage (т. е. выполнить команду rmmod usb-storage ) и переподключить флэш-накопитель. Как только это будет сделано, результаты станут такими, как ожидалось. На рис.5 показан фрагмент информации из журналов и из директория proc . Снова подключите и отключите (в горячем режиме) флеш устройство и пронаблюдайте, как действуют вызовы probe и disconnect.

Рис.5: Флеш устройство в действии

Подведем итог

«Наконец-то! Что-то действует!» — облегченно сказала Светлана. «Но мне кажется, что для того, чтобы собрать полный драйвер устройства USB, здесь есть еще много того, с чем следует разбираться (например, с идентификационной таблицей, обратными вызовами probe и disconnect и т. д.)».

«Да, ты права. Давай разбираться со всем по порядку и с перерывами » — ответил Пагс, прервав самого себя.

Источник

Linux Mint установка драйвера

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

Когда вы производили установку Linux Mint, у вас автоматически установилось большинство драйверов. Исключением является драйвер видеокарты, принтера и другого специфического оборудования. Если вы настраиваете свой компьютер, то вы хорошо знаете модели вашего оборудования, но что делать, если вы в гостях или купили компьютер с рук? В подобных случаях нам поможет аналог программы Aida для Linux Mint. Название этой утилиты — SysInfo и вы можете скачать ее с нашего сайта. Распакуйте архив, зайдите в папку sysinfo и кликните правой кнопкой мыши по файлу sysinfo. В меню выберите «свойства» и перейдите во вкладку «права». Установите галочку «позволять выполнение файла как программы» и нажмите «ок». Теперь запустите ее двойным нажатием левой кнопки мыши.

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

Linux Mint установка видео драйвера Nvidia

Владельцы видеокарт компании Nvidia могут установить драйвер достаточно просто. Перейдите в меню-администрирование-менеджер драйверов (это необходимо делать с подключенным интернетом).

Перед вами откроется окно, в котором вам нужно выбрать рекомендуемый драйвер с названием nvidia. После этого, нажмите «применить изменения» (Apply Changes), дождитесь окончания установки и перезагрузите ваш компьютер.

Linux Mint установка видео драйвера Ati (AMD)

Владельцы видеокарт Ati (AMD) перейти в меню-администрирование-менеджер драйверов (это необходимо делать с подключенным интернетом).

Найдите строку с названием fglrx и установите соотвествующую галочку. После этого, нажмите «применить изменения» (Apply Changes), дождитесь окончания установки и перезагрузите ваш компьютер.

Помимо этого способа, вы можете установить драйвер из терминала следующими командами:

sudo apt-get install fglrx

sudo aticonfig —initial

Linux Mint установка видео драйвера Intel

Если у вас на ноутбуке или компьютере используется видеокарта Intel, то вам необходимо перейти на страницу загрузки драйвера. Найдите строку «Intel Graphics Installer for Linux*» и скачайте установщик. Он будет в виде deb файла, который можно легко установить двойным кликом.

Можно воспользоваться более простым способом и просто добавить репозиторий. Откройте терминал и введите команды

sudo add-apt-repository ppa:oibaf/graphics-drivers

sudo apt-get update

sudo apt-get dist-upgrade

Теперь у вас самая последняя версия драйвера и просто перезагрузите компьютер.

Linux Mint установка драйвера принтера

Подключите ваш принтер к компьютеру и включите его. Перейдите в меню-центр управления и найдите там раздел оборудование.

Нажмите на кнопку Printers и перед вами появится вот такое окно:

Нажмите на кнопку «добавить» и вы увидите название вашего принтера в списке

Нажмите кнопку «вперед» и программа начнет поиск драйвера. В следующем окне выберите производителя принтера и нажмите «вперед».

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

Обладатели принтеров Canon могут добавить репозиторий с помощью команды в терминале:

sudo add-apt-repository ppa:michael-gruz/canon-trunk

sudo apt-get update

Читайте также:  При загрузки windows нетбук

sudo apt-get install cnijfilter-ip100series

В последней команде вам нужно заменить ip100series на вашу модель.

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

Источник

Как установить драйвер Realtek RTL8821CE

Обычно, когда мы устанавливаем дистрибутив Linux на ноутбук, то зачастую поддержка Wi-Fi присутствует полностью или частично для большинства моделей. Драйверы интегрированы в ядро Linux и в результате всё «просто работает» из коробки. Но проблемы начинаются если драйвер для вашего Wi-Fi отсутствует. Вам нужно его найти и установить вручную.

С такой проблемой могут столкнуться, например, владельце ноутбуков HP CM-0078AU.

Если у вас Wi-Fi адаптер на основе чипсета Realtek RTL8821CE, то в Linux по умолчанию отсутствует драйвер для него. В результате ОС не видит устройство, и в панели рядом с часами вовсе отсутствует значок Wi-Fi.

Для исправления данной проблемы достаточно установить необходимый драйвер.

Этот драйвер работает на ядре Linux > 4.14 (все современные дистрибутивы удовлетворяют этому требованию). Этот драйвер тестировался на Debian, Ubuntu, Linux Mint, Arch Linux, Gentoo и должен работать на всех производных дистрибутивах.

Этот драйвер может быть установлен с использованием DKMS. Эта система, которая автоматически перекомпилирует и устанавливает модули ядра когда в результате обновления устанавливается новое ядро. Для использования DKMS, установите пакет dkms.

Чтобы проверить, какой именно у вас интегрированный Wi-Fi адаптер, выполните команду:

Если у вас вывод содержит строку RTL8821CE, значит эта инструкция вам поможет:

Офлайн установка Realtek RTL8821CE

Если на компьютере, на который вы хотите установить драйвер, отсутствует Интернет-подключение, то вы можете скачать установочный файл из репозиториев Ubuntu, перенести его на флешке на компьютер без Интернета и попробовать установить его вручную. Этот способ может не сработать по той причине, что для установки драйвера требуются зависимости (например, заголовки ядра), которые смогли бы установиться будь у компьютера Интернет-подключение, но если компьютер офлайн, то приходится надеяться, что все нужные файлы присутствуют по умолчанию.

Скачайте установочный файл драйвера:

Если ссылка на драйвер перестала работать, то для поиска актуальной ссылки перейдите на страницу: https://pkgs.org/search/?q=rtl8821ce-dkms

Перенесите скаченный файл на компьютер, где его нужно установить, перейдите в директорию с драйвером и запустите установку следующей командой:

Установка драйвера Realtek RTL8821CE в Ubuntu 21.04 и более поздние

Драйвер помещён в стандартный репозиторий, поэтому достаточно выполнить команду:

Установка драйвера Realtek RTL8821CE в Ubuntu 20.04

Начиная с Ubuntu 20.04, этот драйвер имеется в Дополнительном ПО (Additional Drivers (Software & Updates)). Откройте настройки дополнительного ПО и поставьте галочку “Using DKMS source for the Realtek 8821C …” (использовать DKMS источник для Realtek 8821C) и затем перезагрузитесь. После перезагрузки всё будет работать.

Как установить драйвер Realtek RTL8821CE в Debian, Ubuntu, Kali Linux, Linux Mint и их производные

Выполните следующие команды:

Затем перезагрузите компьютер — всё должно работать.

Как установить драйвер Realtek RTL8821CE в Arch Linux, BlackArch и их производные

Установите pikaur, как это показано в статье «Автоматическая установка и обновление пакетов AUR», а затем просто выполните команду:

Как установить драйвер Realtek RTL8821CE в Gentoo

Выполните с правами root команды:

Удаление драйвера

Откройте терминал и используйте git clone для клонирования репозитория на локальный диск:

Затем выполните скрипт для деинсталяции:

Обновление драйвера

Убедитесь, что у вас последняя версия репозитория на диске:

Удалите все несвежие бинарные файлы:

Возможные проблемы

Secure Boot

Если ваша система использует безопасную загрузку, отключите её в настройках BIOS, иначе ядро не будет принимать пользовательские модули.

PCIe Activate State Power Management

Ваш дистрибутив может поставляться с включённым по умолчанию управлением питанием активного состояния PCIe (PCIe Activate State Power Management). Это может конфликтовать с этим драйвером. Чтобы отключить:

Добавьте pci=noaer в конец GRUB_CMDLINE_LINUX_DEFAULT. Строка должна выглядеть примерно так:

Затем обновите вашу конфигурацию GRUB:

Ноутбуки Lenovo Yoga

Некоторые новые ноутбуки Yoga (например, Yoga 530) поставляются с rtl8821ce в качестве чипа Wi-Fi/Bluetooth. Но модуль ideapad-laptop, который может входить в ваш дистрибутив, может конфликтовать с этим драйвером. Чтобы отключить его:

Источник

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