CN0566 “Phaser” Quick Start Guide.
This is the minimum amount of setup to get the phaser up and running.
Figure 2. EVAL-CN0566-RPIZ Circuit Evaluation Block assignment
The SD card that ships with the first phaser production run MUST be updated with a new image. The Phaser works with Kuiper Linux 2021_R2 (or later), which, in spite of the “2021” in the name, was released in Spring, 2023.
In order for the Raspberry Pi to control the Phaser devices, you will need to write the ADI Kuiper Linux image to an SD card and configure it. Complete instructions, including where to download the SD card image, how to write it to the SD card, and how to configure an example system are provided at Analog Devices Kuiper Linux.
Hints: The Kuiper Linux wiki pages give a few options, but the “official” Raspberry Pi imager is very straightforward:
Raspberry Pi Imager
Switch to ADI Kuiper Imager once it's stable and documented on the wiki.
After writing the image, if a window pops up saying “this card needs to be formatted, would you like to format it now?”, the answer is NO. Eject the card and insert it into the Raspberry Pi's SD card slot.
Figure 3. Test Setup Functional Block Diagram
The easiest way to configure the SD card is by running a setup script. This does require a wired or wireless internet connection, but it is much easier than doing things manually. A wired connection is fairly straightforward if your network supports DHCP. If you need to use a wireless connection, you'll have to boot to the graphical desktop and connect manually.
Once connected to a network, run the following commands (and take a look at the setup script if you're suspicious, and note that there may be some updates as newer versions of Kuiper Linux are released.) The script is commented if you want a detailed description of what it's doing.
wget https://github.com/mthoren-adi/rpi_setup_stuff/raw/main/phaser/phaser_sdcard_setup.sh sudo chmod +x phaser_sdcard_setup.sh ./phaser_sdcard_setup.sh sudo reboot
(Wait for the system to reboot)
Note: After running the script, the hostname will be phaser.local
If you are going to be running scripts and other software directly on the Raspberry Pi, it's a good idea set a few options using the Raspberry Pi configuration utility. This can be accessed from the Start Menu under Preferences, or by running:
from the command line. Set the locale, keyboard, timezone, and wifi country (if you'll be connecting to your network by wifi.)
At this point, the GUI can be run from the command line. Power up the HB100 source with either a 3V benchtop power supply or two AA cells and aim it a the phaser antenna. Run the following command to find the HB100 frequency:
cd ~/pyadi-iio/examples/phaser python phaser_find_hb100.py
Ideally, there should be a single, sharp peak as shown in the figure below.
Figure 1. Find HB100 script
If there is a single prominent peak, enter “y”. If there are several peaks or no visible peak, close the plot and enter 'n' at the prompt. Reposition the HB100 (and make sure there are no other sources nearby), then re-run the script.
Next run the GUI:
cd ~/pyadi-iio/examples/phaser python phaser_gui.py
The GUI should load and begin displaying the beam pattern as shown below. Figure x. Phaser GUI
The phaser board is initially uncalibrated; each element will have a slightly different gain and slight phase error due to numerous factors. The phaser_examples.py script provides a calibration utility that will generate calibration files. Shut down the GUI if it is running. Place the HB100 directly in front of the array at mechanical boresight , approximately 1.5 m away. Then run:
cd ~/pyadi-iio/examples/phaser python phaser_examples.py cal
The script provides debug information and plots as it is running, you may have to close out of each plot for the script to proceed. After running this script, files gain_cal_val.pkl and phase_cal_val.pkl will be placed in the working directory. The GUI program will also load these files automatically when run again.
Refer to CN0566 Calibration for additional details
The Pluto that ships with the phaser kit has been pre-configured. In case something goes wrong, here is how to update the firmware and settings.
A Pluto Rev C or higher is required. For the CN0566, a custom firmware image is used that incorporates a TDD engine and additional control signals.
REMOVE this when it's got a proper home on Github releases
The first step is to update the firmware to the latest release, following the procedure at:\ Pluto/M2k Firmware Updates. Make sure to upload the entire zip file, not the pluto.frm contained within.
Next, download and unzip the updated firmware image, located here:
(Yes, unzip, UNlike upgrading to the latest release.)
Drag and drop the pluto_DW_feb_7_2022.frm to the Pluto mass storage device, then eject.
For Reference - OLD version (do NOT use):
The next step is to update the Pluto configuration to enable the AD9361's second channel. Follow the directions at:
Updating to the AD9364,
For setting the mode of a Rev. C PlutoSDR to 2r2t, the following would be sequence of commands:
Verify that the configuration was programmed properly by entering the following commands:
fw_printenv attr_name fw_printenv attr_val fw_printenv compatible fw_printenv mode
Wihich should return:
# fw_printenv attr_name attr_name=compatible # fw_printenv attr_val attr_val=ad9361 # fw_printenv compatible compatible=ad9361 # fw_printenv mode mode=2r2t #
To manually edit config.txt, add the following:
# Phaser board overlay: dtoverlay=rpi-cn0566 # Heartbeat blinky: dtparam=act_led_gpio=26 dtparam=act_led_trigger=heartbeat # Short GPIO121 (pin 40) to ground for shutdown: dtoverlay=gpio-shutdown,gpio_pin=21,active_low=1,gpiopull=up
If you will be logging in via VNC, comment out the following line, and set the HDMI group and mode accordingly:
# dtoverlay=vc4-kms-v3d # uncomment to force a specific HDMI mode (this will force 1920x1080) hdmi_group=2 hdmi_mode=82
REMOVE this when merged:
For now - the CN0566 GUI and required pyadi-iio additions are in a development branch. The pyadi-iio that is pre-installed on Kuiper needs to be cleanly removed and replaced. Run the following commands:
cd ~ # Uninstall existing pyadi, reinstall from source: sudo pip3 uninstall -y pyadi-iio git clone https://github.com/analogdevicesinc/pyadi-iio.git cd pyadi-iio git checkout phaser sudo pip install .
End of Document