This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Throughput with Master Emulator (PC -> DK)

Hi

For a test Environment, I use Master Emulator (C#). What is the highest data throughput, I can achieve when I send from PC to DK with the Master Emulator?

I use the following configuration:

  • Master Emulator 2.1.13.14 within C#
  • Dongle with MEFW 0.11.0
  • Connection Intervall 7.5ms

When I send data from DK to PC, I can achieve about 70kbps, which is ok. But when I send data from PC to DK I can only achieve 2-3kpbs which is too slow.

I read through this thread, but I did not found a solution for my problem.

Is there a solution to get more data throughput? Or is an example available in C#, which I can achieve a higher throughput

Thanks

  • Hi MR,

    We do not have any numbers for data going from PC to peer device. But you can look into the nRFUart example that comes with our Master Emulator installation.

    2-3kbps seems quite less. It is very important to use pipetype Transmit instead of TransmitWithAck when sending data. Please look into the example and see if your code aligns with it.

  • Hi Aryan, I have used the nRFUart example as template for my implementation, so the implementation is very similar. Meanwhile I made a measurement of the throughput of the nRFUART Example. For this measurement I used the nRFUart Example (C#) and the UART example of the 8.1.0 SDK. For better performance I have deactivated the log view (commented out). At the beginning and at the end I've logged the time. I have nothing else changed. The transfer of 5120 packets took 5 minutes (-> 2.2kbps with 11.25ms Connection Interval). The results are very similar to the results of my implementation. Do you have any suggestions to increase the throughput?

  • That is very unfortunate. Tomorrow I will request the responsible team to take a look into this.

  • Hi MR,

    I gor some response from the responsible person and is as below

    Some checkpoints, though I suspect you already doing all of them: Check that the connection interval is 7.5 ms at all times (no connection update is received) Check that the baud rate is set to 1Mbps (it's the default) Check that log level is medium or low.

    It can also be that the peripheral is having some bottleneck in reception. That can be investigated with a sniffer, checking if packets on air are retransmitted due to not being accepted by the peripheral.

    It is expected that the data rate is somewhat lower when sending from MasterEmulator compared to when receiving. When transmitting over HCI, it's required to wait for NUM_COMPLETED_PACKETS events (credits), and this is slower on the PC than on target. However, I didn't expect the difference to be that large. If the checkpoints above don't help out or give more info, there's not much that can be done (without doing modifications optimizations in the internals of Master Emulator, which probably won't be done soon

  • Hi Aryan, Thank you for your great Support. One checkpoint I have not considered was the log level. I had set the default value (high). After I changed the log level to low I can achieve a throughput of 20kbps with the UART example (C#) and the testfirmware of this thread. For me it's good enough for the test environment. I suppose that only 1 packet can be sent per interval. Can you confirm that? Or should it be possible to send multiple packets in each connection interval when I'm sending from PC to DK?

Related