# How to recompile the FX3 firmware from source?

**URL:** https://discourse.myriadrf.org/t/how-to-recompile-the-fx3-firmware-from-source/3034
**Category:** LimeSDR
**Created:** [18 July 2018 17:15 UTC](https://discourse.myriadrf.org/t/how-to-recompile-the-fx3-firmware-from-source/3034 "2018-07-18T17:15:39Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![Sappyh](https://avatars.discourse-cdn.com/v4/letter/s/3be4f8/32.png) [@Sappyh](https://discourse.myriadrf.org/u/Sappyh)
#### Post date: [18 July 2018 17:15 UTC](https://discourse.myriadrf.org/t/how-to-recompile-the-fx3-firmware-from-source/3034/1 "2018-07-18T17:15:39Z")

</div>

Hello,

I want to make some modifications to the FX3 firmware. Having downloaded the Linux Cypress SDK(1.3.4), I have tried using the makefile provided in the LimeSDR\_USB\_FX3 source after making the necessary changes for the SDK parameters, I keep running into errors mainly about undefined reference in the linked libraries. It would be great if someone could outline the process of recompiling the firmware.

Thanks,  
Saptarshi

---

<div class="post-metadata">

### Author: ![Sappyh](https://avatars.discourse-cdn.com/v4/letter/s/3be4f8/32.png) [@Sappyh](https://discourse.myriadrf.org/u/Sappyh)
#### Post date: [24 July 2018 22:17 UTC](https://discourse.myriadrf.org/t/how-to-recompile-the-fx3-firmware-from-source/3034/2 "2018-07-24T22:17:08Z")

</div>

Hi,  
I was able to figure it out. I made a Linux eclipse project taking hints from the provided examples in the SDK. If anyone is interested, it is available on [Github](https://github.com/sappyh/LimeSDR-USB_FX3/tree/New_DMA_Size). I have modified the DMA channel size, so for the original firmware you need to make this modification in the file **usb\_config.h**.

usb\_config.h  
@@ -22,7 +22,7 @@

//USB\_BULK\_STREAM config  
#define USB\_BULK\_STREAM\_BURST\_LEN 16  
**_-#define USB\_BULK\_STREAM\_DMA\_BUF\_SIZE (1)_**  
**_+#define USB\_BULK\_STREAM\_DMA\_BUF\_SIZE (4)_**  
#define USB\_BULK\_STREAM\_DMA\_BUF\_COUNT\_P\_2\_U (8) /\* USB\_BULK\_STREAM P\_2\_U channel buffer count _/  
 #define USB\_BULK\_STREAM\_DMA\_BUF\_COUNT\_U\_2\_P (4) /_ USB\_BULK\_STREAM U\_2\_P channel buffer count \*/

Set the environment variables following the linux documentation provided in the SDK before importing the project with ezUsbSuite.

Thanks,  
Saptarshi.
