slitaz-tools annotate tinyutils/tazhw @ rev 1004
tazbox: add logout menu handling, update pot/po files.
author | Aleksej Bobylev <al.bobylev@gmail.com> |
---|---|
date | Sat Nov 12 12:54:13 2016 +0200 (2016-11-12) |
parents | 9b12f3318e8d |
children | 491239328786 |
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 # |
al@939 | 9 # (c) 2009-2015 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@939 | 14 |
al@813 | 15 . /lib/libtaz.sh |
pankso@830 | 16 export TEXTDOMAIN='slitaz-tools' # i18n text mode |
pankso@299 | 17 |
al@813 | 18 usage() { |
al@813 | 19 cat << EOT |
al@813 | 20 |
al@813 | 21 $(_n 'SliTaz Hardware configuration') |
al@813 | 22 |
al@813 | 23 $(boldify "$(_n 'Usage:')") $(basename $0) [$(_n 'command')] [--$(_n 'option')] |
al@813 | 24 |
al@813 | 25 $(boldify "$(_n 'Commands:')") |
al@813 | 26 usage $(_n 'Print this short usage.') |
al@813 | 27 init $(_n 'Used at boot time to configure devices.') |
al@813 | 28 setup $(_n 'Setup hardware devices.') |
al@813 | 29 detect-pci $(_n 'Detect all PCI devices.') |
al@813 | 30 detect-usb $(_n 'Detect all USB devices.') |
al@813 | 31 detected-modules $(_n 'List all detected Kernel modules.') |
al@813 | 32 |
al@813 | 33 $(boldify "$(_n 'Options:')") |
al@813 | 34 --get-firmware $(_n 'Get and install non-free firmware (PCI and USB).') |
al@813 | 35 |
al@813 | 36 EOT |
pankso@299 | 37 } |
pankso@299 | 38 |
al@939 | 39 |
al@813 | 40 check_firmware() { |
pankso@299 | 41 if [ -x /usr/bin/get-$mod-firmware ]; then |
pankso@299 | 42 if [ ! -d /var/lib/tazpkg/installed/$mod-firmware ]; then |
paul@811 | 43 # We need an active connection to install firmware and we |
pankso@299 | 44 # only install firmware if specified from cmdline. |
pankso@299 | 45 if ifconfig | grep -q "inet addr"; then |
al@813 | 46 # Ensure module is not loaded and get files. |
pankso@299 | 47 if [ "$firmware" == "get" ]; then |
pankso@299 | 48 rmmod $mod 2>/dev/null |
pankso@299 | 49 get-$mod-firmware |
pankso@299 | 50 else |
al@813 | 51 _ '* Use --get-firmware option to install missing files.' |
pankso@299 | 52 fi |
pankso@299 | 53 else |
al@813 | 54 _ '* No active connection to get and install firmware.' |
pankso@299 | 55 fi |
pankso@299 | 56 else |
al@943 | 57 _ '> Firmware in use: %s' "$mod-firmware" |
pankso@299 | 58 fi |
pankso@299 | 59 fi |
pankso@299 | 60 } |
pankso@299 | 61 |
al@939 | 62 |
al@813 | 63 load_module() { |
pankso@299 | 64 if ! lsmod | grep -q "^$mod"; then |
pankso@829 | 65 # Check if builtin, loaded or missing |
pascal@996 | 66 if zcat /proc/config.gz | fgrep -i $mod | fgrep -q '=y'; then |
pascal@996 | 67 _ '* Builtin module : %s' "$mod" |
pascal@996 | 68 unset mod |
pascal@996 | 69 elif modprobe $mod 2>/dev/null; then |
pascal@996 | 70 _ '* Loaded module : %s' "$mod" |
pankso@829 | 71 else |
pascal@996 | 72 _ '! Missing module : %s' "$mod" |
gokhlayeh@705 | 73 fi |
pankso@299 | 74 else |
al@943 | 75 _ '> Module in use : %s' "$mod" |
pankso@299 | 76 fi |
pankso@829 | 77 # Add it to load automatically at next boot. |
pankso@829 | 78 if ! echo "$LOAD_MODULES" | grep -q "$mod"; then |
pankso@829 | 79 sed -i s/"LOAD_MODULES=\"$LOAD_MODULES\""/"LOAD_MODULES=\"$LOAD_MODULES $mod\""/ \ |
pankso@829 | 80 /etc/rcS.conf |
pankso@829 | 81 fi |
pankso@829 | 82 . /etc/rcS.conf |
pankso@299 | 83 } |
pankso@299 | 84 |
al@939 | 85 |
pascal@940 | 86 module_name() |
pascal@940 | 87 { |
pascal@940 | 88 local mod mod2 |
pascal@940 | 89 while read mod; do |
pascal@941 | 90 if [ -d /sys/module -a ! -d /sys/module/${mod//-/_} ]; then |
pascal@940 | 91 mod2=$(ls -d /sys/module/*/drivers/*:$mod 2>/dev/null | \ |
pascal@940 | 92 sed 's|/sys/module/\(.*\)/drivers/.*|\1|') |
pascal@940 | 93 [ "$mod2" ] && mod=$mod2 |
pascal@940 | 94 fi |
pascal@940 | 95 echo ${mod//-/_} |
pascal@940 | 96 done |
pascal@940 | 97 } |
pascal@940 | 98 |
pascal@940 | 99 |
pankso@299 | 100 # Detect PCI devices and load kernel module only at first boot, |
pankso@299 | 101 # in LiveCD mode or with the command 'detect-pci'. |
al@939 | 102 |
al@813 | 103 detect_pci_devices() { |
pankso@299 | 104 if [ ! -s /var/lib/detected-modules ]; then |
pankso@299 | 105 . /etc/rcS.conf |
pankso@299 | 106 # We need module_name to match output of lsmod. |
pascal@996 | 107 list=$(sed '/^DRIVER=/!d;s/.*=/ /' /sys/bus/pci/devices/*/uevent| module_name) |
pankso@299 | 108 echo "$list" > /var/lib/detected-modules |
pascal@941 | 109 for mod in $(sort < /var/lib/detected-modules | uniq) |
pankso@829 | 110 do |
pankso@299 | 111 check_firmware |
pankso@299 | 112 load_module |
pankso@299 | 113 done |
pankso@299 | 114 fi |
pankso@299 | 115 } |
pankso@299 | 116 |
al@939 | 117 |
pankso@299 | 118 # Detect all USB devices. |
al@939 | 119 |
al@813 | 120 detect_usb_devices() { |
pascal@966 | 121 if [ -e /sys/bus/usb/devices/usb1 ]; then |
pankso@832 | 122 for product in /sys/bus/usb/devices/*/product |
pankso@832 | 123 do |
pankso@832 | 124 path=$(dirname $product) |
pankso@832 | 125 product=$(cat $product) |
pankso@832 | 126 config=$(cat $path/configuration) |
pankso@832 | 127 debug "$path" |
pankso@832 | 128 . $path/[0-9]*/uevent |
pankso@832 | 129 [ ! "$DRIVER" ] && DRIVER="(none)" |
pankso@832 | 130 echo "$product $config $(indent 40 $DRIVER)" |
pankso@832 | 131 unset DRIVER |
pankso@299 | 132 done |
pankso@299 | 133 fi |
pankso@299 | 134 } |
pankso@299 | 135 |
al@939 | 136 |
pankso@299 | 137 # Get firmware used by check_firmware() |
al@939 | 138 |
pankso@299 | 139 if [ "$2" == "--get-firmware" ]; then |
pankso@299 | 140 firmware='get' |
pankso@299 | 141 fi |
al@813 | 142 |
al@939 | 143 |
pankso@299 | 144 # What to do. |
al@939 | 145 |
pankso@299 | 146 case "$1" in |
pankso@830 | 147 -i|init) |
pankso@299 | 148 check_root |
al@813 | 149 _ 'Detecting PCI devices Kernel modules...' |
pankso@299 | 150 detect_pci_devices |
al@813 | 151 _ 'Detecting USB devices Kernel modules...' |
pascal@964 | 152 detect_usb_devices |
pascal@963 | 153 [ -e /sys/class/thermal/thermal_zone0/mode ] && |
pascal@963 | 154 _ 'Enable fan control...' && |
pascal@963 | 155 for zone in /sys/class/thermal/thermal_zone*/mode; do |
pascal@963 | 156 echo -n enabled > $zone |
pascal@963 | 157 done ;; |
pankso@830 | 158 -dp|detect-pci) |
pankso@299 | 159 check_root |
al@943 | 160 title 'Detected PCI devices Kernel modules' |
pankso@299 | 161 rm -f /var/lib/detected-modules |
pankso@299 | 162 detect_pci_devices |
al@943 | 163 footer ;; |
pankso@830 | 164 -du|detect-usb) |
pankso@299 | 165 check_root |
al@943 | 166 title 'Detected USB devices Kernel modules' |
pankso@299 | 167 rm -f /var/lib/detected-usb-modules |
pankso@299 | 168 detect_usb_devices |
al@943 | 169 footer ;; |
pankso@830 | 170 -s|setup) |
al@813 | 171 SETUP_OPTIONS=$(echo "$@" | sed 's/setup//') |
pankso@828 | 172 check_root |
jozee@457 | 173 hwsetup $SETUP_OPTIONS ;; |
pankso@830 | 174 -dm|detected-modules) |
al@943 | 175 title 'Detected PCI and USB modules' |
pascal@996 | 176 cat /var/lib/detected-modules /var/lib/detected-usb-modules 2>/dev/null |
al@943 | 177 footer ;; |
pankso@830 | 178 *) |
pankso@299 | 179 usage ;; |
pankso@299 | 180 esac |
pankso@299 | 181 |
pankso@299 | 182 exit 0 |