-
Notifications
You must be signed in to change notification settings - Fork 2
X411 installation
Download compressed SD card image (or build it - the instructions are on my meta-ettus fork wiki page)
Decompress it and copy to an SD card:
pbzip2 -d gnuradio-image-ni-titanium-rev1-mender-20230531193908.sdimg.bz2
dd if=gnuradio-image-ni-titanium-rev1-mender-20230531193908.sdimg of=/dev/mmcblk0 bs=4M
(mmcblk0 is example, put name of your SD card device there)
The card should boot Linux on your ZCU111. At first MPM daemon will fail as it won't be able to recognize on what kind of USRP it works. For this information it reads ZCU111's EEPROM. Normally it contains board name and its serial number. On newer ZCU111s it can also contain MAC address. I repurposed it to store standard USRP motherboard constants.
You need to backup content of the EEPROM in case you want to restore it. This shouldn't be necessary to run other projects but you never know. For this you'll need to be able to execute commands on the boards i.e. through serial port, by connecting to JTAG Micro USB port:
picocom -b 115200 /dev/ttyUSB1
login to the board (user 'root') and execute:
cat eeprom-path mb_eeprom > ~/original_zcu111_eeprom
You can later copy the file from SD card to your PC or download it through sftp and verify the content.
Now write USRP's EEPROM content with command like in the example below:
eeprom-init mb_eeprom --board_info 0x0411 1 1 91945518 --module_info 0x4012 1 203237424 \
--mac_addr_0 34:48:ed:66:d1:50 --mac_addr_1 34:48:ed:66:d1:51 \
--mac_addr_2 34:48:ed:66:d1:53 --mac_addr_3 34:48:ed:66:d1:54 \
--mac_addr_4 34:48:ed:66:d1:55 --mac_addr_5 34:48:ed:66:d1:56
The numbers 91945518 and 203237424 are parts of serial number of a ZCU111. You can put there whatever you like. MAC addresses will be used by network interfaces of the board. After executing it reboot the board. When it will boot, login and try running: uhd_find_devices
You should see something like:
--------------------------------------------------
-- UHD Device 0
--------------------------------------------------
Device Address:
serial: 1462069
claimed: False
fpga: X4_200
mgmt_addr: 127.0.0.1
name: pk-x4xx-1462069
product: x411
type: x4xx
You'll also need to compile my version of UHD and install it on your PC. There are some changes on the host side that need to be added. I.e. support for frequency tuning without analog fron-end, but with use of builtin digital mixers or support for ZCU111's clocking chips. Do:
git clone https://github.com/ptrkrysik/uhd.git
YOUR_PREFIX_PATH=~/prefix
cd uhd/host
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -GNinja -DCMAKE_INSTALL_PREFIX=${YOUR_PREFIX_PATH} -DCMAKE_PREFIX_PATH=${YOUR_PREFIX_PATH} ..
ninja && ninja install
Inside of ${YOUR_PREFIX_PATH} directory put a 'setup_env.sh' with content like this:
YOUR_PREFIX_PATH=~/prefix
export PATH="${YOUR_PREFIX_PATH}/bin:$PATH"
export LD_LIBRARY_PATH="${YOUR_PREFIX_PATH}/lib"
export PYTHONPATH="${YOUR_PREFIX_PATH}/lib/python3.8/site-packages:${YOUR_PREFIX_PATH}/lib/python3/dist-packages:$PYTHONPATH"
To work with newly compiled UHD you'll need to execute:
source ${YOUR_PREFIX_PATH}/setup_env.sh
Now configure network interfaces. First you can try to connect through 1Gb link. This interface of x411 obtains address from DHCP server. You can run ifconfig on the board through serial console to find out what value of the IP is set currently on eth0.
After that you can try executing:
uhd_find_devices
and
uhd_usrp_probe
Then you can try to attach SFP+ interface and check if it also works (the default address for the first interface is 192.168.10.2).