slitaz-tools annotate tinyutils/tazhw @ rev 930
Finish previous tiny edit
author | Aleksej Bobylev <al.bobylev@gmail.com> |
---|---|
date | Tue Nov 25 00:41:01 2014 +0200 (2014-11-25) |
parents | ddddaa342ba0 |
children | 5d80f6fdbdb7 |
rev | line source |
---|---|
pankso@299 | 1 #!/bin/sh |
pankso@299 | 2 # |
pankso@299 | 3 # SliTaz Hardware configuration tool. Auto-detect and configure in a |
paul@317 | 4 # simple way all PCI, PCMCIA and USB devices. Some Wireless Adapters |
paul@317 | 5 # need non-free firmware not installed by default. Users must use the |
paul@835 | 6 # option --get-firmware to force installation. GUI uses Yad and is |
paul@317 | 7 # called by args such as all box functions. |
pankso@299 | 8 # |
pascal@821 | 9 # (c) 2009-2014 SliTaz GNU/Linux - GNU GPL v3 |
pankso@299 | 10 # |
al@813 | 11 # Authors: Christophe Lincoln <pankso@slitaz.org> |
al@813 | 12 # Rohit Joshi <jozee@slitaz.org> |
jozee@457 | 13 # |
al@813 | 14 . /lib/libtaz.sh |
pankso@830 | 15 export TEXTDOMAIN='slitaz-tools' # i18n text mode |
pankso@299 | 16 |
al@813 | 17 usage() { |
al@813 | 18 cat << EOT |
al@813 | 19 |
al@813 | 20 $(_n 'SliTaz Hardware configuration') |
al@813 | 21 |
al@813 | 22 $(boldify "$(_n 'Usage:')") $(basename $0) [$(_n 'command')] [--$(_n 'option')] |
al@813 | 23 |
al@813 | 24 $(boldify "$(_n 'Commands:')") |
al@813 | 25 usage $(_n 'Print this short usage.') |
al@813 | 26 init $(_n 'Used at boot time to configure devices.') |
al@813 | 27 setup $(_n 'Setup hardware devices.') |
al@813 | 28 detect-pci $(_n 'Detect all PCI devices.') |
al@813 | 29 detect-usb $(_n 'Detect all USB devices.') |
al@813 | 30 detected-modules $(_n 'List all detected Kernel modules.') |
al@813 | 31 |
al@813 | 32 $(boldify "$(_n 'Options:')") |
al@813 | 33 --get-firmware $(_n 'Get and install non-free firmware (PCI and USB).') |
al@813 | 34 |
al@813 | 35 EOT |
pankso@299 | 36 } |
pankso@299 | 37 |
al@813 | 38 check_firmware() { |
pankso@299 | 39 if [ -x /usr/bin/get-$mod-firmware ]; then |
pankso@299 | 40 if [ ! -d /var/lib/tazpkg/installed/$mod-firmware ]; then |
paul@811 | 41 # We need an active connection to install firmware and we |
pankso@299 | 42 # only install firmware if specified from cmdline. |
pankso@299 | 43 if ifconfig | grep -q "inet addr"; then |
al@813 | 44 # Ensure module is not loaded and get files. |
pankso@299 | 45 if [ "$firmware" == "get" ]; then |
pankso@299 | 46 rmmod $mod 2>/dev/null |
pankso@299 | 47 get-$mod-firmware |
pankso@299 | 48 else |
al@813 | 49 _ '* Use --get-firmware option to install missing files.' |
pankso@299 | 50 fi |
pankso@299 | 51 else |
al@813 | 52 _ '* No active connection to get and install firmware.' |
pankso@299 | 53 fi |
pankso@299 | 54 else |
al@813 | 55 _ '> Firmware in use: $mod-firmware' |
pankso@299 | 56 fi |
pankso@299 | 57 fi |
pankso@299 | 58 } |
pankso@299 | 59 |
al@813 | 60 load_module() { |
pankso@299 | 61 if ! lsmod | grep -q "^$mod"; then |
pankso@829 | 62 # Check if builtin, loaded or missing |
pankso@829 | 63 if modprobe $mod 2>/dev/null; then |
pankso@829 | 64 if zcat /proc/config.gz | fgrep -i $mod | fgrep -q '=y'; then |
pankso@829 | 65 _ '* Builtin module : $mod' |
pankso@829 | 66 unset mod |
pankso@829 | 67 else |
pankso@829 | 68 _ "* Loaded module : $mod" |
pankso@829 | 69 fi |
pankso@829 | 70 else |
pankso@829 | 71 if zcat /proc/config.gz | fgrep -i $mod | fgrep -q '=y'; then |
pankso@829 | 72 _ '* Builtin module : $mod' |
pankso@829 | 73 unset mod |
pankso@829 | 74 else |
pankso@829 | 75 _ '! Missing module : $mod' |
pankso@829 | 76 fi |
gokhlayeh@705 | 77 fi |
pankso@299 | 78 else |
pankso@829 | 79 _ '> Module in use : $mod' |
pankso@299 | 80 fi |
pankso@829 | 81 # Add it to load automatically at next boot. |
pankso@829 | 82 if ! echo "$LOAD_MODULES" | grep -q "$mod"; then |
pankso@829 | 83 sed -i s/"LOAD_MODULES=\"$LOAD_MODULES\""/"LOAD_MODULES=\"$LOAD_MODULES $mod\""/ \ |
pankso@829 | 84 /etc/rcS.conf |
pankso@829 | 85 fi |
pankso@829 | 86 . /etc/rcS.conf |
pankso@299 | 87 } |
pankso@299 | 88 |
pankso@299 | 89 # Detect PCI devices and load kernel module only at first boot, |
pankso@299 | 90 # in LiveCD mode or with the command 'detect-pci'. |
al@813 | 91 detect_pci_devices() { |
pankso@299 | 92 if [ ! -s /var/lib/detected-modules ]; then |
pankso@299 | 93 . /etc/rcS.conf |
pankso@299 | 94 # We need module_name to match output of lsmod. |
pankso@829 | 95 list=$(lspci -k | grep "driver" | cut -d ":" -f 2 | sed s/-/_/g) |
pankso@299 | 96 echo "$list" > /var/lib/detected-modules |
pankso@829 | 97 for mod in $(cat /var/lib/detected-modules | uniq) |
pankso@829 | 98 do |
pankso@299 | 99 check_firmware |
pankso@299 | 100 load_module |
pankso@299 | 101 done |
pankso@299 | 102 fi |
pankso@299 | 103 } |
pankso@299 | 104 |
pankso@299 | 105 # Detect all USB devices. |
al@813 | 106 detect_usb_devices() { |
pascal@834 | 107 if [ -e /sys/bus/usb/devices/usb/usb1 ]; then |
pankso@832 | 108 for product in /sys/bus/usb/devices/*/product |
pankso@832 | 109 do |
pankso@832 | 110 path=$(dirname $product) |
pankso@832 | 111 product=$(cat $product) |
pankso@832 | 112 config=$(cat $path/configuration) |
pankso@832 | 113 debug "$path" |
pankso@832 | 114 . $path/[0-9]*/uevent |
pankso@832 | 115 [ ! "$DRIVER" ] && DRIVER="(none)" |
pankso@832 | 116 echo "$product $config $(indent 40 $DRIVER)" |
pankso@832 | 117 unset DRIVER |
pankso@299 | 118 done |
pankso@299 | 119 fi |
pankso@299 | 120 } |
pankso@299 | 121 |
pankso@299 | 122 # Get firmware used by check_firmware() |
pankso@299 | 123 if [ "$2" == "--get-firmware" ]; then |
pankso@299 | 124 firmware='get' |
pankso@299 | 125 fi |
al@813 | 126 |
pankso@299 | 127 # What to do. |
pankso@299 | 128 case "$1" in |
pankso@830 | 129 -i|init) |
pankso@299 | 130 check_root |
al@813 | 131 _ 'Detecting PCI devices Kernel modules...' |
pankso@299 | 132 detect_pci_devices |
al@813 | 133 _ 'Detecting USB devices Kernel modules...' |
pankso@326 | 134 detect_usb_devices ;; |
pankso@830 | 135 -dp|detect-pci) |
pankso@299 | 136 check_root |
al@813 | 137 newline; _ 'Detected PCI devices Kernel modules'; separator |
pankso@299 | 138 rm -f /var/lib/detected-modules |
pankso@299 | 139 detect_pci_devices |
al@813 | 140 separator; newline ;; |
pankso@830 | 141 -du|detect-usb) |
pankso@299 | 142 check_root |
al@813 | 143 newline; _ 'Detected USB devices Kernel modules'; separator |
pankso@299 | 144 rm -f /var/lib/detected-usb-modules |
pankso@299 | 145 detect_usb_devices |
al@813 | 146 separator; newline ;; |
pankso@830 | 147 -s|setup) |
al@813 | 148 SETUP_OPTIONS=$(echo "$@" | sed 's/setup//') |
pankso@828 | 149 check_root |
jozee@457 | 150 hwsetup $SETUP_OPTIONS ;; |
pankso@830 | 151 -dm|detected-modules) |
al@813 | 152 newline; _ 'Detected PCI and USB modules'; separator |
pankso@299 | 153 cat /var/lib/detected-modules |
pankso@304 | 154 cat /var/lib/detected-usb-modules 2>/dev/null |
al@813 | 155 separator; newline ;; |
pankso@830 | 156 *) |
pankso@299 | 157 usage ;; |
pankso@299 | 158 esac |
pankso@299 | 159 |
pankso@299 | 160 exit 0 |