wok view get-wifi-firmware/stuff/get-wifi-firmware @ rev 4592

update get-wifi-firmaware; rt2860,rt2870 fw now in kernel; rt73,rt61 WGET_URL temporarily fixed using Arch sources
author Rohit Joshi <jozee@slitaz.org>
date Fri Dec 11 12:21:27 2009 +0000 (2009-12-11)
parents 32959e7975fc
children d2ae73f20f57
line source
1 #!/bin/sh
2 # install linux-wireless, wireless_tools and b43-fwcutter if needed.
4 MODULE=$(echo $0 | sed 's/.*get-\(.*\)-firmware/\1/')
5 ROOT="$1"
6 PKG=$MODULE-firmware
7 DEPENDS=""
8 case "$MODULE" in
9 b43)
10 VERSION=4.150.10.5
11 SUBDIR="broadcom-wl-$VERSION"
12 SHORT_DESC="Broadcom $MODULE firmware."
13 WEB_SITE="http://www.linuxwireless.org/en/users/Drivers/b43"
14 WGET_URL="http://mirror2.openwrt.org/sources/$SUBDIR.tar.bz2"
15 DEPENDS="b43-fwcutter"
16 FWSET=wl_apsta_mimo.o
17 ;;
18 b43legacy)
19 VERSION=3.130.20.0
20 SHORT_DESC="Broadcom $MODULE firmware (BCM4306 rev2 or 802.11b chips)."
21 WEB_SITE="http://downloads.openwrt.org/"
22 WGET_URL="${WEB_SITE}sources/wl_apsta-$VERSION.o"
23 DEPENDS="b43-fwcutter"
24 FWSET=wl_apsta-$VERSION.o
25 ;;
26 ipw2100)
27 VERSION=1.3-6.0.1
28 SHORT_DESC="Intel PRO/Wireless 2100 firmware."
29 WEB_SITE="http://$MODULE.sourceforge.net/"
30 WGET_URL="http://dl.atrpms.net/all/$PKG-$VERSION.noarch.rpm"
31 ;;
32 ipw2200)
33 VERSION=3.0-9.0.1
34 SHORT_DESC="Intel PRO/Wireless 2200BG firmware."
35 WEB_SITE="http://$MODULE.sourceforge.net/"
36 WGET_URL="http://dl.atrpms.net/all/$PKG-$VERSION.noarch.rpm"
37 ;;
38 iwlwifi-3945)
39 VERSION=15.32.2.9
40 SHORT_DESC="Intel PRO/Wireless 3945ABG/BG firmware."
41 WEB_SITE="http://www.intellinuxwireless.org/?n=Downloads"
42 WGET_URL="http://www.intellinuxwireless.org/iwlwifi/downloads/$MODULE-ucode-$VERSION.tgz"
43 ;;
44 iwlwifi-4965)
45 VERSION=228.61.2.24
46 SHORT_DESC="Intel WiFi Link 4965AGN firmware."
47 WEB_SITE="http://www.intellinuxwireless.org/?n=Downloads"
48 WGET_URL="http://www.intellinuxwireless.org/iwlwifi/downloads/$MODULE-ucode-$VERSION.tgz"
49 ;;
50 iwlwifi-5000)
51 VERSION=8.24.2.12
52 SHORT_DESC="Intel Wireless WiFi Link 5000AGN firmware."
53 WEB_SITE="http://www.intellinuxwireless.org/?n=Downloads"
54 WGET_URL="http://www.intellinuxwireless.org/iwlwifi/downloads/$MODULE-ucode-$VERSION.tgz"
55 ;;
56 iwlwifi-5150)
57 VERSION=8.24.2.2
58 SHORT_DESC="Intel Wireless WiFi Link 5150AGN firmware."
59 WEB_SITE="http://www.intellinuxwireless.org/?n=Downloads"
60 WGET_URL="http://www.intellinuxwireless.org/iwlwifi/downloads/$MODULE-ucode-$VERSION.tgz"
61 ;;
62 iwlwifi-1000)
63 VERSION=128.50.3.1
64 SHORT_DESC="Intel Wireless WiFi Link 1000BGN firmware."
65 WEB_SITE="http://www.intellinuxwireless.org/?n=Downloads"
66 WGET_URL="http://www.intellinuxwireless.org/iwlwifi/downloads/$MODULE-ucode-$VERSION.tgz"
67 ;;
68 iwlwifi-6000)
69 VERSION=9.176.4.1
70 SHORT_DESC="Intel Wireless WiFi Link 6000 Series Wi-fi Adapters"
71 WEB_SITE="http://www.intellinuxwireless.org/?n=Downloads"
72 WGET_URL="http://www.intellinuxwireless.org/iwlwifi/downloads/$MODULE-ucode-$VERSION.tgz"
73 ;;
74 rt61|rt61pci)
75 VERSION=1.2
76 SHORT_DESC="new RT2x00 RT61 Wireless Lan firmware."
77 WEB_SITE="http://www.ralinktech.com/"
78 WGET_URL="ftp://ftp.archlinux.org/other/rt2x00-rt61-fw/RT61_Firmware_V${VERSION}.zip"
79 ;;
80 rt73|rt73usb)
81 VERSION=1.8
82 SHORT_DESC="new RT2x00 RT73(RT2571W) Wireless Lan firmware."
83 WEB_SITE="http://www.ralinktech.com/"
84 WGET_URL="ftp://ftp.archlinux.org/other/rt2x00-rt71w-fw/RT71W_Firmware_V${VERSION}.zip"
85 ;;
86 zd1211|zd1211rw)
87 VERSION=2.16.0.0-0.1
88 SHORT_DESC="zd1211/zd1211rw Wireless Lan firmware."
89 WEB_SITE="http://packages.debian.org/etch/zd1211-firmware"
90 WGET_URL="http://mirrors.kernel.org/debian/pool/non-free/z/zd1211-firmware/zd1211-firmware_${VERSION}_all.deb"
91 ;;
92 *) echo "Unknown wifi driver. Please run one of the following commands:"
93 for i in $(cd $(dirname $0); ls get-*-firmware); do
94 [ -L $i ] || continue
95 [ "$(readlink $i)" = "get-wifi-firmware" ] || continue
96 echo " $i"
97 done
98 exit 1;;
99 esac
101 # Check if user is root to install.
102 if test $(id -u) != 0 ; then
103 echo -e "\nYou must be root to run `basename $0`."
104 echo -e "Please use 'su' and root password to become super-user.\n"
105 exit 0
106 fi
108 # Avoid reinstall
109 if [ -d $ROOT/var/lib/tazpkg/installed/$PKG ]; then
110 echo -e "\n$PKG package is already installed.\n"
111 exit 0
112 fi
114 # We need drivers, the extractor and tools.
115 for pkg in linux-wireless wireless_tools $DEPENDS
116 do
117 if [ ! -d /var/lib/tazpkg/installed/$pkg ]; then
118 tazpkg get-install $pkg
119 fi
120 done
122 # Get files
123 TMP=/tmp/$(basename $0)$$
124 mkdir $TMP
125 TOP=$PWD
126 cd $TMP
127 wget $WGET_URL
128 TARBALL="$(basename $WGET_URL)"
129 if [ ! -f $TARBALL ]; then
130 cd $TOP
131 rm -rf $DIR
132 echo "Could not download $TARBALL. Exiting."
133 exit 1
134 fi
136 case "$WGET_URL" in
137 *rpm) rpm2cpio < $TARBALL | cpio -id;;
138 *deb) dpkg-deb -x $TARBALL . ;;
139 *bz2) tar xjf TARBALL
140 cd $SUBDIR/driver;;
141 *tar.gz|*tgz) tar xzf $TARBALL;;
142 *zip) unzip $TARBALL;;
143 *o) ;;
144 esac
146 # Create pseudo package
147 mkdir -p $PKG-$VERSION/fs/lib/firmware
148 case "$MODULE" in
149 b43*) b43-fwcutter -w "$PKG-$VERSION/fs/lib/firmware" $FWSET;;
150 ipw*) rm -f lib/firmware/*LICENSE*
151 mv lib/firmware/* $PKG-$VERSION/fs/lib/firmware;;
152 rt61|rt61pci|rt2860)
153 mv RT*_Firmware_V$VERSION/*.bin $PKG-$VERSION/fs/lib/firmware;;
154 rt73|rt73usb)
155 mv RT73_Linux_STA_Drv$VERSION/Module/rt73.bin $PKG-$VERSION/fs/lib/firmware;;
156 iwlwifi*) mv iwlwifi*/iwlwifi*.ucode $PKG-$VERSION/fs/lib/firmware;;
157 zd1211|zd1211rw)
158 mv lib/firmware/zd1211 $PKG-$VERSION/fs/lib/firmware
159 for i in $(cd usr/lib/hotplug/firmware; ls); do
160 target=$(readlink usr/lib/hotplug/firmware/$i)
161 ln -s $(basename $target) $PKG-$VERSION/fs/lib/firmware/zd1211/$i
162 done;;
163 esac
165 # Creat receipt
166 cat > $PKG-$VERSION/receipt <<EOT
167 PACKAGE="$PKG"
168 VERSION="$VERSION"
169 CATEGORY="non-free"
170 SHORT_DESC="$SHORT_DESC."
171 WEB_SITE="$WEB_SITE"
172 DEPENDS="linux-wireless wireless_tools $DEPENDS"
173 EOT
175 # Pack
176 tazpkg pack $PKG-$VERSION
178 # Install pseudo package
179 tazpkg install $PKG-$VERSION.tazpkg --root=$ROOT
181 # Clean
182 cd $TOP
183 rm -rf $TMP
185 # Check if we need wpa_supplicant
186 . $ROOT/etc/network.conf
187 if [ $WIFI_KEY_TYPE = "wpa" ] || [ $WIFI_KEY_TYPE = "WPA" ]; then
188 if [ ! -d $ROOT/var/lib/tazpkg/installed/wpa_supplicant ]; then
189 tazpkg get-install wpa_supplicant --root=$ROOT
190 fi
191 fi
193 # Configure /etc/network.conf and start connexion
194 sed -i s/'WIFI="no"'/'WIFI="yes"'/ $ROOT/etc/network.conf
196 # Load module
197 if [ -z "$ROOT" -a -n "$(modprobe -l $MODULE)" ]; then
198 echo "Loading module: $MODULE..."
199 if modprobe $MODULE ; then
200 sleep 2
201 /etc/init.d/network.sh restart
202 fi
203 fi