Patent Publication Number: US-10772059-B2

Title: Methods and systems for on demand network MIMO

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
     This patent application is a non-provisional application of, and claims priority to and the benefit of U.S. Provisional Patent Application No. 62/290,488, filed Feb. 3, 2016, the entire content of which is hereby incorporated by reference for all purposes. 
    
    
     FIELD OF THE DISCLOSURE 
     This disclosure generally relates to methods and systems for distributed processing of data. In particular, this disclosure relates to methods and systems for a distributed radio communications network. 
     BACKGROUND OF THE DISCLOSURE 
     Conventional data collection networks, such as wireless sensor networks (WSNs), provide distributed monitoring using sensor nodes which typically aim to be low-cost and/or low-power. The geographical range of such networks may be limited and certain networks may employ multi-hop transmission over a number of nodes, such as in a mesh configuration. Some data collection systems sometimes face network impairment due to congestion at intermediate mesh nodes, disabled nodes and/or low signal-to-noise ratios. Certain conventional data collection networks also face increased costs due to the number of nodes deployed to support the network, specialized hardware to gather or process the data, and/or maintenance/upgrade of these remote nodes. In multiple industries including agriculture, weather prediction, disaster management and homeland security, real time collection of environmental data over wide areas is a key enabler. However, existing wireless technologies including mesh networks, cellular and satellite do not have the range or are cost prohibitive for pervasive monitoring applications. 
     SUMMARY OF THE DISCLOSURE 
     In various aspects, the present application is directed to methods and systems for on demand network multiple-input-multiple-output (MIMO). The systems and methods described herein may selectively apply network MIMO to the uplink of a wireless network that has a plurality of gateways, and can support various types of low-power transmitters, including wireless sensors and RFID tags. When requested, each gateway may forward the physical layer samples of packets (e.g., after compression) to a server, which may decode the packets using MIMO techniques. This could be described as selective application of multi-user MIMO with a distributed receiver array. Packets that have adequate SINR at a gateway may be decoded at the gateway. The spatial multiplexing capability of MIMO enables packets that have too much interference at the gateways for instance, to be decoded at the server, which can support energy saving transmit-only strategies. The selectivity or “on demand” aspect can lower the fronthaul cost of sending samples to the server. 
     In one aspect, the present disclosure is directed to a system for processing packets over a communications network. The system may include a first gateway of a plurality of gateways. The first gateway may wirelessly receive a modulated signal from a first node. The modulated signal may include a first packet. The first gateway may generate first samples corresponding to the first packet. The first gateway may decode the generated first samples to obtain decoded data. The first gateway may transmit the decoded data to a server. The server and/or the first gateway may determine, based on the decoded data, whether the first packet is successfully decoded at the first gateway. In some embodiments, the server obtains the generated first samples from the first gateway for decoding at the server, responsive to determining that the first packet is unsuccessfully decoded at the first gateway. 
     In certain embodiments, the system includes a second gateway of the plurality of gateways. The second gateway may wirelessly receive the modulated signal from the first node. The second gateway may generate second samples corresponding to the first packet. In some embodiments, the server receives the generated second samples from the second gateway. The server may decode the first packet using the generated first samples and the generated second samples. The server may synchronize and/or combine the generated first samples and the generated second samples, to decode the first packet. The server may decode the first packet using network multiple-input-multiple-output (MIMO) processing. 
     In some embodiments, the first gateway transmits the generated first samples to the server responsive to a scheduled transmission or a request from the server. The first gateway may estimate at least one of a time offset or a carrier frequency offset (CFO) corresponding to the first packet. The first node may transmit a preamble of the first packet in the modulated signal at a higher energy than a payload portion of the first packet. The first gateway may perform offset correction using the preamble. In some embodiments, the first gateway excludes the preamble from the first samples from being sent to the server to be decoded. The first gateway may determine a signal to noise ratio (SNR) or an indication of signal amplitude of the first packet, and to transmit the SNR or the indication to the server. 
     In another aspect, the present disclosure is directed to a method for processing packets over a communications network. The method may include wirelessly receiving, by a first gateway of a plurality of gateways, a modulated signal from a first node, the modulated signal comprising a first packet. The first gateway may generate first samples corresponding to the first packet. The first gateway may decode the generated first samples to obtain decoded data. The first gateway may transmit the decoded data to a server. The first gateway and/or the server may determine, based on the decoded data, whether the first packet is successfully decoded at the first gateway. The server may obtain the generated first samples from the first gateway for decoding at the server, responsive to determining that the first packet is unsuccessfully decoded at the first gateway. 
     In some embodiments, a second gateway of the plurality of gateways wirelessly receives the modulated signal from the first node. The second gateway may generate second samples corresponding to the first packet. The server may receive the generated second samples from the second gateway. The server may decode the first packet using the generated first samples and the generated second samples. The server may synchronize and/or combine the generated first samples and the generated second samples, to decode the first packet. The server may decode the first packet using network multiple-input multiple-output (MIMO) processing. 
     In certain embodiments, the first gateway transmits the generated first samples to the server responsive to a scheduled transmission or a request from the server. The first gateway may estimate at least one of a time offset or a carrier frequency offset (CFO) corresponding to the first packet. The first node may transmit a preamble of the first packet in the modulated signal at a higher energy than a payload portion of the first packet. The first gateway may perform offset correction using the preamble. The first gateway may exclude the preamble from the first samples from being sent to the server to be decoded. The first gateway may determine a signal to noise ratio (SNR) or an indication of signal amplitude of the first packet. The first gateway may transmit the SNR or the indication to the server. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The foregoing and other objects, aspects, features, and advantages of the disclosure will become more apparent and better understood by referring to the following description taken in conjunction with the accompanying drawings, in which: 
         FIG. 1A  is a block diagram depicting an embodiment of a network environment comprising client machines in communication with remote machines. 
         FIGS. 1B and 1C  are block diagrams depicting embodiments of computing devices useful in connection with the methods and systems described herein. 
         FIG. 2A  is a block diagram illustrating an embodiment of a distributed radio communications network. 
         FIG. 2B  is a flowchart illustrating an example of some steps that are applied to combine signals from multiple gateways. 
         FIG. 2C  is a flowchart illustrating an example of some steps that are applied to eliminate the effects of interfering signals. 
         FIG. 2D  is a block diagram depicting one embodiment of a wireless sensor node. 
         FIG. 2E  is a block diagram depicting another embodiment of a wireless sensor node. 
         FIGS. 2F and 2G  are block diagrams of embodiments of a gateway for receiving and processing node transmissions 
         FIG. 2H  depicts a block diagram of one embodiment of a SDR server. 
         FIG. 2I  depicts one embodiment of data flow diagram for an end-user application. 
         FIG. 2J  is a block diagram depicting one embodiment of a flow diagram for a method of a distributed radio communications network. 
         FIG. 3A  depicts a block diagram of one embodiment of a system for processing packets over a communications network. 
         FIG. 3B  depicts one embodiment of a configuration of gateways. 
         FIG. 3C  is a block diagram depicting one embodiment of a flow diagram for a method for processing packets over a communications network. 
     
    
    
     DETAILED DESCRIPTION 
     For purposes of reading the description of the various embodiments below, the following descriptions of the sections of the specification and their respective contents may be helpful: 
     Section A describes a network environment and computing environment which may be useful for practicing embodiments described herein; 
     Section B describes embodiments of methods and apparatuses for a distributed radio communications network; and 
     Section C describes embodiments of methods and systems for on demand network MIMO. 
     A. Computing and Network Environment 
     Prior to discussing specific embodiments of the present solution, it may be helpful to describe aspects of the operating environment as well as associated system components (e.g., hardware elements) in connection with the methods and systems described herein. Referring to  FIG. 1A , an embodiment of a network environment is depicted. In brief overview, the network environment includes one or more clients  101   a - 101   n  (also generally referred to as local machine(s)  101 , client(s)  101 , client node(s)  101 , client machine(s)  101 , client computer(s)  101 , client device(s)  101 , endpoint(s)  101 , or endpoint node(s)  101 ) in communication with one or more servers  106   a - 106   n  (also generally referred to as server(s)  106 , node  106 , or remote machine(s)  106 ) via one or more networks  104 . In some embodiments, a client  101  has the capacity to function as both a client node seeking access to resources provided by a server and as a server providing access to hosted resources for other clients  101   a - 101   n.    
     Although  FIG. 1A  shows a network  104  between the clients  101  and the servers  106 , the clients  101  and the servers  106  may be on the same network  104 . The network  104  can be a local-area network (LAN), such as a company Intranet, a metropolitan area network (MAN), or a wide area network (WAN), such as the Internet or the World Wide Web. In some embodiments, there are multiple networks  104  between the clients  101  and the servers  106 . In one of these embodiments, a network  104 ′ (not shown) may be a private network and a network  104  may be a public network. In another of these embodiments, a network  104  may be a private network and a network  104 ′ a public network. In still another of these embodiments, networks  104  and  104 ′ may both be private networks. 
     The network  104  may be any type and/or form of network and may include any of the following: a point-to-point network, a broadcast network, a wide area network, a local area network, a telecommunications network, a data communication network, a computer network, an ATM (Asynchronous Transfer Mode) network, a SONET (Synchronous Optical Network) network, a SDH (Synchronous Digital Hierarchy) network, a wireless network and a wireline network. In some embodiments, the network  104  may comprise a wireless link, such as an infrared channel or satellite band. The topology of the network  104  may be a bus, star, or ring network topology. The network  104  may be of any such network topology as known to those ordinarily skilled in the art capable of supporting the operations described herein. The network may comprise mobile telephone networks utilizing any protocol(s) or standard(s) used to communicate among mobile devices, including AMPS, TDMA, CDMA, GSM, GPRS, UMTS, WiMAX, 3G or 4G. In some embodiments, different types of data may be transmitted via different protocols. In other embodiments, the same types of data may be transmitted via different protocols. 
     In some embodiments, the system may include multiple, logically-grouped servers  106 . In one of these embodiments, the logical group of servers may be referred to as a server farm  38  or a machine farm  38 . In another of these embodiments, the servers  106  may be geographically dispersed. In other embodiments, a machine farm  38  may be administered as a single entity. In still other embodiments, the machine farm  38  includes a plurality of machine farms  38 . The servers  106  within each machine farm  38  can be heterogeneous—one or more of the servers  106  or machines  106  can operate according to one type of operating system platform (e.g., WINDOWS, manufactured by Microsoft Corp. of Redmond, Wash.), while one or more of the other servers  106  can operate on according to another type of operating system platform (e.g., Unix or Linux). 
     In one embodiment, servers  106  in the machine farm  38  may be stored in high-density rack systems, along with associated storage systems, and located in an enterprise data center. In this embodiment, consolidating the servers  106  in this way may improve system manageability, data security, the physical security of the system, and system performance by locating servers  106  and high performance storage systems on localized high performance networks. Centralizing the servers  106  and storage systems and coupling them with advanced system management tools allows more efficient use of server resources. 
     The servers  106  of each machine farm  38  do not need to be physically proximate to another server  106  in the same machine farm  38 . Thus, the group of servers  106  logically grouped as a machine farm  38  may be interconnected using a wide-area network (WAN) connection or a metropolitan-area network (MAN) connection. For example, a machine farm  38  may include servers  106  physically located in different continents or different regions of a continent, country, state, city, campus, or room. Data transmission speeds between servers  106  in the machine farm  38  can be increased if the servers  106  are connected using a local-area network (LAN) connection or some form of direct connection. Additionally, a heterogeneous machine farm  38  may include one or more servers  106  operating according to a type of operating system, while one or more other servers  106  execute one or more types of hypervisors rather than operating systems. In these embodiments, hypervisors may be used to emulate virtual hardware, partition physical hardware, virtualize physical hardware, and execute virtual machines that provide access to computing environments. Hypervisors may include those manufactured by VMWare, Inc., of Palo Alto, Calif.; the Xen hypervisor, an open source product whose development is overseen by Citrix Systems, Inc.; the VirtualServer or virtual PC hypervisors provided by Microsoft or others. 
     In order to manage a machine farm  38 , at least one aspect of the performance of servers  106  in the machine farm  38  should be monitored. Typically, the load placed on each server  106  or the status of sessions running on each server  106  is monitored. In some embodiments, a centralized service may provide management for machine farm  38 . The centralized service may gather and store information about a plurality of servers  106 , respond to requests for access to resources hosted by servers  106 , and enable the establishment of connections between client machines  101  and servers  106 . 
     Management of the machine farm  38  may be de-centralized. For example, one or more servers  106  may comprise components, subsystems and modules to support one or more management services for the machine farm  38 . In one of these embodiments, one or more servers  106  provide functionality for management of dynamic data, including techniques for handling failover, data replication, and increasing the robustness of the machine farm  38 . Each server  106  may communicate with a persistent store and, in some embodiments, with a dynamic store. 
     Server  106  may be a file server, application server, web server, proxy server, appliance, network appliance, gateway, gateway, gateway server, virtualization server, deployment server, SSL VPN server, or firewall. In one embodiment, the server  106  may be referred to as a remote machine or a node. In another embodiment, a plurality of nodes  290  may be in the path between any two communicating servers. 
     In one embodiment, the server  106  provides the functionality of a web server. In another embodiment, the server  106   a  receives requests from the client  101 , forwards the requests to a second server  206   b  and responds to the request by the client  101  with a response to the request from the server  106   b . In still another embodiment, the server  106  acquires an enumeration of applications available to the client  101  and address information associated with a server  106 ′ hosting an application identified by the enumeration of applications. In yet another embodiment, the server  106  presents the response to the request to the client  101  using a web interface. In one embodiment, the client  101  communicates directly with the server  106  to access the identified application. In another embodiment, the client  101  receives output data, such as display data, generated by an execution of the identified application on the server  106 . 
     The client  101  and server  106  may be deployed as and/or executed on any type and form of computing device, such as a computer, network device or appliance capable of communicating on any type and form of network and performing the operations described herein.  FIGS. 1B and 1C  depict block diagrams of a computing device  100  useful for practicing an embodiment of the client  101  or a server  106 . As shown in  FIGS. 1B and 1C , each computing device  100  includes a central processing unit  121 , and a main memory unit  122 . As shown in  FIG. 1B , a computing device  100  may include a storage device  128 , an installation device  116 , a network interface  118 , an I/O controller  123 , display devices  124   a - 101   n , a keyboard  126  and a pointing device  127 , such as a mouse. The storage device  128  may include, without limitation, an operating system, software, and a software of a demand side platform  120 . As shown in  FIG. 1C , each computing device  100  may also include additional optional elements, such as a memory port  103 , a bridge  170 , one or more input/output devices  130   a - 130   n  (generally referred to using reference numeral  130 ), and a cache memory  140  in communication with the central processing unit  121 . 
     The central processing unit  121  is any logic circuitry that responds to and processes instructions fetched from the main memory unit  122 . In many embodiments, the central processing unit  121  is provided by a microprocessor unit, such as: those manufactured by Intel Corporation of Mountain View, Calif.; those manufactured by Motorola Corporation of Schaumburg, Ill.; those manufactured by International Business Machines of White Plains, N.Y.; or those manufactured by Advanced Micro Devices of Sunnyvale, Calif. The computing device  100  may be based on any of these processors, or any other processor capable of operating as described herein. 
     Main memory unit  122  may be one or more memory chips capable of storing data and allowing any storage location to be directly accessed by the microprocessor  121 , such as Static random access memory (SRAM), Burst SRAM or SynchBurst SRAM (BSRAM), Dynamic random access memory (DRAM), Fast Page Mode DRAM (FPM DRAM), Enhanced DRAM (EDRAM), Extended Data Output RAM (EDO RAM), Extended Data Output DRAM (EDO DRAM), Burst Extended Data Output DRAM (BEDO DRAM), Enhanced DRAM (EDRAM), synchronous DRAM (SDRAM), JEDEC SRAM, PC100 SDRAM, Double Data Rate SDRAM (DDR SDRAM), Enhanced SDRAM (ESDRAM), SyncLink DRAM (SLDRAM), Direct Rambus DRAM (DRDRAM), Ferroelectric RAM (FRAM), NAND Flash, NOR Flash and Solid State Drives (SSD). The main memory  122  may be based on any of the above described memory chips, or any other available memory chips capable of operating as described herein. In the embodiment shown in  FIG. 1B , the processor  121  communicates with main memory  122  via a system bus  150  (described in more detail below).  FIG. 1C  depicts an embodiment of a computing device  100  in which the processor communicates directly with main memory  122  via a memory port  103 . For example, in  FIG. 1C  the main memory  122  may be DRDRAM. 
       FIG. 1C  depicts an embodiment in which the main processor  121  communicates directly with cache memory  140  via a secondary bus, sometimes referred to as a backside bus. In other embodiments, the main processor  121  communicates with cache memory  140  using the system bus  150 . Cache memory  140  typically has a faster response time than main memory  122  and is typically provided by SRAM, BSRAM, or EDRAM. In the embodiment shown in  FIG. 1C , the processor  121  communicates with various I/O devices  130  via a local system bus  150 . Various buses may be used to connect the central processing unit  121  to any of the I/O devices  130 , including a VESA VL bus, an ISA bus, an EISA bus, a MicroChannel Architecture (MCA) bus, a PCI bus, a PCI-X bus, a PCI-Express bus, or a NuBus. For embodiments in which the I/O device is a video display  124 , the processor  121  may use an Advanced Graphics Port (AGP) to communicate with the display  124 .  FIG. 1C  depicts an embodiment of a computer  100  in which the main processor  121  may communicate directly with I/O device  130   b , for example via HYPERTRANSPORT, RAPIDIO, or INFINIBAND communications technology.  FIG. 1C  also depicts an embodiment in which local busses and direct communication are mixed: the processor  121  communicates with I/O device  130   a  using a local interconnect bus while communicating with I/O device  130   b  directly. 
     A wide variety of I/O devices  130   a - 130   n  may be present in the computing device  100 . Input devices include keyboards, mice, trackpads, trackballs, microphones, dials, touch pads, and drawing tablets. Output devices include video displays, speakers, inkjet printers, laser printers, projectors and dye-sublimation printers. The I/O devices may be controlled by an I/O controller  123  as shown in  FIG. 1B . The I/O controller may control one or more I/O devices such as a keyboard  126  and a pointing device  127 , e.g., a mouse or optical pen. Furthermore, an I/O device may also provide storage and/or an installation medium  116  for the computing device  100 . In still other embodiments, the computing device  100  may provide USB connections (not shown) to receive handheld USB storage devices such as the USB Flash Drive line of devices manufactured by Twintech Industry, Inc. of Los Alamitos, Calif. 
     Referring again to  FIG. 1B , the computing device  100  may support any suitable installation device  116 , such as a disk drive, a CD-ROM drive, a CD-R/RW drive, a DVD-ROM drive, a flash memory drive, tape drives of various formats, USB device, hard-drive or any other device suitable for installing software and programs. The computing device  100  may further comprise a storage device, such as one or more hard disk drives or redundant arrays of independent disks, for storing an operating system and other related software, and for storing application software programs such as any program related to the software  120  for the demand side platform. Optionally, any of the installation devices  116  could also be used as the storage device. Additionally, the operating system and the software can be run from a bootable medium, for example, a bootable CD. 
     Furthermore, the computing device  100  may include a network interface  118  to interface to the network  104  through a variety of connections including, but not limited to, standard telephone lines, LAN or WAN links (e.g., 802.11, T1, T3, 56 kb, X.25, SNA, DECNET), broadband connections (e.g., ISDN, Frame Relay, ATM, Gigabit Ethernet, Ethernet-over-SONET), wireless connections, or some combination of any or all of the above. Connections can be established using a variety of communication protocols (e.g., TCP/IP, IPX, SPX, NetBIOS, Ethernet, ARCNET, SONET, SDH, Fiber Distributed Data Interface (FDDI), RS232, IEEE 802.11, IEEE 802.11a, IEEE 802.11b, IEEE 802.11g, IEEE 802.11n, CDMA, GSM, WiMax and direct asynchronous connections). In one embodiment, the computing device  100  communicates with other computing devices  100 ′ via any type and/or form of gateway or tunneling protocol such as Secure Socket Layer (SSL) or Transport Layer Security (TLS), or the Citrix Gateway Protocol manufactured by Citrix Systems, Inc. of Ft. Lauderdale, Fla. The network interface  118  may comprise a built-in network adapter, network interface card, PCMCIA network card, card bus network adapter, wireless network adapter, USB network adapter, modem or any other device suitable for interfacing the computing device  100  to any type of network capable of communication and performing the operations described herein. 
     In some embodiments, the computing device  100  may comprise or be connected to multiple display devices  124   a - 124   n , which each may be of the same or different type and/or form. As such, any of the I/O devices  130   a - 130   n  and/or the I/O controller  123  may comprise any type and/or form of suitable hardware, software, or combination of hardware and software to support, enable or provide for the connection and use of multiple display devices  124   a - 124   n  by the computing device  100 . For example, the computing device  100  may include any type and/or form of video adapter, video card, driver, and/or library to interface, communicate, connect or otherwise use the display devices  124   a - 124   n . In one embodiment, a video adapter may comprise multiple connectors to interface to multiple display devices  124   a - 124   n . In other embodiments, the computing device  100  may include multiple video adapters, with each video adapter connected to one or more of the display devices  124   a - 124   n . In some embodiments, any portion of the operating system of the computing device  100  may be configured for using multiple displays  124   a - 124   n . In other embodiments, one or more of the display devices  124   a - 124   n  may be provided by one or more other computing devices, such as computing devices  100   a  and  100   b  connected to the computing device  100 , for example, via a network. These embodiments may include any type of software designed and constructed to use another computer&#39;s display device as a second display device  124   a  for the computing device  100 . One ordinarily skilled in the art will recognize and appreciate the various ways and embodiments that a computing device  100  may be configured to have multiple display devices  124   a - 124   n.    
     In further embodiments, an I/O device  130  may be a bridge between the system bus  150  and an external communication bus, such as a USB bus, an Apple Desktop Bus, an RS-232 serial connection, a SCSI bus, a FireWire bus, a FireWire 800 bus, an Ethernet bus, an AppleTalk bus, a Gigabit Ethernet bus, an Asynchronous Transfer Mode bus, a FibreChannel bus, a Serial Attached small computer system interface bus, or a HDMI bus. 
     A computing device  100  of the sort depicted in  FIGS. 1B and 1C  typically operates under the control of operating systems, which control scheduling of tasks and access to system resources. The computing device  100  can be running any operating system such as any of the versions of the MICROSOFT WINDOWS operating systems, the different releases of the Unix and Linux operating systems, any version of the MAC OS for Macintosh computers, any embedded operating system, any real-time operating system, any open source operating system, any proprietary operating system, any operating systems for mobile computing devices, or any other operating system capable of running on the computing device and performing the operations described herein. Typical operating systems include, but are not limited to: Android, manufactured by Google Inc; WINDOWS 7 and 8, manufactured by Microsoft Corporation of Redmond, Wash.; MAC OS, manufactured by Apple Computer of Cupertino, Calif.; WebOS, manufactured by Research In Motion (RIM); OS/2, manufactured by International Business Machines of Armonk, N.Y.; and Linux, a freely-available operating system distributed by Caldera Corp. of Salt Lake City, Utah, or any type and/or form of a Unix operating system, among others. 
     The computer system  100  can be any workstation, telephone, desktop computer, laptop or notebook computer, server, handheld computer, mobile telephone or other portable telecommunications device, media playing device, a gaming system, mobile computing device, or any other type and/or form of computing, telecommunications or media device that is capable of communication. The computer system  100  has sufficient processor power and memory capacity to perform the operations described herein. For example, the computer system  100  may comprise a device of the IPAD or IPOD family of devices manufactured by Apple Computer of Cupertino, Calif., a device of the PLAYSTATION family of devices manufactured by the Sony Corporation of Tokyo, Japan, a device of the NINTENDO/Wii family of devices manufactured by Nintendo Co., Ltd., of Kyoto, Japan, or an XBOX device manufactured by the Microsoft Corporation of Redmond, Wash. 
     In some embodiments, the computing device  100  may have different processors, operating systems, and input devices consistent with the device. For example, in one embodiment, the computing device  100  is a smart phone, mobile device, tablet or personal digital assistant. In still other embodiments, the computing device  100  is an Andriod-based mobile device, an iPhone smart phone manufactured by Apple Computer of Cupertino, Calif., or a Blackberry handheld or smart phone, such as the devices manufactured by Research In Motion Limited. Moreover, the computing device  100  can be any workstation, desktop computer, laptop or notebook computer, server, handheld computer, mobile telephone, any other computer, or other form of computing or telecommunications device that is capable of communication and that has sufficient processor power and memory capacity to perform the operations described herein. 
     In some embodiments, the computing device  100  is a digital audio player. In one of these embodiments, the computing device  100  is a tablet such as the Apple IPAD, or a digital audio player such as the Apple IPOD lines of devices, manufactured by Apple Computer of Cupertino, Calif. In another of these embodiments, the digital audio player may function as both a portable media player and as a mass storage device. In other embodiments, the computing device  100  is a digital audio player such as an MP3 players. In yet other embodiments, the computing device  100  is a portable media player or digital audio player supporting file formats including, but not limited to, MP3, WAV, M4A/AAC, WMA Protected AAC, AIFF, Audible audiobook, Apple Lossless audio file formats and .mov, .m4v, and .mp4 MPEG-4 (H.264/MPEG-4 AVC) video file formats. 
     In some embodiments, the communications device  101  includes a combination of devices, such as a mobile phone combined with a digital audio player or portable media player. In one of these embodiments, the communications device  101  is a smartphone, for example, an iPhone manufactured by Apple Computer, or a Blackberry device, manufactured by Research In Motion Limited. In yet another embodiment, the communications device  101  is a laptop or desktop computer equipped with a web browser and a microphone and speaker system, such as a telephony headset. In these embodiments, the communications devices  101  are web-enabled and can receive and initiate phone calls. 
     In some embodiments, the status of one or more machines  101 ,  106  in the network  104  is monitored, generally as part of network management. In one of these embodiments, the status of a machine may include an identification of load information (e.g., the number of processes on the machine, CPU and memory utilization), of port information (e.g., the number of available communication ports and the port addresses), or of session status (e.g., the duration and type of processes, and whether a process is active or idle). In another of these embodiments, this information may be identified by a plurality of metrics, and the plurality of metrics can be applied at least in part towards decisions in load distribution, network traffic management, and network failure recovery as well as any aspects of operations of the present solution described herein. Aspects of the operating environments and components described above will become apparent in the context of the systems and methods disclosed herein. 
     B. Distributed Radio Communications Network 
     Prior to discussing specific embodiments of the present solutions, it may be helpful to describe aspects of software defined radios (SDRs) in connection with the methods and systems described herein. A SDR can implement functions normally provided by radio hardware (e.g. mixing, filtering, amplification, modulation/demodulation, detecting, decoding, encoding) in software. By way of example, SDR software may perform radio frequency filtering, audio frequency filtering and/or signal enhancement (e.g., equalization and binaural presentation). In a SDR, some amount of signal processing may be performed by a general-purpose processor for example, instead of specialized hardware. Various functions can therefore be implemented via software configuration on a computing device, such as those described in connection with  FIGS. 1A-1C . 
     Hardware that may be configured by SDR includes embedded systems and systems incorporating field programmable gate array (FPGA) devices, as examples. In certain applications and implementations, some components or functions of a SDR device disclosed herein may remain in hardware, for example, an analog-to-digital converter. SDR software as disclosed herein may be special-purpose and/or configurable. Thus, SDRs may be configured to be capable of receiving and transmitting various radio or communications protocols. Software implementing modules of a SDR Server  107  may be written in a variety of computer language, such as C, assembly language, Python, Java, Basic, or other languages. 
     Radio frequency (RF) signals may be converted to and from the digital domain via analog-to-digital (A/D) and digital-to-analog (D/A) converters. In a SDR, RF signals received by an antenna may be filtered and/or amplified (e.g., by one or more software-defined hardware components), and may undergo mixing or super-heterodyne processing to baseband or an intermediate frequency (IF), prior to being sampled by an A/D converter (e.g., one or more software-defined hardware components). The samples may be generated using decimation and/or quantization, and the sample may comprise in-phase and quadratue (I/Q) components or samples. The samples may correspond to a specific level of quantization (e.g., 16-bit), resulting in a corresponding number of bytes (e.g., 4) of signal information being produced and/or stored. A processor executing software applications may process samples from the A/D converter and may reconstruct the transmitted information (e.g., perform decoding, to recover an information packet). The reverse process may take information that is to be transmitted and may construct samples of a transmitted waveform that is applied to a D/A converter (e.g., implemented as one or more software-defined hardware components). The output of the D/A converter can then be filtered and/or amplified (e.g., by one or more software-defined hardware components) before being applied to an antenna. Digital or analog frequency conversion steps may be utilized to convert samples to or from the desired operating frequency (e.g., within one or more software-defined hardware components). 
     In a distributed radio communications network configuration, such as those disclosed herein in connection with the present methods and systems, SDR software and/or associated applications may be deployed on one or more network devices. The distributed radio communications network may include a wide-area or pervasive wireless sensor network (WSN) or machine to machine (M2M) network. Such networks may be configured to monitor and/or provide information about water, weather and/or energy to customers in agriculture, government and defense. Such a network may channel generated data to a centralized node for processing and/or combination. In certain embodiments, the network may include a cloud-based sensor network (hereafter sometimes referred as “RadioCloud”) to gather or receive data from low-cost, battery-powered sensors. A network of gateways may be deployed (e.g., as part of the RadioCloud) to relay sensor transmissions to a processing center or cloud-based applications. The transmissions may be relayed via IP networks for example, that may be wireless or otherwise. A cloud-based web services platform may provide end-user access to data recovered from the sensor transmissions. 
     In some embodiments, a significant portion of a distributed radio communications network can be implemented using SDRs. For example, some sensors or gateways, or components thereof, may be implemented using specifically-adapted SDR software and applications. Conventional SDRs typically combine the front-end, digital conversion and software functions into a single device, which requires that all devices in a network be equipped with the necessary hardware and software functions along with a power supply to power all the components. The SDR solutions disclosed herein may configure specific devices (e.g., a central server), and may provide specific functions but not require all. 
     In certain embodiments, the distributed radio communications network is configured to collect network-wide data on impairments such as interference, to a central location for example. The distributed radio communications network may improve communication link margin by combining data received at multiple locations (e.g., gateways). In a network, updates to SDR functions may require physical dissemination of computer media (e.g., a CDROM) or may require multiple downloads of files over a communications network. Embodiments of the distributed radio communications network employing SDR may defer or relocate computationally intensive techniques such as antenna diversity or Multiple-Input Multiple-Output (MIMO), Multiple-Input Single-Output (MISO) or Single-Input Multiple Output (SIMO) from some or all radios (e.g., a sensor or gateway) in the network, to a central processing node or to specific applications hosted at one or more locations in the network. It is therefore not necessary for all radios in the network to contain computational hardware and complete software functions for handling these computationally-intensive techniques. 
     In some radio communication applications, it may be desirable to perform some of the receiver functions at a particular location that is far removed from the antenna and/or RF electronics. This could occur when the complexity of some receiving functions require costly processing systems (for example, MIMO/MISO/SIMO applications). Rather than perform these functions at each receiver (e.g., a gateway or intermediate node), it may be advantageous to collect the samples of RF information and send them via a network to a remote location where SDR processing can be centralized or shared among multiple radios. 
     By way of illustration,  FIG. 2A  shows an embodiment of a distributed radio communications network having a plurality of nodes ( 100 ,  101 ) and a plurality of gateways ( 102 ,  103 ). The nodes  100 ,  101  may communicate over one or more radio channels with one or more gateways ( 102 ,  103 ). Each gateway ( 102 ,  103 ) may be connected over a respective wired or wireless communications link  116 ,  117  via a network  104  to one or more SDR servers  107 . 
     Each gateway may include an antenna, a “front end module”, an A/D converter, a D/A converter, a digital upconverter, a digital downconverter, and a network interface. One or more software modules, applications, or other executable code running on the SDR servers  107  may operate on digital samples received from the gateways ( 102 ,  103 ), or generate samples that are in turn transmitted by the gateways ( 102 ,  103 ) to the nodes. At least one, and possibly a plurality of users ( 105 ,  106 ) may be connected to the network  104 . Users may access modules on the SDR server  107  to view, generate and/or retrieve information from nodes ( 100 ,  101 ). Users  105  can access data transmitted by the nodes  100 ,  101 . By way of a non-limiting example, the nodes  100 ,  101  can be wireless sensors that measure some parameter from the environment (e.g., water level, temperature, humidity, pressure, infrared levels to detect fires, location, radioactivity, sound levels, geological activity, etc). The network may collect such data and may provide some or all of the data to users  105  via web pages, maps, application interfaces, broadcasts, etc. Users  105  may also interact with the modules  108  and nodes  100 ,  101 , e.g., by setting an alarm level (e.g., for water temperature) that would cause an alert if a threshold value is exceeded. A node  100 ,  101  can be any device that transmits and/or receives information over a network, such as conventional sensors used in WSN, or custom-built and/or configured sensor nodes. Certain embodiments of the RadioCloud system may include transmit-only nodes that send data, while other embodiments may include nodes that send data as well as receive communications, which may include instructions, updates, configurations, and data for retransmission. 
     Still referring to  FIG. 2A , nodes  100  and  101  may include hardware radios and/or software defined radios. These nodes can send and receive information over a radio frequency (RF) channel. Nodes may be equipped with a single ( 100 ) or a plurality of ( 101 ) antennas. Transmissions  112  to and from a node  100  may propagate or travel directly to a gateway ( 102 ,  103 ), such as via ground wave propagation, or be reflected  110 ,  111  from the Earth&#39;s ionosphere  109 , to form a high frequency (HF) radio network. In ground or surface wave propagation, radio waves may travel near Earth&#39;s surface without being reflected or refracted by the atmosphere. With ground wave propagation, HF signals may be strongly diffracted and follow the curvature of the Earth up to distances of a few tens of kilometers depending on frequency. Such ground wave propagation may include a dominant propagation mode at lower frequencies. A node may also send data using line-of-sight propagation, in which radio waves travel in a straight line, and have a dominant mode at higher frequencies. 
     In some aspects, a node may transmit data to one or more gateways via skywave. Skywave propagation may occur at shortwave radio frequencies, including the upper medium frequency (MF) and all of the high frequency (HF) portion of the radio spectrum. Skywave propagation leverages on the propagation of radio waves reflected or refracted back toward Earth from the ionosphere. Due to the nature of the earth&#39;s ionosphere, signals in the HF range may be reflected and can travel large distances. Skywave propagation can be used to relay data to receivers beyond the horizon, despite the curvature of the Earth, up to intercontinental ranges. Skywave propagation occurs when signals are reflected off of the ionosphere at either high (NVIS) or low (long path) incidence angles. In particular, long path propagation with a single low angle reflection can provide transmission paths of thousands of kilometers. 
     In certain aspects, a node may transmit data to one or more gateways via Near Vertical Incidence Skywave (NVIS), which may support transmission ranges between that of ground wave and skywave distances (e.g., about 50 to 650 km). NVIS radio waves may use frequencies between 1.8 MHz and 15 MHz. NVIS operation may include the selection of an operating frequency that can reflect off of the ionosphere, which undergoes diurnal variations due the ionizing effects of solar radiation. Some advantages of NVIS are that the corresponding RF path loss is quite low, allowing the use of low power transmitters, and that propagation beyond the NVIS zone is greatly attenuated resulting in a potential for frequency reuse. With nodes transmitting via NVIS, radio waves may travel upwards into the ionosphere, where they may be refracted back down and received within a region up to 650 km from the transmitter. 
     Ionospheric propagation can inflict multiple impairments on a RF signal, including doppler delay spread, multipath resulting from time variations in propagation, interference from natural sources such as lightning, and interference from transmitters that share the same or nearby spectrum in other regions of the world. The present systems and methods can address impairments such as doppler and multipath associated with ionospheric reflections and interference, and may improve communication link margin by combining data received at multiple locations. 
     Utilizing the HF spectrum for WSNs includes a number of challenges including diurnal variations in the Earth&#39;s ionosphere, natural and man-made noise and interference from transmitter that share the same frequencies in other regions of the world. The RadioCloud system takes advantage of HF propagation and low free space loss while overcoming such challenges. By using SDR technology and power efficient modulation, both HF propagation modes can be used to optimize a WSN for applications such as soil moisture monitoring and broader environmental data monitoring where infrequent reports with small amounts of data are needed with large geographic coverage. Moreover, the RadioCloud system is designed to exploit surface and NVIS propagation modes, and proposed locations of nodes and gateways can be used to determine the relative performance of each mode. 
     In some embodiments, by supporting signal propagation at high frequencies (e.g., 3-30 MHz) for example, using low power and at propagation ranges beyond 10 km, the present systems and methods differ from and offer advantages over those of conventional WSN such as mesh networks. Mesh networks, for example, rely on short range (typically less than 300 m) signals relayed from a source node through other nodes over multiple hops to reach a destination device. Intermediate nodes perform demodulation of received signals, and modulation prior to retransmission. Such additional processing results in increased complexity and cost of each network node. In applications such as remote monitoring of soil moisture in large scale farming operations, cost, battery requirements and limited coverage of cellular service make cellular data networks unsuitable for environmental monitoring. Satellite networks are even more costly to operate (typically more than $15/month/node) than cellular, require larger antennas and have line of sight limitations that preclude use with tall crops or foliage. 
     To reduce power requirements, the present systems and methods may leverage on lower data rates (e.g., 100 bps) requirements of certain applications. Bandwidth efficient waveforms (e.g., phase-shift keying (PSK)) may be used where higher link data rate for a given bandwidth is required. Power efficient waveforms (e.g., PSK, M-PSK) may trade off bandwidth efficiency to reduce the transmit power needed in power-constrained applications such as battery-powered WSNs. 
     Transmissions  114 ,  115  from a node  101  may utilize multiple antennas to provide MIMO or MISO capabilities within the network. In some cases, the nodes (e.g., transmit only nodes) may employ a media access control (MAC) protocol or some other protocol to schedule their transmissions. A transmission may be scheduled at a specific time and/or frequency to minimize the potential for collisions with the transmissions of other nodes, e.g., using time and/or frequency division multiplexing. For example, GPS coordinates or other node identifier(s) might be used to select or identify a specific time and/or frequency slot for a respective transmission. 
     In certain embodiments, a gateway ( 102 ,  103 ) may include a transceiver, an antenna, one or more front end components for converting and amplifying RF signals, A/D and D/A converters, a digital converter circuit and/or a network interface. The gateway may include a SDR transceiver or a SDR interface. Each of the gateways may be configured to receive different types/modes of transmissions from one or more of the nodes. For example, a gateway may be configured to receive signals from any one or more of the three modes (ground wave, NVIS and long skywave). The gateway may perform direct sampling on signals received at the gateway. The gateway may down-convert (e.g., via a digital down-converter) received signals without demodulating the signals. The gateway may sample the down-converted signals, and may transmit these samples via a network (such as the Internet) to a remote/central location for processing. 
     The gateway can sample the received signals on a designated frequency at a designated time, e.g., as instructed by software of a SDR server. A network interface of the gateway may relay samples of the RF spectrum to and from the network  104 . The network may comprise a private packet switched network, a public network, the Internet, or any another wide area or local area network. The network interface may comprise an Ethernet or other interface. The network interface may enable radio processing modules to be remoted anywhere on a network without limiting these within the gateway or a device proximately-connected to the gateway. In certain embodiments, the radio processing modules are configured via SDR on a computing device (e.g., a SDR server) connected to the gateway (e.g., via USB). The gateway may compress the samples prior to relaying the compressed sampled to a central SDR server. 
     In certain embodiments, the gateway software down-converts the received signals to baseband so as to reduce the bandwidth required to send signal samples to the SDR server for further processing. The nodes and gateways may be synchronized according to GPS information (e.g., embedded in the received signals) so that received signals are appropriately grouped or separated, and the samples are properly time aligned and/or combined. Types of combining for the samples can include “selection combining” “equal gain combining” and “maximum ratio combining”. Signal transmissions from the nodes may include timing, synchronization and/or sequencing information embedded in the payload and/or header portion(s) of the signals. In certain embodiments, the nodes and gateways may receive and/or use information from GPS sources for high precision time synchronization. In certain embodiments, the RadioCloud system may use GPS time synchronization to recover symbol timing and for supporting multiple access. Some or all of these processing steps, which may be computationally-intensive, may be deferred from the gateway to the SDR server. The cost of gateways may be reduced since such gateways do not demodulate and/or significantly process the received node transmissions. 
     In certain embodiments, a network can comprise a plurality of nodes, gateways and/or users. A network  104  may be connected to one or multiple SDR servers  107  as in a cloud computing network. Modules  108  running on the SDR server(s) may perform various functions for recovering node data from the samples sent by the gateways  102 ,  103  over the network  104 . In a like manner, these modules  108  may also generate samples containing information to be sent to the one or more nodes. Antennas on a gateway could be selected and/or configured to give a preference for one type of propagation or another (e.g., antennas having a high angle radiation pattern which may give preference to NVIS propagation) 
     SDR servers  107  may comprise any type of computing device configured via SDR software. Through configuration, a SDR server may include one or more modules that perform specific processing of samples of radio signals. Modules on the SDR server(s)  107  may include, but are not limited to, logic and functionality to perform filtering, interference rejection, modulation/demodulation, encryption/decryption, forward error correction (FEC) coding/decoding, MIMO/MISO/SIMO processing, beamforming and antenna diversity processing (e.g., maximum likelihood combining and diversity coding), database access and user interface. In one embodiment, all of the modules  108  may reside on a single SDR server  107 . However, in alternative embodiments, fewer than all of the modules  108  may reside on each of a number of SDR servers  107 . A user  105  may access recovered node data through a User Interface via the network  104 . 
     In some aspects, MIMO processing involves the use of multiple antennas at both the transmitter and receiver to improve communication performance, by effectively providing multiple channels for communication. MIMO offers significant increases in data throughput and link range without additional bandwidth or increased transmit power, e.g., by spreading the same total transmit power over the antennas to achieve an array gain that improves the spectral efficiency or to achieve a diversity gain that improves the link reliability (reduced fading). SIMO similarly improves communication performance by offering multiple receiving antennas that can provide a diversity gain. 
     Beamforming is used in sensor arrays for directional signal transmission or reception, to achieve spatial selectivity. This is achieved by combining elements in a phased array in such a way that signals at particular angles experience constructive interference while others experience destructive interference. In some embodiments, beamforming as implemented in the RadioCloud system may be referred to as distributed beamforming. The RadioCloud system may include a number of (gateway) antennas separated by large distances to collect phase and amplitude information on the node signals. The RadioCloud system may use this information in the SDR server to form virtual ‘beams’ that selectively enhance signals coming from one direction and reduce signals coming from other directions. In effect, this collection of gateway antennas operates like one big steerable high gain antenna. 
     Antenna diversity uses two or more antennas to improve the quality and reliability of a wireless link. Often, there is no clear line-of-sight between transmitter and receiver, and a signal may be reflected along multiple paths before finally being received. Each of these bounces can introduce phase shifts, time delays, attenuations, and distortions that can destructively interfere with one another at the aperture of the receiving antenna. Antenna diversity mitigates these multipath situations because multiple antennas offer several observations of the same signal, experiencing a different interference environment. Thus, if one antenna is experiencing a deep fade, it is likely that another has a sufficient signal. Collectively such a system can provide a robust link. 
     Still referring to  FIG. 2A , node  100  and node  101  may include commercial, standard or specifically-configured digital radios operating on HF, VHF, UHF or other frequencies (e.g., within the range of Hertz to teraHertz). In certain embodiments, radios operating within the high frequency (HF) range, comprising spectrum from 3-30 MHz, are employed for RadioCloud. HF signals may be reflected by the various layers of the earth&#39;s ionosphere and can travel long distances. The HF spectrum had been widely used for a variety of services such as short wave broadcasting, marine and aeronautical communications and other commercial and defense communications; today, most of this spectrum is unused (e.g., with the exception of shortwave broadcasting, amateur radio and defense). In addition to underutilization and availability of this spectrum, HF transmissions can be desirable for outdoor wireless sensors because low power HF signals can travel long distances. It should be emphasized that although aspects such as HF spectrum and HF transmissions may be discussed herein, these are discussed by way of illustration and not intended to be limiting in any manner. Signals, transmissions, and frequencies of any type or value (e.g., within the range of Hertz to teraHertz) can be used in accordance with various embodiments of the present systems and methods. 
     A node may be configured to transmit on one or more frequencies based on the location of, or distance from a receiving gateway. A node may be configured to transmit on one or more frequencies based on factors such as terrain, time of day, season, weather, supported propagation modes, etc. A node may transmit on a frequency that maximizes the chance of successful transmission to a receiving gateway. The propagation characteristics of the ionosphere may change due to the effects of solar radiation. This may mean that the maximum usable frequency or range increases at night. In a simple case, certain embodiments of a node may switch between two frequencies or frequency ranges during the day and night. A single transmission may travel by ground wave, or one or both skywave modes, depending on the location of a gateway that is receiving the signal. 
     The RadioCloud nodes may include wireless nodes each comprising one or more sensors. These nodes may include a radio capable of sending and/or receiving digital information as radio frequency signals or samples. The gateways  102  or  103  may be constructed from commercial, custom or specifically-programmed radio components such as antennas, RF converters, amplifiers, A/D and D/A converters, FPGAs, microprocessors and/or SDR components. The SDR server(s)  107  may comprise computing devices, for example, but not limited to standard computer servers running Microsoft Windows or the Linux operating system. The SDR server(s) may be dedicated to a defined application/task, and may comprise a cloud computing service which may utilize one or more virtual servers. 
     In some embodiments, and referring again to  FIG. 2A , a node  100  sends a transmission  112 ,  113  that is received at gateway  102  and/or gateway  103 . Samples of the received signal may be sent or directed to an antenna diversity module on a SDR server, where they may be time synchronized and combined, e.g., to improve signal to noise ratio (SNR) and/or other parameters. Alternatively, node  100  and node  101  may each send a space-time coded signal that is received by gateway  102  and/or gateway  103 , which may each send samples to a MIMO/SIMO module to improve signal transmission speed/throughput, SNR, or other parameter of the received signal. The MIMO/SIMO processing may be performed entirely in software (e.g., via SDR software configuration, instead of custom radio hardware). 
     The configuration of one or more gateways may include a set of distributed antennas. These distributed antennas may collect disparate signals from multiple paths or propagation modes from one or more locations for aggregation/processing at a predefined central location. The distributed antennas may be configured to support antenna-diversity and/or beamforming strategies. In some embodiments, gateway  102  and/or gateway  103  may transmit space-time coded signals  114  and  115  to node  101  such that the speed/throughput, SNR, or other parameters of the link may be improved. 
       FIG. 2B  is a flow chart showing an example of steps that can be used to implement an antenna diversity module, such as that shown in  FIG. 2A . In step  200 , a node transmits a radio frequency signal that is received by multiple gateways via three paths  201 ,  202  and  203 , or any other number of transmission paths. These paths may be direct from the node to the gateway, via a ground wave path, via a reflection off of the ionosphere, and/or via another type of path. Signals from these paths may be down-converted, e.g., to a baseband frequency, and sampled at each of the gateways. The samples may be time synchronized in step  205 , for example using local GPS information or other timing information. The samples may be added together or otherwise combined in step  206  (e.g., despite being based on signals received over a distributed set of antennas/gateways), and then the combined samples may be sent to the demodulation module in step  207  where they are processed as if the samples came from a single path. Thus, demodulation and other processing techniques (e.g., SIMO/MIMO) can be performed as if it was a non-distributed system. The resulting signal to noise ratio may be improved as a consequence of the sample addition. 
       FIG. 2C  is a flow chart showing an example of the steps that can be used to implement an interference rejection module shown in  FIG. 2A . In step  300 , a node may transmit a radio frequency signal over a path  302  that is received by a first gateway. In step  301 , interfering samples may be received at the first gateway via path  303  and received by a second gateway via path  304 . One or more of the paths  303 ,  304  may be direct from node to gateway, via a ground wave path, via a reflection off of the ionosphere, or via another path. Interfering signals may be identified for example by connecting both vertically and horizontally polarized antennas to a gateway. For example, vertical antennas such as monopoles may have a lower radiation angle than other types of HF antennas such as loops. Vertically polarized signals may be more prominent from man-made noise sources such as automobile ignition and arcs in electric transmission lines. Signals from distant sources such as shortwave broadcast stations may be more likely to arrive at low reflection angles since they travel by multiple ionospheric reflections. Signals from interfering sources may also be reduced by using phased array techniques where a null is created in the overall antenna pattern in the direction of a known source of interference. One type of antenna may be more predisposed to acquiring node signals, e.g., than the other type of antenna. The other type of antenna may be predisposed to acquiring noise or interfering signals, e.g., noise or interfering signals that the first type of antenna may pick up in addition to the node signals. 
     In step  305 , samples from gateway  1  comprising the desired signal plus the interfering signal, and samples from gateway  2  comprising the interfering signals may be passed to the next step  306 . In step  306 , samples containing the interfering signal may be subtracted from samples comprising the desired signal plus the interfering signal. In some embodiments, decoding takes place between steps  305  and  306 . In step  307 , the desired signal samples may be sent to the demodulation process where the samples may be processed as if the samples were received without interfering signals. 
     The advantages of the embodiments described include, without limitation, minimizing the cost of providing a wireless network by using a central software defined radio server or servers. The signal to noise ratio of wireless links can be improved by combining signals received at multiple locations. SNR may be improved by combining signals that are received via different propagation paths and/or different propagation modes. For example, different signal paths may be created by the different propagation modes and/or by multipath effects created by movement of the ionospheric layers. Based on diurnal propagation some node transmissions (e.g., from a single node) may be received by one gateway and others by both gateways. Processing functions associated with complex radio waveforms can be performed in one or more powerful centralized servers, or distributed over a plurality of computing resources. Updates to certain SDR functions to accommodate new wireless standards can be rapidly implemented by changing only the software in the SDR servers. 
     By way of illustration and not intended to be limiting, a RadioCloud node may comprise a battery-powered wireless sensor. The node&#39;s battery may comprise a rechargeable battery, e.g., that may be re-charged from solar energy. The Node may include a microcontroller (e.g., a 8-bit processor) with a set of peripherals, such as (i) a GPS module, for obtaining geolocation information and a global timing reference, (ii) digital sensors, which may comprise sensor ICs with digital interfaces that connect to either the microcontroller&#39;s I2C or SPI bus for example, (iii) analog sensors, which may include sensor circuits with analog outputs that connect to the microcontroller&#39;s A/D converters, and (iv) a radio transmitter, which may include a digitally-controlled frequency-shift keying (FSK) transmitter for example. From an interface perspective, and by way of example, the microcontroller may control a digitally-controlled HF oscillator to select a channel, and may sequence a general purpose input/output (GPIO) parallel output port to provide any necessary digital baseband signals. For illustration,  FIG. 2D  depicts one embodiment of a block diagram including functional modules of a node. The node may also provide one or more of the following: (v) control signals, where one or more GPIOs may be used to selectively turn power on or off to parts of the node such as the radio or the sensor circuits to conserve power, (vi) light-emitting diode (LED), buzzer, and/or buttons, to communicate with a human at manufacturing or install time, and (vii) a serial console, which may include a synchronous serial interface with a command parser for device configuration, manufacturing and debugging, for example. 
     In certain embodiments, the responsibilities of the node microcontroller may include any one or more of the following: (i) waking up certain functions of the node periodically on a timer, (ii) reading the sensor(s), (iii) interfacing with the GPS, (iv) maintaining a real time clock (RTC), (v) generating sensor reports, (vi) selecting an appropriate channel and timeslot for transmission/reception, (vii) encoding the reports for transmission, (viii) reading/writing configuration settings, e.g., nonvolatile (NV) configuration settings, (ix) responding to external buttons/input-devices and setting LED or buzzer outputs as necessary, (x) providing a serial console for device configuration, manufacturing test, and/or debugging for example, and (xi) providing a bootloader used for field upgrade and/or factory programming of firmware. In some embodiments, the node&#39;s software may be simple enough that it can be implemented as a single task, with an event-driven state machine for the main loop, for example. Interrupt handlers may support any timing-dependent I/O and timing functions. The GPS location may be sent occasionally or at set times to conserve transmission bandwidth. 
     In some embodiments, a node generates and/or encodes sensor reports for transmission to one or more gateways. The node may add any necessary MAC-level control information, such as dotting sequences, sync words, or protocol identifiers. The node may perform forward error correction (FEC) encoding, for example, using a rate 1/2 (k=32) convolutional code to protect the packet from errors. The node may include or incorporate library code to implement the encoding. The node may perform data whitening to ensure a clean spectrum. The node may perform FSK encoding. Depending on how the modulation is performed, the node may generate a 4-bit parallel word for each symbol, outputting a digital-to-analog conversion (DAC) value, or issue a command to an numerically-controlled oscillator (NCO) to shift to a specified frequency. 
       FIG. 2E  depicts one embodiment of a RadioCloud node. The node may include one of more sensors  406 , such as for monitoring temperature, humidity, wind speed/direction, soil moisture, etc. The sensor(s) may be connected to a micro-controller (MCU)  405 . The MCU may include an A/D converter, FLASH and RAM memory, I/O ports and/or a CPU. A timer, e.g., incorporated into the MCU may be used to periodically ‘wake’ the MCU from a low power sleep mode, so as to conserve battery power. When the MCU wakes up, data from the sensors  406  may be digitized by the A/D converter and combined with synchronization and forward error correction (FEC) information to create a packet. Once the sensor packet is created, a transmission time and frequency may be selected by the node software based on a combination of configuration and/or GPS information. Once the appropriate time and frequency for a transmission is determined, a transmission period may begin. 
     During the transmission period, binary information from the packet may be used to vary the frequency of an oscillator  404 , which may be a voltage controlled crystal oscillator (VCXO), a frequency synthesizer or a direct digital synthesizer (DDS), which is used to generate the carrier frequency. The output signal from the oscillator may be filtered ( 403 ) to remove spurious signals and then amplified to a power level suitable for transmission by the power amplifier  402 . The power output required for reliable communications may be reduced by virtue of the ability of the central SDR server to combine information from multiple propagation paths and multiple gateways. The output of the power amplifier  402  may comprise a frequency modulated carrier and may be filtered by a second filter  401  to remove spurious signals generated by the power amplifier  402 . The filtered power amplifier output may be applied to an antenna  400  which may be a custom or conventional antenna such as a monopole, dipole or Yagi, or a compact antenna such as a loop antenna which may be ferrite loaded to further reduce its size. Elements of the node may be powered by the battery  407  which could be a disposable primary cell or a rechargeable secondary cell. If a secondary cell is used, it could be recharged by a photo voltaic (PV) cell  409 . In some other embodiments, SDR techniques and a D/A converter may be used to generate the carrier frequency, which may be a less expensive approach for FSK waveforms. 
     A node may transmit data as RF signals, which may comprise data packets (sometimes interchangeably referred to as frames, datagrams or messages). The node may encode the packets at two or more layers, e.g., the PHY layer and the MAC layer. The PHY layer may represent physical encoding of symbols on the radio carrier, for example, with 4-FSK transmitted at 1.46 baud (WSPR), or 16-FSK transmitted at a predetermined baud, for example. Packet data payload may be limited to 50 bits, although this may be reconfigured or extended. 
     By way of illustration, a PHY frame may be encoded using a MAC payload of N=50 data bits. The node may apply binary encoding using (k=32, r=1/2) convolutional code to yield (N+k−1)*2=162 code bits, for example. The node may modulate the code bits using continuous-phase 4-FSK for example, where one bit of each symbol may be driven by the a (e.g., 16-bit) pseudorandom synchronization vector. The node may transmit the resulting (162+162)/2=162-symbol frame at 1.46 baud with 1.46 Hz tone spacing yielding a final transmission length of 110.6 seconds. Each transmission may be timeslotted, starting two seconds into an even 2-minute boundary per Coordinated Universal Time (UTC) time period (e.g., at hh:00:02, hh:02:02, etc), for example. The transmission may occupy a bandwidth of approximately 6 Hz. 
     In some embodiments, a PHY frame may be encoded using a MAC payload of N bits, such as 127 bits. The node may apply binary encoding using (k=32, r=1/2) convolutional code to yield (N+k−1)*2=316 code bits. The node may modulate the code bits using continuous-phase 16-FSK, where the message is preceded by a (e.g., 16-symbol) balanced synchronization (sync) vector, for example. The node may transmit the resulting (316/4)+16=95-symbol frame at a predetermined baud at a specific tone spacing. Each transmission may be timeslotted. The sync vector may be employed to provide an unambiguous reference to the beginning of the packet to facilitate frame decoding. The sync vector may be designed to provide an even balance of ones and zeros and exhibit low autocorrelation. At least 14 of 16 symbols may have to match the sync vector before an attempt to decode the frame. The node may be configured to allow a margin of ±4 symbols. 
     By way of illustration, a MAC frame may include a fixed outer wrapper and a variable inner message payload, and may include one or more of the following fields: 
     
       
         
           
               
               
               
               
             
               
                   
               
               
                   
                   
                 Number  
                   
               
               
                 Field 
                 Type 
                 of bits  
                 Description 
               
               
                   
               
             
            
               
                   
               
            
           
           
               
               
               
               
            
               
                 SourceMacAddress 
                 UINT 
                 28 
                 Address of transmitting Node 
               
               
                 MsgType 
                 UINT 
                 4 
                 Type of message enclosed 
               
               
                 MsgPayload 
                 variable  
                 ≤68 
                 Message payload 
               
               
                   
               
            
           
         
       
     
     The length of the message payload may depend on the type of message. By way of example, for a longest message type of 68 bits, a maximum MAC frame length of 28+4+68=100 bits. To account for higher demand for data, room for expansion up to 127 bits or above can be implemented. 
     In some embodiments, a MAC frame may include one or more of the following message types: (i) MsgType 0x0—INFO (46 bits), of which an illustrative embodiment is described below: 
                                                 Number            Field   Type   of bits    Description                  Longitude   UINT   23   GPS location of node (5 m resolution)       Latitude   UINT   23   GPS location of node (5 m resolution)       FirmwareVersion   UINT   10   Firmware version                    
(ii) MsgType 0x1—SENSOR_DATA (36 bits), of which an illustrative embodiment is described below:
 
                                                 Number            Field   Type   of bits   Description                  SequenceNumber   UINT    8   Rollover counter                    incremented for each                   unique transmission.       Status   UINT    4   Node status                   0x0 = Normal                   0x1 = Battery low                   0x2 = GPS failure                   0x3 = Other failure                   0x4-0xF = reserved       SensorRecord_0   RECORD   28   Current SensorRecord                    (see below)       SensorRecord_1   RECORD   28   Previous SensorRecord                    
A copy of a previous SensorRecord may be included in the message for redundancy in case the previous transmission was not received. A SensorRecord may be defined as:
 
                                                 Number of           Field   Type   bits   Description                  Temperature   UINT   10   Measured temperature, in 0.1 deg C.,                    with 0x00 = −40.0 deg C..       Humidity   UINT   10   Measured relative humidity, in 0.1%,                    with 0x00 = 0.0%       Pressure   UINT   8   Measured pressure, in 0.1 kPa, with                    0x00 = 85 kPa                    
and (iii) MsgType 0xF−TEST (40 bits), of which an illustrative embodiment is described below:
 
                                                 Number            Field   Type   of bits    Description                  SequenceNumber   UINT    8   Rollover counter incremented for                   each unique transmission.       DebugInfo   UINT   32   Debugging information                    
Additional message types may be configured or reserved for future use/expansion.
 
     As discussed above, a plurality of gateways may receive signals transmitted by one or more nodes. A gateway may comprise an intermediary device that bridges a wireless network (including the one or more nodes) to a wired network (including a SDR server). A gateway may receive signals or radio packets comprising one or more sensor reports from nodes, and may forward these to a server (sometimes referred to as a Cloud Server) on the internet, for example. In certain embodiments, the radio packets are not demodulated at the gateway. The gateway&#39;s signal processing may stop at downsampling the signal to blocks of I and Q baseband samples. A gateway may comprise a network-enabled single-board computer (SBC) (e.g., a Gateway Interface Processor (GIP)). The gateway may run embedded Linux or another operating system. The gateway may be connected to a SDR receiver, either directly or via a network connection. 
     In certain embodiments, the gateway includes a plurality of modules which may be implemented in hardware, or in software executing on hardware of the gateway. Some of these modules may provide functionality including one or more of: (i) interfacing with an SDR receiver, (ii) downsampling of the full received HF band into individual baseband signals for each channel, (iii) apportioning of each baseband signal according to channel and timeslot, yielding “baseband blocks”, (iv) computing a thumbnail spectrogram for each block, (v) labeling and timestamping of each baseband block, attaching a spectrogram, and uploading it to the SDR server, and (vi) interfacing with a GPS module for geolocation and timing reference, and/or (vii) reading/writing of a configuration file. Some of these modules may provide (viii) a serial console for configuration, manufacturing test, and debugging, (ix) a web server control panel for configuration and monitoring, and/or event logging. Certain modules may incorporate or be implemented with a programming or script language, such as Python or C.  FIGS. 2F and 2G  are block diagrams of embodiments of a gateway for receiving and processing node transmissions. On the signal processing front, the gateway may incorporate libraries such as the GNU Radio library. On the networking front, the gateway may incorporate libraries for XML, HTTP, SSL, JSON, etc. 
     The gateway may include a SDR interface for communicating with and/or controlling an SDR on a connected computing device or a remote server. The SDR interface may include an Ethernet interface, for example. In certain embodiments, the SDR interface may include a graphical interface. The graphical interface may be used for controlling SDRs written in C and/or Qt that runs on Linux, for example. The SDR interface may operate on or support one or more network protocols, such as (i) a TCP socket for controlling the SDR, for example using Amateur Station Control Protocol (ASCP), and a UDP socket for low-overhead transfer of sample data, which may be a custom format. The gateway or SDR interface may include a DHCP client for obtaining an IP address, and may include a device discovery mechanism using a UDP protocol sometimes referred to as SNDP. 
     In certain embodiments, the gateway samples the HF band, which may comprise a predefined number of subchannels (e.g., 100 subchannels). The gateway may isolate each subchannel for processing. The process of simultaneously band-pass filtering, decimating and downconverting a signal to baseband is sometimes referred to as downsampling. Timing synchronization to determine timeslot boundaries may be derived from a GPS source. By way of illustration, if a node transmission nominally includes 32 bytes of information encoded at rate 1/2, is modulated at 50 baud, occupies 800 Hz of bandwidth, and is sampled at 2 kSps @ 16 bits per quadrature, then a baseband block ready for upload might occupy about 22 kBytes. 
     A gateway may include a web service client, to communicate as a client to the SDR server. The web service client may use a web service remote procedure call (RPC) framework such as SOAP or REST. Web service requests and responses may be built atop HTTP. In some embodiments, where the gateway sends moderate size data blocks to the server (e.g., ˜22 kBytes), the web service design may benefit from using a binary encoding format. 
     The gateway may convey samples of the modulated signals to a SDR server over a network. These samples may be sometimes referred as gateway-to-cloud (G2C) messages. In a given timeslot, the gateway may send a block of received sample data to the SDR server. The gateway may establish a TCP connection on a port (e.g., port 8081) to send the messages. In some embodiments, the gateway may use a Representational State Transfer (REST) based web service to send the messages. A gateway&#39;s serial number may be defined as its Ethernet MAC address. By way of illustration, the G2C messages may have the following message format: 
     
       
         
           
               
               
               
               
             
               
                   
               
               
                   
                   
                 Number 
                   
               
               
                 Field 
                 Type 
                 of bits 
                 Description 
               
               
                   
               
             
            
               
                 SerialNumber 
                 UINT 
                  6 
                 Unique serial number  
               
               
                   
                   
                   
                 assigned to each 
               
               
                   
                   
                   
                 Gateway 
               
               
                 Timeslot 
                 UINT 
                  2 
                 Timeslot number relative 
               
               
                   
                   
                   
                 to the current day, 
               
               
                   
                   
                   
                 with timeslot 0 at  
               
               
                   
                   
                   
                 00:00:00Z UTC 
               
               
                 SpectrumThumbnail 
                 ARRAY 
                 512 
                 Spectrogram of entire  
               
               
                   
                   
                   
                 captured frequency 
               
               
                   
                   
                   
                 band, amplitude only,  
               
               
                   
                   
                   
                 dB scale with 0x00 = 
               
               
                   
                   
                   
                 −110 dB 
               
               
                 FullbandSampleBlock_I 
                 ARRAY 
                   
                 Array of radio samples,  
               
               
                   
                   
                   
                 I channel, 16 bits/ 
               
               
                   
                   
                   
                 sample 
               
               
                 FullbandSampleBlock_Q 
                 ARRAY 
                   
                 Array of radio samples, Q  
               
               
                   
                   
                   
                 channel, 16 bits/sample 
               
               
                   
               
            
           
         
       
     
     The SDR server or Cloud server may receive samples of the modulated signals (sometimes referred to as sample blocks or G2C messages) from one or more gateways in the network. In some embodiments, the SDR server may use the following database record format. The SDR server may store received G2C messages in such a format until the messages can be paired with available copies from other gateways and SIMO processed. 
     
       
         
           
               
               
               
               
             
               
                   
               
               
                   
                   
                 Number 
                   
               
               
                 Field 
                 Type 
                 of bits 
                 Description 
               
               
                   
               
             
            
               
                 GatewayIpAddress 
                 UINT 
                  4 
                 IP address of sending  
               
               
                   
                   
                   
                 Gateway 
               
               
                 GatewaySerialNumber 
                 UINT 
                  6 
                 Unique serial number  
               
               
                   
                   
                   
                 assigned to each 
               
               
                   
                   
                   
                 Gateway 
               
               
                 Timeslot 
                 UINT 
                  2 
                 Timeslot number relative  
               
               
                   
                   
                   
                 to the current day, 
               
               
                   
                   
                   
                 with timeslot 0 at  
               
               
                   
                   
                   
                 00:00:00Z UTC. 
               
               
                 SpectrumThumbnail 
                 ARRAY 
                 512 
                 Spectrogram of entire  
               
               
                   
                   
                   
                 captured frequency 
               
               
                   
                   
                   
                 band, amplitude only, dB  
               
               
                   
                   
                   
                 scale with 0x00 = 
               
               
                   
                   
                   
                 −110 dB 
               
               
                 FullbandSampleBlock_I 
                 ARRAY 
                   
                 Array of radio samples,  
               
               
                   
                   
                   
                 I channel, 16 bits/sample 
               
               
                 FullbandSampleBlock_Q 
                 ARRAY 
                   
                 Array of radio samples,  
               
               
                   
                   
                   
                 Q channel, 16 bits/sample 
               
               
                   
               
            
           
         
       
     
     In some embodiments, the format of a post-processed sample block (e.g., post-SIMO processing) may look like: 
     
       
         
           
               
               
               
               
             
               
                   
               
               
                   
                   
                 Number 
                   
               
               
                 Field 
                 Type 
                 of bits 
                 Description 
               
               
                   
               
             
            
               
                 Timeslot 
                 UINT 
                 2 
                 Timeslot number relative  
               
               
                   
                   
                   
                 to the current day, 
               
               
                   
                   
                   
                 with timeslot 0  
               
               
                   
                   
                   
                 at 00:00:00Z UTC 
               
               
                 NarrowbandSampleBlock_I 
                 ARRAY 
                   
                 Array of radio samples,  
               
               
                   
                   
                   
                 I channel, 16 bits/sample 
               
               
                 NarrowbandSampleBlock_Q 
                 ARRAY 
                   
                 Array of radio samples,  
               
               
                   
                   
                   
                 Q channel, 16 bits/ 
               
               
                   
                   
                   
                 sample 
               
               
                   
               
            
           
         
       
     
     The SDR server may process the sample blocks or G2C messages, and may deposit the resulting data records in a database for consumption by an end-user application. By way of illustration, a decoded sensor report extracted from a post-processed sample block may comprise the following: 
     
       
         
           
               
               
               
               
             
               
                   
               
               
                   
                   
                 Number 
                   
               
               
                 Field 
                 Type 
                 of bits 
                 Description 
               
               
                   
               
             
            
               
                 SequenceNumber 
                 UINT 
                 8 
                 Rollover counter incremented  
               
               
                   
                   
                   
                 for eachunique 
               
               
                   
                   
                   
                 transmission. 
               
               
                 Status 
                 UINT 
                 1 
                 Node status 
               
               
                   
                   
                   
                 0x0 = Normal 
               
               
                   
                   
                   
                 0x1 = Battery low 
               
               
                   
                   
                   
                 0x2 = GPS failure 
               
               
                   
                   
                   
                 0x3 = Other failure 
               
               
                   
                   
                   
                 0x4-0xF = reserved 
               
               
                 SensorRecord 
                 RECORD 
                 6 
                 Refer to SENSOR_DATA packet 
               
               
                   
               
            
           
         
       
     
     The SDR server may comprise a virtual server running Linux, Windows or another operating system. In certain embodiments, the SDR server can be split across multiple servers, e.g. leverage on a cloud database service for the backend, and a lightweight application server such as for the front end. This implementation may be scaled to multiple instances of the same application running on different machines and even at different URLs, to support multiple SDR servers for example. Each instance may communicate with the same database servers and designate which nodes are associated with which particular instance. The SDR server application tasks could be implemented in languages such as C, Python or Java. 
     The SDR server may include modules implemented in hardware, or in software executing on hardware. Certain modules may provide functionalities such as: (i) providing a web service to receive baseband sample blocks from the gateways, (ii) processing the sample blocks to extract the sample record and spectrogram data, (iii) writing the decoded sample records and spectrograms to a history database, (iv) providing a web service to allow end-user applications to access the history database, (v) providing a web server control panel for configuration and monitoring, and (vi) performing event logging for debugging/diagnostics. By way of illustration,  FIG. 2H  depicts a block diagram of one embodiment of a SDR server. 
     The SDR server may be configured to perform significant signal processing. The SDR server may be configured via SDR software, applications and/or custom code. The SDR server may provide various signal processing functions, including SIMO antenna diversity combining, FSK demodulation, discrete Fourier transform implementation to resolve the tones, recovery of carrier phase for coherent demodulation, and/or timing recovery. With a small sample duration, timing synchronization may be derived without an explicit dotting sequence preamble. The node may ensure a sufficient number of transitions in the data by applying a scrambling sequence to the data at the transmitter. The SDR server can recover bit synchronization by finding a bit phase that maximizes the power in each “frequency bucket” of the DFT when summed over each bit duration. The SDR server may also perform FEC decoding. 
     An end-user may access some portion of the sensor data recovered at the SDR server. One of more end-user applications may retrieve sensor data from the SDR server&#39;s Sensor History Store and present it in a graphical format to an end-user. An end-user application may perform any one or more of the following: (i) interact with the Sensor History Service to retrieve sensor data, (ii) provide a Sensor geographic view, showing each sensor as a flag on a scroller map with sensor readings in a popup box for example, (iii) provide a Sensor tabular view, showing each sensor as a row with its most recent report for example, (iv) provide a History tabular view, showing each sensor report as a row for a single sensor or group of selected sensors for example, and (v) provide a History graphical view, graphing all sensor values for one or more selected sensors over a selected period of time for example.  FIG. 2I  depicts one embodiment of data flow diagram for an end-user application. 
     An end-user application may monitor new sensor reports and generating alarms, for example if: (a) a sensor value exceeds a specified range, and/or (b) a sensor fails to report before an alarm timeout expires. An end-user application may comprise a standalone desktop application, a browser-based web application, or a standalone mobile application. 
     Referring to  FIG. 2J , one embodiment of a flow diagram relating to a method of a distributed radio communications network is depicted. The method may include separately receiving, by each of a first gateway and a second gateway, modulated signals comprising at least a portion of data from a first node of a plurality of geographically-dispersed nodes ( 501 ). The modulated signals may be wirelessly transmitted as radio frequency (RF) signals from the first node. The data may be gathered or generated by the first node at a first location. A server may receive samples of the modulated signals from the first gateway and the second gateway ( 503 ). The server may subtract an interfering signal from the samples of the modulated signals ( 505 ). The server may time synchronize the samples of the modulated signals received from the first gateway and the second gateway for combination of the samples ( 507 ). The server may be configured by software-defined radio (SDR) software to perform processing of the separately received samples of the modulated signals to recover the data ( 509 ). The processing may include demodulation of modulated signals recovered from the samples. 
     Referring to ( 501 ), each of a plurality of gateways may separately receive modulated signals comprising at least a portion of data from a first node of a plurality of geographically-dispersed nodes. The plurality of gateways may comprise a first gateway and a second gateway. The data may be gathered or generated by the first node at a first location. For example, the data may include a measurement made by the node, including environmental attributes such as humidity or temperature, or a detection of an event, for example to trigger an alert, notification or event log. The node may include the data in one or more signals comprising one or more packets, frames, datagrams or messages for transmission. The node may add MAC-level control information, such as dotting sequences, sync words, or protocol identifiers to each signal or packet. 
     The node may perform forward error correction (FEC) encoding, for example, using a rate 1/2 (k=32) convolutional code to protect each signal or packet from errors. The node may modulate code bits in the signals using continuous-phase 4-FSK or 16-FSK for example, although various other modulation scheme may be implemented. The node may determine a time slot and/or a frequency to transmit the modulated signal. This determination may be based at least in part on one or more of: a location of a receiving gateway, a distance from a receiving gateway, terrain, time of day, season, weather, antenna type and/or transmission mode supported by a receiving gateway. The modulated signals may be wirelessly transmitted as radio frequency (RF) signals from the first node. The first node may transmit a low-power, RF signal between 3 and 30 mega-Hertz, within the HF band or another frequency band/range. The first node may transmit a RF signal over a transmission path of more than 10 kilometers (e.g., 50 km, 300 km or 600 km) to at least one of the first gateway and the second gateway. 
     Each of the plurality of gateways may be located at a different location, and may include particular type(s) of antennas for receiving various types of signals and/or transmissions. The modulated signals may be wirelessly transmitted as radio frequency (RF) signals from the first node. Each of the first gateway and the second gateway may receive the modulated signals as RF signals transmitted via a direct path from the first node, a ground wave path, or ionospheric reflection (e.g., NVIS and long skywave). The first gateway and the second gateway may receive the modulated signals as RF signals transmitted via at least two of: a direct path from the first node, a ground wave path, and ionospheric reflection. In some embodiments, at least one of the first gateway and the second gateway receives one of the RF signals reflected off of the Earth&#39;s ionosphere. 
     The one or more gateways may be configured to include a set of distributed antennas. Antennas on each gateway could be selected and/or configured to give a preference for one type of propagation or another. These distributed antennas may collect disparate signals from multiple paths or propagation modes from one or more locations for aggregation/processing at a predefined central location. The distributed antennas may be configured to support antenna-diversity and/or beamforming strategies. One or both of the first and second gateways may receive a particular signal transmission from the node. In some cases, a signal may be obstructed, too weak, or overcome by noise to be received at a particular gateway. For example, based on diurnal propagation some node transmissions may be received by one gateway and others by both gateways. 
     Each gateway may sample the received signals. Each of the gateway may perform sampling on signals detected in the HF band, which may include a predefined number of subchannels. The gateway may isolate each subchannel for processing. Signals received may be down-converted to a baseband frequency, and sampled at each of the respective gateways. Each gateway may perform downsampling, including one or more steps of band-pass filtering, decimating and downconverting a signal to baseband. Each gateway may interface with a GPS module for geolocation and timing reference. Each gateway may perform timing synchronization to determine timeslot boundaries, e.g., using timing information from a GPS source. 
     Each gateway may apportion each baseband signal according to channel and/or timeslot, to yield “baseband blocks”. In certain embodiments, a gateway may compute a thumbnail spectrogram for each block. The gateway may label and/or timestamp each baseband block. The gateway may attach a spectrogram, and may upload each block to a SDR server. The radio signals or packets may not be demodulated at the gateway. The gateway&#39;s signal processing may stop at downsampling the signal, e.g., to blocks of I and Q baseband samples. 
     One or both gateways may convey samples of the modulated signals to a SDR server over a network. These samples may be sometimes referred as gateway-to-cloud (G2C) messages or sample blocks. In a given timeslot, the gateway may send a block of received sample data to the SDR server. The gateway may establish a TCP connection on a port to send the samples. In some embodiments, the gateway may use a Representational State Transfer (REST) based web service to send the samples. One or both of the gateways may compress the modulated signals received by the respective gateway, and communicate the compressed modulated signals to a central location for further processing. For example, a gateway may compress one or more samples of the modulated signals before conveying to a SDR server over a network. 
     Referring now to ( 503 ), a server may receive samples of the modulated signals from the first gateway and the second gateway. A SDR server may receive modulated signals from the first gateway and the second gateway. The SDR server may separately receive modulated signals from one or both of the first gateway and the second gateway. The SDR server may separately receive samples of the modulated signals from each of the gateways. The first gateway, the second gateway and the server may be connected by a communications network, such as a wide area network or the Internet. The SDR server may receive samples from each gateway within different timeslots, e.g., timeslots assigned to each of the gateways. In some embodiments, the SDR server may store the received sample in a database record format, such as that described above. The SDR server may store the received samples in such a format until the samples can be paired with available copies from other gateways. The SDR server may store the received samples in this format until the samples can be SIMO/MIMO processed. 
     Referring now to ( 505 ), the server may subtract an interfering signal from the samples of the modulated signals. The server may subtract an interfering signal from modulated signals received by one or both gateways. Interfering signals may be identified for example by connecting different antennas (e.g., vertically and horizontally polarized antennas) to a gateway or separate gateways. One type of antenna may be more predisposed to acquiring node signals than the other type of antenna. The other type of antenna may be predisposed to acquiring noise or interfering signals, e.g., noise or interfering signals that the first type of antenna may pick up in addition to the node signals. 
     The SDR server may receive samples from a gateway (e.g., the first gateway) comprising the desired node signal plus an interfering signal, and samples from another gateway (e.g., the second gateway) comprising the interfering signal. In some embodiments, the SDR server may receive samples from a first antenna (e.g., of the first gateway) comprising the desired node signal plus an interfering signal, and samples from another antenna (e.g., of the first gateway) comprising the interfering signal. The SDR server may perform interference rejection and/or noise filtering. The SDR server may subtract samples comprising the interfering signal from samples comprising the desired signal plus the interfering signal. The SDR server may extract the desired signal samples based on the subtraction, and may send the desired signal samples to a demodulation process where the samples may be processed as if the samples were received without interfering signals. 
     Referring now to ( 507 ), the server may time-synchronize the samples of the modulated signals received from the first gateway and the second gateway for combination of the samples. The SDR server may forward samples of the received signals to an antenna diversity module on a SDR server, where they may be time-synchronized and combined, e.g., to improve signal to noise ratio (SNR) and/or other parameters. The SDR server may time-synchronize the samples using local GPS information or other timing information. The samples may be added together or otherwise combined, despite being based on signals received over a distributed set of antennas/gateways). The SDR server may drop or remove any redundant or duplicate samples. The SDR server may send the combined samples to a demodulation module of the SDR server, where the combined samples may be processed as if the samples came from a single path. Accordingly, demodulation and other processing techniques (e.g., SIMO/MIMO) can be performed as if the collection of gateways and SDR server was a non-distributed system. 
     In some embodiments, separate nodes may each send a space-time coded signal that is received by the first and second gateways. Each of the gateways may send samples to a MIMO/SIMO module of the SDR server. The MIMO/SIMO module may separate, group or combine the samples based on the space-time codes, to improve signal transmission speed/throughput, SNR, or other parameters of the received signal. 
     Referring now to ( 509 ), the server may be configured by software-defined radio (SDR) software to perform processing of the separately received samples of the modulated signals to recover the data. The server may be configured by SDF software to perform any of the processing in ( 503 ), ( 505 ) and/or ( 507 ). The processing may include demodulation of the modulated signals received from one or both of the gateways. The processing may include demodulation of the modulated signals received by the first and/or second gateways. The processing may include demodulation of modulated signals recovered from the samples. 
     The SDR server may be configured to perform significant signal processing. The SDR server may be configured to perform signal processing steps deferred from the gateways. The SDR server may be configured to perform centralized signal processing for the plurality of gateways, by offloading common or computationally-significant processing from each gateway. The SDR server may be configured to perform signal processing of a combined set of signals received from a distributed set of antennas/gateways, e.g., to benefit from gateway/antenna “redundancy”, diversity processing and/or interference rejection. Accordingly, the signal to noise ratio (SNR) of the node-to-gateway wireless links can be improved by combining signals received at multiple locations. SNR may be improved by combining signals that are received via different propagation paths and/or different propagation modes. 
     The SDR server may perform processing of the modulated signals comprising at least one of: signal filtering, interference rejection, decompression, encryption, decryption, forward error correction (FEC), coding, decoding, beamforming and antenna diversity processing. For example, the SDR server may decompress the compressed samples from the gateways, before combining the samples for further processing. The server may be configured by the SDR software to perform processing comprising at least one of single input multiple output (SIMO) and multiple input multiple output (MIMO) processing. The SDR server may provide various signal processing functions, including SIMO antenna diversity combining, FSK demodulation, discrete Fourier transform to resolve embedded tones, recovery of carrier phase for coherent demodulation, and/or timing recovery. 
     The SDR server may include or provide a web service to receive baseband sample blocks from the gateways. The SDR server may process the samples, and may deposit the resulting data records in a database for consumption by an end-user application. The sample blocks may be processed to extract the sample record and/or spectrogram data. As discussed earlier, the SDR server or MIMO/SIMO processing module may output a data record (e.g., post-SIMO processing) in a particular format for storage in the database. The SDR server may extract a decoded sensor report from a post-processed sample block. The SDR server may write the decoded sample records and spectrograms to a history database of the SDR server. 
     In some embodiments, the SDR server may perform event logging for debugging or diagnostics, and may provide web server control panel for configuration and monitoring. The SDR server may provide a web service to allow end-user applications to access the history database. An end-user may access some portion of the sensor data recovered at the SDR server through one or more end-user applications. An end-user application may retrieve sensor data from the SDR server&#39;s Sensor History Store and present it in a graphical format to an end-user. 
     C. On Demand Network MIMO 
     In some embodiments, the system described herein provides a new approach for the uplink in a one-hop multi-gateway wireless packet network. The system may selectively apply packet decoding (e.g., network MIMO) to the uplink of a wireless network that has a plurality of gateways (GWs), base stations (BSs) or multiple remote radio heads (RRHs). The packet decoding can be selectively performed at a server that is in communication with the GWs, BDs or RHHs. This may be referred to generally as “on demand network MIMO (NMIMO). 
     Referring to  FIG. 3A , one embodiment of a system for processing packets over a communications network is depicted. In brief summary, the system may include a server  107 , a plurality of gateways  103 , and a plurality of sensor nodes  100 ,  101  (sometimes referred to as sensors or nodes). The server  107 , the gateway and the nodes  100 ,  101  may incorporate embodiments of features and/or functionalities of the server  107 , the gateways  103  and nodes  100 ,  101 , respectively, as described above in connection with  FIGS. 2A-2J . 
     The systems and methods described herein can support various types of nodes  100 ,  101  that are low-power transmitters, including wireless sensors and RFID tags, both active and passive. When requested, each gateway node (or listener)  103  may forward the physical layer samples of packets (e.g., after compression) to a server  107 , which may decode the packets using multiple-input-multiple-output (MIMO) techniques. This could be described as selective application of multi-user MIMO with a distributed receiver array. Packets that have adequate SINR at a gateway may be decoded (sometime referred to as “captured”), and their waveforms may be reconstructed and subtracted from stored samples. This subtraction is interference cancellation (IC). After IC, weaker packets may be revealed and decoded by the gateway, enabling successive IC (SIC). The diversity gain of multi-gateway reception provides higher signal-to-noise ratio (SNR) to packets that are not decodable at any gateway, thereby extending range. 
     The spatial multiplexing capability of MIMO enables packets that have too much interference at the gateways to be decoded at the server, thereby supporting energy saving transmit-only strategies. The selectivity or “on demand” aspect can lower the fronthaul cost of sending samples to the server, which is described in more detail below. 
     Multiple-input-multiple-output (MIMO) technology can improve throughput and reliability in wireless networks. Network MIMO refers to a large array that is geographically distributed, in which the antennas are connected to a central processor by fronthaul links. Application of multiuser MIMO techniques over many cells essentially eliminates interference effects and poor user experience at cell edges and enables the high throughputs from MIMO on a wide-area scale. Network MIMO, in which multiple remote radio heads or gateway  103  (GW) nodes behave as a large distributed array, has been associated with expensive fronthaul demands. On demand network MIMO can make network MIMO affordable for low bandwidth, low-power, and low-cost transmitter applications (e.g., Internet of Things (IoT) applications) by applying network MIMO selectively. 
     In some aspects, the on demand network MIMO approach described herein can provide reliability and range extension to low-power transmitters by merging two aspects: decoding with “capture and successive interference cancellation” (C&amp;S) at the gateways, and decoding with network MIMO, which may also be known as coordinated multipoint (CoMP) or multi-cell MIMO, in the cloud (e.g., at a server  107 ). “Capture” is the successful decoding of a packet in spite of lower-powered interfering packets. Interference cancellation is the subtracting of the effects of the decoded packet from stored samples of the received signal, thereby making possible the capture of weaker packets. Successive interference cancellation (SIC) is the repeated application of capture and interference cancellation. Network MIMO (NMIMO), implemented at a server  107  or data center, can utilize multiple gateway nodes  103  like antennas on a multi-antenna receiver. 
     NMIMO enables network-wide-application of the MIMO property, which is that when the receiver has at least N antennas, it can decode up to N times more interfering packets, compared to what it can decode with just one antenna, with no net increase in power or bandwidth at the transmitters. However, because the number of bits required to digitize (e.g., sample and quantize) a waveform for NMIMO is higher than the number of bits required to simply forward a decoded packet, this disclosure proposes to apply NMIMO selectively, to certain packets that are not decodable at the gateways  103 . 
     A non-limiting implementation is a system involving a wireless sensor network (WSN) of sensors  100 , 101 , with multiple GWs  103  and a server  107 . By way of illustration,  FIG. 2B  shows one example of a network of sensor nodes  100 , 100  with a distributed configuration of four gateways. The gateways may be deployed relative to each other in a parallelogram or trapezoidal configuration for instance, but other configurations may be used. The sensors  100 , 101  may be distributed (e.g., randomly as shown, or in some regular formation) across a region around the gateways. Each of the gateways may have a range for receiving and/or decoding packets, such as packets transmitted from sensors  100 , 101  within respective circular arcs depicted in  FIG. 3B . 
     In certain embodiments, the GW can be replaced by a BS or a RRH. A sensor  100 , 101  can be replaced by a user equipment (UE) or terminal device, and a server can be replaced with a network of servers, a data center, or a baseband processor pool, for instance, without limiting the scope of disclosure. In some embodiments, the server can be virtual, in the sense that one of the GWs can assume the role or some functionality of the server, or some subset of the GWs can collectively share or perform the processing of the server as a virtual server. 
     In some embodiments, the sensors  100 , 101  are either transmit only (TO) or “transmit mostly” (TM). TO sensors may or may not have receivers, but if the sensors have receivers, the sensors never turn them on. Therefore, TO sensors are oblivious to the activities of the GWs and the other nodes. TO sensors transmit according to their own clocks, which exhibit drift and random offsets. Some or all of the sensors  100 , 101  can be transceivers, that is, they can have both transmitters and receivers. In some embodiments, some or all of the sensors  100 , 101  are TO, and hence potentially incapable of coordination or synchronizing to the network. TM sensors can periodically turn on their receivers and accept feedback or commands from the GWs, but it is our intent that this happens rarely, to save energy. Thus, the TM sensor&#39;s clock can also become unsynchronized with the GWs over time. The negative consequences of asynchronization can be compensated by network MIMO features. 
     In some embodiments, the sensors  100 , 101  communicate via wireless channels with the GW(s). The GWs may connect or communicate through the internet for instance, wirelessly or otherwise, with a server  107 . One purpose of selective application of packet decoding may be to reduce the cost (e.g., bandwidth requirement) of the connection between the GWs and the server. The connection between GWs and the server can be provided by a mobile communications cellular service provider using a cellular or 3GPP protocol, or using wireless local area network (WLAN) or another type of communication protocol. 
     In some embodiments, the GWs may be implemented as software defined radios (SDRs), or as network GWs that are augmented with additional memory and/or processing capabilities. The GWs may be implemented as SDRs, e.g., to support the varied processing demands at the physical layer. The GWs may be synchronized by GPS. GWs synchronization does not have to occur in some embodiments, since offsets between GWs can be learned over time and compensated, based on packets commonly received or other commonly received signals. Each GW may be connected to the internet. For example, each GW may include a 4G modem supported by a multi-phone cellular service contract. 
     Each GW may be designed, configured and/or implemented to decode some packets and soft relay other packets (e.g., through the internet) to the server or other GWs. To “decode” means to correctly, successfully or completely recover certain packet information bits that were encoded at the corresponding transmitter (e.g., of a sensor node  100 , 101 ), in some embodiments. To “soft relay” a packet means to forward or relay a waveform (or a representation of the waveform) that includes the encoded information bits, to another processor for decoding. One method of soft relaying is to digitize or generate (e.g., decimate and quantize) samples of the received waveform, or of a function of the waveform, to include at least part of the packet, and transmit those samples digitally to some other destination (e.g., to a server  107 ). Another method of soft relaying may involve analog modulation, e.g., “radio over fiber.” The soft relay traffic may be referred to as “fronthaul.” Decoded packet traffic (e.g., the decoded packets, which may be multiplexed, and forwarded by a GW) may be referred to as “backhaul.” Thus, in some embodiments, the GW is capable of forwarding both fronthaul and backhaul traffic to the server  107 . 
     A GW may decode packets using one or more methods. For example, a GW can decode a packet using capture and successive interference cancellation (C&amp;S). In some embodiments, a GW can share a decoded packet with other GWs, so that one of the other GWs that could not decode the packet can still perform interference cancellation using the decoded packet. 
     In some embodiments, a GW may detect a packet in a received modulated signal, but be incapable of successfully decoding the packet (e.g., due to noise or interference). In this case, the GW may soft relay the samples of the packet to the server  107 , voluntarily or by request of the server. For example, the GW may store samples of packets and send the samples to the server according to a schedule or in response to a request by the server. In some embodiments, the GW determines the packets that have been unsuccessfully decoded (e.g., via a cyclic redundancy code (CRC) check), and may store the corresponding samples at the GW and/or send the corresponding samples to the server  107 . In certain embodiments, the GW may not check if the packets are successfully decoded, and may store the samples at the GW. Samples may be stored at the GW, or by the GW in a networked storage module, for a predetermined period of time or corresponding to a predetermined number of packets, that may allow sufficient time for a server  107  to decide and act on requesting the GW to forward particular samples to the server  107 . For instance, the GW may send all decoded data/packets to the server  107  regardless of whether all have been decoded correctly, and the server  107  may check each packet (e.g., via CRC check) and request the GW for stored samples corresponding to a packet that has not been successfully decoded at the GW. In these embodiments, the GW are configured to have access to sufficient storage capacity to temporarily store the samples, e.g., in a first in first out (FIFO) manner. 
     In certain embodiments, a GW may detect a packet in a received modulated signal, and may share synchronization parameters obtained based on the detected packet, with one or more other GWs (e.g., GWs that did not detect the packet) and/or the server  107 . All or some of the GWs, shared with the synchronization parameters, may soft relay their samples of the packet to the server  107 . 
     In some embodiments, one or more sensors  100 , 101  transmit modulated signals according to a schedule, either synchronously or asynchronously. When asynchronous, a sensor  100 , 101  transmits as scheduled according to the sensor&#39;s own real time clock (RTC). For example, each sensor  100 , 101  may select at random or is assigned a transmission schedule from a set of schedules, and starts its selected schedule at a random time. The GWs or the server  107  can track the transmission schedules of various sensors  100 , 101 , using observations of past transmissions or packets, and/or knowledge of the schedules, and predict when the packets should arrive. For example, the GWs and/or the server  107  can learn the schedule for each sensor  100 , 101  through an initialization protocol, can track each sensor&#39;s packet arrival times, and can predict when a certain sensor&#39;s packet should be received. Each schedule may be composed of consecutive back-to-back frames. Each sensor  100 , 101  may transmit one new packet per frame. At the beginning of each frame is a “copies window” (CW), when the sensor  100 , 101  can send one or more copies of the packet. The first copy may be sent at the beginning of the frame, while the other copies may be sent at pseudo-random times within the CW. The random time can for example be generated by a deterministic pseudo-random generation-algorithm and can be a known part of a sensor&#39;s schedule. For example, the random time could be created by a random number generator, using the sensor ID as the random seed. 
     In the case of GW tracking, the GWs may signal the transmission schedules or times to the server  107 . Predictions of arrival times can also be based on a method of embedding in each packet copy pointers to the locations of the other copies. Thus, either the GWs or the server  107  can know when to expect a packet from a particular sensor  100 , 101 . 
     The server  107  can know when a certain sensor&#39;s packet has been missed, and can request selected GWs to forward physical layer samples corresponding to a missed packet for combining and decoding at the server  107 . If a packet was expected by the server  107  but was not decoded by any GW or received by the server  107 , then, after a suitable or predetermined waiting time, the server  107  may request one or more GWs to soft relay samples of the packet to the server  107 . The request can be directed to select GWs, such as those that are known from past detections to be sensitive to particular sensors  100 , 101 , for example. 
     If a GW is able to determine that the GW has successfully decoded a packet, besides sending the packet to the server  107 , the GW can share that packet or a hash/representation of that packet with other GWs, to for instance prevent other GWs that have not decoded that same packet from transmitting samples to the server  107 . Thus, backhaul can be reduced when the other GWs are prevented from needlessly sending samples of a packet that has been successfully decoded by one GW. 
     When a GW first successfully decodes a packet, based on passing a CRC check for instance, the GW can forward that packet to the server  107  and/or the other GWs through the internet. No following copies of the packet may be forwarded. Each GW may store a certain number of its latest physical layer samples. When a packet has been decoded, its corresponding physical layer samples may be synthesized or regenerated and subtracted from the stored samples; this is interference cancellation (IC). In other words, if IC is perfect, after subtraction, the stored samples appear as though the decoded packet had never been transmitted. A benefit of cancellation is that weaker packets may be revealed and subsequently decoded and forwarded to the server  107  and the other GWs. “Local SIC” refers to when a GW cancels a packet that it decoded. “Global SIC” refers to when a GW cancels a packet that another GW decoded and forwarded. Global SIC is a form of GW cooperation. 
     In some embodiments, to decode a packet in a received signal, a GW or the server  107  first synchronizes to the packet. All decoded interfering packets should be canceled before attempting to synchronize to a new packet, in one or more embodiments. Synchronizing to a packet may include estimating the time offset and/or the carrier frequency offset (CFO). A GW may detect a packet by detecting a preamble portion of the packet. The packet may have a known preamble followed by an unknown payload. The preamble may include or corresponding to a predefined or known portion of the packet. The preamble may include a training sequence for example, or any sequence or signal that is known, e.g., for data-aided estimation of synchronization parameters or channel state information, and that can be stripped once the purpose of that sequence has been fulfilled. The preamble or known signal may not have to be located the beginning of a packet, and can be and located somewhere that is predetermined, in the middle or the end of the packet for instance. The known preamble is used (e.g., by the GW) for packet detection, synchronization and channel estimation (DS&amp;CE). 
     In some embodiments, the GW may perform signal processing using the detected preamble to estimate the time offset and/or the CFO. Time offset estimation determines the start time of the packet and the symbol timing. CFO estimation determines the difference between the carrier frequency of the packet and the RF frequency of the receiving GW or server  107 . Better quality offset estimates may generally imply better estimates of the channel state information (CSI), higher probability of decoding, and/or less residual interference power left after cancellation. 
     Cooperative Synchronization 
     One aspect of the present disclosure is “cooperative synchronization,” which may be defined as leveraging on multi-GW reception to improve synchronization. If the GWs are synchronized to each other, e.g., by GPS or other means, then the synchronization offsets of a packet observed at different GWs are highly correlated and this can be exploited. For example and in some embodiments, all the GWs may have global positioning service (GPS)-disciplined oscillators (GPSDOs). In such a case, the GWs can be considered phase locked with each other for the purpose of applying on demand NMIMO for a sensor network. For example, if the CFO is 15 KHz at GW  1 , it is likely to be nearly 15 KHz at GW  2 . This correlation can be exploited at the server  107  to improve synchronization of the copies (e.g., when preambles are not stripped before sending samples, to be described later). For example and in certain embodiments, the synchronization parameters of the strongest packet copy (say, from GW 1 ) can simply be used in place of the synchronization parameters for all the other copies (say, from GW 2 ). 
     Where the locations of the sensors  100 , 101  and GWs, and the objects in the propagation environment are stationary or fixed, each packet may have a single CFO relative to the “phased locked” GWs (e.g., collectively), and CFO estimation involves estimating only one offset. Thus, CFO estimation can benefit from joint processing of packet preambles received by multiple GWs. Generally, a sensor  100 , 101  may be closer to one GW than another, and this can cause the time offsets of a packet to be different for different GWs. However, the difference of these time offsets can be estimated well over time, and therefore that time offsets can also benefit from joint processing. 
     In some embodiments, if GW  1  knows it has the strongest preamble, then GW  1  can broadcast its synchronization parameters to selected other GWs to assist them in performing their S&amp;CE on the samples of the same packet. For instance, GW 1  may be informed of that it has the strongest preamble by the server  107 , based on machine learning for example. 
     In some embodiments, some GWs do not have GPSDOs. The quartz oscillators of the GWs may drift randomly, and the same may happen to quartz oscillators of the sensors  100 , 101 . However, because one sensor&#39;s transmission can often be received by two or more GWs, the relative CFOs of these GWs can be tracked. The offsets at each GW for a particular packet are still random variables with prior joint distributions that can be estimated from tracking. Therefore, the synchronization offsets for a new packet measured at one GW can be shared with other GWs, and each of the other GWs can estimate improved synchronization offsets by combining their own observed offsets with those shared by other GWs to that same packet. For example, the estimation can be performed using the minimum mean squared error (MMSE) criterion. 
     One example embodiment of cooperative synchronization is as follows. For a given packet, each GW may estimate a corresponding signal-to-noise-plus-interference ratio (SINR), a complex correlation metric for the fractional CFO, and an integer part of the CFO. The GW may digitize and send these (two real and one integer) quantities to the server  107 . These quantities may be used as synchronization parameters. The server  107  may select the integer CFO sent by the GW with the highest SINR, and may estimate the fractional CFO by performing an average (e.g., an optimally weighted average) of the fractional CFOs from the GWs that have SINRs above a given threshold. In some embodiments, signal-to-noise ratio (SNR) may be used in place of SINR. 
     Preamble Removal and Energy Enhancement 
     Synchronization and channel estimation (S&amp;CE) is a pre-requisite to NMIMO combining at the server  107  for decoding. Packet copies should be aligned in time, frequency, and phase for combining to be constructive. Because of the effects of compression, the server  107  may not be able to perform S&amp;CE for a packet as well as a gateway node. In other words, without special measures, the packet decoding at the server  107  may not be very reliable, because of poor S&amp;CE. 
     Also, in embodiments where minimizing the fronthaul load (that is, the “bandwidth” or number of bits needed to describe the samples that are being sent to the server  107 ) is an important design criterion, then it may be beneficial to place more energy on a sensor&#39;s preamble than is typical, to enable the GW to perform S&amp;CE even though the SINR on the payload is insufficient for decoding at the GW. For a packet with a sufficiently strong preamble (e.g., of sufficiently high energy), S&amp;CE can be performed at the GW, even if the GW is unable to decode the payload of the packet. 
     Performing S&amp;CE at the GWs, even when the payload must be decoded at the server  107 , can support efficient on demand network MIMO. The preamble may be made long enough to provide adequate energy for good S&amp;CE. This can amount to an increased energy cost for the sensor  100 , 101 . There are several advantages, however, of this approach for on demand network MIMO. The first advantage is that after the time and frequency offsets of a payload are compensated at the GW, the part of the preamble that is not interfered by an uncanceled payload can be removed before the physical layer samples are sent to the server  107  for decoding, thereby reducing the fronthaul load. In other words, the preamble does not need to be digitized and sent (e.g., compressed and forwarded) to the server  107  to enable the server  107  to do S&amp;CE. It may be desirable to signal the estimated S&amp;CE parameters to the server  107 , particularly if the server  107  is performing the prediction of packet arrival times. Another advantage is that the quality of the S&amp;CE is better at the GW than at the server  107 , even under high SINR conditions, because of the quantization error and sample rate reduction inherent in compression. Another advantage is that the packet arrival time prediction algorithm, which enables the server  107  or GW to know when a packet has been missed and which can be the basis of the on demand feature, does not need to be so precise. More specifically, when the server  107  requests samples, the endpoints of the time interval of the samples should be specified; there can be error in the estimated endpoints of the interval because of imperfect prediction. However, a long preamble can provide a high peak in the packet detection metric, enabling the GW to make a correct correspondence between the starting endpoint of the samples request interval and the exact location of the start of packet (SOP). 
     Hence, the GW can correct for the offsets at the GW, and then the preamble can be stripped before the samples are sent to the server  107 . Some preambles may be typically 25% of the packet length, so stripping such preambles represents at least a 25% reduction in fronthaul load. If a preamble is stripped, the corresponding samples should be pre-compensated (e.g., CFO and time offsets fixed or adjusted). For example, the GW can perform pre-compensation on the samples, such as resampling of the received signal at baseband (e.g., with time offset removed). In some embodiments, the GW can perform complex rotation using derived synchronization parameters, to shift the received signal, and the samples, to the same phase as the transmitting/source sensor  100 , 101  for instance. By dropping the preamble portion from the packet, the preamble does not contribute to fronthaul transmission bandwidth consumption. When it is known a priori that a sensor&#39;s packets shall be decoded at the server  107  and not at the GW, that sensor  100 , 101  may modify its preambles to have more energy than other sensors  100 , 101 , e.g., it may make its preambles longer. The long preamble can provide better S&amp;CE in low SNR, and does not contribute to fronthaul. 
     The channel estimates (e.g., channel gain information, and/or SNR) may be sent along with the samples from the GW, to facilitate combining at the server  107  (e.g. maximal ratio combining using samples corresponding to the highest SNRs), or the samples can be normalized by the channel gains before sending to the server  107 . 
     De-Spreading with Synchronization Errors 
     If a packet is encoded using spread spectrum modulation and if synchronization is performed at the GW, the GW may de-spread the packet prior to digitization. In the case of continuous phase modulation (CPM), the de-spreading may be performed as part of the branch metric computation in a Viterbi decoder. For each stage of the trellis, the GW may compute and digitize all the branch metrics, and may signal these metrics, along with CSI information, to the server  107 . For example, for minimum shift keying (MSK), four complex branch metrics are computed. Furthermore, to reduce computational complexity, certain spreading codes can be selected such that the de-spread trellis is the same as the trellis without spreading. The server  107  can then perform diversity combining of the branch metrics prior to Viterbi decoding, or prior to running soft output Viterbi algorithm (SOVA). For the case that the offset estimates have significant error, sufficient statistics for the de-spread branch metrics can be computed, based on the distribution of offset errors. For example and in some embodiments, the branch metrics can be computed for various discrete offset values to cover the range of possible errors. The set of branch metric statistics or set of branch metrics for each offset value can be signaled to the server  107 . 
     In some implementations for de-spreading, a receiver may determine that a received data packet is spread using a first spreading sequence and modulated using minimum shift keying (MSK) modulation. The first spreading sequence may be one of a plurality of spread spectrum spreading sequences selected for having an imbalance of 1, and each of the selected spreading sequences may be associated with a same state trellis for MSK modulation. In some embodiments, the plurality of spread spectrum spreading sequences is selected from Gold-code sequences. A spread spectrum spreading sequence that has an imbalance of 1 may comprise a spreading sequence of +1s and −1s that has a difference of 1 in the number of the +1s to the number of the −1s. A processor may calculate, for each branch of the state trellis responsive to the determination, a correlation metric for the received data packet over a length of the first spreading sequence. The processor may jointly demodulate and de-spread, by applying maximum likelihood sequence detection using the calculated correlation metrics, the received data packet. The processor may jointly demodulate and de-spread the received data packet by using Viterbi algorithm based processing. The processor may decode the demodulated and de-spread data packet. 
     In some embodiments, the first spreading sequence is assigned to a first user for spreading one or more data packets, and a second spreading sequence of the plurality of spread spectrum spreading sequences is assigned to a second user for spreading one or more data packets. The receiver may determine that a second received data packet is spread using the second spreading sequence from the plurality of spread spectrum spreading sequences, and modulated using MSK modulation. The processor may calculate, for each branch of the same state trellis, a correlation metric for the second received data packet over a length of the second spreading sequence. The processor may jointly demodulate and de-spread, by applying maximum likelihood sequence detection using the calculated correlation metrics, the received second data packet. 
     Virtual Spatial Multiplexing 
     Compression can be done conventionally through down-sampling and quantization. To gain more efficiency, the GWs can superimpose samples from multiple distinct packets before quantization, which may be referred to as virtual spatial multiplexing (VSM). The server  107  can support and/or request such superposition. MIMO signal processing at the server  107 , applied to compressed signals from multiple GWs, can separate these distinct packets. To maximize the compression efficiency, multiplexed sensors  100 , 101  (e.g., whose packet samples are to be superimposed) should be served by the same set of GWs. To facilitate the superposition of samples of selected packets, the GWs can buffer the samples for a predetermined period of time, possibly as long as several scheduled packet frames. VSM can be applied in addition to packets that are already superimposed because of simultaneous transmission. A potential characteristic of VSM is that the superimposed samples may have more noise and interference, than samples of signals already superimposed because of simultaneous transmission. 
     In one implementation, data packet compression by a gateway  103  involves the gateway  103  generating samples from data packets received from each of a plurality of network nodes. In some embodiments, the gateway generates the samples from the data packets using down-sampling. The gateway  103  may superimpose the generated samples across the plurality of network nodes. The gateway  103  may buffer or store at least a portion of the generated samples prior to the superimposition. The gateway may perform quantization on the superimposed samples. The gateway  103  may communicate the superimposed samples after the quantization to the server  107  for multiple-MIMO signal processing. 
     VSM can be used, for example, if sensors&#39; transmit times cannot be controlled, and the sensors transmit in different time slots. The server can request the affected GWs to perform a weighted sum (e.g., superposition) of their samples. By purpose of illustration, suppose the GW receives two packets that do not overlap in time from two different sensors. With a sufficiently energetic preamble, the GW can perform synchronization, that is, it can estimate the time offset (TO) and carrier frequency offset (CFO) for each packet, and correct for both offsets. In other words, after ideal correction, the two packets would both effectively start at t=0 and have zero frequency offset. The GW may simply add the corrected baseband samples of these two packets. The sum has the same model as if the signal came from a two-antenna VBLAST transmitter for instance, except that there is twice the variance on average due to the noises and interferences from the two slots being added. If the server  107  collects similarly superimposed samples from two GWs, then MIMO matrix H can be full rank and the server can separate and decode the two packets using MIMO processing, if the noise variance is not too high. The channel gains used by the server for MIMO processing are preferably estimated at the GW nodes and then signaled to the server, because compression loss on the preamble can degrade the channel estimates. Furthermore, given the channel gains a priori, the server  107  can request the GWs to add the samples of the two packets using certain precoding or beamforming weights. Precoding at a MIMO transmitter can enhance the SINR of the signal vector estimate. There is improved compression, since digitizing the two packets&#39; time intervals separately would require twice the bits as digitizing their combination in one time interval. 
     Scheduled Spatial Multiplexing 
     The spatial multiplexing feature of MIMO can imply that if up to M sensors transmit packets simultaneously to M GWs, and if those GWs forward the samples to the server, it is possible for the server to decode the M packets. This feature can be leveraged on to reduce the fronthaul load for NMIMO packets, if the M sensors are between the same group of M GWs. If certain sensors with receivers are usually not decodable by GWs, then it would be efficient to proactively schedule them together, in a separate slot from the other sensors. Then each GW can sample one packet-long interval to simultaneously digitize M packets. 
     Because simultaneous transmission of spatially multiplexed packets may be better than VSM in terms of SINR, certain sensors known to routinely result in server  107  decoding can be scheduled to transmit together. To maximize the compression efficiency, these multiplexed sensors  100 , 101  may be served by the same set of GWs. 
     Time Diversity Combining (TDC) 
     If, for example, the GW receives two copies of the same packet in two different time slots, then the GW can correct the offsets and add the samples, using MMSE diversity combining weights, which depend on complex channel gain estimates. This MMSE combining is a form of single description source coding with parallel channel coding, and can provide a diversity gain against interference. And if the copies fade independently, the MMSE combining can provide diversity gain against fading. Since this kind of aggregation has no additional cost in terms of fronthaul load, it may be advantageous to transmit copies of packets to gain reliability, for NMIMO processing. Copies of packets (as well as different packets) can be combined into one packet interval&#39;s worth of PHY samples. 
     Efficient decoding or compression may be achieved by coherently combining the samples from multiple copies of packets. This may be referred to as Time Diversity Combining (TDC). With sufficiently good synchronization and channel estimation, the packets may not have to be decoded prior to TDC. The GWs can be aware of the locations of the copies of packets if they are tracking the schedules, if other GWs have detected the copies and shared the synchronization information, or if the server  107  has signaled the schedule information to the GWs. In the event that TDC is not sufficient to decode the packet, the samples after TDC may be compressed and sent to the server  107  or they may be superimposed with samples from other packets using VSM, prior to compression. 
     Referring to  FIG. 3C , one embodiment of a flow diagram relating to a method for processing packets over a communications network is depicted. The method may include wirelessly receiving, by a first gateway of a plurality of gateways, a modulated signal from a first node, the modulated signal comprising a first packet ( 601 ). The first gateway may generate first samples corresponding to the first packet ( 603 ). The first gateway may decode the generated first samples to obtain decoded data ( 605 ). The first gateway may transmit the decoded data to a server ( 607 ). The first gateway and/or the server may determine, based on the decoded data, whether the first packet is successfully decoded at the first gateway ( 609 ). The server may obtain the generated first samples from the first gateway for decoding at the server, responsive to determining that the first packet is unsuccessfully decoded at the first gateway ( 611 ). 
     Referring to ( 601 ), and in some embodiments, a first gateway of a plurality of gateways wirelessly receives a modulated signal from a first node. The modulated signal may include a first packet. The gateways may be spatially distributed with respect to each other, and one or more of the gateways may be able to receive the modulated signal from the first node via different transmission paths. Each of the gateways may have a range for receiving and/or decoding packets from various nodes such as the first node. The first node can be a TO or TM sensor/node, as discussed above in connection with at least  FIGS. 3A-3B . The sensor nodes  100 , 101  can communicate via wireless channels with the gateways, for example as described above in connection with  FIGS. 2A-2J . 
     Referring to ( 603 ), and in some embodiments, the first gateway may generate first samples corresponding to the first packet. The first gateway may filter, amplify, and/or perform frequency mixing on the received modulated signal, for example as discussed above in connection with  FIGS. 2A-2J . The gateway may generate the samples using an analog-to-digital converter (ADC) based on the received signal. The gateway may generate the I/Q samples at the quantization level configured in the ADC. In some embodiments, the gateway may automatically store or buffer at least part of the generated samples for a predefined period of time. 
     Referring to ( 605 ), and in some embodiments, the first gateway may decode the generated first samples to obtain decoded data. In one case, a GW may detect the first packet in the received modulated signal, but may be incapable of successfully decoding the packet (e.g., due to noise or interference). In another case, the GW may successfully decode the packet. Therefore, the decoded data may comprise a decoded packet (that is decoded correctly), or data generated by the decoding process that does not yield the correct packet information. 
     In some embodiments, to decode a packet in a received signal, the GW first synchronizes to the packet. Synchronizing to the packet may include estimating the time offset and/or the carrier frequency offset (CFO) corresponding to the packet. In some embodiments, the GW may perform signal processing on a detected preamble of the first packet to estimate a corresponding time offset and/or CFO. 
     In some embodiments, the gateway may send the decoded data to the server regardless of whether the data yields the correct packet information. For example, the gateway may not check the correctness of the decoded data (e.g., via a CRC check), before storing or sending corresponding samples. In some embodiments, the server that receives the decoded data may detect, check or verify if a decoded packet is received (e.g., present in the decoded data). 
     In some embodiments, the GW determines the packets that have been unsuccessfully decoded (e.g., via a cyclic redundancy code (CRC) check), and may store the corresponding samples at the GW and/or send the corresponding samples to the server. In certain embodiments, the GW may not check if a packet successfully decoded, and may store the corresponding samples at the GW. Samples may be stored at the GW, or by the GW in a networked storage module, for a predetermined period of time or corresponding to a predetermined number of packets, that may allow sufficient time for a server to decide and act on requesting the GW to forward particular samples to the server. 
     A GW may decode packets using one or more methods. For example, a GW can decode a packet using capture and successive interference cancellation (C&amp;S). In some embodiments, a GW can share a decoded packet with other GWs, so that one of the other GWs that could not decode the packet can still perform noise cancellation with the decoded packet. Packets that have adequate SINR at a gateway may be decoded, and their waveforms may be reconstructed and subtracted from stored samples to perform interference cancellation (IC). After IC, weaker packets may be revealed and decoded by the gateway, enabling successive IC (SIC). 
     The GWs may be synchronized by GPS. In some embodiments, the GWs are not synchronized by GPS, and offsets between GWs can be learned over time and compensated, based on packets commonly received. In some embodiments, the GWs can track the transmission schedule of the first node, using observations of past packet transmissions by the node, and/or knowledge of the schedules, and predict when the packets should arrive. For example, the GWs can learn the schedule for the sensor node through an initialization protocol, can track the sensor node&#39;s packet arrival times, and can predict when the sensor node&#39;s packet should be received. In the case of GW tracking, one or more GWs may signal the transmission schedules or times to the server. Thus, the GWs and the server  107  can know when to expect a packet from the sensor node. 
     In certain embodiments, a GW may detect a packet in a received modulated signal, and may use the detected packet (e.g., the packet&#39;s preamble) to determine synchronization parameters (e.g., time offset, CFO, and/or start of packet). The GW may share synchronization parameters obtained based on the detected packet, with one or more other GWs (e.g., GWs that did not detect the packet) and/or the server  107 . Synchronization parameters may sometimes be referred to as S&amp;CE parameters. All or some of the GWs, shared with the synchronization parameters, may soft relay their samples of the packet to the server  107  for decoding via MIMO processing. 
     In some embodiments, more energy is placed on the sensor node&#39;s preamble, to enable the GW to perform S&amp;CE even though the SINR on the payload is insufficient for decoding at the GW. The sensor node may be configured to place more energy on the sensor node&#39;s preamble (e.g., extend the length of the preamble), to enable the GW to detect and process the preamble portion of the packet, to obtain the synchronization parameters for example. The GW may use the detected preamble to determine or estimate the synchronization parameters. Based on the determination, the GW may compensate or correct for the time and frequency offsets of a packet payload at the GW. 
     The GW may send or signal the estimated synchronization parameters to the server, particularly if the server is performing the prediction of packet arrival times. For example, the GW can perform pre-compensation on the samples, such as resampling the corresponding signal for the packet at baseband (e.g., to remove time offset). In some embodiments, the GW can perform complex multiplication or adjustment on the received signal, using derived synchronization parameters, to shift and/or rotate the received signal and/or the corresponding samples, to the same phase as the transmitting/source sensor for instance. 
     The GW may remove or drop the preamble portion of the packet before the corresponding samples are sent to the server for decoding. The GW may exclude the preamble from the first samples from being sent to the server to be decoded. For instance, the GW may estimate or determine that the first X samples of the decoded data correspond to the preamble of the packet, based on a detected/determined/known length of the preamble. The GW may save, buffer or store the samples corresponding to the packet excluding the first X samples corresponding to the preamble of the packet. The GW may retrieve the saved/buffered/stored samples (which exclude the X samples corresponding to the preamble of the packet) when the time arrives for the GW to send samples associated with the packet to the server. 
     Referring to ( 607 ), and in some embodiments, the first gateway may transmit the decoded data to a server. In some embodiments, where a GW is able to determine that the GW has successfully decoded a packet, the GW may, besides sending the packet to the server  107 , share that packet or a hash/representation of that packet or an indication of successful decoding of that packet, with other GWs. This can prevent other GWs that have decoded that same packet from also transmitting the same decoded packet to the server  107 . Transmission of the same decoded packet from multiple GWs may be avoided, thereby reducing consumption of network bandwidth and/or GW resources which would otherwise have been consumed for transmitting the same decoded packet. 
     For example, when a GW first successfully decodes a packet based on passing a CRC check for instance, the GW can forward that packet to the server  107  and/or the other GWs through the internet. No following copies of the packet may be forwarded. Each GW may store a certain number of its latest physical layer samples. When a packet has been decoded, its corresponding physical layer samples may be synthesized or regenerated and subtracted from the stored samples; this is interference cancellation (IC). In other words, if IC is perfect, after subtraction, the stored samples appear as though the decoded packet had never been transmitted. If IC is perfect, the packet may be considered to be decoded correctly, and there is no reason to store the samples to send to the server for decoding. A benefit of cancellation is that weaker packets may be revealed and subsequently decoded and forwarded to the server  107  and/or the other GWs. 
     In some embodiments, the first gateway determines a SNR, SINR or an indication of signal amplitude of the first packet. The first gateway may transmit the SNR, SINR or the indication to the server to facilitate selection of sets of samples received from different gateways. The server may use the SNR, SINR or the indication to determine which set(s) of samples to use to perform decoding of a corresponding packet. In some embodiments, the server obtains a set of samples corresponding to a highest value for the SNR, SINR or the indication, and proceeds to decode the obtained set of samples (e.g., using synchronization parameters from the first gateway. In certain embodiments, the server selects multiple sets of samples for combining at the server to decode a corresponding packet. 
     In some embodiments, the channel estimates (e.g., channel gain information, and/or SNR) may be sent along with the samples from the gateway, to facilitate combining at the server  107 . In certain embodiments, the first gateway may normalize the samples by the channel gains (e.g., determined by the first gateway) before sending to the server  107 . The server may perform maximal ratio combining using the samples corresponding to the highest SNRs for instance. 
     Referring to ( 609 ), and in some embodiments, the first gateway and/or the server may determine, based on the decoded data, whether the first packet is successfully decoded at the first gateway. The first gateway may determine whether the first packet is successfully decoded at the first gateway, and may operate as discussed above. In some embodiments, the server may determine if the first packet is successfully decoded at the first gateway, according to the decoded data received from the first gateway. For example, the server may perform a CRC check or other integrity check on the decoded data to determine the correctness of the decoded data. 
     The server  107  can know when a certain sensor&#39;s packet has been missed, according to a schedule of the sensor for instance. The server can request selected GWs to forward physical layer samples corresponding to a missed packet for combining and decoding at the server  107 . The server may determine that a packet is expected but was not decoded by any GW or received by the server  107 . After a suitable or predetermined waiting time, the server  107  may request one or more GWs to soft relay samples of the packet to the server  107 . The request can be directed to selected GWs (e.g., the first gateway), such as those that are known from past detections to be sensitive to particular sensors  100 , 101  (e.g., the first node). 
     Referring to ( 611 ), and in some embodiments, the server may obtain the generated first samples from the first gateway for decoding at the server, responsive to determining that the first packet is unsuccessfully decoded at the first gateway. In some embodiments, the GW may soft relay the samples of the packet to the server  107 , voluntarily or by request of the server. The first gateway may transmit or communicate the generated first samples to the server responsive to a scheduled transmission or in response to a request from the server. When requested by the server, the first gateway node  103  may forward the physical layer samples of a requested packets (e.g., after compression) to a server  107 . 
     In some embodiments, a second gateway of the plurality of gateways generates samples corresponding to the first packet. The server may receive or obtain the generated second samples from the second gateway, in any of the manner described above for obtaining the generated first samples. The server may decode the first packet using the generated first samples and the generated second samples. For example, the server may decode the first packet using network multiple-input-multiple-output (MIMO) processing. 
     It should be noted that certain passages of this disclosure can reference terms such as “first” and “second” in connection with gateways, samples, packets, etc., for purposes of identifying or differentiating one from another or from others. These terms are not intended to merely relate entities (e.g., first samples and second samples) temporally or according to a sequence, although in some cases, these entities can include such a relationship. Nor do these terms limit the number of possible entities (e.g., gateway) that can operate within a system or environment. 
     It should be understood that the systems described above may provide multiple ones of any or each of those components and these components may be provided on either a standalone machine or, in some embodiments, on multiple machines in a distributed system. In addition, the systems and methods described above may be provided as one or more computer-readable programs or executable instructions embodied on or in one or more articles of manufacture. The article of manufacture may be a floppy disk, a hard disk, a CD-ROM, a flash memory card, a PROM, a RAM, a ROM, or a magnetic tape. In general, the computer-readable programs may be implemented in any programming language, such as LISP, PERL, C, C++, C #, PROLOG, or in any byte code language such as JAVA. The software programs or executable instructions may be stored on or in one or more articles of manufacture as object code. 
     While the foregoing written description of the invention enables one of ordinary skill to make and use what is considered presently to be the best mode thereof, those of ordinary skill will understand and appreciate the existence of variations, combinations, and equivalents of the specific embodiment, method, and examples herein. The invention should therefore not be limited by the above described embodiment, method, and examples, but by all embodiments and methods within the scope and spirit of the invention.