# Mining with a SBC

The following guide will show you how to compile a CPU miner (XMRig) for SBCs like the Raspberry Pi.

If you're using a RPi3 or RPi3B+, check out [this guide](https://github.com/kryptokrona/kryptokrona-docs/blob/master/docs/guides/Optimizing-RPi-TurtleCoin-Mining/README.md) for a more optimized setup.

What are the benefits of compiling XMRig from scratch?

* You'll have the most up-to-date version of XMRig
* You can optimize XMRig for specific SBCs (improves hash rate)
* You can compile XMRig with different releases of GCC (may improve hash rate)
* It's possible to disable certain features of XMRig ([more info](https://github.com/xmrig/xmrig/wiki/Ubuntu-Build#additional-cmake-options))

### Setup

First we want to make sure your SBC's software is up to date:

```
sudo apt-get update && sudo apt-get upgrade
```

After that's done, we're going to install some tools that are important for the process:

```
sudo apt-get install git build-essential cmake make libuv1-dev libmicrohttpd-dev gcc g++ automake autoconf pkg-config libcurl4-openssl-dev libjansson-dev libssl-dev libgmp-dev
```

### Compiling XMRig

At this step we'll obtain the latest binaries of XMRig and create a directory called `build`:

```bash
cd ~
git clone https://github.com/xmrig/xmrig.git
cd xmrig && mkdir build && cd build
```

Now we specify the build flags to optimize XMRig for your SBC in particular. You'll have to **only choose one of these**:

* for any SBC:

```
cmake ..
```

* for the Raspberry Pi 2:

```bash
cmake .. -DCMAKE_C_FLAGS="-mcpu=cortex-a7 -mtune=cortex-a7" -DCMAKE_CXX_FLAGS="-mcpu=cortex-a7 -mtune=cortex-a7"
```

* for the Raspberry Pi 2 if the command above doesn't work:

```bash
cmake .. -DARM_TARGET=7
```

* for the Raspberry Pi 3:

```bash
cmake .. -DCMAKE_C_FLAGS="-mcpu=cortex-a53 -mtune=cortex-a53" -DCMAKE_CXX_FLAGS="-mcpu=cortex-a53 -mtune=cortex-a53"
```

* for the Raspberry Pi 4:

```bash
cmake .. -DCMAKE_C_FLAGS="-mcpu=cortex-a72 -mtune=cortex-a72" -DCMAKE_CXX_FLAGS="-mcpu=cortex-a72 -mtune=cortex-a72"
```

* for the Asus Tinker Board:

```bash
cmake .. -DCMAKE_C_FLAGS="-march=armv7-a" -DCMAKE_CXX_FLAGS="-march=armv7-a"
```

You may find the right flags for your board [here](https://gist.github.com/fm4dd/c663217935dc17f0fc73c9c81b0aa845). I was only able to test these on a Raspberry Pi 2 and the Asus Tinker Board. Also, this guide is not perfect, so **feel free to add/edit flags or devices**!

To finish the compilation type:

```
make
```

To speed up the compilation you can add `-j [amount_of_CPU_cores]`. On a Raspberry Pi 2/3 this would be `make -j 4` for example.

### Configuring and Running XMRig

First we need to copy `config.json` to the same directory the XMRig executable is located:

```
cp ~/xmrig/src/config.json config.json
```

Now we have to edit the configuration file properly. In this guide we'll be using `nano`, but any other text editor should also work fine:

```
nano config.json
```

Your terminal should display the contents of `config.json`.

* In order to mine Kryptokrona, we tell XMRig what algorithm you want to mine. Look out for the `"algo":` setting and change it to `"algo": "cryptonight-pico/trtl",`
* In place of `"url": "donate.v2.xmrig.com:3333",` you'll need to choose a pool to mine towards. Make sure to choose the right port. You can learn more about choosing a pool [here](https://github.com/kryptokrona/kryptokrona-docs/blob/master/docs/guides/Pools/README.md).
* Instead of `"user": "YOUR_WALLET_ADDRESS",` simply paste your Kryptokrona wallet address.

  If you don't have one yet, you can find out how to create a wallet [here](https://github.com/kryptokrona/kryptokrona-docs/blob/master/docs/wallets/Making-a-Wallet/README.md).

When you're done with that, press:

`CTRL + O` to save, confirm with `Enter`. And after that, hit `CTRL + X` to close the file.

Then start the miner:

```
./xmrig
```

After entering this command, the miner will start scanning your hardware and begin to mine.

Congratulations! You did it! :)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.kryptokrona.org/mining/mining-with-sbc.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
