diff --git a/firmware/argonkey_aux_variant_config.mk b/firmware/argonkey_aux_variant_config.mk
new file mode 100644
index 0000000..e677395
--- /dev/null
+++ b/firmware/argonkey_aux_variant_config.mk
@@ -0,0 +1,78 @@
+#
+# Copyright (C) 2017 STMicroelectronics
+# Copyright (C) 2017 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+# only locally defined variables can be used at this time
+
+my_variant := argonkey
+
+AUX_OS_$(my_variant)             := nanohub
+AUX_ARCH_$(my_variant)           := stm32
+AUX_SUBARCH_$(my_variant)        := stm32f412
+AUX_CPU_$(my_variant)            := cortexm4
+
+# variant supports building OS bootloader, main OS image and application as targets
+# target should one of the following:
+#   "" (empty) -- applies to all targets
+#  _BL -- applies to OS bootloader target build only
+#  _OS -- applies to OS image target build only
+# _APP -- applies to application target build only
+#
+# the following variables may be defined in variant script for any target:
+# NANO_VARIANT<target>_CFLAGS_<variant>
+# NANO_VARIANT<target>_C_INCLUDES_<variant>
+# NANO_VARIANT<target>_STATIC_LIBRARIRES_<variant>
+# NANO_VARIANT<target>_WHOLE_STATIC_LIBRARIRES_<variant>
+#
+# the following may be defined for _OS and _BL only, to control
+# what additional source files need to be included in the build;
+# the file paths in this list are relative to the target (_OS or _BL) LOCAL_PATH;
+# NANO_VARIANT<target>_SRC_FILES_<variant>
+
+NANO_VARIANT_OSCFG_STATIC_LIBRARIES_$(my_variant) := libnanohub_os_$(my_variant)
+
+NANO_VARIANT_OS_CFLAGS_$(my_variant) := \
+    -DDEBUG_SWD                         \
+
+#'Ar' -> argonkey
+NANO_VARIANT_CFLAGS_$(my_variant) := -DPLATFORM_HW_TYPE=0x4172
+
+NANO_VARIANT_C_INCLUDES_$(my_variant) := \
+    device/google/contexthub/firmware/variant/$(my_variant)/inc \
+
+# this is relative to NANOHUB_OS_PATH
+NANO_VARIANT_OSCFG_SRC_FILES_$(my_variant) :=               \
+    os/algos/calibration/accelerometer/accel_cal.c          \
+    os/algos/calibration/gyroscope/gyro_cal.c               \
+    os/algos/calibration/gyroscope/gyro_stillness_detect.c  \
+    os/algos/calibration/magnetometer/mag_cal.c             \
+    os/algos/calibration/common/diversity_checker.c         \
+    os/algos/calibration/over_temp/over_temp_cal.c          \
+    os/algos/common/math/mat.c                              \
+    os/algos/common/math/quat.c                             \
+    os/algos/common/math/vec.c                              \
+    os/algos/fusion.c                                       \
+    os/algos/time_sync.c                                    \
+    os/drivers/hall/hall.c                                  \
+    os/drivers/intersil_isl29034/isl29034.c                 \
+    os/drivers/leds/leds_gpio.c                             \
+    os/drivers/leds/leds_lp3943.c                           \
+    os/drivers/orientation/orientation.c                    \
+    os/drivers/st_hts221/hts221.c                           \
+    os/drivers/st_lps22hb/lps22hb.c                         \
+    os/drivers/st_lsm6dsm/st_lsm6dsm.c                      \
+    os/drivers/tilt_detection/tilt_detection.c              \
+    os/drivers/window_orientation/window_orientation.c      \
diff --git a/firmware/variant/Android.mk b/firmware/variant/Android.mk
index 985418d..2321334 100644
--- a/firmware/variant/Android.mk
+++ b/firmware/variant/Android.mk
@@ -14,5 +14,5 @@
 # limitations under the License.
 #
 
-subdirs := nucleo lunchbox linux neonkey
+subdirs := nucleo lunchbox linux neonkey argonkey
 include $(call all-named-subdir-makefiles,$(subdirs))
diff --git a/firmware/variant/argonkey/Android.mk b/firmware/variant/argonkey/Android.mk
new file mode 100644
index 0000000..773dc11
--- /dev/null
+++ b/firmware/variant/argonkey/Android.mk
@@ -0,0 +1,36 @@
+#
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_NANO_VARS)
+
+LOCAL_MODULE := libnanohub_os_argonkey
+LOCAL_MODULE_TAGS := optional
+LOCAL_AUX_OS_VARIANT := argonkey
+
+LOCAL_SRC_FILES :=      \
+    src/os/i2c.c        \
+    src/os/led.c        \
+    src/os/spi.c        \
+
+LOCAL_C_INCLUDES := \
+    $(LOCAL_PATH)/inc \
+
+LOCAL_EXPORT_C_INCLUDE_DIRS := \
+    $(LOCAL_C_INCLUDES)
+
+include $(BUILD_NANOHUB_OS_STATIC_LIBRARY)
diff --git a/firmware/variant/argonkey/Makefile b/firmware/variant/argonkey/Makefile
new file mode 100644
index 0000000..a06da6a
--- /dev/null
+++ b/firmware/variant/argonkey/Makefile
@@ -0,0 +1,6 @@
+include argonkey_conf.mk
+
+SRC_PATH := ../..
+OUT := out/nanohub/$(VARIANT)
+
+include $(SRC_PATH)/variant/variant.mk
diff --git a/firmware/variant/argonkey/README.DMA.txt b/firmware/variant/argonkey/README.DMA.txt
new file mode 100644
index 0000000..4356c55
--- /dev/null
+++ b/firmware/variant/argonkey/README.DMA.txt
@@ -0,0 +1,21 @@
+Allocation of DMA Streams
+
+DMA1:
+Stream#0: Channel#1 (I2C1_RX) I2C1_DMA_RX_CFG_A i2c-to-AP
+Stream#1: Channel#1 (I2C3_RX) I2C3_DMA_RX_CFG_A i2c-to-ext
+Stream#2: Channel#7 (I2C2_RX) I2C2_DMA_RX_CFG_A i2c-to-sens
+Stream#3: Channel#0 (SPI2_RX) SPI2_DMA_RX_CFG   spi-to-sens
+Stream#4: Channel#0 (SPI2_TX) SPI2_DMA_TX_CFG   spi-to-sens
+Stream#5: Channel#6 (I2C3_TX) I2C3_DMA_TX_CFG_B i2c-to-sens
+Stream#6: Channel#1 (I2C1_TX) I2C1_DMA_TX_CFG_B i2c-to-AP
+Stream#7: Channel#7 (I2C2_TX) I2C2_DMA_TX_CFG   i2c-to-sens
+
+DMA2:
+Stream#0:
+Stream#1:
+Stream#2: Channel#3 (SPI1_RX) SPI1_DMA_RX_CFG_B spi-to-AP
+Stream#3: Channel#2 (I2S5_RX) SPI5_DMA_RX_CFG_A i2s-to-mic
+Stream#4: Channel#2 (I2S5_TX) SPI5_DMA_TX_CFG_A i2s-to-mic
+Stream#5: Channel#3 (SPI1_TX) SPI1_DMA_TX_CFG_B spi-to-AP
+Stream#6:
+Stream#7:
diff --git a/firmware/variant/argonkey/README.GPIO.txt b/firmware/variant/argonkey/README.GPIO.txt
new file mode 100644
index 0000000..131de55
--- /dev/null
+++ b/firmware/variant/argonkey/README.GPIO.txt
@@ -0,0 +1,36 @@
+Allocation of GPIOs and EXTI interrupts
+
+PA0   WAKEUP     EXTI0_IRQn
+PA1   WIRQ1
+PA2   SW_USR     EXTI2_IRQn (connected to INT_HUM too, but Humidity driver does not use it)
+PA3   WIRQ2
+PA4   SPI1_NSS   (slave)
+PA5   SPI1_SCK   (slave)
+PA6   SPI1_MISO  (slave)
+PA7   SPI1_MOSI  (slave)
+PA8   I2C3_SCL
+PA9   UART1_TX
+PA10  UART1_RX
+PA11  EXT_GPIO0  EXTI15_10_IRQn
+PA12  EXT_GPIO1  EXTI15_10_IRQn
+PA13  SWDIO
+PA14  SWCLK
+PA15  INT_BARO   EXTI15_10_IRQn
+
+PB0   I2S5_CK
+PB1   INT_ACCG   EXTI1_IRQn
+PB2   LED1       (at reset it is used in input as BOOT1)
+PB3   INT_ALS    EXTI3_IRQn
+PB4   I2C3_SDA
+PB5   INT_HALL   EXTI9_5_IRQn
+PB6   I2C1_SCL   (slave)
+PB7   I2C1_SDA   (slave)
+PB8   I2S5_SD
+PB9   I2C2_SDA
+PB10  I2C2_SCL
+PB12  SPI2_NSS
+PB13  SPI2_SCK
+PB14  SPI2_MISO
+PB15  SPI2_MOSI
+
+PC13  LED0
diff --git a/firmware/variant/argonkey/argonkey.mk b/firmware/variant/argonkey/argonkey.mk
new file mode 100644
index 0000000..75dc5af
--- /dev/null
+++ b/firmware/variant/argonkey/argonkey.mk
@@ -0,0 +1,87 @@
+#
+# Copyright (C) 2017 STMicroelectronics
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+#variant makefile for argonkey
+
+ifneq ($(PLATFORM),stm32)
+        $(error "ARGONKEY variant cannot be build on a platform that is not stm32")
+endif
+
+FLAGS += -DPLATFORM_HW_TYPE=0x4172   #'Ar' -> argonkey
+FLAGS += -DDEBUG_SWD
+
+FLAGS += -I$(VARIANT_PATH)/inc
+
+#board configuration shims
+SRCS_os += $(VARIANT_PATH)/src/os/i2c.c
+SRCS_os += $(VARIANT_PATH)/src/os/led.c
+SRCS_os += $(VARIANT_PATH)/src/os/spi.c
+#keys
+
+#drivers
+# Fusion algorithms
+SRCS_os += os/algos/fusion.c \
+	os/algos/common/math/mat.c \
+	os/algos/common/math/quat.c \
+	os/algos/common/math/vec.c
+
+# LSM6DSL accel+gyro with mag slave
+SRCS_os += os/drivers/st_lsm6dsm/st_lsm6dsm.c \
+        os/algos/calibration/accelerometer/accel_cal.c \
+        os/algos/calibration/gyroscope/gyro_cal.c \
+        os/algos/calibration/gyroscope/gyro_stillness_detect.c \
+        os/algos/calibration/magnetometer/mag_cal.c \
+        os/algos/calibration/common/diversity_checker.c \
+        os/algos/calibration/over_temp/over_temp_cal.c \
+        os/algos/time_sync.c
+
+# Orientation sensor driver
+SRCS_os += os/drivers/orientation/orientation.c
+
+# Window orientation sensor driver
+SRCS_os += os/drivers/window_orientation/window_orientation.c
+
+# LPS22HB baro+temp
+SRCS_os += os/drivers/st_lps22hb/lps22hb.c
+
+# Hall effect sensor driver
+SRCS_os += os/drivers/hall/hall.c
+
+# HTS221 humidity
+SRCS_os += os/drivers/st_hts221/hts221.c
+
+# ISL29034 ALS
+SRCS_os += os/drivers/intersil_isl29034/isl29034.c
+
+# LED on GPIO
+SRCS_os += os/drivers/leds/leds_gpio.c
+
+# LP3943 LED controller
+SRCS_os += os/drivers/leds/leds_lp3943.c
+
+# Tilt detection
+SRCS_os += os/drivers/tilt_detection/tilt_detection.c
+
+# Digital microphone
+# FIXME
+
+# VL53L0X Proximity
+# FIXME
+
+# Button
+# FIXME
+
+$(info included ARGONKEY variant)
diff --git a/firmware/variant/argonkey/argonkey_conf.mk b/firmware/variant/argonkey/argonkey_conf.mk
new file mode 100644
index 0000000..a525226
--- /dev/null
+++ b/firmware/variant/argonkey/argonkey_conf.mk
@@ -0,0 +1,26 @@
+#
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+# settings that apps and OS both want to know about variant
+
+VENDOR := google
+VARIANT := argonkey
+CPU := cortexm4
+CHIP := stm32f412
+PLATFORM := stm32
+
+# VARIANT_PATH is relative to ANDROID TOP
+VARIANT_PATH := device/google/contexthub/firmware/variant/$(VARIANT)
diff --git a/firmware/variant/argonkey/inc/variant/sensType.h b/firmware/variant/argonkey/inc/variant/sensType.h
new file mode 100644
index 0000000..23cd0ef
--- /dev/null
+++ b/firmware/variant/argonkey/inc/variant/sensType.h
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _VARIANT_SENS_TYPE_H_
+#define _VARIANT_SENS_TYPE_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define SENS_TYPE_GYRO_BIAS       (SENS_TYPE_FIRST_USER + 0)
+#define SENS_TYPE_MAG_BIAS        (SENS_TYPE_FIRST_USER + 1)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/firmware/variant/argonkey/inc/variant/variant.h b/firmware/variant/argonkey/inc/variant/variant.h
new file mode 100644
index 0000000..62fb4e8
--- /dev/null
+++ b/firmware/variant/argonkey/inc/variant/variant.h
@@ -0,0 +1,157 @@
+/*
+ * Copyright (C) 2017 STMicroelectronics
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _VARIANT_ARGONKEY_H_
+#define _VARIANT_ARGONKEY_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define PLATFORM_HW_TYPE            0x4172   // 'Ar' -> argonkey
+
+#define VARIANT_VER                 0x00000000
+
+//we have LSE in argonkey
+#define RTC_CLK                     RTC_CLK_LSE
+#define RTC_PREDIV_A                0UL
+#define RTC_PREDIV_S                32767UL
+
+//spi bus for comms
+#define PLATFORM_HOST_INTF_SPI_BUS  0
+
+#define SH_INT_WAKEUP               GPIO_PA(0)
+#define SH_EXTI_WAKEUP_IRQ          EXTI0_IRQn
+#define AP_INT_WAKEUP               GPIO_PA(1)
+/*
+ * Allocating a GPIO for non-wakeup host interrupt is optional in CHRE.
+ * ArgonKey implements this feature and enables it here. If you want to use
+ * the GPIO_PA(3) for other purposes, you should comment the line below and
+ * the corresponding line in the host's devicetree.
+ */
+#define AP_INT_NONWAKEUP            GPIO_PA(3)
+
+#define DEBUG_UART_UNITNO           1
+#define DEBUG_UART_GPIO_TX          GPIO_PA(9)
+#define DEBUG_UART_GPIO_RX          GPIO_PA(10)
+
+#define DEBUG_LOG_EVT               0x3B474F4C
+
+#define BL_FLASH_TABLE                                                  \
+{                                                                       \
+    { (uint8_t *)(&BL),                      0x04000, BL_FLASH_BL     },\
+    { (uint8_t *)(__eedata_start),           0x04000, BL_FLASH_EEDATA },\
+    { (uint8_t *)(__eedata_start + 0x04000), 0x04000, BL_FLASH_EEDATA },\
+    { (uint8_t *)(__code_start),             0x04000, BL_FLASH_KERNEL },\
+    { (uint8_t *)(__code_start + 0x04000),   0x10000, BL_FLASH_KERNEL },\
+    { (uint8_t *)(__code_start + 0x14000),   0x20000, BL_FLASH_KERNEL },\
+    { (uint8_t *)(__shared_start),           0x20000, BL_FLASH_SHARED },\
+    { (uint8_t *)(__shared_start + 0x20000), 0x20000, BL_FLASH_SHARED },\
+    { (uint8_t *)(__shared_start + 0x40000), 0x20000, BL_FLASH_SHARED },\
+    { (uint8_t *)(__shared_start + 0x60000), 0x20000, BL_FLASH_SHARED },\
+    { (uint8_t *)(__shared_start + 0x80000), 0x20000, BL_FLASH_SHARED },\
+    { (uint8_t *)(__shared_start + 0xA0000), 0x20000, BL_FLASH_SHARED },\
+}
+
+/* ------------------------------------------------------------------------ */
+/* sensor accel+gyro lsm6dsl (compatible lsm6dsm) on spi */
+
+// #define LSM6DSM_DBG_ENABLED                 1
+
+#define LSM6DSM_SPI_SLAVE_BUS_ID               1
+#define LSM6DSM_SPI_SLAVE_FREQUENCY_HZ         8000000
+#define LSM6DSM_SPI_SLAVE_CS_GPIO              GPIO_PB(12)
+
+#define LSM6DSM_INT_IRQ                        EXTI1_IRQn
+#define LSM6DSM_INT1_GPIO                      GPIO_PB(1)
+
+/* i2c slave sensor mag lis2mdl (lsm303agr compatible) */
+#define LSM6DSM_I2C_MASTER_LSM303AGR           1
+
+#define LSM6DSM_ACCEL_GYRO_ROT_MATRIX          -1, 0, 0, 0, -1, 0, 0, 0, 1
+#define LSM6DSM_MAGN_ROT_MATRIX                -1, 0, 0, 0, 1, 0, 0, 0, 1
+
+#define LSM6DSM_GYRO_CALIB_ENABLED             1
+#define LSM6DSM_MAGN_CALIB_ENABLED             1
+
+/* ------------------------------------------------------------------------ */
+/* sensor baro+temp lps22hb on i2c */
+/* unused PIN GPIO_PA(15), INT EXTI15_10_IRQn */
+
+// #define LPS22HB_DBG_ENABLED                 1
+
+#define LPS22HB_I2C_BUS_ID                     1
+#define LPS22HB_I2C_SPEED                      400000
+#define LPS22HB_I2C_ADDR                       0x5D
+
+/* ------------------------------------------------------------------------ */
+/* sensor humidity hts221 on i2c */
+/* unused PIN GPIO_PA(2), INT EXTI2_IRQn is used as button */
+
+// #define HTS221_DBG_ENABLED                  1
+
+#define HTS221_I2C_BUS_ID                      1
+#define HTS221_I2C_SPEED                       400000
+#define HTS221_I2C_ADDR                        0x5F
+
+/* ------------------------------------------------------------------------ */
+/* sensor als isl29034 on i2c */
+
+#define ISL29034_I2C_BUS_ID                    1
+#define ISL29034_I2C_SPEED                     400000
+#define ISL29034_I2C_ADDR                      0x44
+
+/* ------------------------------------------------------------------------ */
+/* sensor proximity vl53l0x on i2c */
+
+// FIXME
+// I2C_BUS_ID 1
+// I2C_SPEED  400000
+// I2C_ADDR   0x29
+// PIN        GPIO_PB(3)
+// IRQ        EXTI3_IRQn
+
+/* ------------------------------------------------------------------------ */
+/* sensor hall mrms501a on gpio */
+
+#define HALL_PIN                               GPIO_PB(5)
+#define HALL_IRQ                               EXTI9_5_IRQn
+
+/* ------------------------------------------------------------------------ */
+/* microphone on i2s */
+
+// FIXME
+// I2S_BUS_ID 4
+
+/* ------------------------------------------------------------------------ */
+/* led controller lp3943 on i2c */
+
+#define LP3943_I2C_BUS_ID                      2
+#define LP3943_I2C_SPEED                       200000
+#define LP3943_I2C_ADDR                        0x60
+
+/* ------------------------------------------------------------------------ */
+/* button on gpio */
+
+// FIXME
+// PIN GPIO_PA(2)
+// INT EXTI2_IRQn
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/firmware/variant/argonkey/src/os/i2c.c b/firmware/variant/argonkey/src/os/i2c.c
new file mode 100644
index 0000000..566c784
--- /dev/null
+++ b/firmware/variant/argonkey/src/os/i2c.c
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2016-2017 STMicroelectronics
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <plat/i2c.h>
+#include <util.h>
+
+static const struct StmI2cBoardCfg mStmI2cBoardCfgs[] = {
+    [0] = {
+        .gpioScl = I2C1_GPIO_SCL_PB6,
+        .gpioSda = I2C1_GPIO_SDA_PB7,
+
+        .gpioPull = GPIO_PULL_NONE,
+
+        .dmaRx = I2C1_DMA_RX_CFG_A,
+        .dmaTx = I2C1_DMA_TX_CFG_B,
+
+        .sleepDev = Stm32sleepDevI2c1,
+    },
+    [1] = {
+        .gpioScl = I2C2_GPIO_SCL_PB10,
+        .gpioSda = I2C2_GPIO_SDA_PB9,
+
+        .gpioPull = GPIO_PULL_NONE,
+
+        .dmaRx = I2C2_DMA_RX_CFG_A,
+        .dmaTx = I2C2_DMA_TX_CFG,
+
+        .sleepDev = Stm32sleepDevI2c2,
+    },
+    [2] = {
+        .gpioScl = I2C3_GPIO_SCL_PA8,
+        .gpioSda = I2C3_GPIO_SDA_PB4,
+
+        .gpioPull = GPIO_PULL_NONE,
+
+        .dmaRx = I2C3_DMA_RX_CFG_A,
+        .dmaTx = I2C3_DMA_TX_CFG_B,
+
+        .sleepDev = Stm32sleepDevI2c3,
+    },
+};
+
+const struct StmI2cBoardCfg *boardStmI2cCfg(uint8_t busId)
+{
+    if (busId >= ARRAY_SIZE(mStmI2cBoardCfgs))
+        return NULL;
+
+    return &mStmI2cBoardCfgs[busId];
+}
diff --git a/firmware/variant/argonkey/src/os/led.c b/firmware/variant/argonkey/src/os/led.c
new file mode 100644
index 0000000..3762154
--- /dev/null
+++ b/firmware/variant/argonkey/src/os/led.c
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2017 STMicroelectronics
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <leds_gpio.h>
+#include <util.h>
+#include <plat/gpio.h>
+
+static uint32_t local_leds_array[] = {
+    GPIO_PC(13), /* GPIO_LED0 */ \
+    GPIO_PB(2)   /* GPIO_LED1 */
+};
+
+static struct LedsGpio local_leds = {
+    .leds_array = local_leds_array,
+    .num = ARRAY_SIZE(local_leds_array),
+};
+
+const struct LedsGpio *ledsGpioBoardCfg(void)
+{
+    return &local_leds;
+}
diff --git a/firmware/variant/argonkey/src/os/spi.c b/firmware/variant/argonkey/src/os/spi.c
new file mode 100644
index 0000000..40457bd
--- /dev/null
+++ b/firmware/variant/argonkey/src/os/spi.c
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <plat/spi.h>
+#include <util.h>
+
+static const struct StmSpiBoardCfg mStmSpiBoardCfgs[] = {
+    [0] = {
+        .gpioMiso = GPIO_PA(6),
+        .gpioMosi = GPIO_PA(7),
+        .gpioSclk = GPIO_PA(5),
+        .gpioNss = GPIO_PA(4),
+
+        .gpioFunc = GPIO_AF_SPI1,
+        .gpioSpeed = GPIO_SPEED_MEDIUM,
+
+        .irqNss = -1,
+
+        .dmaRx = SPI1_DMA_RX_CFG_B,
+        .dmaTx = SPI1_DMA_TX_CFG_B,
+
+        .sleepDev = -1,
+    },
+    [1] = {
+        .gpioMiso = GPIO_PB(14),
+        .gpioMosi = GPIO_PB(15),
+        .gpioSclk = GPIO_PB(13),
+        .gpioNss = GPIO_PB(12),
+
+        .gpioSpeed = GPIO_SPEED_MEDIUM,
+        .gpioFunc = GPIO_AF_SPI2_A,
+
+        .irqNss = EXTI15_10_IRQn,
+
+        .dmaRx = SPI2_DMA_RX_CFG,
+        .dmaTx = SPI2_DMA_TX_CFG,
+
+        .sleepDev = Stm32sleepDevSpi2,
+    },
+};
+
+const struct StmSpiBoardCfg *boardStmSpiCfg(uint8_t busId)
+{
+    if (busId >= ARRAY_SIZE(mStmSpiBoardCfgs))
+        return NULL;
+
+    return &mStmSpiBoardCfgs[busId];
+}
