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