Обеспечение работы многокарточного USB Card Reader в Linux (usb hardware linux scsi)
Ключевые слова: usb , hardware , linux , scsi , (найти похожие документы )
From: Василий Гладкий <hot-orange@narod.ru. >
Date: Mon, 10 Mar 2005 18:21:07 +0000 (UTC)
Subject: Обеспечение работы многокарточного USB Card Reader в Linux
Оригинал: http://hot-orange.narod.ru/chtivo/card-reader.htm
Кард-ридер в линуксе. Mini-howto.
Вернулся я как-то с работы с Olympus E-10, камера есть такая. И
возникло у меня непреодолимое желание завести эту штуку под
Линуксом. В Win2000 даже драйвера не нужны, определяется сразу, как
съёмный диск, т.е. является кард-ридером. По идее там лежат
графические файлы, но можно и музыку таскать, и программы, и
вообще-любые файлы. Под линуксом сразу не заработало, пришлось
напрячь мозг...
Поехали!
* Я работал над этим документом в ASPLinux 7.2
* Надеюсь, что ваше ядро версии 2.4 или старше, собрано с включённой
поддержкой SCSI и USB. Если с этим всё в порядке, подключаем
устройство к порту USB и даём очень простою команду:
# modprobe usb-storage
Если модуль загрузился, значит всё в порядке. Теперь надо посмотреть
появилось ли у нас новое устройство SCSI, узнать это можно с помощью
небольшой утилиты sg3-utils (http://www.torque.net/sg/ ), а можно поступить
проще, я использовал такую команду:
# cdrecord -scanbus
:-) надеюсь вы увидили, что-нибудь типа этого:
Cdrecord 1.10 (i686-pc-linux-gnu) Copyright (C) 1995-2001 Jцrg Schilling
Linux sg driver version: 3.1.20
Using libscg version 'schily-0.5'
scsibus0:
0,0,0 0) 'TEAC ' 'CD-W58E ' '1.0A' Removable CD-ROM
0,1,0 1) *
0,2,0 2) *
0,3,0 3) *
0,4,0 4) *
0,5,0 5) *
0,6,0 6) *
0,7,0 7) *
scsibus1:
1,0,0 100) 'OLYMPUS ' 'E-10 ' '1.00' Removable Disk 1,1,0 101)
1,2,0 102) *
1,3,0 103) *
1,4,0 104) *
1,5,0 105) *
1,6,0 106) *
1,7,0 107) *
Также можно использвать команду:
# cat /proc/scsi/scsi
увидеть вы должны что-то такое:
Attached devices:
Host: scsi0 Channel: 00 Id: 00 Lun: 00
Vendor: TEAC Model: CD-W58E Rev: 1.0A
Type: CD-ROM ANSI SCSI revision: 02
Host: scsi1 Channel: 00 Id: 00 Lun: 00
Vendor: OLYMPUS Model: E-10 Rev: 1.00
Type: Direct-Access ANSI SCSI revision: 02
теперь надо смонтировать новое устройство, но сначала узнаем, где оно
находится дав команду:
# sg_map
Увидеть мы должны что-то такое:
/dev/sg0 /dev/scd0
/dev/sg1 /dev/sda
/dev/sda и есть наш флеш-диск. Стало быть первый раздел на нём будет
/dev/sda1, монтируем его:
# mount -t vfat /dev/sda1 /mnt/flash
Вот и всё! Ваш кард-ридер прикручен к системе. Что бы каждый раз не
загружать модуль usb-storage вручную, советую прописать его в hotplug
(конечно, если ваш hotplug ничего не знает об этом устройстве, о моём
знал :-)) Берём подходящую строку из /etc/hotplug/usb.distmap от
другого устройства usb-storage, заменяем в ней Product ID и Vendor ID
на соответствующие значения нашего устройства. Узнать Vendor ID и
Product ID можно c помощью утилиты USBView (http://usbview.sourceforge.net/ )
или команды:
# cat /proc/bus/usb/devices
T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 16 Spd=12 MxCh= 0
D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=07b4 ProdID=0102 Rev= 1.20
S: Manufacturer=OLYMPUS
S: Product=E-10
S: SerialNumber=1083046
C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr=100mA
I: If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E: Ad=01(O) Atr=02(Bulk) MxPS= 64 Ivl= 0ms
E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl= 0ms
Копируем модифицированную строку
usb-storage 0x0380 0x07b4 0x0102 0x0000 0x0000 0x00 0x00 0x00 0x08 0x03 0x0 0x00000000
в /etc/hotplug/usb.handmap. Теперь модуль usb-storage будет
загружаться автоматически при подключении устройства к шине usb.
Чтобы облегчить жизнь можно добавить в /etc/fstab следующую строку:
/dev/sda1 /mnt/flash vfat noauto,user 0 0
Для того, что бы примонтировать устройство необходимо дать команду:
# mount /mnt/flash
что бы размонтировать:
# umount /mnt/flash
Благодарность.
Выражаю благодарность Грегу Бэйкеру (Greg Baker) за его работу над
документом Using a USB Compact Flash Reader (http://www.cs.sfu.ca/ %7Eggbaker/personal/cf-linux) in Linux. Именно этот
документ лежал в основе этого мини-howto. Спасибо!
Ответственность?
А что это такое? :-)
Мнение автора по изложенному выше вопросу не является <<истиной
последней инстанции>>. Я лишь излагаю то, что проверил, попробовал,
<<пощупал>>... Мнения, выводы, результаты и утверждения автора могут
не совпадать с вашими, или кого-либо ещё. Данные в статье рекомендации
не следует воспринимать как руководство к действию. Все предложения,
которые вы, возможно, реализуете после прочтения этой статьи, вы
совершаете на свой страх и риск. Автор не берёт на себя
ответственности за любой ущерб, который может быть прямо или косвенно
причинен использованием рекомендаций, изложенных в данной статье.
Авторские права
Эта статья, а также её переводы, могут быть воспроизведены и
распространены полностью или частично на любом носителе физическом или
электронном, при условии сохранения этой заметки об авторских правах
на всех копиях. Коммерческое распространение разрешается и поощряется;
но автор статьи желал бы знать о таком использовании.
Все переводы и производные работы, выполненные на основании этой
татьи должны сопровождаться этой заметкой об авторских правах. Это
делается для предотвращения ограничения свободного распространения
этой статьи. Исключения могут составить случаи получения особого
разрешения у автора, с которым можно связаться по адресу приведенному
ниже.
Автор хотел бы распространить эту информацию по разным каналам, но при
этом сохранить авторские права и быть уведомленным о всех планах
распространения статьи. Если у вас возникли вопросы, обратитесь к
автору этой статьи по электронной почте: <hot-orange@narod.ru. >
© Василий Гладкий, 2003
Заметка про многокарточные кардридеры.
Оригинал: http://www.linuxshare.ru/docs/distro/fedora/FedoraFAQ.html #4.5
У меня есть USB card-reader для чтения разных видов флэш-карт. Но
система почему-то видит только одно устройство. Что делать?
Проблема в том, что ядро в Red Hat и Fedora Core собрано с выключеной
опцией CONFIG_SCSI_MULTI_LUN. Из-за этого ядро видит только первое SCSI
устройство на канале. Поскольку доступ к USB устройствам в Linux
делается через эмуляцию SCSI, то соответственно в card-reader'ах, где
несколько слотов под разные типы карт, всегда будет видно только одно
первое устройство, которое будет доступно в системе как /dev/sda.
Существует два пути решения проблемы. Первый - пересобрать ядро с опцией
CONFIG_SCSI_MULTI_LUN. Второй - воспользоваться одной хитрой
возможностью псевдофайловой системы /proc. Для этого сперва необходимо
узнать для первого USB устройства его SCSI интерфейс, channel, id и lun.
Сделать это просто. Нужно посмотреть в файл /var/log/messages после
загрузки системы. Вы увидите что-то вроде этого:
Nov 15 19:30:01 vitachi kernel: SCSI subsystem initialized
Nov 15 19:30:01 vitachi kernel: Initializing USB Mass Storage driver...
Nov 15 19:30:01 vitachi kernel: scsi0 : SCSI emulation for USB Mass Storage devices
Nov 15 19:30:01 vitachi kernel: Vendor: NEODIO Model: USB Storage-MMC Rev: 305M
Nov 15 19:30:01 vitachi kernel: Type: Direct-Access ANSI SCSI revision: 02
Nov 15 19:30:01 vitachi kernel: usbcore: registered new driver usb-storage
Nov 15 19:30:01 vitachi kernel: USB Mass Storage support registered.
Nov 15 19:30:01 vitachi kernel: Attached scsi removable disk sda at scsi0, channel 0, id 0, lun 0
Nov 15 19:30:01 vitachi kernel: Attached scsi removable disk sda at scsi0, channel 0, id 0, lun 0
Обратите внимание на текст, который выделен. Т.е. scsi0,
channel=0, id=0 и lun=0. Теперь выполняем хитрые манипуляции с файловой
системой /proc. Допустим у нас card-reader на четыре разных типа карт.
Первое псевдоустройство уже инициализировано. Остаётся инициализировать
оставшиеся три. Для этого выполняем следующие команды:
echo "scsi add-single-device 0 0 0 1" >/proc/scsi/scsi
echo "scsi add-single-device 0 0 0 2" >/proc/scsi/scsi
echo "scsi add-single-device 0 0 0 3" >/proc/scsi/scsi
Эти команды заставляют ядро просканировать канал SCSI для поиска новых
устройств. После их выполнения вы увидите что-то типа этого:
Nov 15 19:30:08 vitachi kernel: Vendor: NEODIO Model: USB Storage-CFC Rev: 305M
Nov 15 19:30:08 vitachi kernel: Type: Direct-Access ANSI SCSI revision: 02
Nov 15 19:30:08 vitachi kernel: Attached scsi removable disk sdb at scsi0, channel 0, id 0, lun 1
Nov 15 19:30:08 vitachi kernel: Vendor: NEODIO Model: USB Storage-SMC Rev: 305M
Nov 15 19:30:08 vitachi kernel: Type: Direct-Access ANSI SCSI revision: 02
Nov 15 19:30:08 vitachi kernel: Attached scsi removable disk sdc at scsi0, channel 0, id 0, lun 2
Nov 15 19:30:08 vitachi kernel: Vendor: NEODIO Model: USB Storage-MSC Rev: 305M
Nov 15 19:30:09 vitachi kernel: Type: Direct-Access ANSI SCSI revision: 02
Nov 15 19:30:09 vitachi kernel: Attached scsi removable disk sdd at scsi0, channel 0, id 0, lun 3
Nov 15 19:30:10 vitachi scsi.agent[2739]: disk at /devices/pci0000:00/0000:00:1f.4/usb2/2-2/2-2:1.0/host0/0:0:0:1
Nov 15 19:30:10 vitachi scsi.agent[2749]: disk at /devices/pci0000:00/0000:00:1f.4/usb2/2-2/2-2:1.0/host0/0:0:0:2
Nov 15 19:30:10 vitachi scsi.agent[2759]: disk at /devices/pci0000:00/0000:00:1f.4/usb2/2-2/2-2:1.0/host0/0:0:0:3
Nov 15 19:30:10 vitachi scsi.agent[2759]: disk at /devices/pci0000:00/0000:00:1f.4/usb2/2-2/2-2:1.0/host0/0:0:0:3
Теперь в системе у вас должны стать доступными такие устройства как
/dev/sdb, /dev/sdc и /dev/sdd.
Хорошие cтатьи на английском:
http://www.linux-sxs.org/hardware/flashreaders.html
http://www.cs.sfu.ca/ %7Eggbaker/personal/cf-linux
http://www.machineofthemonth.org/articles/2002/1216/index.html
1 , Edurad (? ), 16:20, 19/05/2006 [ответить ]
+ /–
Spasibo za statju! :-) S nej smog podklju4itj MSI MegaPlayer 533 na Slackware 10.1! Pri4em sna4ala ne xotel on videtj MMC karto4ku v pleere, no do4itav statju do konca, vse polu4ilosj! Spasibo! :-)