Github DWM1001 examples, how to change configuration?

Hello to all,

I’m new in UWB, and I have a question about examples for DWM1001 modules from Github.

I want to measure the distance between two modules, and I want to achieve the largest range.

I tried to change the configuration of the DWM1000 chip, e.g. reduce the data rate from 6M8 to 110K, or increase the preamble from 128 to 1024 bits. But any of these changes stop the communication between modules.

Can somebody tell me what I’m doing wrong? And what should I change additionally to get modules work with different configurations (if it’s possible to run them with different configuration)?

Kind regrads,

Hi Sergey,

Changing the channel, data rate or preamble length should not impact the good communication between the devices. You need to make sure you are using the exact same configuration on both the initiator and the responder.

Have you modified configuration for both devices ?

Thank you,

Hi Yves,

Thank you for your reply.

Yes, I’m pretty sure I’ve modified both devices. Can I change just one parameter, e.g. data rate without changing others? Or should I change all of them to make them work correctly in complex?

My current configuration is:

[code]static dwt_config_t config = {
5, // Channel number
DWT_PRF_16M, // Pulse repetition frequency
DWT_PLEN_1024, // Preamble length. Used in TX only.

DWT_PAC32, // Preamble acquisition chunk size. Used in RX only.
3, // TX preamble code. Used in TX only.
3, // RX preamble code. Used in RX only.

1, // 0 to use standard SFD, 1 to use non-standard SFD.
DWT_BR_110K, // Data rate.
DWT_PHRMODE_STD, // PHY header mode.
(1025 + 64 - 32) // SFD timeout (preamble length + 1 + SFD length - PAC size). Used in RX only.

Kind regards,

I’ve tried different variants of settings, but any changes from the original settings stops communication between modules.

I also tried to change timeouts at the initiator side but that didn’t help.

Can anybody tell me what I’m doing wrong and not taking into account?..

Kind regards,

Hi Sergeys,

I’ve tried on my side and changing the data rate or the channel does not impact the ability to range. I haven’t tried the preamble yet but it should be fine too.

This being said, I’m slightly different version of the simple example that I hope to release at some stage next week.

I wouldn’t recommend to modify the timeout as it can lead to a faulty stage quite easily if it’s not correctly used.

Maybe try to modify only the channel and see if it break the communication because it shouldn’t.

Thank you,

Hi Yves,

Thanks for your reply.

When I change the channel it’s still OK, and communication still works. But when I change data rate from 6.8M to 100k communication breaks.

I’m using one DWM1001-DEV board and one DWM1001 standalone module. Can it cause any problems? I think it shouldn’t.

Could you please try the configuration I mentioned in the previous post and see if it works on your side? I really don’t know what to think…

Kind regards,

I was trying to make a debug of the modules after changing the data rate to 110K and got the following results:

The status_reg for the initiator device is always 0x028200F2, and for the receiver device it is 0x06800102.

Looks like initiator gets this status among others: SYS_STATUS_RXRFTO 0x00020000UL /* Receive Frame Wait Timeout /
And receiver gets this status: SYS_STATUS_RXPTO 0x00200000UL /
Preamble detection timeout */

When I change the data rate to 850K the initiator status us the same, while receiver status is changed to 0x02806F72 which means correctly received frame.

I don’t know if that information is helpful though

Kind regards,

I’ve tried another DWM1001-DEV modules set, and result is the same - it works only with standard settings, and if I change the data rate, communication breaks.

Can anybody test it and approve or disprove that it works with the changed settings?

I can’t move forward without solving this issue.

Kind regards,


I have exactly the same problem as you. When I change basically anything else other then channel, communication fails. I thought the reason is maybe the hardcoded poll and response message, but still not sure.

If you solve this problem, can you please update me with informations what was the problem.

Kind regards! :slight_smile:


I had same problem! I fixed it like this:

my config on both sides:


How do i observe the distances of the co-ordinates on the responder after flashing the responder example on the device?