Post Go back to editing

ADRV9002 DPD Problems

Thread Summary

The user is struggling to enable DPD on a custom ADRV9002 board, despite a valid profile and signal presence on the RX2B feedback path. The support engineer suggests verifying Tx filtering, signal power levels, and ORx signal strength, and recommends using the latest TES and SDK for better DPD support. The user confirms DPD works on a ZC706 eval board but faces issues with the Linux driver, and is directed to the Linux Software Drivers forum for further assistance.
AI Generated Content
Category: Software
Product Number: ADRV9002
Software Version: Firmware 0.21.0.8, Stream 0.7.9.0, API version: 67.1.1 Linux Kernel 5.10.0

Hi,

We are trying to enable DPD in a custom ADRV9002 board and are struggling with getting anything running. We have a 1T 1R setup (Rx1 running at 900MHz, TX2 running at 2GHz. Feedback path after PA connects to RX2B). TES tool seems to agree that this profile is valid and all seems to be OK so far. However to get the perfomance we require, DPD needs to be activated, but this is proving troublesome.

First off, there did not seem to be any support for the DPD setup etc in the version of the driver that we have had to use (in order to match API versions with the TES tool we have etc). We have used the generated sample code from the TES tool as a template to add what we believe is the right code to enable everything, yet when we enable DPD, nothing seems to happen, apart from a slight power consumption increase.

The feedback path has been probed as best we can to confirm that a signal is present on the RX2B port, so it feels like we haven't configured something properly or enabled something, but we have very little to go on. There does not appear to be any status info available from the DPD engine to help us with what is going on? Is this correct?

Also, is a data path required to the BBIC (in our case an FPGA) for the ORx channel? I was under the impression this was not required and the DPD engine was completely internal. Is this correct?

Any advice on where to look next or how else we are supposed to set up/monitor DPD would be appreciated.

I will attempt to set this up on a development platform, but at this point we do not have a PA available that we could use to demonstrate that DPD is actually running.

I've also noticed that other feature like LO leakage tracking, also appear to make no difference to the output whether they are enabled or not. Could this be related?

Regards

Simon

  • Hi Simon,

    I've sent this to the wider team to see if they see anything, but in the meantime I have a few questions:

    1. Are you filtering the Tx before the PA? The LOs in the ADRV9002 are square waves, and their harmonics (and any baseband signal that's mixed in with them) can interfere with the functioning of DPD.

    2. Have you tried lowering the signal power? We recommend using DPD with a PA running at its 1-dB compression point. The DPD might not be able to keep up when the signal is saturated far beyond this point.

    3. Have you verified that the signal at the ORx is at the recommended level for DPD? In our user guide we state that "to achieve optimal performance, set the ideal externalLoopbackPeakPower at about -18 dBm with a tolerance of ±5 dBm."

    4. If you are running C sample code, have you tried using the latest version of the TES and SDK?

    To answer your questions:

    1. The DPD block inside the ADRV9002 functions independent of the BBIC.

    2. We have two types of calibrations in the device: initial calibrations (Init Cals) and tracking calibrations (Tracking Cals). Init cals are run after the device boots. Tracking cals are intended supplement the Init Cals by correcting for changes in operating conditions (e.g. temperature). I wouldn't expect to see a difference between tracking on/off, unless there were significant changes in operating conditions after the init cals were run.

    Let me know how you get on with those initial suggestions, and if you have any other questions. I'll ask around internally to see if I missed anything.

    Kind Regards,
    Michał

  • Hi Michal,

    1. No there is no filtering on the Tx before the PA? Is this required as I don't recall seeing anything to this effect in the User Guide.

    2.  Yes and it doesn't seem to have much effect. If we turn the output power too low, it becomes impossible so see that the DPD is doing anything. Is there any kind of status feedback we can get from the DPD?

    3. I believe so, but I will try and reconfirm this. It is very difficult to probe as to get peak perfomance from the unit, it has to be fitted in it's enclosure, where signals cannot easily be monitored. Removing it from the enclosure means that the feedback path is difficult to measure accurately due to RF leakage from other parts of the board. Is there any way that IIO Oscilloscope can be connected to the observation port, without having to generate a new profile etc.

    4. We haven't tried the new TES and SDK yet as the process of having to update the driver and get all of the profiles/APIs/tools etc running to the correct version has been extremely painful in the past. I will attempt this as a last resort. I am planning to attempt this on the ZC706 eval board as soon as I can find a suitable PA. Has support for DPD been added into the new drivers?

    There does seem to be a fair amount of LO leakage which the init cals do not seem to be removing and I'm wondering if the two things may be related in some way (although as I understood it, the init cal for lo leakage is done via an internal path).

    I can upload my profile json (or TES session) if it would be useful

    Regards

    Simon

  • Hi Simon,

    1. The Tx output should be filtered even when DPD is not in use (unless you don't mind the LO harmonics making it to the antenna). From my understanding, those harmonics also interfere with the operation of the DPD. I'll make a note to add that to the next revision of the User Guide.

    2. As far as I know, there is no status feedback from DPD. At best, you can make sure it's selected in the TES when you generate the profile.

    3. Probing shouldn't be necessary, as the ±5 dB range is fairly broad. As long as you have an attenuator between the PA and ORx that gets you to around -18 dBm, it should be OK.

    4. I can't speak for the drivers provided for Linux/IIO, as that's supported by a different team, but the TES and SDK releases have the most up-to-date features. In the TES/SDK package, DPD has been available in some form since version 0.7.0, and it's been regularly updated (we are now on version 0.23.1).

    In terms of LO leakage, we typically expect to see levels around -65 dBm when under 3 GHz. But you're right, this is calibrated using the internal path, so it should not be affected.

    A TES session file would be the most helpful here.

    Kind Regards,
    Michał

  • Hi,

    We have managed to get DPD working on the development platform (ZC706) but are still having no luck with DPD under IIO/Linux. Has there been any work done on the Linux driver of DPD yet?

    I have tried building the example code to run in userspace but am hitting so many obstacles (using code generated from TES) that I am running out of things to try to get this to work. If I can't even get the example code to run (fails when trying to open a /dev/uio0 and I can't find any documentation on what needs fixing here), what hope do I have of ever getting DPD to work under Linux. Is there a better thread/forum that may be able to help on this, since I've had no feedback on here for months

    Regards

    Simon

  • Hi Simon,

    Linux is supported on the Linux Software Drivers forum. Their feature development is completely separate to ours, so you'll have to ask them about their planned features and release timelines.

    Kind Regards,
    Michał