diff --git a/gateway-info/Makefile b/gateway-info/Makefile
index 129451be35b519fe1d4b32ed3b8f3b92cd5bc4ed..6796736dd3818a80270e82650264b4ca7d0eb2a5 100644
--- a/gateway-info/Makefile
+++ b/gateway-info/Makefile
@@ -8,13 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=gateway-info
-PKG_VERSION:=1.0.0
+PKG_VERSION:=1.0.1
 
 LOCAL_DEV:=0
 ifneq ($(LOCAL_DEV),1)
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL:=https://dev.iopsys.eu/bbf/gateway-info.git
-PKG_SOURCE_VERSION:=26e407a25b156da75e3941d54ddd74294cd9eae8
+PKG_SOURCE_VERSION:=b77871a883797db5c9fce232e2d2f183e59c682d
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
 PKG_MIRROR_HASH:=skip
 endif
@@ -29,7 +29,7 @@ define Package/gateway-info
   CATEGORY:=Utilities
   TITLE:=GatewayInfo Data Model Support
   DEPENDS:=+libuci +libubox +libubus +libblobmsg-json +umdns
-  DEPENDS+=+libbbfdm-api +libbbfdm-ubus +dm-service
+  DEPENDS+=+libbbfdm-api +libbbfdm-ubus +dm-service +iputils-arping
 endef
 
 define Package/gateway-info/description
diff --git a/gateway-info/files/etc/udhcpc.user.d/udhcpc_gateway_info.user b/gateway-info/files/etc/udhcpc.user.d/udhcpc_gateway_info.user
index f757a9874c21ab6e104b1d2f0875e0b086e8ab8f..f5defa6646226972d4a1053851588670b2a828e0 100644
--- a/gateway-info/files/etc/udhcpc.user.d/udhcpc_gateway_info.user
+++ b/gateway-info/files/etc/udhcpc.user.d/udhcpc_gateway_info.user
@@ -243,11 +243,42 @@ get_usp_agent_id() {
 
 get_mac_address() {
 	ip="${1}"
+	device="${2}"
 
 	mac="$(cat /proc/net/arp | grep $ip | awk '{print $4}')"
+	if [ -z "${mac}" ]; then
+		arp_resp="$(arping -b -f -c 5 -I $device $ip | grep 'Unicast reply from' | awk '{print $5}')"
+		if [ -n "${arp_resp}" ]; then
+			mac=${arp_resp:1:-1}
+		fi
+	fi
+
 	echo "${mac}"
 }
 
+send_unknown_gw_event() {
+	mac="${1}"
+
+	cmd="ubus -t 5 send gateway-info.gateway.unknown '{\"hwaddr\":\"$mac\"}'"
+	eval $cmd
+}
+
+send_cwmp_gw_event() {
+	oui="${1}"
+	class="${2}"
+	serial="${3}"
+
+	cmd="ubus -t 5 send gateway-info.gateway.cwmp '{\"oui\":\"$oui\",\"class\":\"$class\",\"serial\":\"$serial\"}'"
+	eval $cmd
+}
+
+send_usp_gw_event() {
+	endpoint="${1}"
+
+	cmd="ubus -t 5 send gateway-info.gateway.usp '{\"endpoint\":\"$endpoint\"}'"
+	eval $cmd
+}
+
 config_load gateway
 config_get wan_intf global wan_interface "wan"
 
@@ -257,17 +288,18 @@ if [ "${wan_intf}" == "${INTERFACE}" ]; then
 		return 0
 	fi
 
-	if [ -z "$opt125" ]; then
-		return 0
-	fi
-
-	len=$(printf "$opt125"|wc -c)
-	get_vivsoi "$opt125" "$len"
+	json_load "$(ifstatus ${INTERFACE})"
+	json_get_var dev_name device ""
+	json_select data
+	json_get_var dhcp_ip dhcpserver ""
+	json_cleanup
 
-	if [ "${GW_DISCOVERED}" -eq 0 ]; then
+	if [ -z "${dhcp_ip}" ] || [ -z "${dev_name}" ]; then
 		return 0
 	fi
 
+	MAC="$(get_mac_address $dhcp_ip $dev_name)"
+
 	mkdir -p /var/state
 	touch /var/state/gwinfo
 	sec=$(uci -q -c /var/state get gwinfo.gatewayinfo)
@@ -276,8 +308,27 @@ if [ "${wan_intf}" == "${INTERFACE}" ]; then
 		uci -q -c /var/state rename gwinfo."${sec}"="gatewayinfo"
 	fi
 
-	uci -q -c /var/state set gwinfo.gatewayinfo.hwaddr=""
+	uci -q -c /var/state set gwinfo.gatewayinfo.hwaddr="$MAC"
 	uci -q -c /var/state set gwinfo.gatewayinfo.endpoint=""
+	uci -q -c /var/state set gwinfo.gatewayinfo.class=""
+	uci -q -c /var/state set gwinfo.gatewayinfo.oui=""
+	uci -q -c /var/state set gwinfo.gatewayinfo.serial=""
+	uci -q -c /var/state set gwinfo.gatewayinfo.proto=""
+	uci -q -c /var/state commit gwinfo
+
+	if [ -z "$opt125" ]; then
+		send_unknown_gw_event "${MAC}"
+		return 0
+	fi
+
+	len=$(printf "$opt125"|wc -c)
+	get_vivsoi "$opt125" "$len"
+
+	if [ "${GW_DISCOVERED}" -eq 0 ]; then
+		send_unknown_gw_event "${MAC}"
+		return 0
+	fi
+
 	uci -q -c /var/state set gwinfo.gatewayinfo.class="$CLASS"
 	uci -q -c /var/state set gwinfo.gatewayinfo.oui="$OUI"
 	uci -q -c /var/state set gwinfo.gatewayinfo.serial="$SERIAL"
@@ -287,33 +338,25 @@ if [ "${wan_intf}" == "${INTERFACE}" ]; then
 	# Check for USP parameters
 	ubus -t 15 wait_for umdns
 	if [ "${?}" -ne 0 ]; then
-		return 0
-	fi
-
-	json_load "$(ifstatus ${INTERFACE})"
-	json_get_var dev_name device ""
-	json_select data
-	json_get_var dhcp_ip dhcpserver ""
-	json_cleanup
-
-	if [ -z "${dhcp_ip}" ] || [ -z "${dev_name}" ]; then
+		send_cwmp_gw_event "${OUI}" "${CLASS}" "${SERIAL}"
 		return 0
 	fi
 
 	resp=$(send_host_query $dev_name)
 	if [ "${resp}" -ne 0 ]; then
+		send_cwmp_gw_event "${OUI}" "${CLASS}" "${SERIAL}"
 		return 0
 	fi
 
 	ID="$(get_usp_agent_id $dhcp_ip)"
 	if [ -z "${ID}" ]; then
+		send_cwmp_gw_event "${OUI}" "${CLASS}" "${SERIAL}"
 		return 0
 	fi
 
-	MAC="$(get_mac_address $dhcp_ip)"
-
-	uci -q -c /var/state set gwinfo.gatewayinfo.hwaddr="$MAC"
 	uci -q -c /var/state set gwinfo.gatewayinfo.endpoint="$ID"
 	uci -q -c /var/state set gwinfo.gatewayinfo.proto="USP"
 	uci -q -c /var/state commit gwinfo
+
+	send_usp_gw_event "${ID}"
 fi