diff --git a/components/bm1397/bm1397.c b/components/bm1397/bm1397.c index b3dc8921..49b58c62 100644 --- a/components/bm1397/bm1397.c +++ b/components/bm1397/bm1397.c @@ -413,7 +413,6 @@ task_result *BM1397_proccess_work(void *pvParameters) ESP_LOGI(TAG, "return null"); return NULL; } - ESP_LOGI(TAG, "return not null"); uint8_t nonce_found = 0; uint32_t first_nonce = 0; diff --git a/components/stratum/include/stratum_api.h b/components/stratum/include/stratum_api.h index 7409bb84..944a922d 100644 --- a/components/stratum/include/stratum_api.h +++ b/components/stratum/include/stratum_api.h @@ -65,7 +65,7 @@ void STRATUM_V1_free_mining_notify(mining_notify *params); int STRATUM_V1_authenticate(int socket, const char *username); -void STRATUM_V1_configure_version_rolling(int socket); +void STRATUM_V1_configure_version_rolling(int socket, uint32_t * version_mask); int STRATUM_V1_suggest_difficulty(int socket, uint32_t difficulty); diff --git a/components/stratum/stratum_api.c b/components/stratum/stratum_api.c index 3f4cdb7a..fbccc089 100644 --- a/components/stratum/stratum_api.c +++ b/components/stratum/stratum_api.c @@ -333,14 +333,26 @@ void STRATUM_V1_submit_share(int socket, const char *username, const char *jobid write(socket, submit_msg, strlen(submit_msg)); } -void STRATUM_V1_configure_version_rolling(int socket) +void STRATUM_V1_configure_version_rolling(int socket, uint32_t * version_mask) { - // Configure char configure_msg[BUFFER_SIZE * 2]; sprintf(configure_msg, "{\"id\": %d, \"method\": \"mining.configure\", \"params\": [[\"version-rolling\"], {\"version-rolling.mask\": \"ffffffff\"}]}\n", send_uid++); ESP_LOGI(TAG, "tx: %s", configure_msg); write(socket, configure_msg, strlen(configure_msg)); + char * line; + line = STRATUM_V1_receive_jsonrpc_line(socket); + + ESP_LOGI(TAG, "Received result %s", line); + StratumApiV1Message stratum_api_v1_message; + STRATUM_V1_parse(&stratum_api_v1_message, line); + if (stratum_api_v1_message.method == MINING_SET_VERSION_MASK || stratum_api_v1_message.method == STRATUM_RESULT_VERSION_MASK) { + *version_mask = stratum_api_v1_message.version_mask; + ESP_LOGI(TAG, "Set version mask: %08lx", *version_mask); + } + + free(line); + return; } diff --git a/main/tasks/stratum_task.c b/main/tasks/stratum_task.c index 80e8e951..bb8e2c3d 100644 --- a/main/tasks/stratum_task.c +++ b/main/tasks/stratum_task.c @@ -93,11 +93,11 @@ void stratum_task(void *pvParameters) break; } + STRATUM_V1_configure_version_rolling(GLOBAL_STATE->sock, &GLOBAL_STATE->version_mask); + STRATUM_V1_subscribe(GLOBAL_STATE->sock, &GLOBAL_STATE->extranonce_str, &GLOBAL_STATE->extranonce_2_len, GLOBAL_STATE->asic_model); - STRATUM_V1_configure_version_rolling(GLOBAL_STATE->sock); - char *username = nvs_config_get_string(NVS_CONFIG_STRATUM_USER, STRATUM_USER); STRATUM_V1_authenticate(GLOBAL_STATE->sock, username); free(username); diff --git a/readme.md b/readme.md index 6a505f72..ac36027b 100755 --- a/readme.md +++ b/readme.md @@ -1,99 +1,67 @@ [![](https://dcbadge.vercel.app/api/server/3E8ca2dkcC)](https://discord.gg/3E8ca2dkcC) - - # ESP-Miner | Supported Targets | ESP32-S3 (BitAxe v2+) | | ----------------- | --------------------- | +## Requires Python3.4 or later and pip -## Requires ESP-IDF v5.1 +Install bitaxetool from pip. pip is included with Python 3.4 but if you need to install it check -You can chose between 2 methods of installations: - -### Manual Installation - -Follow the official [instructions](https://docs.espressif.com/projects/esp-idf/en/release-v5.1/esp32s3/get-started/index.html#manual-installation). - -### ESP-IDF Visual Studio Code Extension - -Install the "Espressif IDF" extension, it will automate the IDF installation for you. +``` +pip install --upgrade bitaxetool +``` ## Hardware Required This firmware is designed to run on a BitAxe v2+ -## Configure the project +If you do have a Bitaxe with no USB connectivity make sure to establish a serial connection with either a JTAG ESP-Prog device or a USB-to-UART bridge -Set the target +## Preconfiguration + +Starting with v2.0.0, the ESP-Miner firmware requires some basic manufacturing data to be flashed in the NVS partition. + +1. Download the esp-miner-factory-v2.0.3.bin file from the release tab. + Click [here](https://github.com/skot/ESP-Miner/releases) for the release tab + +2. Copy `config.cvs.example` to `config.cvs` and modify `asicfrequency`, `asicvoltage`, `asicmodel`, `devicemodel`, and `boardversion` + +The following are recommendations but it is necessary that you do have all values in your `config.cvs`file to flash properly. + +- recommended values for the Bitaxe 1366 (ultra) + + ``` + key,type,encoding,value + main,namespace,, + asicfrequency,data,u16,485 + asicvoltage,data,u16,1320 + asicmodel,data,string,BM1366 + devicemodel,data,string,ultra + boardversion,data,string,0.11 + ``` + +- recomended values for the Bitaxe 1397 (MAX) + + ``` + key,type,encoding,value + main,namespace,, + asicfrequency,data,u16,475 + asicvoltage,data,u16,1400 + asicmodel,data,string,BM1397 + devicemodel,data,string,max + boardversion,data,string,2.2 + ``` + +## Flash + +The bitaxetool includes all necessary library for flashing the binary file to the Bitaxe Hardware. + +The bitaxetool requires a config.cvs preloaded file and the appropiate firmware.bin file in it's executed directory. + +3. Flash with the bitaxetool ``` -idf.py set-target esp32s3 -``` - -Use menuconfig to set the stratum server address/port and WiFi SSID/Password - -``` -idf.py menuconfig -``` - -Set following parameters under Stratum Configuration Options, these will define the stratum server you connect to: - -* Set `Stratum Address` to the stratum pool domain name. example "public-pool.io" - -* Set `Stratum Port` to the stratum pool port. example "21496" - -* Set `Stratum username` to the stratum pool username. example ".bitaxe" - -* Set `Stratum password` to the stratum pool password. example "x" - -Set following parameters under Example Connection Configuration Options: - -* Set `WiFi SSID` to your target wifi network SSID. - -* Set `Wifi Password` to the password for your target SSID. - -For more information about the example_connect() method used here, check out . - -## Build website - -To build the website for viewing and OTA updates open the Angular project found in -``` -ESP-Miner\main\http_server\axe-os -``` - -Then install dependencies and build. - -``` -npm i -npm run build -``` - - - When the esp-idf project is built it will bundle the website in www.bin - - -## Build and Flash - -Build the project and flash it to the board, then run monitor tool to view serial output: - -``` -idf.py -p PORT flash monitor -``` - -(To exit the serial monitor, type ``Ctrl-]``.) - -See the Getting Started Guide for full steps to configure and use ESP-IDF to build projects. - -## Run Unit tests - -The unit tests for the project use the unity test framework and currently require actual esp32 hardware to run. - -They are located at - -``` -cd ./test/ -idf.py set-target esp32s3 -idf.py -p PORT flash monitor +bitaxetool --config ./config.cvs --firmware ./esp-miner-factory-v2.0.3.bin ```