- 16 команд для проверки аппаратной части компьютера в Linux
- Информация о комплектации компьютера
- 1. lscpu
- 2. lshw – список аппаратных устройств
- 3. hwinfo – информация об аппаратуре компьютера
- 4. lspci – список устройств PCI
- 5. lsscsi — список устройств scsi
- 6. lsusb – подробный список шин и устройств usb
- 7. Inxi
- 8. lsblk — список блочных устройств
- 9. df – дисковое пространство файловых систем
- 10. Pydf – команда df, написанная на языке Python
- 11. fdisk
- 12. mount
- 13. free – проверка оперативной памяти
- 14. dmidecode
- 15. Файлы /proc
- 16. hdparm
- Заключение
- USB устройства
- Модуль поддержки USB устройств в Linux
- Отображение подключенных USB устройств
- Подключение USB устройства на лету
- Получаем информацию об оборудовании в Linux
- Информация о процессоре (CPU)
- Информация о PCI устройствах (информация о видео-карте)
- Информация об оперативной памяти (ОЗУ)
- Информация о жестких дисках
- Информация о USB устройствах и шинах USB
- Неконсольные программы
- Дополнительная информация
- Linux и USB-устройства
- 1. Общие сведения о шине USB.
- 2. Поддержка USB-устройств в Linux
- 3. USB-мышь в Linux
- 4. Flash-диски
- 5. Цифровые фотоаппараты
- Замечания и дополнения от читателей.
16 команд для проверки аппаратной части компьютера в Linux
Информация о комплектации компьютера
Точно также, как для всего прочего, в вашей системе Linux есть много команд для получения информацию об аппаратной части вашего компьютера. Некоторые команды сообщают информацию только о конкретных компонентах оборудования, например, процессоре или памяти, а другие — выдают информацию сразу о нескольких устройствах.
В данной статье кратко рассказывается о нескольких наиболее часто используемых командах, предназначенных для получения информации и особенностях настройки различных периферийных устройств и компонентах компьютера. Среди рассматриваемых — команды lscpu, hwinfo, lshw, dmidecode, lspci и другие.
1. lscpu
Команда lscpu выдает информацию о процессоре и его составляющих. В ней нет каких-либо дополнительных параметров или функциональных возможностей.
2. lshw – список аппаратных устройств
Утилита общего назначения, которая сообщает подробную и краткую информацию о нескольких различных аппаратных устройствах, таких как процессор, память, диск, контроллеры usb, сетевые адаптеры и т.д. Команда lscpu извлекает информацию из различных файлов /proc.
Если вы хотите больше узнать о команде lshw, то обратите внимание на пост Получаем интфомацию в Linux об аппаратных частях компьютера с помощью команды lshw .
3. hwinfo – информация об аппаратуре компьютера
Утилита hwinfo является еще одной универсальной утилитой зондирования аппаратуры, которая может сообщить подробную и краткую информацию о многих различных аппаратных компонентах, причем может сообщить больше, чем утилита lshw.
4. lspci – список устройств PCI
Команда lspci выдает список всех шин PCI, а также подробную информация об устройствах, которые к ним подключены. Под эту категорию подпадают следующие устройства — адаптер vga, графическая карта, сетевой адаптер, порты usb, контроллеры sata и т.д.
Отфильтруйте информацию о конкретном устройстве с помощью команды grep.
5. lsscsi — список устройств scsi
Выдается список устройств scsi/sata, например, жестких дисков и оптических приводов.
6. lsusb – подробный список шин и устройств usb
Эта команда показывает информацию о контроллерах usb и подробные сведения о подключенных к ним устройствах. По умолчанию выдается краткая информация. Для того, чтобы о каждом порте usb получить подробную информацию, используйте параметр «-v».
В системе, информация о которой приведена выше, один порт usb используется для подключения мыши.
7. Inxi
Inxi является мега скриптом bash, состоящим из 10000 строк кода, с помощью которого из разных источников и команд системы будет получена подробная информация об аппаратном обеспечении и будет создан отчет в виде, позволяющим его читать пользователям, которые не являются техническими специалистами.
8. lsblk — список блочных устройств
Перечисляется информация о всех блочных устройствах, которыми являются разделы жестких дисков и других устройств хранения данных, например, оптических приводов и флэш-накопителей
9. df – дисковое пространство файловых систем
Отчеты о различных разделах, об их точках монтирования и о том, сколько в каждом разделе есть свободного места.
10. Pydf – команда df, написанная на языке Python
Улучшенный вариант команды df , написанной на языке python, который выдает информацию в цвете, что выглядит лучше, чем информация, выдаваемая командой df
11. fdisk
Fdisk является утилитой, предназначенной для изменения разделов жестких дисков, и ей также можно пользоваться для получения информации о списке имеющихся разделов.
12. mount
Команда mount используется для монтирования/демонтирования, а также для просмотра смонтированных файловых систем.
Опять же, используйте команду grep для отфильтровывания информации только о тех файловых системах, которые вам интересны
13. free – проверка оперативной памяти
С помощью команды free проверьте объем используемой, свободной и общий объема оперативной памяти, имеющейся в системе.
14. dmidecode
Команда dmidecode отличается от всех других команд. Она извлекает информацию об оборудовании, читая для этого данные из структур данных SMBOIS (которые также называются таблицами DMI).
Подробности смотрите на странице man.
15. Файлы /proc
Во многих виртуальных файлах каталога /proc содержится информация об аппаратном обеспечении и о конфигурациях. Ниже приведены некоторые из них.
Информация о процессоре/памяти
Информация о Linux/ядре
16. hdparm
Команда hdparm получает информацию об устройствах sata, например, жестких дисков.
Заключение
В каждой из команд используется чуть-чуть иной способ извлечения информации, и вам для, чтобы получить определенную информацию об оборудовании, возможно, потребуется попробовать более одной команды. Но все они есть в большинстве дистрибутивов Linux и их легко можно установить из репозиториев, используемых по умолчанию.
Для тех, кто не хочет запоминать и вводить команды, на рабочем столе есть графические инструментальные средства. Hardinfo и I-nex — некоторые из популярных инструментальных средств, с помощью которых можно получить подробную информацию о большом количестве различных аппаратных компонентов.
Источник
USB устройства
USB — Universal Serial Bus (Универсальная последовательная шина) была разработана консорциумом компаний с целью предоставить единственную, простую шину для подключения периферии.
Дизайн USB позволяет устройствам подключаться на лету, используя для подключения стандартные гнезда. USB устройства включают в себя: клавиатуры, мыши, принтеры, сканеры, жесткие диски, флэш-драйвы, камеры, модемы, сетевые адаптеры и колонки, а их список постоянно растёт.
Имеющаяся в Linux поддержка USB устройств достаточно всеобъемлюща, но ряд устройств требуют специальных драйверов, а другие, преимущественно принтеры и сканеры, могут не поддерживаться или поддерживаться лишь частично.
Компьютерные системы могут содержать один или более контроллеров или хабов, предназначенных для подключения USB устройств или другого (внешнего) хаба. Хаб может поддерживать до 7 устройств, которые, в свою очередь, могут иметь дополнительные хабы. Хаб внутри системного блока называется root hub (корневой хаб). Каждая такая звездоподобная топология может поддерживать до 127 хабов или устройств.
Говоря USB порт, мы подразумеваем возможность поддержки USB в компьютере и гнездо для подключения, а не внутренний адрес порта, используемый устройством.
Многослойность USB системы позволяет хосту определить характеристики USB устройства, включая класс, имя производителя, имя устройства, требования к напряжению, скорость, уровень поддержки USB и другие функции.
Модуль поддержки USB устройств в Linux
USB устройства в настоящее время полностью поддерживаются в Linux. Большая часть изменений проявилась в ветке ядра 2.6, хотя определённая поддержка имелась даже в ядрах 2.2. Linux поддерживает как USB 2.0, так и ранние спецификации. Ввиду подключения на лету (горячего подключения), заложенной в самой природе USB, поддержка обычно производится посредством модулей ядра, которые могут загружаться или выгружаться по необходимости.
Команда lspci позволяет отобразить USB устройства:
Вывод команды показывает, что в системе имеются 3 USB контроллера.
С помощью команды lsmod можно отобразить загруженные USB модули:
Отображение подключенных USB устройств
Сводная информация о подключенных в настоящее время USB устройствах содержится в файле /proc/bus/usb/devices.
Вывести её можно следующей командой:
В листинге Spd=480 соответствует шине USB 2.0, а Spd=12 — устройствам USB 1.1. Далее в списке видно, что к системе в настоящее время подключено 1 USB устройство — Microsoft Natural Ergonomic Keyboard 400 (Spd=1.5).
На этой клавиатуре я, естественно, и набираю данный текст.
Иерархию подключения USB устройств позволяет увидеть команда lsusb с опцией -t:
Вывод информации о конкретном USB устройстве можно получить следующей командой:
Подключение USB устройства на лету
Новые системы Linux имеют поддержку подключения USB устройств на лету (горячее подключение), что подразумевает подключение устройства к работающей системе, которая должна:
- определить тип USB устройства, найти драйвер и запустить его;
- связать драйвер с устройством;
- уведомить о USB устройстве другие подсистемы.
Источник
Получаем информацию об оборудовании в Linux
Рассмотрим несколько полезных команд и утилит с помощью которых можно получить информацию об оборудовании в Linux. Такая потребность возникает, например, тогда, когда вам нужно установить драйвер для какого-нибудь устройства компьютера и вам нужно знать его точное название. Или, например, вы хотите получить информацию о занимаемой памяти или ресурсах компьютера.
Информация о процессоре (CPU)
Получить всю необходимую информацию о центральном процессоре в Linux можно выполнив в терминале команду:
Чтобы определить является ли ваш процессор 32-х или 64-битным нужно просмотреть флаги, которые указаны в выводе команды. Если среди флагов присутствует lm (long mode), это означает, что ваш процессор 64-битный. Например, при выполнении команды cat /proc/cpuinfo мы можем получить следующие флаги:
Информация о PCI устройствах (информация о видео-карте)
С помощью команды lspci можно вывести всю информацию о PCI устройствах:
Эту команду часто используют, чтобы получить информацию о видео-карте. Так как вывод команды lspci достаточно большой, то можно воспользоваться командой grep, чтобы задать условие поиска. Например, если мы знаем, что у нас видео-карта от Nvidia, тогда можно воспользоваться командой:
И в результате получить что-нибудь вроде:
Обратите внимание на то, что команда grep чувствительна к регистру символов и поэтому, если вы с первого раза не нашли то, что искали, то стоит попробовать другое написание, например, nvidia, NVIDIA или просто idia. Аналогично можно искать информацию в выводе любых других команд, добавляя к команде: «| grep строка-поиска.
Информацию о версии драйвера для видео-карт Nvidia в Linux можно получить выполнив:
Информация об оперативной памяти (ОЗУ)
Чтобы получить информацию об объеме, а также о количестве свободной и занятой оперативной памяти можно воспользоваться командой:
Информацию о виртуальной памяти можно получить командой vmstat:
Если вам нужна более детальная информация о процессах, занимающих оперативную память, о загруженности процессора (CPU), тогда можно использовать утилиты Top или htop. Утилита top как правило всегда присутствует в Linux. Для ее запуска просто выполните:
Информация о жестких дисках
Информация о разделах жесткого диска в Linux:
Информация о монтированных разделах, количество свободной и занятой памяти:
Есть еще одна полезная команда du, которая выводит информацию о размере каждого файла в текущей и во вложенных директориях. Если вы хотите получить информацию обо всех файлах в текущей директории выполните команду без параметров:
В качестве параметра можно задать имя файла, например, чтобы узнать размер файла abc.bin выполните:
Информация о USB устройствах и шинах USB
Для вывода информации о шинах USB и о подключенных USB устройствах используется команда lsusb:
Неконсольные программы
Рассмотрим несколько графических программ, которые помогут при работе с оборудованием.
В среде рабочего стола Gnome есть графическая утилита System monitor (Системный монитор). Она выводит информацию об использовании процессора, о запущенных процессах (приложениях), информацию о жестких дисках, а также выводит графики, включая использование сети. Из командой строки ее можно запустить выполнив:
Для работы с жесткими можно воспользоваться программой GParted.
Дополнительная информация
Напоследок обязательно стоит упомянуть об очень важной команде lshw, которая выводит практически всю информацию о вашем компьютере. Команду lshw нужно запускать под пользователем root:
Чтобы вывести краткую информацию используется ключ -short:
Получить более подробную информацию о командах, описанных в статье, можно используя справочную систему Linux. Для этого в консоли нужно выполнить:
Например, чтобы получить всю информацию о команде du, выполните команду:
Источник
Linux и USB-устройства
(C) В.А.Костромин, kos @ rus-linux dot net
1. Общие сведения о шине USB.
У любого компьютера, выпущенного в последнее время, вы обязательно обнаружите либо на лицевой панели, либо на задней стенке разъем USB. Шина USB (Universal Serial Bus) первоначально была разработана для обеспечения легкого подключения компьютера к телефонным линиям и расширения числа портов. Первая версия стандарта (версия 1.0) была выпущена в январе 1996 года. Сейчас в основном используется версия 1.1. Устройства этой версии обычно помечены значком, изображенным на рис.1. Стандарт USB 1.1 вполне удовлетворяет всем требованиям при работе с низко-скоростными устройствами, вроде мышей и клавиатур, и даже с устройствами, работающими на средних скоростях, вроде Ethernet-адаптеров (10 Mbit/sec) или устройств бытовой электроники (таких, как цифровые камеры и MP3-плейеры), которые пересылают только несколько мегабайт данных. Но если на периферийное устройство или в обратном направлении необходимо пересылать большие объемы информации (примеры — жесткие диски, видеокамеры высокого разрешения, или одновременное использование нескольких сетевых адаптеров стандарта 100BaseT), то скорости, обеспечиваемые USB 1.1, уже недостаточны. Поэтому в 1999 году была разработана версия 2.0 стандарта USB, обеспечивающая более высокие скорости обмена данными. Значок, которым помечаются USB-устройства версии 2.0, изображен на рис. 2.
Рис. 1. Эмблема USB-устройств версии 1.1
Рис. 2. Эмблема USB-устройств версии 2.0
Современные компьютеры обычно имеют контроллер USB-шины, установленный на материнской плате. Для USB версии 1.1 было разработано два типа таких контроллеров, отличающихся интерфейсом взаимодействия с USB-устройствами: OHCI (Open Host Controller Interface) фирмы Compaq и UHCI (Universal Host Controller Interface) фирмы Intel. Оба типа имеют примерно одинаковые возможности и USB-устройства работают с обоими типами контроллеров. Аппаратная часть UHCI-контроллеров проще, а значит, они дешевле, но зато требуют более сложных драйверов, что увеличивает нагрузку на процессор. Версия 2.0 стандарта USB использует улучшенный вариант интерфейса — EHCI (Enhanced Host Controller Interface).
Стандарт USB предусматривает строгую иерархию устройств, управляемых основным хостом, и использование протокола master/slave для управления подключаемыми устройствами. На один USB-разъем могут быть последовательно подключены до 127 устройств. Но непосредственно подключать одно устройство к другому нельзя, поскольку питание таких устройств осуществляется по той же шине. Поэтому для подключения дополнительных устройств используются специальные хабы, обеспечивающие снабжение этих устройств необходимой энергией. В результате USB-устройства образуют как бы дерево, каждая не конечная вершина которого является хабом. Поскольку любой обмен данными инициируется только хостом, и периферийные устройства не могут начать взаимодействие, исключена возможность коллизий, вследствие чего снижается стоимость устройств. Правда, такое решение приводит к некоторому снижению производительности. В результате USB-устройства версии 1.1 могут работать в двух режимах: так называемом low speed, обеспечивающем скорость передачи данных до 1.5 Mбит/сек, и full speed, в котором скорость передачи данных может составлять 12 Мбит/сек. Это только теоретический предел, а реально производительность шины даже в идеальных условиях не превышает 8,5 Мбит/сек., а в среднем составляет около 2 Мбит/сек.
Интерфейс EHCI, используемый в устройствах версии 2, обеспечивает режим работы high speed, для которого скорость передачи данных может достигать 480 Мбит/сек. Для того чтобы USB-устройства могли обмениваться данными с такой скоростью, и хост-контроллер и само устройство должны соответствовать стандарту USB 2.0 и обеспечивать работу с интерфейсом EHCI. Однако хост-контроллеры 2.0 успешно работают с устройствами версии 1.1. И наоборот, вы вполне можете подключать устройства USB 2.0 к хосту (и к хабам) версии USB 1.1 и они будут прекрасно работать, но . со скоростью не более 12, а не 480 Мбит/сек.
В настоящее время разработан широкий спектр устройств, подключаемых по шине USB. Это клавиатуры, мыши, джойстики, игровые приставки, сканеры, модемы, принтеры, цифровые камеры, устройства хранения информации – дисководы гибких и жестких дисков, дисководы Zip, LS120 и CD-ROM. Очень перспективный и интересный класс таких устройств образуют накопители на основе Flash-памяти. Объем статьи не позволяет рассказать о каждом из этих типов устройств, так что ограничимся рассмотрением USB-накопителей (в частности Flash-дисков и цифровых фотокамер). Но вначале рассмотрим общие вопросы, что, надеюсь, позволит вам справиться и с другими типами устройств.
2. Поддержка USB-устройств в Linux
Для того чтобы работать с USB-устройствами под Linux, должны выполняться несколько условий. Во-первых, USB-устройства должны поддерживаться на аппаратном уровне, то есть на материнской плате должен быть установлен USB-контроллер. Определить его наличие можно по характерным разъемам, обычно расположенным на задней стенке системного блока. Тип интерфейса этого контроллера вы можете определить с помощью команды
[user]$ /sbin/lspci –v
Направьте вывод этой команды в файл и просмотрите результат. Для каждого из установленных у вас контроллеров вы найдете примерно такие строки:
00:1f.2 USB Controller: Intel Corp. 82801BA/BAM USB (Hub (rev 05) (prog-if 00 [UHCI])
Subsystem: Intel Corp. 82801BA/BAM USB (Hub
Flags: bus master, medium devsel, latency 0, IRQ 11
I/O ports at d000 [size=32]
Как видите, в моем компьютере стоит USB-контроллер с интерфейсом UHCI, а следовательно, версии 1.1.
Теперь перейдем к программной части. Как и для любой другой аппаратуры, у вас должна быть реализована поддержка USB в ядре. Если вы используете ядро, скомпилированное разработчиком, то такая поддержка, скорее всего, обеспечена. Полноценная поддержка USB версии 1.1 включается в ядро, начиная с версии 2.2.18. Если хост-контроллер вашего компьютера соответствует версии 2.0 стандарта USB, вы должны иметь ядро, версия которого не ниже 2.4.19, и использовать драйвер EHCI.
Если же вы сами компилируете ядро для своей системы, вы должны включить поддержку USB либо непосредственно в ядро, либо в подключаемые модули ядра. Для этого при компиляции надо задать следующие опции в секции поддержки USB (либо подключить соответствующие модули):
Поддержка USB (CONFIG_USB, usbcore.o)
Подключение USB-драйверов (выберите нужный драйвер из следующего списка):
ECHI HCD (CONFIG_USB_EHCI_HCD, ehci-hcd.o)
UHCI (CONFIG_USB_UHCI, usb-uhci.o)
OHCI (CONFIG_USB_OHCI, usb-ohci.o)
Поддержка USB-накопителей (CONFIG_USB_STORAGE, usb-storage.o).
Во-вторых, поскольку взаимодействие с USB осуществляется путем эмуляции SCSI, должны быть включена и поддержка SCSI-устройств, для чего должны быть включены следующие опции в секции поддержки SCSI (либо подключены указанные модули):
Поддержка SCSI (CONFIG_SCSI, scsi_mod.o)
Поддержка SCSI-дисков (CONFIG_BLK_DEV_SD, sd_mod.o)
SCSI generic support (CONFIG_CHR_DEV_SG, sg.o)
Включен опрос всех LUN на каждом SCSI-устройстве (CONFIG_SCSI_MULTI_LUN).
В третьих, в секции файловых систем должна быть включена поддержка файловых систем, используемых USB -устройствами:
DOS FAT (CONFIG_FAT_FS, fat.o)
MSDOS (CONFIG_MSDOS_FS, msdos.o)
VFAT (CONFIG_VFAT_FS, vfat.o)
Ну, и наконец, для конкретных типов устройств должна быть включена поддержка соответствующих устройств. Например, для клавиатуры, мыши, джойстика необходимо включить поддержку USB Human Interface Device (HID) , для сканера включить опцию USB Scanner support , для модема — USB Modem (CDC ACM) support , для принтера — USB Printer support , и так далее.
Для работы с USB-устройствами динамически генерируется виртуальная файловая система, являющаяся частью файловой системы /proc , и располагающаяся в каталоге /proc/bus/usb. Генерация такой системы выполняется из инициализационных скриптов при загрузке системы. В дистрибутиве Red Hat версии 9, например, такая генерация происходит при выполнении скрипта /etc/rc.d/rc.sysinit, в котором имеется следующая команда:
mount -t usbdevfs none /proc/bus/usb
Одновременно загружаются модули usbcore, usb-uhci, hid и производится инициализация usb-контроллеров.
В некоторых случаях монтирование может осуществляться путем прописывания в файле /etc/fstab строки вида:
none /proc/bus/usb usbdevfs defaults 0 0
или же путем выполнения от имени root-а команды:
[root]# mount -t usbdevfs none /proc/bus/usb
и запуска необходимых модулей командой modprobe.
Теперь давайте посмотрим, как в работающей системе проверить, обеспечена ли поддержка USB. Существует несколько точек, в которых отображаются такие сведения (я не могу гарантировать, что сумею перечислить все такие точки, но упомянутых достаточно для того, чтобы убедиться, что USB работает).
Начнем с файла /var/log/dmesg, содержащего протокол начальной загрузки. Проведите в нем поиск по шаблону “usb”. Я, например, увидел там строки, говорящие, что загружены драйверы usbdevfs и usb-uhci, поддерживаются два порта и драйвер hid (хотя у меня и мышь и клавиатура обычные, не-USB).
Запустив далее команду /sbin/lsmod, я увидел, что загружены модули usb-storage, usbcore, usb-uhci и hid.
Теперь давайте заглянем в каталог /proc/bus/usb. Его содержимое должно выглядеть примерно так:
dr-xr-xr-x 1 root root 0 Jan 26 10:40 001
-r—r—r— 1 root root 0 Jan 26 10:40 devices
-r—r—r— 1 root root 0 Jan 26 10:40 drivers
Если у вас более одного USB-контроллера, вы увидите соответствующее число подкаталогов с цифровыми именами 002, 003 и так далее. Если каталог /proc/bus/usb пуст, это означает, что виртуальная файловая система поддержки USB не смонтирована или смонтирована не в тот каталог. В каждом из каталогов 001, 002 и так далее у вас пока (до подключения к шине каких-то устройств) должно быть всего по одному файлу, имя которого тоже представлено трехзначным числом. Эти числа являются уникальными номерами USB-устройств, и пока что задают только номера контроллеров. Содержимое этих файлов нас пока не интересует.
Файл /proc/bus/usb/drivers содержит список зарегистрированных на данный момент драйверов (даже если драйвер не используется никаким устройством). Я у себя увидел в этом файле три строки:
Прежде чем рассматривать содержимое файла /proc/bus/usb/devices, давайте посмотрим, что происходит при подключении к USB-шине какого-то устройства. В Linux имеется программа /sbin/hotplug, основное назначение которой состоит в том, чтобы уведомлять приложения о существенных изменениях в системе, в первую очередь – об изменениях в составе аппаратных средств. Программа эта запускается из инициализационных скриптов (конкретно, в скрипте /etc/rc.sysinit). Когда вы подключаете USB-устройство к какому-либо порту, ядро обнаруживает это событие и изменяет файл /proc/bus/usb/devices. Соответственно, и при удалении устройства этот файл тоже изменяется. Следовательно, в нем в каждый момент времени содержится информация о каждом устройстве, подключенном в текущий момент времени к USB-шине.
Каждому конкретному устройству соответствует группа строк в файле /proc/bus/usb/devices , начинающаяся со строки, обозначенной буквой T:.
Отдельные строки содержат следующую информацию:
Строка, начинающаяся с буквы T:, задает топологию.
Bus указывает, к какой шине подключено устройство.
Lev указывает уровень устройства, начиная с уровня 00 для корневого хаба (root hub). Уровень 01 соответствует любому устройству, подключенному к корневому хабу, уровень 02 соответствует устройствам, подключенным к хабу уровня 01, и так далее.
Prnt указывает на устройство, являющееся родительским по отношению к данному (всегда 00 для корневого хаба и 01 для устройств, подключенных к корневому хабу).
Port — порт на родительском устройстве, начиная с 00 для первого порта каждого устройства.
Значения Prnt и Port уникальны в пределах одной шины.
Cnt показывает, какой номер имеет данное устройство на своем уровне в соответствии с порядком перечисления устройств данного уровня, начиная с номера 01 для первого устройства.
Dev# указывает номер устройства безотносительно к уровню. Этот номер уникален в пределах одной шины.
Spd указывает, с какой скоростью работает устройство в Мбит/сек. (возможные значения для версии 1.1 USB — 1.5 или 12).
MxCh показывает, сколько устройств может быть подключено к данному устройству; это число равно 00 для всех устройств, кроме хабов.
Driver показывает, какой драйвер используется для этого устройства; если указано none, значит никакого драйвера не используется.
Строки, начинающиеся с букв D: и P:, содержат информацию из спецификации устройства и сведения о производителе.
Самые интересные для нас строки (таких строк может быть несколько) начинаются с буквы S:. Эти строки содержат наименование известных системе устройств и имена их производителей.
Другие строки мы здесь подробно разбирать не будем, при желании вы можете найти такое описание в USB Guide, либо в файле linux/Documentation/usb/proc_usb_info.txt .
Для примера приведу вид файла /proc/bus/usb/devices на одном из компьютеров, у которого имелся один USB-порт, и никаких USB-устройств подключено не было:
T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2
B: Alloc= 0/900 us ( 0%), #Int= 0, #Iso= 0
D: Ver= 1.00 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=0000 ProdID=0000 Rev= 0.00
S: Product=USB UHCI Root Hub
C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr= 0mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl=255ms
После подключения flash-диска в этом файле появились следующие дополнительные строки:
T: Bus=01 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 9 Spd=12 MxCh= 0
D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=0ea0 ProdID=6803 Rev= 1.00
S: Product=Solid state disk
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=100mA
I: If#= 0 Alt= 0 #EPs= 3 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E: Ad=81(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=83(I) Atr=03(Int.) MxPS= 2 Ivl=1ms
Как видите, содержимое файла /proc/bus/usb/devices позволяет достаточно точно определить, о каких USB-устройствах известно вашей системе. Однако, понять записи в этом файле без дополнительных разъяснений довольно сложно. Помочь в их расшифровке вам может программа usbview (разработчик — Greg Froah-Hartman, сайт программы — http://usbview.sourceforge.net). На рисунке 3 приведен вид окна этой программы. Как видите, прочитать информацию о подключенном к системе flash-диске с ее помощью несколько проще. Причем, устройство обнаруживается этой программой сразу после его подключения.
Рис. 3. Окно программы usbview
На этом изложение общих вопросов закончено, и можно перейти к рассказу о конкретном опыте работы с некоторыми из USB –устройств. Я расскажу здесь о своем опыте работы в Linux с тремя типами устройств: мышью, цифровым фотоаппаратом и накопителем на основе flash-памяти.
3. USB-мышь в Linux
После подключения USB-мыши к разъему в файле /proc/bus/usb/devices появились строки
T: Bus=01 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 2 Spd=1.5 MxCh= 0
D: Ver= 1.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=046d ProdID=c002 Rev= 1.20
S: Product=USB-PS/2 Mouse M-BA47
C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr= 50mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=03(HID) Sub=01 Prot=02 Driver=hid
E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl=10ms
Курсор сразу же начал реагировать как на перемещения основной мыши, так и дополнительной, подключенной через USB. Никаких дополнительных усилий для обеспечения работоспособности USB-мыши не потребовалось. Причем в OpenOffice даже работало колесико, прокручивая страничку. На случай, если у вас все же возникнут какие-либо сложности, приведу некоторые дополнительные сведения о настройке USB- мышей, заимствованные мной из литературных источников.
Во-первых, проверьте, что ссылка с именем /dev/mouse указывает на правильный порт. Если у вас USB-мышь, то /dev/mouse должна указывать на /dev/input/mice.
Далее убедитесь, что существует файл /etc/sysconfig/mouse, и что в нем записано что-то вроде:
Первые две строки определяют, какой протокол будет использоваться, соответственно, в текстовом и графическом режимах. Третья строка нужна в случае, когда у вас двух-кнопочная мышь и третья кнопка эмулируется одновременным нажатием двух имеющихся кнопок.
Протокол — это чисто программная характеристика мыши. У мышей, подключаемых через последовательный порт, обычно работает протокол “Microsoft” а мыши типа PS/2 используют протокол »PS/2». Для USB- мыши в качестве протокола можно тоже указать »PS/2».
В последнее время появились мыши с колесиком, которые обеспечивают скроллинг (прокрутку) при вращении колесика и в силу этого очень удобны при работе с некоторыми программами (например, с текстовым редактором из пакета OpenOffice или браузером Mozilla). Колесико мыши заменяет одновременно 3-ю, 4-ую и 5-ую кнопки мыши (нажатие на колесико равносильно нажатию 3-ей кнопки, вращение в одном направлении – 4-ая кнопка, в другом – 5-ая). Использоваться скроллинг может только в графическом режиме, причем пакет XFree86 должен быть версии не ниже 3.3.2, и то скроллинг будет работать не в каждом приложении. Для USB- мышей с колесиком надо выбирать протокол “IMPS/2”.
Чтобы мышь корректно работала в графическом режиме, необходимо правильно задать секцию InputDevice в файле XF86Config-4. Вот пример соответствующей секции для мыши с колесиком, подключаемой через USB- порт:
Option «Device» «/dev/mouse»
Option «Protocol» «IMPS/2»
Option «ZAxisMapping» «4 5»
Option «Emulate3Buttons» «no»
Отмечу, что для мыши с колесиком последняя строка («Emulate3Buttons» «no») является обязательной.
После этого в графических средах KDE и GNOME скроллинг будет работать по умолчанию в большинстве приложений, например, в браузере Mozilla и офисном пакете OpenOffice.org. В отдельных приложениях (например, в текстовом редакторе Nedit) для использования скроллинга требуется произвести некоторые изменения в конфигурационных файлах приложения. Подробнее о том, какие дополнения и куда необходимо вписать, вы можете узнать на страничке Colas Nahaboo — http://koala.ilog.fr/colas/mouse-wheel-scroll/ .
4. Flash-диски
Вторым устройством, которое я попытался подключить через USB-разъем, был накопитель на основе энергонезависимой flash-памяти. Такие устройства часто называют flash-дисками, что, конечно, не верно, но думаю, что такое название приживется. Как оказалось, работа с такими устройствами в Linux осуществляется достаточно просто. После подключения flash-диска к разъему USB светодиод на нем начинает периодически мигать. После этого (если поддержка USB ядром имеется) можно просто смонтировать flash-диск командой:
[root]# mount –t vfat /dev/sda1 /mnt/usb
А если в файле fstab прописать строку вида
/dev/sda1 /mnt/usb vfat users,codepage=866, iocharset=koi8-r 0 0
то монтировать USB-диск смогут все пользователи простой командой
[user]$ mount /mnt/usb
Когда происходит обращение к этому диску, частота мерцания светодиода на нем повышается.
Внимание! Имейте в виду, что вынимать смонтированный flash-диск из разъема нельзя – после этого он может сразу перестать читаться. Необходимо предварительно размонтировать устройство, дождаться, пока мерцание снова станет более редким, и только после этого flash-диск можно отключать от разъема. Если вы все же умудрились «испортить» ваш flash-диск некорректным отключением, то имейте в виду, что его работоспособность можно восстановить с помощью специальных утилит, поставляемых разработчиком flash-диска (только обычно такие утилиты предназначены для использования под ОС Windows).
5. Цифровые фотоаппараты
Третьим типом USB-устройств, с которыми мне довелось поработать, был цифровой фотоаппарат Olympus C120. Я полагаю, что на сегодняшний день цифровые фотоаппараты вообще являются одним из самых распространенных типов устройств, подключаемых к компьютеру по шине USB. Существует три типа подключения таких устройств к компьютеру. Некоторые аппараты имеют кабель, подключаемый к USB-порту компьютера. Второй конец такого кабеля подключается непосредственно к фотоаппарату посредством специального разъема. Второй тип фотоаппаратов не имеет на корпусе разъема для подключения кабеля, зато снабжаются специальным адаптером, в который вставляется извлеченная из фотоаппарата карта памяти. Адаптер уже подключается к компьютеру и производится перенос файлов изображений на жесткий диск (или их отправка по электронной почте и так далее). И, наконец, третий тип подключения – это PCMCIA-адаптеры, которые тоже служат для переноса изображений с извлеченной из фотоаппарата карты памяти. Такие адаптеры обычно применяются только для работы с лэптопами. Поскольку мне приходилось иметь дело только с аппаратом, имеющим USB-разъем, то я буду рассматривать только случай камеры первого типа.
После того, как вы убедитесь, что ваше ядро поддерживает стандарт USB, подключите камеру к компьютеру через USB-порт (питание аппарата должно быть включено!) и убедитесь в том, ядро «видит» камеру. Судить об этом можно по тому, что в файле /proc/bus/usb/devices появятся строки, аналогичные тем, которые вы видите ниже:
T: Bus=01 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 7 Spd=12 MxCh= 0
D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=07b4 ProdID=0105 Rev= 1.00
C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr= 0mA
I: If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
Если камера не обнаружилась, необходимо проверить настройки «/proc/bus/usb» и «usbdevfs» (смотри раздел 2 выше). Если же ядро обнаружило камеру, то ее можно смонтировать точно так же, как монтировался flash-диск.
Некоторые дополнительные сложности могут возникнуть в том случае, если вы работаете попеременно с flash-диском и с цифровым фотоаппаратом. Если вначале была подключена камера, то даже после вполне корректного ее отключения подключить flash-диск у меня вначале не получалось. Как ни старался, команда mount выдавала такую ответную реакцию:
mount: /dev/sda1 is not a valid block device
Проблема разрешилась, когда я стал монтировать первое устройство как /dev/sda1, а второе — как /dev/sdb1. Найти такое решение мне помог файл /etc/sysconfig/hwconf. Этот файл формируется утилитой kudzu на этапе загрузки системы и содержит информацию об имеющемся в системе оборудовании. После одной из очередных перезагрузок я заметил, что устройство определилось как sdb, после чего мне удалось его смонтировать (в режиме суперпользователя). Ну а дальше уже нашлись и способы облегчения процедур монтирования.
В заключение раздела приведу два коротких замечания.
Первое: в состав некоторых дистрибутивов (например, ASPLinux версии 7.3) входит программа gPhoto, которая позволяет организовать работу с цифровыми фотоаппаратами и теми коллекциями фотографий, которые у вас накопятся вскоре после приобретения такого аппарата. Но осваивать работу с этой программой вам придется самостоятельно.
Второе: учитывая, что в имевшемся у меня цифровом фотоаппарате использовалась съемная карта flash-памяти, я полагаю, что с подключением к Linux-компьютеру выпускаемых для работы с такими картами специальных устройств, – картоводов, проблем тоже не возникнет, ибо подключение таких устройств к компьютеру производится обычно тоже по шине USB.
Если у вас имеются поправки и дополнения к этой статье, я готов опубликовать их здесь после получения от вас письма на адрес kos (at) rus-linux (dot) net.
Замечания и дополнения от читателей.
Здравствуйте. В своей статье вы рекомендуете, отмонтировать usb-накопители прежде чем вытаскивать их из разъёма, чтобы не были потеряны данные и испорчен накопитель. Но не сказали об опции монтирования «sync», которая, в общем-то, позволяет работать с такими устройствами более свободно и безопасно (с точки зрения забывчивости).
—
Лучшие пожелания, Андрей
Источник