diff --git a/src/app/i2cbench/Makefile.inc b/src/app/i2cbench/Makefile.inc
new file mode 100644
index 0000000000000000000000000000000000000000..d0337fc3ddb22f2478ebfec32d96cefac5ef195e
--- /dev/null
+++ b/src/app/i2cbench/Makefile.inc
@@ -0,0 +1 @@
+arch_drivers += ,i2c
diff --git a/src/app/i2cbench/main.cc b/src/app/i2cbench/main.cc
new file mode 100644
index 0000000000000000000000000000000000000000..5825c0bc81ccf50f092227e1ea6d87e891552a31
--- /dev/null
+++ b/src/app/i2cbench/main.cc
@@ -0,0 +1,77 @@
+#include "arch.h"
+#include "driver/gpio.h"
+#include "driver/stdout.h"
+#if defined(MULTIPASS_ARCH_HAS_I2C) && !defined(DRIVER_SOFTI2C)
+#include "driver/i2c.h"
+#else
+#include "driver/soft_i2c.h"
+#endif
+#ifdef DRIVER_LM75
+#include "driver/lm75.h"
+#endif
+#ifdef DRIVER_AM2320
+#include "driver/am2320.h"
+#endif
+#ifdef DRIVER_EEPROM24LC64
+#include "driver/eeprom24lc64.h"
+#endif
+#ifdef DRIVER_MAX44009
+#include "driver/max44009.h"
+#endif
+#ifdef DRIVER_MMSIMPLE
+#include "driver/mmsimple.h"
+#endif
+
+void loop(void)
+{
+#ifdef DRIVER_LM75
+	kout.printf_float(lm75.getTemp());
+	kout << endl;
+#endif
+#ifdef DRIVER_AM2320
+	am2320.read();
+	if (am2320.getStatus() == 0) {
+		kout.printf_float(am2320.getTemp());
+		kout << " degC @ ";
+		kout.printf_float(am2320.getHumidity());
+		kout << " rel%" << endl;
+	} else {
+		kout << "AM2320 error " << dec << am2320.getStatus() << endl;
+	}
+#endif
+#ifdef DRIVER_MAX44009
+	kout.printf_float(max44009.getLux());
+	kout << endl;
+#endif
+#ifdef DRIVER_EEPROM24LC64
+	char buf[33];
+	static unsigned short page = 0;
+	eeprom24lc64.readPage(page, buf);
+	buf[32] = '\0';
+	kout << "Address " << page << ": " << buf << endl;
+	page = (page + 32) % (256*32);
+#endif
+#ifdef DRIVER_MMSIMPLE
+	moody.toggleBlue();
+#endif
+}
+
+unsigned int i2c_status[128 / (8 * sizeof(unsigned int)) + 1];
+
+int main(void)
+{
+
+	arch.setup();
+	gpio.setup();
+	kout.setup();
+
+	if (i2c.setup() != 0) {
+		return 1;
+	}
+
+	kout << "I2C setup OK" << endl;
+
+	arch.idle_loop();
+
+	return 0;
+}
diff --git a/src/app/i2cdetect/main.cc b/src/app/i2cdetect/main.cc
index 02b236e8704fe958d61b6db479ef1f68002dcbf2..4ec49d97ed39c2e3e7d515effbd391ffb2c0dfe0 100644
--- a/src/app/i2cdetect/main.cc
+++ b/src/app/i2cdetect/main.cc
@@ -73,7 +73,6 @@ int main(void)
 
 	kout << "I2C setup OK" << endl;
 
-	/*
 	for (unsigned char i = 0; i < sizeof(i2c_status)/sizeof(unsigned int); i++) {
 		i2c_status[i] = 0;
 	}
@@ -96,7 +95,6 @@ int main(void)
 		}
 	}
 	kout << endl;
-	*/
 
 	arch.idle_loop();
 
diff --git a/src/arch/blinkenrocket/driver/i2c.cc b/src/arch/blinkenrocket/driver/i2c.cc
index 8979fbbcd7ab7331727b2532ff920f7ce91e9d87..487c60eafd68f442144324408784e4445cf98626 100644
--- a/src/arch/blinkenrocket/driver/i2c.cc
+++ b/src/arch/blinkenrocket/driver/i2c.cc
@@ -126,8 +126,6 @@ signed char I2C::xmit(unsigned char address,
 		unsigned char tx_len, unsigned char *tx_buf,
 		unsigned char rx_len, unsigned char *rx_buf)
 {
-	unsigned char i;
-
 	if (tx_len) {
 		if (i2c_start_write(address) < 0) {
 			return -1;