X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=fwcutter%2Fdebian%2Ffirmware-b43-installer%2FDEBIAN%2Fpostinst;fp=fwcutter%2Fdebian%2Ffirmware-b43-installer%2FDEBIAN%2Fpostinst;h=31f637dffb9f75ddfea8dd035747b5ebf94ab228;hb=89b880716d26706541c57c290199f66c0741902e;hp=0000000000000000000000000000000000000000;hpb=30e3fca2e44c77faf9782bae2d7490877deddbd7;p=b43-tools.git diff --git a/fwcutter/debian/firmware-b43-installer/DEBIAN/postinst b/fwcutter/debian/firmware-b43-installer/DEBIAN/postinst new file mode 100755 index 0000000..31f637d --- /dev/null +++ b/fwcutter/debian/firmware-b43-installer/DEBIAN/postinst @@ -0,0 +1,133 @@ +#!/bin/sh + +set -e + +. /usr/share/debconf/confmodule + +tmp=`mktemp -q -d` + +latest_firmware () +{ +cd $tmp +export FIRMWARE_INSTALL_DIR="/lib/firmware" + +# use apt proxy +APT_PROXIES=$(apt-config shell \ +http_proxy Acquire::http::Proxy \ +https_proxy Acquire::https::Proxy \ +ftp_proxy Acquire::ftp::Proxy \ +) + +if [ -n "$APT_PROXIES" ]; then + eval export $APT_PROXIES +fi + +wget --timeout=60 http://www.lwfinger.com/b43-firmware/broadcom-wl-5.100.138.tar.bz2 +if [ $? -ne 0 ]; then + echo "Some problem occurred during the firmware download. Please check your internet connection." + exit 0 + else + if [ -d /lib/firmware/b43 ]; then + echo "Deleting old extracted firmware..." + rm -rf /lib/firmware/b43 + fi +fi +tar xvjf broadcom-wl-5.100.138.tar.bz2 +cd broadcom-wl-5.100.138/linux +b43-fwcutter -w "$FIRMWARE_INSTALL_DIR" wl_apsta.o +rm -rf $tmp +} + +# check environment +if [ "$(stat -c %d/%i /)" != "$(stat -Lc %d/%i /proc/1/root 2>/dev/null)" ]; + then + echo "A chroot environment has been detected." + echo "Remember this firmware needs kernel >= 2.6.25." + latest_firmware + exit 0 + else + echo "No chroot environment found. Starting normal installation" +fi + + + + +# check kernel version +if dpkg --compare-versions 2.6.25 gt `uname -r | cut -d- -f1`; then + echo "Kernel too old. This firmware needs >= 2.6.25!." + echo "Aborting!" + exit 0 +fi + +# install firmware unconditional if the corresponding debconf value is true +# this is usefull for live-systems or similar systems that should work on +# changing hardware +db_get b43-fwcutter/install-unconditional +if [ "$RET" = "true" ] ; then + latest_firmware + exit 0 +fi + +# Fix for BCM4306/3 [14e4:4320] (rev 03) +chip=`lspci -n | grep -o "14e4:4320 (rev 03)"` || true +if [ "$chip" ] ; then + echo "Your card is BCM4306/3 [14e4:4320] (rev 03), firwmare 5.100.138 will be used" + latest_firmware + exit 0 +fi + +# Fix for BCM4306/3 [14e4:4324] (rev 03) +chip=`lspci -n | grep -o "14e4:4324 (rev 03)"` || true +if [ "$chip" ] ; then + echo "Your card is BCM4306/3 [14e4:4324] (rev 03), firwmare 5.100.138 will be used" + latest_firmware + exit 0 +fi + +# check chip +pci=`lspci -n | grep -o "14e4:[1234567890abcdef]\+"` || true + +if [ -n "$pci" ]; then + for device in $pci; do + device_id=`echo $device | cut -d: -f2` + case $device_id in + 4301 | 4306 | 4320 |4324 | 4325) + legacy=1 + ;; + 4307 | 4311 | 4312 | 4315 | 4318 | 4319 | 4321 | 4328 | 4329 | 432b | 432c | 4331 | 4353 | 4357 | 5354) + latest=1 + ;; + 4322 | 4358 | 4365 | 4727 | a8d8) + # b43 upstream says 3.6+ for a8d8 + unsupported="$unsupported $device_id" + ;; + 0576 | 4313 | 432a | 432d | 4358 | 4359 | 435a | a99d) + nottested=1 + ;; + *) + ;; + esac + done +fi + +if [ "$legacy" ]; then + echo "An unsupported BCM4301, BCM4306 or BCM4306/2 device was found." + echo "Use b43legacy firmware (firmware-b43legacy-installer package) instead." + echo "Aborting." + exit 0 +elif [ "$unsupported" ]; then + echo -n "Unsupported device(s) found: PCI id " + for device_id in $unsupported; do echo -n "14e4:$device_id "; done + echo + echo "Aborting." + exit 0 +elif [ "$nottested" ]; then + echo "This card is actually not tested. Please install the driver manually." + exit 0 +elif [ "$latest" ]; then + echo "This card work with newer 5.100.138 firmware. Trying to install it." + latest_firmware + exit 0 +fi + +