# Year 2025

## Jun. 18, 2025

    * [Platform] Change default CSI plot engine to 'imgui'
    * [SDRBaseband] Fix bug in 'no-iq' option
    * [SDRBaseband] Fix bug in in EHT format detection
    * [SDRBaseband] Improve performance for LDPC decoding
    * [SDRBaseband] Improve performance for signal resampling (both up and down)

## May 7, 2025

    * [SDRBaseband] Fix bug in filter

## Apr. 19, 2025

    * [SDRFrontEnd] add '--show-spectrum' option for SDR frontend (beta testing)

## Apr. 18, 2025

    * [Platform] Add 'web' and 'imgui' options for plot. Use them by '--plot-engine web' or '--plot-engine imgui'

## Apr. 9, 2025

    * [HackRFFrontEnd] Fix bug in 'preset' option

## Apr. 8, 2025

    * [SDRFrontEnd] Add SDR traffic monitor
    * [USRPFrontEnd] Fix bug in setting Tx/Rx sampling rate
    * [SDRFrontEnd] Add 'tx-rate' and 'rx-rate' options, allowing users to set Tx/Rx sampling rates individually
    * [SDRBaseband] Improve 802.11n/ac/ax/be LDPC decoding performance

## Apr. 7, 2025

    * [SDRFrontEnd] More efficient and accurate support for 'tx-resample-ratio' and 'rx-resample-ratio'
    * [SDRFrontEnd] Major update to 'preset': set 'tx/rx-rate' and 'tx/rx-resample-ratio' automatically for all supported SDR frontend, removing the previously fixed sampling rate and resample-ratio
        * This upgrade avoid the additional manual 'tx/rx-rate' and 'tx/rx-resample-ratio' settings for USRP N3xx and X4x0 series devices.
    * [Platform] Remove the '--resampling-preset' option

## Apr. 6, 2025

    * [IntelMVMFrontEnd] Fine-Timing Measurement (FTM) clock value is now accessible
        * This uint32_t value [MVMExtraInfo->parsedHeader->ftmClock](https://github.com/wifisensing/RXS-Parsing-Core/blob/8c64b76970c717406a9b7a997b99c3fc20b6496d/MVMExtraSegment.hxx#L22) represents the hardware baseband clock ticks. Each tick increment corresponds to 3.125ns on the 320MHz baseband main clock.
        * This clock wraps to 0 after every 4.29 seconds
        * This clock is used for FTM ranging, thus called FTM Clock by Intel.

## Arp. 2, 2025

    * [Platform] Fix a small display bug

## Mar. 31, 2025

    * [SDRBaseband] Fix a serious bug causing packet loss
    * [SDRBaseband] Fix bug in packet Rx time
    * [SDRFrontEnd] Introduce v3 .bbsignals format, enhancing multi-channel signal recording & replay

## Mar. 24, 2025

    * [SDRFrontEnd] Performance boost for I/Q signal recording & replay ('--rx-to-file' and '--tx-from-file')

## Mar. 18, 2025

    * [SDRBaseband] Fix the single-thread hang-up problem.

## Mar. 16, 2025

    * [Platform] Enhance update notification
    * [Platform] Fix a rare crash issue during the startup 

## Mar. 9, 2025

    * [License] Enhance MultiInstance feature description with troubleshooting tip
    * [USRPFrontEnd] Bug fix: add sensor availability check before query
    * [SDRFrontEnd] Fix bug mentioned in https://github.com/wifisensing/PicoScenes-Issue-Tracker/issues/20
    * [SDRBaseband] '--mt' option default to 4, i.e., enabling 4-thread parallel decoding by default
        * This is a temp fix for the strange hanging issue.

## Mar. 8, 2025

    * [USRPFrontEnd] Add multi-port connection for NI USRP X410

## Mar. 6, 2025

    * [USRPFrontEnd] Fix a bug in checking the calibration files

## Mar. 5, 2025

    * [Platform] Fix a bug causing installation failure
    * [Platform] Fix a dependency bug

## Mar. 4, 2025

    * [Parsing-Core] Upgrade NoiseFloor/RSS to float type.

## Mar. 3, 2025

    * [License] Fix bug in Device-Bound License
    * [Script] Add 'PrunePicoScenes' script which, mainly for troubleshooting purpose, can remove PicoScenes completely from your system, including:
        * PicoScenes plugins, platform, and driver
        * PicoScenes software source and source-updater
        * EttusResearch version libuhd
    * [USRPFrontEnd] Fix bug in USRP addressing
    * [SDRFrontEnd] Restore the 'source-address-filter' and 'destination-address-filter' options for SDR frontend

## Mar. 1, 2025

    * [License] Add Trial License by option '--trial'
    * [License] Trial License features:
        * Time-limited access to all advanced features without payment
        * Ideal for short-term projects or evaluation purposes
        * Unlimited renew with short gap
    * [License] Fix bug in Pro license validation

## Feb. 18, 2025

    * [SDRFrontEnd] Fix bug in EHT PPDU decoding

## Feb. 17, 2025

    **Major Upgrade to Whole Platform**

        * [SDRFrontEnd] Multi-threading RX decoding logic completely rewritten, performance and availability significantly improved
        * [SDRFrontEnd] Add '--no-iq' option to skip saving the PPDU baseband signal into .csi file, saving lots of disk space
        * [SDRFrontEnd] Display more detailed information during the device detection and initialization
        * [USRPFrontEnd] Support USRP X410, N321/320 and N310/300 models 
        * [USRPFrontEnd] Support TwinRX / LFTX / LFRX / BasicTx / BasicRx daughterboards
        * [USRPFrontEnd] Support Quad-SFP+ / Dual-QSFP+ connection
        * [CI/CD] Moved to GitHub platform

## Feb. 13, 2025

    * [Platform] Enhance the firmware hint and device subtype detection for NI USRP

## Feb. 12, 2025

    * [Platform] Working on supporting NI USRP X410

## Jan. 25, 2025

    * [SDRFrontEnd] Fix bug in the default behavior of 'tx-ant' and 'rx-ant' options
    * [SDRFrontEnd] add 'no-iq' option to skip saving the PPDU baseband signal into .csi file

## Jan. 24, 2025

    * [SDRFrontEnd] Major API refactoring
    * [SDRFrontEnd] Support USRP TwinRx daughterboard

## Jan. 2, 2025

    * [Platform] Shift to GitHub source host

# Year 2024

## Oct. 2, 2024

    * [SDRBaseband] Fix a bug in LDPC decoder for 5/6 rate case

## Sep. 19, 2024

    * [SDRBaseband] Decoding performance improved

## Sep. 12, 2024

    * [SDRBaseband] Fix bugs which cause packet missing detection 
    * [Parsing-Core] Performance improvement for ModularPicoScenesRxFrame::toBuffer()

## Sep. 9, 2024

    * [SDRFrontEnd] Enhanced memory performance
    * [Parsing-Core] Fix bug for VirtualSDR frontend

## Aug. 9, 2024

    * [FrontEnd] Fix a crash bug for the COTS frontends.
        Thanks @BCSam1 for reporting this issue in https://gitlab.com/wifisensing/picoscenes-issue-tracker/-/issues/277

## Aug. 1, 2024

    * [USRPFrontEnd] Minor update for warning hints

## Jul. 25, 2024

    * [USRPFrontEnd] Fix a USRP timeout bug for continuous frequency swiping

## Jul. 23, 2024

    * [Platform] Fix bug in multi-instancing checking

## Jul. 12, 2024

    * [FrontEnd] Fix bug mentioned in https://gitlab.com/wifisensing/picoscenes-issue-tracker/-/issues/271
        Thanks Dr. Kuangda Chen from University of Technology Sydney for reporting this issue.

## Jul. 11, 2024

    * [Platform] Upgrade libuhd dependency to 4.7

## Jun. 16, 2024

    * [Script] Add 'RepairPicoScenes' script to auto remove and reinstall PicoScenes
    * [Platform] Optimize UI
    * [Platform] Preparing for Ubuntu ARM build

## Jun. 15, 2024

    * [Platform] Display COTS NIC information during start

## Jun. 10, 2024

    * [SDRFrontEnd] Fix bugs for HackRF One frontend, which are mentioned in issue https://gitlab.com/wifisensing/picoscenes-issue-tracker/-/issues/249

## Jun. 1, 2024

    * [Platform] Optimize the frontend detection flow

## May 31, 2024

    * [SDRFrontEnd] Fix bugs for HackRF One frontend, which are mentioned in issue https://gitlab.com/wifisensing/picoscenes-issue-tracker/-/issues/249

## May 28, 2024

    * [License] Improve experience for the Pro-DBL license

## May 12, 2024

    * [SDRFrontEnd] '--tx-ant' and '--rx-ant' now supports multiple antenna values. 
        For example, '--txcm 1 --tx-ant TX/RX --rxcm 3 --rx-ant RX2 TX/RX' means Tx using TX/RX port of Channel 0, and Rx using RX2 port of Channel 0 and TX/RX of Channel 1.

## May 8, 2024

    * [Platform] Fix the bug which invalidated the EchoProbe Initiator-Repsonder mode

## May 2, 2024
    
    * [SDRFrontEnd] Add option `rx-to-file-delayed-start`

## Apr. 27, 2024

    * [SDRBaseband] Fix bug for --rx-resample-ratio

## Mar. 27, 2024

    * [SDRFrontEnd] --rate option supports separate Tx and Rx rate, like "--rate 20e6 25e6"

## Mar. 26, 2024

    * [MVMFrontEnd] Display better hint for the "Cannot infer a reasonable and unique ..." error
    * [SDRFrontEnd] Improve robustness for the name resolving of USRP devices
    * [SDRBaseband] Fix bug in multi-Rx channel decoding, reported in issue https://gitlab.com/wifisensing/picoscenes-issue-tracker/-/issues/211.
        Thanks Dr. Jiaming Gu from TsingHua University for reporting this issue.

## Mar. 24, 2024

    * [SDRBaseband] Fix a crash bug caused by invalid HT/VHT parameters, which is reported with issue https://gitlab.com/wifisensing/picoscenes-issue-tracker/-/issues/209

## Mar. 17, 2024

    * [SDRFrontEnd] Fix bug in setting the --tx/rx-cfo and --tx/rx-cfo options

## Mar. 5, 2024

    * [SDRBaseband] NonHT format now supports 40/80/160 MHz CBW

## Mar. 3, 2024

    * [SDRBaseband] Add AbstractSDRFrontEnd::skipMPDUDecoding4HESUHighDopplerFrame API to accelerate CSI extraction (by bypassing the data decoding) for HESU High-Doppler mode frames

## Feb. 22, 2024

    * [API] Rename PicoScenesFrameTxParameters::idleTime to PicoScenesFrameTxParameters::inBasebandPostfixPaddingTime

## Feb. 18, 2024

    * [SDRFrontEnd] API AbstractSDRFrontEnd::transmit(const ModularPicoScenesTxFrame &frame) now transmits frame.prebuiltSignals if available

## Feb. 16, 2024
    
    * [Parsing-Core] Upgrade CSISegment to v7, adding timingOffsets property 

## Feb. 15, 2024

    * [DSP] ToF estimation algorithm supports the single-valued v6 CSI data

## Feb. 14, 2024

    * [Platform] Fix bug in AsyncPipeline.hxx API, where in very high probability, the AsyncPipeline just fails to start.

## Feb. 10, 2024

    * [SDRBaseband] Refined CFO and SFO estimation for HESU mode, especially for HESU high-doppler profile
    * [Platform] Initialize Ubuntu 22.04 shifting

## Feb. 1, 2024

    * [SDRBaseband] Refactor the Extra Sounding CSI measurement for HT format

## Jan. 29, 2024

    * [SDRFrontEnd] Fix bug in 'tx-to-file'

## Jan. 24, 2024

    * [SDRBaseband] EHT-SU mode now supports Extra Sounding
    * [SDRBaseband] Fix bug in EVM computation

## Jan. 22, 2024

    * [Parsing-Core] Major update:
        1. Change all segments in RxFrame to std::shared_ptr<> hooked, improve RxFrame I/O performance
        2. Unify coding style

## Jan. 21, 2024

    * [SDRBaseband] fix bug in EVM computation for BPSK modulation

## Jan. 20, 2024

    * [SDRBaseband] Improve Rx performance

## Jan. 18, 2024

    * [SDRBaseband] Fix bug in HT format sounding

## Jan. 15, 2024

    * [SDRBaseband] Improve Rx performance, fix performance bug in LDPC encoding

## Jan. 14, 2024

    * [SDRBaseband] Fix bug in format detection, mentioned in https://gitlab.com/wifisensing/picoscenes-issue-tracker/-/issues/194

## Jan. 3, 2024

    * [Parsing-Core] Fix bug mentioned at https://gitlab.com/wifisensing/picoscenes-issue-tracker/-/issues/190 and https://gitlab.com/wifisensing/picoscenes-issue-tracker/-/issues/191

## Jan. 2, 2024

    * [Platform] Add 'force-root' option to bypass root privilege checking.

# Year 2023

## Dec. 29, 2023

    * [Platform] Auto-expire in 2 months
    * [HackRFFrontEnd] Fix bug in device resolving
        Thanks @Xloading-919 for reporting this bug https://gitlab.com/wifisensing/picoscenes-issue-tracker/-/issues/189

## Dec. 27, 2023

    * [USRPFrontEnd] Skip the performance optimization when USRP devices is not connected

## Dec. 22, 2023

    * [TxParameter] Add `--prefer-ampdu` Tx parameter option. When this option is specified, Tx baseband will prefer to use A-MPDU (Aggregated MPDU) format for long frame.

## Dec. 21, 2023

    * [AX200/AX210] Fix a severely crash bug; upgrade PicoScenes Driver version to 20231221

## Dec. 19, 2023

    * [SDRBaseband] Improve Rx decoding performance; fix bug in EHT-SU format decoding
        * A known issue: LDPC encoding is very slow, much slower than decoding ...

## Dec. 14, 2023

    * [SDRBaseband] Improve performance via more efficient memory operation

## Dec. 12, 2023

    * [Parsing-Core] Huge refactoring on parsing-core; improve performance, use C++ move semantics

## Dec. 8, 2023

    * [Platform] Deprecate FrameBuilder API; upgrade ModularPicoScenesTxFrame

## Dec. 4, 2023

    * [SDRFrontEnd] Add Full Duplex control, enabling the radar mode on SDR devices.
    * [Platform] Add TX_CBW_320_EHTSU, RX_CBW_320, and TR_CBW_320_EHTSU presets

## Dec. 2, 2023

    * [License] Major update for licensed features for COTS NICs: **all limitations for COTS NICs removed**. See updated https://ps.zpj.io/features_pricing.html
    * [License] Major update for licensed features for SDR: **large part of limitations for SDR removed.**. See updated https://ps.zpj.io/features_pricing.html
    * [Platform] Accelerate program startup when either kernel version or driver version is incompatible.

## Nov. 30, 2023

    * [Platform] Upgrade uhd driver to 4.6 from Ettus official repository
        **The installation will fail deliberately for the first time. You must reinstall/upgrade again**.
        **This upgrade also upgrade the FPGA firmware version of USRP.**

## Nov. 22, 2023

    * [Platform] Add '--skip-nic' option to skip Wi-Fi COTS NIC detection and installation
    * [Platform] Optimize starting up logic

## Nov. 18, 2023

    * [SDRBaseband] Slight performance improvement
    * [Platform] Change slogan in accordance with revision of http://ps.zpj.io

## Nov. 12, 2023

    * [SoapySDRFrontEnd] Fix bug in using HackRF One
        Thanks @longshengyan999 for posting this issue: https://gitlab.com/wifisensing/picoscenes-issue-tracker/-/issues/171
    * [MVMFrontEnd] Upgrade driver to 20231112, fixing a minor bug

## Nov. 4, 2023

    * [SDRBaseband] Fix bug in CargoSegment decoding in AMPDU case

## Nov. 1, 2023

    * [SDRBaseband] Better CFO/SFO estimation for HESU mid-amble case

## Oct. 31, 2023

    * [Driver] Support CSI measurement for AMPDU frames by AX200/210
    * [Driver] Upgrade driver dependency to 20231031
    * [Platform] Support CSI measurement and frame auto-split/concatenation
    * [SDRFrontEnd] Shrink maximum per-MPDU size to 1350 to allow VHT/HESU-typed AMPDU for AX200/210

## Oct. 26, 2023

    * [SDRBaseband] Improve decoding for EHT-SU
    
## Oct. 23, 2023

    * [SDRBaseband] Force accurate SFO estimation; 
    * [SDRBaseband] Add 'bb_use_conventional_packet_detector' to config

## Sep. 11, 2023

    * [SDRBaseband] Improve Rx decoding robustness 

## Sep. 2, 2023

    * [SDRBaseband] Fix bug in VHT/HESU/EHTSU packet detection 

## Aug. 31, 2023

    * [SDRBaseband] Major upgrade: Add Wi-Fi 7 support (EHT-SU format)
    * [SDRBaseband] Improve Rx decoding performance w/ fine-grained Pilot-based phase-errro tracking/correction
    * [RXS-Parsing-Core] Remove PreEQSymbolsSegment and PilotCSI segment

## Aug. 25, 2023

    * [Platform] Fix a bug caused during accessing the CPU frequency governor

## Aug. 21, 2023

    * [SDRBaseband] Add support for the dual-channel frontend all through the platform

## Aug. 19, 2023

    * [SDRBaseband] Fix a performance bug of the unexpected multi-threading under cblas
    * [SDRBaseband] Improve Tx performance for multi-channel splitting

## Aug. 18, 2023

    * [USRPFrontEnd] Fix a path not found error
        * Thank you, Mr. Changfei Zhou from the DLUT for reporting this issue!

## Aug. 13, 2023

    * [FrontEnd] Set 3.2us GI for HESU/HEMU by default

## Aug. 9, 2023

    * [SDRBaseband] More robust CFO estimation

## Aug. 8, 2023

    * [SDRBaseband] Improve performance for the multi-channel split/merge

## Aug. 7, 2023

    * [SDRBaseband] Fix bug in CSI computation for HESU NDP case

## Aug. 5, 2023

    * [SDRFrontEnd] Fix a bug in multi-channel selection
    * [SDRFrontEnd] Major upgrade:

        * Support multi-channel combination, like tx/rx the lower/higher 10 MHz half band of CBW 20 baseband signals from two RF channels.

## Aug. 3, 2023

    * [Driver] Upgrade to version 20230803, which fix a bug in License display

## Jul. 31, 2023

    * [SDRBaseband] Optimize Rx performance in super-sampling case

## Jul. 27, 2023

    * [SDRFrontEnd] Fix bug in channel specification

## Jul. 23, 2023

    * [SDRFrontEnd] Support multiple LO frequencies for multi-channel frontend

## Jul. 18, 2023

    * [License] Enable QCA9300's Tx ESS feature for PSLP-FL user

## Jul. 13, 2023

    * [USRPFrontEnd] Fix a rare crash bug during Tx

## Jul. 9, 2023

    * [USRPFrontEnd] Add --agc option to enable Rx automatic gain control (AGC) functionality
        * Note: AGC is only supported by B2x0 and E3x0 series devices
        * Note: AGC is disabled by default, specify --agc to enable it.
    * [USRPFrontEnd] Reduce USRP B2x0 Rx overflow errors by increasing recv_frame_size to 16384

## Jul. 8, 2023

    * [SDRBaseband] Minor optimization

## Jul. 7, 2023

    * [Platform] Add global preference mechanism @ $HOME$/.PicoScenes/preference

## Jul. 4, 2023

    * [USRPFrontEnd] Turn off Rx radio during Tx (a test release)
    * [Platform] Fix bug in FrameDumper

## Jul. 2, 2023

    * [Driver] Upgrade platform to 5.15.0-73 kernel

## Jun. 9, 2023

    * [SDRFrontEnd] Fix a bug in multi-antenna RX
    * [Intel MVM FrontEnd] Fix a bug in channel switching

## Jun. 6, 2023

    * [License] Add MaxLengthAutoSplitConcat feature
        * This feature control the max length of "auto split & concatenation for large data transporation". It may affects the data back-transfer of the EchoProbe-based round-trip measurement.
        * The max value is 10000 for Free-License user and infinite for PUL

## May 28, 2023

    * [SDRBaseband] Optimize Rx decoding performance

## May 26, 2023

    * [SDRFrontEnd] Slightly optimize Rx decoding performance

## May 21, 2023

    * [USRPFrontEnd] Mitigate the Tx signal corruption caused by SDR frontend

## May 19, 2023

    * [SDRBaseband] Fix a minor bug affecting CFO computation

## May 18, 2023

    * [FrontEnd] Fall back to ordinary multi-packet Tx for auto-split in case of no BatchTx permission

## May 14, 2023

    * [SDRBaseband] Add EVM computation using the Legacy+HT/VHT/HE-SIG fields
    * [SDRBaseband] Fix a crash bug during multi-threading

## May 10, 2023

    * [Platform] Fix various bugs in previous upgrades;
    * [SDRFrontEnd] Improve robustness for auto-split Tx

## May 8, 2023

    * [SDRBaseband] Turn-off 'fast-math' compiler option for better decoding accuracy/rate

## May 6, 2023

    * [Platform] Upgrade to new building flow, support macOS .pkg build

## May 2, 2023

    * [SDRFrontEnd] Fix a packet-missing bug during multi-thread decoding

## Apr. 28, 2023

    * [Platform] Add ToF estimation DSP library

## Apr. 14, 2023

    * [SDRFrontEnd] Force noise floor computation during startRx
    * [SDRFrontEnd] Add decoding delay computation
    * [Parsing-Core] Add decodingDelay to SDRExtra segment

## Apr. 13, 2023

    * [SDRFrontEnd] Add clearRxBuffer API 

## Apr. 12, 2023

    * [Platform] Check CPU frequency governor during the start

## Apr. 5, 2023

    * [Platform] Prompt correct error message for the "-1000000 carrier frequency" error

## Apr. 2, 2023

    * [Platform] Prolong the platform expiration time to 3 months later

## Apr. 1, 2023

    * [SDRFrontEnd] Add noise floor measurement during startRx
    * [FrontEnd] Large refactoring introduced, ABI broken for the previously built plugin.
    * [SDRBaseband] Fix bug in Cargo segment decoding

## Mar. 27, 2023

    * [SDRFrontEnd] Rx path refactored

## Mar. 25, 2023

    * [SDRFrontEnd] Performance optimization
    * [SDRFrontEnd] Unify sc16 cpu format for all SDR frontend

## Mar. 19, 2023

    * [Platform] Fix bug in frame autosplit and autoconcatenation

## Mar. 18, 2023

    * [SDRBaseband] Performance improvement

## Mar. 17, 2023

    * [License] add a Evaluation License

## Mar. 15, 2023

    * [SDRFrontEnd] Fix bug in --tx-to-file

## Mar. 12, 2023

    * [USRPFrontEnd] Fix bug in searching calibration files

## Mar. 8, 2023

    * [Platform] Refine Logging output
    * [License] Fix minor bugs

## Mar. 1, 2023

    * [Platform] Fix a crashing issue during the capability checking
        Issue source: https://gitlab.com/wifisensing/picoscenes-issue-tracker/-/issues/116

## Feb. 28, 2023

    * [SDRBaseband] Fix a multi-threading bug
    * [Platform] Add error stacktrace print for early stage crashing

## Feb. 27, 2023

    * [SDRFrontEnd] Fix a small performance bug
    * [SDRBaseband] Fix a rare bug on macOS
    * [USRPFrontEnd] Upgrade for UHD 4.1 and above

## Feb. 26, 2023

    * [Driver] Upgrade to 5.15 based 20230226 version;
    * [Platform] Fix bug in multi-platform build/run, 20.04/22.04/macOS
    * [Platform] Preparing for 22.04 upgrade

## Feb. 25, 2023

    * [Platform] Upgrade to Ubuntu/macOS unified build script

## Feb. 22, 2023

    * [FrontEnd] Fix bug in hackRF One detection on macOS
    * [SoapySDRFrontEnd] Fix bug in hackRF One clock/time source settings (w/ empty function)

## Feb. 3, 2023

    * [Platform] Fixing compilation errors in macOS

## Jan. 30, 2023

    * [FrontEnd] Solve the conflicts between --preset and other Tx parameters.
        Now --preset, if presence, will invalidate --format, --cbw, and --coding options.

## Jan. 21, 2023

    * [Platform] Fix bug in Tx parameter settings for SDR frontend

## Jan. 19, 2023

    * [Platform] FrameDumper API updated, add withoutTime option

## Jan. 13, 2023

    * [VirtualSDRFrontEnd] Bring it back online

## Jan. 7, 2023

    * [USRPFrontEnd] Fix a minor bug for Tx path
    * [SDRFrontEnd] Refine transmitSignalInBatchedSingleBurst API

# Year 2022

## Dec. 15, 2022

    * [LoggingService] Change the default log level to debug
    * [USRPFrontEnd] Use the device ID "usrp" when only one USRP device is connected

## Dec. 14, 2022

    * [License] Optimize the license validation for PUL license, switching to opportunistic strategy
    * [License] Small changes to FL license:
        1. AX200/210 frontend can track up to 10 different MAC address, preivously 5;
        2. Controlling up to 2 USRP devices by one PicoScenes instance, previously 1;
        3. For SDR frontend users, L-LTF part CSI is available.

## Dec. 13, 2022

    * [Logging Service] Add rotary-file based sinker

## Dec. 10, 2022

    * [Logging Service] Platform switched to spdlog based new Logging facility
        More to come:
            1. Aspect differential logging
            2. Multi-sink (console + file + rotary)
    * [Platform] Assign loggers fo the old logging messages
    * [Platform] Rename RXSDumper (API) to FrameDumper, remove the Utilities lib which is replaced by SystemTools lib

## Dec. 9, 2022

    * [Platform] Refactoring the logging service, switching to the spdlog library

## Dec. 7, 2022

    * [USRPFrontEnd] Auto-checking Tx/Rx calibration files for N2x0/N3x0/X3x0 series USRPs
    * [USRPFrontEnd] Auto add 'enable_tx_dual_eth=1' if dual connection
    * [SDRFrontEnd] add checkings and show warning message for hardware vulnerabilities mitigation

## Dec. 6, 2022

    * [USRPFrontEnd] Fix bug in master_clock_rate initialization
        Thanks Mr. Jingcheng Li from University of Arizona for reporting this bug!
    * [SDRFrontEnd] fix bug in --resampling preset naming
    * [USRPFrontEnd] Add connection problem detection;
    * [USRPFrontEnd] Add global network optimizations (network buffer, tx/rx ring buffer, MTU)

## Dec. 4, 2022

    * [SDRBaseband] Fix a serious timing bug in non-supersampling case 
    * [USRPFrontEnd] Device discovery & naming routine is fully rewritten, introducing the support for flexible device combination among multi-usrp and dual 1/10/100GbE connection. Examples are:
        1. dual 1/10/100GbE connection for x300/n3x0/x4x0 by special character '_', e.g., usrp192.168.30.2_192.168.40.2  ( 192.168.30.2 and 192.168.40.2 are the two ports of single x300/n3x0/x4x0 device.)
        2. hybrid connection of multi-usrp and dual 1/10/100GbE connection, e.g., usrp192.168.30.2,192.168.70.2_192.168.80.2 ( 192.168.30.2 is one of the ports of the first x300/n3x0/x4x0 device, while 192.168.70.2 and 192.168.80.2 are the two ports of the second.)
        3. conventional multi-usrp connection, e.g., usrp192.168.30.2,192.168.70.2 (192.168.30.2 and 192.168.40.2 are the ports of two separate n2x0/x300/n3x0/x4x0 devices).

## Dec. 2, 2022

    * [Scripts] Fix bug in array_status, which wrongfully includes the Ethernet NICs

## Dec. 1, 2022

    * [SDRBaseband] Fix two serious packet missing bugs associated with high/very high resampling ratio

## Nov. 30, 2022

    * [SDRBaseband] Fix bug in signal timing

## Nov. 29, 2022

    * [Scripts] Improve robustness for array_status and array_prepare_for_picoscenes scripts
        * Thanks Mr. Yanqi Zhu from Tokyo University for reporting this bug.

## Nov. 28, 2022

    * [SDRFrontEnd] Fix a rare crash problem during the start of signal Tx

## Nov. 27, 2022

    * [USRPFrontEnd] Optimize Timing/Clocking logic, reducing startup time
    * [SDRFrontEnd] Introducing --resampling-preset option for SDR frontends. It adds resampling flexibility to the previous --preset option.
        

        All supported --resampling-preset are listed below. More will be added if neccessary.
            
            PicoScenes supports the following SDR resampling presets:
            -------------------------------------------------------------------------------------
            TX_20_20: Equivalent to "--rate 20e6 --tx-resample-ratio 1.0"
            TX_20_25: Equivalent to "--rate 25e6 --tx-resample-ratio 1.25"
            TX_20_40: Equivalent to "--rate 40e6 --tx-resample-ratio 2.0"
            TX_20_50: Equivalent to "--rate 50e6 --tx-resample-ratio 2.5"
            TX_20_100: Equivalent to "--rate 100e6 --tx-resample-ratio 5"
            TX_20_200: Equivalent to "--rate 200e6 --tx-resample-ratio 10"
            TX_40_40: Equivalent to "--rate 40e6 --tx-resample-ratio 1.0"
            TX_40_50: Equivalent to "--rate 40e6 --tx-resample-ratio 1.25"
            TX_40_100: Equivalent to "--rate 40e6 --tx-resample-ratio 2.5"
            TX_40_200: Equivalent to "--rate 40e6 --tx-resample-ratio 5.0"
            TX_80_100: Equivalent to "--rate 100e6 --tx-resample-ratio 1.25"
            TX_80_200: Equivalent to "--rate 200e6 --tx-resample-ratio 2.5"
            TX_160_200: Equivalent to "--rate 200e6 --tx-resample-ratio 1.25"
            RX_20_20: Equivalent to "--rate 20e6 --rx-resample-ratio 1.0"
            RX_20_25: Equivalent to "--rate 25e6 --rx-resample-ratio 0.8"
            RX_20_40: Equivalent to "--rate 40e6 --rx-resample-ratio 0.5"
            RX_20_50: Equivalent to "--rate 50e6 --rx-resample-ratio 0.4"
            RX_20_100: Equivalent to "--rate 100e6 --rx-resample-ratio 0.2"
            RX_20_200: Equivalent to "--rate 200e6 --rx-resample-ratio 0.1"
            RX_40_40: Equivalent to "--rate 40e6 --rx-resample-ratio 1.0"
            RX_40_50: Equivalent to "--rate 50e6 --rx-resample-ratio 0.8"
            RX_40_100: Equivalent to "--rate 100e6 --rx-resample-ratio 0.4"
            RX_40_200: Equivalent to "--rate 200e6 --rx-resample-ratio 0.2"
            RX_80_100: Equivalent to "--rate 100e6 --rx-resample-ratio 0.8"
            RX_80_200: Equivalent to "--rate 200e6 --rx-resample-ratio 0.4"
            RX_160_200: Equivalent to "--rate 200e6 --rx-resample-ratio 0.8"
            TR_20_20: Equivalent to "--rate 20e6 --tx-resample-ratio 1.0 --rx-resample-ratio 1.0"
            TR_20_25: Equivalent to "--rate 25e6 --tx-resample-ratio 1.25 --rx-resample-ratio 0.8"
            TR_20_40: Equivalent to "--rate 40e6 --tx-resample-ratio 2.0 --rx-resample-ratio 0.5"
            TR_20_50: Equivalent to "--rate 50e6 --tx-resample-ratio 2.5 --rx-resample-ratio 0.4"
            TR_20_100: Equivalent to "--rate 100e6 --tx-resample-ratio 5 --rx-resample-ratio 0.2"
            TR_20_200: Equivalent to "--rate 200e6 --tx-resample-ratio 10 --rx-resample-ratio 0.1"
            TR_40_40: Equivalent to "--rate 40e6 --tx-resample-ratio 1.0 --rx-resample-ratio 1.0"
            TR_40_50: Equivalent to "--rate 50e6 --tx-resample-ratio 1.25 --rx-resample-ratio 0.8"
            TR_40_100: Equivalent to "--rate 10e6 --tx-resample-ratio 2.5 --rx-resample-ratio 0.4"
            TR_40_20: Equivalent to "--rate 200e6 --tx-resample-ratio 5.0 --rx-resample-ratio 0.2"
            TR_80_100: Equivalent to "--rate 100e6 --tx-resample-ratio 1.25 --rx-resample-ratio 0.8"
            TR_80_200: Equivalent to "--rate 200e6 --tx-resample-ratio 2.5 --rx-resample-ratio 0.4"
            TR_160_200: Equivalent to "--rate 200e6 --tx-resample-ratio 1.25 --rx-resample-ratio 0.8"
            -------------------------------------------------------------------------------------

## Nov. 26, 2022

    * [SDRFrontEnd] Remove support for BladeRF, LimeSDR and USRP from SoapySDR interface, for quicker SDR device discovery
    * [USRPFrontEnd] Optimize the Tx timing
    * [FrontEnd] Add TR_CBW_XXX series frontend mode presets. The TR_CBW_XXX combines the TX_CBW_XXX and RX_CBW_XXX.
        The complete presets list can be viewed by "PicoScenes --list-presets"
    * [FrontEnd] Improve the readability of --list-presets output

## Nov. 24, 2022

    * [USRPFrontEnd] Fix a naming bug for the USRP B2x0 series when multiple devices are connected.

## Nov. 23, 2022

    * [USRPFrontEnd] More robust clock/time source settings
    * [Platform] Make license related headers to public
    * [Parsing-Core] Tx presets add TX_CBW_40_HT and TX_CBW_40_HT_LDPC

## Nov. 22, 2022

    * [USRPFrontEnd] Optimize Tx success rate

## Nov. 18, 2022

    * [SDRFrontEnd] Fix a crashing bug

## Nov. 17, 2022

    * [USRPFrontEnd] X310 Dual 10 GbE connection now officially shipped, try dual 10GbE connection like "-i usrp192.168.30.2_192.168.40.2"
    * [Parsing-Core] change txUnknownSegments and rxUnknownSegments to std::map structure

## Nov. 16, 2022

    * [SDRBaseband] Fix a serious Rx decoding freeze bug in 20 channel bandwidth case

## Nov. 15, 2022

    * [SoapySDRFrontEnd] Fix bug in HackRF One packet reception
    * [USRPFrontEnd] Fix bug in set time source

## Nov. 14, 2022

    * [USRPFrontEnd] Add special workaround to support dual 10Gbe connection for USRP X310, support up to dual-channel 200 MSPS

## Nov. 13, 2022

    * [SDRFrontEnd] Improve performance and timing accuracy
    * [SDRFrontEnd] Fix bug which causes packet missing
    * [SDRFrontEnd] Optimize the trade-off inter-thread overlapping v.s. per-thread decoding length

## Nov. 12, 2022

    * [IntelMVMFrontEnd] Fix bug in license term MVM_TxMaxRate4CBW80N160 computation

## Nov. 9, 2022

    * [SDRFrontEnd] Improve Tx time computation
    * [SDRFrontEnd] Improve Rx decoding
    * [SDRFrontEnd] Fix bug in subcarrier bandwidth computation

## Nov. 8, 2022

    * [SDRFrontEnd] Add correct timestamp (1us) to RXSBasic structure
    * [Parsing-Core] Fix bug in the latest ExtraInfo segment update
        Thanks Mr. Ruohan Bai from Xi'an University of Posts & Telecommunications for reporting this bug.

## Nov. 6, 2022

    * [SDRFrontEnd] Reducing Rx decoding delay, but slightly raise CPU usage
    * [SDRFrontEnd] Fix packet missing bug

## Nov. 5, 2022

    * [SDRFrontEnd] Add Out of baseband noise floor computation, which leads to faster/better noise floor setting within baseband
    * [SDRFrontEnd] User SSE4.1 instructions for non-AVX platform

## Nov. 4, 2022

    * [SDRFrontEnd] Add live noise floor estimation

## Nov. 3, 2022

    * [SDRFrontEnd] Multithreading for each frontend 

## Nov. 2, 2022

**Major Upgrade: Multithreading SDR Rx Decoding!**

    * [SDRFrontEnd] Whole Rx Decoding code deep refactored.
    * [SDRFrontEnd] Add --mt (multithreading) option that enable up to 10x Rx decoding performance increase !!!!
        Thanks team member Tian Teng and Xinya Luan for exploring the possible approaches

## Oct. 24, 2022

    * [SDRFrontEnd] Reduce memory footprint

## Oct. 23, 2022

    * [SDRFrontEnd] A major code refactoring is ongoing ...
    * [Parsing-Core] Add SDRExtraSegment, fix Tx frame display bug

## Oct. 22, 2022

    * [SDRFrontEnd] Improve Rx performance for 80/160 CBW

## Oct. 20, 2022

    * [SDRFrontEnd] Add receiveSignalsWithStatus API

## Oct. 19, 2022

    * [SDRFrontEnd] Add transmitSignalWithStatus API

## Oct. 20, 2022

    * [Parsing-Core] Preventing crash from for a buggy corner case
        Thanks Sorachi Kato from Osaka University for reporting this bug: https://gitlab.com/wifisensing/picoscenes-issue-tracker/-/issues/91

## Oct. 18, 2022

    * [USRPFrontEnd] Fix time sync error for Tx MIMO 

## Oct. 11, 2022

    * [SDRBaseband] Fix bug
    * [Parsing-Core] Fix compilation bug on macOS
        Thanks @wanrylin for pointing out the solution: https://gitlab.com/wifisensing/picoscenes-issue-tracker/-/issues/87#note_1131063803

## Oct. 10, 2022

    * [RXS-Parsing-Core] Fix a serious bug
    * [SDRBaseband] Fix a performance bug

## Oct. 7, 2022

    * [RXS-Parsing-Core/Platform/PMT-Core] Merge the major upgrade for the PicoScenes Frame Segment API

## Oct. 4, 2022

    * [RXS-Parsing-Core] Add hasNamedField API to MVMExtraSegment

## Sep. 18, 2022

    * [Intel Frontend] Better error display for --freq/bw/control options

## Sep. 14, 2022

    * [Platform] Fix bug in array_status

## Sep. 12, 2022

    * [Platform] New thread pool API

## Sep. 10, 2022

    * [SDRBaseband] Improve Rx performance
    * [SDRBaseband] Add --mt experimental option to enable multi-thread Rx decoding

## Sep. 9, 2022

    * [SDRBaseband] Improve Rx performance

## Aug. 29, 2022

    * [SDRBaseband] Add get/set numSamplesSavedBeforeStart API, which specifies the number of samples ahead the packet start during signal dumping

## Aug. 28, 2022

    * [Platform] Improve robustness for event logger

## Aug. 26, 2022

    * [SDRBaseband] Add 'precoding-for-prehe' option

## Aug. 25, 2022

    * [SDRBaseband] Add --precoding-distance option

## Aug. 23, 2022

    * [SDRBaseband] add Tx distance simulation
    * [SDRBaseband] Fix the packet loss issue & improve robustness, w/ slight performance drop

## Aug. 21, 2022

    * [Parsing-Core] Add Intel rate_n_flag (v2) field interpretation API IntelRateNFlag

## Aug. 16, 2022

    * [License] Fix several bugs for PUL user
    * [License] Upgrade to v8 license. Some changes to FL:
        1. 80/160 MHz packet injection, but with 45pkts/s max Tx rate
        2. Modify the 6GHz band access range, limited to 5955-6415 MHz
    * [License] Deprecate --pul-key option, use --pul-key-file
    * [SoapyFrontEnd] Remove USRP from SoapySDR support

## Aug. 13, 2022

    * [SDRFrontEnd] Minor update for Tx parameter velidation

## Aug. 12, 2022

    * [Parsing-Core] Add phase slope/intercept computation
    * [License] Fix bug in --rx-cfo/rx-sfo, --tx-cfo/tx-sfo
    * [Platform] Fix bug in USRP devices counting

## Aug. 11, 2022

    * [Driver] Upgrade to 20220811, fix the 'empty timestamp issue' for AX200/210
    * [License] Fix bug in --rx-cfo/rx-sfo, --tx-cfo/tx-sfo
    * [License] Revert the old role 'PSLP-PUL license will fallback to PSLP-FL in case of un-synchronized system clock.'
    * [Driver] Upgrade to 20220812, workaround an Intel firmware bug (very frequent crash while measuring CSI in monitor mode)

## Aug. 9, 2022

    * [Platform] Add AsyncPipeline.hxx, an async messaging service. 
    * [Platform] Add 'destination' field for PicoScenes Messaging Service
    * [FrontEnd] Add several default options values
    * [AX200/210] Fix bug in Rx chainmask display
    * [SDRFrontEnd] Add --txcm/rxcm options
    * [SDRFrontEnd] Fix bug in setting channels
    * [License] Now PSLP-FL can transmit (inject) 80/160 MHz with a 45pkts/s rate limit, PUL is limitless
    * [License] Modify the 6GHz band access range by PSLP-FL, limited to 5955-6255 MHz
    * [License] Add display for license feature MaxRxMACAddress

## Aug. 1, 2022

    * [Driver] Upgrade to 20220801, add rxcm output in ExtraInfo segment

## July 31, 2022

    * [Parsing-Core] Fix bug in accessing licensed content
    * [Parsing-Core] Refactored the MVM header parsing routine

## July 29, 2022

    * [MVMFrontEnd] Adding --rxcm for AX200/210 NIC
    * [Driver] Upgrade to 20220729

## July 27, 2022

    * [SDRFrontEnd] Fix bug in HackRF transmission

## July 23, 2022

    * [Parsing-Core] Enhance PayloadSegment API
    * [Platform] Fix bug in PicoScenesMessagingService API

## July 22, 2022

    * [SDRFrontEnd] Fix a buffer related bug

## July 21, 2022

    * [SDRFrontEnd] Fix a small performance bug

## July 19, 2022

    * [Platform] Add PicoScenesMessagingService API
    * [Parsing-Core] Fix bug in MVM CSI parsing

## July 17, 2022

    * [Platform] Fix bug in startup hang

## July 15, 2022

    * [Platform] Upgrade RXSDumper API; enable link-time optimization (LTO)
    * [Scripts] Add RepairPicoScenes script to completely reinstall PicoScenes

## July 12, 2022

    * [Parsing-Core] Upgrade CSI preprocess code

## July 10, 2022

    * [Parsing-Core] Upgrade CSI preprocess code

## July 9, 2022

    * [Platform] A temp fix for privilege problem

## July 6, 2022

    * [Parsing-Core] Revert the incorrect ant_sel feature for AX200/210

## July 5, 2022

    * [Parsing-Core] Initial support ant_sel bit for AX200/210
    * [Driver] Upgrade to 20220705
    * [Platform] Slight upgrade for privilege checking

## July 4, 2022

    * [Parsing-Core] Slight update, add a union structure to RxSBasic
    * [Live Plotter] Add RSS live display

## June 27, 2022

    * [Platform] Upgrade HardwareId calculation algorithm

## June 24, 2022

    * [RXS-Parsing-Core] Fix bug in header files

## June 23, 2022

    * [RXS-Parsing-Core] Add three aux. methods

## June 20, 2022

    * [SDRFrontEnd] Add transmitFramesInBatchOnly4PrebuiltSignals API for faster injection

## June 18, 2022

    * [FrontEnd] Fix a potential performance bug

## June 16, 2022

    * [Debug] Fix the insufficient permission issue during debugging when the default shell is not bash
    Thanks Dr.Murali from Princeton U for helping identify this bug. The discussion is at https://gitlab.com/wifisensing/picoscenes-issue-tracker/-/issues/44

## June 15, 2022

    * [Debug] Fix the insufficient permission bug during plugin debugging.
    * [EventLogger] Upgrade for more insightful crash analysis
    * [RXS-Parsing-Core] RXSBasicSegment structure adds systemTime field, used for system time capturing
    * [Driver] Upgrade to 20220615, now each CSI measurement returns a ns-level system time measured at the host end (via ktime_get_real method)

## June 3, 2022

    * [SDRBaseband] Fix a decoding bug in VHT and HESU/HEMU cases.

## June 1, 2022

    * [USRPFrontEnd] Add network interface card speed test

## May 25, 2022

    * [SDRFrontEnd] Near-perfect performance optimization for single-channel --rx-to-file operation.

## May 24, 2022

    * [SDRFrontEnd] Huge performance improvement for --rx-to/from-file and --tx-to/from-file options, by saving/loading the native int8/16 format

## May 23, 2022

    * [EULA] Refine EULA display
    * [SDRBaseband] Fix a buffer related bug

## May 22, 2022

    * [USRPFrontEnd] Add special workadround for USRP N3x0 series master clock rate (MCR) setting
    * [EULA] Upgrade EULA

## May 21, 2022

    * [USRPFrontEnd] Add special workadround for USRP X3x0 series master clock rate (MCR) setting

## May 20, 2022

    * [USRPFrontEnd] Fix bug in --master-clock-rate option

## May. 11, 2022

    * [SDRBaseband] minor tweak

## May. 9, 2022

    * [Scripts] Upgrade to JDK 11 based showPci.jar, remove the illegal reflection-based access warning

## May, 5, 2022

    * [SDRBaseband] Fix bug in subcarrierBandwidth calculation in Rx resampling case
    * [Platform] Add bash-completion-based CLI command auto-completion. Just press <TAB Key> in CLI to pop and complete all PicoScenes options
    * [Platform] Minor fix to --help display

## Apr. 28, 2022

    * [Platform] Refine the software upgrade hint

## Apr. 27, 2022

    * [FrontEnd] Add AX210/AX211 .pnvm file version checking
    * [Platform] Refactor the "--help" output, now it's more friendly and more readable.
    * [SDRFrontEnd] Fix bug in --preset TX_CBW_40_HESU

## Apr. 26, 2022

    * [Driver] Upgrade to 20220426 version (5.14-1034 version kernel), enabling the 6-GHz band access on the latest 12-th Intel Core platform.
    * [Driver] Support Intel AX211 NIC, which is the CNVi-interfaced AX210.
    * [Packaging & Driver] Move the AX200/210/211 firmwares to PicoScenes Driver package, which reduces the file size of the picoscenes-platform

## Apr. 25, 2022

    * [Intel FrontEnd] All Intel frontends (5300/AX200/AX210) switch to netlink based channel configuration, which improves robustness.
    * [Release] Fix compilation & runtime library missing issues caused by netlink-related libraries
    * [AX200/AX210 FrontEnd] Improve robustnss for Source MAC addresses filter.
    * [FrontEnd] Fix a serious bug in setChannelAndBandwidth which forbids channel switching for correct channel parameters

## Apr. 23, 2022

    * [Parsing-Core] Fix two bugs in Rx frame raw buffer rebuiding: 1. recovering the missing MVMExtra field, 2. wrong length value copy of MVMExtra
    * [NIC] Fix a corner bug in multi-packet concatenation

## Apr. 22, 2022

    * [FrontEnd] Add CargoSegment-based long packet auto-split and concat; EchoProbe now works for AX200/210
    * [Deb Package] Disable Secure Boot checking temporarily

## Apr. 20, 2022

    * [Parsing-Core] Add CargoSegment data structure
    * [Deb Package] Add libboost-iostreams1.71.0 dependency

## Apr. 19, 2022

    * [Scripts] Fix a rare crash bug in array_status

## Apr. 15, 2022

    * [FrontEnd] Fix bug in "--txcm" (Tx chainmask) option logic

## Apr. 14, 2022

    * [SDRFrontEnd] Add --preset and --list-presets option for SDR frontends. "--preset <PresetName>" option provides shortcuts to specify SDR to work with 40/80/160-Channel, VHT/HESU format, and LDBC/BCC coding.
    For example, "--preset TX_CBW_160_HESU" is a shortcut to "--rate 200e6 --tx-resample-ratio 1.25 --cbw 160 --format hesu --coding ldpc"
    The complete list of predefined presets can be queried by "--list-presets" option. The current list is:

        PicoScenes supports the following SDR frontend mode presets:
        -------------------------------------------------------------------------------------
        TX_CBW_160_HESU: [Tx, 160 MHz CBW, 200 MHz actual Tx sampling rate, 1.25 Tx resample ratio, HESU format, and LDPC coding]
        TX_CBW_160_VHT: [Tx, 160 MHz CBW, 200 MHz actual Tx sampling rate, 1.25 Tx resample ratio, VHT format, and BCC coding]
        TX_CBW_160_VHT_LDPC: [Tx, 160 MHz CBW, 200 MHz actual Tx sampling rate, 1.25 Tx resample ratio, VHT format, and LDPC coding]
        TX_CBW_80_HESU: [Tx, 80 MHz CBW, 100 MHz actual Tx sampling rate, 1.25 Tx resample ratio, HESU format, and LDPC coding]
        TX_CBW_80_VHT: [Tx, 80 MHz CBW, 100 MHz actual Tx sampling rate, 1.25 Tx resample ratio, VHT format, and BCC coding]
        TX_CBW_80_VHT_LDPC: [Tx, 80 MHz CBW, 100 MHz actual Tx sampling rate, 1.25 Tx resample ratio, VHT format, and LDPC coding]
        TX_CBW_40_RESAMPLE_HESU: [Tx, 40 MHz CBW, 50 MHz actual Tx sampling rate, 1.25 Tx resample ratio, HESU format, and LDPC coding]
        TX_CBW_40_RESAMPLE_VHT: [Tx, 40 MHz CBW, 50 MHz actual Tx sampling rate, 1.25 Tx resample ratio, VHT format, and BCC coding]
        TX_CBW_40_RESAMPLE_VHT_LDPC: [Tx, 40 MHz CBW, 50 MHz actual Tx sampling rate, 1.25 Tx resample ratio, HESU format, and LDPC coding]
        TX_CBW_40_RESAMPLE_HT: [Tx, 40 MHz CBW, 50 MHz actual Tx sampling rate, 1.25 Tx resample ratio, HT format, and BCC coding]
        TX_CBW_40_HESU: [Tx, 40 MHz CBW, 40 MHz actual Tx sampling rate, 1.0 Tx resample ratio, HESU format, and LDPC coding]
        TX_CBW_40_VHT: [Tx, 40 MHz CBW, 40 MHz actual Tx sampling rate, 1.0 Tx resample ratio, VHT format, and BCC coding]
        TX_CBW_40_VHT_LDPC: [Tx, 40 MHz CBW, 40 MHz actual Tx sampling rate, 1.0 Tx resample ratio, VHT format, and LDPC coding]
        RX_CBW_160: [Rx, 160 MHz Rx CBW, 200 MHz actual Rx sampling rate, 0.8 Rx resample ratio]
        RX_CBW_80: [Rx, 80 MHz Rx CBW, 100 MHz actual Rx sampling rate, 0.8 Rx resample ratio]
        RX_CBW_40: [Rx, 40 MHz Rx CBW, 40 MHz actual Rx sampling rate, 1.0 Rx resample ratio]
        Customized: [arbitrary Tx profile]
        -------------------------------------------------------------------------------------
    * [SDRFrontEnd] Add "--transfer-type" option, so you can specify 8 or 16-bit data transfer bit-depth between SDR and host CPU
        Note: not all devices (USRP or SoapySDR-based) supports changing "transfer type", e.g., X310 only 16-bit, HackRF One only 8-bit.

## Apr. 12, 2022

    * [SDRFrontEnd] Improve robustness for transmission with postfixDuration

## Apr. 8. 2022

    * [SDRBaseband] Fix potential bug in case of simultaneous working of USRP and HackRF 
    * [AbstractSDRFrontEnd] Fix bug in Performance counter
    * [AbstractSDRFrontEnd] Initial support for LimeSDR
    * [Parsing-Core] Add SoapySDR_UHD device subtype

## Apr. 7, 2022

    A major update to FrontEnd architecture:
        * Add HackRF One support. User can specify a HackRF One node by "-i hackrf0", where "0" means the 0-th HackRF One devices connected to your PC
        * Major update to AbstractSDRFrontEnd interface (API)
        * Upgraded power-trigger method for SDRBaseband
        * Various updates and refactors ...
    This version may contain bugs. If you encounter, please report the errors via PicoScenes Issue Tracker
    
    Known issues of HackRF One:
        1. May be low packet decoding rate due to bad I/Q imbalance and other hardware imperfactions.
        2. Up to 5.6ms interval between successive Tx frames.

## Apr. 4, 2022

    * [Parsing-Core] Fix bug in arbitraryMPDUContent toBuffer method [API]
    Thank Mr. Lei Yang from Peking University for reporting this bug

## Mar. 31, 2022

    * [Parsing-Core] Adding SoapySDR support
    * [FrontEnd] Moving some SDR-related APIs to the base class AbstractSDRFrontEnd (API), preparing for the SDR devices driven by SoapySDR library

## Mar. 29, 2022

    * [Parsing-Core] Add arbitraryMPDUContent property to support the arbitrary content injection functionality
    Thank @seokwoninkaist for proposing this feature request  @ https://gitlab.com/wifisensing/picoscenes-issue-tracker/-/issues/28
    * [Platform] Add soapysdr-tools dependency. It will be a bridge to connect various low-cost SDR devices.

## Mar. 28, 2022

    * [SDRFrontEnd] Add the argument 'repeat' for transmitFramesInBatchNG and transmitFramesInBatch (API)
    * [IntelMVMFrontend] Adopting the general logic of --source-mac-address-filter
    * [Parsing-Core] Add prebuiltSignals property for TxFrame structure (API)
    * [SDRFrontEnd] Add prebuildSignals method to AbstractSDRFrontend (API)
    * [SDRFrontEnd] Transmit prebuiltSignals if exists

## Mar. 27, 2022

    * [SDRFrontEnd] rename --source-mac-address-filter and --destination-mac-address-filter options to --source-address-filter and --destination-address-filter
    * [FrontEnd] Add --source-address-filter and --destination-address-filter to all types of frontend
    * [SDRFrontEnd] Fix several critical program crash bugs.
    Thanks @zdtsanyecao from Beijing Jiaotong University for reporting above bugs!

## Mar. 25, 2022

    * [SDRFrontEnd] add --source-mac-address-filter and --destination-mac-address-filter options

## Mar. 24, 2022

    * [SDRBaseband] Remove the FFTW3 multi-threading feature to improve decoding robustness

## Mar. 23, 2022

    * [Parsing-Core] Refactor the CSISegment class, adds CSISubcarrierIndex class to query the subcarrier indices of different formats (API)
    * [Parsing-Core] Add the complete data structure of class IntelMVMParsedCSIHeader (API)

## Mar. 21, 2022

    * [Intel MVM FrontEnd] Fix a bug in compatible NIC identification.
    Thank 王大鳥(@sbbwlimit) from National Sun Yat-sen University for reporting this bug!

## Mar. 19, 2022

    * [AX210 FrontEnd] Add checking for correct firmware, detecting a strange bug after OS firmware upgrade.
    * [Platform] Add error hints for incorrect JSON file parsing
    * [Platform] Checking NIC array status during start

## Mar. 16, 2022

    * [Parsing-Core] CSI interpolation update, force the phase of 0-th subcarrier (DCPhase) within [-pi, pi]
    * [Utilities] Add UDPService API

## Mar. 13, 2202

    * [Parsing-Core] Fix bugs in CSISegment and SignalMatrix

## Mar. 12, 2022

    * [Parsing-Core] DPASRequest upgraded to v5, add stage field, upgrade to 32-bit

## Mar. 11, 2022

    * [SDRFrontEnd] Add new transmitFramesInBatchNG method, make old transmitFramesInBatch deprecated (API)
    * [SDRFrontEnd] Add postfixPaddingTime TxParameters, allowing to transmit a very long train of zeros. (API)
    * [Parsing-Core] Add data accessing methods for CSI class (API)

## Mar. 10, 2022

    * [Parsing-Core] Add postfixPaddingTime TxParameters, allowing to transmit a very long train of zeros. (API)

## Mar. 9, 2022

    * [SDRFrontEnd] Add numTxAntenna option for generateSignal and generateMultiChannelSignal methods (API)
    * [SDRFrontEnd] Add 16-bit generateSignal, generateMultiChannelSignal, and transmitSignal methods (API)
    * [SDRFrontEnd] Template-ize the SignalCircularBuffer class (API)

## Mar. 8, 2022

    * [License] Activating PUL license before MultiInstancing checking
    * [License] Optimize PUL validation flow; fix several bugs
    * [Packaging] Improve robustness of post-removal script
    Thank Mr. Pengming Hu from Henan University of Science and Technology (HAUST) for identifying the above bugs!

## Mar. 7, 2022

    * [SDRFrontEnd] Add "--tx-ant" option to specify Tx Antenna for USRP
    * [SDRFrontEnd] Add getSDRFrontEndTime() method

## Mar. 5, 2022

    * [FrontEnd] Fix bug in setting txpower for QCA9300 and IWL5300

## Mar. 4, 2022

    * [SDRBaseband] Minor update
    * [SDRBaseband] Perforamnce improved by LAPACK and BLAS library
    * [EventLogger] Fix a startup crash for some slow running computer
    * [EventLogger] Fix bug in crash message logger

## Mar. 2, 2022

    * [License] Fix bug in --rx-to-file and --rx-from-file license checking
    * [SDRFrontEnd] More robust Tx for single-channel case; Add Rx error print

## Feb. 28, 2022

    * [SDRBaseband] Change the precursorLength to prefixPaddingTime, default is 8us.
    * [License] Upgraded to v0.2.3, changes are
        * Disable --tx-to-file and --tx-from-file options for Free License users.

## Feb. 26, 2022

    * [SDRBaseband] Add precursorLength TxParameters, which adds zeros before the generated baseband signals. Default length is 100. This measure workarounds a USRP Tx-related issue.
    Thank Dr. Xin Na from TsingHua University (supervised by Prof. Yuan He) for helping fix this bug. Thanks!

## Feb. 25, 2022

    * [IWLMVMFrontEnd] Fix a bug in <channel-bw-center> verification in 160 MHz BW case

## Feb. 21, 2022

    * [DebPackaging] Preserve .PicoScenes dir during upgrading

## Feb. 20, 2022

    * [License] Fix a serious bug during program startup;
    * [Parsing-Core] Re-enable CSD removal for USRP/5300/9300, temp disable for AX200/210
    * [License] Terminate on invalid PUL key

## Feb. 19, 2022

    * [License] Update to PSLP v0.2.2. Several key features relaxed to Free License Users, including:
        1. [SDRFrontend] up to 2x2 MIMO;
        2. [SDRFrontend] Clock Synchronization;
        3. [SDRFrontend] Tx/Rx signal recoding/replay;
        4. [SDRFrontend] Full baseband signal;
    * [License] fix bug in v0.1.11 -> v0.2 migration

## Feb. 18, 2022

    * [Platform] Relax expiration checking to 2 months; Optimize the online checking 
    * [License] PSLP-PUL license will fallback to PSLP-FL in case of un-synchronized system clock.
    * [Packaging] Remove $HOME$/.PicoScenes dir during uninstallation
    * [License] Add "pul-key-file" option to activiate PUL license via a simple text file containg the key string

## Feb. 17, 2022

    * [Parsing-Core] Fix a bug in CSD removal; activate CSD removal for only USRP Rx end
    * [Driver] Update version to 20220216; fix bug
    * [AX200/AX210] Fix bug in Tx Chainmask computation

## Feb. 16, 2022

    * [QCA9300 Frontend] Fix very slow packet injection bug
    * [Driver] Update version to 20220216

## Feb. 15, 2022

    * [License] Add 25MHz sampling rate to Free License

## Feb. 14, 2022

    * [Parsing-Core] Implement NDP frame transmission

## Feb. 12, 2022

    * [License] Fix bug
    * [USRP FrontEnd] Fix a serious timing bug; now desired SISO/SIMO/MISO/MIMO perfomrance is achieved.

## Feb. 9, 2022

    * [USRPFrontEnd] Fix bug in x310/b210 multi-chanel signal synchronicity

## Feb. 9, 2022

    * [USRPFrontEnd] Improve LO synchronicity across USRP channels

## Feb. 8, 2022

    * [SDRBaseband] Improve realtime decoding performance for CBW80/160 packets

## Feb. 6, 2022

    * [SDRBaseband] Optimize performance slightly
    * [Parsing-Core] Remove CBW_5 and CBW_10
    * [SDRBaseband] Support decoding VHT/HESU NDP frames

## Feb. 5, 2022

    * [SDRBaseband] Fix bug in signal decoding for 11ax High-Doppler packets

## Feb. 2, 2022

    * [CLI] A set of common Tx parameters are now parsed by Platform CLI. 

## Jan. 30, 2022

    * [SDRBaseband] Major update wave 1:
        * Add PrecodingParameters to TxParameter. Users now can specify three type of signal precoding:
            1. User specified Steering matrix, the matrix is in N_{sc} x N_{sts} x N_{tx} column-major order;
            2. Explicit Beamforming style steering matrix computation;
            3. Phased array: user specifies the per-antenna positions and desired steering angle;

## Jan. 28, 2022

    * [SDRBaseband] Add API to specify a customized Spatial Mapping Matrix (matrix Q)

## Jan. 27, 2022

    * [Parsing-Core] Optimize CSD removal performance

## Jan. 26, 2022

    * [SDRBaseband] Preparing for a major peroformance boost
    * [Parsing-Core] CSD removal algorithm is integrated and activated by default for all MIMO CSI reception

## Jan. 25, 2022

    * [Driver] Update to 20220125; fix bug in ath9k regulation domain

## Jan. 24, 2022

    * [Parsing-Core] Add getSegment() and getTypedSegment methods to ModularPicoScenesTxFrame class
    * [Scripts] array_prepare_for_picoscenes skips the changing of CPU frequency governor by default

## Jan. 22, 2022

    * [Driver] Upgrade to 202201221, remove useless dmesg output, fix bug in 5300 regdomain

## Jan. 19, 2022

    * [LivePlot] Switch to X11 engine by default to fix the recent Qt5 problem
    * [Liveplot] Add "--plot-engine" option to switch among x11, qt, wxt
    * [Driver] Upgrade to 20220119
    * [FrontEnd] Support AX200/210 variant, AX200/201/210/211 and Killer AX1650/AX1675 series
    * [SDRBaseband] Fix small bugs, improve performance

## Jan. 18, 2022

    * [Platform] Update to 20220118 driver;
    * [Driver] Fix old crash bugs
    * [Parsing-Core] Fix bug in 160MHz BW injection and packet reception

## Jan. 15, 2022

    * [Platform] Update to 20220115 driver;
    * [Driver] Fix bug; switch to v5.14 kernel

## Jan. 2, 2022

    * [DPARequest] Add mode and device subtype
    * [SDRFrontEnd] Fix bug in headers

# Year 2021

## Dec. 28, 2021

    * [SDRBaseband] Fix a serious bug in transmitSignal method
    * [DPARequest] Add carrier/sampling freq fields.

## Dec. 27, 2021

    * [SDRBaseband] Fix a buffer-caused performance bug

## Dec. 26, 2021

    * [SDRBaseband] Improve signal quality in --tx-resample-ratio and --rx-resample-ratio
    * [SDRBaseband] Fix bug for 802.11ax High-Doppler and Extended Range modes

## Dec. 24, 2021

    * [SDRBaseband] Fix bug in --tx-resample-ratio
    * [SDRBaseband] Fix bug in --rx-cfo

## Dec. 18, 2021

    * [License] Fix bug in SDR_TxESS

## Dec. 16, 2021

    * [SDRFrontEnd] Fix bug in B210 USB connection checking
    * [SDRBaseband] Support decoding DPASRequest segment

## Dec. 15, 2021

    * [SDRBaseband] Fix bug in generate HT-rate not_sounding frame.

## Dec. 14, 2021

    * [SDRbaseband] Add 802.11ax High-Doppler and Extended-Ranged (HE-ER-SU) Tx and Rx support 

## Dec. 10, 2021

    * [Fix bug] Fix a installation bug caused by the SecureBoot checking.
    * [Parsing-Core] Refine DPASRequestSegment output
    * [Driver] update to 20211210

## Dec. 9, 2021

    * [Parsing-Core] Add DPASRequestSegment

## Dec. 8, 2021

    * [SDRBaseband] Improve around 15% performance by using AVX2 intrinsics on AVX2-capable CPU!

## Dec. 7, 2021

    * [Platform] Fix a missing lib bug

## Dec. 6, 2021

    * [SDRBaseband] Add support for 802.11ax Extended Range (HE-EXT-SU) and High Doppler support (not integrated into plugins yet)

## Dec. 4, 2021

    * [Frontend] Add Tx parameter validation

## Dec. 1, 2021

    * [SDRBaseband] Add pthread dependency

## Nov. 30, 2021

    * [Parsing-Core] Add validate() method for Tx parameter

## Nov. 26, 2021

    * [Parsing-Core] Add temperature ExtraInfo for COTS NIC
    * [Driver] Add temperature output for AX200/AX210; update to 20211126

## Nov. 23, 2021

    * [Platform] Better error hint for "Unresolvable device ID" error.
    * [Platform] Add Secure Boot checking

## Nov. 22, 2021

    * [License] Fix bug in MaxRxMACAddress checking
    * [Driver] Update to 20211122
    * [Parsing-Core] Fix bug in CSISegment V4

## Nov. 20, 2021

    * [License] Activating License service.
    * [License] Update to v0.1.11

## Nov. 14, 2021

    * [Platform] --channel option supports 6GHz band
    * [Platform] Better error message hint for --channel, --freq and --rx-cbw options
    * [Scripts] minor update to array_status

## Nov. 13, 2021

    * [Driver] Upgrade to 20211113, suppress very strange packet injection
    * [Platform] Fix bug for "DO NOT support the option" for comments
    * [Scripts] Change the default monitor interface naming to "mon${PHYPATH}"
    * [Scripts] Fix bug in PSLP_UIC script

## Nov. 12, 2021

    * [Driver] Update to V4 version CSI data format (add firmwareVersion output)
    * [Driver] Upgrade to 20211112
    * [Parsing-Core] Add V4 version CSI parser
    * [Parsing-Core] Add AX200 and AX210 device Type
    * [Platform] adapt to AX200/AX210 device type

## Nov. 10, 2021

    * [FrontEnd] Fix CSI firmware bug for AX200/210 in VHT 160 MHz mode

## Nov. 9, 2021

    * [Platform] Fix bug for the missing dialog command
    * [FrontEnd] Support CSI extraction from Intel AX210!

## Nov. 7, 2021

    * [FrontEnd] Support CSI extraction from Intel AX210!

## Nov. 6, 2021

    * [Platform] Relax program update window to 15 days
    * [Platform] Switch to picoscenes.com based usage tracking

## Nov. 5, 2021

    * [Platform] Big update to the program startup sequence

## Nov. 4, 2021

    * [Platform] Relax max offline session times to 50
    * [Platform] Shorten the startup message display

## Nov. 2, 2021

    * [License] Add Licensee informaton collector script (PSLP_UIC)
    * [License] Adding PUL remote checking mechanism
    * [Platform] Remove sqlite3 dependency

## Nov. 1, 2021

    * [License] Adding PSLP-FL into license service, will be activated in Nov.20, 2021.
    * [License] Fix several bug, refine interaction
    * [License] Improve robustness

## Oct. 31, 2021

    * [License] The documentation of PicoScenes License Plan (PSLP) v0.1.10 has been released at <https://ps.zpj.io/License.html>.
    * [License] Adding PUL license features

## Oct. 30, 2021

    * [License] Adding license things, not activated...

## Oct. 29, 2021

    * [Driver] AX200 much more robust channel switching, driver update to 20211029

## Oct. 27, 2021

    * [FrontEnd] Fix bugs
    * [License] Modify the free license features according to the PicoScenes License Plan v0.1.9

## Oct. 26, 2021

    * [Driver] Update to 20211026 to fix bug in channel change of AX200
    * [Platform] fix bug in "control-bw-center" style channel specification
    * [Parsing-Core] Update
    * [License] Merging the license branch, add temporary test license
    * [FrontEnd] Huge refactor regarding 5300 and AX200 frontend

## Oct. 24, 2021

    * [Platform] Add multi-instancing checking
    * [FrontEnd] Fix bug for the missing stopRx implementation
    * [FrontEnd] Workaround for an AX200 firmware bug

## Oct. 23, 2021

    * [Platform] Update kernel verison dependency to 5.13
    * [Driver] Update to 20211023
    * [Packet Injection] AX200 now can inject 11g/n/ac/ax format packets in 2.4 and 5 GHz band using 20211023 version kernel driver.

## Oct. 22, 2021

    * [Packet Injection] AX200 now can inject 11g/n/ac/ax format packets in 2.4 GHz band using 20211022 version kernel driver.
    * [Platform] Fix bug for the no ethernet-controller case
    * [Driver] update to 20211022

## Oct. 20, 2021

    * [FrontEnd] Test support 11a/g/n/ac/ax packet injection support by AX200
    * [Build] Fix a project compilation error

## Oct. 13, 2021

    * [FrontEnd] Add 5300 firmware checking

## Oct. 9, 2021

    * [RxS-Parsing-Core] Fix bug in IEEE 802.11 frame header parsing, especially for the Control Frames.
    * [License] Herald the coming of the license service

## Oct. 8, 2021

    * [Driver] A temp workaroud for another AX200 bug
    * [RxS-Parsing-Core] Add string output for frame control field and add frame type display

## Oct. 7, 2021

    * [Rxs-Parsing-Core] Workaround the Intel 67 firmware bug

## Oct. 6, 2021

    * [RxS-Parsing-Core] Performance improved for the Intel-MVM CSI data structure 
    * [Rxs-Parsing-Core] Add *skipPilotSubcarriers* for fromIWLMVM method

## Oct. 5, 2021

    * [Driver] Update to 20211005 dependency, adding rate and address filtering

## Oct. 4, 2021

    * [Platform] Adding CSI filter mechanism

## Oct. 3, 2021

    * [RxS-Parsing-Core] Update and unify the code authorship

## Oct. 2, 2021

    * [RxS-Parsing-Core] Fix bug in CSI data index setting for Intel-MVM NIC

## Oct. 1, 2021 -- Happy China National Day!

    * [FrontEnd/HAL] Finishing the large refactoring, removing obsolete code. More tests needed.
    * [Driver] Upgrade to 20211001, fix bug for 9300/5300 CSI extraction
    * [Firmware] Install 67 version iwlwifi firmware

**May our nation more prosperous!**

## Sep. 30, 2021

    * [HAL] Disable CSI interpolation temporarily to have better CSI display for AX200/210

## Sep. 29, 2021

    * [Frontend] Fix many many bugs for all frontends -_-!
    * [Driver] Upgrade driver to 20210929, now support AX210 NIC!
    * [MVM FrontEnd] Remove Pilot subcarriers

## Sep. 28, 2021

**This is a not-fully-tested major update, may contain bugs. **

    * [Driver] Upgrade to v5.13 base and 20210928 version
    * [Driver] Add AC9260/AX200 CSI extraction
    * [Platform] FrontEnd and HAL layers are all fully re-written to support AC9260/AX200
    * [MATLAB-Toolbox] Please download the latest toolbox to support new NIC models

    * [BugFix] Add the missing methods for IWL5300/QCA9300 frontends

## Sep. 26, 2021

    * [RxS-Parsing-Core] Upgrade RxsBasic segment to v3, adding the packet bandwith output

## Sep. 25, 2021

    * [RxS-Parsing-Core] Upgrade RxsBasic segment to v3, adding the channel's control frequency

## Sep. 24, 2021

    * [Driver] Updating to kernel 5.13 base, in order to support Intel AX210 NIC
    * [Platform] Minor update

## Sep. 19, 2021

    * [Scripts] array_status now prints the frequency of the control channel by [CF_Control] column
    * [Platform] Re-enable CSI interpolation

## Sep. 18, 2021

    * [FrontEnd] Fix a bug, preparing for big merge
    * [Driver] Upgrade driver to 20210918, preparing for big refactoring

## Sep. 16, 2021

    * [FrontEnd] Refactoring the whole frontend layer, to make better acommodation for new ac/ax support

## Sep. 14, 2021

    * [Scripts] Fix a bug in "array_status" script on the AMD Ryzen platform

## Sep. 11, 2021

    * [Driver] Fix a bug when AX200 works in 802.11ac @ 2x2 MIMO and 160 MHz BW
    * [Platform] Add MVMExtraSegment and its display

## Sep. 10, 2021

    * [Driver] Add empty stubs for severy un-supported controls of Intel MVM-based NICs.
    * [Driver] Upgrade to 20210910
    * [Driver] CSI extraction added for Intel MVM but with incorrect parsing...

## Sep. 9, 2021

    * [Platform] Very initial support for the Intel MVM-based Wi-Fi NICs (AC-9260/AX200)
    * [Driver] Upgrade to 20210909 version, for the support of Intel MVM-based Wi-Fi NICs (AC-9260/AX200)

## Sep. 4, 2021

    * [Platform] Remove macAddressPhy from AbstractNIC
    * [USRPFrontEnd] Check USB connection for B200 model
    * [USRPFrontEnd] Add capability to view the *real* per-packet Tx status via "-d vv"

## Sep. 1, 2021

    * [Platform] MacAddressPhy related code refactored.
    * [SDRFrontEnd] Add a pseudo-MAC address for USRP B200 series

## Aug. 29, 2021

    * [Platform] Add the MVM related CSI data parsing code into rxs_parsing_core 

## Aug. 28, 2021

    * [Platform] Fix a potential bug in file writing, remove a unneccessary warning

## Aug. 27, 2021

    * [FrontEnd] Add several utility methods to discover Inte's new CSI-available hardware
    * [Platform] Adding support for Intel MVM-based hardware (Wireless AC/AX series, AC9260, AX200, AX201, AX210, etc)

## Aug. 24, 2021

    * [Driver] Update driver version to 20210824, fixing a core dump bug for IWL5300

## Aug. 22, 2021

    * [Driver] Update driver version to 20210822

## Aug. 21, 2021

**Major update: PicoScenes Driver upgraded to 5.10 to prepare for the merge of new Intel 802.11ac/ax-based CSI extraction**

    * [Platform] Remove useless TxS data path
    * [Driver] Driver version dependency upgraded to 20210821
    * [Platform] Change kernel dependency to v5.10 track, via linux-oem-20.04

For more information, please visit https://zpj.io/picoscenes-to-support-csi-extraction-from-802-11ac-ax-soon/

## Aug. 18, 2021

    * [Platform] Fix a bug for hardware corner case (again)
    * [Platform] Add QR Code based backtrace reporting and fix few potential bugs
    * [Platform] Fix a bug in date time format

## Aug. 17, 2021

    * [Platform] Remove .md extension for changelog
    * [Platform] Fix a crash-in-crash bug
    * [Platform] Fix a bug in time gap computation

## Aug. 16, 2021

    * [Platform] Fix bug of double "--quit" options

## Aug. 15, 2021

    * [Platform] Better crash/error assistance information
    * [Installation] Reject virtualization environment
    * [Platform] Fix a bug in option parsing

## Aug. 14, 2021

    * [Platform] Fix a bug in system command invocation
    * [Platform] Each new PicoScenes build will be expired in next 15 days.

## Aug. 13, 2021

    * [Platform] Faster system integrity checking
    * [Platform] Add Application Event Reporter (reporting program events to tracking server)

## Aug. 6, 2021

    * [Platform] Reduce display latency of CSI Live Plot

## Aug. 2, 2021

    * [License] Adding license facility

## July 26, 2021

    * [Platform] Fix bug in 0~1.0 rx-gain setting for QCA9300
    * [Platform] Fix bug in rx-gain settings for multiple channels

## July 25, 2021

    * [SDRFrontEnd] Fix a bug in Rx gain setting

## July 23, 2021

    * [Platform] Optimized internet and NTP checking
    * [Platform] Fix bug in checking unsupported program options

## July 22, 2021

    * [Platform] Add fine-grained user tracking

## July 20, 2021

    * [Platform] Fix bug in gnuplot dependency
    * [Platform] Fix bug in the detection of the unrecognized program options
    * [Debian] Add sqlite3 dependency

## July 19, 2021

    * [Platform] Faster NTP checking

## July 18, 2021

    * [Platform] Adding Google Analytics based program behavior tracking

## July 17, 2021

    * [Platform] Minor tweak for --plot
    * [Platform] Add fast failure for unrecognized program options.
    * [Platform] Faster & more robust Internet connection checking

## July 15, 2021

    * [Platform] --rx-gain option can now specify Rx gain for each radio chain

## July 12, 2021

    * [Platform] Upgrading driver dependency to 20210712, adding --rx-gain option for QCA9300

## July 11, 2021

    * [Platform] --plot option now can specify "log" or "absolute" plot style for CSI magnitudes

## July 10, 2021

    * [Platform] Add Gnuplot based CSI live plot, by --plot option

## June 30, 2021

    * [Platform] Update driver dependency to 20210630

## June 26, 2021

    * [Platform] Optimize the booting logic by parallelizing the update checking
    * [Platform] Add a parallel Java-based network connection checker

## June 24, 2021

    * [Platform] Continue code refactoring for the Windows port

## June 23, 2021

    * [Platform] Switch from dlibxx-based plugin environment to the cross-platform boost.dll, preparing for the Windows port

## June 17, 2021

    * [Platform] Change max off-line checking times to 50
    * [Platform] Timeout update checking for 10 seconds

## June 1, 2021

    * [SDRFrontEnd] Fix minor bug in method *transmitFramesInBatch*
    * [SDRFrontEnd] Adding parameter checking
    * [Platform] Upgrade PicoScenes_Driver_Version to 20210601

## May 26, 2021

    * [SDRFrontEnd] Make *generateSignal* method public!
    * [SDRFrontEnd] Fix bug in method *transmitFramesInBatch*

## May 21, 2021

    * [SDRFrontEnd] Add "transmitFramesInBatch" method, which pre-generates the baseband signals of multiple frames and transmits the signals in one big shot.

## May 19, 2021

    * [SDRBaseband] output precise RX timestamp in nanosecond-level

## May 18, 2021

    * [SDRFrontEnd] use TX/RX antenna by default
    * [FrontEnd] support normalized txpower and rx-gain: "--txpower 30" for 30db txpower, "--txpower 0.5" for 0.5 of the max Txpower; "--rx-gain 30" for 30db RX gain , "--rx-gain 0.5" for 0.5 of the max RX gain; 
    * [SDRFrontEnd] use 0.7 txpower and 0.6 rx-gain by default

## May 17, 2021

    * [SDRFrontEnd] Add "precise-sfo" option to control whether to enable the pilot CSI-based CSI estimation
    * [Platform] Performing the big merge!!!!!

## May 16, 2021

    * [SDRFrontEnd] --rx-to-file can trigger startRx() directly
    * [SDRFrontEnd] Add channel number checking for --rx-from-file
    * [SDRFrontEnd] Add DSPRateTracker to track the baseband processing speed
    * [SDRFrontEnd] **Improve the Rx decoding performance by 30%**, by parallelizing the raw decoding result to RxFrame conversion.

## May 14, 2021

### The biggest change since the public test

    The FrontEnd and HAL layers are completely rewritten during the past 2 weeks. Some highlights are as follows.
    
    1. Add "virtualSDR" device, allowing users to play with the baseband signals even without a real SDR hardware;
    2. A powerful AbstractSDRFrontEnd API interface which encapsulates all the baseband DSP related stuffs. It significantly simplifies the support for the future SDR devices.
    3. Simplified "--tx-from-file"
    4. Simplified frontEnd setting APIs

## May 14, 2021

    * [SDRBaseband] Fix bug in NoiseFloor and RSS computation
    * [SDRFrontEnd] Fix bug in signal consumption tracking
    * [SDRFrontEnd] Fix bug in virtual SDR
    * [Platform] Merging new FrontEnd architecture

## May 12, 2021

    * [SDRBaseband] New baseband version, integrating the signal count-based auto-reset

## May 10, 2021

    * [SDRBaseband] Fix a bug which causes unexpected resets to the Rx state machine.
    * [AbstractSDRFrontEnd] Fix a bug in Rx buffer reset

## May 7, 2021

    * [SDR Baseband] Fix a bug which causes miss detection; fix a bug in USRP identification
    * [Platform] Remove a redundant library dependency

## May 5, 2021

    * [FrontEnd] USRPFrontEnd refactoring

## May 4, 2021

    * [Platform/SDRFrontEnd] Refactoring USRPFrontEnd into a heavyweight AbstractSDRFrontEnd + lightweight USRPFrontEnd
    * [FrontEnd] Adding virtual SDR FrontEnd
    * [Platform] VirtualSDR first time integreted into PicoScenes architecture

## May 1, 2021

    * [Platform] Improve the robustness of the internet connection checking
    * [Platform] Add hint for PicoScenes update.

## Apr. 30, 2021

    * [USRFrontEnd] Fix a decoding bug in SDR FrontEnd

## Apr. 28, 2021

    * [Platform, USRFrontEnd] Add preciseTxTime option for TxParameter

## Apr. 23, 2021

    * [SDRBaseband] Add fine-grained SFO estimation! (based on Pilot CSI)
    * [Platform] Add PicoScenes Platform update checking
    * [SDRBaseband] Exporting legacy CSI Individual (two successive CSI measurements from the L-LTF section) instead of the merged
    * [SDRBaseband] Fix bug in resampling
    * [rxs-parsing-core] Fix a bug in SignalMatrix storage order

## Apr. 22, 2021

    * [SDRBaseband, rxs-parsing-core, USRPFrontEnd] Pilot CSI interation done

## Apr. 21, 2021

    * [SDRBaseband] Fix a small bug in HT-rate AMPDU
    * [Platform] Add MSDU decoding for the overheard 802.11 MAC frames
    * [SDRBaseband] Adding Pilot CSI output
    * [rxs-parsing-core] Upgrade the CSISegment format to v3, adding *numCSI* property to CSIDimension

## Apr. 20, 2021

    * [Platform] Add PicoScenes system integrity check.

## Apr. 19, 2021

    * [Platform] Improve robustness

## Apr. 13, 2021

    * [Platform] Add an error hint for single NIC case

## Apr. 9, 2021

    * [Platform] Fix the Java dependency issue

## Apr. 8, 2021

    * [Platform] Fix the *fping command not found* issue

## Apr. 6, 2021

    * [Platform] Add support for macOS

## Apr. 5, 2021

    * [Platform] Add dependency for .ini file manipulation

## Apr. 3, 2021

    * [Platform] Add support for USRP name/resource/addr/type identifier
    * [Platform] Improve the performance of USRP device discovery & initialization

## Apr. 1, 2021

    * [Platform] Fix a bug in software update

## Mar. 30, 2021

    * [RxS-Parsing-Core] Support Windows platfrom using MinGW64 v8.1

## Mar. 26, 2021

    * [Platform] Add support for USRP B200 series

## Mar. 19, 2021

    * [Platform] Change .deb dependency settings, clean some old code.
    * [Platform] Add kernel version checking

## Mar. 18, 2021

    * [Platform] Add Aliyun based internet connection checking

## Mar. 13, 2021

    * [Installation] Add EULA confirmation 
    * [Platform] Improve safety
    * [Platform] Add sha256 computation for shared libraries
    * [Driver] Optimize permission settings
    * [Driver/Platform] Change version to 20210313
    * [Platform] Fix a bug in CSI data access

## Mar. 10, 2021

    * [Platform] Adding debconf-based installation UI
    * [Platform] Faster system integrity test
    * [Platform] Add copyright infomation via --version option
    * [Platform] Adding help information

## Mar. 9, 2021

    * [Platform] Add expiration mechanism
    * [Platform] Exclude some developers' tools from the end-user release

## Mar. 5, 2021

    * [Platform] Add SystemTools::Time namespace, add conversion methods among time_point, duration, time_t, timespec and timeval

## Mar. 4, 2021

    * [Platform] Refine hint message for QCA9300/IWL5300
    * [Platform] Refine device discovery experience

## Mar. 3, 2021

    * [Platform] Add system security check
    * [Platform] Escalate the privileges during the first run
    * [Platform] Reject root user

## Mar. 2, 2021

    * [SDRBaseband] Add LDPC decoding method selection

## Feb. 25, 2021

    * [SDRBaseband] Compile with -ffast-math to improve performance
    * [SDRBaseband] Baseband Rx parameters add settings for LDPC decoding

## Feb. 23, 2021

    * [IWL5300] Fix bug in auto de-permutation for ant_sel value
    * [Driver] Update driver version to 20210222, add support for AP/Client mode CSI measurement on IWL5300
    * [Platform] Fix bug in multi-USRP shutdown sequence 

## Feb. 21, 2021

    * [Platform] Improve the robustness of Platform shutdown sequence
    * [Platform] Temporarily disable ctrl+c for faster shutdown
    * [Extra] Add CrashMessageViewer
    * [IWL5300] Fix an old bug in STS/MCS settings
    * [SDRBaseband] Fix a bug in HE-SU/MU CSI extraction
    * [IWL5300] Add NonHT rate transmission capability

## Feb. 20, 2021

    * [SodiumWrapper] Add new encryption/decryption facilities
    * [Platform] Add PicoScenes shutdown sequence, fix several bug, better display during shutdown sequence
    * [Platform] Add ctrl+c response
    * [Platform] Platform can now capture the unhandled exception and print the encrypted backtrace
    * [SDRBaseband] New Baseband, add RxCPOffset and pilotTrackingMethod options
    * [USRPFrontEnd] Add rx-cp-offset option

## Feb. 19, 2021

    * [USRPFrontend] Improve robustness in stopTx

## Feb. 18, 2021

    * [rxs-parsing-core] Fix a bug in CSI parsing for QCA9300 w/ numESS>0
    * [rxs-parsing-core] Fix a bug in CSI parsing for IWL5300 w/ numESS>0
    * [rxs-parsing-core] Rename ChannelMode to ChannelModeEnum, and move it to PicoScenesCommons.hxx/cxx
    * [rxs-parsing-core] Add V2 CSI data format parser, which specify subcarrierIndexOffset explicitly
    * [Platform] Update PicoScenes Driver dependency to 20210218
    * [IWL5300] Improve robustness of array_prepare_for_picoscenes for IWL5300

## Jan. 30, 2021

    * [SDRBaseband] Improve USRP responsiveness during round-trip measurement
    * Add changelog.md
