wok annotate get-wifi-firmware/stuff/get-wifi-firmware @ rev 25694

dropbear: typo
author Pascal Bellard <pascal.bellard@slitaz.org>
date Sun Apr 21 14:12:01 2024 +0000 (13 days ago)
parents 02c70d036ea0
children
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@20892 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@22456 165 *) busybox tar xf $TARBALL;;
pascal@1040 166 esac
pascal@1040 167
pascal@1040 168 # Create pseudo package
jozee@5105 169 mkdir -p $PKG-$VERSION/fs/lib/firmware $PKG-$VERSION/fs/usr/share/licenses
pascal@1040 170 case "$MODULE" in
pascal@1040 171 b43*) b43-fwcutter -w "$PKG-$VERSION/fs/lib/firmware" $FWSET;;
jozee@5105 172 ipw2200) cp ${MODULE}-fw-$VERSION/*LICENSE* $PKG-$VERSION/fs/usr/share/licenses/intel-$MODULE-LICENSE.txt
jozee@5105 173 mv ${MODULE}-fw-$VERSION/* $PKG-$VERSION/fs/lib/firmware;;
jozee@5105 174 ipw2100) cp *LICENSE* $PKG-$VERSION/fs/usr/share/licenses/intel-$MODULE-LICENSE.txt
jozee@5105 175 mv *.fw* *LICENSE* $PKG-$VERSION/fs/lib/firmware;;
jozee@5105 176 rt*)
jozee@5105 177 mv RT*_Firmware_V$VERSION/*.bin $PKG-$VERSION/fs/lib/firmware
jozee@5105 178 mv RT*_Firmware_V$VERSION/*LICENSE* $PKG-$VERSION/fs/usr/share/licenses/ralink-rt61-LICENSE.txt;;
jozee@5105 179 iwlwifi*) mv iwlwifi*/iwlwifi*.ucode $PKG-$VERSION/fs/lib/firmware
jozee@5105 180 mv iwlwifi*/*LICENSE* $PKG-$VERSION/fs/usr/share/licenses/intel-iwlwifi-LICENSE.txt ;;
pascal@13091 181 zd1211*)
pascal@2267 182 mv lib/firmware/zd1211 $PKG-$VERSION/fs/lib/firmware
pascal@2128 183 for i in $(cd usr/lib/hotplug/firmware; ls); do
pascal@2128 184 target=$(readlink usr/lib/hotplug/firmware/$i)
pascal@2129 185 ln -s $(basename $target) $PKG-$VERSION/fs/lib/firmware/zd1211/$i
pascal@2128 186 done;;
pascal@1040 187 esac
pascal@1040 188
pascal@1040 189 # Creat receipt
pascal@1040 190 cat > $PKG-$VERSION/receipt <<EOT
pascal@1040 191 PACKAGE="$PKG"
pascal@1040 192 VERSION="$VERSION"
pascal@1040 193 CATEGORY="non-free"
pascal@1040 194 SHORT_DESC="$SHORT_DESC."
pascal@1040 195 WEB_SITE="$WEB_SITE"
pascal@1713 196 DEPENDS="linux-wireless wireless_tools $DEPENDS"
pascal@1040 197 EOT
pascal@1040 198
pascal@1040 199 # Pack
pascal@1040 200 tazpkg pack $PKG-$VERSION
pascal@1040 201
pascal@1040 202 # Install pseudo package
pascal@1713 203 tazpkg install $PKG-$VERSION.tazpkg --root=$ROOT
pascal@1040 204
pascal@1040 205 # Clean
pascal@1040 206 cd $TOP
pascal@1040 207 rm -rf $TMP
pascal@1040 208
pascal@20892 209 if [ "$1" = "--firmware" ] ; then
jozee@5105 210 echo "just install firmare: yes"
jozee@5105 211 JUST_INSTALL_FIRMWARE="yes"
jozee@5105 212 fi
jozee@5105 213
pascal@20892 214 if [ ! "$JUST_INSTALL_FIRMWARE" = "yes" ]; then
jozee@5105 215 echo "configuring and loading module ..."
jozee@5105 216 # Check if we need wpa_supplicant
jozee@5105 217 . $ROOT/etc/network.conf
jozee@5105 218 if [ $WIFI_KEY_TYPE = "wpa" ] || [ $WIFI_KEY_TYPE = "WPA" ]; then
jozee@5105 219 if [ ! -d $ROOT/var/lib/tazpkg/installed/wpa_supplicant ]; then
jozee@5105 220 tazpkg get-install wpa_supplicant --root=$ROOT
jozee@5105 221 fi
jozee@5105 222 fi
jozee@5105 223
jozee@5105 224 # Configure /etc/network.conf and start connexion
jozee@5105 225 sed -i s/'WIFI="no"'/'WIFI="yes"'/ $ROOT/etc/network.conf
jozee@5105 226
jozee@5105 227 # Load module
jozee@5105 228 if [ -z "$ROOT" -a -n "$(modprobe -l $MODULE)" ]; then
jozee@5105 229 echo "Loading module: $MODULE..."
jozee@5105 230 if modprobe $MODULE ; then
jozee@5105 231 sleep 2
jozee@5105 232 /etc/init.d/network.sh restart
jozee@5105 233 fi
sygne@1158 234 fi
sygne@1158 235 fi
sygne@1158 236