レンタルサーバー・自宅サーバー設定・構築のヒント
レンタルサーバー・自宅サーバー設定・構築のヒント - レンタルサーバー・自宅サーバーの設定・構築情報を公開しています。

コマンドで USB をリセットしてみる

2015年6月23日 2015年6月23日
USB RESET

一般的に USBをリセットする際は、USBのポートから物理的に抜き差しすることで USBポートはリセットされます。

ただ、一時的にUSBを無効にしたい場合など、いつもUSBポートから抜くというのも 手間ですし、ハード的な消耗・摩耗もあり、 後々、そのポートがハード的に使えなくなることも無くないです。

そんなとき、WindowsなどのGUIでは、USBのポートを簡単に無効にできます。

では、LinuxのCUIの世界では、どのようにしたらできるのでしょうか? 今回は、コマンド(CUI)で USB をリセットしてみたいと思います。


コマンドで USB をリセットしてみる

コマンド(CUI)で USB をリセットするのは、一般的に良く知られているのは bind, unbind するだけ?です。

では、早速、やってみましょう。

bind とは、
ここでいう bind は、named サービスのBIND とは異なります。
英語の直訳は、”~と~を結びつける” という意味ですから、ここでは、単純に USBを接続する?ぐらいの意味になります。
逆に、unbind は、USBを解放する?ぐらいの意味になります。

いずれもソフトウェア上での接続・解放ですので、ソースコードを見たわけでもないので想像ですが、 ソフトウェアっぽく話せば、USBポートの監視を停止するか否か?という感じなのではないでしょうか。

コマンドで USB を解放(unbind)してみる

USB を解放(unbind)するには、 当たり前ですが、該当USBポートに正しく認識されている必要があります。

lsusb コマンドで、現在USBに認識されているデバイスリストが出力されます。

$ lsusb
...
Bus 001 Device 009: ID 152d:2338 JMicron Technology Corp. / JMicron USA Technology Corp. JM20337 Hi-Speed USB to SATA & PATA Combo Bridge
Bus 001 Device 002: ID 05e3:0608 Genesys Logic, Inc. USB-2.0 4-Port HUB
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
...

lsusb コマンドの出力情報

  • Bus : バス番号
  • Device : デバイス番号
  • ID : ベンダーID:プロダクトID
  • 最後の文字列 : マニュファクチャ名 プロダクト名

これだの情報で、ある程度、どのUSBポートか判断つくかと思います。
正しく USBポート番号がわからないといけないので、USBのツリーリストを出力します。 先のlsusb コマンドに -t オプションを付加することで出力されます。

$ lsusb -t
...
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/6p, 480M
    |__ Port 2: Dev 2, If 0, Class=Hub, Driver=hub/3p, 480M
        |__ Port 1: Dev 9, If 0, Class=Mass Storage, Driver=usb-storage, 480M
        ...
...

先の デバイスリストの Bus および Device 情報 から、ツリーリストの一致する Bus および Dev 情報 を探せば良いだけです。

見つかったら、その Bus 番号 および Port 番号をツリー情報からたどります。 たどった数値を以下の形式で表現します。(上記の出力例では、 1-2.1 となります。)

Bun Number – Port Number ( . Port Number )
( ()内は、USB Hubが間にある場合 )

この番号を用いて、USB Device 009 を解放(unbind)してみます。

# USB番号 1-2.1 を指定して unbind します。
$ echo -n "1-2.1" > /sys/bus/usb/drivers/usb/unbind

# USB 1-2.1 ポートが非表示になったことを確認します。
$ lsusb -t
...
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/6p, 480M
    |__ Port 2: Dev 2, If 0, Class=Hub, Driver=hub/3p, 480M
        ...
...
ツリーリスト上、見えなくなりました。 実際のデバイスも動作しなくなりました。 しかし、USBのデバイスリストでは、なぜか見えています。
$ lsusb
...
Bus 001 Device 009: ID 152d:2338 JMicron Technology Corp. / JMicron USA Technology Corp. JM20337 Hi-Speed USB to SATA & PATA Combo Bridge
Bus 001 Device 002: ID 05e3:0608 Genesys Logic, Inc. USB-2.0 4-Port HUB
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
...
ここで確認したデバイスだけなのかもしれません、詳しくはわかりません。

コマンドで USB を接続(bind)してみる

先に解放(unbind)したUSBを、再度、接続(bind)してみます。
先と同じように USB番号 1-2.1 を指定して 接続(bind)してみます。

# USB番号 1-2.1 を指定して bind します。
$ echo -n "1-2.1" > /sys/bus/usb/drivers/usb/bind

# USB 1-2.1 ポートが表示になったことを確認します。
$ lsusb -t
...
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/6p, 480M
    |__ Port 2: Dev 2, If 0, Class=Hub, Driver=hub/3p, 480M
        |__ Port 1: Dev 9, If 0, Class=Mass Storage, Driver=usb-storage, 480M
        ...
...

(おまけ)コマンドで USB をリセットしてみる(usb_modeswitch編)

USBリセットを行うだけなら、usb_modeswitch を使ってもできます。
まずは、接続USBを確認します。

$ lsusb
...
Bus 001 Device 009: ID 152d:2338 JMicron Technology Corp. / JMicron USA Technology Corp. JM20337 Hi-Speed USB to SATA & PATA Combo Bridge
Bus 001 Device 002: ID 05e3:0608 Genesys Logic, Inc. USB-2.0 4-Port HUB
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
...

リセットしたい ベンダー番号(ここでは、152d) 、プロダクト番号(ここでは 2338) を使います。

# あるいは、USB のベンダー番号 1、プロダクト番号 9 を指定して リセット します。
$ usb_modeswitch -v 0x152d -p 0x2338 --reset-usb

Look for default devices ...
   product ID matched
 Found devices in default mode (1)
Access device 009 on bus 001
Current configuration number is 1
Use interface number 0

USB description data (for identification)
-------------------------
Manufacturer: JMicron
     Product: USB to ATA/ATAPI bridge
  Serial No.: 45342D6D2A72
-------------------------
Warning: no switching method given. See documentation
Reset USB device .
 Device was reset
-> Run lsusb to note any changes. Bye!


# 同じUSBが 2つ以上挿してある場合、
# さらに、USB のバス番号 1、デバイス番号 9 を指定して リセット します。
$ usb_modeswitch -v 0x152d -p 0x2338 -b 1 -g 9 --reset-usb
...
上記の出力結果では、”切り替えメソッドが提供されていない” 旨の警告メッセージが出力されていますので、 正しくリセットされたかは、不明です。 本来、usb_modeswitch は、モデムなどのデバイスをコントロールするためのコマンドではあるので、本当にリセットできるかは、デバイスに依存すると思います。

ここでは、あくまで、こんなコマンドもあるよ・・という紹介だけですので、ご了解いただければと思います。

(おまけ)USBモジュールについて(補足)

USBモジュールには、いくつかります。
ここで予備知識として、少しだけ解説しておきます。

システム起動時にロードされているUSBモジュールは、以下のコマンドで確認することができます。

$ cat /var/log/dmesg|grep hcd
...
[    1.222396] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    1.222439] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    1.222468] uhci_hcd: USB Universal Host Controller Interface driver
[    1.222673] xhci_hcd 0000:00:14.0: xHCI Host Controller
...
  • ehci_hcd : USB 2.0 対応ドライバー
  • ohci_hcd : OHCI USB 1.x 対応ドライバー
  • uhci_hcd : UHCI USB 1.x 対応ドライバー
  • xhci_hcd : USB 3.0 対応ドライバー
USB 1.x には、2 タイプのUSBがあります。
Intel社が主導、策定したUSB規格が、UHCI です。
また、Microsoft社、National Semiconductor社などが中心となって策定したUSB規格が、OHCI です。
USB 2.0 は、Intel社が無償公開した EHCI が標準となっています。
USB 3.0 については、Intel社が自社のマザーボードなどに組み込むコントローラLSIの仕様を定めた xHCI が実質的な標準となっています。

ここでのコマンドでのUSBリセットは、ハードリセットとは異なるので、注意が必要かと思います。 単純なソフト制御による監視の有無を制御しているに過ぎない?はず?です。(すみません、詳しくコードまで確認していないので想像です。) 当たり前ですが、そもそもUSBが認識できないので、コマンドでリセットして再認識させようと思っても、ここでのコマンドは使えません。

一時的にUSBを無効にしたい場合には、便利なときがありますので、まずは、お試しあれ。

ご利用のブラウザは、広告ブロック(AdBlockなど) が適用となっていませんか?
このサイトでは、コンテンツの一部が非表示、あるいは、コメント、お問い合わせの投稿ができない検索ができないことがあります。


関連記事 :

DNS(BIND)をインストールする

今回は、DNS(BIND)です。DNS自体は、ドメイン管理元で、ほとんど提供されていますから、あえて自前で設置する意味はあまりないかもしれません ...

評判のCloudCore VPSでVNCリモートコンソールを使ってGUIを使ってみた

何かと評判のCloudCore VPSですが、今回リモートコンソール、OS初期化機能が追加されました。 随時機能アップを図っていく ...

DeabinのLive USB を作成する

今回は、Live CD ならぬ Live USB を作成してみたいと思います。 Live USBをWindows上で作成できる作成ツー ...

FreeBSDでファイアウォール(ipfw)

さて、SSHでログイン もできるし、日本語環境 もできたので、さぁ、apacheでも・・・と思いきや。 まだまだ、やらねばならな ...

VMware のCentOS, Scientifixc Linux のClone(コピー)でeth0 が使えなくなる件

VMWareで構築した CentOS 6, Scientifixc Linux 6 のファイルをコピーしてClone(複製)を作成することがあり ...



コメントを投稿 :

お名前 *

メールアドレス *
( メールアドレスが公開されることはありません。)

サイトアドレス

コメント *

* 印の項目は、入力が必要な項目です。




最近投稿の記事

[ 画像提供元 : Amazon ] 先日、1TBのディスクの入れ替え時にバックアップをとろうとディスクコピーを行いました。 その際 ...

Windows で Linux ファイルシステム Ext4 のディスクをマウントするには? Ext3Fsd が、おそらく、最も簡単なツール ...

今回は、Windows で Compass を使ってみました。 Compass とは、 Sass(サス、Syntactica ...

今回は、Anti Adblock を使ってみました。 Anti Adblock とは、 そもそも Adblock という ウェブ ...

デスクトップ環境でない サーバーで、Webページのキャプチャー画像をコマンドで撮る には、wkhtmltoimage, CutyCapt ...


さくらのVPS 全プラン リニューアルです。(石狩(北海道)も選択可)


root権限ありで ¥685 / 月 ~ と非常にリーズナブルな CPU 1(core)の 512 プランから、 最高 CPU 10(core), メモリ 32(GB), SSD容量 800(GB) までとプランが充実。
ディスクは、SSDとHDDの選択が可能になった他、データセンターは人気の東京、石狩(北海道)となりました。

また、どのプランでも好きなOSが選べます
( CentOS, Fedora, Scientific Linux, FreeBSD, Ubutu, Debian )

管理人もおすすめのVPSです。
試用期間がありますから、一度、お試しを!!

詳しくは、http://vps.sakura.ad.jp/さくらのVPSのサイトへ へどうぞ!!

カテゴリ


Serverman@VPS 完全1ヶ月無料 キャンペーン実施中です。


Serverman@VPS 完全1ヶ月無料 キャンペーン実施中です。
最近、スワップにも対応した Serverman@VPS は、かなりリーズナブルかもです。

  • メモリ1GB~2GBのEntryプラン :月額:490円
  • メモリ2MB~4GBのStandardプラン :月額:980円
  • メモリ4GB~8GBのProプラン :月額:1,980円

新規申し込みで1ヶ月間完全無料となるキャンペーンを実施中です。
Serverman@VPSの特徴は、安さとIPv6対応です。また、初期設定費0円もポイントです。

IPv6でちょっと遊んでみたい方には、おすすめかもしれませんね。最低利用期間もありませんから、気に入らないときは即解約もできます。

Serverman@VPSの詳細については、 http://dream.jp/vps/ Serverman@VPSのサイトへへどうぞ。



KVM採用 ConoHa VPSは、時間単位で借りれる便利なVPSです。


ConoHa VPS は、初期設定費0円最低利用期間無し時間単位で清算可能、 さらに、Web APIを使って自動化を図ることもできる便利なVPSです。

海外サーバー設置も可能で、ローカル接続にも対応と、かなり、機能豊富なサーバーです。

新規ユーザ登録で、クーポンもらえますから、まずは、お試しですね。

ConoHa VPSの詳細については、
http://www.conoha.jp/ へどうぞ。

KVM採用 お名前.com VPS(KVM) 2G プラン 初期設定費無料 キャンペーン 実施です。


メモリ2GBプラン CPU:3core、Disk:200GB
月額:1,153円から (初期設定:1,680円0円)

さくらのVPSがリニューアルされてもなんのその。
1GBメモリ / 2Core を ¥834 – の格安価格で提供中です!
間違いなくスペックからすると割安感ありです。
年間割引時の途中解約で返金がないのは、 ちょっと残念ですが、それでもこの割安感は魅力です。

まずは、お試しですね。

お名前.com VPS(KVM)の詳細については、
http://www.onamae-server.com/vps/ へどうぞ。(お試し期間が15日あります。)



  • ソーシャルブックマーク

  • はてなブックマークへ追加するはてな登録数
ページトップへ
Time : 0.1779 [s]