## 1 Introduction  
Global Navigation Satellite Systems (GNSS) signals are relatively weak and thus vulnerable to deliberate or unintentional interference [1]. An electronically-steered antenna array system provides an effective approach to mitigate interference by controlling the reception pattern and steering beams/nulls. As a result, so called Controlled Reception Pattern Antenna (CRPA) arrays have been deployed by organizations such as the U.S. military which seeks high levels of interference rejection. However, the increased cost and computational complexity has not been acceptable for the civil commercial market thus far. This paper demonstrates a low cost CRPA implementation developed and implemented using the flexible software radio approach. In the literature, CRPA receivers have been implemented by different approaches. [PERSON] _et al._[2] used a four-element antenna array and a CRPA system to implement spatial nulling adaptive array. The CRPA system used an analogue approach to combine the signals and adopt a correlation feedback to derive the weight vector. [PERSON] _et al._[3] implemented a MATLAB-based software receiver to assess the performance of the beamforming algorithms and found the steering vectors by Direction of Arrival (DoA) algorithms. [PERSON] _et al._[4] proposed a beamforming architecture for real Intermediate Frequency (IF) signals and calculated optimum weights from given GPS almanac. [PERSON] _et al._[5] developed a four-element antenna array and front-ends for dual-band L1/L5 signals. They also implemented a MATLAB-based software receiver for field test of adaptive beamforming algorithms with directions of satellites calculated from DoA estimation. These MATLAB-based software receivers do not have real-time capabilities. [PERSON] _et al._[6] implemented a real-time hardware and software platform which is capable of digital beamforming. They used a Field Programmable Gate Array (FPGA) for digital beamforming up to eight antenna elements and delivered the resulting spatially-filtered digital signals to a Personal Computer (PC) by Ethernet bus. The signal can be stored for post-processing or processed by a real-time software receiver [7, 8]. [PERSON] _et al._[9] describe various approaches for beamforming (pre- and post-correlation) in a post-processing software radio architecture. [PERSON] _et al._[10] use a quad-core Central Processing Unit (CPU) coupled with a Graphics Processing Unit (GPU) to implement an all-in-view CRPA software receiver. However, no previous publication has documented the design or implementation of an all-in-view pre-correlation real-time CRPA software receiver for GNSS sensors using CPU alone. The bit-wise parallel software correlation algorithm [11] has the potential to enable a real-time software receiver if digitized GNSS signals have 2-bit resolution. Yet 2-bit resolution does not provide sufficient dynamic range when the CRPA design is most valuable--in the presence of high power interferer. Thus, the bit-wise parallel software correlation algorithm is not sufficient for any practical CRPA implementation which would demand 8 or more bits of sampling resolution. This paper completely documents a four-element CRPA software receiver implementation capable of processing 16-bit complex samples generating up to twelve beamformed channels for the Global Positioning System (GPS) and Wide Area Augmentation System (WAAS) L1 Coarse/Acquisition (C/A) code signals in real time. Conventionally, antenna array system receivers perform CRPA processing with the geometry of the antennas and cable lengths known in advance. In this software receiver, the implemented algorithm allows CRPA operation without such prior knowledge. Instead, the carrier phase differences between satellite tracking channels are used as the constraints of adaptive beamforming algorithm as a simplistic model for Minimum Variance Distortionless Response (MVDR) [12] pre-correlation beamforming.