diff --git a/mote/v2/openwrt/package/avrdude/patches/120-remove_non_gpio_programmers.patch b/mote/v2/openwrt/package/avrdude/patches/120-remove_non_gpio_programmers.patch
new file mode 100644
index 0000000..0aa69fc
--- /dev/null
+++ b/mote/v2/openwrt/package/avrdude/patches/120-remove_non_gpio_programmers.patch
@@ -0,0 +1,771 @@
+diff -urNad /tmp/avrdude-5.10/config_gram.y avrdude-5.10/config_gram.y
+--- /tmp/avrdude-5.10/config_gram.y 2010-08-06 20:32:45.039034875 +0200
++++ avrdude-5.10/config_gram.y 2010-08-06 20:30:54.071034545 +0200
+@@ -386,179 +386,12 @@
+ }
+ } |
+
+- K_TYPE TKN_EQUAL K_PAR {
+- {
+- par_initpgm(current_prog);
+- }
+- } |
+-
+- K_TYPE TKN_EQUAL K_SERBB {
+- {
+- serbb_initpgm(current_prog);
+- }
+- } |
+-
+- K_TYPE TKN_EQUAL K_STK500 {
+- {
+- stk500_initpgm(current_prog);
+- }
+- } |
+-
+- K_TYPE TKN_EQUAL K_STK500V2 {
+- {
+- stk500v2_initpgm(current_prog);
+- }
+- } |
+-
+- K_TYPE TKN_EQUAL K_STK500HVSP {
+- {
+- stk500hvsp_initpgm(current_prog);
+- }
+- } |
+-
+- K_TYPE TKN_EQUAL K_STK500PP {
+- {
+- stk500pp_initpgm(current_prog);
+- }
+- } |
+-
+- K_TYPE TKN_EQUAL K_STK500GENERIC {
+- {
+- stk500generic_initpgm(current_prog);
+- }
+- } |
+-
+- K_TYPE TKN_EQUAL K_ARDUINO {
+- {
+- arduino_initpgm(current_prog);
+- }
+- } |
+-
+- K_TYPE TKN_EQUAL K_BUSPIRATE {
+- {
+- buspirate_initpgm(current_prog);
+- }
+- } |
+-
+ K_TYPE TKN_EQUAL K_GPIO {
+ {
+ gpio_initpgm(current_prog);
+ }
+ } |
+
+- K_TYPE TKN_EQUAL K_STK600 {
+- {
+- stk600_initpgm(current_prog);
+- }
+- } |
+-
+- K_TYPE TKN_EQUAL K_STK600HVSP {
+- {
+- stk600hvsp_initpgm(current_prog);
+- }
+- } |
+-
+- K_TYPE TKN_EQUAL K_STK600PP {
+- {
+- stk600pp_initpgm(current_prog);
+- }
+- } |
+-
+- K_TYPE TKN_EQUAL K_AVR910 {
+- {
+- avr910_initpgm(current_prog);
+- }
+- } |
+-
+- K_TYPE TKN_EQUAL K_USBASP {
+- {
+- usbasp_initpgm(current_prog);
+- }
+- } |
+-
+- K_TYPE TKN_EQUAL K_USBTINY {
+- {
+- usbtiny_initpgm(current_prog);
+- }
+- } |
+-
+- K_TYPE TKN_EQUAL K_BUTTERFLY {
+- {
+- butterfly_initpgm(current_prog);
+- }
+- } |
+-
+- K_TYPE TKN_EQUAL K_JTAG_MKI {
+- {
+- jtagmkI_initpgm(current_prog);
+- }
+- } |
+-
+- K_TYPE TKN_EQUAL K_JTAG_MKII {
+- {
+- jtagmkII_initpgm(current_prog);
+- }
+- } |
+- K_TYPE TKN_EQUAL K_JTAG_MKII_AVR32 {
+- {
+- jtagmkII_avr32_initpgm(current_prog);
+- }
+- } |
+-
+- K_TYPE TKN_EQUAL K_JTAG_MKII_DW {
+- {
+- jtagmkII_dw_initpgm(current_prog);
+- }
+- } |
+-
+- K_TYPE TKN_EQUAL K_JTAG_MKII_ISP {
+- {
+- stk500v2_jtagmkII_initpgm(current_prog);
+- }
+- } |
+-
+- K_TYPE TKN_EQUAL K_JTAG_MKII_PDI {
+- {
+- jtagmkII_pdi_initpgm(current_prog);
+- }
+- } |
+-
+- K_TYPE TKN_EQUAL K_DRAGON_DW {
+- {
+- jtagmkII_dragon_dw_initpgm(current_prog);
+- }
+- } |
+-
+- K_TYPE TKN_EQUAL K_DRAGON_HVSP {
+- {
+- stk500v2_dragon_hvsp_initpgm(current_prog);
+- }
+- } |
+-
+- K_TYPE TKN_EQUAL K_DRAGON_ISP {
+- {
+- stk500v2_dragon_isp_initpgm(current_prog);
+- }
+- } |
+-
+- K_TYPE TKN_EQUAL K_DRAGON_JTAG {
+- {
+- jtagmkII_dragon_initpgm(current_prog);
+- }
+- } |
+-
+- K_TYPE TKN_EQUAL K_DRAGON_PDI {
+- {
+- jtagmkII_dragon_pdi_initpgm(current_prog);
+- }
+- } |
+-
+- K_TYPE TKN_EQUAL K_DRAGON_PP {
+- {
+- stk500v2_dragon_pp_initpgm(current_prog);
+- }
+- } |
+-
+ K_DESC TKN_EQUAL TKN_STRING {
+ strncpy(current_prog->desc, $3->value.string, PGM_DESCLEN);
+ current_prog->desc[PGM_DESCLEN-1] = 0;
+diff -urNad /tmp/avrdude-5.10/avrdude.conf.in avrdude-5.10/avrdude.conf.in
+--- /tmp/avrdude-5.10/avrdude.conf.in 2010-08-06 20:28:58.959965749 +0200
++++ avrdude-5.10/avrdude.conf.in 2010-08-06 20:44:19.466964893 +0200
+@@ -315,525 +315,6 @@
+ #
+
+ programmer
+- id = "arduino";
+- desc = "Arduino";
+- type = arduino;
+-;
+-
+-programmer
+- id = "avrisp";
+- desc = "Atmel AVR ISP";
+- type = stk500;
+-;
+-
+-programmer
+- id = "avrispv2";
+- desc = "Atmel AVR ISP V2";
+- type = stk500v2;
+-;
+-
+-programmer
+- id = "avrispmkII";
+- desc = "Atmel AVR ISP mkII";
+- type = stk500v2;
+-;
+-
+-programmer
+- id = "avrisp2";
+- desc = "Atmel AVR ISP mkII";
+- type = stk500v2;
+-;
+-
+-programmer
+- id = "buspirate";
+- desc = "The Bus Pirate";
+- type = buspirate;
+-;
+-
+-# This is supposed to be the "default" STK500 entry.
+-# Attempts to select the correct firmware version
+-# by probing for it. Better use one of the entries
+-# below instead.
+-programmer
+- id = "stk500";
+- desc = "Atmel STK500";
+- type = stk500generic;
+-;
+-
+-programmer
+- id = "stk500v1";
+- desc = "Atmel STK500 Version 1.x firmware";
+- type = stk500;
+-;
+-
+-programmer
+- id = "mib510";
+- desc = "Crossbow MIB510 programming board";
+- type = stk500;
+-;
+-
+-programmer
+- id = "stk500v2";
+- desc = "Atmel STK500 Version 2.x firmware";
+- type = stk500v2;
+-;
+-
+-programmer
+- id = "stk500pp";
+- desc = "Atmel STK500 V2 in parallel programming mode";
+- type = stk500pp;
+-;
+-
+-programmer
+- id = "stk500hvsp";
+- desc = "Atmel STK500 V2 in high-voltage serial programming mode";
+- type = stk500hvsp;
+-;
+-
+-programmer
+- id = "stk600";
+- desc = "Atmel STK600";
+- type = stk600;
+-;
+-
+-programmer
+- id = "stk600pp";
+- desc = "Atmel STK600 in parallel programming mode";
+- type = stk600pp;
+-;
+-
+-programmer
+- id = "stk600hvsp";
+- desc = "Atmel STK600 in high-voltage serial programming mode";
+- type = stk600hvsp;
+-;
+-
+-programmer
+- id = "avr910";
+- desc = "Atmel Low Cost Serial Programmer";
+- type = avr910;
+-;
+-
+-programmer
+- id = "usbasp";
+- desc = "USBasp, http://www.fischl.de/usbasp/";
+- type = usbasp;
+-;
+-
+-programmer
+- id = "usbtiny";
+- desc = "USBtiny simple USB programmer, http://www.ladyada.net/make/usbtinyisp/";
+- type = usbtiny;
+-;
+-
+-programmer
+- id = "butterfly";
+- desc = "Atmel Butterfly Development Board";
+- type = butterfly;
+-;
+-
+-programmer
+- id = "avr109";
+- desc = "Atmel AppNote AVR109 Boot Loader";
+- type = butterfly;
+-;
+-
+-programmer
+- id = "avr911";
+- desc = "Atmel AppNote AVR911 AVROSP";
+- type = butterfly;
+-;
+-
+-programmer
+- id = "jtagmkI";
+- desc = "Atmel JTAG ICE (mkI)";
+- baudrate = 115200; # default is 115200
+- type = jtagmki;
+-;
+-
+-# easier to type
+-programmer
+- id = "jtag1";
+- desc = "Atmel JTAG ICE (mkI)";
+- baudrate = 115200; # default is 115200
+- type = jtagmki;
+-;
+-
+-# easier to type
+-programmer
+- id = "jtag1slow";
+- desc = "Atmel JTAG ICE (mkI)";
+- baudrate = 19200;
+- type = jtagmki;
+-;
+-
+-programmer
+- id = "jtagmkII";
+- desc = "Atmel JTAG ICE mkII";
+- baudrate = 19200; # default is 19200
+- type = jtagmkii;
+-;
+-
+-# easier to type
+-programmer
+- id = "jtag2slow";
+- desc = "Atmel JTAG ICE mkII";
+- baudrate = 19200; # default is 19200
+- type = jtagmkii;
+-;
+-
+-# JTAG ICE mkII @ 115200 Bd
+-programmer
+- id = "jtag2fast";
+- desc = "Atmel JTAG ICE mkII";
+- baudrate = 115200;
+- type = jtagmkii;
+-;
+-
+-# make the fast one the default, people will love that
+-programmer
+- id = "jtag2";
+- desc = "Atmel JTAG ICE mkII";
+- baudrate = 115200;
+- type = jtagmkii;
+-;
+-
+-# JTAG ICE mkII in ISP mode
+-programmer
+- id = "jtag2isp";
+- desc = "Atmel JTAG ICE mkII in ISP mode";
+- baudrate = 115200;
+- type = jtagmkii_isp;
+-;
+-
+-# JTAG ICE mkII in debugWire mode
+-programmer
+- id = "jtag2dw";
+- desc = "Atmel JTAG ICE mkII in debugWire mode";
+- baudrate = 115200;
+- type = jtagmkii_dw;
+-;
+-
+-# JTAG ICE mkII in AVR32 mode
+-programmer
+- id = "jtagmkII_avr32";
+- desc = "Atmel JTAG ICE mkII im AVR32 mode";
+- baudrate = 115200;
+- type = jtagmkii_avr32;
+-;
+-
+-# JTAG ICE mkII in AVR32 mode
+-programmer
+- id = "jtag2avr32";
+- desc = "Atmel JTAG ICE mkII im AVR32 mode";
+- baudrate = 115200;
+- type = jtagmkii_avr32;
+-;
+-
+-# JTAG ICE mkII in PDI mode
+-programmer
+- id = "jtag2pdi";
+- desc = "Atmel JTAG ICE mkII PDI mode";
+- baudrate = 115200;
+- type = jtagmkii_pdi;
+-;
+-
+-# AVR Dragon in JTAG mode
+-programmer
+- id = "dragon_jtag";
+- desc = "Atmel AVR Dragon in JTAG mode";
+- baudrate = 115200;
+- type = dragon_jtag;
+-;
+-
+-# AVR Dragon in ISP mode
+-programmer
+- id = "dragon_isp";
+- desc = "Atmel AVR Dragon in ISP mode";
+- baudrate = 115200;
+- type = dragon_isp;
+-;
+-
+-# AVR Dragon in PP mode
+-programmer
+- id = "dragon_pp";
+- desc = "Atmel AVR Dragon in PP mode";
+- baudrate = 115200;
+- type = dragon_pp;
+-;
+-
+-# AVR Dragon in HVSP mode
+-programmer
+- id = "dragon_hvsp";
+- desc = "Atmel AVR Dragon in HVSP mode";
+- baudrate = 115200;
+- type = dragon_hvsp;
+-;
+-
+-# AVR Dragon in debugWire mode
+-programmer
+- id = "dragon_dw";
+- desc = "Atmel AVR Dragon in debugWire mode";
+- baudrate = 115200;
+- type = dragon_dw;
+-;
+-
+-# AVR Dragon in PDI mode
+-programmer
+- id = "dragon_pdi";
+- desc = "Atmel AVR Dragon in PDI mode";
+- baudrate = 115200;
+- type = dragon_pdi;
+-;
+-
+-programmer
+- id = "pavr";
+- desc = "Jason Kyle's pAVR Serial Programmer";
+- type = avr910;
+-;
+-
+-@HAVE_PARPORT_BEGIN@ Inclusion of the following depends on --enable-parport
+-# Parallel port programmers.
+-
+-programmer
+- id = "bsd";
+- desc = "Brian Dean's Programmer, http://www.bsdhome.com/avrdude/";
+- type = par;
+- vcc = 2, 3, 4, 5;
+- reset = 7;
+- sck = 8;
+- mosi = 9;
+- miso = 10;
+-;
+-
+-programmer
+- id = "stk200";
+- desc = "STK200";
+- type = par;
+- buff = 4, 5;
+- sck = 6;
+- mosi = 7;
+- reset = 9;
+- miso = 10;
+-;
+-
+-# The programming dongle used by the popular Ponyprog
+-# utility. It is almost similar to the STK200 one,
+-# except that there is a LED indicating that the
+-# programming is currently in progress.
+-
+-programmer
+- id = "pony-stk200";
+- desc = "Pony Prog STK200";
+- type = par;
+- buff = 4, 5;
+- sck = 6;
+- mosi = 7;
+- reset = 9;
+- miso = 10;
+- pgmled = 8;
+-;
+-
+-programmer
+- id = "dt006";
+- desc = "Dontronics DT006";
+- type = par;
+- reset = 4;
+- sck = 5;
+- mosi = 2;
+- miso = 11;
+-;
+-
+-programmer
+- id = "bascom";
+- desc = "Bascom SAMPLE programming cable";
+- type = par;
+- reset = 4;
+- sck = 5;
+- mosi = 2;
+- miso = 11;
+-;
+-
+-programmer
+- id = "alf";
+- desc = "Nightshade ALF-PgmAVR, http://nightshade.homeip.net/";
+- type = par;
+- vcc = 2, 3, 4, 5;
+- buff = 6;
+- reset = 7;
+- sck = 8;
+- mosi = 9;
+- miso = 10;
+- errled = 1;
+- rdyled = 14;
+- pgmled = 16;
+- vfyled = 17;
+-;
+-
+-programmer
+- id = "sp12";
+- desc = "Steve Bolt's Programmer";
+- type = par;
+- vcc = 4,5,6,7,8;
+- reset = 3;
+- sck = 2;
+- mosi = 9;
+- miso = 11;
+-;
+-
+-programmer
+- id = "picoweb";
+- desc = "Picoweb Programming Cable, http://www.picoweb.net/";
+- type = par;
+- reset = 2;
+- sck = 3;
+- mosi = 4;
+- miso = 13;
+-;
+-
+-programmer
+- id = "abcmini";
+- desc = "ABCmini Board, aka Dick Smith HOTCHIP";
+- type = par;
+- reset = 4;
+- sck = 3;
+- mosi = 2;
+- miso = 10;
+-;
+-
+-programmer
+- id = "futurlec";
+- desc = "Futurlec.com programming cable.";
+- type = par;
+- reset = 3;
+- sck = 2;
+- mosi = 1;
+- miso = 10;
+-;
+-
+-
+-# From the contributor of the "xil" jtag cable:
+-# The "vcc" definition isn't really vcc (the cable gets its power from
+-# the programming circuit) but is necessary to switch one of the
+-# buffer lines (trying to add it to the "buff" lines doesn't work).
+-# With this, TMS connects to RESET, TDI to MOSI, TDO to MISO and TCK
+-# to SCK (plus vcc/gnd of course)
+-programmer
+- id = "xil";
+- desc = "Xilinx JTAG cable";
+- type = par;
+- mosi = 2;
+- sck = 3;
+- reset = 4;
+- buff = 5;
+- miso = 13;
+- vcc = 6;
+-;
+-
+-
+-programmer
+- id = "dapa";
+- desc = "Direct AVR Parallel Access cable";
+- type = par;
+- vcc = 3;
+- reset = 16;
+- sck = 1;
+- mosi = 2;
+- miso = 11;
+-;
+-
+-programmer
+- id = "atisp";
+- desc = "AT-ISP V1.1 programming cable for AVR-SDK1 from micro-research.co.th";
+- type = par;
+- reset = ~6;
+- sck = ~8;
+- mosi = ~7;
+- miso = ~10;
+-;
+-
+-programmer
+- id = "ere-isp-avr";
+- desc = "ERE ISP-AVR ";
+- type = par;
+- reset = ~4;
+- sck = 3;
+- mosi = 2;
+- miso = 10;
+-;
+-
+-programmer
+- id = "blaster";
+- desc = "Altera ByteBlaster";
+- type = par;
+- sck = 2;
+- miso = 11;
+- reset = 3;
+- mosi = 8;
+- buff = 14;
+-;
+-
+-# It is almost same as pony-stk200, except vcc on pin 5 to auto
+-# disconnect port (download on http://electropol.free.fr)
+-programmer
+- id = "frank-stk200";
+- desc = "Frank STK200";
+- type = par;
+- vcc = 5;
+- sck = 6;
+- mosi = 7;
+- reset = 9;
+- miso = 10;
+- pgmled = 8;
+-;
+-
+-# The AT98ISP Cable is a simple parallel dongle for AT89 family.
+-# http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2877
+-programmer
+-id = "89isp";
+-desc = "Atmel at89isp cable";
+-type = par;
+-reset = 17;
+-sck = 1;
+-mosi = 2;
+-miso = 10;
+-;
+-
+-@HAVE_PARPORT_END@
+-
+-#
+-# some ultra cheap programmers use bitbanging on the
+-# serialport.
+-#
+-# PC - DB9 - Pins for RS232:
+-#
+-# GND 5 -- |O
+-# | O| <- 9 RI
+-# DTR 4 <- |O |
+-# | O| <- 8 CTS
+-# TXD 3 <- |O |
+-# | O| -> 7 RTS
+-# RXD 2 -> |O |
+-# | O| <- 6 DSR
+-# DCD 1 -> |O
+-#
+-# Using RXD is currently not supported.
+-# Using RI is not supported under Win32 but is supported under Posix.
+-
+-# serial ponyprog design (dasa2 in uisp)
+-# reset=!txd sck=rts mosi=dtr miso=cts
+-
+-programmer
+- id = "ponyser";
+- desc = "design ponyprog serial, reset=!txd sck=rts mosi=dtr miso=cts";
+- type = serbb;
+- reset = ~3;
+- sck = 7;
+- mosi = 4;
+- miso = 8;
+-;
+-
+-programmer
+ id = "gpio";
+ desc = "Use gpio_dev to bitbang GPIO lines";
+ type = gpio;
+@@ -843,58 +324,6 @@
+ miso = 1;
+ ;
+
+-# Same as above, different name
+-# reset=!txd sck=rts mosi=dtr miso=cts
+-
+-programmer
+- id = "siprog";
+- desc = "Lancos SI-Prog ";
+- type = serbb;
+- reset = ~3;
+- sck = 7;
+- mosi = 4;
+- miso = 8;
+-;
+-
+-# unknown (dasa in uisp)
+-# reset=rts sck=dtr mosi=txd miso=cts
+-
+-programmer
+- id = "dasa";
+- desc = "serial port banging, reset=rts sck=dtr mosi=txd miso=cts";
+- type = serbb;
+- reset = 7;
+- sck = 4;
+- mosi = 3;
+- miso = 8;
+-;
+-
+-# unknown (dasa3 in uisp)
+-# reset=!dtr sck=rts mosi=txd miso=cts
+-
+-programmer
+- id = "dasa3";
+- desc = "serial port banging, reset=!dtr sck=rts mosi=txd miso=cts";
+- type = serbb;
+- reset = ~4;
+- sck = 7;
+- mosi = 3;
+- miso = 8;
+-;
+-
+-# C2N232i (jumper configuration "auto")
+-# reset=dtr sck=!rts mosi=!txd miso=!cts
+-
+-programmer
+- id = "c2n232i";
+- desc = "serial port banging, reset=dtr sck=!rts mosi=!txd miso=!cts";
+- type = serbb;
+- reset = 4;
+- sck = ~7;
+- mosi = ~3;
+- miso = ~8;
+-;
+-
+ #
+ # PART DEFINITIONS
+ #