Установка ubuntu usb драйверов
Windows для работы оборудования необходимы драйверы, написанные производителями устройств. Linux и другие операционные системы так же требуют драйверы устройств, но драйверы в Linux обрабатываются иначе.
Хорошей новостью будет то, что ваши устройства в системе Linux скорее всего будут работать «из коробки». Иногда требуется устанавливать драйверы, но иногда оборудование не совместимо с Linux.
Как работают драйверы в Windows?
После установки Windows, вам потребуется установить драйверы, предоставляемые производителем устройств — драйверы чипсета материнской платы, драйверы видеокарты, драйверы WiFi, и многого другого.
Если ваше оборудование не работает, то всегда есть драйвер для него, кроме случаев, когда у вас древнее оборудование, несовместимое с новой версией Windows.
Как работают аппаратные драйверы в Linux?
Большинство драйверов в Linux с открытым исходным кодом и включены в состав ядра (kernel), за исключением драйверов к видеокартам, входящим в состав Xorg, а так же драйверов принтеров, включенных в систему печати CUPS.
Большинство драйверов видео и принтеров включены в дистрибутивы, в дополнение к драйверам, включенным в ядро. Они написаны энтузиастами, в качестве хобби, и компаниями, участвующими в развитии мира Linux.
Иными словами, большинство драйверов в Linux доступны «из коробки». Вам не нужно выискивать необходимый драйвер по сайтам производителей оборудования. Драйвер будет включен в вашу систему, либо появится в ней при обновлении ядра до текущей версии. Система сама определит ваше оборудование и установит необходимый драйвер.
Как в Linux установить проприетарный драйвер?
Некоторый производители для своего оборудования пишут драйверы под Linux, но с закрытым исходным кодом. Из-за этого драйвер не может быть включен в состав дистрибутива и не может поддерживаться сообществом.
Чаще всего такие драйверы — графические драйверы NVIDIA и AMD, которые обеспечивают больше производительности графики для игр в Linux. Имеются и открытые аналоги графических драйверов, но они не могут обеспечить такую производительность в 3D играх, как проприетарные. Некоторые драйверы для Wi-Fi так же проприетарные, так что ваше беспроводное оборудование может не работать, пока вы их не становите.
Способ установки проприетарных драйверов зависит от вашего дистрибутива Linux. В Ubuntu и основанных на нем дистрибутивах есть специальный инструмент для установки дополнительных драйверов. Откройте даш (Dash), впишите там «дополнительные драйверы» и запустите его. Он определит какие проприетарные драйверы доступны для вашего оборудования и предложит вам установить их. В Mint и Fedora используются другие утилиты, но установка и поиск драйверов в них не становится от этого сложнее.
Как установить драйвер принтера в Linux?
Возможно, вам понадобится установить драйвер принтера. Для этого при настройке CUPS (система печати в Unix-системах) вам необходимо будет выбрать драйвер принтера из базы данных. При этом, как правило, необходимо выбрать производителя и модель принтера.
Вы так же можете указать PPD файл для описани PostScript принтера. Этот файл можно найти в драйверах принтера под Windows, они совместимы. Укажите этот файл при настройке принтера в Linux.
Хороший совет наперед — перед покупкой принтера для работы с Linux, очень советую уточнить его наличие в базе данных CUPS.
Как заставить работать другое оборудование в Linux?
Иногда может потребоваться установить проприетарные драйверы оборудования, не представленные в вашем дистрибутиве Linux. Например, проприетарные драйверы от AMD и NVIDIA работают лучше своих свободных аналогов. Практически всегда это так.
Если что-то не работает в Linux «из коробки», а так же если не начинает работать даже после установки припроетарных драйверов от производителя, то скорее всего работать и не будет — устройство несовместимо с Linux или именно с вашим дистрибутивом.
Решением проблемы может стать обновление дистрибутива до нового, а так же обновление программного обеспечения (напр. команда apt-get upgrade в Ubuntu). Но нужно не забывать, что старые проприетарные драйверы не работают с новыми дистрибутивами и можно потерять работоспособность другого устройства.
Единого решения по установке «нестандартных» драйверов в Linux нет. В сети множество руководств. Поищите такое для вашего устройства. Скорее всего проблема уже была решена другими.
Related Posts
Благодаря Steam играть на Linux становится легче, доступнее и интереснее. В этой статье мы посмотрим…
Разберем процесс установки Minecraft на Ubuntu . Игра отлично работает на Linux. Но, может быть,…
Если вам нравится стилизация под старину, мониторы терминала в стиле Fallout, то обратите внимание на…
Мы уже ранее объясняли, почему драйверы для линукса не нужно устанавливать отдельно. Linux автоматически определит…
Если при попытке подключить в UBUNTU флешку или внешний HDD с файловой системой exFAT вы…
Оригинал: "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 для каждого устройства по умолчанию поддерживается только одна конфигурация. Для каждой конфигурации в устройстве может быть один или несколько интерфейсов. Интерфейс соответствует функции, предоставляемой устройством.
Интерфейсов может быть столько, сколько есть функций, предоставляемых устройством. Так, скажем, устройство МФУ 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-устройства ( pen_register.ko )" — утешил Пагс.
Как и в любом другом Linux-драйвере, здесь также требуется конструктор и деструктор — используется тот же самый шаблон драйвера, который использовался для всех драйверов. Но содержимое будет другим, поскольку это драйвер слоя аппаратного протокола, т.е. горизонтальный драйвер в отличие от символьного драйвера, который был одним из вертикальных драйверов, рассмотренных ранее. Разница лишь в том, что вместо регистрации и отмены регистрации в VFS, здесь это должно выполняться на уровне соответствующего протокола — в данном случае — в ядре USB; вместо того, чтобы предоставлять интерфейс пользовательского пространства, например, файл устройства, он должен подключиться к реальному устройству в пространстве аппаратных средств.
Интерфейсы API для ядра USB выглядят следующим образом (прототип в <linux/usb.h> ):
В структуре usb_driver в соответствующих полях должны быть указаны имя устройства, идентификационная таблица, используемая для автообнаружения конкретного устройства, и две функции обратного вызова, которые вызываются ядром USB при горячем подключении и отключении устройства, соответственно.
Собираем все вместе в файл pen_register.c , который будет выглядеть следующим образом:
Затем можно повторить обычные шаги, выполняемые для любого Linux драйвера:
- Собираем драйвер (файл .ko ) с помощью запуска команды make .
- Загружаем драйвер с помощью команды insmod .
- Выдаем список загруженных модулей с помощью команды lsmod .
- Выгружаем драйвер с помощью команды rmmod .
Но, что удивительно, результат не будет таким, как ожидалось. Используйте команду dmesg и загляните в директорий proc для просмотра различных журналов и прочих подробностей. Это связано не с тем, что драйвер USB отличается от символьного драйвера, - здесь есть одна проблема. На рис.3 показано, что у флэш-устройства есть один интерфейс (с номером 0), который уже связан с обычным драйвером usb-storage.
Теперь, для того, чтобы связать наш драйвер с этим интерфейсом, нам нужно выгрузить драйвер usb-storage (т. е. выполнить команду rmmod usb-storage ) и переподключить флэш-накопитель. Как только это будет сделано, результаты станут такими, как ожидалось. На рис.5 показан фрагмент информации из журналов и из директория proc . Снова подключите и отключите (в горячем режиме) флеш устройство и пронаблюдайте, как действуют вызовы probe и disconnect.
Рис.5: Флеш устройство в действии
Подведем итог
"Наконец-то! Что-то действует!" - облегченно сказала Светлана. "Но мне кажется, что для того, чтобы собрать полный драйвер устройства USB, здесь есть еще много того, с чем следует разбираться (например, с идентификационной таблицей, обратными вызовами probe и disconnect и т. д.)".
"Да, ты права. Давай разбираться со всем по порядку и с перерывами " - ответил Пагс, прервав самого себя.
Вообще говоря, в Ubuntu по умолчанию присутствуют все необходимые драйверы для всех поддерживаемых устройств. Однако для некоторых устройств существуют так же проприетарные драйверы от производителя, которые из-за забористых лицензий необходимо устанавливать отдельно.
Что бы посмотреть список доступных для вашей системы проприетарных драйверов зайдите в меню Система-Администрирование-Драйверы устройств. У вас должно быть рабочее подключение к интернету, поскольку поиск драйверов происходит именно в нём. После поиска система покажет вам список всех доступных драйверов, в моём случае он выглядит так:
Вполне возможно, что для вашей системы вообще не будет найдено никаких драйверов, это ни в коем случае не значит, что всё плохо, а означает лишь, что ваше оборудование поддерживается напрямую Ubuntu, и для него не надо устанавливать дополнительных закрытых компонентов.
Но если вам всё-таки нужны какие-то дополнительные драйвера, то вам осталось только выбрать нужный драйвер из списка и нажать на кнопку «Активировать» внизу окна, после чего начнётся установка.
После установки вам возможно придётся перезагрузить компьютер, о чём вам сообщит система, показав значок перезагрузки рядом с только что установленным драйвером:
Чаще всего нужно устанавливать драйвера для видеокарт, но иногда есть драйвера и для других устройств. Однако учтите, что если ваше оборудование и так работает хорошо на встроенных в Ubuntu драйверах, то устанавливать проприетарные компоненты смысла не имеет, мало того, в некоторых случаях это может даже привести к возникновению проблем.
Кроме того, к сожалению, до сих пор встречаются случаи, когда из-за некорректной по отношению к конечному пользователю политики производителей оборудования драйверов для определённых устройств в Ubuntu нет и получить их через программу поиска так же нельзя. В этом случае стоит попробовать поискать в интернете, зачастую существуют сторонние драйвера, которые можно установить вручную. Либо же обратиться в техподдержку производителя, попросив у них хотя бы необходимую для работы устройства документацию, называемую спецификациями, при наличии спецификаций огромное количество программистов с радостью напишут для вас всё необходимое для работы вашего устройства.
Не пугайтесь, если вы только ещё планируете поставить Ubuntu и читаете эту статью, большинство устройств работает в Ubuntu что называется «из коробки», то есть сразу после установки безо всяких дополнительных манипуляций. И с каждым новым выпуском Ubuntu остаётся всё меньше и меньше неподдерживаемых устройств, сейчас уже это в подавляющем большинстве отдельные модели периферии, то есть подключаемых дополнительных устройств вроде принтеров или сканеров. Но перед покупкой нового оборудования стоит всё-таки воспользоваться поиском и посмотреть, поддерживается ли желаемое устройство в Linux, потому что шанс нарваться на неподдерживаемое «железо» всё-таки есть.
Что ж, это пожалуй вся информация про драйвера. Поэтому вернёмся к описанию дополнительно программного обеспечения, осталось упомянуть ещё пару маленьких, но полезных программ:
В настоящее время при работе с операционными системами подразумевается, что она всегда подключена к Интернету. Поэтому диски с драйверами сетевых карт больше не входят в комплект при продаже. И может возникнуть ситуация, что невозможно установить драйвер устройства, поскольку нет сетевого соединения, а сетевого соединения нет, потому что невозможно установить драйвер устройства. Рассмотрим несколько способов, как вырваться из этого замкнутого круга.
1. Использование проводного соединения
Если вы не можете настроить Wi-Fi подключение, то соедините компьютер с роутером проводом. Обычно Ethernet кабели уже входят в комплект роутеров. Есть высокий шанс, что ваш Linux поддерживает чипсет Ethernet гнезда и он работает без дополнительных пакетов. Обычно проводные соединения не требуют особой настройки.
2.Подключить USB адаптер для которого драйвера присутствуют в ядре Linux
Подойдёт практически любой USB адаптер кроме самых экзотических — в ядре Linux есть драйвера практически для всего. То есть вы получите Интернет и сможете сделать обычную установку.
3. Офлайн установка пакетов
На Linux с Интернетом вы можете скачать пакеты вручную:
А затем установить их на компьютере без Интернета:
В теории это всего две команды, но на практике возможны следующие проблемы:
Чтобы пакеты подошли, дистрибутив, на котором вы скачиваете должен быть таким же и такой же версии, где вы затем будете устанавливать пакеты. Иначе вам нужно искать ссылки для каждого пакета для вашего дистрибутива и скачивать вручную
У каждого из этих пакетов могут быть зависимости, а у тех зависимостей могут быть другие зависимости…
В общем, посмотреть зависимости можно командой:
Или вариант попроще, запустите команду (делать установку необязательно):
и посмотрите, какие пакеты будут предложены для установки. Скопируйте названия этих пакетов и загрузите с помощью «apt download».
4. Установка пакетов с Live или установочного диска
В репозиториях в качестве источника пакетов нужно прописать CD диск.
Для этого выполните команду:
Если, например, вы добавляете образ Wheezy, будет сгенерирован следующий результат:
Читайте также: