diff --git a/docs/index.rst b/docs/index.rst
index 0af70fa0dadbdb5ff8b15b988a4cf0b75fcc1dd6..07777460be0c44e041ff304292bec5b337c9a5e6 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -78,6 +78,10 @@ Supported Devices & Architectures
 ar71xx-generic
 ^^^^^^^^^^^^^^
 
+* 8devices
+
+  - Carambola 2
+
 * ALFA Network
 
   - AP121
diff --git a/package/gluon-core/files/lib/gluon/upgrade/010-primary-mac b/package/gluon-core/files/lib/gluon/upgrade/010-primary-mac
index 25c13bac8b86ead24633794193db56d4bf8cfb17..a913db902d681a418b52a11917659f80896dd86e 100755
--- a/package/gluon-core/files/lib/gluon/upgrade/010-primary-mac
+++ b/package/gluon-core/files/lib/gluon/upgrade/010-primary-mac
@@ -24,7 +24,7 @@ end
 
 if platform.match('ar71xx', 'generic', {'tl-wdr3600', 'tl-wdr4300'}) then
   table.insert(try_files, 1, '/sys/class/ieee80211/phy1/macaddress')
-elseif platform.match('ar71xx', 'generic', {'unifi-outdoor-plus'}) then
+elseif platform.match('ar71xx', 'generic', {'unifi-outdoor-plus', 'carambola2'}) then
   table.insert(try_files, 1, '/sys/class/net/eth0/address')
 elseif platform.match('ar71xx', 'generic', {'archer-c5', 'archer-c7'}) then
   table.insert(try_files, 1, '/sys/class/net/eth1/address')
diff --git a/targets/ar71xx-generic/profiles.mk b/targets/ar71xx-generic/profiles.mk
index ce8d3f25e52ccfb5f68aa12ce003d634c27bd0a1..89d486ceebede478c7d8c86d18cafa9e60ce1179 100644
--- a/targets/ar71xx-generic/profiles.mk
+++ b/targets/ar71xx-generic/profiles.mk
@@ -302,3 +302,10 @@ $(eval $(call GluonProfile,MR16,rssileds))
 $(eval $(call GluonProfileFactorySuffix,MR16))
 $(eval $(call GluonModel,MR16,mr16,meraki-mr16))
 $(eval $(call GluonModelAlias,MR16,meraki-mr16,meraki-mr66))
+
+## 8devices
+
+# Carambola 2
+$(eval $(call GluonProfile,CARAMBOLA2))
+$(eval $(call GluonModel,CARAMBOLA2,carambola2,8devices-carambola2-board))
+$(eval $(call GluonProfileFactorySuffix,CARAMBOLA2))