Pages:
Author

Topic: Official FutureBit Apollo BTC Software/Image and Support thread - page 50. (Read 48695 times)

hero member
Activity: 882
Merit: 5834
not your keys, not your coins!
Don't think there is an API for that, but you could always kill the miner process and fire it up again via script.
Interesting idea. How exactly would you recommend I kill the process? Just a regular `kill` command with the pid? If so, my script would have to make sure it first find the correct PID in order to then kill it. Or is there a better way?
There is no API, no. You can find more information about this by using TryNinja's search engine and looking for 'API' in this topic: https://ninjastic.space/search?content=API&topic_id=5340015
As jstefanop is saying here, there is a file that's basically the API.

There is a script called miner_stop_all.sh that is called by the GUI when you stop the miner; it should be possible to just execute that instead of killing the process. miner_start_all.sh starts it back up.
Source here: https://github.com/jstefanop/Apollo-Miner-Binaries/blob/main/linux-aarch64/miner_start_all.sh and here: https://github.com/jstefanop/Apollo-Miner-Binaries/blob/main/linux-aarch64/miner_stop_all.sh

Locate those in Futurebit OS and call as you wish.
newbie
Activity: 11
Merit: 1
Don't think there is an API for that, but you could always kill the miner process and fire it up again via script.

Interesting idea. How exactly would you recommend I kill the process? Just a regular `kill` command with the pid? If so, my script would have to make sure it first find the correct PID in order to then kill it. Or is there a better way?

Also, would killing the process like this cause any corruption or other issues?

Thank you for the help.
member
Activity: 203
Merit: 37


Interesting.
Thanks for posting the picture while I cannot do this myself, yet!

Below is the OpenScad code for the next iteration of the bottom cover for the Apollo BTC.

It's printing at the moment so I'm not entirely certain it will fit, but it should be very close.

Depending on what part of the code is disabled (*), you can render a bottom cover by itself, or the feet for the bottom cover which lift it up to make space for a Noctua NF-A6x25 FLX 60x25mm Premium Fan. No specific reason for choosing this fan, except that I have one lying around.

I'm not certain if it's best to have the fan blow or suck, neither where exactly to place it. I think I'll mount it so that it will blow air upward.
I have a cable adapter for low noise left over, I guess it's just a resistor in the cable, and plan to splice the fan into the 12v supply.

Code:
$fn=30;


// 20221022/23 making Polli bottom cover

// dimensions:
// 155mm x 104mm outer
// 131.6mm x 100.5mm inner

// screwless press fit design

// Rear USB and ETH connectors: Continuous cutout 5mm from bottom and side and stretching to 55mm from side
// Front LED light starts 17mm from bottom
// make 15mm high from bottom with cutouts for connectors
// side connectors and antenna hole cutout: 20mm to 90mm from rear side edge and 4mm from bottom (included // 6VDC hole: 23.6mm from side edge;' 10.9mm wide; 7.7mm high; 5.2mm from bottom edge)

// purpose: Protection from physical damage
// better air entry
// Wifi antenna outside

translate([0,0,5])// to visually separate cover and legs
union(){// Main part of Polli bottom cover -DISABLE (*) TO RENDER LEGS

difference(){// remove bits from cube above zero line

*cube([160, 109, 17.5]);//the part above ground level that slides onto the original housing; adding 2.5mm each side for wall thickness FIRST PRINT- TOO SMALL
cube([160.5, 109, 17.5]);//the part above ground level that slides onto the original housing; adding 2.5mm each side for wall thickness


union(){// Peg holes for legs for Polli Bottom Cover

union(){// Pegs

translate([12,3.5,0])
cylinder(h=2.5,r=2.5);

translate([3.5,12,0])
cylinder(h=2.5,r=2.5);

translate([147,3.5,0])
cylinder(h=2.5,r=2.5);

translate([157,13,0])
cylinder(h=2.5,r=2.5);

translate([147,105.5,0])
cylinder(h=2.5,r=2.5);

translate([157,96,0])
cylinder(h=2.5,r=2.5);


translate([12,105.5,0])
cylinder(h=2.5,r=2.5);

translate([3.5,96,0])
cylinder(h=2.5,r=2.5);
}
// End union pegs

translate([0,0,-45])
difference(){// Making 1 leg

cube([20,20,45]);

translate([7,7,0])
cube([20,20,45]);

}
// End difference making first

translate([140.5,0,-45])
difference(){// Making 1 leg

cube([20,20,45]);

translate([-7,7,0])
cube([20,20,45]);

}
// End difference making 1 leg

translate([140.5,89,-45])
difference(){// Making 1 leg

cube([20,20,45]);

translate([-7,-7,0])
cube([20,20,45]);

}
// End difference making 1 leg

translate([0,89,-45])
difference(){// Making 1 leg

cube([20,20,45]);

translate([7,-7,0])
cube([20,20,45]);

}
// End difference making 1 leg







}
// End of union Peg holes for legs of Polli Bottom Cover


*translate([2.5,2.5,2.5])
cube([155, 104, 17.5]);// removing the space where the Polli body will be FIRST PRINT- TOO SMALL

translate([2.5,2.5,2.5])
cube([155.5, 104, 17.5]);// removing the space where the Polli body will be - This size is for use with or without a Noctua NF-A6x25 FLX 60x25mm Premium Fan
// Hole spacing: 50mm; hole size 4.4mm diameter



// side connectors and antenna hole cutout: 20mm to 90mm from rear side edge and 4mm from bottom (included // 6VDC hole: 23.6mm from side edge;' 10.9mm wide; 7.7mm high; 5.2mm from bottom edge)
translate([67.5,-47.5,6.5])
cube([70, 50, 17.5]);//Cutout for side connectors and antenna


// Rear USB and ETH connectors: Continuous cutout 5mm from bottom and side and stretching to 55mm from side
translate([110.5,7.5,7.5])
cube([50, 50, 17.5]);//Cutout for rear USB and ETH connectors

*translate([-2,0,0])
union(){// making lots of holes (9mm optimised) in bottom plate DISABLE FOR PRINTING WITH FAN

*translate([0,-0.5,0])
union(){//one row of holes
translate([10,7.5,0])
cylinder(5,4.5,4.5);

translate([10,17.5,0])
cylinder(5,4.5,4.5);

translate([10,27.5,0])
cylinder(5,4.5,4.5);

translate([10,37.5,0])
cylinder(5,4.5,4.5);

translate([10,47.5,0])
cylinder(5,4.5,4.5);

translate([10,57.5,0])
cylinder(5,4.5,4.5);

translate([10,67.5,0])
cylinder(5,4.5,4.5);

translate([10,77.5,0])
cylinder(5,4.5,4.5);

translate([10,87.5,0])
cylinder(5,4.5,4.5);

translate([10,97.5,0])
cylinder(5,4.5,4.5);
}
// End union 1 row of holes

translate([9,4.5,0])
union(){//one row of holes
translate([10,7.5,0])
cylinder(5,4.5,4.5);

translate([10,17.5,0])
cylinder(5,4.5,4.5);

translate([10,27.5,0])
cylinder(5,4.5,4.5);

translate([10,37.5,0])
cylinder(5,4.5,4.5);

translate([10,47.5,0])
cylinder(5,4.5,4.5);

translate([10,57.5,0])
cylinder(5,4.5,4.5);

translate([10,67.5,0])
cylinder(5,4.5,4.5);

translate([10,77.5,0])
cylinder(5,4.5,4.5);

translate([10,87.5,0])
cylinder(5,4.5,4.5);

translate([10,97.5,0])
cylinder(5,4.5,4.5);
}
// End union 1 row of holes

translate([18,-0.5,0])
union(){//one row of holes
translate([10,7.5,0])
cylinder(5,4.5,4.5);

translate([10,17.5,0])
cylinder(5,4.5,4.5);

translate([10,27.5,0])
cylinder(5,4.5,4.5);

translate([10,37.5,0])
cylinder(5,4.5,4.5);

translate([10,47.5,0])
cylinder(5,4.5,4.5);

translate([10,57.5,0])
cylinder(5,4.5,4.5);

translate([10,67.5,0])
cylinder(5,4.5,4.5);

translate([10,77.5,0])
cylinder(5,4.5,4.5);

translate([10,87.5,0])
cylinder(5,4.5,4.5);

translate([10,97.5,0])
cylinder(5,4.5,4.5);
}
// End union 1 row of holes

translate([27,4.5,0])
union(){//one row of holes
translate([10,7.5,0])
cylinder(5,4.5,4.5);

translate([10,17.5,0])
cylinder(5,4.5,4.5);

translate([10,27.5,0])
cylinder(5,4.5,4.5);

translate([10,37.5,0])
cylinder(5,4.5,4.5);

translate([10,47.5,0])
cylinder(5,4.5,4.5);

translate([10,57.5,0])
cylinder(5,4.5,4.5);

translate([10,67.5,0])
cylinder(5,4.5,4.5);

translate([10,77.5,0])
cylinder(5,4.5,4.5);

translate([10,87.5,0])
cylinder(5,4.5,4.5);

translate([10,97.5,0])
cylinder(5,4.5,4.5);
}
// End union 1 row of holes

translate([36,-0.5,0])
union(){//one row of holes
translate([10,7.5,0])
cylinder(5,4.5,4.5);

translate([10,17.5,0])
cylinder(5,4.5,4.5);

translate([10,27.5,0])
cylinder(5,4.5,4.5);

translate([10,37.5,0])
cylinder(5,4.5,4.5);

translate([10,47.5,0])
cylinder(5,4.5,4.5);

translate([10,57.5,0])
cylinder(5,4.5,4.5);

translate([10,67.5,0])
cylinder(5,4.5,4.5);

translate([10,77.5,0])
cylinder(5,4.5,4.5);

translate([10,87.5,0])
cylinder(5,4.5,4.5);

translate([10,97.5,0])
cylinder(5,4.5,4.5);
}
// End union 1 row of holes

translate([45,4.5,0])
union(){//one row of holes
translate([10,7.5,0])
cylinder(5,4.5,4.5);

translate([10,17.5,0])
cylinder(5,4.5,4.5);

translate([10,27.5,0])
cylinder(5,4.5,4.5);

translate([10,37.5,0])
cylinder(5,4.5,4.5);

translate([10,47.5,0])
cylinder(5,4.5,4.5);

translate([10,57.5,0])
cylinder(5,4.5,4.5);

translate([10,67.5,0])
cylinder(5,4.5,4.5);

translate([10,77.5,0])
cylinder(5,4.5,4.5);

translate([10,87.5,0])
cylinder(5,4.5,4.5);

translate([10,97.5,0])
cylinder(5,4.5,4.5);
}
// End union 1 row of holes

translate([54,-0.5,0])
union(){//one row of holes
translate([10,7.5,0])
cylinder(5,4.5,4.5);

translate([10,17.5,0])
cylinder(5,4.5,4.5);

translate([10,27.5,0])
cylinder(5,4.5,4.5);

translate([10,37.5,0])
cylinder(5,4.5,4.5);

translate([10,47.5,0])
cylinder(5,4.5,4.5);

translate([10,57.5,0])
cylinder(5,4.5,4.5);

translate([10,67.5,0])
cylinder(5,4.5,4.5);

translate([10,77.5,0])
cylinder(5,4.5,4.5);

translate([10,87.5,0])
cylinder(5,4.5,4.5);

translate([10,97.5,0])
cylinder(5,4.5,4.5);
}
// End union 1 row of holes

translate([63,4.5,0])
union(){//one row of holes
translate([10,7.5,0])
cylinder(5,4.5,4.5);

translate([10,17.5,0])
cylinder(5,4.5,4.5);

translate([10,27.5,0])
cylinder(5,4.5,4.5);

translate([10,37.5,0])
cylinder(5,4.5,4.5);

translate([10,47.5,0])
cylinder(5,4.5,4.5);

translate([10,57.5,0])
cylinder(5,4.5,4.5);

translate([10,67.5,0])
cylinder(5,4.5,4.5);

translate([10,77.5,0])
cylinder(5,4.5,4.5);

translate([10,87.5,0])
cylinder(5,4.5,4.5);

translate([10,97.5,0])
cylinder(5,4.5,4.5);
}
// End union 1 row of holes

translate([72,-0.5,0])
union(){//one row of holes
translate([10,7.5,0])
cylinder(5,4.5,4.5);

translate([10,17.5,0])
cylinder(5,4.5,4.5);

translate([10,27.5,0])
cylinder(5,4.5,4.5);

translate([10,37.5,0])
cylinder(5,4.5,4.5);

translate([10,47.5,0])
cylinder(5,4.5,4.5);

translate([10,57.5,0])
cylinder(5,4.5,4.5);

translate([10,67.5,0])
cylinder(5,4.5,4.5);

translate([10,77.5,0])
cylinder(5,4.5,4.5);

translate([10,87.5,0])
cylinder(5,4.5,4.5);

translate([10,97.5,0])
cylinder(5,4.5,4.5);
}
// End union 1 row of holes

translate([81,4.5,0])
union(){//one row of holes
translate([10,7.5,0])
cylinder(5,4.5,4.5);

translate([10,17.5,0])
cylinder(5,4.5,4.5);

translate([10,27.5,0])
cylinder(5,4.5,4.5);

translate([10,37.5,0])
cylinder(5,4.5,4.5);

translate([10,47.5,0])
cylinder(5,4.5,4.5);

translate([10,57.5,0])
cylinder(5,4.5,4.5);

translate([10,67.5,0])
cylinder(5,4.5,4.5);

translate([10,77.5,0])
cylinder(5,4.5,4.5);

translate([10,87.5,0])
cylinder(5,4.5,4.5);

translate([10,97.5,0])
cylinder(5,4.5,4.5);
}
// End union 1 row of holes

translate([90,-0.5,0])
union(){//one row of holes
translate([10,7.5,0])
cylinder(5,4.5,4.5);

translate([10,17.5,0])
cylinder(5,4.5,4.5);

translate([10,27.5,0])
cylinder(5,4.5,4.5);

translate([10,37.5,0])
cylinder(5,4.5,4.5);

translate([10,47.5,0])
cylinder(5,4.5,4.5);

translate([10,57.5,0])
cylinder(5,4.5,4.5);

translate([10,67.5,0])
cylinder(5,4.5,4.5);

translate([10,77.5,0])
cylinder(5,4.5,4.5);

translate([10,87.5,0])
cylinder(5,4.5,4.5);

translate([10,97.5,0])
cylinder(5,4.5,4.5);
}
// End union 1 row of holes

translate([99,4.5,0])
union(){//one row of holes

translate([10,7.5,0])
cylinder(5,4.5,4.5);

translate([10,17.5,0])
cylinder(5,4.5,4.5);

translate([10,27.5,0])
cylinder(5,4.5,4.5);

translate([10,37.5,0])
cylinder(5,4.5,4.5);

translate([10,47.5,0])
cylinder(5,4.5,4.5);

translate([10,57.5,0])
cylinder(5,4.5,4.5);

translate([10,67.5,0])
cylinder(5,4.5,4.5);

translate([10,77.5,0])
cylinder(5,4.5,4.5);

translate([10,87.5,0])
cylinder(5,4.5,4.5);

translate([10,97.5,0])
cylinder(5,4.5,4.5);
}
// End union 1 row of holes
translate([108,-0.5,0])
union(){//one row of holes
translate([10,7.5,0])
cylinder(5,4.5,4.5);

translate([10,17.5,0])
cylinder(5,4.5,4.5);

translate([10,27.5,0])
cylinder(5,4.5,4.5);

translate([10,37.5,0])
cylinder(5,4.5,4.5);

translate([10,47.5,0])
cylinder(5,4.5,4.5);

translate([10,57.5,0])
cylinder(5,4.5,4.5);

translate([10,67.5,0])
cylinder(5,4.5,4.5);

translate([10,77.5,0])
cylinder(5,4.5,4.5);

translate([10,87.5,0])
cylinder(5,4.5,4.5);

translate([10,97.5,0])
cylinder(5,4.5,4.5);
}
// End union 1 row of holes

translate([117,4.5,0])
union(){//one row of holes
translate([10,7.5,0])
cylinder(5,4.5,4.5);

translate([10,17.5,0])
cylinder(5,4.5,4.5);

translate([10,27.5,0])
cylinder(5,4.5,4.5);

translate([10,37.5,0])
cylinder(5,4.5,4.5);

translate([10,47.5,0])
cylinder(5,4.5,4.5);

translate([10,57.5,0])
cylinder(5,4.5,4.5);

translate([10,67.5,0])
cylinder(5,4.5,4.5);

translate([10,77.5,0])
cylinder(5,4.5,4.5);

translate([10,87.5,0])
cylinder(5,4.5,4.5);

translate([10,97.5,0])
cylinder(5,4.5,4.5);
}
// End union 1 row of holes

translate([126,-0.5,0])
union(){//one row of holes
translate([10,7.5,0])
cylinder(5,4.5,4.5);

translate([10,17.5,0])
cylinder(5,4.5,4.5);

translate([10,27.5,0])
cylinder(5,4.5,4.5);

translate([10,37.5,0])
cylinder(5,4.5,4.5);

translate([10,47.5,0])
cylinder(5,4.5,4.5);

translate([10,57.5,0])
cylinder(5,4.5,4.5);

translate([10,67.5,0])
cylinder(5,4.5,4.5);

translate([10,77.5,0])
cylinder(5,4.5,4.5);

translate([10,87.5,0])
cylinder(5,4.5,4.5);

translate([10,97.5,0])
cylinder(5,4.5,4.5);
}
// End union 1 row of holes

translate([135,4.5,0])
union(){//one row of holes
translate([10,7.5,0])
cylinder(5,4.5,4.5);

translate([10,17.5,0])
cylinder(5,4.5,4.5);

translate([10,27.5,0])
cylinder(5,4.5,4.5);

translate([10,37.5,0])
cylinder(5,4.5,4.5);

translate([10,47.5,0])
cylinder(5,4.5,4.5);

translate([10,57.5,0])
cylinder(5,4.5,4.5);

translate([10,67.5,0])
cylinder(5,4.5,4.5);

translate([10,77.5,0])
cylinder(5,4.5,4.5);

translate([10,87.5,0])
cylinder(5,4.5,4.5);

translate([10,97.5,0])
cylinder(5,4.5,4.5);
}
// End union 1 row of holes

*translate([144,-0.5,0])
union(){//one row of holes
translate([10,7.5,0])
cylinder(5,4.5,4.5);

translate([10,17.5,0])
cylinder(5,4.5,4.5);

translate([10,27.5,0])
cylinder(5,4.5,4.5);

translate([10,37.5,0])
cylinder(5,4.5,4.5);

translate([10,47.5,0])
cylinder(5,4.5,4.5);

translate([10,57.5,0])
cylinder(5,4.5,4.5);

translate([10,67.5,0])
cylinder(5,4.5,4.5);

translate([10,77.5,0])
cylinder(5,4.5,4.5);

translate([10,87.5,0])
cylinder(5,4.5,4.5);

translate([10,97.5,0])
cylinder(5,4.5,4.5);
}
// End union 1 row of holes











}
// End union making up to 150 holes (9mm optimised) in bottom plate

translate([-2,0,0])
union(){//  Making fewer holes for use with fan (9mm optimised) in bottom plate

*translate([0,-0.5,0])
union(){//one row of holes
translate([10,7.5,0])
cylinder(5,4.5,4.5);

translate([10,17.5,0])
cylinder(5,4.5,4.5);

translate([10,27.5,0])
cylinder(5,4.5,4.5);

translate([10,37.5,0])
cylinder(5,4.5,4.5);

translate([10,47.5,0])
cylinder(5,4.5,4.5);

translate([10,57.5,0])
cylinder(5,4.5,4.5);

translate([10,67.5,0])
cylinder(5,4.5,4.5);

translate([10,77.5,0])
cylinder(5,4.5,4.5);

translate([10,87.5,0])
cylinder(5,4.5,4.5);

translate([10,97.5,0])
cylinder(5,4.5,4.5);
}
// End union 1 row of holes

translate([9,4.5,0])
union(){//one row of holes
translate([10,7.5,0])
cylinder(5,4.5,4.5);

translate([10,17.5,0])
cylinder(5,4.5,4.5);

translate([10,27.5,0])
cylinder(5,4.5,4.5);

*translate([10,37.5,0])
cylinder(5,4.5,4.5);

*translate([10,47.5,0])
cylinder(5,4.5,4.5);

*translate([10,57.5,0])
cylinder(5,4.5,4.5);

*translate([10,67.5,0])
cylinder(5,4.5,4.5);

translate([10,77.5,0])
cylinder(5,4.5,4.5);

translate([10,87.5,0])
cylinder(5,4.5,4.5);

*translate([10,97.5,0])
cylinder(5,4.5,4.5);
}
// End union 1 row of holes

translate([18,-0.5,0])
union(){//one row of holes
translate([10,7.5,0])
cylinder(5,4.5,4.5);

translate([10,17.5,0])
cylinder(5,4.5,4.5);

translate([10,27.5,0])
cylinder(5,4.5,4.5);

*translate([10,37.5,0])
cylinder(5,4.5,4.5);

*translate([10,47.5,0])
cylinder(5,4.5,4.5);

*translate([10,57.5,0])
cylinder(5,4.5,4.5);

*translate([10,67.5,0])
cylinder(5,4.5,4.5);

*translate([10,77.5,0])
cylinder(5,4.5,4.5);

translate([10,87.5,0])
cylinder(5,4.5,4.5);

translate([10,97.5,0])
cylinder(5,4.5,4.5);
}
// End union 1 row of holes

translate([27,4.5,0])
union(){//one row of holes
translate([10,7.5,0])
cylinder(5,4.5,4.5);

translate([10,17.5,0])
cylinder(5,4.5,4.5);

*translate([10,27.5,0])
cylinder(5,4.5,4.5);

*translate([10,37.5,0])
cylinder(5,4.5,4.5);

*translate([10,47.5,0])
cylinder(5,4.5,4.5);

*translate([10,57.5,0])
cylinder(5,4.5,4.5);

*translate([10,67.5,0])
cylinder(5,4.5,4.5);

*translate([10,77.5,0])
cylinder(5,4.5,4.5);

translate([10,87.5,0])
cylinder(5,4.5,4.5);

translate([10,97.5,0])
cylinder(5,4.5,4.5);
}
// End union 1 row of holes

translate([36,-0.5,0])
union(){//one row of holes
translate([10,7.5,0])
cylinder(5,4.5,4.5);

translate([10,17.5,0])
cylinder(5,4.5,4.5);

*translate([10,27.5,0])
cylinder(5,4.5,4.5);

*translate([10,37.5,0])
cylinder(5,4.5,4.5);

*translate([10,47.5,0])
cylinder(5,4.5,4.5);

*translate([10,57.5,0])
cylinder(5,4.5,4.5);

*translate([10,67.5,0])
cylinder(5,4.5,4.5);

*translate([10,77.5,0])
cylinder(5,4.5,4.5);

translate([10,87.5,0])
cylinder(5,4.5,4.5);

translate([10,97.5,0])
cylinder(5,4.5,4.5);
}
// End union 1 row of holes

translate([45,4.5,0])
union(){//one row of holes
translate([10,7.5,0])
cylinder(5,4.5,4.5);

translate([10,17.5,0])
cylinder(5,4.5,4.5);

*translate([10,27.5,0])
cylinder(5,4.5,4.5);

*translate([10,37.5,0])
cylinder(5,4.5,4.5);

*translate([10,47.5,0])
cylinder(5,4.5,4.5);

*translate([10,57.5,0])
cylinder(5,4.5,4.5);

*translate([10,67.5,0])
cylinder(5,4.5,4.5);

*translate([10,77.5,0])
cylinder(5,4.5,4.5);

translate([10,87.5,0])
cylinder(5,4.5,4.5);

translate([10,97.5,0])
cylinder(5,4.5,4.5);
}
// End union 1 row of holes

translate([54,-0.5,0])
union(){//one row of holes
translate([10,7.5,0])
cylinder(5,4.5,4.5);

translate([10,17.5,0])
cylinder(5,4.5,4.5);

translate([10,27.5,0])
cylinder(5,4.5,4.5);

*translate([10,37.5,0])
cylinder(5,4.5,4.5);

*translate([10,47.5,0])
cylinder(5,4.5,4.5);

*translate([10,57.5,0])
cylinder(5,4.5,4.5);

*translate([10,67.5,0])
cylinder(5,4.5,4.5);

*translate([10,77.5,0])
cylinder(5,4.5,4.5);

translate([10,87.5,0])
cylinder(5,4.5,4.5);

translate([10,97.5,0])
cylinder(5,4.5,4.5);
}
// End union 1 row of holes

translate([63,4.5,0])
union(){//one row of holes
translate([10,7.5,0])
cylinder(5,4.5,4.5);

translate([10,17.5,0])
cylinder(5,4.5,4.5);

translate([10,27.5,0])
cylinder(5,4.5,4.5);

translate([10,37.5,0])
cylinder(5,4.5,4.5);

translate([10,47.5,0])
cylinder(5,4.5,4.5);

translate([10,57.5,0])
cylinder(5,4.5,4.5);

translate([10,67.5,0])
cylinder(5,4.5,4.5);

translate([10,77.5,0])
cylinder(5,4.5,4.5);

translate([10,87.5,0])
cylinder(5,4.5,4.5);

translate([10,97.5,0])
cylinder(5,4.5,4.5);
}
// End union 1 row of holes

translate([72,-0.5,0])
union(){//one row of holes
translate([10,7.5,0])
cylinder(5,4.5,4.5);

translate([10,17.5,0])
cylinder(5,4.5,4.5);

translate([10,27.5,0])
cylinder(5,4.5,4.5);

translate([10,37.5,0])
cylinder(5,4.5,4.5);

translate([10,47.5,0])
cylinder(5,4.5,4.5);

translate([10,57.5,0])
cylinder(5,4.5,4.5);

translate([10,67.5,0])
cylinder(5,4.5,4.5);

translate([10,77.5,0])
cylinder(5,4.5,4.5);

translate([10,87.5,0])
cylinder(5,4.5,4.5);

translate([10,97.5,0])
cylinder(5,4.5,4.5);
}
// End union 1 row of holes

translate([81,4.5,0])
union(){//one row of holes
translate([10,7.5,0])
cylinder(5,4.5,4.5);

translate([10,17.5,0])
cylinder(5,4.5,4.5);

translate([10,27.5,0])
cylinder(5,4.5,4.5);

translate([10,37.5,0])
cylinder(5,4.5,4.5);

translate([10,47.5,0])
cylinder(5,4.5,4.5);

translate([10,57.5,0])
cylinder(5,4.5,4.5);

translate([10,67.5,0])
cylinder(5,4.5,4.5);

translate([10,77.5,0])
cylinder(5,4.5,4.5);

translate([10,87.5,0])
cylinder(5,4.5,4.5);

translate([10,97.5,0])
cylinder(5,4.5,4.5);
}
// End union 1 row of holes

translate([90,-0.5,0])
union(){//one row of holes
translate([10,7.5,0])
cylinder(5,4.5,4.5);

translate([10,17.5,0])
cylinder(5,4.5,4.5);

translate([10,27.5,0])
cylinder(5,4.5,4.5);

translate([10,37.5,0])
cylinder(5,4.5,4.5);

translate([10,47.5,0])
cylinder(5,4.5,4.5);

translate([10,57.5,0])
cylinder(5,4.5,4.5);

translate([10,67.5,0])
cylinder(5,4.5,4.5);

translate([10,77.5,0])
cylinder(5,4.5,4.5);

translate([10,87.5,0])
cylinder(5,4.5,4.5);

translate([10,97.5,0])
cylinder(5,4.5,4.5);
}
// End union 1 row of holes

translate([99,4.5,0])
union(){//one row of holes

translate([10,7.5,0])
cylinder(5,4.5,4.5);

translate([10,17.5,0])
cylinder(5,4.5,4.5);

translate([10,27.5,0])
cylinder(5,4.5,4.5);

translate([10,37.5,0])
cylinder(5,4.5,4.5);

translate([10,47.5,0])
cylinder(5,4.5,4.5);

translate([10,57.5,0])
cylinder(5,4.5,4.5);

translate([10,67.5,0])
cylinder(5,4.5,4.5);

translate([10,77.5,0])
cylinder(5,4.5,4.5);

translate([10,87.5,0])
cylinder(5,4.5,4.5);

translate([10,97.5,0])
cylinder(5,4.5,4.5);
}
// End union 1 row of holes
translate([108,-0.5,0])
union(){//one row of holes
translate([10,7.5,0])
cylinder(5,4.5,4.5);

translate([10,17.5,0])
cylinder(5,4.5,4.5);

translate([10,27.5,0])
cylinder(5,4.5,4.5);

translate([10,37.5,0])
cylinder(5,4.5,4.5);

translate([10,47.5,0])
cylinder(5,4.5,4.5);

translate([10,57.5,0])
cylinder(5,4.5,4.5);

translate([10,67.5,0])
cylinder(5,4.5,4.5);

translate([10,77.5,0])
cylinder(5,4.5,4.5);

translate([10,87.5,0])
cylinder(5,4.5,4.5);

translate([10,97.5,0])
cylinder(5,4.5,4.5);
}
// End union 1 row of holes

translate([117,4.5,0])
union(){//one row of holes
translate([10,7.5,0])
cylinder(5,4.5,4.5);

translate([10,17.5,0])
cylinder(5,4.5,4.5);

translate([10,27.5,0])
cylinder(5,4.5,4.5);

translate([10,37.5,0])
cylinder(5,4.5,4.5);

translate([10,47.5,0])
cylinder(5,4.5,4.5);

translate([10,57.5,0])
cylinder(5,4.5,4.5);

translate([10,67.5,0])
cylinder(5,4.5,4.5);

translate([10,77.5,0])
cylinder(5,4.5,4.5);

translate([10,87.5,0])
cylinder(5,4.5,4.5);

translate([10,97.5,0])
cylinder(5,4.5,4.5);
}
// End union 1 row of holes

translate([126,-0.5,0])
union(){//one row of holes
translate([10,7.5,0])
cylinder(5,4.5,4.5);

translate([10,17.5,0])
cylinder(5,4.5,4.5);

translate([10,27.5,0])
cylinder(5,4.5,4.5);

translate([10,37.5,0])
cylinder(5,4.5,4.5);

translate([10,47.5,0])
cylinder(5,4.5,4.5);

translate([10,57.5,0])
cylinder(5,4.5,4.5);

translate([10,67.5,0])
cylinder(5,4.5,4.5);

translate([10,77.5,0])
cylinder(5,4.5,4.5);

translate([10,87.5,0])
cylinder(5,4.5,4.5);

translate([10,97.5,0])
cylinder(5,4.5,4.5);
}
// End union 1 row of holes

translate([135,4.5,0])
union(){//one row of holes
translate([10,7.5,0])
cylinder(5,4.5,4.5);

translate([10,17.5,0])
cylinder(5,4.5,4.5);

translate([10,27.5,0])
cylinder(5,4.5,4.5);

translate([10,37.5,0])
cylinder(5,4.5,4.5);

translate([10,47.5,0])
cylinder(5,4.5,4.5);

translate([10,57.5,0])
cylinder(5,4.5,4.5);

translate([10,67.5,0])
cylinder(5,4.5,4.5);

translate([10,77.5,0])
cylinder(5,4.5,4.5);

translate([10,87.5,0])
cylinder(5,4.5,4.5);

*translate([10,97.5,0])
cylinder(5,4.5,4.5);
}
// End union 1 row of holes

*translate([144,-0.5,0])
union(){//one row of holes
translate([10,7.5,0])
cylinder(5,4.5,4.5);

translate([10,17.5,0])
cylinder(5,4.5,4.5);

translate([10,27.5,0])
cylinder(5,4.5,4.5);

translate([10,37.5,0])
cylinder(5,4.5,4.5);

translate([10,47.5,0])
cylinder(5,4.5,4.5);

translate([10,57.5,0])
cylinder(5,4.5,4.5);

translate([10,67.5,0])
cylinder(5,4.5,4.5);

translate([10,77.5,0])
cylinder(5,4.5,4.5);

translate([10,87.5,0])
cylinder(5,4.5,4.5);

translate([10,97.5,0])
cylinder(5,4.5,4.5);
}
// End union 1 row of holes

}
// End union making fewer holes for use with fan (9mm optimised) in bottom plate


union(){// Fan mount holes - disable for fan-less cover
translate([40.75,55.75,0])
cylinder(h=10, r=25);// Big hole for fan

translate([15.75,30.75,0])
cylinder(h=10, r=2.2);

translate([15.75,30.75,1])
cylinder(h=10, r=5);// recess for rubber mount

translate([15.75,80.75,0])
cylinder(h=10, r=2.2);

translate([15.75,80.75,1])
cylinder(h=10, r=5);// recess for rubber mount

translate([65.75,30.75,0])
cylinder(h=10, r=2.2);

translate([65.75,30.75,1])
cylinder(h=10, r=5);// recess for rubber mount

translate([65.75,80.75,0])
cylinder(h=10, r=2.2);

translate([65.75,80.75,1])
cylinder(h=10, r=5);// recess for rubber mount

}
// End union fan mount holes

// 131.6mm x 100.5mm inner
translate([14.5,4.5,0.4])
cube([131,100,2.5]);// thinning out the perforated area


}
// End difference remove bits from cube above zero line



// Adding fan mount reinforcements
difference(){// making mount holes in reinforcements
union(){// the reinforcing blocks to make part of the mesh thicker than 2 print layers = 0.4mm
translate([10,25,0])
cube([11.5,11.5,2.5]);

translate([10,75,0])
cube([11.5,11.5,2.5]);

translate([60,0,0])// central reinforcing block
cube([11.5,109,2.5]);
}
// End union reinforcing blocks

union(){// Fan mount holes
translate([40.75,55.75,0])
cylinder(h=10, r=25);// Big hole for fan

translate([15.75,30.75,0])
cylinder(h=10, r=2.2);

translate([15.75,30.75,1])
cylinder(h=10, r=5);// recess for rubber mount

translate([15.75,80.75,0])
cylinder(h=10, r=2.2);

translate([15.75,80.75,1])
cylinder(h=10, r=5);// recess for rubber mount

translate([65.75,30.75,0])
cylinder(h=10, r=2.2);

translate([65.75,30.75,1])
cylinder(h=10, r=5);// recess for rubber mount

translate([65.75,80.75,0])
cylinder(h=10, r=2.2);

translate([65.75,80.75,1])
cylinder(h=10, r=5);// recess for rubber mount

}
// End union fan mount holes

}
// End difference making mount holes for fan

}
// End of union all of Main PArt of Polli bottom cover


union(){// Legs for Polli Bottom Cover -DISABLE (*) TO RENDER BOTTOM COVER

union(){// Pegs
// pegs are 4.8mm diameter for 5mm diameter holes
translate([12,3.5,0])
cylinder(h=2.5,r=2.4);

translate([3.5,12,0])
cylinder(h=2.5,r=2.4);

translate([147,3.5,0])
cylinder(h=2.5,r=2.4);

translate([157,13,0])
cylinder(h=2.5,r=2.4);

translate([147,105.5,0])
cylinder(h=2.5,r=2.4);

translate([157,96,0])
cylinder(h=2.5,r=2.4);


translate([12,105.5,0])
cylinder(h=2.5,r=2.4);

translate([3.5,96,0])
cylinder(h=2.5,r=2.4);
}
// End union pegs

translate([0,0,-45])
difference(){// Making 1 leg

cube([20,20,45]);

translate([7,7,0])
cube([20,20,45]);

}
// End difference making first

translate([140.5,0,-45])
difference(){// Making 1 leg

cube([20,20,45]);

translate([-7,7,0])
cube([20,20,45]);

}
// End difference making 1 leg

translate([140.5,89,-45])
difference(){// Making 1 leg

cube([20,20,45]);

translate([-7,-7,0])
cube([20,20,45]);

}
// End difference making 1 leg

translate([0,89,-45])
difference(){// Making 1 leg

cube([20,20,45]);

translate([7,-7,0])
cube([20,20,45]);

}
// End difference making 1 leg

union(){// leg connectors
translate([0,0,-45])
cube([140.5,7,0.6]);

translate([0,102,-45])
cube([140.5,7,0.6]);

translate([0,0,-45])
cube([7,89,0.6]);

translate([153.5,0,-45])
cube([7,89,0.6]);

}
// END union leg connectors

}
// End of union Legs of Polli Bottom Cover

member
Activity: 100
Merit: 29
Is there an API or some way for you to stop or start the mining on the futurebit?

My Futurebit is powered by my solar panels and batteries but they are not enough to power the Futurebit all day if it's mining the whole time. Therefore, I was thinking of creating a python script that can query my inverter to see when battery state of charge reaches a certain level and then stop the Futurebit from mining and not start it again until the state of charge rises to a certain level.
Don't think there is an API for that, but you could always kill the miner process and fire it up again via script.
newbie
Activity: 11
Merit: 1
Is there an API or some way for you to stop or start the mining on the futurebit?

My Futurebit is powered by my solar panels and batteries but they are not enough to power the Futurebit all day if it's mining the whole time. Therefore, I was thinking of creating a python script that can query my inverter to see when battery state of charge reaches a certain level and then stop the Futurebit from mining and not start it again until the state of charge rises to a certain level.
full member
Activity: 933
Merit: 175
What happens during a grid power outage?
Not great, because microSD cards are susceptible to corruption; especially when power is cut like that. I've had issues with Raspberry Pis because of that. When the power comes back, if there is no corruption, it will just boot back up and start the services as usual.
Worst-case, you reflash the microSD and set it up again.

Cannot reproduce this. I have Raspberry Pi 1 (original old one), with random SD card, USB bluetooth dongle, serving my car as phone bluetooth to audio jack adapter, to provide my car with bluetooth music. Raspberry turns on when car starts, and abruptly shuts down when car is stopped. That was like 1000s unclean shutdowns already and Raspberry remains 100% functional.
Linux has got this covered, RaspPi and Orange Pi are utilizing Ext4 journaling filesystem which handles unclean shutdowns very well. Your must be some edge case.
hero member
Activity: 882
Merit: 5834
not your keys, not your coins!
How can I shut down the Apollo BTC without connecting the HDMI monitor?
Plug in its IP address in a browser on another device on the same network, and access the web interface. It has a shutdown option somewhere up top, if I remember correctly.

What happens during a grid power outage?
Not great, because microSD cards are susceptible to corruption; especially when power is cut like that. I've had issues with Raspberry Pis because of that. When the power comes back, if there is no corruption, it will just boot back up and start the services as usual.
Worst-case, you reflash the microSD and set it up again.

How many power outages can the Apollo take before shutting down the fan in a hot state fries something?
I don't think anyone can give you an exact number for this.. Grin Consumer electronics are usually not tested / made for 'taking X power outages'; that's what uninterrupted power supplies are made (and rated) for.

The newbies section is so full of interesting links, I cannot concentrate on finding the answer to how I can post a picture.
GUIDELINE ON POSTING IMAGES (WITH SIZE ADJUSTMENTS), HYPERLINKS
[...]

Please, also consider reading: https://bitcointalksearch.org/topic/unofficial-list-of-official-bitcointalkorg-rules-guidelines-faq-703657 (rule 12, in particular)
full member
Activity: 933
Merit: 175

I am about to start designing and printing a bottom cover for the Apollo BTC.



Interesting.
member
Activity: 203
Merit: 37
I am about to start designing and printing a bottom cover for the Apollo BTC.

The newbies section is so full of interesting links, I cannot concentrate on finding the answer to how I can post a picture.

Anyway, I'm quite certain that I have landed in the right place here for now and stuff will work itself out.

My OpenScad skills are not sophisticated, but I am persistent and use repetition when required to get the result I want, eventually.
https://openscad.org/

So until I figure out more visually pleasing ways to communicate here, I shall post the OpenScad code for rendering and 3D printing a bottom cover for the Apollo BTC.

This is the first attempt, it takes a bit of paint off the Apollo, but warranties fade as soon as I receive an interesting thingamabob, then they vanish.

So don't print this just yet... Grin

But seriously, I feel so much better when picking up my 'Polli' since I have installed the bottom cover to stop me from putting my paws through it's squishy innards!

This bottom cover needs somewhat skilled application of hot melt glue after printing - not a finished product! And takes some paint off your precious.....

Paste the following in to OpenScad if interested:

Code:
$fn=30;


// 20221022 making Polli bottom cover

// dimensions:
// 155mm x 104mm outer
// 131.6mm x 100.5mm inner

// screwless press fit design

// Rear USB and ETH connectors: Continuous cutout 5mm from bottom and side and stretching to 55mm from side
// Front LED light starts 17mm from bottom
// make 15mm high from bottom with cutouts for connectors
// side connectors and antenna hole cutout: 20mm to 90mm from rear side edge and 4mm from bottom (included // 6VDC hole: 23.6mm from side edge;' 10.9mm wide; 7.7mm high; 5.2mm from bottom edge)

// purpose: Protection from physical damage
// better air entry
// Wifi antenna outside


union(){// All of Polli bottom cover

difference(){// remove bits from cube above zero line

cube([160, 109, 17.5]);//the part above ground level that slides onto the original housing; adding 2.5mm each side for wall thickness

translate([2.5,2.5,2.5])
cube([155, 104, 17.5]);// removing the space where the Polli body will be


// side connectors and antenna hole cutout: 20mm to 90mm from rear side edge and 4mm from bottom (included // 6VDC hole: 23.6mm from side edge;' 10.9mm wide; 7.7mm high; 5.2mm from bottom edge)
translate([67.5,-47.5,6.5])
cube([70, 50, 17.5]);//Cutout for side connectors and antenna


// Rear USB and ETH connectors: Continuous cutout 5mm from bottom and side and stretching to 55mm from side
translate([110,7.5,7.5])
cube([50, 50, 17.5]);//Cutout for rear USB and ETH connectors

union(){// making lots of holes (9mm optimised) in bottom plate

translate([0,-0.5,0])
union(){//one row of holes
translate([10,7.5,0])
cylinder(5,4.5,4.5);

translate([10,17.5,0])
cylinder(5,4.5,4.5);

translate([10,27.5,0])
cylinder(5,4.5,4.5);

translate([10,37.5,0])
cylinder(5,4.5,4.5);

translate([10,47.5,0])
cylinder(5,4.5,4.5);

translate([10,57.5,0])
cylinder(5,4.5,4.5);

translate([10,67.5,0])
cylinder(5,4.5,4.5);

translate([10,77.5,0])
cylinder(5,4.5,4.5);

translate([10,87.5,0])
cylinder(5,4.5,4.5);

translate([10,97.5,0])
cylinder(5,4.5,4.5);
}
// End union 1 row of holes

translate([9,4.5,0])
union(){//one row of holes
translate([10,7.5,0])
cylinder(5,4.5,4.5);

translate([10,17.5,0])
cylinder(5,4.5,4.5);

translate([10,27.5,0])
cylinder(5,4.5,4.5);

translate([10,37.5,0])
cylinder(5,4.5,4.5);

translate([10,47.5,0])
cylinder(5,4.5,4.5);

translate([10,57.5,0])
cylinder(5,4.5,4.5);

translate([10,67.5,0])
cylinder(5,4.5,4.5);

translate([10,77.5,0])
cylinder(5,4.5,4.5);

translate([10,87.5,0])
cylinder(5,4.5,4.5);

translate([10,97.5,0])
cylinder(5,4.5,4.5);
}
// End union 1 row of holes

translate([18,-0.5,0])
union(){//one row of holes
translate([10,7.5,0])
cylinder(5,4.5,4.5);

translate([10,17.5,0])
cylinder(5,4.5,4.5);

translate([10,27.5,0])
cylinder(5,4.5,4.5);

translate([10,37.5,0])
cylinder(5,4.5,4.5);

translate([10,47.5,0])
cylinder(5,4.5,4.5);

translate([10,57.5,0])
cylinder(5,4.5,4.5);

translate([10,67.5,0])
cylinder(5,4.5,4.5);

translate([10,77.5,0])
cylinder(5,4.5,4.5);

translate([10,87.5,0])
cylinder(5,4.5,4.5);

translate([10,97.5,0])
cylinder(5,4.5,4.5);
}
// End union 1 row of holes

translate([27,4.5,0])
union(){//one row of holes
translate([10,7.5,0])
cylinder(5,4.5,4.5);

translate([10,17.5,0])
cylinder(5,4.5,4.5);

translate([10,27.5,0])
cylinder(5,4.5,4.5);

translate([10,37.5,0])
cylinder(5,4.5,4.5);

translate([10,47.5,0])
cylinder(5,4.5,4.5);

translate([10,57.5,0])
cylinder(5,4.5,4.5);

translate([10,67.5,0])
cylinder(5,4.5,4.5);

translate([10,77.5,0])
cylinder(5,4.5,4.5);

translate([10,87.5,0])
cylinder(5,4.5,4.5);

translate([10,97.5,0])
cylinder(5,4.5,4.5);
}
// End union 1 row of holes

translate([36,-0.5,0])
union(){//one row of holes
translate([10,7.5,0])
cylinder(5,4.5,4.5);

translate([10,17.5,0])
cylinder(5,4.5,4.5);

translate([10,27.5,0])
cylinder(5,4.5,4.5);

translate([10,37.5,0])
cylinder(5,4.5,4.5);

translate([10,47.5,0])
cylinder(5,4.5,4.5);

translate([10,57.5,0])
cylinder(5,4.5,4.5);

translate([10,67.5,0])
cylinder(5,4.5,4.5);

translate([10,77.5,0])
cylinder(5,4.5,4.5);

translate([10,87.5,0])
cylinder(5,4.5,4.5);

translate([10,97.5,0])
cylinder(5,4.5,4.5);
}
// End union 1 row of holes

translate([45,4.5,0])
union(){//one row of holes
translate([10,7.5,0])
cylinder(5,4.5,4.5);

translate([10,17.5,0])
cylinder(5,4.5,4.5);

translate([10,27.5,0])
cylinder(5,4.5,4.5);

translate([10,37.5,0])
cylinder(5,4.5,4.5);

translate([10,47.5,0])
cylinder(5,4.5,4.5);

translate([10,57.5,0])
cylinder(5,4.5,4.5);

translate([10,67.5,0])
cylinder(5,4.5,4.5);

translate([10,77.5,0])
cylinder(5,4.5,4.5);

translate([10,87.5,0])
cylinder(5,4.5,4.5);

translate([10,97.5,0])
cylinder(5,4.5,4.5);
}
// End union 1 row of holes

translate([54,-0.5,0])
union(){//one row of holes
translate([10,7.5,0])
cylinder(5,4.5,4.5);

translate([10,17.5,0])
cylinder(5,4.5,4.5);

translate([10,27.5,0])
cylinder(5,4.5,4.5);

translate([10,37.5,0])
cylinder(5,4.5,4.5);

translate([10,47.5,0])
cylinder(5,4.5,4.5);

translate([10,57.5,0])
cylinder(5,4.5,4.5);

translate([10,67.5,0])
cylinder(5,4.5,4.5);

translate([10,77.5,0])
cylinder(5,4.5,4.5);

translate([10,87.5,0])
cylinder(5,4.5,4.5);

translate([10,97.5,0])
cylinder(5,4.5,4.5);
}
// End union 1 row of holes

translate([63,4.5,0])
union(){//one row of holes
translate([10,7.5,0])
cylinder(5,4.5,4.5);

translate([10,17.5,0])
cylinder(5,4.5,4.5);

translate([10,27.5,0])
cylinder(5,4.5,4.5);

translate([10,37.5,0])
cylinder(5,4.5,4.5);

translate([10,47.5,0])
cylinder(5,4.5,4.5);

translate([10,57.5,0])
cylinder(5,4.5,4.5);

translate([10,67.5,0])
cylinder(5,4.5,4.5);

translate([10,77.5,0])
cylinder(5,4.5,4.5);

translate([10,87.5,0])
cylinder(5,4.5,4.5);

translate([10,97.5,0])
cylinder(5,4.5,4.5);
}
// End union 1 row of holes

translate([72,-0.5,0])
union(){//one row of holes
translate([10,7.5,0])
cylinder(5,4.5,4.5);

translate([10,17.5,0])
cylinder(5,4.5,4.5);

translate([10,27.5,0])
cylinder(5,4.5,4.5);

translate([10,37.5,0])
cylinder(5,4.5,4.5);

translate([10,47.5,0])
cylinder(5,4.5,4.5);

translate([10,57.5,0])
cylinder(5,4.5,4.5);

translate([10,67.5,0])
cylinder(5,4.5,4.5);

translate([10,77.5,0])
cylinder(5,4.5,4.5);

translate([10,87.5,0])
cylinder(5,4.5,4.5);

translate([10,97.5,0])
cylinder(5,4.5,4.5);
}
// End union 1 row of holes

translate([81,4.5,0])
union(){//one row of holes
translate([10,7.5,0])
cylinder(5,4.5,4.5);

translate([10,17.5,0])
cylinder(5,4.5,4.5);

translate([10,27.5,0])
cylinder(5,4.5,4.5);

translate([10,37.5,0])
cylinder(5,4.5,4.5);

translate([10,47.5,0])
cylinder(5,4.5,4.5);

translate([10,57.5,0])
cylinder(5,4.5,4.5);

translate([10,67.5,0])
cylinder(5,4.5,4.5);

translate([10,77.5,0])
cylinder(5,4.5,4.5);

translate([10,87.5,0])
cylinder(5,4.5,4.5);

translate([10,97.5,0])
cylinder(5,4.5,4.5);
}
// End union 1 row of holes

translate([90,-0.5,0])
union(){//one row of holes
translate([10,7.5,0])
cylinder(5,4.5,4.5);

translate([10,17.5,0])
cylinder(5,4.5,4.5);

translate([10,27.5,0])
cylinder(5,4.5,4.5);

translate([10,37.5,0])
cylinder(5,4.5,4.5);

translate([10,47.5,0])
cylinder(5,4.5,4.5);

translate([10,57.5,0])
cylinder(5,4.5,4.5);

translate([10,67.5,0])
cylinder(5,4.5,4.5);

translate([10,77.5,0])
cylinder(5,4.5,4.5);

translate([10,87.5,0])
cylinder(5,4.5,4.5);

translate([10,97.5,0])
cylinder(5,4.5,4.5);
}
// End union 1 row of holes

translate([99,4.5,0])
union(){//one row of holes

translate([10,7.5,0])
cylinder(5,4.5,4.5);

translate([10,17.5,0])
cylinder(5,4.5,4.5);

translate([10,27.5,0])
cylinder(5,4.5,4.5);

translate([10,37.5,0])
cylinder(5,4.5,4.5);

translate([10,47.5,0])
cylinder(5,4.5,4.5);

translate([10,57.5,0])
cylinder(5,4.5,4.5);

translate([10,67.5,0])
cylinder(5,4.5,4.5);

translate([10,77.5,0])
cylinder(5,4.5,4.5);

translate([10,87.5,0])
cylinder(5,4.5,4.5);

translate([10,97.5,0])
cylinder(5,4.5,4.5);
}
// End union 1 row of holes
translate([108,-0.5,0])
union(){//one row of holes
translate([10,7.5,0])
cylinder(5,4.5,4.5);

translate([10,17.5,0])
cylinder(5,4.5,4.5);

translate([10,27.5,0])
cylinder(5,4.5,4.5);

translate([10,37.5,0])
cylinder(5,4.5,4.5);

translate([10,47.5,0])
cylinder(5,4.5,4.5);

translate([10,57.5,0])
cylinder(5,4.5,4.5);

translate([10,67.5,0])
cylinder(5,4.5,4.5);

translate([10,77.5,0])
cylinder(5,4.5,4.5);

translate([10,87.5,0])
cylinder(5,4.5,4.5);

translate([10,97.5,0])
cylinder(5,4.5,4.5);
}
// End union 1 row of holes

translate([117,4.5,0])
union(){//one row of holes
translate([10,7.5,0])
cylinder(5,4.5,4.5);

translate([10,17.5,0])
cylinder(5,4.5,4.5);

translate([10,27.5,0])
cylinder(5,4.5,4.5);

translate([10,37.5,0])
cylinder(5,4.5,4.5);

translate([10,47.5,0])
cylinder(5,4.5,4.5);

translate([10,57.5,0])
cylinder(5,4.5,4.5);

translate([10,67.5,0])
cylinder(5,4.5,4.5);

translate([10,77.5,0])
cylinder(5,4.5,4.5);

translate([10,87.5,0])
cylinder(5,4.5,4.5);

translate([10,97.5,0])
cylinder(5,4.5,4.5);
}
// End union 1 row of holes

translate([126,-0.5,0])
union(){//one row of holes
translate([10,7.5,0])
cylinder(5,4.5,4.5);

translate([10,17.5,0])
cylinder(5,4.5,4.5);

translate([10,27.5,0])
cylinder(5,4.5,4.5);

translate([10,37.5,0])
cylinder(5,4.5,4.5);

translate([10,47.5,0])
cylinder(5,4.5,4.5);

translate([10,57.5,0])
cylinder(5,4.5,4.5);

translate([10,67.5,0])
cylinder(5,4.5,4.5);

translate([10,77.5,0])
cylinder(5,4.5,4.5);

translate([10,87.5,0])
cylinder(5,4.5,4.5);

translate([10,97.5,0])
cylinder(5,4.5,4.5);
}
// End union 1 row of holes

translate([135,4.5,0])
union(){//one row of holes
translate([10,7.5,0])
cylinder(5,4.5,4.5);

translate([10,17.5,0])
cylinder(5,4.5,4.5);

translate([10,27.5,0])
cylinder(5,4.5,4.5);

translate([10,37.5,0])
cylinder(5,4.5,4.5);

translate([10,47.5,0])
cylinder(5,4.5,4.5);

translate([10,57.5,0])
cylinder(5,4.5,4.5);

translate([10,67.5,0])
cylinder(5,4.5,4.5);

translate([10,77.5,0])
cylinder(5,4.5,4.5);

translate([10,87.5,0])
cylinder(5,4.5,4.5);

translate([10,97.5,0])
cylinder(5,4.5,4.5);
}
// End union 1 row of holes

translate([144,-0.5,0])
union(){//one row of holes
translate([10,7.5,0])
cylinder(5,4.5,4.5);

translate([10,17.5,0])
cylinder(5,4.5,4.5);

translate([10,27.5,0])
cylinder(5,4.5,4.5);

translate([10,37.5,0])
cylinder(5,4.5,4.5);

translate([10,47.5,0])
cylinder(5,4.5,4.5);

translate([10,57.5,0])
cylinder(5,4.5,4.5);

translate([10,67.5,0])
cylinder(5,4.5,4.5);

translate([10,77.5,0])
cylinder(5,4.5,4.5);

translate([10,87.5,0])
cylinder(5,4.5,4.5);

translate([10,97.5,0])
cylinder(5,4.5,4.5);
}
// End union 1 row of holes











}
// End union making up to 150 holes (9mm optimised) in bottom plate



// 131.6mm x 100.5mm inner
translate([14.5,4.5,0.4])
cube([131,100,2.5]);// thinning out the perforated area


}
// End difference remove bits from cube above sero line


}
// End of union all of Polli bottom cover
member
Activity: 203
Merit: 37
Could anyone point me to an updated (or better updating) chart of sats/Th/s?

I found one:
https://data.hashrateindex.com/chart/bitcoin-hashprice-index

Unfortunately it show that this source of pristine Sats is quickly dwindling away.  Sad
member
Activity: 203
Merit: 37
How can I shut down the Apollo BTC without connecting the HDMI monitor?

It will boot up and connect to WiFi and VPN automatically and reliably now, so I'm ready to put it somewhere other than near my workstation.

What happens during a grid power outage?

How many power outages can the Apollo take before shutting down the fan in a hot state fries something?
member
Activity: 203
Merit: 37
I am about to start designing and printing a bottom cover for the Apollo BTC.

I want to protect the fragile bits down there and improve air entry and maybe bring the WiFi antenna outside of the metal housing to improve reception.

Has this already been done? If so, maybe point me to it, that would be great.
member
Activity: 203
Merit: 37
These were roughly my numbers, as well. Looks fine.

Thank you!
hero member
Activity: 882
Merit: 5834
not your keys, not your coins!
Thank you for your answer, I did the updates. Problem now is the miner does not mine anymore. The node is running but the miner starts but does not hash and then shuts down
I am now looking to install electrs, however in your guide you say sometimes to log into bitcoin user. Is it necessary to do this step with the Apollo or can I just do everything with futurebit user
Does the issue persist? Have you tried rebooting after those updates?
You can replace my bitcoin user with futurebit, yes. Technically, in my setup, that user is less privileged so it's a little bit more secure, but it's still fine.

I run the latest Futurebit OS and when I run those commands to upgrade the miner stops working. I can only get it working again by reflashing the card.

I suppose it is possible to clone the SD card after it is working properly?

Is it possible to boot to USB on the Orange Pi and use Clonezilla to make a backup image of the SD card?

How do you get to the BIOS while it boots up?
Yes, just plug the microSD into a different computer and make an ISO of it, e.g. using the dd command.
These little SBCs don't have a graphical BIOS that you can boot into.

For now, my Apollo seems to be generating about 1000 Sats / day while mining on Turbo with very little downtime.
These were roughly my numbers, as well. Looks fine.
member
Activity: 203
Merit: 37
Could anyone point me to an updated (or better updating) chart of sats/Th/s?

As in : How many Sats did 1Th/s earn per day and how much today?

Similar to the static chart shown here:
https://minerdaily.com/2021/07/06/btc-miner-earnings-sats-versus-usd-per-terahash/

I want an easy way to assess if my Sats mined are in the right ballpark.

For now, my Apollo seems to be generating about 1000 Sats / day while mining on Turbo with very little downtime.
newbie
Activity: 53
Merit: 0
Does this also work with Ledger?
I did a little research and it looks like I need Satstacks for Ledger Live to connect to the node?
I don't use Ledger Live, but it seems that such a bridge is required, yes. You could also just use a better Bitcoin wallet software like Electrum or Sparrow and connect your Ledger to that software.

The main question I have is: Can I connect to the node from my desktop or do I always have to go directly on the miner's OS with screen, keyboard, mouse, ledger etc... to interact with the blockchain? Since the miner is not in the same room as my desktop that would be ideal.
First of all, you have a web GUI; so the miner dashboard that you get when connecting a screen to the Apollo, is also displayed by visiting the miner's IP from any browser in the same network.
To 'interact with the blockchain' in terms of querying blocks and stuff like that, indeed installing electrs is what's going to allow you to do that.

I do have another question concerning the Apollo, when I connected via SSH I saw the line [302 security updates available....]. Should I do the updates? I read that you should be careful on which updates you do because it can brick the miner.
If you run the latest Futurebit OS, you can do the updates via:
Code:
sudo apt update
sudo apt upgrade

Just don't do distro-upgrades like sudo apt dist-upgrade. Don't do that! Cheesy

I run the latest Futurebit OS and when I run those commands to upgrade the miner stops working. I can only get it working again by reflashing the card.

OK so it makes sense why my miner is not working anymore... Will have to reflash the card then.
So we are bound to leave those security updates to not update?

EDIT: Looks like after flashing the card the updates are not missing anymore. Seems like flashing the card with the new img is better than just updating through the Apollo web UI.
member
Activity: 203
Merit: 37
I run the latest Futurebit OS and when I run those commands to upgrade the miner stops working. I can only get it working again by reflashing the card.

I suppose it is possible to clone the SD card after it is working properly?

Is it possible to boot to USB on the Orange Pi and use Clonezilla to make a backup image of the SD card?

How do you get to the BIOS while it boots up?
newbie
Activity: 4
Merit: 0
Does this also work with Ledger?
I did a little research and it looks like I need Satstacks for Ledger Live to connect to the node?
I don't use Ledger Live, but it seems that such a bridge is required, yes. You could also just use a better Bitcoin wallet software like Electrum or Sparrow and connect your Ledger to that software.

The main question I have is: Can I connect to the node from my desktop or do I always have to go directly on the miner's OS with screen, keyboard, mouse, ledger etc... to interact with the blockchain? Since the miner is not in the same room as my desktop that would be ideal.
First of all, you have a web GUI; so the miner dashboard that you get when connecting a screen to the Apollo, is also displayed by visiting the miner's IP from any browser in the same network.
To 'interact with the blockchain' in terms of querying blocks and stuff like that, indeed installing electrs is what's going to allow you to do that.

I do have another question concerning the Apollo, when I connected via SSH I saw the line [302 security updates available....]. Should I do the updates? I read that you should be careful on which updates you do because it can brick the miner.
If you run the latest Futurebit OS, you can do the updates via:
Code:
sudo apt update
sudo apt upgrade

Just don't do distro-upgrades like sudo apt dist-upgrade. Don't do that! Cheesy

I run the latest Futurebit OS and when I run those commands to upgrade the miner stops working. I can only get it working again by reflashing the card.
newbie
Activity: 4
Merit: 0
Due to the instructions from futurebit

Quote
If you want to download the Bitcoin Core wallet (which is not installed by default for obvious reasons) you need to first shutdown the node via the dashboard menu FIRST, then startup Bitcoin Core UI. The Bitcoin core wallet can not run/share the blockchain data at the same time as the node is running. If you are setting up the wallet for the first time, make sure you select /media/nvme/Bitcoin as the default folder otherwise it will start to download the blockchain on your SD card which will cause you lots of headaches (will fix this with symlinks in an update)

I am a bit confused. BTC Core wallet can not run/share data at the same time as the node is running - is this only for the initial process or do I have to turn off the node each time I want to use BTC Core wallet for transactions?
member
Activity: 203
Merit: 37
My Apollo Node does not want to cooperate since I flashed a new 64GB SD card.
Everything else works fine, much better than with that old 16GB card I found lying around.
I'm not certain yet if the faster specs of the new SD card are making the difference, it could be due to something else as well.

However, the node is giving the following error message: There is a problem fetching system stats (Invalid params, response status code: 401)

The node seems to be downloading data from the internet (visible in System Monitor), but goes back to show the above error message after I click Start in the node dashboard. Please wait while node is starting up, followed by same error message a few minutes later. But download showing in System Monitor.

When I click Stop, then it says Node is shutting down , and the download of data in System monitor stops.

And in the Bitcoin>Blocks folder the number of e.g. blk00165.dat keeps increasing while the node is starting up.

I have rebooted the Apollo a few times and the issue persists.
Pages:
Jump to: