diff --git a/cmds/Android.bp b/cmds/Android.bp
index c87a1fe..d5d5a77 100644
--- a/cmds/Android.bp
+++ b/cmds/Android.bp
@@ -9,3 +9,10 @@
 		"libhidlbase",
 	],
 }
+
+cc_binary {
+	name: "uevent",
+	srcs: [
+		"uevent.cpp",
+	],
+}
diff --git a/cmds/uevent.cpp b/cmds/uevent.cpp
new file mode 100644
index 0000000..e2d8ee1
--- /dev/null
+++ b/cmds/uevent.cpp
@@ -0,0 +1,57 @@
+typedef unsigned short int sa_family_t;
+#define __KERNEL_STRICT_NAMES
+#include <sys/types.h>
+#include <linux/netlink.h>
+#include <sys/socket.h> 
+#include <string.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+
+//From a uevent patch for hal
+#define HOTPLUG_BUFFER_SIZE             1024
+#define HOTPLUG_NUM_ENVP                32
+#define OBJECT_SIZE                     512
+
+#ifndef NETLINK_KOBJECT_UEVENT
+#error Your kernel headers are too old, and do not define NETLINK_KOBJECT_UEVENT. You need Linux 2.6.10 or higher for KOBJECT_UEVENT support.
+#endif
+
+int main(int argc, char **argv, char **envp) {
+        //Start listening
+        int fd;
+        struct sockaddr_nl ksnl;
+        memset(&ksnl, 0x00, sizeof(struct sockaddr_nl));
+        ksnl.nl_family=AF_NETLINK;
+        ksnl.nl_pid=getpid();
+        ksnl.nl_groups=0xffffffff;
+        fd=socket(PF_NETLINK, SOCK_DGRAM, NETLINK_KOBJECT_UEVENT);
+        if (fd==-1) {
+                printf("Couldn't open kobject-uevent netlink socket");
+                perror("");
+                exit(1);
+        }
+        if (bind(fd, (struct sockaddr *) &ksnl, sizeof(struct sockaddr_nl))<0) {
+                fprintf (stderr, "Error binding to netlink socket");
+                close(fd);
+                exit(1);
+        }
+
+        while(1) {
+                char buffer[HOTPLUG_BUFFER_SIZE + OBJECT_SIZE];
+                int buflen;
+                buflen=recv(fd, &buffer, sizeof(buffer), 0);
+                if (buflen<0) {
+                        exit(1);
+                }
+                printf("%s\n", buffer);
+                char *pos = buffer + strlen(buffer);
+                char *end = buffer + buflen;
+                while(pos < end) {
+                    int l = strlen(pos);
+                    printf("\t%s\n", pos);
+                    pos += l+1;
+                }
+        }
+
+}
