1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<!--
3 
4 This file is a part of BeOS USB SCSI interface module project.
5 Copyright (c) 2003-2004 by Siarzhuk Zharski <imker@gmx.li>
6 
7 This file may be used under the terms of the BSD License
8 See the file "License" for details.
9 
10 $Source: /cvsroot/sis4be/usb_scsi/ReadMe.html,v $
11 $Author: zharik $
12 $Revision: 1.23 $
13 $Date: 2005/04/09 20:53:25 $
14
15-->
16<html>
17<head>
18  <title>USB mass storage support for BeOS</title>
19</head>
20<body bgcolor="#f0f0e0">
21<h1>USB mass storage support for 
22       <font color="#000066">B</font><font color="#cc0000">e</font>OS</h1>
23<div align="right">
24<address><a href="mailto:imker@gmx.li">by Siarzhuk Zharski</a></address>
25</div>
26This is yet another piece of hardware support for BeOS/Dano/Zeta operating systems.
27This USB Storage Module (<strong>The Module</strong>) is designed to support a wide variety
28of standard USB mass storage devices. Those devices are: 
29<ul>
30  <li>memory (flash) keys,</li> 
31  <li>external HDD/CD/DVD/ZIP/Floppy drives with USB connection,</li> 
32  <li>digital cameras/camcorders with USBMS protocol,</li> 
33  <li>MP3 players,</li> 
34  <li>card readers,</li>
35  <li>Jukeboxes</li> 
36  <li>etc.</li>
37</ul> 
38<p>In other (more special and technical) words this Module
39works with standard USB class 8 devices, both Bulk-Only and CB[I] ones,
40with all standard command sets used in such devices. 
41</p>
42<h1><a name="Contents"></a>Table of Contents</h1>
43<ul>
44  <li><a href="#1._Installation_and_using_">Installation and using </a></li>
45  <li><a href="#2._Troubleshooting">Troubleshooting</a></li>
46  <li><a href="#3.5.Writing_a_problem_report">Writing a problem report</a></li>
47  <li><a href="#3._Technical_notes_">Technical notes</a></li>
48  <ul>
49    <li><a href="#3.1._BeOS_USB_patches">BeOS USB patches</a></li>
50    <li><a href="#3.2._USB_Device_information">USB Device information</a></li>
51    <ul>
52      <li><a href="#3.2.1._How_to_obtain_USB_device">How to obtain USB device information for your hardware</a></li>
53      <li><a href="#3.2.2._How_it_looks_like_and_what_does_">How USB device information looks like and what does it mean</a>
54      </li>
55    </ul>
56    <li><a href="#3.3._Device_entries_reservation">Device entries reservation technique</a></li>
57    <li><a href="#3.4._A_couple_of_words_about_usb_scsi">A couple of words about usb_scsi settings file</a></li>
58    <ul>
59      <li><a href="#3.4.1_General_Module_settings">The Module configuration parameters</a></li>
60      <li><a href="#3.4.2._Module_settings_for_debugging_">Parameters for debugging mode</a></li>
61      <li><a href="#3.4.3_Device_settings">Configuring device definitions</a></li>
62      <ul>
63        <li><a href="#3.4.3.1._Parameters_of_Device_settings">Tweaking device definition</a></li>
64        <li><a href="#3.4.3.2._Protocol_override_parameters">Overriding device protocol</a>
65        </li>
66      </ul>
67    </ul>
68    <li><a href="#3.6._Protocol_extension_modules">Protocol extension modules</a></li>
69  </ul>
70  <li><a href="#6.Contact_information">Contact and support information</a></li>
71  <li><a href="#5.Credits">Credits</a></li>
72  <li><a href="#4._Versions_History_">The History</a></li>
73</ul>
74
75<h1><a name="1._Installation_and_using_"></a>1. Installation and using</h1>
76<p><font color="#cc0000"><b>(!!!) FIRST EMERGENCY TIP:</b></font> If your system
77crashes with this Module - reboot and press "Space"
78during load. In boot menu select "Disable user add-ons" and continue
79booting. Uninstall and reboot again into normal mode. Please, <a
80 href="#6.Contact_information">inform the developer</a> about this problem.
81</p>
82<ol> 
83  <li>Please check, that you have supported version of BeOS. Minimal system
84requirement is R5 + BeOS.USB-patches. No support for "plain" R5! More
85information about USB-patches you can find in 
86<a href="#3.1._BeOS_USB_patches">corresponding clause of this document</a>.
87Note that Dan0, all it's successors and Zeta already have compatible USB stack - no patches
88are required.</li>
89  <li>Contents of distribution archive:
90<pre>    ReadMe.html      &lt;--- file you are reading now
91    <a href="install.sh">install.sh</a>       &lt;--- installation script
92    <a href="uninstall.sh">uninstall.sh</a>     &lt;--- uninstallation script
93    usb              &lt;--- The Module binary
94    <a href="usb_scsi.sample">usb_scsi.sample</a>  &lt;--- settings file sample
95    usb_scsi_logging &lt;--- logging daemon
96    <a href="usb_scsi.devices">usb_scsi.devices</a> &lt;--- definitions for "non-standard" devices
97    usb_dev_info     &lt;--- the tool to obtain device inforamtion</pre>
98  </li>
99  <li>Run <a href="install.sh"><strong>/install.sh</strong></a> to install The Module on your system.
100This script do the following:</li>
101  <ul>
102    <li>copies The Module binary to 
103          <strong>/boot/home/config/add-ons/kernel/busses/scsi/usb</strong>
104              directory</li>
105  </ul>
106  <ul>
107    <li>copies settings file to 
108          <strong>/boot/home/config/settings/kernel/drivers/usb_scsi</strong>
109              file</li>
110    <li>ask you to reboot your system or edit settings file. More
111information on settings file <a href="#3.4._A_couple_of_words_about_usb_scsi">is here</a>.
112If you doesn't reboot from script - you
113have to do it manually to let The Module work with updated settings.
114    </li>
115  </ul>
116  <li>After system rebooted, plug in your USB device into USB slot and
117try to open Tracker's "Mount" menu some times. In case if all goes OK -
118you'll see some additional volumes available for mounting. Mount that
119one you
120think is your USB mass storage and use it as usual "real" drives.</li>
121  <li>It is highly recommended to unmount your USB volume before
122unplugging device from USB slot. Some pending read/write operations can
123be still active in background. If you break this process - 
124<font color="#cc0000"><b>YOU CAN LOOSE YOUR DATA</b></font>. Unmount
125it and wait until your USB volume icon is
126disappeared from desktop and led on your device ( in case this led
127exists, of course ) turns off. To be sure you can run "sync" command from the Terminal.</li>
128  <li>[optional] To uninstall The Module from your system - run <a href="uninstall.sh"><strong>uninstall.sh</strong></a>
129from distribution archive or delete files mentioned in
130clause 3 of this section manually.</li>
131</ol>
132<a href="#Contents">Table
133of Contents</a>
134<h1><a name="2._Troubleshooting"></a>2. Troubleshooting</h1>
135<ol>
136  <li><strong>Is my USB device supported?</strong>
137    <ul>
138      <li>May be. Install this software, plug your device in and
139try to mount it. Or look for class / subclass / protocol values
140in usb device description and check against the following lists.
141        <ul>
142          <li>Supported class : 8</li>
143          <li>Supported subclasses ( command sets ) : 1, 2, 3, 4, 5, 6</li>
144          <li>Supported protocols: 0, 1, 80</li>
145        </ul>
146Any combination of mentioned above class / subclass / protocol is supported.
147      </li>
148    </ul>
149  </li>
150  <li>I have installed this software on R5 + USB.patches but my <strong>system
151goes to Kernel Debugger on very early booting stage</strong>. Help!
152    <ul>
153      <li>Edit <a href="#3.4._A_couple_of_words_about_usb_scsi">settings
154file</a> and activate the following key:
155        <ul>
156          <li>ignore_sysinit2 true</li>
157        </ul>
158      </li>
159    </ul>
160  </li>
161  <li>I have installed this software and <strong>there are still no additional
162volumes</strong> in Tracker's "Mount" menu.
163    <ul>
164      <li>Sometimes it is required to open "Mount" menu more than
165one time to see volumes.
166      </li>
167      <li>You can try open "Mount" menu with "Shift" button pressed and
168select "Rescan All Devices" menu item to help the system recognize your device.
169      </li>
170      <li>Try to Rescan SCSI in DriveSetup.
171      </li>
172    </ul>
173  </li>
174  <li><strong>I still have no volumes to mount!!!</strong>
175    <ul>
176      <li>Please check the following:
177        <ul>
178          <li>[for R5 only. Not required for Dano/Zeta etc. ] your system
179has USB patches installed;</li>
180          <li>the binary file <strong>/boot/home/config/add-ons/kernel/busses/scsi/usb</strong>
181exists on your system;
182          </li>
183          <li>the settings file <strong>/boot/home/config/settings/kernel/drivers/usb_scsi</strong>
184exists on your system;</li>
185          <li>check that your device uses standard protocols and should be supported by
186this module ( see clause 1 of this section )
187          </li>
188          <li>Despite of fact that latest <strong>versions of Zeta OS</strong> use this module, some of
189pre-releases of this OS have completely different stuff to support USB storage devices.
190In some circumstances those Zeta's modules can prevent this USB Support Module from correct working.
191In this situation you have to disable Zeta's USB Storage support. To do this go to
192/boot/beos/system/add-ons/kernel/busses/scsi/ diectory and rename or remove the
193<strong>usb</strong> and <strong>usb_scsi</strong> files. After rebooting your system
194you should have updated USB Storage support. 
195          </li>
196        </ul>
197      </li>
198    </ul>
199  </li>
200  <li>STILL <strong>NOTHING TO MOUNT ! ! !</strong>
201    <ul>
202      <li>Looks like you are in trouble. <a href="#6.Contact_information">
203               Write your problem report</a> to developers.
204      </li>
205    </ul>
206  </li>
207  <li>I see <strong>a lot of empty SCSI devices in DriveSetup</strong> and SCSIProbe.
208What is it?
209    <ul>
210      <li>Those "disks" are just reserved device entries - some kind of
211placeholders for real devices you'll attach to your computer. Read
212about this technique <a href="#3.3._Device_entries_reservation">here</a>.
213      </li>
214    </ul>
215  </li>
216  <li><strong>DriveSetup hangs on exit</strong>!?!
217    <ul>
218      <li>It is known bug. I don't know who is wrong with it. No
219solution at this time. Just kill this zombie.
220      </li>
221    </ul>
222  </li>
223  <li>I have found a bug! I have <strong>unmounted my USB floppy</strong>, unplug it
224than plug in another device<strong> but still see the "floppy" volume</strong> in the mount
225list.
226    <ul>
227      <li>The mounting in BeOS is broken. Just press "Shift" key before
228opening Tracker's "Mount" menu than select "Rescan Devices"
229After some seconds try to mount your device again. Should work now.
230      </li>
231    </ul>
232  </li>
233  <li>I have set reserve_devices to maximal value but still <strong>no reserved device
234entries in DriveSetup</strong>.
235    <ul>
236      <li>Known bug. In some situations reservation doesn't work.
237It's reproducible with Adaptec SCSI controllers installed on your
238system. You have to use DriveSetup for first mounting of device in this
239situation. Nothing is perfect in this World.
240      </li>
241    </ul>
242  </li>
243  <li>Does my Canon PowerShot A70 <strong>digital camera supported by this software?</strong>
244    <ul>
245      <li>No. It uses Picture Transfer Protocol (PTP) instead of USB Mass Storage (USBMS)
246one. You can check your camera information for Interface class. For USBMS it should
247be 8, for PTP - 6.
248      </li>
249    </ul>
250  </li>
251  <li>Help me! <strong>No more than 2 devices visible by module</strong> at the same time.
252    <ul>
253      <li>Read about <a href="#3.3._Device_entries_reservation">device
254entries reservation</a> and increase <a href="#3.4._A_couple_of_words_about_usb_scsi">
255     reserve_devices parameter</a> in settings file.
256      </li>
257    </ul>
258  </li>
259  <li>My 9-in-1 card reader works only with media in first 4 slots! <strong>No
260reaction on media in 5th</strong> - 9th slots! Is it a trial version of a driver? Where can I buy full version?
261    <ul>
262      <li>Read about <a href="#3.3._Device_entries_reservation">device entries
263reservation</a> and increase <a  href="#3.4._A_couple_of_words_about_usb_scsi">reserve_luns
264parameter</a> in settings file.
265      </li>
266    </ul>
267  </li>
268  <li><strong>"Mount" menu hangs for a time</strong>  
269    <ul>
270      <li>System requires some time to ask all available volumes for media
271availability, filesystem data format etc. This check is performed any time you opening "Mount"
272menu. In case you have many devices reserved in your configuration - you can be in such
273trouble. Read about <a href="#3.3._Device_entries_reservation">device entries
274reservation</a> and optimize your settings to more reasonable values.
275      </li>
276    </ul>
277  </li>
278  <li>I see the <strong>Generic OS Error</strong> message any time I want to mount my device.  
279  <p>In most of such situations your hardware is OK. The problem is that standard filesystem
280  addon doesn't recognize the filesystem on volume as correct. Unfortunatley BeOS is
281  "to close to standard" to be compatible with all bugs of Windows. <strong>Do not
282  forget to backup your data</strong> before trying to solve this problem!</p>
283  <p>First of all try to reformat your media.</p>
284  <p>If formatting doesn't help or doesn't work with your hardware - open DriveSetup
285  and [re]create <strong>partition</strong> on your device. Rescan SCSI bus if required.
286  Note that you have to <strong>make your partition a bit smaller</strong> as physical
287  size of your device. Try to initialize and reformat your media with new size.</p> 
288  </li>
289  <li>Your <strong>software sucks</strong>!!!
290    <ul>
291      <li>Please <a href="#6.Contact_information">write your problem
292report</a> to developer first.
293      </li>
294    </ul>
295  </li>
296</ol>
297<a href="#Contents">Table of Contents</a>
298<h1><a name="3.5.Writing_a_problem_report"></a>3. Writing a problem report</h1>
299Either something goes wrong with this software or nothing goes right
300you have to write a bug report about it.
301<ol>
302  <li>Obtain your <a
303 href="#3.2._USB_Device_information">USB device information</a> and
304save it in safe place</li>
305  <li>now investigate device information for interface class. If it is
306not equal to 8 go to step 12</li>
307  <li>open your settings file
308( <strong>/boot/home/config/settings/kernel/drivers/usb_scsi</strong>
309) in editor you prefer to use</li>
310  <li>activate following keys if they are still not activated</li>
311<pre>    debug_output true
312    debug_output_in_file true
313    debug_output_file_rewrite true
314    debug_trace_protocol true
315    debug_trace_sense_data true</pre>
316  <li>save your changes and close your editor</li>
317  <li>reboot your system keeping your devices switched off from your computer</li>
318  <li>after reboot run <strong>usb_scsi_logging</strong> application from distribution pack</li>
319  <li>plug your device in free USB slot</li>
320  <li>try to mount it again.</li>
321  <li>unplug your device from computer</li>
322  <li>copy the <strong>/var/log/usb_scsi.log</strong> file into same place as in step 1.</li>
323  <li>Get the information, obtained on step 1 and step 12 and<a href="#6.Contact_information"> let
324developer know about your problem</a></li>
325</ol>
326<a href="#Contents">Table of Contents</a>
327<h1><a name="3._Technical_notes_"></a>4. Technical notes</h1>
328<h2><a name="3.1._BeOS_USB_patches"></a>4.1. BeOS USB patches</h2>
329To work with this software on
330original BeOS R5 Pro/PE versions and it's successors your system need
331to be improved to newer version of USB. This version is available
332on well-known BeOS file-sharing network as BeOS.USB-patches.zip. Get it, unpack and
333install it as required in corresponding readme. Note that, there
334are 3 patches in this archive:
335<ol>
336  <li>beos-usb-patch </li>
337  <li>beos-usb.modem-patch </li>
338  <li>beos-usb.modem-patch.sm </li>
339</ol>
340<p>At least first one should be installed on your system to make using of
341The USB Support Module possible. Note that Dan0, all it's successors and Zeta don't 
342require this patches.</p>
343<a href="#Contents">Table of Contents</a>
344<h2><a name="3.2._USB_Device_information"></a>4.2. USB Device information</h2>
345<h3><a name="3.2.1._How_to_obtain_USB_device"></a>4.2.1. How to obtain
346USB device information for your hardware</h3>
347There is an <strong>usb_dev_info</strong> tool inside of distribution
348archive. It can
349be used to obtain this information. Someone prefers USBCommander.
350<ol>
351  <li>Unplug all USB devices and hubs from your PC. </li>
352  <li>Go into Terminal and run the following command: <strong> ls -alR /dev/bus/usb</strong> 
353   You should see something like this:
354<pre>    $ ls -alR /dev/bus/usb/
355    /dev/bus/usb:
356    total 0
357    drw-r--r--   1 walther  users           0 May 31 23:16 .
358    drw-r--r--   1 walther  users           0 Jun  1  2003 ..
359    drw-r--r--   1 walther  users           0 May 31 23:16 0
360    drw-r--r--   1 walther  users           0 May 31 23:16 1
361    crw-r--r--   1 walther  users      0,   0 May 31 23:16 unload
362    
363    /dev/bus/usb/0:
364    total 0
365    drw-r--r--   1 walther  users           0 May 31 23:16 .
366    drw-r--r--   1 walther  users           0 May 31 23:16 ..
367    crw-r--r--   1 walther  users      0,   0 May 31 23:16 hub
368    
369    /dev/bus/usb/1:
370    total 0
371    drw-r--r--   1 walther  users           0 May 31 23:16 .
372    drw-r--r--   1 walther  users           0 May 31 23:16 ..
373    crw-r--r--   1 walther  users      0,   0 May 31 23:16 hub</pre>
374  </li>
375  <li> Note this information. </li>
376  <li> Now plug your USB device into PC and run <strong>ls -alR /dev/bus/usb/</strong> again.
377You'll get something slightly different:
378<pre>    $ ls -alR /dev/bus/usb/
379    /dev/bus/usb:
380    total 0
381    drw-r--r--   1 walther  users           0 May 31 23:16 .
382    drw-r--r--   1 walther  users           0 Jun  1  2003 ..
383    drw-r--r--   1 walther  users           0 May 31 23:16 0
384    drw-r--r--   1 walther  users           0 May 31 23:16 1
385    crw-r--r--   1 walther  users      0,   0 May 31 23:16 unload
386    
387    /dev/bus/usb/0:
388    total 0
389    drw-r--r--   1 walther  users           0 May 31 23:16 .
390    drw-r--r--   1 walther  users           0 May 31 23:16 ..
391    <strong><blink>crw-r--r--   1 walther  users      0,   0 May 31 23:17 1</blink></strong>
392    crw-r--r--   1 walther  users      0,   0 May 31 23:16 hub
393    
394    /dev/bus/usb/1:
395    total 0
396    drw-r--r--   1 walther  users           0 May 31 23:16 .
397    drw-r--r--   1 walther  users           0 May 31 23:16 ..
398    crw-r--r--   1 walther  users      0,   0 May 31 23:16 hub</pre>
399  </li>
400  <li> Compare this results with previous one and look for file,
401that appeared (is selected for our sample case). This file is your
402"unknown" USB device (in our sample it is <strong>/dev/bus/usb/0/1</strong>). </li>
403  <li>Now you can run usb_dev_info tool to obtain device information: 
404    <pre>$ usb_dev_info /dev/bus/usb/0/1</pre>
405  </li>
406</ol>
407<a href="#Contents">Table of Contents</a>
408<h3><a name="3.2.2._How_it_looks_like_and_what_does_"></a>4.2.2. How USB device information
409looks like and what does it mean</h3>
410<p>After performing tasks, described in previous clause you'll
411receive something like the following. Note that some details can be
412different for your hardware
413<pre>    $ usb_dev_info /dev/bus/usb/0/1
414    [Device]
415    Class .................. 0
416    Subclass ............... 0
417    Protocol ............... 0
418    Vendor ID .............. 0x08ec   &lt;---------- Vendor ID of your hardware manufacturer
419    Product ID ............. 0x0011   &lt;---------- unique Product ID of your hardware
420    Version ................ 0x0200
421    Manufacturer String .... "      "
422    Product String ......... "      "
423    Serial Number .......... "      "
424      [Configuration 0]               &lt;---------- begin of configuration description 
425        [Interface 0]                 &lt;---------- begin of interface description
426        Class .............. 8        &lt;---------- this interface class. 
427        Subclass ........... 6        &lt;---------- this interface subclass
428        Protocol ........... 80       &lt;---------- protocol used by this interface
429          [Endpoint 0]
430          MaxPacketSize .... 64
431          Interval ......... 0
432          Type ............. Bulk
433          Direction ........ Input
434          [Endpoint 1]
435          MaxPacketSize .... 64
436          Interval ......... 0
437          Type ............. Bulk
438          Direction ........ Output</pre>
439  </li>
440</ul>
441<a href="#Contents">Table of Contents</a>
442<h2><a name="3.3._Device_entries_reservation"></a>4.3. Device entries
443reservation technique</h2>
444<p>Some tricks are required to implement simple and natural ( "one-click"
445) volumes mounting in Tracker. Current versions of BeOS don't fully conform to
446SCSI Common Access Model specifications. Particularly that is mean,
447that there are no possibility to tell system about mass storage devices,
448attached after system boot. If you already used usb mass storage driver
449from Dano you should know this problem - you have to go to DriveSetup
450than Rescan SCSI bus and only after this mount your volume from DriveSetup.</p>
451<p>This Module introduces a workaround for such problem - it just let system to
452know, that "device is here, but not ready at the moment, keep trying". This allows
453to simulate some kind of plug and play in mounting from Tracker. You
454can see those reserved device entries in DriveSetup -a lot of SCSI
455"drives" without media and with ZIP cartridge icon left of it. This
456reservation <a href="#3.4._A_couple_of_words_about_usb_scsi">can be
457configured in settings file</a>.</p>
458<a href="#Contents">Table of Contents</a>
459<h2><a name="3.4._A_couple_of_words_about_usb_scsi"></a>4.4. A couple
460of words about usb_scsi settings file</h2>
461<p>You can configure some aspects of this software behavior through
462editing it's settings file. This file is placed by installation script into
463<strong>/boot/home/config/settings/kernel/drivers/</strong> directory
464and has the name
465<strong>usb_scsi</strong>. It is usual text file and can be edited by
466any text editor you like. Note that improper using of this settings 
467file can crash your system - please be accurate. </p>
468<p>Typically the parameters in settings file
469can be inactive (commented ) or active. For example the following
470quote from settings file contains two parameters: first one
471( reserve_devices ) is inactive ( commented by '#'-sign at the begin of
472line ) and second one ( reserve_luns ) is active and set to 4:
473<pre>#reserve_devices 2 &lt;----------------- inactive
474reserve_luns    4 &lt;----------------- active</pre>
475Please use this notation during editing of settings file.</p>
476<h3><a name="3.4.1_General_Module_settings"></a>4.4.1 The Module configuration parameters</h3>
477This set of parameters is loaded by Module during
478system boot and is used on permanent basis. To apply changes, made by you in any of
479this parameter you have to restart your system
480<ul>
481  <li><strong>reserve_devices</strong>
482    <ul>
483      <li>Amount of device entries to be reserved by The Module.
484If you plan to use more than 2 devices simultaneously than increase this
485parameter. Note that if you set this parameter to 0 - device entry
486reservation will be "switched off" and you have to use DriveSetup for
487first mounting.</li>
488      <li>default value: 2</li>
489      <li>maximal value: 7</li>
490    </ul>
491  </li>
492  <li><strong>reserve_luns</strong>
493    <ul>
494      <li>Amount of logical unit numbers (LUN) to be reserved by The Module for every 
495      device entry defined in reserve_devices parameter. If you plan to use devices 
496      with more than 4 LUNs than increase this parameter. </li>
497      <li>default value: 4</li>
498      <li>maximal value: 8</li>
499    </ul>
500  </li>
501  <li><strong>ignore_sysinit2</strong></li>
502  <ul>
503    <li>If you have R5 with USB patches and your system goes in kernel debugger on
504booting with this software - this parameter is for you. Set it to true
505and reboot to avoid such crashing behavior.</li>
506    <li>default value: false</li>
507  </ul>
508</ul>
509<a href="#Contents">Table of Contents</a>
510<h3><a name="3.4.2._Module_settings_for_debugging_"></a>4.4.2. Parameters for debugging mode</h3>
511<ul>
512  <li><strong>debug_output</strong>
513  </li>
514  <ul>
515    <li>This parameter activates / deactivates debug output.</li>
516    <li>default value: false</li>
517  </ul>
518  <li><strong>debug_output_in_file</strong></li>
519  <ul>
520    <li>This parameter handles redirection of tracing information to
521private log file (<strong>/var/log/usb_scsi.log</strong>). If this
522parameter is false - all debuging information goes to system log.
523    </li>
524    <li>default value: false</li>
525  </ul>
526  <li><strong>debug_output_file_rewrite</strong></li>
527  <ul>
528    <li>Forces private log file to be truncated on every system restart</li>
529    <li>default value: false</li>
530  </ul>
531  <li><strong>debug_trace_commands</strong></li>
532  <ul>
533    <li>Activate this to dump SCSI commands to debug output</li>
534    <li>default value: false</li>
535  </ul>
536  <li><strong>debug_trace_protocol</strong></li>
537  <ul>
538    <li>Activate this to see mass storage protocols work information in debug output</li>
539    <li>default value: false</li>
540  </ul>
541  <li><strong>debug_trace_data_io</strong></li>
542  <li><strong>debug_trace_sense_data</strong></li>
543  <li><strong>debug_trace_bulk_callback</strong></li>
544  <li><strong>debug_trace_time </strong></li>
545  <li><strong>debug_trace_threadid </strong></li>
546  <li><strong>debug_trace_thread_name</strong></li>
547  <li><strong>debug_trace_capacity</strong></li>
548  <ul>
549    <li>Mean this stuff as undocumented because it is rarely used.</li>
550    <li>default values: false</li>
551  </ul>
552</ul>
553<a href="#Contents">Table of Contents</a>
554<h3><a name="3.4.3_Device_settings"></a>4.4.3 Configuring device definitions</h3>
555<p>Device definition allows to override your hardware parameters and tweak
556it's functionality. This parameters are device-specific and reloaded on
557physical device attach. You not need to reboot your system to apply
558your changes in device descriptions. All you need to use changed device
559definitions - unplug your USB hardware from computer and plug it in
560again. </p>
561<p>Typical "non-standard" devices definition looks like this:
562<pre>vendor &lt;&lt;vendor id&gt;&gt; {
563  device &lt;&lt;product id 1&gt;&gt; {
564    &lt;&lt;parameter 1&gt;&gt; 
565    &lt;&lt;parameter 2&gt;&gt;
566         ...
567    &lt;&lt;parameter N&gt;&gt;
568  }
569    ....
570  device &lt;&lt;product id N&gt;&gt; {
571    &lt;&lt;parameter 1&gt;&gt; 
572    &lt;&lt;parameter 2&gt;&gt;
573         ...
574    &lt;&lt;parameter N&gt;&gt;
575  }
576}</pre>
577</p> 
578<p>The real vendor ID and product ID for your hardware you can obtain from
579USB Device information. Note that you can define many devices inside of
580single vendor definition. More real samples of device overrides you can
581find in <a href="usb_scsi.devices">usb_scsi.devices</a> file inside of
582distribution archive. Just <strong>copy the content of corresponding device
583description into settings file</strong> and re-plug your hardware. </p>
584<a href="#Contents">Table of Contents</a>
585<h4><a name="3.4.3.1._Parameters_of_Device_settings"></a>4.4.3.1.Tweaking device definition</h4>
586Every parameter of device definition is like switch. It affects on Module behavior
587only if exists in device definition and is not commented out.
588<ul>
589  <li><strong>fake_inquiry </strong></li>
590  <ul>
591    <li>do not send INQUIRY SCSI command to USB device but handle it in Module.</li>
592  </ul>
593  <li><strong>use_6byte_cmd </strong></li>
594  <ul>
595    <li>use 6 byte length SCSI READ/WRITE/MODE SENSE/SELECT SENSE
596commands instead of 10 byte ones. Typically BeOS uses 6-byte commands
597but many USB mass storage devices doesn't like this. To avoid massive
598device
599redefinitions this Module automatically translates such commands to
60010-byte counterparts. If this default translation doesn't work for you
601- set use_6byte_cmd to avoid it.</li>
602  </ul>
603  <li><strong>trans_test_unit</strong></li>
604  <ul>
605    <li>translate TEST UNIT SCSI command to START STOP one.</li>
606  </ul>
607  <li><strong>no_test_unit</strong></li>
608  <ul>
609    <li>do not send TEST UNIT SCSI command to device. At all.</li>
610  </ul>
611  <li><strong>no_get_max_lun</strong></li>
612  <ul>
613    <li>do not ask for maximal number of supported Logical Unit Numbers</li>
614  </ul>
615  <li><strong>no_prevent_media</strong></li>
616  <ul>
617    <li>do not send to device PREVENT ALLOW MEDIA REMOVAL SCSI command.</li>
618  </ul>
619  <li><strong>use_mode_sense_10</strong></li>
620  <ul>
621    <li>force module to use 10-byte MODE SENSE command. Typically this
622Module detects automatically the supported MODE SENSE command and you
623don't need to set it manually.</li>
624  </ul>
625  <li><strong>force_read_only</strong></li>
626  <ul>
627    <li>force drive to be read-only. It is not 100% guaranteed - but in
628many cases works. If you need "true" read-only volumes - than mount it
629with corresponding flags from command line.</li>
630  </ul>
631</ul>
632<h4><a name="3.4.3.2._Protocol_override_parameters"></a>4.4.3.2.
633Overriding device protocol</h4>
634There are two special parameters allow to override protocol and
635command set used to communicate with device
636<ul>
637  <li><strong>commandset</strong></li>
638  <ul>
639    <li>forces The Module to use specific command set when
640communicating with device. The following command sets are supported</li>
641  </ul>
642  <ul>
643    <ul>
644      <li>SCSI - transparent SCSI command set. USB subclass 6</li>
645      <li>UFI - USB subclass 4</li>
646      <li>ATAPI - USB subclasses 5,2</li>
647      <li>RBC - USB subclass 1</li>
648      <li>QIC157 - USB subclass 3. Used for tape drives so, probably is
649not be anytime usable... but supported. =-)</li>
650      <li>&lt;Vendor&gt; - any vendor-specific, non-standard commands
651set. Note that to work with it a corresponding <a href="#3.6._Protocol_extension_modules">protocol extension module</a> is
652required.</li>
653    </ul>
654  </ul>
655  <li><strong>protocol </strong></li>
656  <ul>
657    <li>forces The Module to use specific protocol when
658communicating with device. The following protocols are supported</li>
659    <ul>
660      <li>BULK - bulk-only. USB protocol 80</li>
661      <li>CB - Control/Bulk/Interrupt protocol (with command
662completion interrupt). USB protocol 1</li>
663      <li>CBI - Control/Bulk/Interrupt protocol (with no command
664completion interrupt) USB protocol 0</li>
665      <li>&lt;Vendor&gt; - any vendor-specific, non-standard protocol.
666Note that to work with it a corresponding <a href="#3.6._Protocol_extension_modules">protocol extension module</a> is
667required. </li>
668    </ul>
669  </ul>
670</ul>
671<a href="#Contents">Table of Contents</a>
672<h2><a name="3.6._Protocol_extension_modules"></a>4.5. Protocol extension modules</h2>
673<p>The BeOS USB Support Module was designed with extensibility in mind. It means, that you
674can add support of vendor-specific, non-standard protocols/commandsets without
675changing the main Module. All you need is protocol extention module, that implements all
676specifics of the data and commands flow.</p>
677<p>Currently available modules:</p>
678<ul>
679  <li>freecom - FREECOM USB-IDE Bridge (ATAPI devices only).</li>
680</ul>
681<p>To install protocol extention module obtain it's distribution archive
682and read instructions inside of it.</p>
683<p>For development questions refer to of already existing protocol extention modules
684or the Author of UBS Support Module.</p>
685 
686<a href="#Contents">Table of Contents</a>
687<h1><a name="6.Contact_information"></a>4.Contact and support information</h1>
688The BeOS USB Support Module project is hosted on <a href="http://www.sourceforge.net">SourceForge</a> 
689and uses some it's powerful development services. There are some ways to inform
690developer about problems or put feature requests for next version
691<ol>
692  <li>Use <a href="http://sourceforge.net/tracker/?group_id=56631&atid=481262">Bug
693Tracker</a> to put problem reports.</li>
694  <li>Use <a href="http://sourceforge.net/forum/forum.php?forum_id=380480">Forum</a>
695to ask simple support question, discuss any problems.
696Do not put your problem reports here - use <a
697 href="http://sourceforge.net/tracker/?group_id=56631&atid=481262">Bug
698Tracker</a>!</li>
699  <li>Use <a
700 href="http://lists.sourceforge.net/lists/listinfo/sis4be-usb_scsi">Mailing-list</a>
701to be informed with latest news, ask questions
702etc. This is also not right place for your problem reports - use <a
703 href="http://sourceforge.net/tracker/?group_id=56631&atid=481262">Bug
704Tracker</a> instead.</li>
705  <li>If you want to share any ideas, that can be good to implement in
706future versions - use <a
707 href="http://sourceforge.net/tracker/?group_id=56631&atid=481265">Feature
708Request Submit form</a>.</li>
709  <li>If you doesn't like any way, mentioned above you can
710contact me personally by <a href="mailto:imker@gmx.li">e-mail</a> but
711remember, that I don't like this
712way!(Joke!) =-) In my opinion such Community Knowledges like
713Forums and mail-lists must be public and available for everyone.</li>
714</ol>
715<a href="#Contents">Table of Contents</a>
716<h1><a name="5.Credits"></a>5.Credits</h1>
717<p>I want to say my "Thanks" to:</p>
718<p><strong>... Sergei Dolgov</strong> ("fyysik") for pushing me to develop this software 
719and help in testing,</p>
720<p><strong>... Valery Rybin</strong> for testing a really lot of those USB
721gadgets he has at his hands,</p>
722<p><strong>... them who</strong> have spend some time to trying all those "-dev-"
723versions in work.</p>
724<a href="#Contents">Table of Contents</a>
725<h1><a name="4._Versions_History_"></a>6. The History</h1>
726<p><table width="100%" border="1">
727  <tbody>
728    <tr>
729      <td><b>Date:</b> </td>
730      <td><b>Version:</b> </td>
731      <td><b>What's new:</b> </td>
732    </tr>
733    <tr>
734      <td> 06 June 2004</td>
735      <td>0.1.0-alpha-1 </td>
736      <td>first public release. </td>
737    </tr>
738  </tbody>
739</table>
740</p>
741<a href="#Contents">Table
742of Contents</a>
743<center>&lt; End of document &gt;</center>
744</body>
745</html>
746