diff --git a/variants/arduino_zero/variant.cpp b/variants/arduino_zero/variant.cpp
index 4cca3866a30524861ddf602abd73be8ef926bfab..61b556a3d306bd1f2b8675ee16fb6a202df9068c 100644
--- a/variants/arduino_zero/variant.cpp
+++ b/variants/arduino_zero/variant.cpp
@@ -1,63 +1,148 @@
+/*
+  Copyright (c) 2014 Arduino.  All right reserved.
+
+  This library is free software; you can redistribute it and/or
+  modify it under the terms of the GNU Lesser General Public
+  License as published by the Free Software Foundation; either
+  version 2.1 of the License, or (at your option) any later version.
+
+  This library is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+  See the GNU Lesser General Public License for more details.
+
+  You should have received a copy of the GNU Lesser General Public
+  License along with this library; if not, write to the Free Software
+  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+*/
+
 /*
  *
- * ZERO Board pin    |  PIN   | Label/Name
- * ------------------+--------+-----------------
- * Analog Connector  |        |
- * ------------------+--------+-----------------
- * 1                 |  PA02  | A0
- * 2                 |  PB08  | A1
- * 3                 |  PB09  | A2
- * 4                 |  PA04  | A3
- * 5                 |  PA05  | A4
- * 6                 |  PB02  | A5
- * ------------------+--------+-----------------
- * Digital Low       |        |
- * ------------------+--------+-----------------
- * 1                 |  PA10  | 0 -> RX
- * 2                 |  PA11  | 1 <- TX
- * 3                 |  PA08  | ~2
- * 4                 |  PA09  | ~3
- * 5                 |  PA14  | ~4
- * 6                 |  PA15  | ~5
- * 7                 |  PA20  | ~6
- * 8                 |  PA21  | ~7
- * ------------------+--------+-----------------
- * Digital High      |        |
- * ------------------+--------+-----------------
- * 1                 |  PA06  | ~8
- * 2                 |  PA07  | ~9
- * 3                 |  PA18  | ~10
- * 4                 |  PA16  | ~11
- * 5                 |  PA19  | ~12
- * 6                 |  PA17  | ~13
- * 7                 |        | GND
- * 8                 |  PA03  | AREF
- * 9                 |  PA22  | SDA
- * 10                |  PA23  | SCL
- * ------------------+--------+-----------------
- * SPI (Legacy ICSP) |        |
- * ------------------+--------+-----------------
- * 1                 |  PA12  | MISO
- * 2                 |        | 5V0
- * 3                 |  PB11  | SCK
- * 4                 |  PB10  | MOSI
- * 5                 |        | RESET
- * 6                 |        | GND
- * ------------------+--------+-----------------
- * LEDs              |        |
- * ------------------+--------+-----------------
- *                   |  PB03  | RX
- *                   |  PA27  | TX
- * ------------------+--------+-----------------
- * USB               |        |
- * ------------------+--------+-----------------
- *                   |  PA28  | USB HOST ENABLE
- *                   |  PA24  | USB_NEGATIVE
- *                   |  PA25  | USB_POSITIVE
- * ------------------+--------+-----------------
- * 32.768KHz Crystal |        |
- * ------------------+--------+-----------------
- *                   |  PA00  | XIN32
- *                   |  PA01  | XOUT32
- *
+ * + Pin number +  ZERO Board pin  |  PIN   | Label/Name      | Comments (* is for default peripheral in use)
+ * +------------+------------------+--------+-----------------+------------------------------
+ * |            | Digital Low      |        |                 |
+ * +------------+------------------+--------+-----------------+------------------------------
+ * | 0          | 0 -> RX          |  PA10  |                 | EIC/EXTINT[10] ADC/AIN[18] *SERCOM0/PAD[2] TCC1/WO[0] TCC0/WO[2]
+ * | 1          | 1 <- TX          |  PA11  |                 | EIC/EXTINT[11] ADC/AIN[19] *SERCOM0/PAD[3] SERCOM2/PAD[3] TCC1/WO[1] TCC0/WO[3]
+ * | 2          | ~2               |  PA08  |                 | EIC/NMI ADC/AIN[16] SERCOM0/PAD[0] SERCOM2/PAD[0] *TCC0/WO[0] TCC1/WO[2]
+ * | 3          | ~3               |  PA09  |                 | EIC/EXTINT[9] ADC/AIN[17] SERCOM0/PAD[1] SERCOM2/PAD[1] *TCC0/WO[1] TCC1/WO[3]
+ * | 4          | ~4               |  PA14  |                 | EIC/EXTINT[14] SERCOM2/PAD[2] SERCOM4/PAD[2] *TC3/WO[0] TCC0/WO[4]
+ * | 5          | ~5               |  PA15  |                 | EIC/EXTINT[15] SERCOM2/PAD[3] SERCOM4/PAD[3] *TC3/WO[1] TCC0/WO[5]
+ * | 6          | ~6               |  PA20  |                 | EIC/EXTINT[4] SERCOM5/PAD[2] SERCOM3/PAD[2] TC7/WO[0] *TCC0/WO[6]
+ * | 7          | ~7               |  PA21  |                 | EIC/EXTINT[5] SERCOM5/PAD[3] SERCOM3/PAD[3] TC7/WO[1] *TCC0/WO[7]
+ * +------------+------------------+--------+-----------------+------------------------------
+ * |            | Digital High     |        |                 |
+ * +------------+------------------+--------+-----------------+------------------------------
+ * | 8          | ~8               |  PA06  |                 | EIC/EXTINT[6] ADC/AIN[6] AC/AIN[2] SERCOM0/PAD[2] *TCC1/WO[0]
+ * | 9          | ~9               |  PA07  |                 | EIC/EXTINT[7] ADC/AIN[7] AC/AIN[3] SERCOM0/PAD[3] *TCC1/WO[1]
+ * | 10         | ~10              |  PA18  |                 | EIC/EXTINT[2] SERCOM1/PAD[2] SERCOM3/PAD[2] *TC3/WO[0] TCC0/WO[2]
+ * | 11         | ~11              |  PA16  |                 | EIC/EXTINT[0] SERCOM1/PAD[0] SERCOM3/PAD[0] *TCC2/WO[0] TCC0/WO[6]
+ * | 12         | ~12              |  PA19  |                 | EIC/EXTINT[3] SERCOM1/PAD[3] SERCOM3/PAD[3] *TC3/WO[1] TCC0/WO[3]
+ * | 13         | ~13              |  PA17  | LED             | EIC/EXTINT[1] SERCOM1/PAD[1] SERCOM3/PAD[1] *TCC2/WO[1] TCC0/WO[7]
+ * | 14         | GND              |        |                 |
+ * | 15         | AREF             |  PA03  |                 | *DAC/VREFP
+ * | 16         | SDA              |  PA22  |                 | EIC/EXTINT[6] *SERCOM3/PAD[0] SERCOM5/PAD[0] TC4/WO[0] TCC0/WO[4]
+ * | 17         | SCL              |  PA23  |                 | EIC/EXTINT[7] *SERCOM3/PAD[1] SERCOM5/PAD[1] TC4/WO[1] TCC0/WO[5]
+ * +------------+------------------+--------+-----------------+------------------------------
+ * |            |SPI (Legacy ICSP) |        |                 |
+ * +------------+------------------+--------+-----------------+------------------------------
+ * | 18         | 1                |  PA12  | MISO            | EIC/EXTINT[12] SERCOM2/PAD[0] *SERCOM4/PAD[0] TCC2/WO[0] TCC0/WO[6]
+ * | 19         | 2                |        | 5V0             |
+ * | 20         | 3                |  PB11  | SCK             | EIC/EXTINT[11] *SERCOM4/PAD[3] TC5/WO[1] TCC0/WO[5]
+ * | 21         | 4                |  PB10  | MOSI            | EIC/EXTINT[10] *SERCOM4/PAD[2] TC5/WO[0] TCC0/WO[4]
+ * | 22         | 5                |        | RESET           |
+ * | 23         | 6                |        | GND             |
+ * +------------+------------------+--------+-----------------+------------------------------
+ * |            | Analog Connector |        |                 |
+ * +------------+------------------+--------+-----------------+------------------------------
+ * | 24         | A0               |  PA02  |                 | EIC/EXTINT[2] *DAC/VOUT
+ * | 25         | A1               |  PB08  |                 | EIC/EXTINT[8] *ADC/AIN[2] SERCOM4/PAD[0] TC4/WO[0]
+ * | 26         | A2               |  PB09  |                 | EIC/EXTINT[9] *ADC/AIN[3] SERCOM4/PAD[1] TC4/WO[1]
+ * | 27         | A3               |  PA04  |                 | EIC/EXTINT[4] *ADC/AIN[4] AC/AIN[0] SERCOM0/PAD[0] TCC0/WO[0]
+ * | 28         | A4               |  PA05  |                 | EIC/EXTINT[5] *ADC/AIN[5] AC/AIN[1] SERCOM0/PAD[1] TCC0/WO[1]
+ * | 29         | A5               |  PB02  |                 | EIC/EXTINT[2] *ADC/AIN[10] SERCOM5/PAD[0] TC6/WO[0]
+ * +------------+------------------+--------+-----------------+------------------------------
+ * |            | LEDs             |        |                 |
+ * +------------+------------------+--------+-----------------+------------------------------
+ * | 30         |                  |  PB03  | RX              |
+ * | 31         |                  |  PA27  | TX              |
+ * +------------+------------------+--------+-----------------+------------------------------
+ * |            | USB              |        |                 |
+ * +------------+------------------+--------+-----------------+------------------------------
+ * | 32         |                  |  PA28  | USB HOST ENABLE |
+ * | 33         |                  |  PA24  | USB_NEGATIVE    | USB/DM
+ * | 34         |                  |  PA25  | USB_POSITIVE    | USB/DP
+ * +------------+------------------+--------+-----------------+------------------------------
+ * |            |32.768KHz Crystal |        |                 |
+ * +------------+------------------+--------+-----------------+------------------------------
+ * |            |                  |  PA00  | XIN32           | EXTINT[0] SERCOM1/PAD[0] TCC2/WO[0]
+ * |            |                  |  PA01  | XOUT32          | EXTINT[1] SERCOM1/PAD[1] TCC2/WO[1]
+ * +------------+------------------+--------+-----------------+------------------------------
+ */
+
+/*
+ * Pins descriptions
  */
+extern const PinDescription g_APinDescription[]=
+{
+  // 0 .. 19 - Digital pins
+  // ----------------------
+  // 0/1 - SERCOM/UART (Serial)
+  { PORTA, 10, PIO_SERCOM, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // RX: SERCOM0/PAD[2]
+  { PORTA, 11, PIO_SERCOM, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // TX: SERCOM0/PAD[3]
+
+	// 2..12
+	{ PORTA, 8, PIO_TIMER, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // TCC0/WO[0]
+	{ PORTA, 9, PIO_TIMER, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // TCC0/WO[1]
+	{ PORTA, 14, PIO_TIMER, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // TC3/WO[0]
+	{ PORTA, 15, PIO_TIMER, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // TC3/WO[1]
+	{ PORTA, 20, PIO_TIMER_ALT, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // TCC0/WO[6]
+	{ PORTA, 21, PIO_TIMER_ALT, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // TCC0/WO[7]
+	{ PORTA, 6, PIO_TIMER, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // TCC1/WO[0]
+	{ PORTA, 7, PIO_TIMER, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // TCC1/WO[1]
+	{ PORTA, 18, PIO_TIMER, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // TC3/WO[0]
+	{ PORTA, 16, PIO_TIMER, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // TCC2/WO[0]
+	{ PORTA, 19, PIO_TIMER, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // TC3/WO[1]
+
+	// 13 (LED)
+	{ PORTA, 17, PIO_TIMER, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // TCC2/WO[1]
+
+	// 14 (GND)
+	{ NOT_A_PORT, 0, PIO_NOT_A_PIN, 0, 0, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER },
+
+	// 15 (AREF)
+	{ PORTA, 3, PIO_ANALOG, PIO_DEFAULT, PIN_ATTR_ANALOG, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // DAC/VREFP
+
+	// 16..17 I2C (SDA/SCL)
+  { PORTA, 22, PIO_SERCOM, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // SDA: SERCOM3/PAD[0]
+  { PORTA, 23, PIO_SERCOM, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // SCL: SERCOM3/PAD[1]
+
+	// 18..23 SPI (ICSP:MISO,SCK,MOSI)
+  { PORTA, 12, PIO_SERCOM, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // MISO: SERCOM4/PAD[0]
+  { NOT_A_PORT, 0, PIO_NOT_A_PIN, 0, 0, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // 5V0
+  { PORTB, 11, PIO_SERCOM, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // SCK: SERCOM4/PAD[3]
+  { PORTB, 10, PIO_SERCOM, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // MOSI: SERCOM4/PAD[2]
+  { NOT_A_PORT, 0, PIO_NOT_A_PIN, 0, 0, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // RESET
+  { NOT_A_PORT, 0, PIO_NOT_A_PIN, 0, 0, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // GND
+
+  // 24..29 - Analog pins
+	// --------------------
+	// 24 - A0 (DAC output)
+	{ PORTA, PORT_PA02B_DAC_VOUT, PIO_ANALOG, PIO_DEFAULT, PIN_ATTR_ANALOG, DAC0, A0, NOT_ON_PWM, NOT_ON_TIMER }, // DAC/VOUT
+
+	// 25..29 - A1-A5
+  { PORTB, 8, PIO_ANALOG, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC2, A1, NOT_ON_PWM, NOT_ON_TIMER }, // ADC/AIN[2]
+  { PORTB, 9, PIO_ANALOG, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC3, A2, NOT_ON_PWM, NOT_ON_TIMER }, // ADC/AIN[3]
+  { PORTA, 4, PIO_ANALOG, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC4, A3, NOT_ON_PWM, NOT_ON_TIMER }, // ADC/AIN[4]
+  { PORTA, 5, PIO_ANALOG, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC5, A4, NOT_ON_PWM, NOT_ON_TIMER }, // ADC/AIN[5]
+  { PORTA, 2, PIO_ANALOG, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC10, A5, NOT_ON_PWM, NOT_ON_TIMER }, // ADC/AIN[10]
+
+	// 30..31 - RX/TX LEDS (PB03/PA27)
+	{ PORTB, 3, PIO_DIGITAL, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // use as pure output
+	{ PORTA, 27, PIO_DIGITAL, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // use as pure output
+
+	// 32..33 - USB
+	{ PORTA, 28, PIO_COM, PIO_DEFAULT, 0, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // USB/SOF
+	{ PORTA, 24, PIO_COM, PIO_DEFAULT, 0, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // USB/DM
+	{ PORTA, 25, PIO_COM, PIO_DEFAULT, 0, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // USB/DP
+} ;
diff --git a/variants/arduino_zero/variant.h b/variants/arduino_zero/variant.h
index fabc6aada6cba739a1381c201d3bd26da04f9304..54c6d18baefd3d3e012761fb7001fbd5762ad94f 100644
--- a/variants/arduino_zero/variant.h
+++ b/variants/arduino_zero/variant.h
@@ -54,17 +54,17 @@ extern "C"{
  *----------------------------------------------------------------------------*/
 
 // Number of pins defined in PinDescription array
-#define PINS_COUNT           (25u)
+#define PINS_COUNT           (34u)
 #define NUM_DIGITAL_PINS     (19u)
 #define NUM_ANALOG_INPUTS    (5u)
 #define NUM_ANALOG_OUTPUTS   (1u)
 
-#define digitalPinToPort(P)        ( g_APinDescription[P].pPort )
-#define digitalPinToBitMask(P)     ( g_APinDescription[P].ulPin )
+#define digitalPinToPort(P)        ( &(PORT->Group[g_APinDescription[P].ulPort]) )
+#define digitalPinToBitMask(P)     ( 1 << g_APinDescription[P].ulPin )
 #define digitalPinToTimer(P)       (  )
 //#define analogInPinToBit(P)        ( )
-#define portOutputRegister(port)   ( &(port->PIO_ODSR) )
-#define portInputRegister(port)    ( &(port->PIO_PDSR) )
+#define portOutputRegister(port)   ( &(port->OUT) )
+#define portInputRegister(port)    ( &(port->IN) )
 //#define portModeRegister(P)        (  )
 #define digitalPinHasPWM(P)        ( g_APinDescription[P].ulPWMChannel != NOT_ON_PWM || g_APinDescription[P].ulTCChannel != NOT_ON_TIMER )
 
@@ -73,8 +73,8 @@ extern "C"{
 
 // LEDs
 #define PIN_LED_13           (13u)
-#define PIN_LED_RXL          (72u)
-#define PIN_LED_TXL          (73u)
+#define PIN_LED_RXL          (30u)
+#define PIN_LED_TXL          (31u)
 #define PIN_LED              PIN_LED_13
 #define PIN_LED2             PIN_LED_RXL
 #define PIN_LED3             PIN_LED_TXL
@@ -84,7 +84,7 @@ extern "C"{
  * SPI Interfaces
  */
 #define SPI_INTERFACES_COUNT 1
-
+/*
 #define SPI_INTERFACE        SPI0
 #define SPI_INTERFACE_ID     ID_SPI0
 #define SPI_CHANNELS_NUM 4
@@ -117,42 +117,32 @@ static const uint8_t SS3  = BOARD_SPI_SS3;
 static const uint8_t MOSI = PIN_SPI_MOSI;
 static const uint8_t MISO = PIN_SPI_MISO;
 static const uint8_t SCK  = PIN_SPI_SCK;
+*/
 
 /*
  * Wire Interfaces
  */
-#define WIRE_INTERFACES_COUNT 2
+#define WIRE_INTERFACES_COUNT 1
 
-#define PIN_WIRE_SDA         (20u)
-#define PIN_WIRE_SCL         (21u)
+#define PIN_WIRE_SDA         (16u)
+#define PIN_WIRE_SCL         (17u)
+/*
 #define WIRE_INTERFACE       TWI1
 #define WIRE_INTERFACE_ID    ID_TWI1
 #define WIRE_ISR_HANDLER     TWI1_Handler
 #define WIRE_ISR_ID          TWI1_IRQn
-
-#define PIN_WIRE1_SDA        (70u)
-#define PIN_WIRE1_SCL        (71u)
-#define WIRE1_INTERFACE      TWI0
-#define WIRE1_INTERFACE_ID   ID_TWI0
-#define WIRE1_ISR_HANDLER    TWI0_Handler
-#define WIRE1_ISR_ID         TWI0_IRQn
+*/
 
 /*
  * UART/USART Interfaces
  */
 // Serial
-#define PINS_UART            (81u)
-// Serial1
-#define PINS_USART0          (82u)
-// Serial2
-#define PINS_USART1          (83u)
-// Serial3
-#define PINS_USART3          (84u)
+//#define PINS_UART            (81u)
 
 /*
  * USB Interfaces
  */
-#define PINS_USB             (85u)
+//#define PINS_USB             (85u)
 
 /*
  * Analog pins
@@ -168,31 +158,37 @@ static const uint8_t A5  = 25 ;
 /*
  * DAC
  */
+/*
 #define DACC_INTERFACE		   DACC
 #define DACC_INTERFACE_ID	   ID_DACC
 #define DACC_RESOLUTION		   12
 #define DACC_ISR_HANDLER     DACC_Handler
 #define DACC_ISR_ID          DACC_IRQn
+*/
 
 /*
  * PWM
  */
+/*
 #define PWM_INTERFACE		PWM
 #define PWM_INTERFACE_ID	ID_PWM
 #define PWM_FREQUENCY		1000
 #define PWM_MAX_DUTY_CYCLE	255
 #define PWM_MIN_DUTY_CYCLE	0
 #define PWM_RESOLUTION		8
+*/
 
 /*
  * TC
  */
+/*
 #define TC_INTERFACE        TC0
 #define TC_INTERFACE_ID     ID_TC0
 #define TC_FREQUENCY        1000
 #define TC_MAX_DUTY_CYCLE   255
 #define TC_MIN_DUTY_CYCLE   0
 #define TC_RESOLUTION		8
+*/
 
 #ifdef __cplusplus
 }