Post Go back to editing

Can cf-ad9361-lpc work with AD9361 in 1rx-1tx mode?

We are trying to write a small piece of code to record RF samples received by E310. The reference example code we use is ad9361-iiostream.c from the libiio/example. We setup the receiving stream channel for I and Q via device cf-ad9361-lpc. The code works well when AD9361 is in 2rx-2tx mode. However, if we change AD9361 to the 1rx-1tx mode, function iio_buffer_refill returns an error code -110. 

What might be the issue here? Thanks!

Top Replies

Parents Reply Children
  • If you're still having issues, please post your iio_info here.

  • Thanks for all your help. We are still having issues as the (unmodified) ad9361-iiostream still times out:

    root@usrp-e310-linux:~# /usr/share/examples/ad9361-iiostream
    * Acquiring IIO context
    * Acquiring AD9361 streaming devices
    * Configuring AD9361 for streaming
    * Acquiring AD9361 phy channel 0
    * Acquiring AD9361 RX lo channel
    * Acquiring AD9361 phy channel 0
    * Acquiring AD9361 TX lo channel
    * Initializing AD9361 IIO streaming channels
    * Enabling IIO streaming channels
    * Creating non-cyclic IIO buffers with 1 MiS
    * Starting IO streaming (press CTRL+C to cancel)
    Error refilling buf -110
    * Destroying buffers
    * Disabling streaming channels
    * Destroying context

    Here's my compatible string setting:

    cat /proc/device-tree/fpga-axi@0/cf-ad9361-dds-core-lpc@79024000/compatible

    adi,axi-ad9364-dds-6.00.a

    Here's my iio_info:

    Library version: 0.18 (git tag: v0.18)
    Compiled with backends: local xml ip usb
    IIO context created with local backend.
    Backend version: 0.18 (git tag: v0.18)
    Backend description string: Linux usrp-e310-linux 4.19.0-xilinx- #1 SMP PREEMPT Wed Nov 4 21:18:51 UTC 2020 armv7l
    IIO context has 1 attributes:
    local,kernel: 4.19.0-xilinx-
    IIO context has 4 devices:
    iio:device0: ad9361-phy
    11 channels found:
    altvoltage1: TX_LO (output)
    8 channel-specific attributes found:
    attr 0: external value: 0
    attr 1: fastlock_load value: 0
    attr 2: fastlock_recall ERROR: Invalid argument (-22)
    attr 3: fastlock_save value: 0 165,87,150,87,164,35,87,27,11,87,87,167,19,83,87,87
    attr 4: fastlock_store value: 0
    attr 5: frequency value: 2450000000
    attr 6: frequency_available value: [46875001 1 6000000000]
    attr 7: powerdown value: 0
    voltage1: (output)
    10 channel-specific attributes found:
    attr 0: filter_fir_en value: 0
    attr 1: hardwaregain value: -89.750000 dB
    attr 2: hardwaregain_available value: [-89.750000 0.250000 0.000000]
    attr 3: rf_bandwidth value: 18000000
    attr 4: rf_bandwidth_available value: [200000 1 40000000]
    attr 5: rf_port_select value: B
    attr 6: rf_port_select_available value: A B
    attr 7: rssi value: 0.00 dB
    attr 8: sampling_frequency value: 30720000
    attr 9: sampling_frequency_available value: [2083333 1 61440000]
    voltage0: (input)
    15 channel-specific attributes found:
    attr 0: bb_dc_offset_tracking_en value: 1
    attr 1: filter_fir_en value: 0
    attr 2: gain_control_mode value: slow_attack
    attr 3: gain_control_mode_available value: manual fast_attack slow_attack hybrid
    attr 4: hardwaregain value: 71.000000 dB
    attr 5: hardwaregain_available value: [-3 1 71]
    attr 6: quadrature_tracking_en value: 1
    attr 7: rf_bandwidth value: 18000000
    attr 8: rf_bandwidth_available value: [200000 1 56000000]
    attr 9: rf_dc_offset_tracking_en value: 1
    attr 10: rf_port_select value: B_BALANCED
    attr 11: rf_port_select_available value: A_BALANCED B_BALANCED C_BALANCED A_N A_P B_N B_P C_N C_P TX_MONITOR1 TX_MONITOR2 TX_MONITOR1_2
    attr 12: rssi value: 114.50 dB
    attr 13: sampling_frequency value: 30720000
    attr 14: sampling_frequency_available value: [2083333 1 61440000]
    voltage1: (input)
    15 channel-specific attributes found:
    attr 0: bb_dc_offset_tracking_en value: 1
    attr 1: filter_fir_en value: 0
    attr 2: gain_control_mode value: slow_attack
    attr 3: gain_control_mode_available value: manual fast_attack slow_attack hybrid
    attr 4: hardwaregain value: 0.000000 dB
    attr 5: hardwaregain_available value: [-3 1 71]
    attr 6: quadrature_tracking_en value: 1
    attr 7: rf_bandwidth value: 18000000
    attr 8: rf_bandwidth_available value: [200000 1 56000000]
    attr 9: rf_dc_offset_tracking_en value: 1
    attr 10: rf_port_select value: B_BALANCED
    attr 11: rf_port_select_available value: A_BALANCED B_BALANCED C_BALANCED A_N A_P B_N B_P C_N C_P TX_MONITOR1 TX_MONITOR2 TX_MONITOR1_2
    attr 12: rssi value: 0.00 dB
    attr 13: sampling_frequency value: 30720000
    attr 14: sampling_frequency_available value: [2083333 1 61440000]
    voltage3: (output)
    8 channel-specific attributes found:
    attr 0: filter_fir_en value: 0
    attr 1: raw value: 306
    attr 2: rf_bandwidth value: 18000000
    attr 3: rf_bandwidth_available value: [200000 1 40000000]
    attr 4: rf_port_select_available value: A B
    attr 5: sampling_frequency value: 30720000
    attr 6: sampling_frequency_available value: [2083333 1 61440000]
    attr 7: scale value: 1.000000
    altvoltage0: RX_LO (output)
    8 channel-specific attributes found:
    attr 0: external value: 0
    attr 1: fastlock_load value: 0
    attr 2: fastlock_recall ERROR: Invalid argument (-22)
    attr 3: fastlock_save value: 0 5,110,110,163,110,174,168,110,110,165,110,42,110,110,232,232
    attr 4: fastlock_store value: 0
    attr 5: frequency value: 2400000000
    attr 6: frequency_available value: [70000000 1 6000000000]
    attr 7: powerdown value: 0
    voltage2: (output)
    8 channel-specific attributes found:
    attr 0: filter_fir_en value: 0
    attr 1: raw value: 306
    attr 2: rf_bandwidth value: 18000000
    attr 3: rf_bandwidth_available value: [200000 1 40000000]
    attr 4: rf_port_select_available value: A B
    attr 5: sampling_frequency value: 30720000
    attr 6: sampling_frequency_available value: [2083333 1 61440000]
    attr 7: scale value: 1.000000
    temp0: (input)
    1 channel-specific attributes found:
    attr 0: input value: 20175
    voltage0: (output)
    10 channel-specific attributes found:
    attr 0: filter_fir_en value: 0
    attr 1: hardwaregain value: -10.000000 dB
    attr 2: hardwaregain_available value: [-89.750000 0.250000 0.000000]
    attr 3: rf_bandwidth value: 18000000
    attr 4: rf_bandwidth_available value: [200000 1 40000000]
    attr 5: rf_port_select value: B
    attr 6: rf_port_select_available value: A B
    attr 7: rssi value: 0.00 dB
    attr 8: sampling_frequency value: 30720000
    attr 9: sampling_frequency_available value: [2083333 1 61440000]
    voltage2: (input)
    13 channel-specific attributes found:
    attr 0: bb_dc_offset_tracking_en value: 1
    attr 1: filter_fir_en value: 0
    attr 2: gain_control_mode_available value: manual fast_attack slow_attack hybrid
    attr 3: offset value: 57
    attr 4: quadrature_tracking_en value: 1
    attr 5: raw value: 0
    attr 6: rf_bandwidth value: 18000000
    attr 7: rf_bandwidth_available value: [200000 1 56000000]
    attr 8: rf_dc_offset_tracking_en value: 1
    attr 9: rf_port_select_available value: A_BALANCED B_BALANCED C_BALANCED A_N A_P B_N B_P C_N C_P TX_MONITOR1 TX_MONITOR2 TX_MONITOR1_2
    attr 10: sampling_frequency value: 30720000
    attr 11: sampling_frequency_available value: [2083333 1 61440000]
    attr 12: scale value: 0.305250
    out: (input)
    1 channel-specific attributes found:
    attr 0: voltage_filter_fir_en value: 0
    18 device-specific attributes found:
    attr 0: calib_mode value: auto
    attr 1: calib_mode_available value: auto manual manual_tx_quad tx_quad rf_dc_offs rssi_gain_step
    attr 2: dcxo_tune_coarse ERROR: No such device (-19)
    attr 3: dcxo_tune_coarse_available value: [0 0 0]
    attr 4: dcxo_tune_fine ERROR: No such device (-19)
    attr 5: dcxo_tune_fine_available value: [0 0 0]
    attr 6: ensm_mode value: fdd
    attr 7: ensm_mode_available value: sleep wait alert fdd pinctrl pinctrl_fdd_indep
    attr 8: filter_fir_config value: FIR Rx: 0,0 Tx: 0,0
    attr 9: gain_table_config value: <gaintable AD9361 type=FULL dest=3 start=1300000000 end=4000000000>
    -3, 0x00, 0x00, 0x20
    -3, 0x00, 0x00, 0x00
    -3, 0x00, 0x00, 0x00
    -2, 0x00, 0x01, 0x00
    -1, 0x00, 0x02, 0x00
    0, 0x00, 0x03, 0x00
    1, 0x00, 0x04, 0x00
    2, 0x00, 0x05, 0x00
    3, 0x01, 0x03, 0x20
    4, 0x01, 0x04, 0x00
    5, 0x01, 0x05, 0x00
    6, 0x01, 0x06, 0x00
    7, 0x01, 0x07, 0x00
    8, 0x01, 0x08, 0x00
    9, 0x01, 0x09, 0x00
    10, 0x01, 0x0A, 0x00
    11, 0x01, 0x0B, 0x00
    12, 0x01, 0x0C, 0x00
    13, 0x01, 0x0D, 0x00
    14, 0x01, 0x0E, 0x00
    15, 0x02, 0x09, 0x20
    16, 0x02, 0x0A, 0x00
    17, 0x02, 0x0B, 0x00
    18, 0x02, 0x0C, 0x00
    19, 0x02, 0x0D, 0x00
    20, 0x02, 0x0E, 0x00
    21, 0x02, 0x0F, 0x00
    22, 0x02, 0x10, 0x00
    23, 0x02, 0x2B, 0x20
    24, 0x02, 0x2C, 0x00
    25, 0x04, 0x27, 0x20
    26, 0x04, 0x28, 0x00
    27, 0x04, 0x29, 0x00
    28, 0x04, 0x2A, 0x00
    29, 0x04, 0x2B, 0x00
    30, 0x24, 0x21, 0x20
    31, 0x24, 0x22, 0x00
    32, 0x44, 0x20, 0x20
    33, 0x44, 0x21, 0x00
    34, 0x44, 0x22, 0x00
    35, 0x44, 0x23, 0x00
    36, 0x44, 0x24, 0x00
    37, 0x44, 0x25, 0x00
    38, 0x44, 0x26, 0x00
    39, 0x44, 0x27, 0x00
    40, 0x44, 0x28, 0x00
    attr 10: multichip_sync ERROR: Permission denied (-13)
    attr 11: rssi_gain_step_error value: lna_error: 0 0 0 0
    mixer_error: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    gain_step_calib_reg_val: 0 0 0 0 0
    attr 12: rx_path_rates value: BBPLL:983040000 ADC:245760000 R2:122880000 R1:61440000 RF:30720000 RXSAMP:30720000
    attr 13: trx_rate_governor value: nominal
    attr 14: trx_rate_governor_available value: nominal highest_osr
    attr 15: tx_path_rates value: BBPLL:983040000 DAC:122880000 T2:122880000 T1:61440000 TF:30720000 TXSAMP:30720000
    attr 16: xo_correction value: 40000000
    attr 17: xo_correction_available value: [39992000 1 40008000]
    182 debug attributes found:
    debug attr 0: digital_tune value: 0
    debug attr 1: calibration_switch_control value: 0
    debug attr 2: multichip_sync value: 0
    debug attr 3: gaininfo_rx2 ERROR: Resource temporarily unavailable (-11)
    debug attr 4: gaininfo_rx1 value: 71 76 0 0 0 0 0 0
    debug attr 5: bist_timing_analysis value: 0
    debug attr 6: gpo_set value: 0
    debug attr 7: bist_tone value: 0
    debug attr 8: bist_prbs value: 0
    debug attr 9: loopback value: 0
    debug attr 10: initialize value: 0
    debug attr 11: adi,bb-clk-change-dig-tune-enable value: 0
    debug attr 12: adi,axi-half-dac-rate-enable value: 0
    debug attr 13: adi,txmon-2-lo-cm value: 48
    debug attr 14: adi,txmon-1-lo-cm value: 48
    debug attr 15: adi,txmon-2-front-end-gain value: 2
    debug attr 16: adi,txmon-1-front-end-gain value: 2
    debug attr 17: adi,txmon-duration value: 8192
    debug attr 18: adi,txmon-delay value: 511
    debug attr 19: adi,txmon-one-shot-mode-enable value: 0
    debug attr 20: adi,txmon-dc-tracking-enable value: 0
    debug attr 21: adi,txmon-high-gain value: 24
    debug attr 22: adi,txmon-low-gain value: 0
    debug attr 23: adi,txmon-low-high-thresh value: 37000
    debug attr 24: adi,gpo3-tx-delay-us value: 0
    debug attr 25: adi,gpo3-rx-delay-us value: 0
    debug attr 26: adi,gpo2-tx-delay-us value: 0
    debug attr 27: adi,gpo2-rx-delay-us value: 0
    debug attr 28: adi,gpo1-tx-delay-us value: 0
    debug attr 29: adi,gpo1-rx-delay-us value: 0
    debug attr 30: adi,gpo0-tx-delay-us value: 0
    debug attr 31: adi,gpo0-rx-delay-us value: 0
    debug attr 32: adi,gpo3-slave-tx-enable value: 0
    debug attr 33: adi,gpo3-slave-rx-enable value: 0
    debug attr 34: adi,gpo2-slave-tx-enable value: 0
    debug attr 35: adi,gpo2-slave-rx-enable value: 0
    debug attr 36: adi,gpo1-slave-tx-enable value: 0
    debug attr 37: adi,gpo1-slave-rx-enable value: 0
    debug attr 38: adi,gpo0-slave-tx-enable value: 0
    debug attr 39: adi,gpo0-slave-rx-enable value: 0
    debug attr 40: adi,gpo3-inactive-state-high-enable value: 0
    debug attr 41: adi,gpo2-inactive-state-high-enable value: 0
    debug attr 42: adi,gpo1-inactive-state-high-enable value: 0
    debug attr 43: adi,gpo0-inactive-state-high-enable value: 0
    debug attr 44: adi,gpo-manual-mode-enable-mask value: 0
    debug attr 45: adi,gpo-manual-mode-enable value: 0
    debug attr 46: adi,aux-dac2-tx-delay-us value: 0
    debug attr 47: adi,aux-dac2-rx-delay-us value: 0
    debug attr 48: adi,aux-dac2-active-in-alert-enable value: 0
    debug attr 49: adi,aux-dac2-active-in-tx-enable value: 0
    debug attr 50: adi,aux-dac2-active-in-rx-enable value: 0
    debug attr 51: adi,aux-dac2-default-value-mV value: 0
    debug attr 52: adi,aux-dac1-tx-delay-us value: 0
    debug attr 53: adi,aux-dac1-rx-delay-us value: 0
    debug attr 54: adi,aux-dac1-active-in-alert-enable value: 0
    debug attr 55: adi,aux-dac1-active-in-tx-enable value: 0
    debug attr 56: adi,aux-dac1-active-in-rx-enable value: 0
    debug attr 57: adi,aux-dac1-default-value-mV value: 0
    debug attr 58: adi,aux-dac-manual-mode-enable value: 1
    debug attr 59: adi,aux-adc-decimation value: 256
    debug attr 60: adi,aux-adc-rate value: 40000000
    debug attr 61: adi,temp-sense-decimation value: 256
    debug attr 62: adi,temp-sense-periodic-measurement-enable value: 1
    debug attr 63: adi,temp-sense-offset-signed value: 206
    debug attr 64: adi,temp-sense-measurement-interval-ms value: 1000
    debug attr 65: adi,elna-gaintable-all-index-enable value: 0
    debug attr 66: adi,elna-rx2-gpo1-control-enable value: 0
    debug attr 67: adi,elna-rx1-gpo0-control-enable value: 0
    debug attr 68: adi,elna-bypass-loss-mdB value: 0
    debug attr 69: adi,elna-gain-mdB value: 0
    debug attr 70: adi,elna-settling-delay-ns value: 0
    debug attr 71: adi,ctrl-outs-enable-mask value: 255
    debug attr 72: adi,ctrl-outs-index value: 0
    debug attr 73: adi,rssi-duration value: 1000
    debug attr 74: adi,rssi-wait value: 1
    debug attr 75: adi,rssi-delay value: 1
    debug attr 76: adi,rssi-unit-is-rx-samples-enable value: 0
    debug attr 77: adi,rssi-restart-mode value: 3
    debug attr 78: adi,fagc-adc-large-overload-inc-steps value: 2
    debug attr 79: adi,fagc-power-measurement-duration-in-state5 value: 64
    debug attr 80: adi,fagc-rst-gla-if-en-agc-pulled-high-mode value: 0
    debug attr 81: adi,fagc-rst-gla-en-agc-pulled-high-enable value: 0
    debug attr 82: adi,fagc-rst-gla-large-lmt-overload-enable value: 1
    debug attr 83: adi,fagc-rst-gla-large-adc-overload-enable value: 1
    debug attr 84: adi,fagc-energy-lost-stronger-sig-gain-lock-exit-cnt value: 8
    debug attr 85: adi,fagc-rst-gla-engergy-lost-sig-thresh-below-ll value: 10
    debug attr 86: adi,fagc-rst-gla-engergy-lost-goto-optim-gain-enable value: 1
    debug attr 87: adi,fagc-rst-gla-engergy-lost-sig-thresh-exceeded-enable value: 1
    debug attr 88: adi,fagc-rst-gla-stronger-sig-thresh-above-ll value: 10
    debug attr 89: adi,fagc-optimized-gain-offset value: 5
    debug attr 90: adi,fagc-rst-gla-stronger-sig-thresh-exceeded-enable value: 1
    debug attr 91: adi,fagc-use-last-lock-level-for-set-gain-enable value: 1
    debug attr 92: adi,fagc-gain-index-type-after-exit-rx-mode value: 0
    debug attr 93: adi,fagc-gain-increase-after-gain-lock-enable value: 0
    debug attr 94: adi,fagc-final-overrange-count value: 3
    debug attr 95: adi,fagc-lmt-final-settling-steps value: 1
    debug attr 96: adi,fagc-lpf-final-settling-steps value: 1
    debug attr 97: adi,fagc-lock-level-gain-increase-upper-limit value: 5
    debug attr 98: adi,fagc-lock-level-lmt-gain-increase-enable value: 1
    debug attr 99: adi,fagc-lp-thresh-increment-steps value: 1
    debug attr 100: adi,fagc-lp-thresh-increment-time value: 5
    debug attr 101: adi,fagc-allow-agc-gain-increase-enable value: 0
    debug attr 102: adi,fagc-state-wait-time-ns value: 260
    debug attr 103: adi,fagc-dec-pow-measurement-duration value: 64
    debug attr 104: adi,agc-immed-gain-change-if-large-lmt-overload-enable value: 0
    debug attr 105: adi,agc-immed-gain-change-if-large-adc-overload-enable value: 0
    debug attr 106: adi,agc-gain-update-interval-us value: 1000
    debug attr 107: adi,agc-sync-for-gain-counter-enable value: 0
    debug attr 108: adi,agc-dig-gain-step-size value: 4
    debug attr 109: adi,agc-dig-saturation-exceed-counter value: 3
    debug attr 110: adi,agc-lmt-overload-large-inc-steps value: 2
    debug attr 111: adi,agc-lmt-overload-small-exceed-counter value: 10
    debug attr 112: adi,agc-lmt-overload-large-exceed-counter value: 10
    debug attr 113: adi,agc-adc-lmt-small-overload-prevent-gain-inc-enable value: 0
    debug attr 114: adi,agc-adc-large-overload-inc-steps value: 2
    debug attr 115: adi,agc-adc-large-overload-exceed-counter value: 10
    debug attr 116: adi,agc-adc-small-overload-exceed-counter value: 10
    debug attr 117: adi,agc-outer-thresh-low-inc-steps value: 2
    debug attr 118: adi,agc-outer-thresh-low value: 18
    debug attr 119: adi,agc-inner-thresh-low-inc-steps value: 1
    debug attr 120: adi,agc-inner-thresh-low value: 12
    debug attr 121: adi,agc-inner-thresh-high-dec-steps value: 1
    debug attr 122: adi,agc-inner-thresh-high value: 10
    debug attr 123: adi,agc-outer-thresh-high-dec-steps value: 2
    debug attr 124: adi,agc-outer-thresh-high value: 5
    debug attr 125: adi,agc-attack-delay-extra-margin-us value: 1
    debug attr 126: adi,mgc-split-table-ctrl-inp-gain-mode value: 0
    debug attr 127: adi,mgc-dec-gain-step value: 2
    debug attr 128: adi,mgc-inc-gain-step value: 2
    debug attr 129: adi,mgc-rx2-ctrl-inp-enable value: 0
    debug attr 130: adi,mgc-rx1-ctrl-inp-enable value: 0
    debug attr 131: adi,gc-use-rx-fir-out-for-dec-pwr-meas-enable value: 0
    debug attr 132: adi,gc-max-dig-gain value: 15
    debug attr 133: adi,gc-dig-gain-enable value: 0
    debug attr 134: adi,gc-low-power-thresh value: 24
    debug attr 135: adi,gc-dec-pow-measurement-duration value: 8192
    debug attr 136: adi,gc-lmt-overload-low-thresh value: 704
    debug attr 137: adi,gc-lmt-overload-high-thresh value: 800
    debug attr 138: adi,gc-adc-large-overload-thresh value: 58
    debug attr 139: adi,gc-adc-small-overload-thresh value: 47
    debug attr 140: adi,gc-adc-ovr-sample-size value: 4
    debug attr 141: adi,gc-rx2-mode value: 2
    debug attr 142: adi,gc-rx1-mode value: 2
    debug attr 143: adi,update-tx-gain-in-alert-enable value: 0
    debug attr 144: adi,tx-attenuation-mdB value: 10000
    debug attr 145: adi,rf-tx-bandwidth-hz value: 18000000
    debug attr 146: adi,rf-rx-bandwidth-hz value: 18000000
    debug attr 147: adi,qec-tracking-slow-mode-enable value: 0
    debug attr 148: adi,dc-offset-count-low-range value: 50
    debug attr 149: adi,dc-offset-count-high-range value: 40
    debug attr 150: adi,dc-offset-attenuation-low-range value: 5
    debug attr 151: adi,dc-offset-attenuation-high-range value: 6
    debug attr 152: adi,dc-offset-tracking-update-event-mask value: 5
    debug attr 153: adi,clk-output-mode-select value: 0
    debug attr 154: adi,external-rx-lo-enable value: 0
    debug attr 155: adi,external-tx-lo-enable value: 0
    debug attr 156: adi,xo-disable-use-ext-refclk-enable value: 1
    debug attr 157: adi,tx-lo-powerdown-managed-enable value: 1
    debug attr 158: adi,trx-synthesizer-target-fref-overwrite-hz value: 80008000
    debug attr 159: adi,rx1-rx2-phase-inversion-enable value: 0
    debug attr 160: adi,tx-rf-port-input-select-lock-enable value: 1
    debug attr 161: adi,rx-rf-port-input-select-lock-enable value: 1
    debug attr 162: adi,tx-rf-port-input-select value: 1
    debug attr 163: adi,rx-rf-port-input-select value: 1
    debug attr 164: adi,split-gain-table-mode-enable value: 0
    debug attr 165: adi,1rx-1tx-mode-use-tx-num value: 1
    debug attr 166: adi,1rx-1tx-mode-use-rx-num value: 1
    debug attr 167: adi,2rx-2tx-mode-enable value: 0
    debug attr 168: adi,digital-interface-tune-fir-disable value: 0
    debug attr 169: adi,digital-interface-tune-skip-mode value: 0
    debug attr 170: adi,tx-fastlock-pincontrol-enable value: 0
    debug attr 171: adi,rx-fastlock-pincontrol-enable value: 0
    debug attr 172: adi,rx-fastlock-delay-ns value: 0
    debug attr 173: adi,tx-fastlock-delay-ns value: 0
    debug attr 174: adi,tdd-skip-vco-cal-enable value: 0
    debug attr 175: adi,tdd-use-dual-synth-mode-enable value: 0
    debug attr 176: adi,debug-mode-enable value: 0
    debug attr 177: adi,ensm-enable-txnrx-control-enable value: 0
    debug attr 178: adi,ensm-enable-pin-pulse-mode-enable value: 0
    debug attr 179: adi,frequency-division-duplex-independent-mode-enable value: 0
    debug attr 180: adi,frequency-division-duplex-mode-enable value: 1
    debug attr 181: direct_reg_access value: 0x1
    iio:device1: xadc
    9 channels found:
    voltage5: vccoddr (input)
    2 channel-specific attributes found:
    attr 0: raw value: 2060
    attr 1: scale value: 0.732421875
    voltage0: vccint (input)
    2 channel-specific attributes found:
    attr 0: raw value: 1357
    attr 1: scale value: 0.732421875
    voltage4: vccpaux (input)
    2 channel-specific attributes found:
    attr 0: raw value: 2425
    attr 1: scale value: 0.732421875
    temp0: (input)
    3 channel-specific attributes found:
    attr 0: offset value: -2219
    attr 1: raw value: 2533
    attr 2: scale value: 123.040771484
    voltage7: vrefn (input)
    2 channel-specific attributes found:
    attr 0: raw value: -3
    attr 1: scale value: 0.732421875
    voltage1: vccaux (input)
    2 channel-specific attributes found:
    attr 0: raw value: 2438
    attr 1: scale value: 0.732421875
    voltage2: vccbram (input)
    2 channel-specific attributes found:
    attr 0: raw value: 1363
    attr 1: scale value: 0.732421875
    voltage3: vccpint (input)
    2 channel-specific attributes found:
    attr 0: raw value: 1363
    attr 1: scale value: 0.732421875
    voltage6: vrefp (input)
    2 channel-specific attributes found:
    attr 0: raw value: 1703
    attr 1: scale value: 0.732421875
    1 device-specific attributes found:
    attr 0: sampling_frequency value: 961538
    iio:device2: cf-ad9361-dds-core-lpc (buffer capable)
    6 channels found:
    voltage0: (output, index: 0, format: le:S16/16>>0)
    3 channel-specific attributes found:
    attr 0: calibphase value: 0.000000
    attr 1: calibscale value: 1.000000
    attr 2: sampling_frequency value: 30720000
    voltage1: (output, index: 1, format: le:S16/16>>0)
    3 channel-specific attributes found:
    attr 0: calibphase value: 0.000000
    attr 1: calibscale value: 1.000000
    attr 2: sampling_frequency value: 30720000
    altvoltage3: TX1_Q_F2 (output)
    5 channel-specific attributes found:
    attr 0: frequency value: 9279985
    attr 1: phase value: 0
    attr 2: raw value: 1
    attr 3: sampling_frequency value: 30720000
    attr 4: scale value: 0.250000
    altvoltage1: TX1_I_F2 (output)
    5 channel-specific attributes found:
    attr 0: frequency value: 9279985
    attr 1: phase value: 90000
    attr 2: raw value: 1
    attr 3: sampling_frequency value: 30720000
    attr 4: scale value: 0.250000
    altvoltage0: TX1_I_F1 (output)
    5 channel-specific attributes found:
    attr 0: frequency value: 9279985
    attr 1: phase value: 90000
    attr 2: raw value: 1
    attr 3: sampling_frequency value: 30720000
    attr 4: scale value: 0.250000
    altvoltage2: TX1_Q_F1 (output)
    5 channel-specific attributes found:
    attr 0: frequency value: 9279985
    attr 1: phase value: 0
    attr 2: raw value: 1
    attr 3: sampling_frequency value: 30720000
    attr 4: scale value: 0.250000
    3 buffer-specific attributes found:
    attr 0: data_available value: 0
    attr 1: length_align_bytes value: 8
    attr 2: watermark value: 2048
    1 debug attributes found:
    debug attr 0: direct_reg_access value: 0x90162
    iio:device3: cf-ad9361-lpc (buffer capable)
    4 channels found:
    voltage0: (input, index: 0, format: le:S12/16>>0)
    5 channel-specific attributes found:
    attr 0: calibbias value: 0
    attr 1: calibphase value: 0.000000
    attr 2: calibscale value: 1.000000
    attr 3: samples_pps ERROR: No such device (-19)
    attr 4: sampling_frequency value: 30720000
    voltage1: (input, index: 1, format: le:S12/16>>0)
    5 channel-specific attributes found:
    attr 0: calibbias value: 0
    attr 1: calibphase value: 0.000000
    attr 2: calibscale value: 1.000000
    attr 3: samples_pps ERROR: No such device (-19)
    attr 4: sampling_frequency value: 30720000
    voltage2: (input, index: 2, format: le:S12/16>>0)
    5 channel-specific attributes found:
    attr 0: calibbias value: 0
    attr 1: calibphase value: 0.000000
    attr 2: calibscale value: 1.000000
    attr 3: samples_pps ERROR: No such device (-19)
    attr 4: sampling_frequency value: 30720000
    voltage3: (input, index: 3, format: le:S12/16>>0)
    5 channel-specific attributes found:
    attr 0: calibbias value: 0
    attr 1: calibphase value: 0.000000
    attr 2: calibscale value: 1.000000
    attr 3: samples_pps ERROR: No such device (-19)
    attr 4: sampling_frequency value: 30720000
    3 buffer-specific attributes found:
    attr 0: data_available value: 0
    attr 1: length_align_bytes value: 8
    attr 2: watermark value: 2048
    2 debug attributes found:
    debug attr 0: pseudorandom_err_check value: CH0 : PN9 : Out of Sync : PN Error
    CH1 : PN9 : Out of Sync : PN Error
    CH2 : PN9 : Out of Sync : PN Error
    CH3 : PN9 : Out of Sync : PN Error
    debug attr 1: direct_reg_access value: 0x0

  • Wondering how are you removing the 

    adi,2rx-2tx-mode-enable;

    option? 

    Asking because your 

    iio:device3: cf-ad9361-lpc (buffer capable)

    device still has 4 channels.

    You need to remove: 

    adi,2rx-2tx-mode-enable;

    from your device tree node.

    -Michael

  • Hi Micheal, 

    We didn't remove the adi,2rx-2tx-mode-enable; we simply set it to 0.

    debug attr 167: adi,2rx-2tx-mode-enable value: 0

    Is there are programmatic way to remove the attribute or does this need to be done by modifying the device tree file? 

    -Josh

  • Michael, 

    This option is of value 0, which, in our understanding, that 2rx-2tx mode is being disabled. Why it has to be removed?

    As an example, we may want to switch between SISO and MIMO transmissions during operations. So we need to configure that above debug attribute during testing.

  • You must do this in the device tree. Otherwise it won't work.

    -Michael

  • Michael, It's still a puzzle here. My initial problem happened on the RX path, not TX. So if the AXI-ADC driver is internally connected and will automatically configure for AD9364, why I have the problem in the the first place?

    In other word, why the receiving chain problem needs to be solved by changing the configuration on the transmitter. The problem was time out trying to receive data. Why it matters that the DDS core only register one output IQ channel pair?

  • Michael, It's still a puzzle here. My initial problem happened on the RX path, not TX. So if the AXI-ADC driver is internally connected and will automatically configure for AD9364, why I have the problem in the the first place?

    Well - let me explain.

    The ad9361 driver stack consist of 3 devices. 

    The ad9361-phy, cf-ad9361-lpc and cf-ad9361-dds-core-lpc.

    The AXI-DAC-DDS driver is totally standalone. That's why it needs it own compatible string.

    Based on the compatible it registers different number of channels, sample sizes, etc.

    The number of channels are important for the IIO buffer DMA to calculate buffer sizes, transfer counts, etc.

    The ad9361-phy driver and the cf-ad9361-lpc instantiate separately since it uses different buses (SPI, platform_bus). However at some point during probe the cf-ad9361-lpc defers probe until the ad9361-phy driver is via SPI fully probed. At this point the cf-ad9361-lpc driver registers the number of IIO buffer channels configured by the ad9361-phy. And here is the issue.

    The ad9361-phy driver has the concept to set parameters with similar names as the dt attributes via debugsfs. When the initialize attribute is written, it reconfigures the device via SPI for the new mode.

    However it does not unregister the IIO devices. So the IIO core still thinks the device has 4 channels.

    And actually this attribute is the only one that doesn't work when set via debugfs!

     

    In other word, why the receiving chain problem needs to be solved by changing the configuration on the transmitter.

    Both iio_buffer_push and iio_buffer_refill can timeout (-ETIMEDOUT ERRNO:110).

    Most of the time people forget to update the compatible string on the independent DAC/DDS device.

    -Michael

  • Thanks Micheal. Removing the adi,2rx-2tx property seems to have done the trick. Is there a general rule of thumb for identifying when a property needs to be removed from the device tree vs when it can be modified from LibIIO? 

  • Standard attributes vs debug attributes are usually a good distinction. Avoid using debug attributes if you can and change static configurations in dev tree.

    -Travis