slitaz-tools annotate tinyutils/tazhw @ rev 963

tazhw: enable fan control
author Pascal Bellard <pascal.bellard@slitaz.org>
date Thu Jan 21 12:01:51 2016 +0100 (2016-01-21)
parents 3be081525506
children 9e5c7232ad6f
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
pankso@829 66 if modprobe $mod 2>/dev/null; then
pankso@829 67 if zcat /proc/config.gz | fgrep -i $mod | fgrep -q '=y'; then
al@943 68 _ '* Builtin module : %s' "$mod"
pankso@829 69 unset mod
pankso@829 70 else
al@943 71 _ '* Loaded module : %s' "$mod"
pankso@829 72 fi
pankso@829 73 else
pankso@829 74 if zcat /proc/config.gz | fgrep -i $mod | fgrep -q '=y'; then
al@943 75 _ '* Builtin module : %s' "$mod"
pankso@829 76 unset mod
pankso@829 77 else
al@943 78 _ '! Missing module : %s' "$mod"
pankso@829 79 fi
gokhlayeh@705 80 fi
pankso@299 81 else
al@943 82 _ '> Module in use : %s' "$mod"
pankso@299 83 fi
pankso@829 84 # Add it to load automatically at next boot.
pankso@829 85 if ! echo "$LOAD_MODULES" | grep -q "$mod"; then
pankso@829 86 sed -i s/"LOAD_MODULES=\"$LOAD_MODULES\""/"LOAD_MODULES=\"$LOAD_MODULES $mod\""/ \
pankso@829 87 /etc/rcS.conf
pankso@829 88 fi
pankso@829 89 . /etc/rcS.conf
pankso@299 90 }
pankso@299 91
al@939 92
pascal@940 93 module_name()
pascal@940 94 {
pascal@940 95 local mod mod2
pascal@940 96 while read mod; do
pascal@941 97 if [ -d /sys/module -a ! -d /sys/module/${mod//-/_} ]; then
pascal@940 98 mod2=$(ls -d /sys/module/*/drivers/*:$mod 2>/dev/null | \
pascal@940 99 sed 's|/sys/module/\(.*\)/drivers/.*|\1|')
pascal@940 100 [ "$mod2" ] && mod=$mod2
pascal@940 101 fi
pascal@940 102 echo ${mod//-/_}
pascal@940 103 done
pascal@940 104 }
pascal@940 105
pascal@940 106
pankso@299 107 # Detect PCI devices and load kernel module only at first boot,
pankso@299 108 # in LiveCD mode or with the command 'detect-pci'.
al@939 109
al@813 110 detect_pci_devices() {
pankso@299 111 if [ ! -s /var/lib/detected-modules ]; then
pankso@299 112 . /etc/rcS.conf
pankso@299 113 # We need module_name to match output of lsmod.
al@943 114 list=$(lspci -k | grep 'driver' | cut -d: -f2 | module_name)
pankso@299 115 echo "$list" > /var/lib/detected-modules
pascal@941 116 for mod in $(sort < /var/lib/detected-modules | uniq)
pankso@829 117 do
pankso@299 118 check_firmware
pankso@299 119 load_module
pankso@299 120 done
pankso@299 121 fi
pankso@299 122 }
pankso@299 123
al@939 124
pankso@299 125 # Detect all USB devices.
al@939 126
al@813 127 detect_usb_devices() {
pascal@834 128 if [ -e /sys/bus/usb/devices/usb/usb1 ]; then
pankso@832 129 for product in /sys/bus/usb/devices/*/product
pankso@832 130 do
pankso@832 131 path=$(dirname $product)
pankso@832 132 product=$(cat $product)
pankso@832 133 config=$(cat $path/configuration)
pankso@832 134 debug "$path"
pankso@832 135 . $path/[0-9]*/uevent
pankso@832 136 [ ! "$DRIVER" ] && DRIVER="(none)"
pankso@832 137 echo "$product $config $(indent 40 $DRIVER)"
pankso@832 138 unset DRIVER
pankso@299 139 done
pankso@299 140 fi
pankso@299 141 }
pankso@299 142
al@939 143
pankso@299 144 # Get firmware used by check_firmware()
al@939 145
pankso@299 146 if [ "$2" == "--get-firmware" ]; then
pankso@299 147 firmware='get'
pankso@299 148 fi
al@813 149
al@939 150
pankso@299 151 # What to do.
al@939 152
pankso@299 153 case "$1" in
pankso@830 154 -i|init)
pankso@299 155 check_root
al@813 156 _ 'Detecting PCI devices Kernel modules...'
pankso@299 157 detect_pci_devices
al@813 158 _ 'Detecting USB devices Kernel modules...'
pankso@326 159 detect_usb_devices ;;
pascal@963 160 [ -e /sys/class/thermal/thermal_zone0/mode ] &&
pascal@963 161 _ 'Enable fan control...' &&
pascal@963 162 for zone in /sys/class/thermal/thermal_zone*/mode; do
pascal@963 163 echo -n enabled > $zone
pascal@963 164 done ;;
pankso@830 165 -dp|detect-pci)
pankso@299 166 check_root
al@943 167 title 'Detected PCI devices Kernel modules'
pankso@299 168 rm -f /var/lib/detected-modules
pankso@299 169 detect_pci_devices
al@943 170 footer ;;
pankso@830 171 -du|detect-usb)
pankso@299 172 check_root
al@943 173 title 'Detected USB devices Kernel modules'
pankso@299 174 rm -f /var/lib/detected-usb-modules
pankso@299 175 detect_usb_devices
al@943 176 footer ;;
pankso@830 177 -s|setup)
al@813 178 SETUP_OPTIONS=$(echo "$@" | sed 's/setup//')
pankso@828 179 check_root
jozee@457 180 hwsetup $SETUP_OPTIONS ;;
pankso@830 181 -dm|detected-modules)
al@943 182 title 'Detected PCI and USB modules'
pankso@299 183 cat /var/lib/detected-modules
pankso@304 184 cat /var/lib/detected-usb-modules 2>/dev/null
al@943 185 footer ;;
pankso@830 186 *)
pankso@299 187 usage ;;
pankso@299 188 esac
pankso@299 189
pankso@299 190 exit 0