-
Notifications
You must be signed in to change notification settings - Fork 752
Expand file tree
/
Copy pathCHANGELOG
More file actions
3951 lines (3873 loc) · 160 KB
/
CHANGELOG
File metadata and controls
3951 lines (3873 loc) · 160 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
Change Log for Releases
==============================
## 004.010.000.000
* Highlights / Main Changes
- Support for USRP X420
- Addition of timed complex gain feature, which allows setting a complex gain
value to fix phase and amplitude of signals from radio blocks
* New Features
- CMake:
- Create UHD::uhd package for improved integration in downstream build
processes. The init_usrp example is used to showcase this feature.
- Improved options for RFNoC OOT modules to write unit tests.
- Add helper routines to up- and download data (reliably) from and to the
DRAM block
- X310: Allow daughterboards to set dboard clock rate
- Improve finding of MPM-based devices by making parts of the find call
asynchronous and allowing to skip reachability checks.
- RFNoC:
- Added new optional feature to all Radio blocks - Timed complex gain:
- Allows specifying complex gain coefficients to be applied to all
TX and/or RX samples of a radio channel at the specified time.
- Enabled by default for all TX and RX channels of the radio blocks,
but can be disabled at FPGA build time via the`EN_COMP_GAIN_TX`
and `EN_COMP_GAIN_RX` parameters of the radio blocks.
- NOTE: For the x440_X4_400 default FPGA design provided with UHD,
enabling this feature for all 8 RX and TX channels necessitated
restricting the existing crossbar connections between the replay
blocks and the radio blocks. As a result, only blocks with the same
indices can be connected (e.g. replay0<->radio0 and replay1<->radio1
only) when using this pre-built USRP FPGA image.
- Blocks may now drive the front-panel GPIO pins on all RFNoC-capable
devices. New IO signatures are added, and all device BSPs have IO ports
for accessing the GPIOs. Device controls are updated such that the user
can choose the source for GPIOs dynamically in this case (i.e., the
radio blocks and other GPIO sources are still available). In some cases,
the device BSP HDL had to be significantly refactored.
- Add names and descriptions for block's and module's YAML files, so that
other tools may read information about those in an automated fashion
- Allow `mtu` stream argument, which overrides the MTU value that is
derived from the link information.
- Action handling is now moved to its own thread (there is one action
handling thread per graph). This allows actions to be handled
asynchronously, e.g., when triggering actions from async message handlers.
- Add radio_state IO signature, so that other blocks can monitor the ATR
state of radio blocks.
- All RFNoC devices can now take an `mtu` stream argument (which overrides
the detected link MTU) and a `force_mtu` device argument (which skips
automatic MTU detection and forces a fixed value). These are helpful in
scenarios where a specific network topology interferes with path MTU
discovery, and for remote streaming when the MTU for a remote stream link
cannot be inferred from UHD.
- rfnoc_modtool has improved support for generating unit tests.
- Add PPS IO signature for all targets
- Add stream command to start receiving when a transmit occurs
- Null source/sink: Add finite mode.
- Add UX1/UX2/UX4 QSFP configurations for X4xx
* API Changes
- meta_range_t and uhd::dict can now be initialized from initializer lists
- Add rfnoc_graph::get_chdr_xport_adapters()
- Python API now allows creating SubdevSpec from a string
- Some public APIs that used `boost::optional` now also work with `std::optional`
- Unit tests for RFNoC blocks (in-tree and out-of-tree) no longer require a
dummy implementation of `~make_args_t()`
- `uhd::cast::to_str()` was added and `uhd::cast::from_str()` was extended to
be a full replacement for `boost::lexical_cast`
* Examples
- Overhauled many of the examples to improve documentation, as well as some
minor conveniences or bug fixes
- Added continuous streaming to tx_samples_from_file
- Improved gpio example.
* Bug Fixes
- Fix static UHD library builds
- Fix compatibility with Boost 1.89
- RFNoC:
- Fix slicing notation in rfnoc_image_builder
- Fix building of GRC files with empty default target (this would affect
builds of X410 and X440 device bitfiles from GNU Radio)
- Fix installation of OOT modules in Python venvs
- Fix time alignment of first sample
- Unit tests in RFNoC OOT modules now preload their DLLs to ensure the
correct library version is loaded
- Fix generation of GNU Radio C++ block controllers
- rfnoc_modtool: Fix creation of spurious unit tests, fix package_data for
Python module installation
- rfnoc_modtool: Fix connection check for invalid ports
- Fix alignment of first sample coming from radio block.
- Fix bug in ctrlport_endpoint which could cause the software to believe
the associated RFNoC block's command FIFO was full when packets were lost
- Add parameter to skip waiting for ACKs in async messages
- E31x: Fix GPIO control
- E3xx/B2xx: Fix rounding bug for RF PLL tuning
- B2xx: Fix image loading via b200_image_loader when multiple devices are
attached
- X410: Fix tuning when power calibration and non-default gain profiles are
used.
- Power calibration tools: Fix settings for E320, allow non-default sampling
rate, other minor fixes
- FPGA
- Fix various simulation-related bugs
- USRP Simulator: Update to match current UHD.
- multi_usrp:
- Improved bank name check in multi_usrp::{set,get}_gpio_attr()
- CMake:
- Allow absolute paths for install dirs in pkg-config
- Fix target include path for Python module
- USRP1: Fix converter name in property tree
- FPGA:
- Fix various simulation/testbench issues.
- Improve resource utilization in various places.
- MPM:
- Fix file descriptor leaks by using with/open everywhere.
- Fix double-free issue in rpclib.
- Remove tolerance for non-existing EEPROMs.
- Examples: Properly report errors when opening a file failed.
- Python: When installing into venvs, no longer force a reinstallation of
dependencies.
* Dependencies changes
- Increase minimum required versions
- Boost to 1.71
- DPDK to 19.11
- Changed minimum CMake versions for various non-UHD projects, e.g.
firmware builds, to stay compatible with CMake 4
* Documentation
- Restructured the UHD manual, improved chapter structure, improved getting
started content, added RFNoC specification.
- Fixed some external links
- Many smaller improvements (typos, duplicate entries removed, formatting,
etc.)
* Codebase Management
- Increased C++ version to 20 for UHD library, examples, and utilities
- Removed Boost in multiple locations and replaced with standard library
calls
- Fix numerous (mostly harmless) compiler and Doxygen warnings
- Improve CMake linking instructions
* Validated OS Environments
(Versions for build and runtime dependencies can be determined from the
docker container definitions in the UHD repository at .ci/docker/...)
- Linux:
- Ubuntu: jammy (22.04), noble (24.04), questing (25.10)
- Fedora: 40, 41, 42
- Windows: 10 22H2, 11 24H2
- MacOS: Sequoia (15.6)
## 004.009.000.001
Changes compared to UHD 4.9.0.0:
* Dependency changes
- Support Boost 1.89.0
- Drop support for boost below 1.71.0
* Fixes
- Fix static build of libuhd
* Notes
- We suggest to only update to this version if the boost 1.89.0 compability
is required. Apart from the Boost build fixes, there are no other changes
in this UHD release.
## 004.009.000.000
* Highlights / Main Changes
- Support for USRP B206mini-i
- Support for OBX daughterboard
* New Features
- OBX daughterboard and B206mini support added.
- X3x0: Add support for the gps_iface feature. This allows sending arbitrary
commands to the GPS module.
- rfnoc_modtool: Add a new subcommand, `make-yaml`, that generates a block
YAML file from some user inputs. When calling `rfnoc_modtool add` without
a valid block YAML file, the tool will now automatically call `make-yaml` to
generate a new YAML file.
- Added support for processing multiple samples per cycle in FFT block.
- LabVIEW/USRP: New repository containing example applications which
demonstrate how to use NI LabVIEW with USRP devices via the UHD APIs.
(https://github.com/ni/labview-usrp-examples)
- Improved RFNoC OOT Block support:
New repository containing official RFNoC OOT Blocks
(https://github.com/EttusResearch/rfnoc-oot-blocks)
- Added new RFNoC Aurora Block for TX and RX remote streaming applications
to and from Aurora capable compute nodes like FPGA Coprocessors.
- Enhanced the UHD Windows installer to automatically install Windows
driver packages into the OS, eliminating this manual post-installation
step for B-Series USB devices.
* API Changes
- `uhd::math::gcd` and `uhd::math::lcm` are removed from the public
headers. Use `std::gcd` and `std::lcm` instead if C++17 is available,
or `boost::math::gcd` and `boost::math::lcm` if not.
- When calling `recv()` on an RX streamer connected to an RFNoC device, we
no longer artificially inflate the timeout value. The old behaviour was
in some cases abused to detect overruns, but this is not a reliable method
and is now explicitly declared unsupported.
* Bug Fixes
- RFNoC
- Calling `recv()` on an RX streamer connected to an RFNoC device with a
zero timeout value now correctly returns immediately.
- rfnoc-gain: Moved the fpga/ subdirectory under rfnoc/. This way, the
directory structure inside the OOT module is identical to the directory
structure after installation.
- X410:
- Fixed NCO reset mechanism that caused ADC self-cal errors to occur during
reopening of a UHD session when timed tune commands were previously used.
* Removals / Deprecations
- Removed tools/uhd_dump. This tool is obsolete, the USRP X3x0 is not even
compatible with it any more. Dumps can be recorded and analyzed with wireshark
and the UHD dissectors in here.
- Removed network_relay example.
* Validated OS Environments
(Versions for build and runtime dependencies can be determined from the
docker container definitions in the UHD repository at .ci/docker/...)
- Linux:
- Ubuntu: focal (20.04), jammy (22.04), noble (24.04), plucky (25.04)
- Fedora: 40, 41, 42
- Windows: 10 22H2, 11 23H2
- MacOS: Sequoia (15.2)
## 004.008.000.000
* Highlights / Main Changes
- Addition of rfnoc_modtool and further improvements to RFNoC Image Builder
toolsets. This further improves the ability to design RFNoC blocks and
create custom FPGA bitfiles.
- Replaced RFNoC FFT block with a new version
- Improved Windows installation capabilities including distribution
of binary Python bindings for Windows though PyPI
* New Features
- Image Builder
- Add GRC support. This allows designing RFNoC bitfiles from GNU Radio
Companion (GRC).
- Improve clock connection checks and checks for duplicate connections.
- Improve IO port compat check (e.g., check if wire widths match).
- Allow default clocks in domain checks.
- Simplify image core YAMLs by better usage of RADIO_NIPC parameter.
- Improve parameter resolution.
- Improve error messages for missing YAML files.
- Add --SYNTH and --CHECK options.
- Add support for building an FPGA image using multiple parallel jobs and
unique seeds with repeat_fpga_build.py and the --fpga-jobs option.
- Add 'q' (or 'quote') filter to YAML files to allow quoting strings.
- rfnoc-gain (OOT RFNoC example)
- Overhaul directory structure, and rename to rfnoc-gain from
rfnoc-example.
- Simplify dynamic loading of OOT DLLs by using the new modules.d feature.
- Add CE clock support to gain block. This enables the example on X4x0.
- Add a GNU Radio subdirectory with examples of how to run the gain block
in GNU Radio.
- Add rfnoc_modtool. This is a command line utility to help design OOT RFNoC
blocks and replaces the previously available blocktool.
- RFNoC
- Add tune requests. This allows tuning a complete graph as known from
multi_usrp instead of single blocks individually.
- Replace FFT block with a new version supporting larger FFT sizes and
cyclic prefix insertion and removal.
- multi_usrp
- Add Python bindings for get_user_settings_iface()
- General UHD
- Add modules.d support
- Add uhd::find_uhd_command() API call
- Remove old-style Boost.Asio usage for compatibility with future versions
of Boost.
- Embedded Filesystem
- Support for USB Audio devices on E31X, E320, N3XX and X4XX
- Windows binary installer
- Simplified the Windows installer experience by reducing the number of
individual downloads from 4 (for USB devices) to 2, by including
libusb.dll and USB driver installer files into NSIS-built installer
binaries.
- Add new cmake feature option called ENABLE_EXTEND_WIN_PACKAGING,
which defaults to off. Enabling this feature will cause a number
of convenience components to be included into the Windows deployment
package (aka. installer).
Enabling this feature has no effect on other platforms.
- Added binary Python bindings for Windows installable through PyPI
(pip install uhd)
- Documentation
- Add documentation about relationship of MTU, samples per packet and
atomic item size
* Dependencies changes
- Increase minimum required versions
- CMake to 3.12
- Boost to 1.66
* Bug Fixes
- General UHD
- Fix compatibility with DPDK >= 22.11
- Fix compiler warnings for better compatibility with C++17 and 20.
- Add logic for loading uhd.dll from the correct path for Windows with
Python3.8+.
- Add logic to warn about potential incompatibilities when importing
Python bindings.
- Remove duplicate results from find
- Release GIL when calling find from Python which improves response time
for large setups.
- Python support
- On Windows now also enable building python support if minimum supported
python version is detected.
- Changed version number format for build Windows binaries to common
major.api.abi.patch format.
- MPM
- Allow images without RF frontend (will only be initialized if FPGA
reports availability)
- Fix usrp_update_fs to work for all embedded devices (and not just X4xx)
- E320: Ensure consistent sequencing when powering on/off GPSDO
- N310/N300: Fix LO query API for lowband LO
- RFNoC
- RFNoC DDC/DUC block (used in all Gen-3 USRPs and X410): Fix fractional
frequency offset.
- Fix AIS/spp calculation (e.g., for connecting FFT blocks).
- Fix USE_IMPL rendering for the addsub block.
- Image Builder
- Fix colors
- Fix error message for missing control SEP
- Improve error reporting for invalid connections
- Accept ~ and ~user on command line
- Fix deprecated usage of yaml.load()
- Ensure correct device tree files generation when choosing a custom build
directory
- rfnoc_modtool
- Fix generation of noc_shells
* Validated OS Environments
(Versions for build and runtime dependencies can be determined from the
docker container definitions in the UHD repository at .ci/docker/...)
- Linux:
- Ubuntu: bionic (18.04), focal (20.04), jammy (22.04), noble (24.04)
- Fedora: 39, 40, 41
- Windows: 10 21H2, 11 21H2
- MacOS: Monterey (12.6)
## 004.007.000.000
* Highlights / Main Changes
- Major updates to rfnoc_image_builder (a98ce26). This change adds support for
defining transport adapters in the image builder YAML files, adding custom
modules, and more.
- Updated embedded OS on file system images for E3xx, N3xx, and X4xx devices
to Yocto 4.0 (kirkstone).
* New Features
- General
- Allow installing only Python-based utilities (e.g., rfnoc_image_builder)
by adding the ENABLE_PYMOD_UTILS option to CMake.
- Added ability to query dot representation of RFNoC graph
- Python support
- Added DRAMReceiver class and amend rx_to_file.py example to use new class.
This supplements the DRAMTransmitter class and simplifies using the DRAM-backed
RFNoC replay block to when signal bandwidth exceeds available streaming bandwidth.
- CMake
- We now search for a system version of Pybind11 before falling back to the
bundled version. The system version is preferred, and the bundled version
may be removed in a future release.
- RFNoC
- Image builder: Major update, which adds support for defining transport
adapters in the image builder YAML files, adding custom modules, choosing
custom directories for build, IP, and intermediate files, building IP
only, saving Vivado projects, and more. Image core YAML files created with
this version are not compatible with previous versions, and vice versa!
Also adds many more checks to avoid building bitfiles that are either
incomplete, or valid but probably not the desired outcome.
- Added support for defining custom register spaces in RFNoC blocks.
- Added license checking subsystem. This allows creating RFNoC blocks that
require a license key to operate.
- Add device DNA feature for X310, X410, X440. This allows reading back the
FPGA's DNA, which is a unique identifier.
- Embedded OS for E3xx, N3xx, and X4xx devices
- With the switch to Yocto 4.0 (kirkstone), the SD card and eMMC images no
longer pre-populate the second system partition. Refer to the device
specific "Updating Filesystems" section in the user manual for how to populate it.
This reduces the size of compressed .sdimg filesystem images.
- X440
- Added new guided log info mode to provide more information about the Nyquist
zone in which the chosen frequency is located. These additional info logs
are enabled by default. For disabling the guided mode, add the entry
`guided_mode=false` to the UHD config file in the "Global" section.
- Examples
- rfnoc-example now also generates Python bindings for OOT block control functions.
* Dependencies changes
- Increase minimum required version
- Python to 3.7.0
- Pybind11 to 2.7.0
* Bug Fixes
- General UHD
- Fix issue with undefined HOME or XDG_CONFIG_HOME
- Fix compilation error with boost 1.85.0 (closed issue 740)
- Fixed cmake find_library for UHD to fail if the library is not found
- Fixed setters for ALL_CHANS in multi_usrp
- Demoted safe call logging to warning
- Fixed outstanding clang-format issues
- Fixed compiling with gcc 13.2
- Removed superfluous usage of const in return values
- Python support
- YAML files are now listed as part of the package
- Fix setting start_time having no effect
- RFNoC
- Add EOB to source port of null_src_sink block
- Fix RFNoC graph action queue lockup on action exceptions
- FIR filters now uses newer IP revisions
- Reverse FIR filter coefficients now get embedded in DSPE48
- B2xx
- Fixed FRAC2 calculation (closed issue 684).
- Fix DC truncation bias by adding rounding to DDC chain
- X310
- Fix warning about duplicate reg
- ubx
- update ubx xcvr mode options
- write output power to correct LO
- Fix width of gain register
- MPM
- Deactivate explicit DAD (Duplicate Address Detection) on int0 interface
since this is the default behavior of systemd v250.5 (Yocto release kirkstone)
for static IPv4 addresses if the IP address is a link local address.
- Correct outdated mender command in prints of usrp_update_fs utility
- No longer import from from rpc_server when already importing usrp_mpm
- Demoted log level of ECHO send error
- No longer print iptables errors when setting up forwarding
- X400 Platform
- Add PPS interface to X410/X440 BSP
- Add netlist make flow
- Update PS DRAM speed bin
- Replace Ethernet transport adapter
- X410
- Set Locale for ZBX Lattice build
- Improve Lattice make flow
- X440
- Fix error in master clock table for 1000MHz mcr.
- Place SPI into IOB on X440
- mpm
- Add error for recurring TA node inst values
- Fix warning about different converter rates
- Fix MTS skip for dual-rate
- Use greatest converter rate for sysref rate
- Add warning for bad conv rate order
- Enable multiple LMK VCO rates per MCR
- Examples
- Fix rx_samples_to_file failure for multichannel fullpath.
- Fixed bugs observing cmd argument -c in remote_rx.py example.
- Updated tx_waveforms examples now also use timed commands during
frequency tuning for all devices except for x410.
On X440 this allows reproducing specified channel to channel phase alignments.
- Consistently comment out sections in rx_samples_to_file.
* Validated OS Environments
(Versions for build and runtime dependencies can be determined from the
docker container definitions in the UHD repository at .ci/docker/...)
- Linux:
- Ubuntu: bionic (18.04), focal (20.04), jammy (22.04), noble (24.04)
- Fedora: 37, 38
- Windows: 10 21H2, 11 21H2
- MacOS: Monterey (12.6)
## 004.006.000.000
* ci
- only build docker images once per week
- propagate testLength to RF ATS
- replace deprecated ruamel.yaml methods
- use build farm for windows builds
* cmake
- Fix make_x410 and make_x440 targets
* deb
- copyright file update to eliminate errors and warnings
* docs
- X440: Add FBX to daughterboard list
- X440: Corrected web link syntax in FBX doc.
- x440: Add X440_X4_200 to image flavors
- Add dual-rate documentation
* examples
- L band capture example using dual rate
* fpga
- ci: Add X440_X4_200 to pipelines
- lib: Allow buffering in eth_ipv4_chdr_adapter
- n3xx: Add CE clock
- rfnoc: Add clock info to backend ifc
- rfnoc: radio: Add clock index parameters
- tools: Add X440_X4_200 to X440 package
- x400: Add CE clock
- x400: Add X440 200 MHz variant with DDC/DUC
- x400: Split DRAM interface into two banks
- x400: Update PL DRAM speed bin
- x400: bump minor revision
- x400: pps_sync cleanup
- x400: propagate pps_sync changes
- x400: update signals to run on two domains
- x440: cpld: led control cleanup
- x440: remove extra synchronizer
* images
- bump x4xx fpga images
- update non-x4xx images
* lib
- rfnoc: Add clock info fields to client zero
- rfnoc: Add support for auto-clock discovery
- x4xx: Use auto clock ID in x400_radio_control
* mpm
- x440: Add lookup table for default MCR per DSP bandwidth
- x440: Multi-Tile Sync disabled when using dual rate
- x400: Align FPGA revision
- x400: match HDL PPS updates
- x400: make PRC a multiple of both rfdc rates
- fix timekeeper misalignment
* multi_usrp
- Added module_serial to info
* rfnoc
- Enable SEP throttle register
- image builder: Add clock index support to image builder
* utils
- init device with gpsdo sources in query_gpsdo_sensors
* x4xx
- Add support for auto clock ID
- FPGA designs now use a replay block per utilized DRAM bank
* x440
- Add support for using radio block specific master clock rates
- X4_440 and X4_1600 fpga image now contain 2 replay blocks
(number of ports per replay block halved compared to previous release)
## 004.005.000.000
* b200
- Fix invalid RF switch positions
* ci
- add attempt number to uhd build artifact name on failure
- Add conditions for embedded builds, HW tests
- add pytest args option to test dev pipeline
- add step for x440 embedded runs
- Allow internal fileserver usage for MS installer builds
- Auto-detect conditionals for pipeline stages
- Default to internal fileserver for FPGA images
- Disable PR runs for draft PRs
- Enable X440
- Fix swallowed return codes in CI script steps
- Fix the chocolately version to use
- fixup typo in x440 sdr-test0 template
- increase build timeouts to 90 minutes
- increase win docker image build timeout
- modify default sfp0 and reboot
- Remove Fedora 35 and add Fedora 37
- restrict analyze changeset pool
- select docker image repo directly at container endpoint definitions
- select docker registry based on branch
- splitup x410 test stage in hardware test dev pipeline
- Update CLA Assistant to v2.3.0
- update docker builds to run twice a week
- update docker service connection
- update to build docker builds for all release branches
- updates for new E320 in devtest system
* clang
- Apply clang-formatting to all C/C++ files
- Modify files for treatment with clang-format
- Update clang-format for version 14
* cmake
- Fix auto-detection of Python install directory
- Fix linking DPDK when installed at non-standard location
* cpld
- Adapt CPLD updater for future X4x0 dboards
* debian
- Fix copyright dates in changelog
* devtest
- add exemptions for x440 python API test
- correct docstrings with example being run
- disable rx_samples_to_file_test for x440
- fix typo in error message
- gpio test updates
- remove API calls that now error
- remove benchmark_rate test for x440
* docs
- Add page on timed commands
- add python package requirement for usrpctl MPM reset
- add updated msgpack rpc package
- b200: Improve docs (auto MCR, GPIOs)
- Document throttle stream arg
- Fix argument for uhd_image_loader in E3xx docs
- Fix docstring for get_block_chain()
- fix typo and consistency in usrpctl docs
- Improve documentation on timekeepers
- Make X410 dboard a subpage of the X4xx page
- rfnoc: Document RFNoC overrun handling algorithm
- Update clocking theory of operations for X4xx
- update docs for reset command
- update FPGA build docs
- update remote streaming supported version
- Update X4x0 manual
- Update X4xx manual wrt. self-cal
- x410: Document UC_200 image flavor
- x440: Added FBX to UM daughterboards page
- x440: Extend X4x0 Usage Manual for x440
- x440: Fixed incorrect use of paragraph elements
* examples
- Add power controls to rx_ascii_art_dft.cpp
- Add throttle to replay_capture.py
- Amend tx_waveforms.py to use DramTransmitter
- Fix play region in replay_capture.py
- Remove default --ref and --pps values
- rx_samples_to_file: multi_streamer option
* experts
- Add force_dirty() call
* extension
- windows: Fixed linking extension example to uhd.lib
* fpga
- Add BUILD_BASE_DIR option to makefiles
- Add BUILD_SEED variable
- Add time changed pulse to timekeeper
- Add X440/FBX support
- ci: Add MAX_CPU to pool demands
- ci: Add X410_UC_200 to default bitfiles
- ci: Add X410_UC_200 to release pipeline
- ci: Enable publishing to internal server
- ci: Fix branches
- ci: Include modified manifest in artifacts
- ci: Support parallel jobs for IP builds
- ci: Use different seed for each job attempt
- ci: Use repeat_fpga_build for pipeline builds
- Clear clang-format settings for FPGA code
- docs: Add system memory recommendations
- docs: Clarify design tool requirements
- Fix RFNoC OOT Makefile inclusion
- lib: Add axis_pkt_throttle.sv
- lib: Add clock_div module
- lib: Add ctrl_port_to_wb_i2c module
- lib: Fix IPv4 CHDR TUSER width
- lib: Fix Vivado warnings
- lib: rfnoc: Add resize capability to chdr_stream_endpoint
- lib: rfnoc: Make RFNoC packet gates removable
- lib: rfnoc: Remove redundant packet gate
- lib: rfnoc: Support multiple port widths on crossbar
- Reformat javascript in doc
- rfnoc: Add DEVICE_FAMILY to stream endpoint
- rfnoc: Add throttle to stream endpoints
- rfnoc: Add ULTRASCALE to chdr_ingress_fifo
- Synchronize X300 RX frontends on time change
- tools: Add repeat_fpga_build.py
- tools: Add X410_UC_200 image to X410 package
- Update all RFNoC image core files
- Update RFNoC YAML copyright
- x400: Add 1x64, 2x64, and 1x128 DRAM interconnect
- x400: Add CG_200 RFNoC image cores
- x400: Add ifdef to remove QSFP wrappers when unused
- x400: Add support for X4C, C1, and UC variants
- x400: Add X440 to default make targets
- x400: Add X4C_200 RFNoC image cores
- x400: Fix DB1 timekeeper strobe
- x400: Fix PRC divider register map
- x400: Fix SPI trigger clock crossing
- x400: Make transport adapter width configurable
- x400: Remove CPU_W parameter
- x400: Set QSFP LEDs on startup
- x400: sim: Add 10 GbE with wide CHDR
- x400: Use x410_200 image core for x410_100 images
- x440: fbx: clean up I2C triggers
- x4xx: Refactor MB CPLD code for future devices
- x4xx: Rename x410 -> x4xx for common DTS files
* github
- Fix URL for mailing list
* host
- Add cstdint include to fix gcc-13 compile.
- Add in OpenBSD support to uhd::path_expandvars
- Bump minimum gcc version to 7.3.0
- doc: Add documentation for tertiary, quaternary QSFP adapter
- fix & improve EAL args for DPDK v21.11
- fix build with DPDK v22.11 LTS
- improve DPDK frame_size error message
- docs: Fix link to MSVC Redistributable Package
- python: Update last_gain at end of run_rx_cal loop
* images
- Add X410_UC_200 to manifest
- add X440 dependencies to manifest
- bump x4xx fpga images
- bump x4xx fpga images
- update FPGA images for E3xx, X3xx, N3xx
- Update manifest for SEP throttling
- Update X410 manifest
* lib
- Add default virtual dtor to filter_node
- Add X440/FBX support
- fbx: Remove unused lambda captures
- Fix time-cast for dboard_iface::sleep()
- Mark select x400_dboard_iface methods as const
- Mark selected x400_dboard_iface child methods final
- max287x: Remove unused class attributes
- mb_controller: Minor fixes to logging, formatting
- rfnoc: Fix linter issue regarding virtual dtor
- rfnoc: Fix logic in can_connect_device_to_device()
- rfnoc: Use device cache for rfnoc_graph::make()
- tests: Mark mock pop_host_tasks() as override
- mpm: Add MPM synchronization API
* mpm
- Add ability to query enabled state of ADC/DAC blocks
- Add dboard_info to db_iface initialization
- Add LogRuntimeError class
- Add revE support to zbx_update_cpld
- Add support for X440/FBX
- allow for mpm device to tell host to reboot mpm
- bist: Improve --help message
- Bump compat number to 5.0
- dboard_iface: Remove {set/get}_if_freq() APIs
- dboard_manager: Fix linter issues in dboard_manager/base.py
- Demote sync_tiles() error to warning
- Disable PRC to DB if not required
- e3xx: Fix inheritance order for DB classes
- enable Xilinx API for PLL config
- fix get_product_id in x4xx BIST
- fix GPS lock sensor method name
- Fix test utilities
- Fix ZBX CPLD updater
- lmk04832: Move general APIs to base class
- Move get_dboard_class_from_pid()
- move pop_host_tasks to PeriphManagerBase
- mpmutils: Add parse_multi_device_arg() function
- mpmutils: Fix Pylint warning
- Normalize name for gps_locked sensor
- periph_manager: Remove vestigial Python-six
- Refactor LMK04832X4xx and LMK03328X4xx
- rfdc_ctrl: Change latency argument to signed
- rfdc: Enhance converter checks
- rfdc: Remove set_sample_rate() API call
- Simplify x4xx_bist nsync_fabric
- Update X440 clock policy
- Updated default MCR for X440
- utils: Add LogWrapper
- x440: Move clock info logging out of policy
- x4xx: Add additional args parsing in init()
- x4xx: Add intermediate clock settings to clock policy
- x4xx: add intermediate clocking setting
- x4xx: Add logging for metal and rfdc versions
- x4xx: Add master_clock_rates argument to _set_ref_clock_freq()
- x4xx: add multiple latency detect iterations
- x4xx: Add rfdc rate as a sensor to X4xx dboards
- x4xx: Add UC FPGA type
- X4xx: Change reset strategy to cover all X4xx
- x4xx: Check for tear_down()'s existence
- x4xx: Conditionally initialize DB flash
- x4xx: Enable DBs to have updateable_components
- x4xx: Enable MMCM configuration based on policy
- x4xx: Enable MPM sync API for X410
- x4xx: Explicitly pass MCR values to set_sync_source()
- x4xx: Extend x4xx_rfdc_regs
- x4xx: Factor clock control out of X4xxClockManager
- x4xx: filter MCR list
- x4xx: Improve SPLL comments
- x4xx: Introduce X4xxClockPolicy
- x4xx: Let RFDC control use clock policy
- x4xx: Make sysref_delay part of clock policy
- x4xx: mb_cpld: Add missing bitfields
- x4xx: Minor preparations to x4xx.py for X440 support
- x4xx: Move all clock control to single class
- x4xx: Move common DB tasks from ZBX class to mixin
- x4xx: Move enable_iq_swap to x4xx_rfdc_ctrl.py
- x4xx: Move get_master_clock_rate() to DB-RPC
- x4xx: Move MB CPLD creation to factory
- x4xx: Move SPLL sync before RFDC config
- x4xx: Optimize clock configuration at init
- x4xx: Prepare clock management for multi-mcr
- x4xx: Refactor x4xx_rfdc_ctrl
- x4xx: Remove get_cal_eeprom_spi_node()
- x4xx: Remove internal_temp_sensor
- x4xx: Rename 'both' argument to 'all'
- x4xx: rfdc: Add get_converter_rate() API
- x4xx: rfdc: Pull fabric words value from registers
- x4xx: Separate RFDC and MMCM resets
- x4xx: Separate RFDC reset from its configuration
- x4xx: Shut down tiles on tear_down()
- x4xx: Trust the clock policy's default MCR
- fpga: x4xx: Major updates in preparation for future devices
* multi_usrp
- rfnoc: Added warning when handling tune_request
* octoclock
- Fix uhd_usrp_probe error
* python
- Add 'const' to get_continuous_tone(); improve sanity-checks
- Add DramTransmitter class
- Add X440 to image builder
- Fix subdev_spec_t wrapping
- multi_usrp: Remove spurious print
- rfnoc: Add radio_control.get_{ticks,time}_now
- signal: Add more waveforms to get_continuous_tone()
- stream: Overload TxStreamer.recv_async_msg()
- Wrap direction_t
- Wrap stream_cmd_t::stream_mode
* Replay buffered TX streamer
- Fix gaps in TX
* rfnoc
- Add options for RFNoC image core headers
- Add set_command_time and clear_command_time binding to Python API.
- Allow interruption of streaming during overrun handling
- Coerce replay packets to atomic item size
- Demote some de-init DEBUG messages
- Enable SEP throttle register
- Fix disconnecting back-edges from graphs
- Fix doxygen comments in rfnoc_graph
- Fix sync calls for multi-timekeeper operation
- Improve Doxygen for sync calls
- Make edge comparison more flexible
- radio: Always prefer register-based time access
- radio: Make default SPP a multiple of max CHDR width
- replay: Make default IPP a multiple of max CHDR width
- Set DEVICE_FAMILY on stream endpoints
- Support multiple CHDR widths in RFNoC image builder
- update switchboard forwarding on property set
* SelfCal
- Add startup_tile() for cal_mode selection
- Enable parameters in self-cal executable
- Expose config parameters
- Remove self-cal from boot and fpga update
- Trigger if clocking has changed
* tests
- add delayed streaming start args
- add packet capture raw udp tests
- add streaming tests for UC_200 bitfile
- benchmark_rate improvements
- Fix Python warnings in parse_benchmark_rate.py
- fix when the rx cmd's stream_now is set
* tools
- Add changeset analyzer
- Add clang-formatting tools
- add devtest rule for changeset_analyzer
- Remove fpga directory from Debian build
- run all tests for manifest update
- Update upload_debs.sh script
* UBX
- Add VCO band calibration and map access
- Initialize UBX set_tx_freq freq_lo variables to 0.0
- Shift IF for RX frequencies <100 MHz
* uhd
- doc: Add documentation for ADC self calibration
- multi_usrp: Support multiple timekeepers on rfnoc devices
- Update changelog with 4.1.0.x releases
- x4xx: Add methods to query number of chans, samp rate
- x4xx: Refactor ADC self cal
* usrpctl
- add reset command
* utils
- Add X4xx ADC threshold query script
- Fix usrp2_recovery.py for Python3
* x4xx
- get bool for force_reinit arg
- pass reboot mpm command to host on new clock config for x440
- Update BIST to match clocking refactoring
* x4xx_bist
- replace set_clock_source for x440
## 004.004.000.000
* Features
- Raw UDP Traffic to Remote Destination for RFNoC-enabled devices
* C API
- Fix double-free issue with sensor values
* ci
- Add clang-format 14.0 to the Ubuntu 22.04 container
- devtest: Test E320 1G FPGA Image
- Filter uhd_find_devices checks by device type
- increase timeout for x4xx hardware test job
- Pull UHD version from UHDConfigVersion.cmake
- Replace Rhombus E320
- Update docker repo location
* cmake
- fix UHDAtomics.cmake to read custom Boost install prefix
- Fix build with GCC 13 (add missing <cstdint> include)
* devtest
- Add multi-spc timed command tests
* docs
- Fix typo in Python API dox file
- Phase noise consideration when using external clock with E320
- rfnoc: Fix Doxygen warnings on chdr_packet::set_metadata()
- Update manual for X3x0 raw UDP streaming
* e320
- Allow internal GPSDO to be powered-down via UHD session args
* e3xx
- add support for power calibration api
* examples
- remote_rx: Add --mac-address argument
- rx_samples_to_file: Add disk write speed check
- rx_samples_to_file: Add multichannel option
- Upgrade RFNoC example to Vivado 2021.1
* fpga
- ci: Create local copy of patches to use
- Cosmetic changes to rx_frontend_gen3_tb
- docs: Fix AR76780 dependency
- e320 Change MIG arbitration to RD_PRI_REG
- Fix overflows in DDC
- Fix overflows in quarterrate downconverter
- Fix warnings in dds_freq_tune module
- lib: Add align_samples module
- lib: Add verilog-compatible wrapper for eth_ipv4_chdr_adapter
- lib: Add ZPU support to SV transport adapter
- lib: Fix indentation in setting_reg.v
- lib: Fix inferred latch in ep_autonegotiation
- lib: Support time and data updates in sim_radio_gen
- lib: Update header for AXI4S add/remove bytes
- Require AR76780 for X3xx and E3xx
- Restore FIR filter in rx_frontend_gen3
- rfnoc: Add align_samples testbench
- rfnoc: Add timed sample alignment to radio
- rfnoc: Fix inferred latch in chdr_strip_header
- sim: Fix typo in clk_wait_f
- tools: Detect check_timing issues during build
- tools: Fix error detection in run_testbenches.py
- x300: Bump FPGA compat to 39.1
- x300: Change MIG arbitration to RD_PRI_REG
- x300: Support advanced transport adapter
* host
- ADC cal: Add ability to set calibration mode explicitly
- cal: Rearrange ADC self calibration routine
* images
- Update manifest - timed sample alignment in RFNoC
* lib
- Fix warning in ctrlport_endpoint.cpp
- topo graph: Fix rule-of-3 related compiler warnings
* mpm
- Add a lock to the rpc server timer
- Better error message for multiple assigned MACs
- Fix rpc process shared state and port argument positions
- Move parse_encoded_git_hash() to mpmutils
- rfdc: Add X4xx 125e6 master clock rate
- rpc server: Capture claim token value before releasing state lock
- x4xx: Remove references to white rabbit
* n3xx
- Increase tune timeout
* octoclock
- Fix type of eeprom object in property_tree
* rfnoc
- Add logging to some throw statements
- lsm: Improve logging/error messages
- Move detection of TAs post-LSM-init
- streamers: Fix scaling factor
* tests
- add ramdisk cfg option to streaming setup
- add support for 10-100GB x410 raw udp
- add x310 raw udp tests
* uhd
- Fix RfnocGraph pybind binding for get_tree
- python: Bind {separate,combine}_device_addr{s}
- python: Make DeviceAddr behave like dict
- When separating device_addr_t, keep indexed values
- Add xport_adapter_ctrl core
* x300
- Enable use of advanced transport adapters
- Respect X300_FW_COMMS_FLAGS_ARP_FAIL flag
- Update firmware for TA control
## 004.003.000.000
* ci
- Add n310 rf tests to monopipeline
- Add XQ testing to n321
- Mark SucceededWithIssues as failure
- Remove Fedora 34 and add Fedora 36
- set required capability for windows builds
- Workaround Ubuntu 18.04 systemd bug 1988563
* docs
- Add known issue for Xilinx AR 76681
- Clarify live install and remove version
* examples
- Enable radio loopback for a single radio
- rx_samples_c: Use error_code instead of return_code
* experts
- Move expert framework into public API
* extension
- Add extension example
- Add extension framework
- Add Extension Framework documentation
* features
- Make all feature headers install
* fpga
- ci: Upgrade to Vivado 2021.1
- docs: Upgrade to Vivado 2021.1
- e31x: Add PROTOVER to eth_internal
- e31x: Cleanup MTU parameters
- e31x: Fix IP dependencies
- e31x: Upgrade to Vivado 2021.1
- e320: Bump FPGA compat to 6.1
- e320: Cleanup MTU parameters
- e320: Support advanced transport adapter
- e320: Upgrade to Vivado 2021.1
- Fix target dependencies in Makefile.xxx.inc
- Fix Vivado version check in viv_hardware_utils
- lib: Add advanced features to IPv4 SV transport adapter
- lib: Add chdr_strip_header module
- lib: Add compat to Verilog transport adapter
- lib: Add eth_ipv4_interface_tb
- lib: Add MTU parameter to eth_internal
- lib: Add NET_CHDR_W parameter to transport adapters
- lib: Add RegPort SystemVerilog interface
- lib: Add support for length in tuser in eth_ipv4_add_udp
- lib: Add verilog-compatible wrapper for eth_ipv4_interface
- lib: Fix addsub_hls
- lib: Fix NODE_INST parameter in eth_internal
- lib: Upgrade to Vivado 2021.1
- n3xx: Add BUFG to SPI output line to ease timing
- n3xx: Add PROTOVER to n3xx_mgt_wrapper
- n3xx: Bump FPGA compat to 8.1
- n3xx: Cleanup MTU parameters
- n3xx: Fix async clocks relationship
- n3xx: Remove unused USE_REPLAY parameter
- n3xx: Support advanced transport adapter
- n3xx: Upgrade to Vivado 2021.1
- sim: Support unused tkeep in AxiStreamPacket::dump_bytes()
- sim: Update struct enum initialization
- sim: Workaround Vivado bug in ChdrIfaceBfm_tb
- tools: Add utility to upgrade TCL-based BD
- tools: Allow IP renaming with viv_ip_xci_editor.py
- tools: Fix HLS IP builder for Vivado 2021.1
- tools: Lattice build flow clean-up
- Update makefiles to allow parallel FPGA builds
- Use AR76780 patch for fir_compiler
- x300: Cleanup MTU parameters
- x300: Upgrade to Vivado 2021.1
- x400: Bump FPGA compat to 7.9
- x400: Fix link status detection of 10 GbE IP
- x400: Fix NODE_INST for transport adapters
- x400: Fix transport adapter PROTOVER
- x400: Upgrade to Vivado 2021.1
- x400: zbx: Revision Bump
- zbx: Update HTML regmap
* host
- if monotonic don't run monotonic algo
* images