Post Go back to editing

Documentation for using the phaser_prod_tst.py to ascertain the health of the Phaser board.

Category: Hardware
Product Number: EVAL-CN0566-RPIZ

Does any documentation exist for using the phaser_prod_tst.py code to ascertain the health of the Phaser board?  In particular, what is the test configuration required for the Phaser PCB, Raspberry Pi, and Pluto boards?  Is the USB cable required to be attached to the Raspberry Pi to connect it to the Pluto for this test?  Can the test be run on a terminal with the RealVNC Viewer, or only on a terminal resident on the Raspberry Pi?  What is the format for the data provided by the phaser_prod_tst.py on a terminal, and will it identify if any problems exist with the hardware?

  • Hi  ,

    This page may be slightly out of date, but the test configuration is shown here:

    https://wiki.analog.com/resources/eval/user-guides/circuits-from-the-lab/cn0566/assy_prod_test#test

    Basically, the board tests itself to a large degree. The Pluto has its own production test so we know that it's functional, so if a frequency or signal amplitude is far off, we'll flag it.

    The production test script is fairly straightforward - measure the board's supply voltages and current draw from the 5 V supply, make sure the VCO tuning voltage is within range. Then make sure the signal level and phase of all elements is within a fairly wide range. Note that off the shelf, the gain and phase per element can have a wide range - the first thing you do when following the setup and exercises is calibrate the array.

    We don't have a fully documented description of what the script prints out and saves. But again, it's pretty straightforward, and it prints quite a bit of information to the terminal.

    It does look like the script can be run either directly on the Pi, or on a remote Windows/Linux/Mac, we've got the same construct for detecting where the script is running that we use in the other scripts:

    https://github.com/analogdevicesinc/pyadi-iio/blob/main/examples/phaser/phaser_prod_tst.py#L107

    Was there a particular problem you were seeing?

    -Mark

  • Dear Mark,

    Thanks for the detailed reply to my inquiry.  I found this URL a few weeks ago when my transmitter stopped working, and a few other people also had this problem, and they were directed to disassemble and reassemble the Phaser, which fixed the problem for me.

    The phaser_prod_tst.py is an invaluable resource for ensuring the hardware is 100% functional, so I would suggest making a short video of the test procedure so everyone has access to a test procedure if hardware problems arise.  The hardware configuration is not obvious for using phaser_prod_tst.py for the Built In TEST (BIT), so sharing this information with everyone using the Phaser would be invaluable:


    Thanks,

    Scott

  • Noted,  , and thanks for the explanation.

    I'll add this to the to-do list (more complete, customer facing diagnostics and documentation on the production test script.)

    -Mar

  • Fun question, the phaser_prod_test.py code is asking the following question:

    Please enter serial number of board, then press enter.

    Where is the serial number located on the Phaser PCB?

  • Dear Mark,

    I ran the phaser_prod_tst.py program this morning, and received the following Terminal script from the code:

    analog@phaser:~/pyadi-iio/examples/phaser $ python phaser_prod_tst.py
    Attempting to connect to CN0566 via ip:localhost...
    Found CN0566. Connecting to PlutoSDR via default IP address...
    PlutoSDR connected.
    Using TX output closest to tripod mount, 10.525 GHz for production test.
    Reading voltage monitor...
    Passes Board temperature: 33.5
    Passes 1.8V supply: 1.799316404776
    Passes 3.0V supply: 3.007812497536
    Passes 3.3V supply: 3.2910156223039997
    Passes 4.5V supply: 4.5107604943516595
    Passes Vtune amp supply: 13.79355467620032
    Passes USB C input supply: 5.00760497636652
    Passes Board current: 1.406249998848
    Passes VTune: 8.080334466036838
    Passes all monitor readings, proceeding...

    Setting up Pluto and Getting signal levels...
    Loading filter
    [0.24160349646597354, 0.2626461022701198, 0.262428478338273, 0.2978474762366246, 0.2731829855112252, 0.2584496561000726, 0.24685198624764343, 0.2207468863223172]
    Low signal levels on attempt 0 of 5
    Loading filter
    [247.6397490163842, 250.113820000086, 257.34241515697954, 253.88912182655173, 285.87454777423466, 279.27555856446173, 291.0621750705172, 285.2198709572301]
    Calibrating SDR channel mismatch, gain and phase - place antenna at mechanical boresight in front of the array.

    Calibrating SDR channel mismatch, verbosely...
    channel mismatch: 1.0325336109253334 dB

    Calibrating Gain, verbosely, then saving cal file...
    Peak bin at 529 out of 1024
    Calibrating Element 0
    measuring element: 0
    Measured signal level (ADC counts): 277.8223790549068
    Calibrating Element 1
    measuring element: 1
    Measured signal level (ADC counts): 280.80813040991535
    Calibrating Element 2
    measuring element: 2
    Measured signal level (ADC counts): 290.9616068307133
    Calibrating Element 3
    measuring element: 3
    Measured signal level (ADC counts): 285.25996417600675
    Calibrating Element 4
    measuring element: 4
    Measured signal level (ADC counts): 281.012878946653
    Calibrating Element 5
    measuring element: 5
    Measured signal level (ADC counts): 282.3268392611768
    Calibrating Element 6
    measuring element: 6
    Measured signal level (ADC counts): 290.4900766346647
    Calibrating Element 7
    measuring element: 7
    Measured signal level (ADC counts): 280.26897572247253
    gcalibrated values: [277.8223790549068, 280.80813040991535, 290.9616068307133, 285.25996417600675, 281.012878946653, 282.3268392611768, 290.4900766346647, 280.26897572247253]

    Calibrating Phase, verbosely, then saving cal file...
    Peak bin at 529 out of 1024
    Calibrating Element 0
    Null found at 168.75
    Phase Delta to correct: 11.25
    Calibrating Element 1
    Null found at -180.0
    Phase Delta to correct: 0.0
    Calibrating Element 2
    Null found at -171.5625
    Phase Delta to correct: -8.4375
    Calibrating Element 3
    Null found at -50.625
    Phase Delta to correct: -129.375
    Calibrating Element 4
    Null found at -165.9375
    Phase Delta to correct: -14.0625
    Calibrating Element 5
    Null found at -168.75
    Phase Delta to correct: -11.25
    Calibrating Element 6
    Null found at -154.6875
    Phase Delta to correct: -25.3125
    Done calibration
    Phase cal failure on elements 2 , 3 129.375
    Test took 73.48022294044495 seconds.

    D'oh! BOARD FAILS!

    Phase cal failure on elements 2, 3, delta: 129.375

    Please enter serial number of board, then press enter.
    18

    The Phase Cal Failure for Elements 2 and 3 is an interesting problem, so is this a real issue that I need to address?  If so, what can I do to correct the problem?

    I attempted to run phaser_prod_test.py a second time to verify the results, but I received the following ERROR codes for voltage issues:

    analog@phaser:~/pyadi-iio/examples/phaser $ python phaser_prod_tst.py
    Attempting to connect to CN0566 via ip:localhost...
    Found CN0566. Connecting to PlutoSDR via default IP address...
    PlutoSDR connected.
    Using TX output closest to tripod mount, 10.525 GHz for production test.
    Reading voltage monitor...
    Passes Board temperature: 43.0
    Passes 1.8V supply: 1.799316404776
    Passes 3.0V supply: 3.007812497536
    Passes 3.3V supply: 3.287353512932
    Passes 4.5V supply: 4.5107604943516595
    Passes Vtune amp supply: 13.798425281665079
    Passes USB C input supply: 4.9537597615668805
    Fails Board current: : 1.6308593736639998
    Passes VTune: 8.20209960265584
    Fails one or more supply voltage tests. Please set board aside for debug.

    It is interesting that the current sensor is detecting a current increase of 230 mA after 5 minutes of operation for the Phaser.  This value for current is a constant after more than 30-minutes of operation for the Phaser.

    However, if I cycle the power off and then turn it on again, the code runs again without the current error, but I still have the Channel 2 and 3 Phaser error as shown here:

    analog@phaser:~/pyadi-iio/examples/phaser $ python phaser_prod_tst.py
    Attempting to connect to CN0566 via ip:localhost...
    Found CN0566. Connecting to PlutoSDR via default IP address...
    PlutoSDR connected.
    Using TX output closest to tripod mount, 10.525 GHz for production test.
    Reading voltage monitor...
    Passes Board temperature: 38.25
    Passes 1.8V supply: 1.799316404776
    Passes 3.0V supply: 3.007812497536
    Passes 3.3V supply: 3.292236325428
    Passes 4.5V supply: 4.5107604943516595
    Passes Vtune amp supply: 13.798425281665079
    Passes USB C input supply: 5.000262447075659
    Passes Board current: 1.3586425770119999
    Passes VTune: 8.114428704290159
    Passes all monitor readings, proceeding...

    Setting up Pluto and Getting signal levels...
    Loading filter
    [0.35392264634822174, 0.3926604078423146, 0.3365584694503831, 0.2896056558418845, 0.3292108791228966, 0.33495417231093405, 0.3555392043823857, 0.38330623007622794]
    Low signal levels on attempt 0 of 5
    Loading filter
    [243.27091784303823, 245.41926747373503, 252.39118464291073, 248.99828213912517, 278.9178066078198, 279.7484660197247, 283.0954859121417, 277.1240895853924]
    Calibrating SDR channel mismatch, gain and phase - place antenna at mechanical boresight in front of the array.

    Calibrating SDR channel mismatch, verbosely...
    channel mismatch: 0.8052686711452801 dB

    Calibrating Gain, verbosely, then saving cal file...
    Peak bin at 529 out of 1024
    Calibrating Element 0
    measuring element: 0
    Measured signal level (ADC counts): 241.11691345029246
    Calibrating Element 1
    measuring element: 1
    Measured signal level (ADC counts): 243.00722182952677
    Calibrating Element 2
    measuring element: 2
    Measured signal level (ADC counts): 250.9369445651752
    Calibrating Element 3
    measuring element: 3
    Measured signal level (ADC counts): 247.57796659794118
    Calibrating Element 4
    measuring element: 4
    Measured signal level (ADC counts): 277.0681140683575
    Calibrating Element 5
    measuring element: 5
    Measured signal level (ADC counts): 277.76856868566773
    Calibrating Element 6
    measuring element: 6
    Measured signal level (ADC counts): 281.04349236827704
    Calibrating Element 7
    measuring element: 7
    Measured signal level (ADC counts): 275.45330834090976
    gcalibrated values: [241.11691345029246, 243.00722182952677, 250.9369445651752, 247.57796659794118, 277.0681140683575, 277.76856868566773, 281.04349236827704, 275.45330834090976]

    Calibrating Phase, verbosely, then saving cal file...
    Peak bin at 529 out of 1024
    Calibrating Element 0
    Null found at 168.75
    Phase Delta to correct: 11.25
    Calibrating Element 1
    Null found at -180.0
    Phase Delta to correct: 0.0
    Calibrating Element 2
    Null found at -171.5625
    Phase Delta to correct: -8.4375
    Calibrating Element 3
    Null found at -53.4375
    Phase Delta to correct: -126.5625
    Calibrating Element 4
    Null found at -165.9375
    Phase Delta to correct: -14.0625
    Calibrating Element 5
    Null found at -168.75
    Phase Delta to correct: -11.25
    Calibrating Element 6
    Null found at -154.6875
    Phase Delta to correct: -25.3125
    Done calibration
    Phase cal failure on elements 2 , 3 126.5625
    Test took 73.41785979270935 seconds.

    D'oh! BOARD FAILS!

    Phase cal failure on elements 2, 3, delta: 126.5625

    Please enter serial number of board, then press enter.
    18

    Hence, do I have a problem that I need to address and repair on the Phaser PCB, or is this a problem with the phaser_prod_test.py code?

    Thanks,

    Scott

  • The serial number is arbitrary, and used as part of the log file name. So you can type in anything, "ABCD" for example.