diff --git a/firmware-b43-installer.postinst_org b/firmware-b43-installer.postinst
index 778e13e..e132e65 100644
--- a/firmware-b43-installer.postinst_org
+++ b/firmware-b43-installer.postinst
@@ -3,21 +3,28 @@ set -e
 
 #########################################################################
 
-VERSION="6.30.163.46"
-
-BROADCOM_WL="broadcom-wl-${VERSION}"
-
-WL_APSTA="${BROADCOM_WL}.wl_apsta.o"
+make_download_vars()
+{
+if [ -n "$latest" ]; then
+	VERSION="6.30.163.46"
+	BROADCOM_WL="broadcom-wl-${VERSION}"
+	WL_APSTA="${BROADCOM_WL}.wl_apsta.o"
+	SHA512SUM="0144894fbbb5e8ebab6c423d9bd0f3249be94f2f468a50b8bf721a3b17f1f6e57467c79e87abc8d136bfc92e701ed046885fead892e9a73efa5217d710311ae9"
+else
+	VERSION="5.100.138"
+	BROADCOM_WL="broadcom-wl-${VERSION}"
+	WL_APSTA="${BROADCOM_WL}/linux/wl_apsta.o"
+	SHA512SUM="02487e76e3eca7fe97ce2ad7dc9c5d39fac82b8d5f7786cce047f9c85e2426f5b7ea085d84c7d4aae43e0fe348d603e3229211bab601726794ef633441d37a8b"
+fi
 
 DOWNLOAD="${BROADCOM_WL}.tar.bz2"
 
 URL="https://www.lwfinger.com/b43-firmware/${DOWNLOAD}"
 
-SHA512SUM="0144894fbbb5e8ebab6c423d9bd0f3249be94f2f468a50b8bf721a3b17f1f6e57467c79e87abc8d136bfc92e701ed046885fead892e9a73efa5217d710311ae9"
-
 FIRMWARE_INSTALL_DIR="/lib/firmware"
 
 B43="b43"
+}
 
 #########################################################################
 # stable sections below, not updated for firmware updates		#
@@ -25,7 +32,7 @@ B43="b43"
 
 . /usr/share/debconf/confmodule
 
-latest_firmware ()
+install_firmware ()
 {
 tmp=$(mktemp -q -d)
 
@@ -39,7 +46,7 @@ ftp_proxy Acquire::ftp::Proxy \
 )
 
 if [ -n "$APT_PROXIES" ]; then
-        eval export $APT_PROXIES
+	eval export $APT_PROXIES
 fi
 
 if ! wget --timeout=60 "${URL}"; then
@@ -100,72 +107,109 @@ 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
+    unconditional=1
  else 
     echo "No chroot environment found. Starting normal installation"
 fi
      
 
+if [ -z "$unconditional" ]; then
+	# 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
 
-
-# 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
+	# 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
+		unconditional=1
+	fi
 fi
 
 # check chip
 pci=`lspci -n -d 14e4: | grep -o "14e4:[1234567890abcdef]\+"` || true
 
 if [ -z "$pci" ]; then
-	echo "No known supported Broadcom 802.11 chips found, not installing firmware."
-	echo
-	echo "Aborting."
+	echo "No known supported Broadcom 802.11 chips found."
+	if [ -z "$unconditional" ]; then
+		echo "Not installing firmware."
+		echo
+		echo "Aborting."
+	fi
 	exit 0
 fi
 
-for device in $pci; do
-	device_id=${device#14e4:}
-	case $device_id in
-	430[16] | 4325)
-		legacy=1
-	;;
-	432[04])
-		chip=`lspci -n -d ${device}`
-		if [ "${chip}" != "${chip%${device} (rev 03)}" ] ; then
-		   latest=1
-		else
-		   legacy=1
-		fi
-	;;
-	4307 | 431[12589] | 432[1289bc] | 4331 | 435[03789] | 43a[9a] | 4716 | a8d8 | a8db | 5354)
+if [ -n "$pci" ] ; then
+	for device in $pci; do
+		device_id=${device#14e4:}
+		case $device_id in
+		4301 | 4325)
+			legacy=1
+		;;
+		4306)
+			chip=`lspci -n -d ${device}`
+			if [ "${chip}" != "${chip%${device} (rev 03)}" ] ; then
+				classic=1
+			else
+				legacy=1
+			fi
+		;;
+		432[04])
+			chip=`lspci -n -d ${device}`
+			if [ "${chip}" != "${chip%${device} (rev 03)}" ] ; then
+				latest=1
+			else
+				legacy=1
+			fi
+		;;
+		4307 | 431[59] | 432[1289bc] | 4331 | 435[03789] | 43a[9a] | 4716 | a8d8 | a8db | 5354)
+			latest=1
+		;;
+		431[12])
+			classic=1
+		;;
+		4318)
+			chip=`lspci -n -d ${device}`
+			if [ "${chip}" != "${chip%${device} (rev 02)}" ] ; then
+				classic=1
+			else
+				latest=1
+			fi
+		;;
+		4322 | 4358 | 436[05] | 43a0 | 43b1 | 4727)
+			unsupported="$unsupported $device_id"
+		;;
+		4313)
+			# need to distinguish BCM4311 (untested) from BCM4313 (not supported)
+			nottested=1
+		;;
+		0576 | 432[ad] | 435[89a] | a8d6 | a99d)
+			nottested=1
+		;;
+		*)
+		;;
+		esac
+	done
+fi
+
+if [ -n "$latest$classic" ] ; then
+	echo "A card known to work was found."
+else
+	echo "No supported device found."
+fi
+if [ -n "$unconditional" ]; then
+	if [ -z "$latest$classic" ]; then
+		# default latest firmware loaded
 		latest=1
-	;;
-	4322 | 4358 | 436[05] | 43a0 | 43b1 | 4727)
-		unsupported="$unsupported $device_id"
-	;;
-	4313)
-		# need to distinguish BCM4311 (untested) from BCM4313 (not supported)
-		nottested=1
-	;;
-	0576 | 432[ad] | 435[89a] | a8d6 | a99d)
-		nottested=1
-	;;
-	*)
-	;;
-	esac
-done
+                echo "But firmware is installed unconditionally"
+        fi
+fi
+
+make_download_vars
 
 if [ -n "$unsupported" ]; then
 	echo -n "Unsupported device(s) found: PCI id "
@@ -178,8 +222,11 @@ if [ -n "$legacy" ]; then
 	echo
 fi
 if [ -n "$latest" ]; then
-	echo "A card known to work was found. Trying to install firmware."
-	latest_firmware
+	echo "Trying to install latest firmware $VERSION ."
+	install_firmware
+elif [ -n "$classic" ]; then
+	echo "Trying to install classic firmware $VERSION ."
+	install_firmware
 elif [ -n "$nottested" ]; then
 	echo "An untested card was found. Please install the driver manually."
 fi
