- Как в Linux посмотреть подключенные USB устройства
- Просмотр списка имен USB устройств с помощью команды df
- Список имен подключенных USB — устройств с помощью команды lsblk
- Список USB — устройств с помощью команды fdisk
- Список сведений о подключенных USB-устройствах с помощью команды lsusb
- Список USB контроллеров и устройств, использующих USB устройства
- Заключение
- Linux и USB-устройства
- 1. Общие сведения о шине USB.
- 2. Поддержка USB-устройств в Linux
- 3. USB-мышь в Linux
- 4. Flash-диски
- 5. Цифровые фотоаппараты
- Замечания и дополнения от читателей.
Как в Linux посмотреть подключенные USB устройства
В настоящее время многие компьютерные периферийные устройства, такие как веб-камеры, мыши, сканеры, принтеры, жесткие диски, USB (Pendrive) подключаются по USB. После того, как эти устройства подключены к рабочему столу или серверу, важно знать имя устройства или путь к нему. Это помогает идентифицировать USB устройства для таких задач, как форматирование или отключение.
В Linux все файлы устройств хранятся в каталоге /dev и должны быть доступны во время загрузки системы.
В этой статье я покажу вам различные способы как в ubuntu посмотреть usb устройства. Большинство команд, упомянутых здесь, должны работать практически на всех дистрибутивах Linux. Например Ubuntu, Debian, Mint.
Просмотр списка имен USB устройств с помощью команды df
Команда df — это полезная команда, которая может помочь составить список всех подключенных томов, включая USB-накопители.
Как только USB-устройство подключается в систему Linux, это устройство автоматически монтируется в раздел /media и становится готовым к использованию.
Из приведенного выше вывода следует, что у меня есть 1 USB-накопитель /dev/sdb с 2 разделами /dev/sdb1 и /dev/sdb2
Список имен подключенных USB — устройств с помощью команды lsblk
Команда Lsblk используется для перечисления всех блочных устройств в системе Linux. Из списка можно фильтровать USB-устройства с помощью команды grep.
Чтобы получить дополнительную информацию, такую как UUID, производитель и тип файловой системы, используйте команду blkid, как показано на рисунке ниже.
Список USB — устройств с помощью команды fdisk
Вы можете использовать старую добрую команду fdisk, которая используется для разбиения томов на разделы, чтобы перечислить все разделы в системе Linux, включая USB-накопители.
Запятая будет отображать подробную информацию о вашем USB-томе, включая разделы , размер тома, секторы и тип файловой системы.
Список сведений о подключенных USB-устройствах с помощью команды lsusb
Команда lsusb, также известная как команда “List USB”, используется в Linux для перечисления всех USB-устройств, подключенных к системе.
На выводе выше отображается идентификатор шины, идентификатор устройства, идентификатор USB, а также поставщик или производитель USB-устройств
Команда lsusb перечисляет подключенные устройства и не предоставляет дополнительной информации о USB-устройствах.
Для получения дополнительной информации о подключенных USB устройствах используйте команду dmesg. Команда dmesg, также известная как “сообщение драйвера” или “показать сообщение”, используется для проверки загрузочных сообщений. Кроме того, эта команда используется для отладки проблем, связанных с оборудованием и печати сообщений, генерируемых драйверами устройств.
Вы можете использовать команду dmesg и grep, чтобы сузиться до USB-устройств.
Кроме того, вы можете передать вывод команды dmesg в less для облегчения прокрутки.
На выходе вы можете найти определенную строку, нажав клавишу прямой косой черты ( / ) на клавиатуре, а затем имя или идентификатор устройства USB-устройства.
В моем случае я ищу дополнительную информацию о USB устройстве под названием SanDisk.
Поиск USB-накопителя
Список USB контроллеров и устройств, использующих USB устройства
Команда usb-devices-это сценарий оболочки, который позволяет вам перечислить все USB-контроллеры и USB-устройства, подключенные к вашему компьютеру. Он печатает детали USB-устройства, такие как производитель, название продукта, серийный номер и многое другое. Вот вывод команды:
Заключение
В этой статье мы продемонстрировали различные способы просмотра USB-устройств, подключенных к системе Linux.
Источник
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», которая, в общем-то, позволяет работать с такими устройствами более свободно и безопасно (с точки зрения забывчивости).
—
Лучшие пожелания, Андрей
Источник