The ucode triggers the gpio pins used for the buttons and causes diag to handle them and send them to userspace.
This only happened with a more recent firmware.
This patch was tested on an Asus wl-520GU and should also work on the other bcm5354 based asus devices. I do not know if it works on the dir320.
SVN-Revision: 30665
--- /dev/null
+--- a/drivers/net/wireless/b43/main.c
++++ b/drivers/net/wireless/b43/main.c
+@@ -2687,6 +2687,8 @@ static int b43_gpio_init(struct b43_wlde
+ mask |= 0x0060;
+ set |= 0x0060;
+ }
++ if (dev->dev->chip_id == 0x5354)
++ set &= 0xff02;
+ if (0 /* FIXME: conditional unknown */ ) {
+ b43_write16(dev, B43_MMIO_GPIO_MASK,
+ b43_read16(dev, B43_MMIO_GPIO_MASK)