X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=usr_bin%2Fusbtree;fp=usr_bin%2Fusbtree;h=0000000000000000000000000000000000000000;hb=c08b156abb0b2b1b1335cb1ada0c08758553238b;hp=c29eb008a8bcc852746e0cd8fea3d3eded14f021;hpb=b0c3e5ff760f99d6ff7721852bc1a0d73c5ea201;p=grml-scripts.git diff --git a/usr_bin/usbtree b/usr_bin/usbtree deleted file mode 100755 index c29eb00..0000000 --- a/usr_bin/usbtree +++ /dev/null @@ -1,177 +0,0 @@ -#!/usr/bin/perl -# -# Reads /proc/bus/usb/devices and selectively lists and/or -# interprets it. -# -# Originally written by Randy Dunlap. -# - -$DEVFILENAME = "/proc/bus/usb/devices"; -$PROGNAME = $0; - -if (! open (DEVNUM, "<$DEVFILENAME")) -{ - print "$PROGNAME: cannot open '$DEVFILENAME'\n"; - exit 1; -} - -$showconfig = "yes"; - -while ($line = ) # read a text line from DEVNUM -{ - # skip all lines except those we recognize: - if (($line !~ "^C:") # Configuration: one is active - && ($line !~ "^D:") # Device: - && ($line !~ "^I:") # Interface: protocol group - && ($line !~ "^S:") # String: used with root hub - && ($line !~ "^T:") # Topology: starts each device - ) - { - next; # to the next line - } - - chomp $line; # remove line endings - - # First convert '=' signs to spaces. - $line =~ tr/=/ /; - - # and convert all '(' and ')' to spaces. - $line =~ tr/(/ /; - $line =~ tr/)/ /; - - # split the line at spaces. - @fields = split / +/, $line; - - # T: Bus=01 Lev=01 Prnt=01 Port=03 Cnt=01 Dev#= 3 Spd=1.5 MxCh= 0 - if ($line =~ "^T:") - { - # split yields: $bus, $level, $parent, $port, $count, $devnum, $speed, $maxchild. - - $bus = @fields [2]; - $level = @fields [4]; - $parent = @fields [6]; # parent devnum - $port = @fields [8] + 1; # make $port 1-based - $count = @fields [10]; - $devnum = @fields [12]; - $speed = @fields [14]; - $maxchild = @fields [16]; - $devclass = "?"; - $intclass = "?"; - $driver = "?"; - $ifnum = "?"; - $showclass = "?"; # derived from $devclass or $intclass - $lastif = "?"; # show only first altsetting - $HCtype = "?"; - $showconfig = "no"; - $nconfig = "0"; - next; - } # end T: line - - # only show the _active_ configuration - # C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=100mA - elsif ( $line =~ "^C:" ) { - if ( $line =~ "^C:\\*" ) { - $showconfig = @fields[4]; - } else { - $showconfig = "no"; - } - next; - } - - # D: Ver= 1.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 - elsif ($line =~ "^D:") - { # for D: line - $devclass = @fields [5]; - $nconfig = @fields [13]; - next; - } - - # in case this is a root hub, look at the device strings. - # - S: Manufacturer:Linux 2.6.5 ehci_hcd [all 2.6] - # - S: Product=USB UHCI Root Hub [all 2.4, 2.2] - # - S: Product=OPTi Inc 82C861 [2.6/PCI_NAMES] - elsif ( $line =~ "^S:" ) - { # for S: line - if ( $level == 00 && $line =~ "hcd" ) - { - $HCtype = @fields [4]; - } - elsif ( $level == 00 && $line =~ "HCI" && $HCtype eq "?") - { - $HCtype = @fields [3]; - } - next; - } - - # the rest of this code: - # - only shows interface descriptors - # - for the active configuration - # - for the first (prefer: active!) altsetting - elsif ( ! ( $line =~ "^I:" ) - || "$showconfig" eq "no") { - next; - } - - - # I: If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=01 Prot=02 Driver=hid - $intclass = @fields [9]; - $ifnum = @fields [2]; - $driver = @fields [15]; - - if (($devclass eq ">ifc") || ($devclass eq "unk.")) - { # then use InterfaceClass, not DeviceClass - $showclass = $intclass; - } - else - { # use DeviceClass - $showclass = $devclass; - } - - if ($level == 0) - { - # substitute real driver name - if ( $HCtype =~ "UHCI-alt" ) - { - $HC = "uhci"; - } - elsif ( $HCtype =~ "UHCI" ) - { - $HC = "usb-uhci"; - } - elsif ( $HCtype =~ "OHCI" ) - { - $HC = "usb-ohci"; - } - else - { - $HC = $HCtype; - } - - print sprintf ("/: Bus $bus.Port $port: Dev $devnum, Class=root_hub, Driver=%s/%sp, %sM\n", - $HC, $maxchild, $speed ); - } - elsif ($lastif ne $ifnum) - { - $temp = $level; - while ($temp >= 1) - { - print " "; - $temp--; - } - - if ($nconfig ne "1") { - $temp = " Cfg $showconfig/$nconfig"; - } else { - $temp = ""; - } - - print sprintf ("|__ Port $port: Dev $devnum$temp, If $ifnum, Class=$showclass, Driver=$driver%s, %sM\n", - ($maxchild == 0) ? "" : ("/" . $maxchild . "p"), - $speed); - $lastif = $ifnum; - } -} # end while DEVNUM - -close (DEVNUM); - -# END.