<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=49083&amp;view=findpost&amp;p=324173</guid>
        <pubDate>Thu, 25 Mar 2004 09:14:17 +0000</pubDate>
        <title>USB, FlashDisk...</title>
        <link>https://forum.sources.ru/index.php?showtopic=49083&amp;view=findpost&amp;p=324173</link>
        <description><![CDATA[the_Shadow: Ага... А DEiL сразу будет шуметь что это -- &quot;старый стиль&quot;, &quot;архаика&quot;... :-DDD]]></description>
        <author>the_Shadow</author>
        <category>*nix</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=49083&amp;view=findpost&amp;p=323880</guid>
        <pubDate>Wed, 24 Mar 2004 19:05:15 +0000</pubDate>
        <title>USB, FlashDisk...</title>
        <link>https://forum.sources.ru/index.php?showtopic=49083&amp;view=findpost&amp;p=323880</link>
        <description><![CDATA[grustnoe: ну, много утилит можно заменить cat-ом.<br>например - lspci, uname, ps, vi... :)]]></description>
        <author>grustnoe</author>
        <category>*nix</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=49083&amp;view=findpost&amp;p=323756</guid>
        <pubDate>Wed, 24 Mar 2004 14:41:38 +0000</pubDate>
        <title>USB, FlashDisk...</title>
        <link>https://forum.sources.ru/index.php?showtopic=49083&amp;view=findpost&amp;p=323756</link>
        <description><![CDATA[the_Shadow: А&#33; Да&#33; Верно&#33; Прошу меня простить, господа, за-тор-мо-зи-л-с-с-с... :-)<br>
Спасибо, <strong class='tag-b'>ygor</strong>&#33;]]></description>
        <author>the_Shadow</author>
        <category>*nix</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=49083&amp;view=findpost&amp;p=323754</guid>
        <pubDate>Wed, 24 Mar 2004 14:36:35 +0000</pubDate>
        <title>USB, FlashDisk...</title>
        <link>https://forum.sources.ru/index.php?showtopic=49083&amp;view=findpost&amp;p=323754</link>
        <description><![CDATA[ygor: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>http://usb-linux.sourceforge.net</div></div><br>
<a class='tag-url' href='http://linux-usb.sourceforge.net' target='_blank'>http://linux-usb.sourceforge.net</a> Помоему так правильно ;)]]></description>
        <author>ygor</author>
        <category>*nix</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=49083&amp;view=findpost&amp;p=322888</guid>
        <pubDate>Tue, 23 Mar 2004 14:19:32 +0000</pubDate>
        <title>USB, FlashDisk...</title>
        <link>https://forum.sources.ru/index.php?showtopic=49083&amp;view=findpost&amp;p=322888</link>
        <description><![CDATA[the_Shadow: <strong class='tag-b'>0. Вроде как введение.</strong><br>
Эта тема о самом USB и о подключаемых девайсах, реализующих функции <em class='tag-i'>дисковых <br>
накопителей</em>. На примере &quot;прикрутки&quot; часов фирмы GEMBURD с 256 MB Flash-диском <br>
&quot;на борту&quot; (т.н. <em class='tag-i'>F-Watch</em>)  показано как &quot;прикрутить&quot; к Линукс-боксу <br>
произвольное устройство типа <em class='tag-i'>Flash-disk</em>. Конечно то, о чем я<br>
пишу в данной теме -- не более чем частный случай, но, вполне вероятно, что он<br>
натолкнет Вас на какие-то новые идеи. Дело в том, что по большому счету, для<br>
множества устройств, имеющих функции хранения данных и подключаемых по интерфейсу<br>
USB, вполне реализуемы одни и те же подходы. Как правило, они все удовлетворяют<br>
<em class='tag-i'>единым спецификациям</em> на USB-устройства <em class='tag-i'>хранения данных</em>. От этой<br>
&quot;печки&quot; и стоит начинать плясать...<br>
<br>
Если в мире M&#036; необходимы драйвера (в XP и выше сразу есть драйвера для <em class='tag-i'>Mass <br>
Storage Devices</em>), то в Linux все не так запущено. Все уже есть. Надо только<br>
сконфигурироваться правильно. :D<br>
<br>
Пара слов про то, что это у нас за чудо-часики (фото в &quot;пристежке). Ну что --<br>
часы как часы, только оснащены Flash-картой на 256 MB с интерфейсом USB 1.1.<br>
Согласно документации, скорость чтения порядка 900 KB/sec., записи -- 800 KB/sec.<br>
Т.е., где-то в районе 1 MB/sec. Не знаю -- может, оно и долго, но исходя из<br>
моего опыта, вполне достаточно и сопоставимо с аналогичными девайсами этого<br>
ряда устройств. <br>
<br>
Самое положительное качество этого девайса -- исполнение. У Вас никогда не <br>
случалось такой засады, что Вы забывали бы флешку в чужом компе? У меня бывало.<br>
И не раз. Вставил, записываем, пока пишется -- разговариваем, поговорили,<br>
отвлеклись, собрался, поехал... Сижу уже в поезде, жду когда поезд тронется...<br>
Опппаньки, чего-то не хватает... :( Ну ясно чего... :(<br>
<br>
Ну, как-то вот так... :D Иногда можно вернуться и забрать диск, иногда -- себе <br>
дороже, приходится забирать диск &quot;в следующий раз&quot;, а инфа нужна сегодня. :( <br>
Короче, при любом раскладе приходится терять самое важное -- время. <br>
<br>
А теперь попробуйте <em class='tag-i'>часы</em> забыть. На руке нет чего-то привычного. Вот <br>
по этой самой причине я и приобрел себе сей волшебный девайс. Теперь я <em class='tag-i'>не теряю<br>
время</em>. :D<br>
<br>
<strong class='tag-b'>1. Как подсистема USB устроена и что нам нужно.</strong><br>
Общее описание USB не рассматривается. Рассматривается только что и как надобно<br>
делать для прикрутки девайса.<br>
<br>
1.1 Ядреная часть.<br>
Собственно, в последних ядрах все должно быть. В 2.4.20 есть точно. Проверял.<br>
<br>
<em class='tag-i'><strong class='tag-b'>До</strong></em> начала всех развлечений с USB-девайсами, определитесь что же<br>
у Вас за USB-host установлен в системе. Может быть два варианта -- либо это<br>
<em class='tag-i'>UCHI</em>, либо это <em class='tag-i'>OCHI</em>. Насколько я понимаю, есть две группы <br>
производителей, которые никак не могут договориться (Господи, вот уже в какой<br>
раз&#33;) и делают железо на основании своих внутренних представлений о том, как <br>
это должно работать. Нас это не должно пугать. Linux поддерживает оба типа <br>
устройств.<br>
<br>
Итак, в конфигурации ядра, в <em class='tag-i'>USB support</em> включаем для <em class='tag-i'>UCHI</em><br>
(мой случай) <em class='tag-i'>UCHI</em> и <em class='tag-i'>UCHI Alternate Driver (JE)</em>.<br>
<br>
Далее. Там же. Включаем <em class='tag-i'>какой тип устройств будем поддерживать</em>. В нашем<br>
случае это -- <em class='tag-i'>USB Mass Storage</em>. И, т.к. не ясно какой же у нас драйв,<br>
то все типы дисков. Потом то, что не используется, можно будет снести, но<br>
места они кушают мало, так что... Дело Ваше.<br>
<br>
В итоге как минимум у Вас должны загрузиться модули <em class='tag-i'>usbcore.o</em>, <br>
<em class='tag-i'>usb-uchi.o</em>, <em class='tag-i'>uchi.o</em>. Здесь важно два момента:<br>
<br>
- Вот в этой точке возможно &quot;ветвление&quot;. Т.е. мы загрузили саму подсистему <br>
USB. Теперь мы можем загружать либо последующие модули, реализующие работу<br>
конкретного устройства (принтера, сканнера), либо остановиться и &quot;пустить все<br>
на самотек&quot;, уповая на возможности автоконфигурирования ядра. <br>
<br>
Это в случае &quot;стандартных&quot; устройств. В случае &quot;нестандартных&quot; (см. п.2) -- <br>
руки (Ваши) и мозги (опять-таки Ваши) -- Ваша лучшая помощь.<br>
<br>
- Кстати, Вы можете сделать модули, а можете напрямую вкомпилировать код в <br>
ядро. Моя рекомендация (следовать ей или нет -- дело Ваше) на момент &quot;отладки&quot;<br>
работы с девайсами все-таки работать с модулями. Когда &quot;отладитесь&quot; -- решите<br>
что же Вам делать дальше.<br>
<br>
Далее. В конфигурации ядра Вам нужно будет указать использование <em class='tag-i'>Preliminary<br>
USB Device Filesystem</em>.<br>
<br>
Не забыть указать поддержку эмуляции <em class='tag-i'>SCSI</em> и <em class='tag-i'>SCSI-дисков</em>. Без этой <br>
поддержки Flash-диски не работают, т.к. в нашем случае поддержка Mass-Storage <br>
Devices реализована через уровень SCSI. Очевидно, проблемы в организации доступа<br>
к Flash, но почему именно так сделано -- БМП. И без того проблем хватает, но уже<br>
своих.<br>
<br>
Не забудьте указать поддержку ядром ФС <em class='tag-i'>vfat</em> и <em class='tag-i'>fat</em>. Дело в том, что<br>
как бы флешка не хранила свои данные, доступ к ним идет на основе этих правил.<br>
<br>
С ядром все -- компилитесь, ставьтесь...<br>
<br>
Теперь Вам необходимо указать в <em class='tag-i'>/etc/fstab</em> точку монтирования для <br>
<em class='tag-i'>usbdevfs</em>. Что это за фс. Довольно интересная это ФС. Она является<br>
&quot;динамической&quot; ФС. Она может монтироваться в любой точке &quot;базовой&quot; ФС и, учитывая<br>
то, что &quot;под&quot; этой ФС работают разнородные устройства, она отражает их реальные<br>
(&quot;физические&quot;) особенности в неком &quot;усредненном&quot; виде, который и позволяет нам<br>
работать с практически любым USB-девайсом некоторым &quot;средним&quot; образом (в частности<br>
читать/писать файлы). <br>
<br>
Единственное ,&quot;но&quot; -- запись в <em class='tag-i'>/etc/fstab</em> относительно новой ФС должна<br>
идти <em class='tag-i'>после</em> записи про саму <em class='tag-i'>/proc</em>. Это объясняется тем, что файл<br>
обрабатывается построчно и <em class='tag-i'>usdevfs</em> должна монтироваться в каталог <br>
<em class='tag-i'>/proc/bus/usb</em>. Учтите, что если что-то прописано до &quot;родительской&quot; ФС, <br>
то это вызовет сообщение об ошибке. Аккуратнее здесь, pls.<br>
<br>
Итак, получаем запись в <em class='tag-i'>/etc/fstab</em>:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;</div><div class="code_line">none &nbsp; &nbsp;/proc/bus/usb &nbsp; usbdevfs &nbsp; &nbsp;defaults &nbsp; &nbsp;0 0</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
ВНИМАНИЕ&#33; После перезагрузки система может заоорать, что ей, видете ли, некуда<br>
подмонтировать драйв, т.к. она не в курсе что это вообще такое (<em class='tag-i'>none</em>).<br>
Не беспокойтесь -- все подмонтирует как миленькая, когда нам это понадобится.<br>
Так что на все вопли системы не всегда нужно обращать внимание.<br>
<br>
Проверяемся:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;</div><div class="code_line">$ ls -l /proc/bus/usb</div><div class="code_line">итого 0</div><div class="code_line">dr-xr-xr-x &nbsp;1 &nbsp; root &nbsp; &nbsp;root &nbsp; &nbsp;0 date:time 001</div><div class="code_line">-r--r--r-- &nbsp;1 &nbsp; root &nbsp; &nbsp;root &nbsp; &nbsp;0 date:time devices</div><div class="code_line">-r--r--r-- &nbsp;1 &nbsp; root &nbsp; &nbsp;root &nbsp; &nbsp;0 date:time drivers</div></ol></div></div></div></div><br>
Ок. Работает. Чего получилось:<br>
<br>
- каталог 001. Это каталог &quot;шины&quot;. Т.е. это описание того, что висит на данной<br>
шине. Но именно каталог 001 <em class='tag-i'>всегда</em> присутствует. Дело в том, что этот<br>
каталог -- описание самого <em class='tag-i'>активного</em> хоста USB на Вашем компе. По мере <br>
подключения устройств у Вас будет множится число каталогов (002, 003, ...). <br>
Если Вы будете подключать модули &quot;врукопашную&quot;, то именно в этих каталогах и <br>
будут храниться эти модули. <br>
<br>
- devices -- девайсы на шине USB и их состояния на данный момент (см. п. 2.2). <br>
Всегда можно проверить:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">$ cat /proc/bus/usb/devices</div></ol></div></div></div></div><br>
<br>
- drivers -- чего подгружено в данный момент. <br>
Всегда можно проверить:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">$ cat /proc/nus/usb/drivers</div></ol></div></div></div></div>.<br>
<br>
Теперь, чтоб не париться каждый раз, пропишем в <em class='tag-i'>/etc/fstab</em>:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;</div><div class="code_line">/dev/sda1 &nbsp; /mnt/fwatch vfat &nbsp; &nbsp;rw,uid=XXX,codepage=866,iocharset=koi8-r 0 0</div></ol></div></div></div></div><br>
Да. Я знаю -- этой командой я отдал драйв пользователю с <em class='tag-i'>uid=ХХХ</em>. И для <br>
<em class='tag-i'>меня</em> это приемлемо, т.к. больше на моем боксе никто не работает. Как Вы<br>
сделаете -- БМП. Кроме того, я возжелал, чтоб у меня русские буковки были видны. <br>
Ну, люблю я комфорт... Угу... Скрытый виндузятник... Ж~D <br>
<br>
Теперь цепляем наш драйв к боксу, проверяем изменилось ли состояние системы <br>
(а оно должно измениться, если все правильно сделано) и переходим к прикладным <br>
развлечениям.<br>
<br>
1.3 &quot;Клиентская часть&quot;.<br>
У Вас должно быть право на монтирование ФС (или делайте это из-под рута или<br>
создайте группу, включите своего пользователя в группу и разрешите группе <br>
монтирование/демонтирование ФС. Можете не создавать группу, а просто разрешите<br>
пользователю эти действия. Как Вам удобнее... ).<br>
<br>
Создайте каталог, в который будете монтировать свой драйв. В моем случае это,<br>
напоминаю, <em class='tag-i'>/mnt/fwatch</em>.<br>
<br>
Итак.<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;</div><div class="code_line">$ mount /dev/sda1</div><div class="code_line">$ cd /mnt/fwatch</div><div class="code_line">$ ls -l </div><div class="code_line">$ cd ~/</div><div class="code_line">... читаем/пишем ...</div><div class="code_line">&nbsp;</div><div class="code_line">$ umount /mnt/fwatch</div></ol></div></div></div></div><br>
Все. Точка. Работает. Самое радостное -- в Nautilus&#39;е так же работает. <br>
<br>
<strong class='tag-b'>2. Как вообще читать кофигурацию USB и чего можно делать.</strong><br>
<br>
Ну, в нашем случае мы довольно легко &quot;отбились&quot; -- сразу всё было ясно и понятно. <br>
Бывают случаи по-сложнее. Когда, вроде, порт USB есть, но вот комп &quot;в упор не видит&quot;<br>
прикрепленный девайс. Поставить себе Windows, что ли? :D Постараемся обойтись.<br>
<br>
Просто, придется несколько поглубже поковыряться в софте. Вы еще не привыкли? Ну,<br>
ничего. Не долго привыкать осталось. Скоро без этого Вы не сможете обходиться.<br>
<br>
2.1 Вас ждет долгая дорога на <a class='tag-url' href='http://usb-linux.sourceforge.net' target='_blank'>http://usb-linux.sourceforge.net</a>. Там есть великолепный<br>
документ, который (один из ряда документов) я использовал при написании сего текста.<br>
Качайте <em class='tag-i'>USB-guide.ps</em> (<em class='tag-i'>&quot;The Linux USB sub-system&quot; by Brad Hards</em>).<br>
Ежели чего-то не ясно -- загляните в сию великую книгу. Там есть многие ответы.<br>
Правда, ориентирован сей документ на ядро 2.4.0-test9. Но пугать это не должно,<br>
т.к. все основные моменты, описанные в этом документе работают четко.<br>
<br>
Более того, если Вы достаточно регулярно &quot;развлекаетесь&quot; с USB-сканнерами, <br>
принтерами, клавиатурами, мышами, etc, то это -- Ваша настольная Кама-Сутра. :D<br>
<br>
2.2 Как читать конфигурацию.<br>
Если у Вас на шнурке болтается &quot;неведома зверушка&quot; и Вы вообще БМП чего с ней <br>
сделать, то для разборок с этой зверью :D Вам понадобится инфа из <br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;</div><div class="code_line">$ cat /proc/bus/usb/devices</div></ol></div></div></div></div><br>
Подробные описания данной таблицы приведены в <em class='tag-i'>&quot;USB-guide&quot;</em> и в <br>
<em class='tag-i'>/usr/src/linux-&lt;ver&gt;/Documentation/usb/proc_usb_info.txt</em> &lt;-- здесь наиболее<br>
полно (есть примеры как чего выводится), ниже просто идет сокращенное описалово, <br>
чтоб было ясно куда смотреть и чего искать. Я привел только самые (на мой взгляд)<br>
интересные параметры, которые можно найти в данных.<br>
<br>
Все, IMHO, достаточно простенько и со вкусом. Это, по сути дела, таблица. Т.е. <br>
в качестве &quot;строк&quot; используются записи (&quot;столбцы&quot; указаны после точки в <br>
описании строки):<br>
<br>
- T: топология устройства. Bus -- устройство на шине включено, Lev -- уровень <br>
девайса по отношению к рутовому хабу (00), Prnt -- уровень родительского устройства<br>
для рассматриваемого устройства, Port -- порт на родительском устройстве, куда<br>
включено данное устройство. Пара Prnt/Port должна быть уникальна в наборе данных,<br>
т.к. именно по этой паре идет адресация при доступе к девайсу. Cnt сколько девайсов<br>
на данном уровне. Dev# -- уникальный номер данного девайса. Spd -- скорость <br>
девайса в Mbps. MxCh -- максимальное число каналов (т.е. ск. устройств могут<br>
присоединяться к данному устройству. Если &quot;00&quot;, то это -- хаб). Driver -- каким<br>
драйвером пользуемся для доступа. Т.е. здесь становится понятно видит или нет<br>
комп. наш девайс.<br>
<br>
- B: полоса пропускания устройства (просто число и в % от возможной).<br>
<br>
- D: описание девайса. Ver -- версия спецификации девайса. Cls -- класс девайса.<br>
Sub -- подкласс девайса. Prot -- протокол девайса. MxPS -- макс. размер пакета.<br>
#Cfgs -- возможное число конфигураций. Здесь становится ясно что это за железка<br>
такая неведомая.<br>
<br>
- P: как бы подзапись в описании девайса (D). Vendor -- ID производителя. ProdID --<br>
Product ID. Rev -- revision. <br>
<br>
- S: информация о продукте и производителе.<br>
<br>
- C: информация о конфигурации. #Cfgs и * -- текущий конфиг (здесь см. MxPwr --<br>
этот параметр показывает в миллиамперах макс. питание устроства. Аккуратнее, pls,<br>
т.к. макс. питание одного порта USB -- <em class='tag-i'><strong class='tag-b'>500 mA</strong></em> и что будет в случае,<br>
если Вы перегрузите по току порт не знает ни кто, хотя, лично я и не пробовал, но <br>
гнетут меня смутные сомнения... ). #If -- число интерфейсов. Cfg# -- номер описанной <br>
конфигурации. Atr -- атрибуты девайса (0х80 -- питание от шины, 0х40 -- свое <br>
питание, 0х20 -- &quot;пробуждающее&quot; комп. устройство). Не менее интересная инфа, т.к. <br>
подчас, вместо того, чтобы с диким воплем и матюгами разбирать &quot;пациента&quot;, можно <br>
просто посмотреть а что, собственно, с &quot;пациентом&quot; творится-то... <br>
<br>
- I: описание интерфейса. If# -- текущий интерфейс. Alt -- доп. установки. Etc.<br>
<br>
- E: расширение записей I. MxPS -- макс. размер пакета.<br>
<br>
Когда мы подключаем &quot;неводому зверушку&quot; к порту и смотрим как и чего &quot;видится&quot;,<br>
то подобрать готовый софт для обмена данными с ней уже не составляет труда или<br>
написать свой софт... То же не велика проблема... :D Особенно, если становится<br>
понятно как именно данная железка должна обмениваться данными с боксом. <br>
<br>
Конечно, придется вооружаться &quot;слесарным инструментом&quot; и обтёсывать софт до нужной<br>
формы, но это уже... Ваше дело. :)<br>
<br>
Успехов&#33;<br>
<br>
PS Все-таки не забывайте что Вы работаете с UNIX-системой. По окончании работы с<br>
девайсом его лучше <em class='tag-i'><strong class='tag-b'>явно отмонтировать</strong></em>, а уж только потом выдергивать<br>
шнурок. Не надо Linux пугать своей &quot;гениальностью&quot;... :D<br>
<br>
А&#33; И ещё вспомнил... Есть такой утиль (зачем его сделали я так и не понял), который <br>
выводит список USB-девайсов -- <em class='tag-i'>lsusb</em>, вроде даже инфу по девайсам показывает. <br>
Не знаю -- не пользуюсь. Мне как-то и утилиты <em class='tag-i'>cat</em> выше крыши хватает.]]></description>
        <author>the_Shadow</author>
        <category>*nix</category>
      </item>
	
      </channel>
      </rss>
	