diff --git a/firmware/target/arm/olympus/mrobe-500/button-mr500.c b/firmware/target/arm/olympus/mrobe-500/button-mr500.c
index 9cafab5..388dbf0 100644
--- a/firmware/target/arm/olympus/mrobe-500/button-mr500.c
+++ b/firmware/target/arm/olympus/mrobe-500/button-mr500.c
@@ -27,22 +27,11 @@
 #include "system.h"
 #include "backlight-target.h"
 
-static int const remote_buttons[] =
-{
-    BUTTON_NONE,        /* Headphones connected - remote disconnected */
-    BUTTON_RC_PLAY,
-    BUTTON_RC_DSP,
-    BUTTON_RC_REW,
-    BUTTON_RC_FF,
-    BUTTON_RC_VOL_UP,
-    BUTTON_RC_VOL_DOWN,
-    BUTTON_NONE,        /* Remote control attached - no buttons pressed */
-    BUTTON_NONE,        /* Nothing in the headphone socket */
-};
-
+#define BUTTON_TIMEOUT 50
 void button_init_device(void)
 {
-    /* Power, Remote Play & Hold switch */
+    /* GIO is the power button, set as input */
+    outw(inw(IO_GIO_DIR0)|0x01, IO_GIO_DIR0);
 }
 
 inline bool button_hold(void)
@@ -52,5 +41,51 @@
 
 int button_read_device(void)
 {
-    return 0;
+    char data[5], c;
+    int i = 0;
+    int btn = BUTTON_NONE, timeout = BUTTON_TIMEOUT;
+    
+    if ((inw(IO_GIO_BITSET0)&0x01) == 0)
+        btn |= BUTTON_POWER;
+        
+    uartHeartbeat();
+    while (timeout > 0)
+    {
+        c = uartPollch(BUTTON_TIMEOUT*100);
+        if (c > -1)
+        {
+            if (i && data[0] == 0xf4)
+            {
+                data[i++] = c;
+            }
+            else if (c == 0xf4)
+            {
+                data[0] = c;
+                i = 1;
+            }
+            
+            if (i == 5)
+            {
+                if (data[1]& (1<<7))
+                    btn |= BUTTON_RC_HEART;
+                if (data[1]& (1<<6))
+                    btn |= BUTTON_RC_MODE;
+                if (data[1]& (1<<5))
+                    btn |= BUTTON_RC_VOL_DOWN;
+                if (data[1]& (1<<4))
+                    btn |= BUTTON_RC_VOL_UP;
+                if (data[1]& (1<<3))
+                    btn |= BUTTON_RC_REW;
+                if (data[1]& (1<<2))
+                    btn |= BUTTON_RC_FF;
+                if (data[1]& (1<<1))
+                    btn |= BUTTON_RC_DOWN;
+                if (data[1]& (1<<0))
+                    btn |= BUTTON_RC_PLAY;
+                break;
+            }
+        }
+        timeout--;
+    }
+    return btn;
 }
diff --git a/firmware/target/arm/olympus/mrobe-500/button-target.h b/firmware/target/arm/olympus/mrobe-500/button-target.h
index 6637c5b..80dd246 100644
--- a/firmware/target/arm/olympus/mrobe-500/button-target.h
+++ b/firmware/target/arm/olympus/mrobe-500/button-target.h
@@ -7,7 +7,7 @@
  *                     \/            \/     \/    \/            \/
  * $Id: $
  *
- * Copyright (C) 2007 by Karl Kurbjun
+ * Copyright (C) 2007 by Jonathan Gordon
  *
  * All files in this archive are subject to the GNU General Public License.
  * See the file COPYING in the source tree root for full license agreement.
@@ -29,71 +29,35 @@
 void button_init_device(void);
 int button_read_device(void);
 
-/* Toshiba Gigabeat specific button codes */
+/* m:robe 500 specific button codes */
 
 #define BUTTON_POWER        0x00000001
-#define BUTTON_MENU         0x00000002
-
-#define BUTTON_LEFT         0x00000004
-#define BUTTON_RIGHT        0x00000008
-#define BUTTON_UP           0x00000010
-#define BUTTON_DOWN         0x00000020
-
-#define BUTTON_VOL_UP       0x00000040
-#define BUTTON_VOL_DOWN     0x00000080
-
-#define BUTTON_SELECT       0x00000100
-#define BUTTON_A            0x00000200
 
 /* Remote control buttons */
 
-#define BUTTON_RC_VOL_UP    0x00000400
-#define BUTTON_RC_VOL_DOWN  0x00000800
-#define BUTTON_RC_FF        0x00001000
-#define BUTTON_RC_REW       0x00002000
-
-#define BUTTON_RC_PLAY      0x00004000
-#define BUTTON_RC_DSP       0x00008000
-
-/* Toshiba Gigabeat specific remote button ADC values */
-/* The remote control uses ADC 1 to emulate button pushes
-    Reading (approx)     Button      HP plugged in?      Remote plugged in?
-         0                 N/A            Yes                  No
-        125             Play/Pause      Cant tell             Yes
-        241             Speaker+        Cant tell             Yes
-        369             Rewind          Cant tell             Yes
-        492             Fast Fwd        Cant tell             Yes
-        616             Vol +           Cant tell             Yes
-        742             Vol -           Cant tell             Yes
-        864             None            Cant tell             Yes
-       1023              N/A               No                  No
-*/
-
-/* 
-    Notes:
-
-    Buttons on the remote are translated into equivalent button presses just
-    as if you were pressing them on the Gigabeat itself.
-    
-    We cannot tell if the hold is asserted on the remote. The Hold function on 
-    the remote is to block the output of the buttons changing.
-
-    Only one button can be sensed at a time. If another is pressed, the button
-    with the lowest reading is dominant. So, if Rewind and Vol + are pressed
-    at the same time, Rewind value is the one that is read.
-*/
-    
+#define BUTTON_RC_HEART     0x00000002
+#define BUTTON_RC_MODE      0x00000004
+#define BUTTON_RC_VOL_DOWN  0x00000008
+#define BUTTON_RC_VOL_UP    0x00000010
 
 
+#define BUTTON_RC_PLAY      0x00000020
+#define BUTTON_RC_REW       0x00000040
+#define BUTTON_RC_FF        0x00000080
+#define BUTTON_RC_DOWN      0x00000100
+#define BUTTON_TOUCH        0x00000200
 
-#define BUTTON_MAIN (BUTTON_POWER|BUTTON_MENU|BUTTON_LEFT|BUTTON_RIGHT\
-                |BUTTON_UP|BUTTON_DOWN|BUTTON_VOL_UP|BUTTON_VOL_DOWN\
-                |BUTTON_SELECT|BUTTON_A)
-
-#define BUTTON_REMOTE (BUTTON_RC_VOL_UP|BUTTON_RC_VOL_DOWN|BUTTON_RC_FF\
-                |BUTTON_RC_REW|BUTTON_RC_PLAY|BUTTON_RC_DSP)
-
+/* compatibility hacks */
+#define BUTTON_LEFT     BUTTON_RC_REW
+#define BUTTON_RIGHT    BUTTON_RC_FF
 #define POWEROFF_BUTTON BUTTON_POWER
-#define POWEROFF_COUNT 10
+#define POWEROFF_COUNT  40
+
+#define BUTTON_MAIN BUTTON_POWER
+
+#define BUTTON_REMOTE (BUTTON_RC_HEART|BUTTON_RC_MODE|      \
+                       BUTTON_RC_VOL_DOWN|BUTTON_RC_VOL_UP| \
+                       BUTTON_RC_PLAY|BUTTON_RC_DOWN|       \
+                       BUTTON_RC_REW|BUTTON_RC_FF)
 
 #endif /* _BUTTON_TARGET_H_ */
