wok annotate get-wifi-firmware/stuff/get-wifi-firmware @ rev 15666
Add ddumbfs
author | Pascal Bellard <pascal.bellard@slitaz.org> |
---|---|
date | Fri Dec 13 16:18:29 2013 +0000 (2013-12-13) |
parents | 07ef0746e8fc |
children | 02c70d036ea0 |
rev | line source |
---|---|
pascal@1040 | 1 #!/bin/sh |
pascal@1040 | 2 # install linux-wireless, wireless_tools and b43-fwcutter if needed. |
pascal@1040 | 3 |
pascal@1040 | 4 MODULE=$(echo $0 | sed 's/.*get-\(.*\)-firmware/\1/') |
jozee@5197 | 5 ROOT="$2" |
pascal@1040 | 6 PKG=$MODULE-firmware |
pascal@1040 | 7 DEPENDS="" |
pascal@13091 | 8 |
pascal@13091 | 9 MODULE_LIST="" |
pascal@13091 | 10 while read module desc ; do |
pascal@13091 | 11 [ "$MODULE" == "$module" ] && desc="$SHORT_DESC" |
pascal@13091 | 12 MODULE_LIST="$MODULE_LIST $module" |
pascal@13091 | 13 done <<EOT |
pascal@13091 | 14 b43 Broadcom $MODULE firmware. |
pascal@13091 | 15 b43legacy Broadcom $MODULE firmware (BCM4306 rev2 or 802.11b chips). |
pascal@13091 | 16 ipw2100 Intel PRO/Wireless 2100 firmware. |
pascal@13091 | 17 ipw2200 Intel PRO/Wireless 2200BG firmware. |
pascal@13091 | 18 iwlwifi-3945 Intel PRO/Wireless 3945ABG/BG firmware. |
pascal@13091 | 19 iwlwifi-4965 Intel WiFi Link 4965AGN firmware. |
pascal@13091 | 20 iwlwifi-5000 Intel Wireless WiFi Link 5000AGN firmware. |
pascal@13091 | 21 iwlwifi-5150 Intel Wireless WiFi Link 5150AGN firmware. |
pascal@13091 | 22 iwlwifi-1000 Intel Wireless WiFi Link 1000BGN firmware. |
pascal@13091 | 23 iwlwifi-6000 Intel Wireless WiFi Link 6000 Series Wi-fi Adapters. |
pascal@13091 | 24 rt61 new RT2x00 RT61 Wireless Lan firmware. |
pascal@13091 | 25 rt61pci new RT2x00 RT61 Wireless Lan firmware. |
pascal@13091 | 26 rt73 new RT2x00 RT73(RT2571W) Wireless Lan firmware. |
pascal@13091 | 27 rt73usb new RT2x00 RT73(RT2571W) Wireless Lan firmware. |
pascal@13091 | 28 rt2870usb RaLink RT2870USB (RT2870/RT2770) WiFi adapter. |
pascal@13091 | 29 zd1211 zd1211/zd1211rw Wireless Lan firmware. |
pascal@13091 | 30 zd1211rw zd1211/zd1211rw Wireless Lan firmware. |
pascal@13091 | 31 EOT |
pascal@13091 | 32 |
pascal@1040 | 33 case "$MODULE" in |
pascal@1040 | 34 b43) |
pascal@13088 | 35 WEB_SITE="http://www.linuxwireless.org/en/users/Drivers/b43" |
pascal@13088 | 36 WGET_URL="http://mirror2.openwrt.org/sources" |
pascal@13088 | 37 VERSION=$(wget -O - $WGET_URL | sed \ |
pascal@13088 | 38 '/broadcom-wl-[0-9\.]*.tar/!d;s/.*com-wl-\([0-9\.]*\).tar.*/\1/' | \ |
pascal@13088 | 39 tail -n 1) |
pascal@1040 | 40 SUBDIR="broadcom-wl-$VERSION" |
pascal@13088 | 41 WGET_URL="$WGET_URL/$SUBDIR.tar.bz2" |
pascal@1040 | 42 DEPENDS="b43-fwcutter" |
pascal@2129 | 43 FWSET=wl_apsta_mimo.o |
pascal@1040 | 44 ;; |
pascal@1040 | 45 b43legacy) |
pascal@13088 | 46 WEB_SITE="http://downloads.openwrt.org/" |
pascal@13088 | 47 VERSION=$(wget -O - ${WEB_SITE}sources | sed \ |
pascal@13088 | 48 '/wl_apsta/!d;s/.*>wl_apsta-\(.*\).o.*/\1/') |
pascal@1040 | 49 WGET_URL="${WEB_SITE}sources/wl_apsta-$VERSION.o" |
pascal@1040 | 50 DEPENDS="b43-fwcutter" |
pascal@1040 | 51 FWSET=wl_apsta-$VERSION.o |
pascal@1040 | 52 ;; |
pascal@1040 | 53 ipw2100) |
pascal@13091 | 54 VERSION=$(wget -O - http://$MODULE.sourceforge.net/firmware.php?fid=2 |\ |
pascal@13224 | 55 sed "/$MODULE-fw/!d;s/.*fw-\(.*\).tgz.*/\1/") |
pascal@1040 | 56 WEB_SITE="http://$MODULE.sourceforge.net/" |
jozee@5105 | 57 WGET_URL="http://bughost.org/firmware/${MODULE}-fw-${VERSION}.tgz" |
pascal@1040 | 58 ;; |
pascal@1040 | 59 ipw2200) |
pascal@13091 | 60 VERSION=$(wget -O - http://$MODULE.sourceforge.net/firmware.php?fid=8 |\ |
pascal@13224 | 61 sed "/$MODULE-fw/!d;s/.*fw-\(.*\).tgz.*/\1/") |
pascal@1040 | 62 WEB_SITE="http://$MODULE.sourceforge.net/" |
jozee@5105 | 63 WGET_URL="http://bughost.org/firmware/${MODULE}-fw-${VERSION}.tgz" |
pascal@1040 | 64 ;; |
pascal@13091 | 65 iwlwifi-*) |
pascal@13089 | 66 WEB_SITE="http://www.intellinuxwireless.org/?n=Downloads" |
pascal@13089 | 67 VERSION=$(wget -O - $WEB_SITE | sed -e "/$MODULE-/!d" -e \ |
pascal@13089 | 68 's/.*-ucode-\([0-9\.-]*\).t.*/\1/;q') |
pascal@1974 | 69 WGET_URL="http://www.intellinuxwireless.org/iwlwifi/downloads/$MODULE-ucode-$VERSION.tgz" |
pascal@1974 | 70 ;; |
pascal@13091 | 71 rt61*) |
pascal@13091 | 72 WGET_URL="http://archlinux.c3sl.ufpr.br/other/rt2x00-rt61-fw" |
pascal@13091 | 73 VERSION=$(wget -O - $WGET_URL | sed '/Firmware/!d;s/.*_V\(.*\).zip.*/\1/') |
pascal@13091 | 74 WEB_SITE="http://www.ralinktech.com/" |
pascal@13091 | 75 WGET_URL="$WGET_URL/RT61_Firmware_V${VERSION}.zip" |
pascal@1974 | 76 ;; |
pascal@13091 | 77 rt73*) |
pascal@13091 | 78 WGET_URL="http://archlinux.c3sl.ufpr.br/other/rt2x00-rt71w-fw" |
pascal@13091 | 79 VERSION=$(wget -O - $WGET_URL | sed '/Firmware/!d;s/.*_V\(.*\).zip.*/\1/') |
pascal@1935 | 80 WEB_SITE="http://www.ralinktech.com/" |
pascal@13091 | 81 WGET_URL="$WGET_URL/RT71W_Firmware_V${VERSION}.zip" |
pascal@1892 | 82 ;; |
jozee@5105 | 83 rt2870usb) |
pascal@13091 | 84 WGET_URL="http://archlinux.c3sl.ufpr.br/other/${MODULE}-fw" |
pascal@13091 | 85 VERSION=$(wget -O - $WGET_URL | sed '/Firmware/!d;s/.*_V\(.*\).zip.*/\1/') |
jozee@5105 | 86 WEB_SITE="http://www.ralinktech.com/" |
pascal@13091 | 87 WGET_URL="$WGET_URL/RT2870_Firmware_V${VERSION}.zip" |
jozee@5105 | 88 ;; |
pascal@13091 | 89 zd1211*) |
pascal@13088 | 90 WGET_URL="http://mirrors.kernel.org/debian/pool/non-free/z/zd1211-firmware" |
pascal@13088 | 91 VERSION=$(wget -O - $WGET_URL | sed -e '/zd1211-firmware/!d' \ |
pascal@13088 | 92 -e '/all.deb/!d' -e 's/.*>zd1211-firmware_\(.*\)_all.deb.*/\1/') |
pascal@2128 | 93 SHORT_DESC="zd1211/zd1211rw Wireless Lan firmware." |
pascal@2128 | 94 WEB_SITE="http://packages.debian.org/etch/zd1211-firmware" |
pascal@13088 | 95 WGET_URL="$WGET_URL/zd1211-firmware_${VERSION}_all.deb" |
pascal@2348 | 96 ;; |
pascal@13091 | 97 *) |
pascal@13092 | 98 case "$1" in |
pascal@13091 | 99 --install) |
pascal@13091 | 100 cd $(dirname $0) |
pascal@13091 | 101 for i in $MODULE_LIST ; do |
pascal@13091 | 102 ln -s get-wifi-firmware get-$i-firmware |
pascal@13091 | 103 done |
pascal@13091 | 104 exit 0 ;; |
pascal@13091 | 105 --get-free-firmware) |
pascal@13091 | 106 for i in $MODULE_LIST ; do |
pascal@13091 | 107 case "$i" in |
pascal@13091 | 108 iwlwifi*|rt*) get-$i-firmware |
pascal@13091 | 109 esac |
pascal@13091 | 110 done |
pascal@13091 | 111 exit 0 ;; |
pascal@13091 | 112 esac |
pascal@13091 | 113 echo "Unknown wifi driver. Please run one of the following commands:" |
pascal@1040 | 114 for i in $(cd $(dirname $0); ls get-*-firmware); do |
pascal@2171 | 115 [ -L $i ] || continue |
pascal@2171 | 116 [ "$(readlink $i)" = "get-wifi-firmware" ] || continue |
pascal@1040 | 117 echo " $i" |
pascal@1040 | 118 done |
pascal@1040 | 119 exit 1;; |
pascal@1040 | 120 esac |
pascal@1040 | 121 |
pascal@1040 | 122 # Check if user is root to install. |
pascal@1040 | 123 if test $(id -u) != 0 ; then |
pascal@1040 | 124 echo -e "\nYou must be root to run `basename $0`." |
pascal@1040 | 125 echo -e "Please use 'su' and root password to become super-user.\n" |
pascal@1040 | 126 exit 0 |
pascal@1040 | 127 fi |
pascal@1040 | 128 |
pascal@1040 | 129 # Avoid reinstall |
pascal@1713 | 130 if [ -d $ROOT/var/lib/tazpkg/installed/$PKG ]; then |
pascal@1040 | 131 echo -e "\n$PKG package is already installed.\n" |
pascal@1040 | 132 exit 0 |
pascal@1040 | 133 fi |
pascal@1040 | 134 |
pascal@1713 | 135 # We need drivers, the extractor and tools. |
pascal@1714 | 136 for pkg in linux-wireless wireless_tools $DEPENDS |
pascal@1040 | 137 do |
slaxemulator@6949 | 138 if [ ! -d $ROOT/var/lib/tazpkg/installed/$pkg ]; then |
slaxemulator@7147 | 139 tazpkg get-install $pkg --root=$ROOT |
pascal@1040 | 140 fi |
pascal@1040 | 141 done |
pascal@1040 | 142 |
pascal@1040 | 143 # Get files |
pascal@1040 | 144 TMP=/tmp/$(basename $0)$$ |
pascal@1040 | 145 mkdir $TMP |
pascal@1040 | 146 TOP=$PWD |
pascal@1040 | 147 cd $TMP |
pascal@1040 | 148 wget $WGET_URL |
pascal@3893 | 149 TARBALL="$(basename $WGET_URL)" |
pascal@13091 | 150 if [ ! -s $TARBALL ]; then |
pascal@3893 | 151 cd $TOP |
pascal@3893 | 152 rm -rf $DIR |
pascal@3893 | 153 echo "Could not download $TARBALL. Exiting." |
pascal@3893 | 154 exit 1 |
pascal@3893 | 155 fi |
pascal@3893 | 156 |
pascal@1040 | 157 case "$WGET_URL" in |
pascal@3893 | 158 *rpm) rpm2cpio < $TARBALL | cpio -id;; |
pascal@3893 | 159 *deb) dpkg-deb -x $TARBALL . ;; |
pankso@4946 | 160 *bz2) tar xjf $TARBALL |
pascal@2129 | 161 cd $SUBDIR/driver;; |
pascal@3893 | 162 *tar.gz|*tgz) tar xzf $TARBALL;; |
pascal@3893 | 163 *zip) unzip $TARBALL;; |
pascal@1040 | 164 *o) ;; |
pascal@1040 | 165 esac |
pascal@1040 | 166 |
pascal@1040 | 167 # Create pseudo package |
jozee@5105 | 168 mkdir -p $PKG-$VERSION/fs/lib/firmware $PKG-$VERSION/fs/usr/share/licenses |
pascal@1040 | 169 case "$MODULE" in |
pascal@1040 | 170 b43*) b43-fwcutter -w "$PKG-$VERSION/fs/lib/firmware" $FWSET;; |
jozee@5105 | 171 ipw2200) cp ${MODULE}-fw-$VERSION/*LICENSE* $PKG-$VERSION/fs/usr/share/licenses/intel-$MODULE-LICENSE.txt |
jozee@5105 | 172 mv ${MODULE}-fw-$VERSION/* $PKG-$VERSION/fs/lib/firmware;; |
jozee@5105 | 173 ipw2100) cp *LICENSE* $PKG-$VERSION/fs/usr/share/licenses/intel-$MODULE-LICENSE.txt |
jozee@5105 | 174 mv *.fw* *LICENSE* $PKG-$VERSION/fs/lib/firmware;; |
jozee@5105 | 175 rt*) |
jozee@5105 | 176 mv RT*_Firmware_V$VERSION/*.bin $PKG-$VERSION/fs/lib/firmware |
jozee@5105 | 177 mv RT*_Firmware_V$VERSION/*LICENSE* $PKG-$VERSION/fs/usr/share/licenses/ralink-rt61-LICENSE.txt;; |
jozee@5105 | 178 iwlwifi*) mv iwlwifi*/iwlwifi*.ucode $PKG-$VERSION/fs/lib/firmware |
jozee@5105 | 179 mv iwlwifi*/*LICENSE* $PKG-$VERSION/fs/usr/share/licenses/intel-iwlwifi-LICENSE.txt ;; |
pascal@13091 | 180 zd1211*) |
pascal@2267 | 181 mv lib/firmware/zd1211 $PKG-$VERSION/fs/lib/firmware |
pascal@2128 | 182 for i in $(cd usr/lib/hotplug/firmware; ls); do |
pascal@2128 | 183 target=$(readlink usr/lib/hotplug/firmware/$i) |
pascal@2129 | 184 ln -s $(basename $target) $PKG-$VERSION/fs/lib/firmware/zd1211/$i |
pascal@2128 | 185 done;; |
pascal@1040 | 186 esac |
pascal@1040 | 187 |
pascal@1040 | 188 # Creat receipt |
pascal@1040 | 189 cat > $PKG-$VERSION/receipt <<EOT |
pascal@1040 | 190 PACKAGE="$PKG" |
pascal@1040 | 191 VERSION="$VERSION" |
pascal@1040 | 192 CATEGORY="non-free" |
pascal@1040 | 193 SHORT_DESC="$SHORT_DESC." |
pascal@1040 | 194 WEB_SITE="$WEB_SITE" |
pascal@1713 | 195 DEPENDS="linux-wireless wireless_tools $DEPENDS" |
pascal@1040 | 196 EOT |
pascal@1040 | 197 |
pascal@1040 | 198 # Pack |
pascal@1040 | 199 tazpkg pack $PKG-$VERSION |
pascal@1040 | 200 |
pascal@1040 | 201 # Install pseudo package |
pascal@1713 | 202 tazpkg install $PKG-$VERSION.tazpkg --root=$ROOT |
pascal@1040 | 203 |
pascal@1040 | 204 # Clean |
pascal@1040 | 205 cd $TOP |
pascal@1040 | 206 rm -rf $TMP |
pascal@1040 | 207 |
jozee@5198 | 208 if [ "$1" == "--firmware" ] ; then |
jozee@5105 | 209 echo "just install firmare: yes" |
jozee@5105 | 210 JUST_INSTALL_FIRMWARE="yes" |
jozee@5105 | 211 fi |
jozee@5105 | 212 |
jozee@5105 | 213 if [ ! "$JUST_INSTALL_FIRMWARE" == "yes" ]; then |
jozee@5105 | 214 echo "configuring and loading module ..." |
jozee@5105 | 215 # Check if we need wpa_supplicant |
jozee@5105 | 216 . $ROOT/etc/network.conf |
jozee@5105 | 217 if [ $WIFI_KEY_TYPE = "wpa" ] || [ $WIFI_KEY_TYPE = "WPA" ]; then |
jozee@5105 | 218 if [ ! -d $ROOT/var/lib/tazpkg/installed/wpa_supplicant ]; then |
jozee@5105 | 219 tazpkg get-install wpa_supplicant --root=$ROOT |
jozee@5105 | 220 fi |
jozee@5105 | 221 fi |
jozee@5105 | 222 |
jozee@5105 | 223 # Configure /etc/network.conf and start connexion |
jozee@5105 | 224 sed -i s/'WIFI="no"'/'WIFI="yes"'/ $ROOT/etc/network.conf |
jozee@5105 | 225 |
jozee@5105 | 226 # Load module |
jozee@5105 | 227 if [ -z "$ROOT" -a -n "$(modprobe -l $MODULE)" ]; then |
jozee@5105 | 228 echo "Loading module: $MODULE..." |
jozee@5105 | 229 if modprobe $MODULE ; then |
jozee@5105 | 230 sleep 2 |
jozee@5105 | 231 /etc/init.d/network.sh restart |
jozee@5105 | 232 fi |
sygne@1158 | 233 fi |
sygne@1158 | 234 fi |
sygne@1158 | 235 |