Hello,
I have a two-part question regarding the TES system ARGO-NAVIS version 0.28.0.
1) How can I enable Fast Recovery Mode?
2) Why do the values of hbUnderRangeLowThresh and hbUnderRangeMidThresh remain unchanged when I adjust the Peak Over/Underload Threshold. This raises concerns about he validity of these values, since in some cases even hbUnderRangeHighThresh ends being lower than the aforementioned values
GenevaC - Moved from How to Use EngineerZone to Design Support ADRV9001 – ADRV9007. Post date updated from Friday, November 28, 2025 10:02 AM UTC to Tuesday, December 2, 2025 6:09 PM UTC to reflect the move.
Hi,
For the first question, Fast Attack and Fast Recovery Modes for the AGC can only be enabled using API calls in C99, or Python sample code. These modes are not in the TES GUI.
Details on the name and usage of APIs is located in the SDK folder - file named ADRV9001_API.chm
For question 2, please provide more information, where are you reading the values of hbUnderRangeLowThresh and hbUnderRangeMidThresh?
These are not shown in TES, only Peak/Power Over/Underload Thresholds.
If you are using APIs already, then just configure them as you need and continue using APIs. (You can use both APIs and TES at the same time, but TES will not update the values).
Regards,
Deniss
For question number 2, I observed the values I mentioned by samping codes in C and checking the corresponding coomands. These values are hbUnderRangeLowThresh = 5826,
hbUnderRangeMidThresh = 8230, and they dont change by using TES. In the upcoming week I will conduct tests in matlab to check if the aforementioned values change.
Meanwhile is there any chance to have fully access of the default Rx gain table? The ADRV9001 GUIDE provides information only from 255-253 gain table index and from 189-187
Regards John
Hi,
A stated in the User Guide, and shown between Figures 164 and 165, you can see that 165 is Fast Attack enabled and 164 is disabled - please review the differences.
As stated in red and yellow, the AGC does not wait for update counter, and does attacks immediately when in Fast Attack mode.
So, to say it again for you, the second and third attack is immediately after the first attack.
It is very clearly explained in the User Guide.
Your gain tables are not valid at all and make no sense, and I am not sure what you are doing to get these tables. If you inspect the MATLAB code, it just grabs the real gain table from where TES is installed.
Something is going wrong in your MATLAB code for those values to print/exist.
Standard MATLAB sample code takes the values from TES. TES is key.
Please debug your code and figure out what is going wrong.
Then return if you have issues with anything from our side/development.
Regards,
Deniss
For the second part of your answer I run ADRV by using matlab. The reason is because TES configuration is incomplete because a lot of values, especially those regarding HB detector, aren't contained. Matlab contains every value I need for configuration. The gain table you saw is a result of your generated code not mine and is seen inside command window while running the code
Hi Dennis,
In addition to my previous question i would like to specify what agcunderrangeintervals mean for the three levels of HB detector.The guide says that it sets the time constant in agc cycles (5.43ns) that the agc recovers when the signal peaks are less than the underrange. Does that means that agcunderrangeintervals are equal to the time needed for a recovery to occur when an underrange happens or the time for agc to reset after hb detect underrange condition.
Last, what is hboverloadpowermode is exactly? Whats the difference between this and enablehboverload.
Thank you
Hi, do you have something for me?
Hi Dennis, do you have something for me?
Hi John,
Please follow the below thread, it has most of the explanation that you are looking for. Let me know if that helps.
RE: What does apdUpperThreshPeakExceededCnt actually count?
Regards
Rahul
Hi Rahul,
I have already informed by the aforementioned article, although it's informative it doesn't reply to the above. It doesn't provide information regarding agcinterval and it says that the counter resets after an attack, so does that mean that if a second simultaneously attack is needed it won;t happen until a defined value of clock cycle exceeded ?
Furthermore, I don't have a completed answer for using matlab to run the ADRV, regarding gain table indices, hbunderrangemid/low/thresses, hboverloadpowermode.
We are working on your device every day in order to make it better, so providing information directly without reference to the guide would be very helpful.
Regards
John
Do we have news?
Regards
John
Hi John,
I have already informed by the aforementioned article, although it's informative it doesn't reply to the above. It doesn't provide information regarding agcinterval and it says that the counter resets after an attack, so does that mean that if a second simultaneously attack is needed it won;t happen until a defined value of clock cycle exceeded ?
The main difference between normal mode and fast attack mode is that in normal mode the gain is adjusted during a certain interval i.e., your gain update period whereas in fast attack mode the gain is adjusted as soon as the counter exceeds.
Now assume that a peak power of incoming signal is around 5dBm and the threshold is set to 0dBm. In both the modes of AGC, the counter goes high if the signal peak power exceeds 0dBm and then a 2dB of attenuation is implemented assuming the step size is of 2dB. Here the signal's peak power is 3dBm after the attenuation. It is still above the threshold, so the counter gets reset and wait for certain number of clock cycle to flag it and then gain is adjusted. This is the working mechanism. I hope this is clear now.
Furthermore, I don't have a completed answer for using matlab to run the ADRV, regarding gain table indices, hbunderrangemid/low/thresses, hboverloadpowermode.
We recommend the customer to first try the configuration in TES and once happy with the configuration then use other platforms such MATLAB, C or python. You can generate the MATLAB code under the sample code tab. This will generate the MATLAB code as per the configuration done by the user. Please find the relevant link related to MATLAB code
Produce and Edit MATLAB Sample Code
Some configuration that can not be done using TES, the user can change those setting using python interface, which allows the user to use TES along with Python interface for changing necessary setting which is not available in TES. In order to do so, please open the python script provided in "ADRV9001 Transceiver Evaluation Software\Examples\Python". Than modify the main file in order to update the settings as per the users requirement.
Note: This feature is only available for python.

For example, in the below example I can read the register and read the external path delay using python while TES is in use. There are few examples provided such as reading the register value, calculating the path delay, inspecting the channels, configuring the channels etc. The rest of configuration which are not provided is the users job to write the code as per the requirement.

In order to know the API sequence and the details of the data structure you can use the driver debugger option as shown below

This will give the sequence of API used while programming as well as any change made by the user after programming. Again here we have 4 language that user can chose as shown below

For instance, after programming I would like to change the normal attack mode to fast attack mode, and as you know we can not do that in TES directly. So first, I will figure out which API is needed to change the attack mode. First I will opt for Python option in the driver debugger and then go the gain control tab

Then I will modify some setting in gain control tab, for instance max gain changing from 255 to 250. Then go back to the receiver tab, you will find the APIs are updated in the driver debugger. This give us a code in Python which can be used for changing the configuration using the python interface.

Then updating the code to enable the fast recovery can be done in python. As you can see from the below screen grab, I was able to change the attack mode to fast attack.

Regarding the gain table, this gain table is loaded from the path "ADRV9001 Transceiver Evaluation Software\Resources\Adi.Adrv9001.GainTables\public" during initialization. Once TES is programmed you can check if the gain table is loaded correctly by cross checking the gain table file in the path w.r.t the gain table shown under the Gain control tab.


If you are not seeing a proper gain table being loaded then the file might have been modified in the path "ADRV9001 Transceiver Evaluation Software\Resources\Adi.Adrv9001.GainTables\public".
We are working on your device every day in order to make it better, so providing information directly without reference to the guide would be very helpful.
Can I know what are we trying to achieve here? Whats the end goal, so that we can provide you with proper guidance.
Regards
Rahul
Thank you for your detailed answer, and your time. Do we have information about hbunderangelow/midthresh? Whenever we change apd thresholds the hbunderrangegighthresh and hbhighthresh are changing too, using the equation it the guide. But there is not equation for the other two thresholds. Furthermore, by sampling code in C I observed with my manager that these 2 values are always equal to:
Thank you for your detailed answer, and your time. Do we have information about hbunderangelow/midthresh? Whenever we change apd thresholds the hbunderrangegighthresh and hbhighthresh are changing too, using the equation it the guide. But there is not equation for the other two thresholds. Furthermore, by sampling code in C I observed with my manager that these 2 values are always equal to: