こんばんは、齊藤です。 色々な情報を頂きましてありがとうございます。
ちなみに、斎藤さんの cat /proc/bus/usb/devices の結果ってどうなっていますか?
cat /proc/bus/usb/devicesをやってみました。 結論を先に報告いたしますと以下の結果となりました。 ・3台のUSB HDDは、それぞれ3つの項目で出てきました。 ・3台の各USB HDDに関しては、Cnt、Dev#の値が それぞれ連番で付いてました。それ以外の内容はまったく 同一です。Driverもusb-strageとなっています。 ・他にUSBメモリも差してみました。その結果、および M. Takeyamaさんのログと、USB HDDの相違点は、 USB HDDにはSerialNumberの項目がないことです。 (Hotplugは、USBデバイスを認識したとき「SerialNumber が存在した場合」は、その番号をデフォルトのマウントポイ ントに組み込もうとし、それが存在しない場合はManufacturer およびProductの値を使おうとする?(で、その2つの値が まったく同一の場合は、連番も付かずユニークにならない 構造となっているということでしょうか)。 シリアルナンバーが存在しないことが、このデバイスの認識と して正常な状態なのかは分からなかったですが・・・。 以下、cat /proc/bus/usb/devicesの結果の抜粋です。 ------------------------------------------------------------- T: Bus=05 Lev=01 Prnt=01 Port=03 Cnt=01 Dev#= 3 Spd=480 MxCh= 0 D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=07f7 ProdID=0105 Rev= 0.00 S: Manufacturer=CENTURY Corporation S: Product=CSZ35U2 C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr= 2mA I: If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms T: Bus=05 Lev=01 Prnt=01 Port=04 Cnt=02 Dev#= 4 Spd=480 MxCh= 0 (以下同文) T: Bus=05 Lev=01 Prnt=01 Port=05 Cnt=03 Dev#= 5 Spd=480 MxCh= 0 (以下同文) T: Bus=05 Lev=01 Prnt=01 Port=07 Cnt=04 Dev#= 6 Spd=480 MxCh= 0 D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=08ec ProdID=0012 Rev= 2.00 S: Manufacturer=I-O DATA S: Product=USB Flash Disk S: SerialNumber=06E05A4093516A80 C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=178mA I: If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms ------------------------------------------------------------- 以上です。 ------------------------------------------ 齊藤 貴義 Mail mail@mirai-city.org Web http://www.mirai-city.org ------------------------------------------
M. Takeyamaです。 On Wed, 19 Jan 2005 00:10:21 +0900 SAITO TAKAYOSHI <mail@mirai-city.org> wrote:
こんばんは、齊藤です。
色々な情報を頂きましてありがとうございます。 いえいえ。(こだわりモードに突入中 かな。)
[...]
・他にUSBメモリも差してみました。その結果、および M. Takeyamaさんのログと、USB HDDの相違点は、 USB HDDにはSerialNumberの項目がないことです。
(Hotplugは、USBデバイスを認識したとき「SerialNumber が存在した場合」は、その番号をデフォルトのマウントポイ ントに組み込もうとし、それが存在しない場合はManufacturer およびProductの値を使おうとする?(で、その2つの値が まったく同一の場合は、連番も付かずユニークにならない 構造となっているということでしょうか)。 Hotplugの名前命名ロジックがSerialを前提としているような... #USBデバイスって、SerialNumber が 必須なのかな(?)
大まかな命名ロジック --- 多分。 シリアルがあるとき 1)"usb-storage-$serial" シリアルがないとき 2)identifier="${manufacturer}-${product}" シリアルがなくて、manufacturer, productのどちらかが ないときは、Vendor、 ProdIDをつかう。 (Vendor、ProdIDは、USBデバイスなら絶対についていたと思う) 3)identifier="0x${idvendor}-0x${idproduct}" ちなみに、命名ロジックは、udevがやっているような感じが... #(udev.get_unique_hardware_path.sh) #このファイルの中にも、シリアルないものは、badデバイス #みたいなコメントみかけましたけど...
シリアルナンバーが存在しないことが、このデバイスの認識と して正常な状態なのかは分からなかったですが・・・。 シリアルナンバーが必須かもと思う理由は、
uhci_hcd(USB HUB(?))のところにも、"Vendor=0000 ProdID=0000 Rev= 2.06" などともに、"Manufacturer=Linux 2.6.5-7.111.19-default uhci_hcd" "Product=UHCI Host Controller","SerialNumber=0000:00:1d.0" SerialNumberがついています。 また、別のIO-DATAのカードリーダをつけたところ... ”SerialNumber=000000000000”の時も /media/usb-storage-odd-IODATADEVICEINC-USB27inRW:0:0:3p1 というように、 manufacturer名+product名 というディレクトリ名になるデバイスに遭遇できました。 -----(cat /proc/bus/usb/devices からの抜粋)----- 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.10 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Vendor=0000 ProdID=0000 Rev= 2.06 S: Manufacturer=Linux 2.6.5-7.111.19-default uhci_hcd S: Product=UHCI Host Controller S: SerialNumber=0000:00:1d.0 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= 2 Ivl=255ms T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=12 MxCh= 0 D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=04bb ProdID=0338 Rev= 2.20 S: Manufacturer=I-O DATA DEVICE,INC. S: Product=USB2-7inRW S: SerialNumber=000000000000 C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=500mA I: If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms --------------------------------------------- ----- M. Takeyama __________________________________ Do You Yahoo!? Upgrade Your Life http://bb.yahoo.co.jp/
M. Takeyamaです。 #自己フォローモード #(自分の中では、Hotplugのユニーク問題は解決したかなモード) On Wed, 19 Jan 2005 13:04:01 +0900 "M. Takeyama(takezou)" <takezou040728@yahoo.co.jp> wrote: [...]
(Hotplugは、USBデバイスを認識したとき「SerialNumber が存在した場合」は、その番号をデフォルトのマウントポイ ントに組み込もうとし、それが存在しない場合はManufacturer およびProductの値を使おうとする?(で、その2つの値が まったく同一の場合は、連番も付かずユニークにならない 構造となっているということでしょうか)。 Hotplugの名前命名ロジックがSerialを前提としているような... #USBデバイスって、SerialNumber が 必須なのかな(?) USBデバイスにSerialNumber(の情報)が必須かどうかは別として。
<今後の注意点まとめモード(hotplugのモードでの利用の観点から)> ・SerialNumberのついているデバイスを購入すること。 (購入時に確認すること --- 現実的に難しいそう) ・複数のデバイスを同時使用するような場合は、同じメーカのモノ で統一するのは避ける。同じメーカならプロダクトIDが違う ものにする。 (Vendor、ProdIDの組み合わせでユニークなるようにするということです。) #SerialNumberのついているデバイスは問題なし。 ・バグfixしたudevにする その後、”udev.get_unique_hardware_path.sh”が hotplugのマウント ポイントの命名ロジックをやっているということがわかりました。 私や齊藤さんなどのいままでの調査結果を検討したところ USBのBus情報とDevice情報を付加してあげればユニーク なるのではないかと思います。 #簡単に各デバイスのBus情報とDevice情報がすぐにとって #来れるか? (んーん。わからない。) identifier="${manufacturer}-${product}-${usbbus}-${usbdevice}" or identifier="0x${idvendor}-0x${idproduct}-${usbbus}-${usbdevice}" 試しに、明示的にusbbus、usbdeviceという変数(勝手に作って)に ダミーデータをセットしてやってみました。 /media/usb-storage-odd-IODATADEVICEINC-USB27inRW:0:0:3p1 |(こんな風になりました。) V /media/usb-storage-odd-IODATADEVICEINC-USB27inRW-000-001:0:0:3p1 -----(その時の変更点)------ diff udev.get_unique_hardware_path.sh udev.get_unique_hardware_path.sh.org 227,231c227 < # identifier="0x${idvendor}-0x${idproduct}" < < usbbus="000" < usbdevice="001" < identifier="0x${idvendor}-0x${idproduct}-${usbbus}-${usbdevice}" ---
identifier="0x${idvendor}-0x${idproduct}"
233,237c229 < # identifier="${manufacturer}-${product}" < < usbbus="000" < usbdevice="001" < identifier="${manufacturer}-${product}-${usbbus}-${usbdevice}" ---
identifier="${manufacturer}-${product}"
---------------------------- P.S. "cat /proc/bus/usb/devices" の情報ですけど。 "lsusb -v "でも同じ情報が取れることがわかりました。 #lsusbのコマンドの存在を知りませんでした。 ----- M. Takeyama __________________________________ Do You Yahoo!? Upgrade Your Life http://bb.yahoo.co.jp/
M. Takeyamaです。 #追加説明モード On Wed, 19 Jan 2005 18:59:02 +0900 "M. Takeyama(takezou)" <takezou040728@yahoo.co.jp> wrote: [...]
・バグfixしたudevにする その後、”udev.get_unique_hardware_path.sh”が hotplugのマウント ポイントの命名ロジックをやっているということがわかりました。 私や齊藤さんなどのいままでの調査結果を検討したところ USBのBus情報とDevice情報を付加してあげればユニーク なるのではないかと思います。 #簡単に各デバイスのBus情報とDevice情報がすぐにとって #来れるか? (んーん。わからない。) このロジックですが制限事項があります。
本来、USBバスのどこにさしてもマウントポイントが 変わらない。 #マウントポイントにBus情報とDevice情報と関連がない為。 それをBus情報とDevice情報を付加してあげることで、 さす場所やさす順番によってマウントポイントが変わって しまうという副作用が発生すると思います。 #同じ2つデバイスを交換してしまうと、マウントポイント #が入れ変わってしまうこともありえますね。 最終的には、同じメーカの同じProdIDのものを同時に 使用する場合にどうケアするか?(SerialNumberの無いもの) ということなので検討の価値はあるかも。(技術的に可能なら) ----- M. Takeyama __________________________________ Do You Yahoo!? Upgrade Your Life http://bb.yahoo.co.jp/
participants (2)
-
M. Takeyama(takezou)
-
SAITO TAKAYOSHI