Post Go back to editing

How to continuously transmit large arrays with Pluto sdr

Thread Summary

The user encountered an 'OSError: [Errno 14] Bad address' when trying to transmit a 20_000_000-byte array at 12 MSps using the Pluto SDR with Python. The final answer suggests reducing the sample rate to 5 MSps and using smaller chunks (1_000_000 samples) to avoid USB 2.0 throughput limitations. The user confirmed this approach worked but inquired about increasing the sample rate further by setting 8-bit resolution, which is not possible without modifying the driver/firmware.
AI Generated Content
Category: Hardware
Product Number: AD9363

I need to continuously transmit large arrays with Pluto sdr using Python. I use sample rate = 12 Msps and call sdr.tx(tx_samples).

The tx_samples array has size 20_000_000 bytes. When I call sdr.tx(tx_sample) I have such error: OSError: [Errno 14] Bad address.

I tried to chunk the array into smaller parts, for example I called sdr.tx(tx_samples) twice with the tx_samples size = 10_000_000 bytes. But the sdr.tx() function made a large delay between subsequent calls:

Can you help me with sending large arrays with Pluto sdr using Python continuously ?

  • Hello, 
    To continuously transmit an array at 12 MSps using the Pluto with Python, we need to consider the hardware limitations. While the Pluto can technically sample up to 61 MHz, the practical limit for reliable transmission is around 5 MSps due to the USB 2.0 interface constraints. Therefore, transmitting at 12 MSps may lead to data loss and transmission errors. 

    The error you mentioned "OSError: [Errno 14] Bad address." can apear if the data chunks size exceeds the limitations of the Pluto hardware.


    To be able to do what you want you are trying to try to chunk the data into smaller parts and use a circular buffer. 
    In your case with an array size of 20_000_000 samples I suggest trying to transmit 1_000_000 chunks at 5 Msps. 

  • Thank you, 

    Reducing sample rate to 5 Msps and using chunks provide good results.

    But I need much higher sample rate.

    Can I somehow set 8 bit resolution on Python to increase the USB 2.0 interface throughput?

  • Unfortunately that is not possible without changes to the driver/firmware