<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: wavesnowrider</title>
    <description>The latest articles on DEV Community by wavesnowrider (@wavesnowrider).</description>
    <link>https://dev.to/wavesnowrider</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3220560%2F3d7b8118-a347-41f6-8e2c-8968bb9c5533.png</url>
      <title>DEV Community: wavesnowrider</title>
      <link>https://dev.to/wavesnowrider</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/wavesnowrider"/>
    <language>en</language>
    <item>
      <title>Tips and trouble shooting</title>
      <dc:creator>wavesnowrider</dc:creator>
      <pubDate>Sun, 15 Jun 2025 06:25:28 +0000</pubDate>
      <link>https://dev.to/wavesnowrider/tips-and-trouble-shooting-tsdz2-easydiy-ebike-display-40lo</link>
      <guid>https://dev.to/wavesnowrider/tips-and-trouble-shooting-tsdz2-easydiy-ebike-display-40lo</guid>
      <description>&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;p&gt;This is log of tips and trouble shooting.&lt;/p&gt;




&lt;h1&gt;
  
  
  1. Update default parameters
&lt;/h1&gt;

&lt;p&gt;Problem:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Parameter setting on tiny 1.3 inch screen using buttons are frustrating. Directly implement your eBike specific parameters in zip container is easy.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Solution:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;File include/eeprom.h contains default parameters, like assist factor, torque sensor calibration and so on.&lt;br&gt;
Build, get zip file and flash via nRF connect app (on iPhone in my case).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Open configuration setting of your eBike, select "Display" section and choose "yes" on "Reset def". Existing configuration long pressing power button and power off. Green LED on nRF-dongle appears and finished.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  2. Longer motor initialization time in lower temperature environment
&lt;/h1&gt;

&lt;p&gt;Problem:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Display is locked at boot screen for 3-5 min in winter time. Lower temperature is longer locked time. It seems depends on temperature atmosphere, obviously observed in lower than 10degC environment.
Once display transits main screen, everything works perfectly.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Solution:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I strongly want to solve this issue. This is why I made up build environment even binary is provided.
&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  3. Assist level unintentionally changed
&lt;/h1&gt;

&lt;p&gt;Problem:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Assist level is suddenly changed during riding without any +/- button operation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Solution:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add 0.1uF(104) capacitor between 2 wire of each Up/Down button.
This issue seems due to electrical noise.&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  4. Not show anything on OELD SPI display
&lt;/h1&gt;

&lt;p&gt;Problem:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SH1106 based OELD display with SPI communication does not show anything at startup. I2C OELD baed on SH1106 works fine.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Solution:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;not yet. Maybe I need to establish debuger environment to identify  the cause.&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  5. Compiler warning
&lt;/h1&gt;

&lt;p&gt;Problem:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Whenever compile, it says warning. Of course, I can ignore but I don't like it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyfbe26xvrc2k2u2yy9t9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyfbe26xvrc2k2u2yy9t9.png" alt="Image description" width="800" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Solution:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1. Set as comment unused variables to suppress warning.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F75296mqek98kmvbgsjwh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F75296mqek98kmvbgsjwh.png" alt="Image description" width="800" height="231"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;2. add unlisted states in "case" rules.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feyz2tm50q6knyq6qcp8t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feyz2tm50q6knyq6qcp8t.png" alt="Image description" width="553" height="624"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;3. It's better to leave warnings. State transition might be impacted...&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;(end of article) &lt;/p&gt;

</description>
      <category>tsdz2</category>
      <category>easydyi</category>
      <category>ebike</category>
      <category>display</category>
    </item>
    <item>
      <title>Build environment setup 2025</title>
      <dc:creator>wavesnowrider</dc:creator>
      <pubDate>Thu, 29 May 2025 05:03:56 +0000</pubDate>
      <link>https://dev.to/wavesnowrider/build-environment-setup-2025-tsdz2-easydiy-opensource-ebike-display-5c4l</link>
      <guid>https://dev.to/wavesnowrider/build-environment-setup-2025-tsdz2-easydiy-opensource-ebike-display-5c4l</guid>
      <description>&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Great article by casainho of TSDZ2 EasyDIY OpenSource Ebike display. &lt;/li&gt;
&lt;li&gt;Since it was as of 2022 casainho wrote instruction on Github, some of them are out of date. This article shows actual command lines which is for instllation of build environment. &lt;/li&gt;
&lt;li&gt;Reference:
&lt;a href="https://opensourceebike.github.io/easy_diy_display_ebike_display/development/development-flash_and_debug_firmware.html" rel="noopener noreferrer"&gt;https://opensourceebike.github.io/easy_diy_display_ebike_display/development/development-flash_and_debug_firmware.html&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Base setup
&lt;/h1&gt;

&lt;dl&gt;
&lt;dt&gt;[Development platform] Ubunts LTS 24.04.2&lt;/dt&gt;
&lt;dd&gt;Following options are taken during Ubunts installation to avoid missing package. (Maybe not related with build environment setup)&lt;/dd&gt;
&lt;dd&gt;- Extended selection&lt;/dd&gt;
&lt;dd&gt;- Install third-party software for graphicsand Wi-Fi hardware&lt;/dd&gt;
&lt;dd&gt;- Download and install support for additional media formats&lt;/dd&gt;
&lt;/dl&gt;

&lt;dl&gt;
&lt;dt&gt;[Hardware] EsasyDIY Ebike display on nRF52840 Nordic USB Dongle.&lt;/dt&gt;
&lt;/dl&gt;

&lt;dl&gt;
&lt;dt&gt;[Software] EV_Display_Bluetooth_Ant v0.20.0&lt;/dt&gt;
&lt;dd&gt; https://github.com/OpenSourceEBike/ev_display_bluetooth_ant/releases &lt;/dd&gt;
&lt;/dl&gt;




&lt;h1&gt;
  
  
  Install
&lt;/h1&gt;

&lt;h2&gt;
  
  
  1. add your user name to dialout group
&lt;/h2&gt;

&lt;p&gt;$ sudo usermod -a -G dialout USER_NAME&lt;br&gt;
$ reboot&lt;/p&gt;
&lt;h2&gt;
  
  
  2. install VS code
&lt;/h2&gt;

&lt;p&gt;Download *.deb binary from &lt;a href="https://code.visualstudio.com/" rel="noopener noreferrer"&gt;https://code.visualstudio.com/&lt;/a&gt;.&lt;br&gt;
$ sudo apt install ./code_1.100.2-1747260578_amd64.deb&lt;/p&gt;

&lt;p&gt;Install extentions&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;C/C++ extention: VS-code ask you installing a C++ compiler. Click "Install c C++ Compiler" button.&lt;/li&gt;
&lt;li&gt;Cortex-Debug extention&lt;/li&gt;
&lt;li&gt;Task manager extention&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  3. install open-OCD
&lt;/h2&gt;

&lt;p&gt;$ sudo apt-get install npm&lt;br&gt;
$ sudo npm install -global xpm@latest&lt;br&gt;
$ xpm install --global @xpack-dev-tools/openocd@latest&lt;br&gt;
$ sudo ln -s ~/.local/xPacks/@xpack-dev-tools/openocd/0.11.0-4.1/.content/bin/openocd /usr/bin/openocd&lt;/p&gt;
&lt;h2&gt;
  
  
  4. install compiler, liblary
&lt;/h2&gt;

&lt;p&gt;$ sudo apt update -y&lt;br&gt;
$ sudo apt-get install gdb-multiarch&lt;br&gt;
$ sudo apt-get install gcc-arm-none-eabi&lt;br&gt;
$ sudo apt-get install binutils-arm-none-eabi&lt;br&gt;
$ sudo apt-get install libnewlib-arm-none-eabi&lt;br&gt;
$ sudo apt-get install make&lt;br&gt;
$ sudo apt-get install srecord&lt;/p&gt;
&lt;h2&gt;
  
  
  5. install Python3
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Install dependencies
&lt;/h3&gt;

&lt;p&gt;$ sudo apt-get install libc6-dev&lt;br&gt;
$ sudo apt-get install zlib1g&lt;br&gt;
$ sudo apt-get install libffi-dev&lt;/p&gt;
&lt;h3&gt;
  
  
  Install zlib
&lt;/h3&gt;

&lt;p&gt;Download from &lt;a href="http://www.zlib.net/" rel="noopener noreferrer"&gt;http://www.zlib.net/&lt;/a&gt;&lt;br&gt;
$ tar zxvf zlib-1.3.1.tar.gz&lt;br&gt;
$ ./configure&lt;br&gt;
$ make test&lt;br&gt;
$ sudo make install&lt;/p&gt;
&lt;h3&gt;
  
  
  Build and install Python3
&lt;/h3&gt;

&lt;p&gt;download Python-3.13.3.tgz from python.org&lt;br&gt;
extract tgz file&lt;br&gt;
$ sudo apt install pkg-config&lt;br&gt;
$ cd ~/Downloads/Python-3.13.3&lt;br&gt;
$ ./configure&lt;br&gt;
$ ./configure --enable-optimizations&lt;br&gt;
$ make&lt;br&gt;
$ make test&lt;br&gt;
$ sudo apt-get install pip&lt;br&gt;
$ sudo make install&lt;/p&gt;
&lt;h2&gt;
  
  
  6. install nrfutil
&lt;/h2&gt;

&lt;p&gt;$ sudo pip3 install nrfutil&lt;br&gt;
$ pip3 install --upgrade pip&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[Note] old version of nrfutil is installed by pip3 command. See "Re-install nrfutil" section below.
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ nrfutil.old version
nrfutil version 5.2.0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Build source code
&lt;/h1&gt;

&lt;p&gt;Download "Source code (tar.gz)" from &lt;a href="https://github.com/OpenSourceEBike/ev_display_bluetooth_ant/releases" rel="noopener noreferrer"&gt;https://github.com/OpenSourceEBike/ev_display_bluetooth_ant/releases&lt;/a&gt;&lt;br&gt;
$ tar zxvf EV_Display_Bluetooth_Ant-0.20.0.tar.gz&lt;/p&gt;

&lt;p&gt;Open Visual Studio Code&lt;br&gt;
Open folder "EV_Display_Bluetooth_Ant-0.20.0/firmware/display".&lt;/p&gt;

&lt;p&gt;Click "Task Manager" icon at left side bar.&lt;br&gt;
You will see scheduled tasks like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn25xddekenq65xrsyczm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn25xddekenq65xrsyczm.png" alt="image.png" width="370" height="361"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click "Run Task" of one of tasks. Build starts and you will get failed.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsnh4tvor84dg78wozyaw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsnh4tvor84dg78wozyaw.png" alt="image.png" width="640" height="263"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h1&gt;
  
  
  Revise source code
&lt;/h1&gt;
&lt;h2&gt;
  
  
  1. include stdint.h
&lt;/h2&gt;

&lt;p&gt;Error says unit8_t is unknown.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;./can/MCP2515.h:224:28: error: unknown type name 'uint8_t'
  224 | void MCP2515_RequestToSend(uint8_t instruction);
      |                            ^~~~~~~
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add #include stdint.h at top of target source files.&lt;br&gt;
Target source file: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;./include/MCP2515.h&lt;/li&gt;
&lt;li&gt;./include/CANSPI.h&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fniau3t5bel7skb9q6wjo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fniau3t5bel7skb9q6wjo.png" alt="Image description" width="380" height="202"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2. replace "#elif" with "#else"
&lt;/h2&gt;

&lt;p&gt;Target source file: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;./include/state.h&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffn352ncmih45kk5fob97.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffn352ncmih45kk5fob97.png" alt="Image description" width="563" height="176"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Uncomment #define DEVELOPMENT
&lt;/h2&gt;

&lt;p&gt;Target source file: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;./include/main.h&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0jco7jqwbip7pxodwsva.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0jco7jqwbip7pxodwsva.png" alt="Image description" width="373" height="232"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If DEVELOPMENT flag is set, initialization screen is skipped which enables you debugging main screen, like button pressing, menu transition and so on.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  4. Try build again
&lt;/h2&gt;

&lt;p&gt;$ sh ./make_release.sh&lt;/p&gt;

&lt;p&gt;Still got failed with nrfutil errors.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpch28mw5b6lvporu8p1x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpch28mw5b6lvporu8p1x.png" alt="Image description" width="703" height="122"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  Re-install nrfutil
&lt;/h1&gt;

&lt;h2&gt;
  
  
  1.Download "nrfutil" file
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;from "&lt;a href="https://www.nordicsemi.com/Products/Development-tools/nRF-Util" rel="noopener noreferrer"&gt;https://www.nordicsemi.com/Products/Development-tools/nRF-Util&lt;/a&gt;".&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  2.Install related tools
&lt;/h2&gt;

&lt;p&gt;$ chmod +x nrfutil&lt;/p&gt;

&lt;p&gt;$ ./nrfutil install nrf5sdk-tools&lt;br&gt;
[00:00:09] ###### 100% [Install packages] Install packages&lt;br&gt;
$ ./nrfutil install completion&lt;br&gt;
[00:00:05] ###### 100% [Install packages] Install packages&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Follow official instruction below:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.nordicsemi.com/bundle/nrfutil/page/guides/installing.html" rel="noopener noreferrer"&gt;https://docs.nordicsemi.com/bundle/nrfutil/page/guides/installing.html&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Install libusb&lt;br&gt;
$ sudo apt install libusb-1.0-0&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Download the latest .deb file here:&lt;br&gt;
&lt;a href="https://github.com/NordicSemiconductor/nrf-udev/releases" rel="noopener noreferrer"&gt;https://github.com/NordicSemiconductor/nrf-udev/releases&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Install deb file&lt;br&gt;
$ sudo dpkg -i nrf-udev_1.0.1-all.deb&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Download nrfutil binary here:&lt;br&gt;
&lt;a href="https://www.nordicsemi.com/Products/Development-tools/nRF-Util" rel="noopener noreferrer"&gt;https://www.nordicsemi.com/Products/Development-tools/nRF-Util&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add execute attribute and move to bin directory&lt;br&gt;
$ chmod +x nrfutil&lt;br&gt;
$ sudo mv /usr/local/bin/nrfutil /usr/local/bin/nrfutil.old&lt;br&gt;
$ sudo move nrfutil /usr/local/bin/&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Expected version is below (or higher).&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ nrfutil --version
nrfutil 8.0.0 (54d8087 2025-01-07)
commit-hash: 54d8087a38b73b6e56942fb1b024b62365f06731
commit-date: 2025-01-07
host: x86_64-unknown-linux-gnu
build-timestamp: 2025-01-07T14:26:42.070728557Z
classification: nrf-external
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Install pipenv (maybe not required)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;$ sudo apt install pipenv&lt;br&gt;
$ pip install nrfutil&lt;/p&gt;




&lt;h1&gt;
  
  
  Build again
&lt;/h1&gt;

&lt;h2&gt;
  
  
  1. Build on task manager.
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt; Click "Clean" on task manager: &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9zr1me0ymqw6l3kk8oj5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9zr1me0ymqw6l3kk8oj5.png" alt="Image description" width="367" height="286"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Then click " ".&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5ia7ya4nsnlxxw0drevl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5ia7ya4nsnlxxw0drevl.png" alt="Image description" width="359" height="98"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I got .zip file in _build directory.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz5fhpzp8wkosti0awcn6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz5fhpzp8wkosti0awcn6.png" alt="Image description" width="666" height="99"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Get whole release
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Run script in terminal&lt;br&gt;
$ cd EV_Display_Bluetooth_Ant-0.20.0/firmware/display&lt;br&gt;
$ sh ./make_release.sh&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Success.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy8biai3cbnww24w8fj4k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy8biai3cbnww24w8fj4k.png" alt="Image description" width="782" height="736"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I got whole zip files in release directory.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fguplg47eu5s137wzuh2m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fguplg47eu5s137wzuh2m.png" alt="Image description" width="583" height="255"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Build environment is setup!&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;(end of article)&lt;/p&gt;

</description>
      <category>tsdz2</category>
      <category>easydiy</category>
      <category>ebike</category>
      <category>display</category>
    </item>
  </channel>
</rss>
