diff --git a/app/lib/common-libs/constants.ts b/app/lib/common-libs/constants.ts
index b7cf84d6913f826fb360ec2e054d60d707fb14ce..3d7857579fa45cfdb511572c87acd058f8cc41ca 100644
--- a/app/lib/common-libs/constants.ts
+++ b/app/lib/common-libs/constants.ts
@@ -97,6 +97,9 @@ export const CommonConstants = {
   MAXIMUM_LEN_OF_OUTPUT,
   MAXIMUM_LEN_OF_UNLOCK,
 
+  POW_TURN_DURATION_PC: 100,
+  POW_TURN_DURATION_ARM: 500,
+
   PROOF_OF_WORK: {
     UPPER_BOUND: [
       '9A-F',
diff --git a/app/modules/prover/lib/blockProver.ts b/app/modules/prover/lib/blockProver.ts
index 6e14ea7467c994f01fc2430bdb068dc06669cb7a..5217aab5fea5f6f83598d99ddfafc9c0b35a3919 100644
--- a/app/modules/prover/lib/blockProver.ts
+++ b/app/modules/prover/lib/blockProver.ts
@@ -5,7 +5,8 @@ import {DBBlock} from "../../../lib/db/DBBlock"
 import {CommonConstants} from "../../../lib/common-libs/constants"
 import {BlockDTO} from "../../../lib/dto/BlockDTO"
 
-const querablep       = require('querablep');
+const os        = require('os')
+const querablep = require('querablep')
 
 const POW_FOUND = true;
 const POW_NOT_FOUND_YET = false;
@@ -168,12 +169,20 @@ export class BlockProver {
       this.logger.info('Generating proof-of-work with %s leading zeros followed by [0-' + highMark + ']... (CPU usage set to %s%) for block#%s', nbZeros, (this.conf.cpu * 100).toFixed(0), block.number, block.issuer.slice(0,6));
       const start = Date.now();
       let result = await powFarm.askNewProof({
-        newPoW: { conf: {
-          cpu: this.conf.cpu,
-          prefix: this.conf.prefix,
-          avgGenTime: this.conf.avgGenTime,
-          medianTimeBlocks: this.conf.medianTimeBlocks
-        }, block: block, zeros: nbZeros, highMark: highMark, forcedTime: forcedTime, pair: this.pair }
+        newPoW: {
+          turnDuration: os.arch().match(/arm/) ? CommonConstants.POW_TURN_DURATION_ARM : CommonConstants.POW_TURN_DURATION_PC,
+          conf: {
+            cpu: this.conf.cpu,
+            prefix: this.conf.prefix,
+            avgGenTime: this.conf.avgGenTime,
+            medianTimeBlocks: this.conf.medianTimeBlocks
+          },
+          block: block,
+          zeros: nbZeros,
+          highMark: highMark,
+          forcedTime: forcedTime,
+          pair: this.pair
+        }
       });
       if (!result) {
         this.logger.info('GIVEN proof-of-work for block#%s with %s leading zeros followed by [0-' + highMark + ']! stop PoW for %s', block.number, nbZeros, this.pair && this.pair.pub.slice(0,6));
diff --git a/app/modules/prover/lib/engine.ts b/app/modules/prover/lib/engine.ts
index 63a3b6c8253781adf4f79b87eae9d429424a0fcd..12d2751d6c45f522027ce96c88de942cd9f0c62a 100644
--- a/app/modules/prover/lib/engine.ts
+++ b/app/modules/prover/lib/engine.ts
@@ -46,6 +46,9 @@ export class PowEngine {
   }
 
   setConf(value:any) {
+    if (os.arch().match(/arm/) && value.cpu !== undefined) {
+      value.cpu /= 2; // Don't know exactly why is ARM so much saturated by PoW, so let's divide by 2
+    }
     return this.cluster.changeConf(value)
   }