diff --git a/iopsys-brcm63xx-arm/config/koala/config b/iopsys-brcm63xx-arm/config/koala/config
new file mode 100644
index 0000000000000000000000000000000000000000..0daa17eac97d522ec30d3ea30997ea3f8824176e
--- /dev/null
+++ b/iopsys-brcm63xx-arm/config/koala/config
@@ -0,0 +1,13 @@
+CONFIG_TARGET_FAMILY="KOALA"
+CONFIG_BCM_KERNEL_PROFILE="96856GWO_WL20D1D1"
+CONFIG_BCM_CHIP_ID="6856"
+
+CONFIG_BCM_FIRMWARE_TYPE_NAND_SQUASHFS=y
+CONFIG_BCM_VOICE=y
+# CONFIG_BCM_DSL is not set
+# CONFIG_PACKAGE_libdsl is not set
+# CONFIG_PACKAGE_dslmngr is not set
+# CONFIG_PACKAGE_mwan3 is not set
+CONFIG_BCM_FLASH_LAYOUT_OPTIONS="options_6856_nand"
+
+CONFIG_PACKAGE_kmod-gryphon-led-kernel-module=y
diff --git a/iopsys-brcm63xx-arm/config/panda/config b/iopsys-brcm63xx-arm/config/panda/config
index 148b44b24b4125d6fc2917167dffe172c4c670c7..2772bf9532b0fc7ba0b6010f31e3e49392812df8 100644
--- a/iopsys-brcm63xx-arm/config/panda/config
+++ b/iopsys-brcm63xx-arm/config/panda/config
@@ -9,3 +9,5 @@ CONFIG_BCM_VOICE=y
 # CONFIG_PACKAGE_dslmngr is not set
 # CONFIG_PACKAGE_mwan3 is not set
 CONFIG_BCM_FLASH_LAYOUT_OPTIONS="options_6856_nand"
+
+CONFIG_PACKAGE_kmod-gryphon-led-kernel-module=y
diff --git a/iopsys-brcm63xx-arm/koala/base-files/etc/data/scratchpad b/iopsys-brcm63xx-arm/koala/base-files/etc/data/scratchpad
new file mode 100644
index 0000000000000000000000000000000000000000..3986f2c2a3e391bc33ab5b604d022cf8a3123ef1
Binary files /dev/null and b/iopsys-brcm63xx-arm/koala/base-files/etc/data/scratchpad differ
diff --git a/iopsys-brcm63xx-arm/koala/base-files/etc/firewall.qos b/iopsys-brcm63xx-arm/koala/base-files/etc/firewall.qos
new file mode 100644
index 0000000000000000000000000000000000000000..615d5bce0a1a33cffb84f2628bfbea0d23c310cf
--- /dev/null
+++ b/iopsys-brcm63xx-arm/koala/base-files/etc/firewall.qos
@@ -0,0 +1,37 @@
+#Queue Name=Priority
+q_def_queue=0
+q_normal=1
+q_medium=2
+q_highest=3
+
+# Local generated DNS traffic goes to q_highest
+iptables -t mangle -D OUTPUT -p udp -m udp --dport 53 -j MARK --set-xmark 0x$q_highest/0x$q_highest 2>/dev/null
+iptables -t mangle -A OUTPUT -p udp -m udp --dport 53 -j MARK --set-xmark 0x$q_highest/0x$q_highest
+
+# Local generated IGMP traffic goes to q_highest
+iptables -t mangle -D OUTPUT -p 2 -j MARK --set-xmark 0x$q_highest/0x$q_highest 2>/dev/null
+iptables -t mangle -A OUTPUT -p 2 -j MARK --set-xmark 0x$q_highest/0x$q_highest
+
+# Local generated DHCP traffic goes to q_highest
+iptables -t mangle -D OUTPUT -p udp -m udp --dport 67:68 -j MARK --set-xmark 0x$q_highest/0x$q_highest 2>/dev/null
+iptables -t mangle -A OUTPUT -p udp -m udp --dport 67:68 -j MARK --set-xmark 0x$q_highest/0x$q_highest
+
+# Local generated ICMP traffic goes to q_highest
+iptables -t mangle -D OUTPUT -p icmp -j MARK --set-xmark 0x$q_highest/0x$q_highest 2>/dev/null
+iptables -t mangle -A OUTPUT -p icmp -j MARK --set-xmark 0x$q_highest/0x$q_highest
+
+# LAN generated ICMP traffic goes to q_normal
+iptables -t mangle -D PREROUTING -p icmp -j MARK --set-xmark 0x$q_normal/0x$q_normal 2>/dev/null
+iptables -t mangle -A PREROUTING -p icmp -j MARK --set-xmark 0x$q_normal/0x$q_normal
+
+# Prioritize all traffic from a specific port
+#ebtables -t broute -D BROUTING -i eth3+ -j mark --mark-or 0x7 2>/dev/null
+#ebtables -t broute -A BROUTING -i eth3+ -j mark --mark-or 0x7
+
+# VLAN prio tag -> Queue prio
+for i in `seq 1 7`; do
+	ebtables -t broute -D BROUTING --skbvlan-prio $i -j mark --mark-or 0x$i 2>/dev/null
+	ebtables -t broute -A BROUTING --skbvlan-prio $i -j mark --mark-or 0x$i
+done
+
+# Rest goes to q_def_queue
diff --git a/iopsys-brcm63xx-arm/koala/base-files/etc/hotplug.d/button/10-dimmingbutton b/iopsys-brcm63xx-arm/koala/base-files/etc/hotplug.d/button/10-dimmingbutton
new file mode 100644
index 0000000000000000000000000000000000000000..a1a4e80ab7646e151a23a47cf201ddcfd8a3d64a
--- /dev/null
+++ b/iopsys-brcm63xx-arm/koala/base-files/etc/hotplug.d/button/10-dimmingbutton
@@ -0,0 +1,78 @@
+#!/bin/sh
+
+. /lib/functions.sh
+. /usr/share/libubox/jshn.sh
+
+need_to_sync_dimming_states() {
+        local current_brightness
+        local previous_brightness
+        local state_changed=0
+
+        json_load "$(ubus call led.status status)"
+        json_get_var previous_brightness brightness
+
+        for led in $(ubus list led.*); do
+                json_load "$(ubus call "$led" status)"
+                json_get_var current_brightness brightness
+
+                if [ "$current_brightness" != "$previous_brightness" ]; then
+                        state_changed=1
+                        break
+                fi
+
+                previous_brightness="$current_brightness"
+        done
+
+        return $((state_changed))
+}
+
+dimming_button() {
+        local brightness
+        local current_brightness
+        local ledname
+        local needs_sync=0
+
+        [ -f /etc/config/leds ] || touch /etc/config/leds
+
+        need_to_sync_dimming_states
+        needs_sync="$?"
+
+        for led in $(ubus list led.*); do
+                brightness=100
+                current_brightness=100
+                ledname=${led:4}
+
+                json_load "$(ubus call "$led" status)"
+                json_get_var current_brightness brightness
+
+                if [ "$needs_sync" != "0" ]; then
+			brightness=100
+                elif [ "$current_brightness" -ge 100 ]; then
+                        brightness=75
+                elif [ "$current_brightness" -ge 75 ]; then # Slightly dimmed
+                        brightness=15
+                elif [ "$current_brightness" -ge 15 ]; then # Significantly dimmed
+                        brightness=0
+                        case $ledname in
+                                status|composite) brightness=15 ;;
+                        esac
+                else
+                        brightness=100
+                fi
+                ubus call "$led" set "{\"brightness\":$brightness}"
+                uci set leds.$ledname.brightness="$brightness"
+        done
+        uci commit leds
+        sync # ODM turns off the power after toggling during testing, save ASAP
+}
+
+case "$ACTION" in
+        add|register)
+        [ "dimmingbutton" == "$INTERFACE" ] && {
+                printf "\n\nDimming button is pressed\n\n" > /dev/console
+                dimming_button
+        }
+        ;;
+        remove|unregister)
+        ;;
+esac
diff --git a/iopsys-brcm63xx-arm/koala/base-files/etc/hotplug.d/button/20-softresetbutton b/iopsys-brcm63xx-arm/koala/base-files/etc/hotplug.d/button/20-softresetbutton
new file mode 100644
index 0000000000000000000000000000000000000000..3aa70b276921fb45d23ce09b50147b93c5d519b0
--- /dev/null
+++ b/iopsys-brcm63xx-arm/koala/base-files/etc/hotplug.d/button/20-softresetbutton
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+case "$ACTION" in
+        add|register)
+        [ "softresetbutton" == "$INTERFACE" ] && {
+                printf "\n\nSoft reset button is pressed\n\n" > /dev/console
+                reboot
+        }
+        ;;
+        remove|unregister)
+        ;;
+esac
diff --git a/iopsys-brcm63xx-arm/koala/base-files/etc/hotplug.d/usb/00-led b/iopsys-brcm63xx-arm/koala/base-files/etc/hotplug.d/usb/00-led
new file mode 100644
index 0000000000000000000000000000000000000000..f083122e4643da47b19f5e2c921f83616a2fefb1
--- /dev/null
+++ b/iopsys-brcm63xx-arm/koala/base-files/etc/hotplug.d/usb/00-led
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+readonly BASENAME="$(basename "$DEVPATH")"
+[ "${BASENAME:0:3}" = "usb" -a "$ACTION" = "add" ] && exit 0
+[ "${BASENAME:0:3}" = "usb" ] && ACTION="notice" # A root-hub disappeared, this SHOULD NOT happen!
+
+case "$ACTION" in
+        add|bind)
+                ubus call led.usb set '{ "state": "ok" }'
+                ;;
+        notice)
+                ubus call led.usb set '{ "state": "notice" }'
+                ;;
+        *)
+                ubus call led.usb set '{ "state": "off" }'
+                ;;
+esac
diff --git a/iopsys-brcm63xx-arm/koala/base-files/etc/init.d/scratchpad b/iopsys-brcm63xx-arm/koala/base-files/etc/init.d/scratchpad
new file mode 100755
index 0000000000000000000000000000000000000000..aeea3ae87473dea0013532448fe7cf3e751e19ad
--- /dev/null
+++ b/iopsys-brcm63xx-arm/koala/base-files/etc/init.d/scratchpad
@@ -0,0 +1,12 @@
+#!/bin/sh /etc/rc.common
+#
+# Initialize scratchpad
+
+START=05
+
+boot() {
+	if [ -f "/etc/data/scratchpad" -a ! -f "/data/scratchpad" ]; then
+		cp "/etc/data/scratchpad" "/data/scratchpad"
+		sync
+	fi
+}
diff --git a/iopsys-brcm63xx-arm/koala/base-files/etc/init.d/udevtrigger b/iopsys-brcm63xx-arm/koala/base-files/etc/init.d/udevtrigger
new file mode 100755
index 0000000000000000000000000000000000000000..3057dbc2b572a860d525afdf89a255a2c0a24b3f
--- /dev/null
+++ b/iopsys-brcm63xx-arm/koala/base-files/etc/init.d/udevtrigger
@@ -0,0 +1,9 @@
+#!/bin/sh /etc/rc.common
+
+START=8
+
+
+boot() {
+	# Cold plug trigger - USB LED etc..
+	udevtrigger
+}
diff --git a/iopsys-brcm63xx-arm/koala/base-files/etc/init.d/voice_monitor b/iopsys-brcm63xx-arm/koala/base-files/etc/init.d/voice_monitor
new file mode 100755
index 0000000000000000000000000000000000000000..afe3ca95a5f4457027f1fd7ca557e64648d3f3be
--- /dev/null
+++ b/iopsys-brcm63xx-arm/koala/base-files/etc/init.d/voice_monitor
@@ -0,0 +1,29 @@
+#!/bin/sh /etc/rc.common
+
+START=21
+STOP=90
+USE_PROCD=1
+
+VOICE_MONITOR=$(which voice_monitor)
+
+start_service() {
+	[ -n "$VOICE_MONITOR" ] && {
+		procd_open_instance
+		procd_set_param command "$VOICE_MONITOR"
+		procd_set_param respawn
+		procd_close_instance
+	}
+}
+
+stop_service() {
+	[ -n "$VOICE_MONITOR" ] && service_stop "$VOICE_MONITOR"
+}
+
+boot() {
+	start
+}
+
+reload_service() {
+	stop
+	start
+}
diff --git a/iopsys-brcm63xx-arm/koala/base-files/etc/init.d/wan_management b/iopsys-brcm63xx-arm/koala/base-files/etc/init.d/wan_management
new file mode 100755
index 0000000000000000000000000000000000000000..38d9d558553db1450441aa10b7be238fe76cf39b
--- /dev/null
+++ b/iopsys-brcm63xx-arm/koala/base-files/etc/init.d/wan_management
@@ -0,0 +1,60 @@
+#!/bin/sh /etc/rc.common
+
+START=1
+USE_PROCD=1
+
+. /lib/functions.sh
+include /lib/network
+
+configure_ports(){
+	local cfg=$1
+	local ifname enabled speed duplex autoneg
+	local ethwan="$(db -q get hw.board.ethernetWanPort)"
+
+	config_get ifname $cfg ifname
+	[ -d /sys/class/net/$ifname ] || return
+
+	if [ "$ifname" == "$ethwan" ]; then
+		config_get enabled $cfg enabled 1
+		config_get speed $cfg speed 1000
+		config_get duplex $cfg duplex "full"
+		config_get autoneg $cfg autoneg 1
+		config_get autosense $cfg autosense 0
+
+		if [ "$speed" -ge 10000 ]; then
+			echo 10 > /proc/aemode/switch
+			sleep 1
+			ifconfig "$ifname" mtu 9000
+		else
+			echo 1 > /proc/aemode/switch
+			sleep 1
+			ifconfig "$ifname" mtu 1998
+		fi
+
+		if [ "$autosense" -eq 1 ]; then
+			/etc/init.d/fiber_autospeed restart
+			return
+		fi
+
+		sleep 1
+
+		[ "$duplex" == "full" ] && duplex=1 || duplex=0
+		ethswctl -c phymode -n 0 -p 8 -y $speed -z $duplex 2>&1 >/dev/null
+
+		[ $autoneg -eq 1 ] && autoneg="on" || autoneg="off"
+		if [ "$autoneg" == "on" ]; then
+			ethswctl -c phymode -n 0 -p 8 -y 0 2>&1 >/dev/null
+		fi
+	fi
+}
+
+start_service() {
+	[ -f /lib/network/port.sh ] || return
+
+	config_load ports
+	config_foreach configure_ports ethport
+}
+
+service_triggers() {
+	procd_add_reload_trigger ports
+}
diff --git a/iopsys-brcm63xx-arm/koala/base-files/etc/init.d/wanconf b/iopsys-brcm63xx-arm/koala/base-files/etc/init.d/wanconf
new file mode 100755
index 0000000000000000000000000000000000000000..00d8bef496e769ce67a77a15a715262eb82c9905
--- /dev/null
+++ b/iopsys-brcm63xx-arm/koala/base-files/etc/init.d/wanconf
@@ -0,0 +1,8 @@
+#!/bin/sh /etc/rc.common
+
+START=15
+
+boot() {
+	wanconf
+}
+
diff --git a/iopsys-brcm63xx-arm/koala/base-files/etc/wifi.json b/iopsys-brcm63xx-arm/koala/base-files/etc/wifi.json
new file mode 100644
index 0000000000000000000000000000000000000000..132e768166da278b371aa179f82da8621a9ae2b1
--- /dev/null
+++ b/iopsys-brcm63xx-arm/koala/base-files/etc/wifi.json
@@ -0,0 +1,40 @@
+{
+        "events" : [
+                {
+                        "type": "wifi-event",
+                        "name": "broadcom",
+			"ifname" : "wl0*",
+                        "family": "bcmwl",
+                        "group": [
+                                "notify"
+                        ]
+                },
+                {
+                        "type": "wifi-event",
+                        "name": "broadcom",
+			"ifname" : "wl1*",
+                        "family": "bcmwl",
+                        "group": [
+                                "notify"
+                        ]
+                },
+                {
+                        "type": "wifi-event",
+                        "name": "cfg",
+                        "ifname": "wl0",
+                        "family": "nl80211",
+                        "group": [
+                                "scan"
+                        ]
+                },
+                {
+                        "type": "wifi-event",
+                        "name": "cfg",
+                        "ifname": "wl1",
+                        "family": "nl80211",
+                        "group": [
+                                "scan"
+                        ]
+                }
+        ]
+}
diff --git a/iopsys-brcm63xx-arm/koala/base-files/etc/wlan/kernel_nvram.fallback b/iopsys-brcm63xx-arm/koala/base-files/etc/wlan/kernel_nvram.fallback
new file mode 100644
index 0000000000000000000000000000000000000000..9f5884efd84fbe70abf552f1e8351c39bf7f0ffb
--- /dev/null
+++ b/iopsys-brcm63xx-arm/koala/base-files/etc/wlan/kernel_nvram.fallback
@@ -0,0 +1,613 @@
+hapd_enable=1
+acs_version=2
+#following four entries is for cevent
+ceventd_enable=1
+ceventd_out=/tmp/ce0.log
+wl_cevent=1
+ceventd_eventmask=0x1000000000010000000000000000000000410002831fff
+mbo_enable=1
+#crash_log_backup_dir=/data/crash_log
+1:devpath1=sb/1/
+2:devpath2=sb/1/
+devpath1=pcie/0/1/
+1:sromrev=18
+1:boardrev=0x1303
+1:boardflags=0x10001000
+1:boardflags2=0x4
+1:boardtype=0x84e
+1:subvid=0x14e4
+1:devid=0x442b
+1:boardflags3=0x0
+1:boardnum=61555
+1:macaddr=00:90:4c:2b:f0:73
+1:ccode=
+1:regrev=0
+1:aa2g=15
+1:aa5g=15
+1:agbg0=0
+1:agbg1=0
+1:agbg2=0
+1:aga0=0
+1:aga1=0
+1:aga2=0
+1:txchain=15
+1:rxchain=15
+1:antswitch=0
+1:tssiposslope2g=1
+1:epagain2g=0
+1:pdgain2g=0
+1:tworangetssi2g=0
+1:papdcap2g=0
+1:femctrl=2
+1:tssiposslope5g=1
+1:epagain5g=0
+1:pdgain5g=1
+1:tworangetssi5g=0
+1:papdcap5g=0
+1:gainctrlsph=0
+1:tempthresh=110
+1:tempoffset=255
+1:rawtempsense=0x1ff
+1:measpower=0x0
+1:tempsense_slope=0xff
+1:tempcorrx=0x3f
+1:tempsense_option=0x3
+1:xtalfreq=54000
+1:pa5gbw4080a1=0x0,0x739c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0
+1:phycal_tempdelta=40
+1:temps_period=10
+1:temps_hysteresis=5
+1:measpower1=0x0
+1:measpower2=0x0
+1:tssifloor2g=0x1c
+1:tssifloor5g=0x0,0x300,0x35a,0x35a
+1:pdoffset2g40ma0=0
+1:pdoffset2g40ma1=0
+1:pdoffset2g40ma2=0
+1:pdoffset2g40mvalid=0
+1:pdoffset40ma0=0
+1:pdoffset40ma1=0
+1:pdoffset40ma2=0
+1:pdoffset80ma0=65535
+1:pdoffset80ma1=0
+1:pdoffset80ma2=0
+1:subband5gver=0x5
+1:paparambwver=0
+1:rx5ggainwar=0
+1:pa5gbw4080a0=0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x14a5
+1:pa5gbw40a0=0x0,0x0,0x0,0x101,0x3e00,0x901,0x3e00,0x0,0x0,0x0,0x0,0x0
+1:pa5gbw80a0=0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x14a5
+1:pa2gccka0=0x0,0x0,0x0
+1:cckbw202gpo=0
+1:cckbw20ul2gpo=0
+1:mcsbw202gpo=3430368290
+1:mcsbw402gpo=3430368273
+1:dot11agofdmhrbw202gpo=51575
+1:ofdmlrbw202gpo=119
+1:mcsbw205glpo=2825274401
+1:mcsbw405glpo=2825274401
+1:mcsbw805glpo=2825274401
+1:mcsbw205gmpo=2825274401
+1:mcsbw405gmpo=2825274401
+1:mcsbw805gmpo=2825274401
+1:mcsbw205ghpo=2825274401
+1:mcsbw405ghpo=2825274401
+1:mcsbw805ghpo=2825274401
+1:mcslr5glpo=0
+1:mcslr5gmpo=0
+1:mcslr5ghpo=0
+1:sb20in40hrpo=0
+1:sb20in80and160hr5glpo=0
+1:sb40and80hr5glpo=0
+1:sb20in80and160hr5gmpo=0
+1:sb40and80hr5gmpo=0
+1:sb20in80and160hr5ghpo=0
+1:sb40and80hr5ghpo=0
+1:sb20in40lrpo=0
+1:sb20in80and160lr5glpo=0
+1:sb40and80lr5glpo=0
+1:sb20in80and160lr5gmpo=0
+1:sb40and80lr5gmpo=0
+1:sb20in80and160lr5ghpo=0
+1:sb40and80lr5ghpo=0
+1:dot11agduphrpo=0
+1:dot11agduplrpo=0
+1:sar2g=18
+1:sar5g=15
+1:noiselvl2ga0=31
+1:noiselvl2ga1=31
+1:noiselvl2ga2=31
+1:noiselvl5ga0=31,31,31,31
+1:noiselvl5ga1=31,31,31,31
+1:noiselvl5ga2=31,31,31,31
+1:rxgainerr2ga0=63
+1:rxgainerr2ga1=31
+1:rxgainerr2ga2=31
+1:rxgainerr5ga0=63,63,63,63
+1:rxgainerr5ga1=31,31,31,31
+1:rxgainerr5ga2=31,31,31,31
+1:rpcal2g=0
+1:rpcal5gb0=0
+1:rpcal5gb1=0
+1:rpcal5gb2=0
+1:rpcal5gb3=0
+1:txidxcap2g=0
+1:txidxcap5g=0
+1:pdoffsetcckma0=0
+1:pdoffsetcckma1=0
+1:pdoffsetcckma2=0
+1:boardflags4=0x8
+1:pdoffsetcck=7431
+1:pdoffset20in40m5gb0=27482
+1:pdoffset20in40m5gb1=27482
+1:pdoffset20in40m5gb2=27482
+1:pdoffset20in40m5gb3=27482
+1:pdoffset20in40m5gb4=27482
+1:pdoffset40in80m5gb0=0
+1:pdoffset40in80m5gb1=0
+1:pdoffset40in80m5gb2=0
+1:pdoffset40in80m5gb3=0
+1:pdoffset40in80m5gb4=0
+1:pdoffset20in80m5gb0=27482
+1:pdoffset20in80m5gb1=27482
+1:pdoffset20in80m5gb2=27482
+1:pdoffset20in80m5gb3=27482
+1:pdoffset20in80m5gb4=29530
+1:mcsbw205gx1po=2825274401
+1:mcsbw405gx1po=2825274401
+1:mcsbw805gx1po=2825274401
+1:mcsbw205gx2po=2825274401
+1:mcsbw405gx2po=2825274401
+1:mcsbw805gx2po=2825274401
+1:sb20in80and160hr5gx1po=0
+1:sb20in80and160lr5gx1po=0
+1:sb40and80hr5gx1po=0
+1:sb20in80and160hr5gx2po=0
+1:sb20in80and160lr5gx2po=0
+1:sb40and80hr5gx2po=0
+1:rxgains5gmelnagaina0=0
+1:rxgains5gmelnagaina1=0
+1:rxgains5gmelnagaina2=0
+1:rxgains5gmtrisoa0=0
+1:rxgains5gmtrisoa1=0
+1:rxgains5gmtrisoa2=0
+1:rxgains5gmtrelnabypa0=0
+1:rxgains5gmtrelnabypa1=0
+1:rxgains5gmtrelnabypa2=0
+1:rxgains5ghelnagaina0=7
+1:rxgains5ghelnagaina1=7
+1:rxgains5ghelnagaina2=7
+1:rxgains5ghtrisoa0=15
+1:rxgains5ghtrisoa1=15
+1:rxgains5ghtrisoa2=15
+1:rxgains5ghtrelnabypa0=1
+1:rxgains5ghtrelnabypa1=1
+1:rxgains5ghtrelnabypa2=1
+1:gpdn=0x0
+1:rpcal2gcore3=0
+1:rpcal5gb0core3=0
+1:rpcal5gb1core3=0
+1:rpcal5gb2core3=0
+1:rpcal5gb3core3=0
+1:sw_txchain_mask=15
+1:sw_rxchain_mask=15
+1:agbg3=0
+1:aga3=0
+1:noiselvl2ga3=31
+1:noiselvl5ga3=31,31,31,31
+1:rxgainerr2ga3=31
+1:rxgainerr5ga3=31,31,31,31
+1:rxgains5gmelnagaina3=0
+1:rxgains5gmtrisoa3=0
+1:rxgains5gmtrelnabypa3=0
+1:rxgains5ghelnagaina3=7
+1:rxgains5ghtrisoa3=15
+1:rxgains5ghtrelnabypa3=1
+1:pdoffset20in40m5gcore3=27482
+1:pdoffset20in40m5gcore3_1=858
+1:pdoffset20in80m5gcore3=27485
+1:pdoffset20in80m5gcore3_1=922
+1:pdoffset40in80m5gcore3=0
+1:pdoffset40in80m5gcore3_1=0
+1:pdoffset20in40m2g=29596
+1:pdoffset20in40m2gcore3=28
+1:pdoffsetcck20m=5285
+1:mcs1024qam2gpo=52428
+1:mcs1024qam5glpo=2863311530
+1:mcs1024qam5gmpo=2863311530
+1:mcs1024qam5ghpo=2863311530
+1:mcs1024qam5gx1po=2863311530
+1:mcs1024qam5gx2po=2863311530
+1:mcsbw1605glpo=2826388513
+1:mcsbw1605gmpo=2826388513
+1:mcsbw1605ghpo=2826388513
+1:mcsbw1605gx1po=2826388513
+1:mcsbw1605gx2po=2826388513
+1:ulbpproffs2g=0
+1:mcs8poexp=0
+1:mcs9poexp=0
+1:mcs10poexp=0
+1:mcs11poexp=0
+1:ulbpdoffs5gb0a0=0
+1:ulbpdoffs5gb0a1=0
+1:ulbpdoffs5gb0a2=0
+1:ulbpdoffs5gb0a3=0
+1:ulbpdoffs5gb1a0=0
+1:ulbpdoffs5gb1a1=0
+1:ulbpdoffs5gb1a2=0
+1:ulbpdoffs5gb1a3=0
+1:ulbpdoffs5gb2a0=0
+1:ulbpdoffs5gb2a1=0
+1:ulbpdoffs5gb2a2=0
+1:ulbpdoffs5gb2a3=0
+1:ulbpdoffs5gb3a0=0
+1:ulbpdoffs5gb3a1=0
+1:ulbpdoffs5gb3a2=0
+1:ulbpdoffs5gb3a3=0
+1:ulbpdoffs5gb4a0=0
+1:ulbpdoffs5gb4a1=0
+1:ulbpdoffs5gb4a2=0
+1:ulbpdoffs5gb4a3=0
+1:ulbpdoffs2ga0=0
+1:ulbpdoffs2ga1=0
+1:ulbpdoffs2ga2=0
+1:ulbpdoffs2ga3=0
+1:rpcal5gb4=0
+1:sb20in40hrlrpox=0
+1:swctrlmap4_cfg=37
+1:swctrlmap4_TX2g_fem3to0=43690
+1:swctrlmap4_RX2g_fem3to0=17476
+1:swctrlmap4_RXByp2g_fem3to0=26214
+1:swctrlmap4_misc2g_fem3to0=0
+1:swctrlmap4_TX5g_fem3to0=13107
+1:swctrlmap4_RX5g_fem3to0=17476
+1:swctrlmap4_RXByp5g_fem3to0=26214
+1:swctrlmap4_misc5g_fem3to0=0
+1:swctrlmap4_TX2g_fem7to4=0
+1:swctrlmap4_RX2g_fem7to4=0
+1:swctrlmap4_RXByp2g_fem7to4=0
+1:swctrlmap4_misc2g_fem7to4=0
+1:swctrlmap4_TX5g_fem7to4=0
+1:swctrlmap4_RX5g_fem7to4=0
+1:swctrlmap4_RXByp5g_fem7to4=0
+1:swctrlmap4_misc5g_fem7to4=0
+1:pdoffset20in160m5gc0=31710
+1:pdoffset20in160m5gc1=31710
+1:pdoffset20in160m5gc2=29628
+1:pdoffset20in160m5gc3=29628
+1:pdoffset20in160m5gcore3=924
+1:pdoffset20in160m5gcore3_1=924
+1:pdoffset40in160m5gc0=4294
+1:pdoffset40in160m5gc1=4294
+1:pdoffset40in160m5gc2=2178
+1:pdoffset40in160m5gc3=2178
+1:pdoffset40in160m5gcore3=98
+1:pdoffset40in160m5gcore3_1=0
+1:pdoffset80in160m5gc0=30750
+1:pdoffset80in160m5gc1=30750
+1:pdoffset80in160m5gc2=30750
+1:pdoffset80in160m5gc3=30750
+1:pdoffset80in160m5gcore3=924
+1:pdoffset80in160m5gcore3_1=924
+1:low_adc_rate_en=1
+1:maxp2ga0=90
+1:maxp5gb4a0=98
+1:pa2ga0=0x1f2c,0xe08e,0xf75c,0x1841
+1:pa2g40a0=0x1e2d,0xf162,0xef11,0x1584
+1:maxp5gb0a0=98
+1:maxp5gb1a0=98
+1:maxp5gb2a0=98
+1:maxp5gb3a0=98
+1:pa5ga0=0x202f,0xc60d,0x0000,0x0e94,0x209c,0xc622,0x0000,0x1163,0x2080,0xc4b8,0xfffe,0x04fa,0x2039,0xc4f2,0x0000,0x0037,0x202a,0xc5d2,0x0000,0x0017
+1:pa5g40a0=0x2167,0xc73d,0xff07,0x260d,0x21ba,0xc7fc,0xfe31,0x1d6c,0x2225,0xc2d1,0x0000,0x1ab2,0x21cb,0xc3b6,0x0000,0x19c8,0x2193,0xc4fa,0x0000,0x200c
+1:pa5g80a0=0x20e1,0xc561,0x0000,0x1c4c,0x2167,0xc523,0xfffd,0x1df9,0x21a5,0xc2ab,0x0000,0x0e98,0x20e4,0xc4fd,0x0000,0x19e9,0x2100,0xc591,0x0000,0x1b45
+1:rxgains2gelnagaina0=5
+1:rxgains2gtrisoa0=8
+1:rxgains2gtrelnabypa0=1
+1:rxgains5gelnagaina0=3
+1:rxgains5gtrisoa0=6
+1:rxgains5gtrelnabypa0=1
+1:pa2g20ccka0=0xffff,0xffff,0xffff,0xffff
+1:pa5g160a0=0x2093,0xcd62,0xfcd1,0x27ec,0x2093,0xcd62,0xfcd1,0x27ec,0x21c2,0xc446,0xffff,0x1e6d,0x21c2,0xc446,0xffff,0x1e6d
+1:maxp2ga1=90
+1:maxp5gb4a1=98
+1:pa2ga1=0x1f28,0xe4e0,0xf517,0x177f
+1:pa2g40a1=0x1e6f,0xf294,0xee6f,0x1608
+1:maxp5gb0a1=98
+1:maxp5gb1a1=98
+1:maxp5gb2a1=98
+1:maxp5gb3a1=98
+1:pa5ga1=0x1f69,0xc87e,0x0000,0x12a0,0x1fa6,0xc870,0x0000,0x145d,0x1f0f,0xc731,0xfff2,0x05dd,0x1ed7,0xc781,0x0000,0x0000,0x1e9f,0xca41,0x0000,0x1377
+1:pa5g40a1=0x20e5,0xc8a6,0xff16,0x2579,0x216b,0xc618,0x0000,0x23a3,0x20c3,0xc4bf,0x0000,0x158c,0x2064,0xc69f,0x0000,0x1d67,0x2027,0xc8c2,0x0000,0x281f
+1:pa5g80a1=0x2082,0xc6e3,0x0000,0x1da1,0x20c4,0xc6a2,0x0000,0x1e31,0x204d,0xc4a4,0x0000,0x0982,0x1f81,0xc825,0xfffa,0x19c7,0x1fa6,0xc969,0x0000,0x244e
+1:rxgains2gelnagaina1=5
+1:rxgains2gtrisoa1=8
+1:rxgains2gtrelnabypa1=1
+1:rxgains5gelnagaina1=3
+1:rxgains5gtrisoa1=6
+1:rxgains5gtrelnabypa1=1
+1:pa2g20ccka1=0xffff,0xffff,0xffff,0xffff
+1:pa5g160a1=0x2089,0xcaa7,0xfec5,0x2ab0,0x2089,0xcaa7,0xfec5,0x2ab0,0x2088,0xc601,0x0000,0x1a02,0x2088,0xc601,0x0000,0x1a02
+1:maxp2ga2=90
+1:maxp5gb4a2=98
+1:pa2ga2=0x1f36,0xe23c,0xf674,0x19ef
+1:pa2g40a2=0x1e96,0xf08d,0xef30,0x173e
+1:maxp5gb0a2=98
+1:maxp5gb1a2=98
+1:maxp5gb2a2=98
+1:maxp5gb3a2=98
+1:pa5ga2=0x1f45,0xc750,0x0000,0x0642,0x1f10,0xc788,0x0000,0x08e4,0x1e69,0xca08,0x0000,0x13d4,0x1e64,0xcade,0x0000,0x17f6,0x1e73,0xcaf4,0x0000,0x182f
+1:pa5g40a2=0x2118,0xc51b,0x0000,0x1e0b,0x20d2,0xc58c,0x0000,0x201c,0x1f93,0xcc03,0xfda9,0x1b3d,0x1f27,0xcfdd,0xfc2d,0x193b,0x1f63,0xcddd,0xfd0a,0x1a4d
+1:pa5g80a2=0x2032,0xc691,0xffff,0x1e5a,0x200d,0xc6a6,0xffff,0x1bfb,0x1f6b,0xc83f,0x0000,0x1cbb,0x1f0d,0xcb91,0xff36,0x254b,0x1f2e,0xcbc3,0xfe98,0x1b9e
+1:rxgains2gelnagaina2=5
+1:rxgains2gtrisoa2=8
+1:rxgains2gtrelnabypa2=1
+1:rxgains5gelnagaina2=3
+1:rxgains5gtrisoa2=6
+1:rxgains5gtrelnabypa2=1
+1:pa2g20ccka2=0xffff,0xffff,0xffff,0xffff
+1:pa5g160a2=0x207f,0xc736,0x0000,0x27c4,0x207f,0xc736,0x0000,0x27c4,0x1f09,0xcfe6,0xfc2f,0x1ad2,0x1f09,0xcfe6,0xfc2f,0x1ad2
+1:maxp2ga3=90
+1:maxp5gb4a3=98
+1:pa2ga3=0x1f34,0xe3da,0xf58e,0x1a61
+1:pa2g40a3=0x1e77,0xf245,0xee68,0x1758
+1:maxp5gb0a3=98
+1:maxp5gb1a3=98
+1:maxp5gb2a3=98
+1:maxp5gb3a3=98
+1:pa5ga3=0x1cfb,0xcc16,0x0000,0x175d,0x1d30,0xcd4c,0xff95,0x179c,0x1da9,0xccbc,0x0000,0x19c2,0x1d7c,0xccf5,0xffff,0x1988,0x1d75,0xcd27,0x0000,0x18a8
+1:pa5g40a3=0x1e40,0xcddb,0xfd54,0x16af,0x1e65,0xce97,0xfda7,0x2211,0x1f19,0xcb32,0xffce,0x2cfd,0x1f0e,0xcaea,0x0000,0x2ad3,0x1edb,0xcb62,0x0000,0x2c24
+1:pa5g80a3=0x1dc6,0xcb54,0xffc1,0x250d,0x1dda,0xcd9e,0xfebb,0x2275,0x1e9a,0xcb6f,0x0000,0x2979,0x1e68,0xcb8b,0x0000,0x2811,0x1e61,0xcbb7,0x0000,0x25fd
+1:rxgains2gelnagaina3=5
+1:rxgains2gtrisoa3=8
+1:rxgains2gtrelnabypa3=1
+1:rxgains5gelnagaina3=3
+1:rxgains5gtrisoa3=6
+1:rxgains5gtrelnabypa3=1
+1:pa2g20ccka3=0xffff,0xffff,0xffff,0xffff
+1:pa5g160a3=0x1e0b,0xcf17,0xfe03,0x2d3d,0x1e0b,0xcf17,0xfe03,0x2d3d,0x1ebb,0xccad,0x0000,0x3893,0x1ebb,0xccad,0x0000,0x3893
+devpath2=pcie/1/1/
+2:boardflags=0x00001000
+2:boardflags2=0x00000004
+2:boardflags3=0x0
+2:boardflags4=0xE
+2:pdgain2g=1
+2:pdgain5g=1
+2:NVRAMRev=$Rev: 777532 $
+2:sromrev=18
+2:boardtype=0x08F3
+2:boardrev=0x1201
+2:subvid=0x14e4
+2:vendid=0x14e4
+2:boardnum=${serno}
+2:devid=0x4494
+2:macaddr=00:90:4c:37:40:00
+2:ccode=US
+2:regrev=791
+2:aa2g=0x7
+2:aa5g=0x7
+2:agbg0=0x43
+2:agbg1=0x43
+2:agbg2=0x43
+2:aga0=0x43
+2:aga1=0x43
+2:aga2=0x43
+2:txchain=0x7
+2:rxchain=0x7
+2:tssiposslope2g=1
+2:epagain2g=0
+2:tworangetssi2g=0
+2:papdcap2g=0
+2:tssiposslope5g=1
+2:epagain5g=0 
+2:femctrl=0 
+2:tworangetssi5g=0
+2:papdcap5g=0
+2:tempthresh=110
+2:tempoffset=255
+2:rawtempsense=0x1ff
+2:tempsense_slope=0xff
+2:tempcorrx=0x3f
+2:tempsense_option=0x3
+2:xtalfreq=50000
+2:phycal_tempdelta=40
+2:temps_period=10
+2:temps_hysteresis=5
+2:measpower=0
+2:measpower1=0
+2:measpower2=0
+2:ppr_backoff_2g=0x3
+2:ppr_backoff_5g=0x3
+2:low_adc_rate_en=1
+2:pa2ga0=0x1c5a,0xf1dc,0x3d37,0x2527
+2:pa2ga1=0x1c1d,0xf833,0x4ad6,0x2627
+2:pa2ga2=0x1bbf,0xf6ef,0x4251,0x2580
+2:pa2g40a0=0x1b36,0xf248,0x3477,0x2462
+2:pa2g40a1=0x1c22,0xeb1a,0x2f9f,0x2406
+2:pa2g40a2=0x19e3,0xfc05,0x3c40,0x24df
+2:maxp2ga0=0x5A
+2:maxp2ga1=0x59
+2:maxp2ga2=0x58
+2:cckbw202gpo=0x0000
+2:cckbw20ul2gpo=0x0000
+2:ofdmlrbw202gpo=0x0020
+2:dot11agofdmhrbw202gpo=0x8754
+2:mcsbw202gpo=0x88875420
+2:mcsbw402gpo=0x88875420
+2:pdoffsetcck=0
+2:pdoffsetcck20m=0
+2:pdoffset20in40m2g=0
+2:pdoffset20in40m2gcore3=0x0
+2:pdoffset2g40ma0=0
+2:pdoffset2g40ma1=0
+2:pdoffset2g40ma2=0
+2:pdoffset2g40mvalid=0
+2:pdoffset20in40m5gb0=0
+2:pdoffset20in40m5gb1=0
+2:pdoffset20in40m5gb2=0
+2:pdoffset20in40m5gb3=0
+2:pdoffset20in40m5gb4=0
+2:pdoffset40in80m5gb0=0
+2:pdoffset40in80m5gb1=0
+2:pdoffset40in80m5gb2=0
+2:pdoffset40in80m5gb3=0
+2:pdoffset40in80m5gb4=0
+2:pdoffset20in80m5gb0=0
+2:pdoffset20in80m5gb1=0
+2:pdoffset20in80m5gb2=0
+2:pdoffset20in80m5gb3=0
+2:pdoffset20in80m5gb4=0
+2:subband5gver=0x5
+2:mcsbw205glpo=0xFFFFFFFF
+2:mcsbw405glpo=0xFFFFFFFF
+2:mcsbw805glpo=0xFFFFFFFF
+2:mcsbw205gmpo=0xFFFFFFFF
+2:mcsbw405gmpo=0xFFFFFFFF
+2:mcsbw805gmpo=0xFFFFFFFF
+2:mcsbw205ghpo=0xFFFFFFFF
+2:mcsbw405ghpo=0xFFFFFFFF
+2:mcsbw805ghpo=0xFFFFFFFF
+2:mcsbw205gx1po=0xFFFFFFFF
+2:mcsbw405gx1po=0xFFFFFFFF
+2:mcsbw805gx1po=0xFFFFFFFF
+2:mcsbw205gx2po=0xFFFFFFFF
+2:mcsbw405gx2po=0xFFFFFFFF
+2:mcsbw805gx2po=0xFFFFFFFF
+2:mcs1024qam2gpo=0x8888
+2:mcs1024qam5glpo=0x0
+2:mcs1024qam5gmpo=0x0
+2:mcs1024qam5ghpo=0x0
+2:mcs1024qam5gx1po=0x0
+2:mcs1024qam5gx2po=0x0
+2:mcs8poexp=0x0
+2:mcs9poexp=0x0
+2:mcs10poexp=0x0
+2:mcs11poexp=0x0
+2:mcslr5glpo=0x0
+2:mcslr5gmpo=0x0
+2:mcslr5ghpo=0x0
+2:mcslr5gx1po=0x0
+2:mcslr5gx2po=0x0
+2:dot11agduphrpo=0
+2:dot11agduplrpo=0
+2:dot11agduphrlrpox=0
+2:sb20in40hrpo=0
+2:sb20in40lrpo=0
+2:sb20in40hrlrpox=0
+2:sb40and80hr5glpo=0
+2:sb40and80hr5gmpo=0
+2:sb40and80hr5ghpo=0
+2:sb40and80hr5gx1po=0
+2:sb40and80hr5gx2po=0
+2:sb20in80and160hr5glpo=0
+2:sb20in80and160hr5gmpo=0
+2:sb20in80and160hr5ghpo=0
+2:sb20in80and160hr5gx1po=0
+2:sb20in80and160hr5gx2po=0
+2:sb40and80lr5glpo=0
+2:sb40and80lr5gmpo=0
+2:sb40and80lr5ghpo=0
+2:sb40and80lr5gx1po=0
+2:sb40and80lr5gx2po=0
+2:sb20in80and160lr5glpo=0
+2:sb20in80and160lr5gmpo=0
+2:sb20in80and160lr5ghpo=0
+2:sb20in80and160lr5gx1po=0
+2:sb20in80and160lr5gx2po=0
+2:noiselvl2ga0=31
+2:noiselvl2ga1=31
+2:noiselvl2ga2=31
+2:noiselvl5ga0=31,31,31,31
+2:noiselvl5ga1=31,31,31,31
+2:noiselvl5ga2=31,31,31,31
+2:rxgains2gelnagaina0=4
+2:rxgains2gelnagaina1=4
+2:rxgains2gelnagaina2=4
+2:rxgains2gtrelnabypa0=1 
+2:rxgains2gtrelnabypa1=1 
+2:rxgains2gtrelnabypa2=1 
+2:rxgains2gtrisoa0=7 
+2:rxgains2gtrisoa1=7 
+2:rxgains2gtrisoa2=7 
+ 
+2:rxgainerr2ga0=63
+2:rxgainerr2ga1=31
+2:rxgainerr2ga2=31
+2:rxgainerr5ga0=63,63,63,63
+2:rxgainerr5ga1=31,31,31,31
+2:rxgainerr5ga2=31,31,31,31
+2:rxgains5gmelnagaina0=4
+2:rxgains5gmelnagaina1=4
+2:rxgains5gmelnagaina2=4
+2:rxgains5gmtrisoa0=7
+2:rxgains5gmtrisoa1=7
+2:rxgains5gmtrisoa2=7
+2:rxgains5gmtrelnabypa0=1
+2:rxgains5gmtrelnabypa1=1
+2:rxgains5gmtrelnabypa2=1
+2:rxgains5ghelnagaina0=4
+2:rxgains5ghelnagaina1=4
+2:rxgains5ghelnagaina2=4
+2:rxgains5ghtrisoa0=7
+2:rxgains5ghtrisoa1=7
+2:rxgains5ghtrisoa2=7
+2:rxgains5ghtrelnabypa0=1
+2:rxgains5ghtrelnabypa1=1
+2:rxgains5ghtrelnabypa2=1
+2:rxgains5gelnagaina0=4
+2:rxgains5gelnagaina1=4
+2:rxgains5gelnagaina2=4
+2:rxgains5gtrisoa0=7
+2:rxgains5gtrisoa1=7
+2:rxgains5gtrisoa2=7
+2:rxgains5gtrelnabypa0=1
+2:rxgains5gtrelnabypa1=1
+2:rxgains5gtrelnabypa2=1
+2:maxp5gb0a0=0x60
+2:maxp5gb1a0=0x60
+2:maxp5gb2a0=0x60
+2:maxp5gb3a0=0x60
+2:maxp5gb4a0=0x60
+2:maxp5gb0a1=0x60
+2:maxp5gb1a1=0x60
+2:maxp5gb2a1=0x60
+2:maxp5gb3a1=0x60
+2:maxp5gb4a1=0x60
+2:maxp5gb0a2=0x60
+2:maxp5gb1a2=0x60
+2:maxp5gb2a2=0x60
+2:maxp5gb3a2=0x60
+2:maxp5gb4a2=0x60
+2:pa5ga0=0x2499,0xCBF7,0xF24F,0x0000,0x246A,0xCB8D,0xF270,0x0000,0x20AC,0xE3D5,0xE825,0x0000,0x1BDC,0xFFFF,0xDE58,0x1272,0x1B6C,0x0000,0xDD90,0x0000
+2:pa5ga1=0x2568,0xD3D6,0xEDE7,0x0000,0x267F,0xCA8E,0xF195,0x0000,0x217F,0xE9ED,0xE499,0x0000,0x1DA0,0x0000,0xDC6A,0x0000,0x1F4D,0xF00C,0xE352,0x0000
+2:pa5ga2=0x24FE,0xD5C9,0xECD8,0x0000,0x25D4,0xCE61,0xEFA3,0x0000,0x1FE2,0xF456,0xDFBE,0x0000,0x1D1B,0x0000,0xDD16,0x0000,0x1C79,0xFFF3,0xDED2,0x2481
+2:pa5g40a0=0x20ed,0xcbb0,0xfc4c,0x15b0,0x220a,0xc67b,0xfefb,0x224c,0x2233,0xc2f1,0x0000,0x1aa4,0x21e9,0xc36b,0x0000,0x1835,0x21a8,0xc504,0x0000,0x1f1c
+2:pa5g40a1=0x20e5,0xc8a6,0xff16,0x2579,0x216b,0xc618,0x0000,0x23a3,0x20c3,0xc4bf,0x0000,0x158c,0x2064,0xc69f,0x0000,0x1d67,0x2027,0xc8c2,0x0000,0x281f
+2:pa5g40a2=0x2118,0xc51b,0x0000,0x1e0b,0x20d2,0xc58c,0x0000,0x201c,0x1f93,0xcc03,0xfda9,0x1b3d,0x1f27,0xcfdd,0xfc2d,0x193b,0x1f63,0xcddd,0xfd0a,0x1a4d
+2:pa5g80a0=0x2090,0xc845,0xfed7,0x1e42,0x2182,0xc51d,0x0000,0x1fd1,0x2197,0xc388,0xfffe,0x16bf,0x211e,0xc403,0x0000,0x0fa5,0x213e,0xc48a,0x0000,0x107e
+2:pa5g80a1=0x2582,0xD794,0xEC99,0x0000,0x23B0,0xE5E9,0xE687,0x0000,0x1F15,0xFB60,0xDF18,0x0000,0x1CCF,0x0000,0xE408,0x63E4,0x1C55,0xFFF2,0xE355,0x55B8
+2:pa5g80a2=0x2314,0xE565,0xE719,0x0000,0x2295,0xEB40,0xE450,0x0000,0x1E30,0x0000,0xDCD8,0x0000,0x1BA6,0x0000,0xEB98,0x7FFF,0x1BAB,0x0000,0xE873,0x7FFF
+2:rpcal2g=0
+2:rpcal5gb0=0
+2:rpcal5gb1=0
+2:rpcal5gb2=0
+2:rpcal5gb3=0
+2:rpcal5gb4=0
+2:swctrlmap4_cfg=0x0001
+2:swctrlmap4_TX2g_fem3to0=0x0888
+2:swctrlmap4_RX2g_fem3to0=0x0444
+2:swctrlmap4_RXByp2g_fem3to0=0x0000
+2:swctrlmap4_misc2g_fem3to0=0x0
+2:swctrlmap4_TX5g_fem3to0=0x0000
+2:swctrlmap4_RX5g_fem3to0=0x0000
+2:swctrlmap4_RXByp5g_fem3to0=0x0000
+2:swctrlmap4_misc5g_fem3to0=0
+2:swctrlmap4_TX2g_fem7to4=0
+2:swctrlmap4_RX2g_fem7to4=0
+2:swctrlmap4_RXByp2g_fem7to4=0
+2:swctrlmap4_misc2g_fem7to4=0
+2:swctrlmap4_TX5g_fem7to4=0
+2:swctrlmap4_RX5g_fem7to4=0
+2:swctrlmap4_RXByp5g_fem7to4=0
+2:swctrlmap4_misc5g_fem7to4=0
+et0macaddr=02:10:18:01:00:01
diff --git a/iopsys-brcm63xx-arm/panda/base-files/etc/wlan/nvram/FT_G6416.nvm b/iopsys-brcm63xx-arm/koala/base-files/etc/wlan/nvram/FT_G6416.nvm
similarity index 100%
rename from iopsys-brcm63xx-arm/panda/base-files/etc/wlan/nvram/FT_G6416.nvm
rename to iopsys-brcm63xx-arm/koala/base-files/etc/wlan/nvram/FT_G6416.nvm
diff --git a/iopsys-brcm63xx-arm/panda/base-files/etc/wlan/nvram/FT_G6426.nvm b/iopsys-brcm63xx-arm/koala/base-files/etc/wlan/nvram/FT_G6426.nvm
similarity index 100%
rename from iopsys-brcm63xx-arm/panda/base-files/etc/wlan/nvram/FT_G6426.nvm
rename to iopsys-brcm63xx-arm/koala/base-files/etc/wlan/nvram/FT_G6426.nvm
diff --git a/iopsys-brcm63xx-arm/panda/base-files/etc/wlan/nvram/FT_G6476.nvm b/iopsys-brcm63xx-arm/koala/base-files/etc/wlan/nvram/FT_G6476.nvm
similarity index 100%
rename from iopsys-brcm63xx-arm/panda/base-files/etc/wlan/nvram/FT_G6476.nvm
rename to iopsys-brcm63xx-arm/koala/base-files/etc/wlan/nvram/FT_G6476.nvm
diff --git a/iopsys-brcm63xx-arm/koala/base-files/lib/functions/iopsys-environment.sh b/iopsys-brcm63xx-arm/koala/base-files/lib/functions/iopsys-environment.sh
new file mode 100644
index 0000000000000000000000000000000000000000..5d356b09a811cebc0412f060b942d7f73c4fc25d
--- /dev/null
+++ b/iopsys-brcm63xx-arm/koala/base-files/lib/functions/iopsys-environment.sh
@@ -0,0 +1,90 @@
+get_base_macaddr() {
+	local basemac="$(/usr/bin/kv_read BaseMacAddr)"
+	echo "$basemac"
+}
+
+get_macaddr_maxsize() {
+	local maxsize="$(/usr/bin/kv_read NumMacAddrs)"
+	echo "$maxsize"
+}
+
+get_board_id() {
+	local board_id="$(fw_printenv -n boardid)"
+	echo "$board_id"
+}
+
+get_product_name() {
+	local prodname="$(/usr/bin/kv_read ProdName)"
+	echo "$prodname"
+}
+
+get_serial_number() {
+	local serial_number="$(/usr/bin/kv_read SerialNumber)"
+	case $serial_number in
+		*[a-z]*|*[A-Z]*|*[0-9]*) ;;
+		*) serial_number="0000000000" ;;
+	esac
+	echo "$serial_number"
+}
+
+get_psn() {
+	local psn="$(/usr/bin/kv_read PSN)"
+	case $psn in
+		*[a-z]*|*[A-Z]*|*[0-9]*) ;;
+		*) psn="0000000000" ;;
+	esac
+	echo "$psn"
+}
+
+get_variant() {
+	local variant="$(/usr/bin/kv_read Variant)"
+	case $variant in
+		*[0-9]*) ;;
+		*) variant="0" ;;
+	esac
+	echo "$variant"
+}
+
+get_hardware_version() {
+	local hardware_version="$(/usr/bin/kv_read HV)"
+	case $hardware_version in
+		.[0-9]*) hardware_version="1$hardware_version" ;;
+		[0-9]*) ;;
+		*) hardware_version="0" ;;
+	esac
+	echo "$hardware_version"
+}
+
+get_wpa_key() {
+	local wpa_key="$(/usr/bin/kv_read WpaKey)"
+	case $wpa_key in
+		*[a-z]*|*[A-Z]*|*[0-9]*) wpa_key=$(echo $wpa_key | sed 's/[ \t]*$//') ;;
+		*) wpa_key="00000000" ;;
+	esac
+	echo "$wpa_key"
+}
+
+get_des_key() {
+	local des_key="$(/usr/bin/kv_read DesKey)"
+	echo "$des_key"
+}
+
+get_auth_key() {
+	local auth_key="$(/usr/bin/kv_read AuthKey)"
+	echo "$auth_key"
+}
+
+get_user_password() {
+	local user_pass="$(/usr/bin/kv_read UserPassword)"
+	echo "$user_pass"
+}
+
+get_acs_password() {
+	local acs_pass="$(/usr/bin/kv_read AcsPassword)"
+	echo "$acs_pass"
+}
+
+get_production_mode() {
+	local production="$(/usr/bin/kv_read Production)"
+	echo "$production"
+}
diff --git a/iopsys-brcm63xx-arm/koala/base-files/usr/bin/kv_read b/iopsys-brcm63xx-arm/koala/base-files/usr/bin/kv_read
new file mode 100755
index 0000000000000000000000000000000000000000..40f55044bcdfcd92ea4c49844bdf85a3aa131446
--- /dev/null
+++ b/iopsys-brcm63xx-arm/koala/base-files/usr/bin/kv_read
@@ -0,0 +1,15 @@
+ #!/bin/sh
+
+DEVPARAM_FILE="/data/config/device_params"
+DEVPARAM="$1"
+
+if [ ! -f $DEVPARAM_FILE ]; then
+	fw_printenv -n $DEVPARAM
+	exit $?
+fi
+
+if [ -n "$DEVPARAM" ]; then
+	grep $DEVPARAM $DEVPARAM_FILE | awk -F'=' '{print$2}'
+else
+	cat $DEVPARAM_FILE
+fi
diff --git a/iopsys-brcm63xx-arm/koala/base-files/usr/sbin/voice_monitor b/iopsys-brcm63xx-arm/koala/base-files/usr/sbin/voice_monitor
new file mode 100755
index 0000000000000000000000000000000000000000..22786831482e6293072f47842658635bbd2d3587
--- /dev/null
+++ b/iopsys-brcm63xx-arm/koala/base-files/usr/sbin/voice_monitor
@@ -0,0 +1,32 @@
+#!/bin/sh
+. /lib/voice/utils.sh
+
+ubus call led.voice set '{"state":"off"}'
+
+check_voice() {
+	local account_enabled=0
+	local registered=0
+	
+	while true; do
+		account_enabled=0
+		registered=0
+
+		for peer in $(uci show $VOICE_UCI_CONFIG | grep sip_service_provider | awk -F[.,=] '{print$2}'); do
+			[ "$(uci -q get $VOICE_UCI_CONFIG.$peer.enabled)" = "1" ] && account_enabled=1
+		done
+
+		if [ "$account_enabled" = "0" ]; then
+			ubus call led.voice set '{"state":"off"}'
+		else
+			asterisk -x 'pjsip show registrations' | grep -q "Registered" && registered=1
+			if [ "$registered" = "0" ]; then
+				ubus call led.voice set '{"state":"error"}'
+			else
+				ubus call led.voice set '{"state":"ok"}'
+			fi
+		fi
+		sleep 5
+	done
+}
+
+check_voice
diff --git a/iopsys-brcm63xx-arm/koala/bsp-patches/0001-Polarity-fix-from-ODM.patch b/iopsys-brcm63xx-arm/koala/bsp-patches/0001-Polarity-fix-from-ODM.patch
new file mode 100644
index 0000000000000000000000000000000000000000..7bc617514eebf7f8ef151432c6a72b9c4dea944b
--- /dev/null
+++ b/iopsys-brcm63xx-arm/koala/bsp-patches/0001-Polarity-fix-from-ODM.patch
@@ -0,0 +1,25 @@
+From d1a8f88e82fd642747019d08e2d07e4b66171118 Mon Sep 17 00:00:00 2001
+From: Markus Gothe <markus.gothe@genexis.eu>
+Date: Thu, 11 Nov 2021 15:07:09 +0100
+Subject: [PATCH] Polarity fix from ODM
+
+---
+ .../opensource/char/opticaldet/impl2/detect_dev_trx_data.c      | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/bcm963xx/bcmdrivers/opensource/char/opticaldet/impl2/detect_dev_trx_data.c b/bcm963xx/bcmdrivers/opensource/char/opticaldet/impl2/detect_dev_trx_data.c
+index 5fd97b25e..7b7511f6d 100644
+--- a/bcm963xx/bcmdrivers/opensource/char/opticaldet/impl2/detect_dev_trx_data.c
++++ b/bcm963xx/bcmdrivers/opensource/char/opticaldet/impl2/detect_dev_trx_data.c
+@@ -181,6 +181,8 @@ static void *detect(struct device *trx_dev, int is_pmd)
+             break;
+         default:
+             BCM_LOG_ERROR(BCM_LOG_ID_OPTICALDET, "Opticaldet: Illegal TRX type %d\n", trx_ff);
++            printk(KERN_ALERT "*****Use default******\n");
++            trx = &default_pluggable_trx;
+     }
+ 
+     return trx;
+-- 
+2.33.1
+
diff --git a/iopsys-brcm63xx-arm/koala/bsp-patches/series b/iopsys-brcm63xx-arm/koala/bsp-patches/series
new file mode 100644
index 0000000000000000000000000000000000000000..156d378612aefa543a6b453bf3a883e403c33567
--- /dev/null
+++ b/iopsys-brcm63xx-arm/koala/bsp-patches/series
@@ -0,0 +1 @@
+0001-Polarity-fix-from-ODM.patch
diff --git a/iopsys-brcm63xx-arm/panda/base-files/etc/data/scratchpad b/iopsys-brcm63xx-arm/panda/base-files/etc/data/scratchpad
new file mode 100644
index 0000000000000000000000000000000000000000..88fb0b4af4cbe80365cdcbbd91a6b4854c980a9c
Binary files /dev/null and b/iopsys-brcm63xx-arm/panda/base-files/etc/data/scratchpad differ
diff --git a/iopsys-brcm63xx-arm/panda/base-files/etc/hotplug.d/button/10-dimmingbutton b/iopsys-brcm63xx-arm/panda/base-files/etc/hotplug.d/button/10-dimmingbutton
index 72554cd02fe9a9246627d1c81be117245e604ddb..a1a4e80ab7646e151a23a47cf201ddcfd8a3d64a 100644
--- a/iopsys-brcm63xx-arm/panda/base-files/etc/hotplug.d/button/10-dimmingbutton
+++ b/iopsys-brcm63xx-arm/panda/base-files/etc/hotplug.d/button/10-dimmingbutton
@@ -37,12 +37,6 @@ dimming_button() {
         need_to_sync_dimming_states
         needs_sync="$?"
 
-        if [ "$needs_sync" != "0" ]; then
-                for led in $(ubus list led.*); do
-                        ubus call "$led" set "{\"brightness\":0}"
-                done
-        fi
-
         for led in $(ubus list led.*); do
                 brightness=100
                 current_brightness=100
@@ -51,14 +45,16 @@ dimming_button() {
                 json_load "$(ubus call "$led" status)"
                 json_get_var current_brightness brightness
 
-                if [ "$current_brightness" -ge 100 ]; then
+                if [ "$needs_sync" != "0" ]; then
+			brightness=100
+                elif [ "$current_brightness" -ge 100 ]; then
                         brightness=75
                 elif [ "$current_brightness" -ge 75 ]; then # Slightly dimmed
                         brightness=15
                 elif [ "$current_brightness" -ge 15 ]; then # Significantly dimmed
                         brightness=0
                         case $ledname in
-                                status) brightness=15 ;;
+                                status|composite) brightness=15 ;;
                         esac
                 else
                         brightness=100
@@ -67,6 +63,7 @@ dimming_button() {
                 uci set leds.$ledname.brightness="$brightness"
         done
         uci commit leds
+        sync # ODM turns off the power after toggling during testing, save ASAP
 }
 
 case "$ACTION" in
diff --git a/iopsys-brcm63xx-arm/panda/base-files/etc/init.d/scratchpad b/iopsys-brcm63xx-arm/panda/base-files/etc/init.d/scratchpad
index cd7e35d0cd250ff096ce6c1b7bf62658a4098479..aeea3ae87473dea0013532448fe7cf3e751e19ad 100755
--- a/iopsys-brcm63xx-arm/panda/base-files/etc/init.d/scratchpad
+++ b/iopsys-brcm63xx-arm/panda/base-files/etc/init.d/scratchpad
@@ -1,26 +1,12 @@
 #!/bin/sh /etc/rc.common
 #
 # Initialize scratchpad
-START=05
 
-. /lib/functions.sh
-. /lib/functions/iopsys-environment.sh
+START=05
 
 boot() {
-	local boardid="$(get_board_id)"
-
-	if [ ! -f "/data/scratchpad" ]; then
-		if [ "$boardid" = "FT_P6476" -o "$boardid" = "FT_P6426" -o "$boardid" = "FT_P6414" ]; then
-			pspctl set GbeWanEMac NONE
-			pspctl set RdpaWanType GBE
-			pspctl set WanRate 0101
-			pspctl set WanOEMac EPONMAC
-			pspctl set IpClassMethod FC
-		else
-			pspctl set GbeWanEMac NONE
-			pspctl set RdpaWanType GPON
-			pspctl set WanRate 1010
-		fi
+	if [ -f "/etc/data/scratchpad" -a ! -f "/data/scratchpad" ]; then
+		cp "/etc/data/scratchpad" "/data/scratchpad"
 		sync
 	fi
 }
diff --git a/iopsys-brcm63xx-arm/panda/base-files/etc/init.d/voice_monitor b/iopsys-brcm63xx-arm/panda/base-files/etc/init.d/voice_monitor
new file mode 100755
index 0000000000000000000000000000000000000000..afe3ca95a5f4457027f1fd7ca557e64648d3f3be
--- /dev/null
+++ b/iopsys-brcm63xx-arm/panda/base-files/etc/init.d/voice_monitor
@@ -0,0 +1,29 @@
+#!/bin/sh /etc/rc.common
+
+START=21
+STOP=90
+USE_PROCD=1
+
+VOICE_MONITOR=$(which voice_monitor)
+
+start_service() {
+	[ -n "$VOICE_MONITOR" ] && {
+		procd_open_instance
+		procd_set_param command "$VOICE_MONITOR"
+		procd_set_param respawn
+		procd_close_instance
+	}
+}
+
+stop_service() {
+	[ -n "$VOICE_MONITOR" ] && service_stop "$VOICE_MONITOR"
+}
+
+boot() {
+	start
+}
+
+reload_service() {
+	stop
+	start
+}
diff --git a/iopsys-brcm63xx-arm/panda/base-files/usr/sbin/voice_monitor b/iopsys-brcm63xx-arm/panda/base-files/usr/sbin/voice_monitor
new file mode 100755
index 0000000000000000000000000000000000000000..22786831482e6293072f47842658635bbd2d3587
--- /dev/null
+++ b/iopsys-brcm63xx-arm/panda/base-files/usr/sbin/voice_monitor
@@ -0,0 +1,32 @@
+#!/bin/sh
+. /lib/voice/utils.sh
+
+ubus call led.voice set '{"state":"off"}'
+
+check_voice() {
+	local account_enabled=0
+	local registered=0
+	
+	while true; do
+		account_enabled=0
+		registered=0
+
+		for peer in $(uci show $VOICE_UCI_CONFIG | grep sip_service_provider | awk -F[.,=] '{print$2}'); do
+			[ "$(uci -q get $VOICE_UCI_CONFIG.$peer.enabled)" = "1" ] && account_enabled=1
+		done
+
+		if [ "$account_enabled" = "0" ]; then
+			ubus call led.voice set '{"state":"off"}'
+		else
+			asterisk -x 'pjsip show registrations' | grep -q "Registered" && registered=1
+			if [ "$registered" = "0" ]; then
+				ubus call led.voice set '{"state":"error"}'
+			else
+				ubus call led.voice set '{"state":"ok"}'
+			fi
+		fi
+		sleep 5
+	done
+}
+
+check_voice
diff --git a/iopsys-brcm63xx-arm/panda/bsp-patches/900-Let-NVRAM-override-SROM-OTP.patch b/iopsys-brcm63xx-arm/panda/bsp-patches/900-Let-NVRAM-override-SROM-OTP.patch
deleted file mode 100644
index f28ddb0b5f43eb56c48647f60ee69b88decdbece..0000000000000000000000000000000000000000
--- a/iopsys-brcm63xx-arm/panda/bsp-patches/900-Let-NVRAM-override-SROM-OTP.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 31bb4b0035e399500bb8c6aef8ad51951b86456d Mon Sep 17 00:00:00 2001
-From: Markus Gothe <markus.gothe@genexis.eu>
-Date: Thu, 12 Nov 2020 15:52:15 +0100
-Subject: [PATCH] Let NVRAM override SROM/OTP.
-
-If we have NVRAM then
-use it in favour of SROM/OTP
-for parameters.
----
- .../broadcom/net/wl/impl69/main/src/dongle/make/Makeconf      | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/bcm963xx/bcmdrivers/broadcom/net/wl/impl69/main/src/dongle/make/Makeconf b/bcm963xx/bcmdrivers/broadcom/net/wl/impl69/main/src/dongle/make/Makeconf
-index e198929a0..ab91a091a 100644
---- a/bcm963xx/bcmdrivers/broadcom/net/wl/impl69/main/src/dongle/make/Makeconf
-+++ b/bcm963xx/bcmdrivers/broadcom/net/wl/impl69/main/src/dongle/make/Makeconf
-@@ -117,10 +117,10 @@ endif
- # support host-supplied nvram variables
- ifeq ($(BCMHOSTVARS),1)
- EXTRA_DFLAGS += -DBCMHOSTVARS
--ifneq ($(CMWIFI),)
-+#ifneq ($(CMWIFI),)
- # Host downloaded nvram vars will override existing SROM
- EXTRA_DFLAGS += -DBCMHOSTVARS_OVERRIDE_SROM
--endif
-+#endif
- endif
- 
- # dongle does not need a delay before MPC starts
--- 
-2.29.2
-
diff --git a/iopsys-brcm63xx-arm/panda/bsp-patches/series b/iopsys-brcm63xx-arm/panda/bsp-patches/series
deleted file mode 100644
index 702210b121f9493bea93c8d6db242bad1bd949c4..0000000000000000000000000000000000000000
--- a/iopsys-brcm63xx-arm/panda/bsp-patches/series
+++ /dev/null
@@ -1 +0,0 @@
-900-Let-NVRAM-override-SROM-OTP.patch
diff --git a/iopsys-brcm63xx-arm/profiles/iopsys.mk b/iopsys-brcm63xx-arm/profiles/iopsys.mk
index c2c363e737479c6c32dcd389d814ff75a503dd2c..21edd36edfaafcb08562c2c8f0f2ec0d93df25c8 100644
--- a/iopsys-brcm63xx-arm/profiles/iopsys.mk
+++ b/iopsys-brcm63xx-arm/profiles/iopsys.mk
@@ -75,6 +75,18 @@ endef
 
 $(eval $(call Profile,panda))
 
+#################### KOALA
+define Profile/koala
+  NAME:=koala
+  PACKAGES:=i2c-tools $(VOICE_SUPPORT)
+endef
+
+define Profile/koala/Description
+	koala profile
+endef
+
+$(eval $(call Profile,koala))
+
 #################### EAGLE
 define Profile/eagle
   NAME:=eagle