The following description relates to varying a rate at which multiple-input/multiple-output (MIMO) transmissions are elicited from wireless communication devices, for example, for wireless motion detection.
Motion detection systems have been used to detect movement, for example, of objects in a room or an outdoor area. In some example motion detection systems, infrared or optical sensors are used to detect movement of objects in the sensor's field of view. Motion detection systems have been used in security systems, automated control systems and other types of systems.
In some aspects of what is described here, a wireless sensing system can process wireless signals (e.g., radio frequency signals) transmitted through a space between wireless communication devices for wireless sensing applications. Example wireless sensing applications include detecting motion, which can include one or more of the following: detecting motion of objects in the space, motion tracking, localization of motion in a space, breathing detection, breathing monitoring, presence detection, gesture detection, gesture recognition, human detection (e.g., moving and stationary human detection), human tracking, fall detection, speed estimation, intrusion detection, walking detection, step counting, respiration rate detection, sleep pattern detection, apnea estimation, posture change detection, activity recognition, gait rate classification, gesture decoding, sign language recognition, hand tracking, heart rate estimation, breathing rate estimation, room occupancy detection, human dynamics monitoring, and other types of motion detection applications. Other examples of wireless sensing applications include object recognition, speaking recognition, keystroke detection and recognition, tamper detection, touch detection, attack detection, user authentication, driver fatigue detection, traffic monitoring, smoking detection, school violence detection, human counting, metal detection, human recognition, bike localization, human queue estimation, Wi-Fi imaging, and other types of wireless sensing applications. For instance, the wireless sensing system may operate as a motion detection system to detect the existence and location of motion based on Wi-Fi signals or other types of wireless signals.
The examples described herein may be useful for home monitoring. In some instances, home monitoring using the wireless sensing systems described herein may provide several advantages, including full home coverage through walls and in darkness, discreet detection without cameras, higher accuracy and reduced false alerts (e.g., in comparison with sensors that do not use Wi-Fi signals to sense their environments), and adjustable sensitivity. By layering Wi-Fi motion detection capabilities into routers and gateways, a robust motion detection system may be provided.
The examples described herein may also be useful for wellness monitoring. Caregivers want to know their loved ones are safe, while seniors and people with special needs want to maintain their independence at home with dignity. In some instances, wellness monitoring using the wireless sensing systems described herein may provide a solution that uses wireless signals to detect motion without using cameras or infringing on privacy, generates alerts when unusual activity is detected, tracks sleep patterns, and generates preventative health data. For example, caregivers can monitor motion, visits from health care professionals, and unusual behavior such as staying in bed longer than normal. Furthermore, motion is monitored unobtrusively without the need for wearable devices, and the wireless sensing systems described herein offer a more affordable and convenient alternative to assisted living facilities and other security and health monitoring tools.
The examples described herein may also be useful for setting up a smart home. In some examples, the wireless sensing systems described herein use predictive analytics and artificial intelligence (AI), to learn motion patterns and trigger smart home functions accordingly. Examples of smart home functions that may be triggered included adjusting the thermostat when a person walk through the front door, turning other smart devices on or off based on preferences, automatically adjusting lighting, adjusting HVAC systems based on present occupants, etc.
In some instances, aspects of the systems and techniques described here provide technical improvements and advantages over existing approaches. In some wireless network environments, certain wireless communication devices may not automatically send MIMO transmissions in response to certain PHY layer or MAC layer messages. The PHY layer, also known as the physical layer, can refer to Layer 1 of the Open System Interconnection (OSI) model, and the MAC layer, also known as the data link layer, can refer to Layer 2 of the OSI model. In aspects of the systems and techniques described, messages initiated by protocols in higher layers (e.g., layers above Layers 1 and 2 of the OSI model) may be used to elicit MIMO transmissions from wireless communication devices. For example, network layer messages (e.g., ICMP Ping, ARP Ping, or modified versions of these and other network layer processes) and transport layer messages (e.g., TCP Ping, or modified versions of this and other transport layer processes) may be used to cause one or more wireless communication devices to send a wireless transmission that includes a MIMO training field.
The MIMO training field contains signals having a higher frequency resolution, a greater number of subcarrier frequencies, and a higher frequency bandwidth compared to Legacy training fields in the PHY frame. Use of the MIMO training field for motion detection provides more accurate motion detection capabilities. For example, in some instances, motion detection can be performed with higher spatial and temporal resolution, precision, and accuracy with the use of PHY frames, each having a respective MIMO training field. Further, since the MIMO transmissions are elicited using protocols in higher layers, MIMO transmissions may be elicited from a broader range of wireless communication devices, in a more efficient manner, or both. The ability of a wireless sensing system to elicit MIMO transmissions from a broader range of wireless communication devices can allow the wireless sensing system to operate in more diverse environments and to cover greater spatial areas. In addition, MIMO transmissions may be elicited using existing resources on the responding device, for instance, without having to install any additional hardware, software, or firmware on the responding device (e.g., reducing or eliminating a requirement for specialized motion detection hardware in some cases). Further, the systems and techniques described here may be utilized in wireless motion detection systems or other types of wireless sensing systems. For instance, eliciting MIMO transmissions may be useful in a variety of wireless sensing systems that utilize channel state information (CSI) derived from wireless signals (e.g., systems that take a CSI channel response and apply digital-signal-processing, machine learning, or other types of analysis to the CSI channel response). The technical improvements and advantages achieved in examples where the wireless sensing system is used for motion detection may also be achieved in examples where the wireless sensing system is used for other wireless sensing applications.
In some instances, a wireless sensing system can be implemented using a wireless communication network. Wireless signals received at one or more wireless communication devices in the wireless communication network may be analyzed to determine channel information for the different communication links (between respective pairs of wireless communication devices) in the network. The channel information may be representative of a physical medium that applies a transfer function to wireless signals that traverse a space. In some instances, the channel information includes a channel response. Channel responses can characterize a physical communication path, representing the combined effect of, for example, scattering, fading, and power decay within the space between the transmitter and receiver. In some instances, the channel information includes beamforming state information (e.g., a feedback matrix, a steering matrix, channel state information (CSI), etc.) provided by a beamforming system. Beamforming is a signal processing technique often used in multi antenna (MIMO) radio systems for directional signal transmission or reception. Beamforming can be achieved by operating elements in an antenna array in such a way that signals at particular angles experience constructive interference while others experience destructive interference.
The channel information for each of the communication links may be analyzed by one or more motion detection algorithms (e.g., running on a hub device, a client device, or other device in the wireless communication network, or on a remote device communicably coupled to the network) to detect, for example, whether motion has occurred in the space, to determine a relative location of the detected motion, or both. In some aspects, the channel information for each of the communication links may be analyzed to detect whether an object is present or absent, e.g., when no motion is detected in the space.
In some instances, a motion detection system returns motion data. In some implementations, motion data is a result that is indicative of a degree of motion in the space, the location of motion in the space, the direction of motion in the space, a time at which the motion occurred, or a combination thereof. In some instances, the motion data can include a motion score, which may include, or may be, one or more of the following: a scalar quantity indicative of a level of signal perturbation in the environment accessed by the wireless signals; an indication of whether there is motion; an indication of whether there is an object present; or an indication or classification of a gesture performed in the environment accessed by the wireless signals.
In some implementations, the motion detection system can be implemented using one or more motion detection algorithms. Example motion detection algorithms that can be used to detect motion based on wireless signals include the techniques described in U.S. Pat. No. 9,523,760 entitled “Detecting Motion Based on Repeated Wireless Transmissions,” U.S. Pat. No. 9,584,974 entitled “Detecting Motion Based on Reference Signal Transmissions,” U.S. Pat. No. 10,051,414 entitled “Detecting Motion Based On Decompositions Of Channel Response Variations,” U.S. Pat. No. 10,048,350 entitled “Motion Detection Based on Groupings of Statistical Parameters of Wireless Signals,” U.S. Pat. No. 10,108,903 entitled “Motion Detection Based on Machine Learning of Wireless Signal Properties,” U.S. Pat. No. 10,109,167 entitled “Motion Localization in a Wireless Mesh Network Based on Motion Indicator Values,” U.S. Pat. No. 10,109,168 entitled “Motion Localization Based on Channel Response Characteristics,” U.S. Pat. No. 10,743,143 entitled “Determining a Motion Zone for a Location of Motion Detected by Wireless Signals,” U.S. Pat. No. 10,605,908 entitled “Motion Detection Based on Beamforming Dynamic Information from Wireless Standard Client Devices,” U.S. Pat. No. 10,605,907 entitled “Motion Detection by a Central Controller Using Beamforming Dynamic Information,” U.S. Pat. No. 10,600,314 entitled “Modifying Sensitivity Settings in a Motion Detection System,” U.S. Pat. No. 10,567,914 entitled “Initializing Probability Vectors for Determining a Location of Motion Detected from Wireless Signals,” U.S. Pat. No. 10,565,860 entitled “Offline Tuning System for Detecting New Motion Zones in a Motion Detection System,” U.S. Pat. No. 10,506,384 entitled “Determining a Location of Motion Detected from Wireless Signals Based on Prior Probability, U.S. Pat. No. 10,499,364 entitled “Identifying Static Leaf Nodes in a Motion Detection System,” U.S. Pat. No. 10,498,467 entitled “Classifying Static Leaf Nodes in a Motion Detection System,” U.S. Pat. No. 10,460,581 entitled “Determining a Confidence for a Motion Zone Identified as a Location of Motion for Motion Detected by Wireless Signals,” U.S. Pat. No. 10,459,076 entitled “Motion Detection based on Beamforming Dynamic Information,” U.S. Pat. No. 10,459,074 entitled “Determining a Location of Motion Detected from Wireless Signals Based on Wireless Link Counting,” U.S. Pat. No. 10,438,468 entitled “Motion Localization in a Wireless Mesh Network Based on Motion Indicator Values,” U.S. Pat. No. 10,404,387 entitled “Determining Motion Zones in a Space Traversed by Wireless Signals,” U.S. Pat. No. 10,393,866 entitled “Detecting Presence Based on Wireless Signal Analysis,” U.S. Pat. No. 10,380,856 entitled “Motion Localization Based on Channel Response Characteristics,” U.S. Pat. No. 10,318,890 entitled “Training Data for a Motion Detection System using Data from a Sensor Device,” U.S. Pat. No. 10,264,405 entitled “Motion Detection in Mesh Networks,” U.S. Pat. No. 10,228,439 entitled “Motion Detection Based on Filtered Statistical Parameters of Wireless Signals,” U.S. Pat. No. 10,129,853 entitled “Operating a Motion Detection Channel in a Wireless Communication Network,” U.S. Pat. No. 10,111,228 entitled “Selecting Wireless Communication Channels Based on Signal Quality Metrics,” and other techniques.
The example wireless communication system 100 includes three wireless communication devices 102A, 102B, 102C. The example wireless communication system 100 may include additional wireless communication devices 102 and/or other components (e.g., one or more network servers, network routers, network switches, cables, or other communication links, etc.).
The example wireless communication devices 102A, 102B, 102C can operate in a wireless network, for example, according to a wireless network standard or another type of wireless communication protocol. For example, the wireless network may be configured to operate as a Wireless Local Area Network (WLAN), a Personal Area Network (PAN), a metropolitan area network (MAN), or another type of wireless network. Examples of WLANs include networks configured to operate according to one or more of the 802.11 family of standards developed by IEEE (e.g., Wi-Fi networks), and others. Examples of PANs include networks that operate according to short-range communication standards (e.g., BLUETOOTH®, Near Field Communication (NFC), ZigBee), millimeter wave communications, and others.
In some implementations, the wireless communication devices 102A, 102B, 102C may be configured to communicate in a cellular network, for example, according to a cellular network standard. Examples of cellular networks include networks configured according to 2G standards such as Global System for Mobile (GSM) and Enhanced Data rates for GSM Evolution (EDGE) or EGPRS; 3G standards such as Code Division Multiple Access (CDMA), Wideband Code Division Multiple Access (WCDMA), Universal Mobile Telecommunications System (UMTS), and Time Division Synchronous Code Division Multiple Access (TD-SCDMA); 4G standards such as Long-Term Evolution (LTE) and LTE-Advanced (LTE-A); 5G standards, and others.
In some cases, one or more of the wireless communication devices 102 is a Wi-Fi access point or another type of wireless access point (WAP). In some cases, one or more of the wireless communication devices 102 is an access point of a wireless mesh network, such as, for example, a commercially-available mesh network system (e.g., GOOGLE Wi-Fi, EERO mesh, etc.). In some instances, one or more of the wireless communication devices 102 can be implemented as wireless access points (APs) in a mesh network, while the other wireless communication device(s) 102 are implemented as leaf devices (e.g., mobile devices, smart devices, etc.) that access the mesh network through one of the APs. In some cases, one or more of the wireless communication devices 102 is a mobile device (e.g., a smartphone, a smart watch, a tablet, a laptop computer, etc.), a wireless-enabled device (e.g., a smart thermostat, a Wi-Fi enabled camera, a smart TV), or another type of device that communicates in a wireless network.
In the example shown in
In the example shown in
In the example shown in
In some examples, the wireless signals may propagate through a structure (e.g., a wall) before or after interacting with a moving object, which may allow the object's motion to be detected without an optical line-of-sight between the moving object and the transmission or receiving hardware. In some instances, the motion detection system may communicate the motion detection event to another device or system, such as a security system or a control center.
In some cases, the wireless communication devices 102 themselves are configured to perform one or more operations of the motion detection system, for example, by executing computer-readable instructions (e.g., software or firmware) on the wireless communication devices. For example, each device may process received wireless signals to detect motion based on changes in the communication channel. In some cases, another device (e.g., a remote server, a cloud-based computer system, a network-attached device, etc.) is configured to perform one or more operations of the motion detection system. For example, each wireless communication device 102 may send channel information to a specified device, system or service that performs operations of the motion detection system.
In an example aspect of operation, wireless communication devices 102A, 102B may broadcast wireless signals or address wireless signals to the other wireless communication device 102C, and the wireless communication device 102C (and potentially other devices) receives the wireless signals transmitted by the wireless communication devices 102A, 102B. The wireless communication device 102C (or another system or device) then processes the received wireless signals to detect motion of an object in a space accessed by the wireless signals (e.g., in the zones 110A, 110B). In some instances, the wireless communication device 102C (or another system or device) may perform one or more operations of a motion detection system.
In some cases, a combination of one or more of the wireless communication devices 204A, 204B, 204C can be part of, or may be used by, a motion detection system. The example wireless communication devices 204A, 204B, 204C can transmit wireless signals through a space 200. The example space 200 may be completely or partially enclosed or open at one or more boundaries of the space 200. The space 200 may be or may include an interior of a room, multiple rooms, a building, an indoor area, outdoor area, or the like. A first wall 202A, a second wall 202B, and a third wall 202C at least partially enclose the space 200 in the example shown.
In the example shown in
As shown, an object is in a first position 214A at an initial time (t0) in
As shown in
In
The example wireless signals shown in
The transmitted signal may have a number of frequency components in a frequency bandwidth, and the transmitted signal may include one or more bands within the frequency bandwidth. The transmitted signal may be transmitted from the first wireless communication device 204A in an omnidirectional manner, in a directional manner or otherwise. In the example shown, the wireless signals traverse multiple respective paths in the space 200, and the signal along each path may become attenuated due to path losses, scattering, reflection, or the like and may have a phase or frequency offset.
As shown in
In the example shown in
In the example shown in
In the example shown in
When the client devices 232 seek to connect to and associate with their respective APs 226, 228, the client devices 232 may go through an authentication and association phase with their respective APs 226, 228. Among other things, the association phase assigns address information (e.g., an association ID or another type of unique identifier) to each of the client devices 232. For example, within the IEEE 802.11 family of standards for Wi-Fi, each of the client devices 232 may identify itself using a unique address (e.g., a 48-bit address, an example being the MAC address), although the client devices 232 may be identified using other types of identifiers embedded within one or more fields of a message. The address information (e.g., MAC address or another type of unique identifier) can be either hardcoded and fixed, or randomly generated according to the network address rules at the start of the association process. Once the client devices 232 have associated to their respective APs 226, 228, their respective address information may remain fixed. Subsequently, a transmission by the APs 226, 228 or the client devices 232 typically includes the address information (e.g., MAC address) of the transmitting wireless device and the address information (e.g., MAC address) of the receiving device.
In the example shown in
In the example shown in
The motion detection system, which may include one or more motion detection or localization processes running on the one or more of the client devices 232 or on one or more of the APs 226, 228, may collect and process data (e.g., channel information) corresponding to local links that are participating in the operation of the wireless sensing system. The motion detection system may be installed as a software or firmware application on the client devices 232 or on the APs 226, 228, or may be part of the operating systems of the client devices 232 or the APs 226, 228.
In some implementations, the APs 226, 228 do not contain motion detection software and are not otherwise configured to perform motion detection in the space 201. Instead, in such implementations, the operations of the motion detection system are executed on one or more of the client devices 232. In some implementations, the channel information may be obtained by the client devices 232 by receiving wireless signals from the APs 226, 228 (or possibly from other client devices 232) and processing the wireless signal to obtain the channel information. For example, the motion detection system running on the client devices 232 may have access to channel information provided by the client device's radio firmware (e.g., Wi-Fi radio firmware) so that channel information may be collected and processed.
In some implementations, the client devices 232 send a request to their corresponding AP 226, 228 to transmit wireless signals that can be used by the client device as motion probes to detect motion of objects in the space 201. The request sent to the corresponding AP 226, 228 may be a null data packet frame, a beamforming request, a ping, standard data traffic, or a combination thereof. In some implementations, the client devices 232 are stationary while performing motion detection in the space 201. In other examples, one or more of the client devices 232 may be mobile and may move within the space 201 while performing motion detection.
Mathematically, a signal f (t) transmitted from a wireless communication device (e.g., the wireless communication device 204A in
where ωn represents the frequency of nth frequency component of the transmitted signal, cn represents the complex coefficient of the nth frequency component, and t represents time. With the transmitted signal f(t) being transmitted, an output signal rk (t) from a path k may be described according to Equation (2):
where αn,k represents an attenuation factor (or channel response; e.g., due to scattering, reflection, and path losses) for the nth frequency component along path k, and ϕn,k represents the phase of the signal for nth frequency component along path k. Then, the received signal R at a wireless communication device can be described as the summation of all output signals rk (t) from all paths to the wireless communication device, which is shown in Equation (3):
Substituting Equation (2) into Equation (3) renders the following Equation (4):
The received signal R at a wireless communication device (e.g., the wireless communication devices 204B, 204C in
The complex value Yn for a given frequency component ωn indicates a relative magnitude and phase offset of the received signal at that frequency component ωn. The signal f (t) may be repeatedly transmitted within a time period, and the complex value Yn can be obtained for each transmitted signal f (t). When an object moves in the space, the complex value Yn changes over the time period due to the channel response αn,k of the space changing. Accordingly, a change detected in the channel response (and thus, the complex value Yn) can be indicative of motion of an object within the communication channel. Conversely, a stable channel response may indicate lack of motion. Thus, in some implementations, the complex values Yn for each of multiple devices in a wireless network can be processed to detect whether motion has occurred in a space traversed by the transmitted signals f (t). The channel response can be expressed in either the time-domain or frequency-domain, and the Fourier-Transform or Inverse-Fourier-Transform can be used to switch between the time-domain expression of the channel response and the frequency-domain expression of the channel response.
In another aspect of
In some implementations, for example, a steering matrix may be generated at a transmitter device (beamformer) based on a feedback matrix provided by a receiver device (beamformee) based on channel sounding. Because the steering and feedback matrices are related to propagation characteristics of the channel, these beamforming matrices change as objects move within the channel. Changes in the channel characteristics are accordingly reflected in these matrices, and by analyzing the matrices, motion can be detected, and different characteristics of the detected motion can be determined. In some implementations, a spatial map may be generated based on one or more beamforming matrices. The spatial map may indicate a general direction of an object in a space relative to a wireless communication device. In some cases, “modes” of a beamforming matrix (e.g., a feedback matrix or steering matrix) can be used to generate the spatial map. The spatial map may be used to detect the presence of motion in the space or to detect a location of the detected motion.
In some implementations, the output of the motion detection system may be provided as a notification for graphical display on a user interface on a user device. In some implementations, the user device is the device used to detect motion, a user device of a caregiver or emergency contact designated to an individual in the space 200, 201, or any other user device that is communicatively coupled to the motion detection system to receive notifications from the motion detection system.
In some instances, the graphical display includes a plot of motion data indicating a degree of motion detected by the motion detection system for each time point in a series of time points. The graphical display can display the relative degree of motion detected by each node of the motion detection system. The graphical display can help the user determine an appropriate action to take in response to the motion detection event, correlate the motion detection event with the user's observation or knowledge, determine whether the motion detection event was true or false, etc.
In some implementations, the output of the motion detection system may be provided in real-time (e.g., to an end user). Additionally or alternatively, the output of the motion detection system may be stored (e.g., locally on the wireless communication devices 204, client devices 232, the APs 226, 228, or on a cloud-based storage service) and analyzed to reveal statistical information over a time frame (e.g., hours, days, or months). An example where the output of the motion detection system may be stored and analyzed to reveal statistical information over a time frame is in health monitoring, vital sign monitoring, sleep monitoring, etc. In some implementations, an alert (e.g., a notification, an audio alert, or a video alert) may be provided based on the output of the motion detection system. For example, a motion detection event may be communicated to another device or system (e.g., a security system or a control center), a designated caregiver, or a designated emergency contact based on the output of the motion detection system.
In some implementations, a wireless motion detection system can detect motion by analyzing components of wireless signals that are specified by a wireless communication standard. For example, a motion detection system may analyze standard headers of wireless signals exchanged in a wireless communication network. One such example is the IEEE 802.11ax standard, which is also known as “Wi-Fi 6.” A draft of the IEEE 802.11ax standard is published in a document entitled “P802.11ax/D4.0, IEEE Draft Standard for Information Technology—Telecommunications and Information Exchange Between Systems Local and Metropolitan Area Networks—Specific Requirements Part 11: Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications Amendment Enhancements for High Efficiency WLAN,” March 2019, which is accessible at https://ieeexplore.ieee.org/document/8672643 and hereby incorporated by reference in its entirety. Standard headers specified by other types of wireless communication standards may be used for motion detection in some cases.
In some implementations, a motion detection algorithm used by a wireless motion detection system utilizes a channel response (an output of a channel estimation process) computed by a wireless receiver (e.g., a Wi-Fi receiver). For example, the channel responses computed by a channel estimation process according to a Wi-Fi 6 standard may be received as inputs to the motion detection algorithm. The channel estimation in the Wi-Fi 6 standard occurs at the PHY layer, using the PHY Frame (the PHY Frame is also called a PPDU) of the received wireless signal.
In some examples, a motion detection algorithm employed by a wireless motion detection system uses channel responses computed from orthogonal frequency-division multiplexing (OFDM)-based PHY frames (including those produced by the Wi-Fi 6 standard). The OFDM-based PHY frames can, in some instances, be frequency-domain signals having multiple fields, each having a corresponding frequency-domain signal. With this class of OFDM-based PHY frames, there are typically two types of PPDU fields that allow the Wi-Fi receiver to estimate the channel. The first is the Legacy-Training-Field, and the second are the MIMO-Training-Fields. Either or both fields may be used for motion detection. An example of a MIMO-Training-Field that may be used is the so-called “High-Efficiency Long Training Field” known as HE-PHY (e.g., in the Wi-Fi 6 standard, according to the IEEE 802.11ax standard).
In the example shown in
In some IEEE 802.11 standards, the PHY layer is broken into 2 sub-layers: the PLCP Sublayer (Physical Layer Convergence Procedure), and the PMD Sublayer (PHY Medium Dependant). The PLCP Sublayer (Physical Layer Convergence Procedure) takes data from the MAC layer and translates it into a PHY frame format. The format of the PHY frame is also referred to as a PPDU (PLCP Protocol Data Unit). A PPDU may include fields that are used for channel estimation. The PMD Sublayer (PHY Medium Dependant) provides a modulation scheme for the PHY layer. There are many different IEEE 802.11 based PHY frame formats defined. In some examples, a wireless motion detection system uses information derived from OFDM based PHY frames, such as, for example, those described in the following standard documents: IEEE 802.11a-1999: Legacy OFDM PHY; IEEE 802.11n-2009: HT PHY (High-Throughput); IEEE 802.11ac-2013: VHT PHY (Very-High-Throughput); IEEE 802.11ax (Draft 4.0, March 2019): HE PHY (High-Efficiency).
Other types of PHY layer data may be used, and each PHY layer specification may provide its own PPDU format. For instance, the PPDU format for a PHY layer specification may be found in some IEEE 802.11 standards under the section heading “<XXX> PHY Specification”==>“<XXX> PHY”==>“<XXX> PPDU Format”. The example PHY frame 300 shown in
In some IEEE 802.11 standards (e.g., IEEE 802.11a-1999), the OFDM PHY divides a 20 MHz channel into 64 frequency bins. Modulation and Demodulation is done using 64-point complex inverse Fast Fourier Transform (IFFT) and Fast Fourier Transform (FFT). In an example modulation process: data bits grouped (e.g., depending on QAM constellation), each group of bits is assigned to one of the subcarriers (or frequency bins); depending on QAM constellation, group of bits mapped to a complex number for each subcarrier; and a 64-point IFFT is performed to generate complex-time-domain I and Q waveforms for transmission. In an example demodulation process: complex I and Q time domain signals are received; a 64-point FFT is performed to compute complex number for each subcarrier; depending on QAM constellation, each subcarrier complex number is mapped to bits; and bits from each subcarrier are re-assembled into data. In a typical modulation or demodulation process, not all 64 subcarriers are used; for example, only 52 of the subcarriers may be considered valid for data and pilot, and the rest of the subcarriers may be considered NULLED. The PHY layer specifications in more recently-developed IEEE 802.11 standards utilize larger channel bandwidths (e.g., 40 MHz, 80 MHz, and 160 MHz).
As shown in
In some implementations, a wireless communication device computes a channel response, for example, by performing a channel estimation process based on a PHY frame. For instance, a wireless communication device may perform channel estimation based on the example PHY frame 300 shown in
In some instances, the channel information used for motion detection may include a channel response generated by channel estimation based on the L-LTF in the PHY frame. The L-LTF in the 802-11ax standard can be equivalent to the LTF in the IEEE 802.11a-1999 standard. The L-LTF may be provided in the frequency domain as an input to a 64-point IFFT. Typically, only 52 of the 64 points are considered valid points for channel estimation; and the remaining points (points [−32, −26) and (26, 31]) are zero. As described in the IEEE 802.11a-1999 standard, the L-LTF may be a long OFDM training symbol including 53 subcarriers (including a zero value at DC), which are modulated by the elements of a sequence L given by the following:
The example “L” vector shown above represents the complex frequency-domain representation of the field at baseband (centered around DC) and is described in page 13 of a draft of the IEEE 802.11a-1999 standard. The draft of the IEEE 802.11a-1999 standard is published in a document entitled “802.11a-1999—IEEE Standard for Telecommunications and Information Exchange Between Systems—LAN/MAN Specific Requirements—Part 11: Wireless Medium Access Control (MAC) and physical layer (PHY) specifications: High Speed Physical Layer in the 5 GHz band” and accessible at https://ieeexplore.ieee.org/document/815305. The example “L” vector is considered “Legacy”, as it was part of the original OFDM PHY specification, and is considered part of the legacy preamble. Hence in later specification versions, it is referred to as the L-LTF (for Legacy-Long Training Field).
In some instances, the channel information used for motion detection may include a channel response generated by channel estimation based on one or more of the MIMO training fields in the PHY frame (e.g., the HE-LTF, HT-LTF, or VHT-LTF fields). The HE-LTF may be provided in the frequency domain as an input to a 256-point IFFT. With a typical HE-LTF, there are 241 valid points (e.g., instead of 52 as in the legacy case). Each point in the HE-LTF represents a frequency range of 78.125 kHz, whereas each Legacy point represents a larger frequency range of 312.5 kHz. Therefore, the HE-LTF may provide higher frequency resolution, more frequency domain data points, and a larger frequency bandwidth, which can provide more accurate and higher-resolution (e.g., higher temporal and spatial resolution) motion detection. An example HE-LTF is described on page 561 of the draft of the IEEE 802.11ax standard as follows:
In a 20 MHz transmission, the 4× HE-LTF sequence transmitted on subcarriers [−122, 122] is given by Equation (27-42).
In some instances, a channel response can be estimated on a receiver device by performing an FFT of the received time-domain sequence (e.g., the example L-LTF and HE-LTF sequences shown above), and dividing by the expected result [CH(N)=RX(N)/L(N)]. The 64-Point FFT Bin 600 in the top portion of
In some aspects of what is described here, messages initiated by protocols in higher layers (e.g., layers above Layers 1 and 2 of the OSI model) may be used to elicit MIMO transmissions from wireless communication devices. The MIMO wireless signal can be used for motion detection or another type of wireless sensing application. In some implementations, the MIMO wireless signal includes a MIMO training field that can be used for motion detection. In some aspects, the HT-LTF, VHT-LTF or HE-LTF field in a PHY frame of a wireless transmission according to an IEEE Wi-Fi standard may be used for motion detection. Such wireless signals may be transmitted through a space over a time period, for example, from one wireless communication device to another. A MIMO training field (e.g., the HT-LTF, VHT-LTF or HE-LTF field) may be identified in the PHY frame of each wireless signal, and channel information may be generated based on the respective MIMO training fields. The channel information may then be used for wireless sensing (e.g., to detect motion of an object, to detect breathing, to detect gestures, etc.) of the space during the time period.
As shown in
In the example OSI model 700 shown in
In the example OSI model 700 shown in
In the example OSI model 700 shown in
In some systems, a motion detection algorithm employed by a wireless motion detection system uses channel responses computed from orthogonal frequency-division multiplexing (OFDM)-based PHY frames (including those defined by IEEE 802.11 standards for Wi-Fi networks). For OFDM modulation, Wi-Fi signals contain multiple fields that can be used to compute a channel estimation or response. First, there is the Legacy-LTF (Long Training Field), which is generally present on every Wi-Fi message. Second, there are the MIMO LTF's (HT-LTF, VHT-LTF, HE-LTF). For devices which support HE/VHT/HE modes, the MIMO fields are typically present for longer transmissions, and they consume airtime and can decrease the efficiency for short transmissions.
In some instances, for the motion detection system to measure the channel response, a client/leaf device needs to transmit a wireless message (e.g., a message addressed to an access point or another device in the Wi-Fi network). The IEEE 802.11 MAC layer standard contains a defined mechanism that states: if a device receives a data message, the device acknowledges that it was received correctly. This mechanism may provide a form of “sounding”/“illumination”, as it allows for a 0 payload length MAC frame (a Null Data Frame) to be sent to any Wi-Fi enabled device, knowing that it will return with an ACK message. In some systems, a limitation of the Null-Data/ACK mechanism is that the standard defines that the ACK must be transmitted using “legacy” mode, as switching to the MIMO mode for a short transmission is not efficient. In such systems, the wireless messages sent according to IEEE 802.11 standards do not provide a MIMO estimation unless the client/leaf device generates a large enough transmission to cause the radio to make use of the MIMO transmission mode.
Although some systems can use the Legacy training fields for motion detection, other systems may not support capturing the Legacy estimation due to hardware or other constraints, and hence only provide the ability to extract the MIMO estimations. Therefore, some systems are limited, in the sense that a higher layer in the OSI model may be required to elicit a MIMO channel estimation, for example, when there is no standardized mechanism in the MAC/PHY layers and the client/leaf does not necessarily support non-standard components. In some instances, utilizing a higher layer in the OSI model may reduce efficiency, for example, if larger data transmission overhead is required to generate a channel estimation.
A motion detection algorithm may also benefit from a MIMO estimation (e.g., relative to a Legacy estimation), as multiple antenna on both transmit and receive side introduce an element of spatial diversity, each illuminating or sensing a slightly different view or perspective of the environment due to the antenna's physical separation. To obtain these and other benefits offered by having a MIMO estimation, a mechanism using standard components within higher layers in the OSI model may be utilized to elicit a MIMO channel estimation in some cases.
In some aspects, the systems and techniques described here provide solutions for using a higher layer in the OSI model to elicit a MIMO channel estimation, for example, using components in the MAC/PHY layer specifications to elicit a client/leaf node to generate a message containing a MIMO training field. The solutions may exploit the fact that the higher layers encapsulate their messages into the payload of MAC/PHY “Data-Frames”, which can be transmitted containing the MIMO fields. Hence by eliciting a client/leaf node using existing standard components or protocols within the Network/Transport layers, a MIMO training field can be obtained from that device.
In some cases, a wireless communication device can use one or more layers above the MAC layer (e.g., transport layer, network layer, or another layer above the data link layer) to elicit a MIMO transmission from another wireless communication device. For example, an access point (AP) in a wireless network (e.g., a mesh node or another type of AP) may generate and send a network layer message or a transport layer message that causes a client device to send a response using MIMO transmission. The following discussion and the processes shown in
In some examples, software-implemented processes can utilize components (in some cases, existing components) in layers above the MAC layer to cause a client/leaf device transmit data. Such process may be used to enable motion detection functionality using the MIMO fields without the need to add or modify or add any software on the client/leaf device.
In some implementations, an address discovery process is used to obtain an address for communication with layers above the MAC layer. For example, channel estimation may be defined at the MAC/PHY layers, and the identification of a client/leaf device may be given by its MAC address (e.g., a 48-bit MAC address). In some instances, for higher layer transmission to a device, knowledge of the device's upper layer logical address (e.g., IP address) may be needed, and an address discovery process can be used to obtain the device's upper layer logical address (e.g., IP address) from its lower layer physical address (e.g., MAC address). At least in some contexts, the operation of obtaining the device's upper layer logical address (e.g., IP address) from its lower layer physical address (e.g., MAC address) requires a different (often more difficult) process than common procedures that obtain the lower layer physical address (e.g., MAC address) given an upper layer logical address (e.g., IP address).
In some instances, the upper layer logical address that is obtained from process 900 may be encapsulated in a payload field of a lower layer message. For example, in implementations where the process 900 is used to obtain a network address, the network address may be encapsulated in the payload field of a MAC layer message (e.g., as seen in
At 902, the cache is queried to determine if it contains an IPv4 neighbor table. In some implementations, the IPv4 neighbor table may also be referred to as the IPv4 Address Resolution Protocol (ARP) table. At 904, the process 900 determines whether the IPv4 neighbor table is stored in the cache. At 906, in response to a determination that the IPv4 neighbor table is stored in the cache, the network address (e.g., the IPv4 address) is obtained from the cache and the internet protocol (IP) variables for the IPv4 address are setup and initialized. As an example, the fields for the network layer packet shown in
At 908, in response to a determination that the IPv4 neighbor table is not stored in the cache, the cache is once again queried to determine if it contains an IPv6 neighbor table. At 910, the process 900 determines whether the IPv6 neighbor table is stored in the cache. At 912, in response to a determination that the IPv6 neighbor table is stored in the cache, the network address (e.g., the IPv6 address) is obtained from the cache and the IP variables for the IPv6 address are setup and initialized.
At 914, in response to a determination that the IPv6 neighbor table is not stored in the cache, the network is scanned. As an example, at 914, the process 900 iterates through the IPv4 and IPv6 link-local addresses to determine if one or more of the IPv4 and IPv6 link-local addresses elicits a response. At 916, the process 900 determines whether an error has occurred. In some instances, an error occurs when the scanning performed at 914 does not elicit any response. At 918, in response to a determination that an error has occurred, a delay for a predetermined time (e.g., in a range from about 5 seconds to about 15 seconds) occurs before the process 900 is iterated from 902. In the example shown in
One example technique that can be used to elicit a MIMO transmission from a wireless communication device is commonly referred to as an “ICMP Ping”. In some cases, an ICMP Ping process is defined in the network layer, and off-the-shelf applications exist to generate such messages (e.g., ping, ping6, fping). The ICMP Ping process may be explicitly defined to provide a response given a request, and may be used for network connectivity troubleshooting or other purposes. The ICMP Ping process may be natively built into the network stack, and may provide a mechanism for causing a client/leaf device produce a data transmission in certain instances. The ICMP Ping may utilize an IPv4, IPv6, or another similar network layer protocol. However, some devices (for security, privacy, or other reasons) disable ICMP. With ICMP disabled, a device which has received a ping message may not generate a response, and hence may not elicit a wireless transmission that can produce a channel response measurement. In some cases, existing ICMP Ping and related processes can be modified to provide advantages for wireless motion detection systems. For example, the ICMP Ping processes shown in
Another example technique that can be used to elicit a MIMO transmission from a wireless communication device is referred to here as “ARP Ping”, which in some implementations may utilize aspects of the standardized ARP Exchange mechanism. Address Resolution Protocol (ARP) is a protocol typically defined in the network layer; off-the-shelf applications for generating repeated standardized ARP Exchanges exist (e.g., arping). In many network contexts, communication is not possible without ARP, and APR is considered mandatory for every device. For example, ARP may be required for all IP networked devices. Devices may use ARP to obtain the data-link layer address of another device (which may be required for communication). The standardized ARP Exchange process is typically used to find the MAC address of the device that holds a given network layer (IP) address. In some systems, there are four addresses utilized: (1) the sender Network-Layer address, (2) the sender MAC-Layer address, (3) the target Network-Layer address, (4) the target MAC-Layer address. Both sender addresses (1 and 2) are known to the requester because they are the local addresses of the device making the request. The standardized ARP Exchange may be used when the target Network-Layer address (3) is known, but the target MAC-Layer address (4) is not known. The standardized ARP Exchange sends a broadcast MAC frame (Destination MAC Address=ff:ff:ff:ff:ff:ff), which means every device on the network receives the message. However, only the device that holds the given Target network layer (IP) Address can respond, and from that response, the Source MAC Address can be extracted. This exchange can create a request/response that is encapsulated into a MAC/PHY MIMO data transmission from the responding device in some instances. However, in other instances the standardized ARP Exchange does not elicit a MIMO transmission from the responding device. For example, some modern wireless communication devices may respond to the standardized ARP Exchange request using a legacy MAC/PHY data transmission, or can be cached and not actually transmitted.
As noted, a standardized ARP request is a broadcast layer-2 transmission (identified with the destination MAC address field set to ff:ff:ff:ff:ff:ff), which generally requires all devices belonging to the same logical network to receive the message. This means all layer-2 network devices (such as switches, bridges, wireless access points) are required to transmit the ARP request to all clients and can result in flooding the entire network with the single request. For the purpose of eliciting a single device to transmit a response for the purpose of motion sensing, flooding an entire network is not desirable and may introduce negative effects (e.g., power consumption, air-efficiency, or wired network resources). These negative effects may impact the network globally, whether or not specific clients are participating in the motion detection system. In some cases, the ARP Ping processes described here can be implemented in a manner that is more efficient and avoids the negative effects mentioned above. For example, the ARP Ping process shown in
Another example technique that can be used to elicit a MIMO transmission from a wireless communication device is referred to here as “TCP Ping”, which in some implementations may utilize aspects of the standardized TCP Handshake mechanism. In some cases, a TCP Ping can be used for sounding wireless communication devices to obtain wireless signals that can be used by a motion detection system. The TCP Ping process can be used to elicit MIMO transmissions from client/leaf devices in a variety of contexts, including scenarios where the client/leaf device is configured to not respond to ICMP requests (e.g., devices that do not have ICMP enabled), and scenarios where ARP responses from the client/leaf device result in a Legacy Wi-Fi transmission or a cached response. The Transmission Control Protocol (TCP) is typically defined in the transport layer; TCP generally operates as a connection-oriented protocol, meaning that data exchanges generally occur in both directions, which can be leveraged for eliciting MIMO transmissions from a device. Example TCP Ping processes are shown in
In some contexts, a typical execution of the standardized TCP Handshake starts by a client “requesting” to start a connection with a host. To start this transaction, the client populates the SRC and DST port fields, and sets the SYN flag. A host can do one of three actions: (1) It can accept the request, by responding with the ACK flag set; (2) It can reject the request, by responding with the RST flag set; or (3) It can do nothing and just drop the frame. The response from action (1) is received if there is an application listening to the given port on the host, and the connection has been accepted. The response from action (2) is typically received if either there is no application on the host listening to the given port, or potentially the port is blocked. And action (3) generally occurs if there is a firewall which has explicit instructions to drop any transmissions received by the specific host/port. Technically, a result of either action (1) or action (2) may create the ping request/response action that can produce a MIMO transmission. However, in some instances, action (1) is less desirable response because an additional message exchange is then required by the client to properly close the connection (and hence consume more air-time and reduce efficiency).
In some implementations, the TCP Ping process shown in
Implementations of the example process 1000 shown in
The example process 1000 shown in
At 1002, a network layer address of a device is determined. For example, the process 900 shown in
At 1010, 1012 and 1014, an ICMP Ping process is performed. As shown in
At 1020, 1022 and 1024, a TCP Ping process is performed. As shown in
At 1030, 1032 and 1034, an ARP Ping process is performed. As shown in
The example processes 1100, 1110, 1120 shown in
The example process 1100 in
In response to a determination that the timer has not been successfully setup, the ICMP Ping mechanism may be terminated (e.g., by performing the process 1110 shown in
In response to a determination that the socket has not been opened successfully, the ICMP Ping mechanism may be terminated (e.g., by performing the process 1110 shown in
At 1107, a sequence counter is initialized to zero. The sequence counter tracks the number of ICMP ping messages that are sent, and each ICMP ping message is matched to a respective sequence number (e.g., described in the example of
The example process 1110 in
The example process 1120 in
At 1121, an ICMP ping message is updated. In some instances, an ICMP ping message may be referred to as an echo request frame, and updating the ICMP ping message may include updating fields (e.g., the checksum field) of the ICMP ping message. At 1123, a timer tick is awaited. The timer tick allows for a predetermined period of time (e.g., about 100 milliseconds) to elapse so that a wireless signal (e.g., a MIMO transmission) can be received in response to a previously transmitted ICMP ping message. In some instances, the predetermined period of time may be equal to the period at which the space 200, 201 is sampled for motion. After the timer tick occurs, at 1125, the timestamp of the ICMP ping message that was updated at 1121 is determined. In some instances, the timestamp of the ICMP ping message is matched to the current sequence number. At 1127, the ICMP ping message that was updated at 1121 is sent. In some implementations, the ICMP ping message may be referred to as an ICMP echo request.
At 1129, a determination is made as to whether the predetermined number of consecutive ICMP ping messages (e.g., “BLOCKSIZE”) has been sent. In response to a determination that the predetermined number of consecutive ICMP ping messages has not been sent, the sequence counter is incremented (at 1131) and process 1120 is iterated from 1121. In response to a determination that the predetermined number of consecutive ICMP ping messages has been sent, a feedback or check mechanism is executed.
In the example process 1120, the feedback or check mechanism (e.g., including operations 1133, 1135, 1137, 1139) is executed after the block of ICMP ping messages has been sent. At 1133, the timestamps of the received responses are processed to determine a difference between the time a respective ICMP ping message was transmitted (e.g., obtained from the timestamp associated with the ICMP ping message) and the time its corresponding response was received. If the time difference associated with any ICMP ping message within the block of ICMP ping messages is greater than a threshold, then the entire block of ICMP ping messages is deemed to be a failed block. This failure logic may be implemented inside operation 1133 that processes timestamps of received responses.
At 1135, a determination is made as to whether the number of consecutive failed blocks is greater than a threshold number of failures. In the example shown in
In response to a determination that the number of consecutive failed blocks is not greater than the threshold number of failures, a secondary feedback check is performed. The secondary feedback check is referred to in
At 1137, a determination is made as to whether CSI rate feedback is enabled, and if so, a determination is made (at 1139) as to whether the average CSI rate is greater than or equal to twice the period at which the space 200, 201 is sampled for motion. A determination that the average CSI rate is greater than or equal to twice the period at which the space 200, 201 is sampled may indicate that MIMO transmissions (including CSI) are not being received at a rate that is fast enough to accurately or reliably detect motion in the space 200, 201. Consequently, in response to a determination that the average CSI rate is greater than or equal to twice the period at which the space 200, 201 is sampled, the ICMP Ping mechanism may be terminated in favor of attempting another type of mechanism. Conversely, if CSI rate feedback is not enabled or if the average CSI rate is less than twice the period at which the space 200, 201, the sequence counter is incremented (at 1131) and process 1120 is iterated from 1121.
The example processes 1200, 1210 shown in
The example processes 1200 determines the number of valid TCP ports in the network, obtains a valid local interface IP address, and initializes computing resources and message fields that are needed for the TCP ping process 1210. The example process 1200 includes scanning the network for TCP ports (at 1201). In some implementations, the network is scanned for TCP ports by sending a TCP packet with a set synchronize (SYN) flag to each port identifier. For example,
In response to a determination that there is less than or equal to one valid TCP port, the TCP ping setup is terminated (e.g., in favor of attempting another type of mechanism). Conversely, in response to a determination that there is more than one valid TCP port, a determination is made (at 1205) as to whether a timer has been set up successfully. In some implementations, an OS-level call similar to the OS-level call described for operation 1101 may be used to determine whether the timer has been set up successfully.
In response to a determination that the timer has not been set up successfully, the TCP ping setup is terminated (e.g., in favor of attempting another type of mechanism). Conversely, in response to a determination that the timer has been set up successfully, a determination is made (at 1207) as to whether a socket has been opened successfully. An OS-level call similar to the OS-level call described for operation 1103 may be used to determine whether the socket has been set up successfully.
In response to a determination that the socket has not been opened successfully, the TCP ping setup is terminated (e.g., in favor of attempting another type of mechanism). However, in response to a determination that the socket has been opened successfully, a local interface IP address is requested (at 1209). In some implementations, requesting a local interface IP address includes initiating an OS-level call requesting a local interface IP address from the OS. At 1211, a determination is made as to whether a valid local interface IP address has been obtained. A valid local interface IP address is obtained when there are sufficient computing resources available for the OS to provide the local interface IP address. In some instances, there may not be computing resources to provide a local interface IP address, and the OS may return an error message indicating this. Therefore, a valid local interface IP address is not obtained when there are insufficient computing resources available to provide the local interface IP address.
In response to a determination that a valid local interface IP address is not obtained, the TCP ping setup is terminated (e.g., in favor of attempting another type of mechanism). Conversely, in response to a determination that a valid local interface IP address has been obtained, variables of a TCP ping message are set up (at 1213). For example, the various fields of the example TCP packet shown in
At 1215, TCP fields and the contents of the datagram are initialized. For example, the various fields of the TCP packet shown in
At 1219, CSI rate feedback is initialized. In some implementations, the device from which MIMO transmissions are elicited can provide CSI to the device transmitting the ICMP ping messages. By initializing CSI rate feedback at 1219, CSI can be obtained from the MIMO transmissions that are elicited by the TCP ping messages, and the rate at which the CSI is being received can be determined to ascertain whether CSI is being received at a rate that is fast enough to accurately or reliably detect motion in the space 200, 201.
The example process 1210 in
At 1221, the select function is executed. The select function waits for an event included in the file descriptors to occur. In some implementations, the file descriptors can include the reception of a TCP packet having a set RST flag, expiration of the timer, or both. In essence, at 1221, a period of time is allowed to elapse so that a wireless signal (e.g., a MIMO transmission) can be received in response to a previously transmitted TCP ping message.
After the alert has been generated by the OS, a determination is made (at 1223) as to whether the timer has expired. The determination at 1223 ascertains whether the alert at 1221 can be attributed to the expiration of the timer. In response to a determination that the timer has not expired, a determination is made (at 1225) as to whether a TCP packet having a set RST flag was received. The determination at 1225 ascertains whether the alert at 1221 can be attributed to the reception of a TCP packet having a set RST flag. In response to a determination that a TCP packet having a set RST flag was not received, process 1210 is iterated starting at 1221. Conversely, in response to a determination that a TCP packet having a set RST flag was received, the timestamp of the received datagram is obtained and the timestamp is used to indicate the time at which the datagram is received (at 1227). The process 1210 is subsequently iterated starting at 1221.
Conversely, in response to a determination that the timer has expired, the datagram is updated (at 1229). In some instances, the port identifiers (e.g., 16-bit port identifiers) for a valid source port (indicated in
At 1231, the timestamp of the datagram that was updated at 1229 is determined. In some instances, the timestamp of the datagram is matched to the current sequence number. At 1233, the datagram that was updated at 1229 is sent (e.g., from the valid source port to the valid destination port). In some implementations, the datagram is sent as a TCP packet having a set SYN flag.
At 1235, a determination is made as to whether the predetermined number of consecutive datagrams (e.g., “BLOCKSIZE”) has been sent. In response to a determination that the predetermined number of consecutive datagrams has not been sent, the sequence counter is incremented, a valid source port is pseudo-randomly chosen, and the next valid destination port is selected (at 1237), and process 1210 is iterated from 1221. In response to a determination that the predetermined number of consecutive datagrams has been sent, a feedback or check mechanism is executed.
In the example process 1210, the feedback or check mechanism (e.g., including operations 1239, 1241, 1243, 1245) is executed after the block of datagrams has been sent. At 1239, the timestamps of the received responses are processed to determine a difference between the time a respective datagram was transmitted (e.g., obtained from the timestamp associated with the datagram) and the time its corresponding response was received. If the time difference associated with any datagram within the block of datagrams is greater than a threshold, then the entire block of datagrams is deemed to be a failed block. This failure logic may be implemented inside operation 1239 that processes timestamps of received responses.
At 1241, a determination is made as to whether the number of consecutive failed blocks is greater than a threshold number of failures. In the example shown in
In response to a determination that the number of consecutive failed blocks is not greater than the threshold number of failures, a secondary feedback check is performed. The secondary feedback check is referred to in
At 1243, a determination is made as to whether CSI rate feedback is enabled, and if so, a determination is made (at 1245) as to whether the average CSI rate is greater than or equal to twice the period at which the space 200, 201 is sampled for motion. A determination that the average CSI rate is greater than or equal to twice the period at which the space 200, 201 is sampled may indicate that MIMO transmissions (including CSI) are not being received at a rate that is fast enough to accurately or reliably detect motion in the space 200, 201. Consequently, in response to a determination that the average CSI rate is greater than or equal to twice the period at which the space 200, 201 is sampled, the TCP Ping mechanism may be terminated in favor of attempting another type of mechanism. Conversely, if CSI rate feedback is not enabled or if the average CSI rate is less than twice the period at which the space 200, 201, the sequence counter is incremented, a valid source port is pseudo-randomly chosen, and the next valid destination port is selected (at 1237), and process 1210 is iterated from 1221.
The example process 1300 shown in
The example process 1300 is used when the IPv4 protocol operates at the network layer, and at 1301, a determination is made as to whether the IPv4 protocol is used. The cache that is queried at 902 in
Conversely, in response to a determination that the IPv4 protocol is used, a determination is made (at 1303) as to whether a timer has been set up successfully. In some implementations, an OS-level call similar to the OS-level call described for operation 1101 may be used to determine whether the timer has been set up successfully.
In response to a determination that the timer has not been set up successfully, the ARP ping setup is terminated (e.g., in favor of attempting another type of mechanism). Conversely, in response to a determination that the timer has been set up successfully, a determination is made (at 1305) as to whether a socket has been opened successfully. An OS-level call similar to the OS-level call described for operation 1103 may be used to determine whether the socket has been set up successfully.
In response to a determination that the socket has not been opened successfully, the ARP ping setup is terminated (e.g., in favor of attempting another type of mechanism). However, in response to a determination that the socket has been opened successfully, a local interface IP address and a MAC address are requested (at 1307). In some implementations, requesting a local interface IP address and a MAC address includes initiating an OS-level call requesting a local interface IP address and a MAC address from the OS. At 1309, a determination is made as to whether a valid local interface IP address has been obtained. A valid local interface IP address is obtained when there are sufficient computing resources available for the OS to provide the local interface IP address. In some instances, there may not be computing resources to provide a local interface IP address, and the OS may return an error message indicating this. Therefore, a valid local interface IP address is not obtained when there are insufficient computing resources available to provide the local interface IP address.
In response to a determination that a valid local interface IP address is not obtained, the ARP ping setup is terminated (e.g., in favor of attempting another type of mechanism). Conversely, in response to a determination that a valid local interface IP address has been obtained, the process 1300 proceeds to initialize a raw ARP request frame (e.g., at 1311). At 1311, fields that are required for the ARP ping messages are initialized and placed in the payload of the IPv4 frame.
At 1313, CSI rate feedback is initialized. In some implementations, the device from which MIMO transmissions are elicited can provide CSI to the device transmitting the ARP ping messages. By initializing CSI rate feedback at 1313, CSI can be obtained from the MIMO transmissions that are elicited by the ARP ping messages, and the rate at which the CSI is being received can be determined to ascertain whether CSI is being received at a rate that is fast enough to accurately or reliably detect motion in the space 200, 201.
The process 1400 may be performed by a wireless communication device that seeks to elicit MIMO transmissions from another wireless communication device. At 1402, network or transport layer messages are generated. Network layer messages may be generated when an ICMP ping process (e.g., described in
At 1404 the network or transport layer messages are wirelessly transmitted to the device from which MIMO transmissions are sought. The network layer messages may be wirelessly transmitted according to the ICMP Ping process (e.g., described in
In some examples, the device that transmits the network or transport layer messages may detect a failure of the network or transport layer messages to elicit successful MIMO transmissions from the device to which the network or transport layer messages are addressed. For example, the failure of the network or transport layer messages to elicit successful MIMO transmissions may manifest itself as the number of consecutive failed blocks being greater than a threshold number of failures (e.g., at 1135 in
At 1406, MIMO transmissions are received from the device to which the network or transport layer messages are addressed. The MIMO transmissions can include MIMO training fields. The MIMO training fields contain signals (e.g., CSI) having a higher frequency resolution, a greater number of subcarrier frequencies, and a higher frequency bandwidth compared to Legacy training fields in the PHY frame. Use of the MIMO training field for motion detection provides more accurate motion detection capabilities. Therefore, at 1408, a training field is identified in each MIMO transmission, and channel information is generated based on the training field (at 1410). At 1412, the channel information is used to detect motion that occurred in a space (e.g., the space 200, 201).
The example interface 1530 can communicate (receive, transmit, or both) wireless signals. For example, the interface 1530 may be configured to communicate radio frequency (RF) signals formatted according to a wireless communication standard (e.g., Wi-Fi, 4G, 5G, Bluetooth, etc.). In some implementations, the example interface 1530 includes a radio subsystem and a baseband subsystem. The radio subsystem may include, for example, one or more antennas and radio frequency circuitry. The radio subsystem can be configured to communicate radio frequency wireless signals on the wireless communication channels. As an example, the radio subsystem may include a radio chip, an RF front end, and one or more antennas. The baseband subsystem may include, for example, digital electronics configured to process digital baseband data. In some cases, the baseband subsystem may include a digital signal processor (DSP) device or another type of processor device. In some cases, the baseband system includes digital processing logic to operate the radio subsystem, to communicate wireless network traffic through the radio subsystem or to perform other types of processes.
The example processor 1510 can execute instructions, for example, to generate output data based on data inputs. The instructions can include programs, codes, scripts, modules, or other types of data stored in memory 1520. Additionally or alternatively, the instructions can be encoded as pre-programmed or re-programmable logic circuits, logic gates, or other types of hardware or firmware components or modules. The processor 1510 may be or include a general-purpose microprocessor, as a specialized co-processor or another type of data processing apparatus. In some cases, the processor 1510 performs high level operation of the wireless communication device 1500. For example, the processor 1510 may be configured to execute or interpret software, scripts, programs, functions, executables, or other instructions stored in the memory 1520. In some implementations, the processor 1510 be included in the interface 1530 or another component of the wireless communication device 1500.
The example memory 1520 may include computer-readable storage media, for example, a volatile memory device, a non-volatile memory device, or both. The memory 1520 may include one or more read-only memory devices, random-access memory devices, buffer memory devices, or a combination of these and other types of memory devices. In some instances, one or more components of the memory can be integrated or otherwise associated with another component of the wireless communication device 1500. The memory 1520 may store instructions that are executable by the processor 1510. For example, the instructions may include instructions to perform one or more of the operations described above.
The example power unit 1540 provides power to the other components of the wireless communication device 1500. For example, the other components may operate based on electrical power provided by the power unit 1540 through a voltage bus or other connection. In some implementations, the power unit 1540 includes a battery or a battery system, for example, a rechargeable battery. In some implementations, the power unit 1540 includes an adapter (e.g., an AC adapter) that receives an external power signal (from an external source) and coverts the external power signal to an internal power signal conditioned for a component of the wireless communication device 1500. The power unit 1540 may include other components or operate in another manner.
Wireless signals may be communicated (e.g., transmitted and received) among the respective wireless communication devices shown in the example wireless communication systems of
In some instances, the example wireless communication systems of
As described above in the example shown in
In the association process 1600, the client device 1602 and the AP device 1604 are co-located in a space 1606, and after the association process 1600, the devices 1602, 1604 can be nodes in a Wi-Fi network. In some instances, the client device 1602, the AP device 1604, or both can carry out a search within their respective ranges (e.g., about 10 meters) to find other wireless communication devices that have registered themselves as being visible or discoverable to other wireless communication devices. In some instances (e.g., in one or more of the IEEE 802.11 family of standards), the AP device 1604 periodically transmits a beacon signal, which can be used by the client device 1602 to discover the AP device 1604. Each beacon signal can be a broadcast message (e.g., for associated and non-associated client devices). The rate at which the beacon signals are transmitted can be programmable by a network operator, and in some instances, a beacon signal is transmitted about every 100 ms (e.g., about every 102.4 ms). Each beacon signal transmitted by the AP device 1604 can contain information about the wireless network. For example, each beacon signal can be used by the AP device 1604 to announce or broadcast the presence of the wireless network, identify the wireless network and its supported capabilities, synchronize the times on all associated client devices, and broadcast a traffic indication map (TIM) element (e.g., discussed in further detail below). Each beacon signal can used by the AP device 1604 for other purposes, in some implementations.
In some implementations, once the client device 1602 has discovered the AP device 1604, the client device 1602 can transmit an association request message 1608 to the AP device 1604. In some implementations, the association request message 1608 includes multiple fields 1610 related to the capabilities of the client device 1602. With regards to the built-in power saving feature in a Wi-Fi network, the multiple fields 1610 of the association request message 1608 includes a Listen Interval field 1612, which the client device 1602 can use to indicate, to the AP device 1604, the maximum amount of time the client device 1602 may be in sleep mode before retrieving, for example, any buffered data (e.g., unicast, broadcast, or multicast data) from the AP device 1604. In some implementations, the value in the Listen Interval field 1612 can be an integer value expressed in 2 octets (e.g., 16 bits). The integer value can indicate the maximum number of beacon signals (and hence the maximum amount of time) that the client device 1602 can be in sleep mode. As an example, a value of 20 in the Listen Interval field 1612 indicates to the AP device 1604 that the client device 1602 can be in sleep mode for as many as 20 beacon signals before requesting buffered unicast data to be communicated from the AP device 1604 to the client device 1602. As another example, a value of 0 in the Listen Interval field 1612 can indicate to the AP device 1604 that the client device 1602 will not enter sleep mode and is available to receive all beacon signals transmitted by the AP device 1604.
After receiving the association request message 1608, the AP device 1604 can determine whether the client device 1602 is permitted to associate with the AP device 1604. In some instances, the AP device 1604 transmits an association response message 1614 to the client device 1602 in response to receiving the association request message 1608. In instances where the client device 1602 is permitted to associate with the AP device 1604, the association response message 1614 includes an association identifier (AID) field, which is used by the AP device 1604 to assign a unique identifier to the now associated client device 1602. The value in the AID field of the association response message 1614 is unique for each associated client device and can be an integer value in the range of 1 to 2007 (both 1 and 2007 being included in the range). With regards to the built-in power saving feature in a Wi-Fi network, the value in the AID field of the association response message 1614 can be used as an index into the TIM element of a beacon signal that is transmitted from the AP device 1604 to the client device 1602 after the client device 1602 is associated with the AP device 1604.
As discussed above, each beacon signal can include a TIM element.
The example TIM element 1700 includes multiple fields 1702, 1704, 1706, 1708, 1710, 1712. The TIM element 1700 includes an element identification (ID) field 1702. For a TIM element, the element ID field 1702 is equal to 5. The length field 1704 indicates the number of bytes in the TIM element 1700. In some implementations, the DTIM count field 1706 is a countdown counter value that indicates the count until a DTIM beacon signal is scheduled to be sent. The DTIM count field 1706 is decremented with each successive beacon signal transmitted by the AP device 1604. If the DTIM count field 1706 is zero, the beacon signal is a DTIM beacon signal, and broadcast or multicast data may be scheduled to be transmitted by the AP device 1604 following (e.g., immediately following) the DTIM beacon signal. The DTIM period field 1708 indicates the quantity of beacon signals to be transmitted by the AP device 1604 for each DTIM interval of time. In some instances, the partial virtual bitmap field 1712 is a variable length bit mask array (having a maximum of 251 bytes) indicating the presence of buffered data available from the AP device 1604. For example, if the AP device 1604 has buffered data for the client device 1602, the AP device 1604 may indicate the presence of the buffered data by setting to 1 the bit within the bit mask corresponding to the client device 1602. In some implementations, this bit within the bit mask may be described as a TIM value. To reduce the size of the partial virtual bitmap field 1712, a bitmap control field 1710 can used to indicate which portion of the full traffic indication map (251 bytes) is sent via the partial virtual bitmap field 1712. In some instances, the bitmap control field 1710 can provide an indication of whether broadcast or multicast data is available for the client device 1602.
In instances where the AP device 1604 transmit a DTIM beacon signal, the AP device 1604 can transmit the broadcast or multicast data after (e.g., immediately after) transmitting the DTIM beacon signal. Consequently, one difference between a TIM beacon signal (e.g., indicating the presence of buffered unicast data for the respective client devices) and a DTIM beacon signal (e.g., indicating the presence of buffered broadcast or multicast data for the respective client devices) is that the AP device 1604 transmits buffered broadcast or multicast data to the respective client devices after (e.g., immediately after) the DTIM beacon signal. Consequently, a DTIM beacon signal can indicate to the client device 1602 that it needs to remain awake to receive the buffered broadcast or multicast data from the AP device 1604.
Legacy power save is a power save mechanism defined for use in one or more of the IEEE 802.11 family of standards that allows the client device 1602 to inform the AP device 1604 that it expects to enter a sleep mode and may, consequently, be unavailable to receive a given number of subsequent beacon signals from the AP device 1604. As described above, the maximum number of beacon signals that the client device 1602 expects to be asleep through can be indicated by the Listen Interval field 1612 negotiated during association process (e.g., the example process 1600 shown in
The legacy power save mechanism makes use of a power management bit in a frame control field of a MAC header.
In order to begin fetching buffered data from the AP device 1604, the client device 1602 may transmit a power save polling (PS-POLL) message to the AP device 1604.
In some instances, an unscheduled automatic power save delivery (U-APSD) mechanism may be used as an enhancement to the legacy power save mechanism. The U-APSD mechanism introduces the notion of Quality of Service (QoS), allowing an application to group messages into different categories depending on quality. As part of the U-APSD feature, mechanisms may be added to allow the client device 1602 to wake up from sleep mode and request more than one message to be delivered (depending on the QoS indication) by the AP device 1604. Longer time windows may be allocated for higher priority data. In general, the U-APSD mechanism may be similar to the legacy power save mechanism, except that efficiency gains are made by the client device 1602 to retrieve buffered data from the AP device 1604.
As described above, wireless sensing (e.g., wireless motion detection) may be based on a wireless communication device transmitting a set of wireless signals, which can be used to detect changes in the communication channel. In many wireless sending applications, periodic measurements of the communication channel may be required for many sensing applications to detect changes in the communication channel. To enable such periodic measurements, a central coordinator (e.g., residing on an AP device in some implementations) may be used to elicit transmissions (e.g., MIMO transmissions) from wireless communication devices (e.g., client devices that are associated with the AP device). As described above in relation to
The power save functionality present in one or more of the IEEE 802.11 family (e.g., the legacy power save or U-APSD mechanisms) allow for power reduction for all types of wireless communication devices. However, for the purpose leveraging existing off-the-shelf wireless communication devices for wireless sensing without additional software or firmware modifications, the power save functionality poses a challenge since wireless communication devices may suspend or power down wireless communication for an interval of time (typically under control of the device). Referring to
Broadcast or multicast messages from the AP device 1604 can be used to elicit a transmission from the client device 1602. In some instances, use of broadcast or multicast messages for eliciting transmissions from the client device 1602 may be appealing since the client device 1602 may need to wake up to receive DTIM beacon signals, which is a network-controlled parameter. From an elicitation viewpoint it may also be more efficient if a single broadcast or multicast message could be used to generate multiple transmissions for the client device 1602. In addition, the DTIM Period setting (e.g., in field 1708 in
The ARP broadcast protocol may be leveraged to elicit periodic transmissions from the client device 1602 at a rate that would be suitable for wireless sensing applications. However, some intelligent AP devices can implement a caching ARP service which can respond on behalf of a client device without the need for sending a broadcast transmission. For other multicast protocols, not all client devices subscribe to multicast services without explicit user action or the install of extra software. Together, these constraints post a challenge for schemes that make use of a deterministic wakeup to receive the DTIM beacon signal and broadcast or multicast messages. There are services such as multicast Domain Name System (mDNS) or DNS service discovery (DNS-SD), which operate using broadcast or multicast messaging, however their usage is just beginning to become more common among common IoT devices. Therefore, a mechanism may be needed to prevent specific client devices from entering sleep mode.
A decision for a client device to enter power save mode may be made at one or more layers in an OSI model (e.g., shown in
In particular, the processes described above in relation to
As described above, the processes shown in
The programmable elicitation rate can be provided as an input to one or more of the processes shown in
The example control loop 2000 includes a first wireless communication device 2002 and a second wireless communication device 2004. The first wireless communication device 2002 transmits a message 2003 (e.g. a network or transport layer message) that is addressed to the second wireless communication device 2004. The message 2003 may be transmitted in response to one or more of elicitation processes 2006A, 2006B. In some implementations, the elicitation process 2006A may be one or more of the processes described above in relation to
As discussed above, the elicitation process 2006B can be an optional or additional elicitation process. In implementations where the elicitation process 2006B is an additional process, the elicitation process 2006B operates independently from the elicitation process 2006A. In some instances, the elicitation process 2006B generates elicitation messages 2003 at a rate that is suitable for wireless sensing applications and that prevents the first wireless communication device 2002 from entering sleep mode. For example, in instances where the wireless sensing application operates on channel information that is generated every 100 ms, the elicitation process 2006B can generate the message 2003 every 100 ms. One feature of using the elicitation process 2006B is that the messages 2003 generated by the elicitation process 2006B causes the second wireless communication device 2004 to generate respective responses 2005, which can be used to generate channel information, while the responses to messages generated by the elicitation process 2006A are not used to generate channel information, but rather to prevent the device from entering a power savings mode. As discussed above, the elicitation process 2006B can be an optional or additional elicitation process. In implementations where the elicitation process 2006B is optionally left out of the control loop 2000, the elicitation process 2006A can be used to generate messages 2003 that can be used for both preventing the first wireless communication device 2002 from entering sleep mode and generating channel information (e.g., channel state information) that can be used to detect changes in the communication channel.
A transmitter of the first wireless communication device 2002 communicates the message 2003 to the second wireless communication device 2004. In some implementations, the second wireless communication device 2004 is a Wi-Fi client device having a Wi-Fi subsystem 2008 (which includes a radio subsystem and a baseband subsystem). In such implementations, the transmitter of the first wireless communication device 2002 may have IEEE 802.11 compliant features. The second wireless communication device 2004 may further include device higher layer logic circuits 2010. Along with the Wi-Fi subsystem 2008, the device higher layer logic circuits 2010 execute decision logic to determine whether the second wireless communication device 2004 enter sleep mode. The criteria for entering sleep mode may be implementation specific, and in some instances could be based on the rate of data exchange between the Wi-Fi subsystem 2008 and the device higher layer logic circuits 2010. As an example, the second wireless communication device 2004 may not enter sleep mode when there is a high rate of data exchange between the Wi-Fi subsystem 2008 and the device higher layer logic circuits 2010.
In response to receiving the message 2003 (e.g., network or transport layer message), the second wireless communication device 2004 sends a response transmission (e.g., a MIMO transmission) that traverses a space between the first and second wireless communication devices 2002, 2004. The response transmission is received by a receiver of the first wireless communication device 2002. In some instances, the receiver of the first wireless communication device 2002 generates channel information (e.g., channel state information) for each response transmission that is received from the second wireless communication device 2004. As described above, the channel information can be generated based on one or more training fields in each of the response transmissions received from the second wireless communication device 2004.
Since the channel information is generated for each response transmission that is received from the second wireless communication device 2004, the channel information is generated at some rate, which can be measured using rate measurement circuitry 2012. In some instances, the rate measurement circuitry 2012 determines an average number of times channel information is generated over a programmable time interval (indicated in
The rate at which the channel information is generated is compared against an expected rate (e.g., in difference block 2014). In some instances, the expected rate can be the minimum rate at which response transmissions need to be elicited to prevent a wireless communication device from entering a sleep mode. The difference block 2014 performs a subtraction between the measured rate (e.g., output of rate measurement circuitry 2012) and the expected rate, and the difference is provided to a rate selection block 2016 that initially selects and subsequently varies the rate at which elicitation messages 2003 are transmitted from the first wireless communication device 2002 to the second wireless communication device 2004 (e.g., based on the difference provided to the rate selection block 2016 by the difference block 2014).
In some instances, the initial rate at which elicitation messages 2003 are transmitted from the first wireless communication device 2002 to the second wireless communication device 2004 may be based on an initial value 2018. In some implementations, the initial value 2018 may be a system-defined value or a user-defined value. In some instances, the initial value 2018 may be substantially equal to the expected rate (e.g., shown in difference block 2014). If the output produced by the difference block 2014 indicates that channel information is being generated at a rate that is less than the expected rate, the rate selection block increases the rate at which the elicitation messages 2003 are transmitted from the first wireless communication device 2002 to the second wireless communication device 2004, up to a maximum rate 2020. The maximum rate 2020 may be selected based on external factors, such as network load, or device load. In some instances, the maximum rate 2020 is set to around 40 ms. The output of the rate selection block 2016 (representing the updated rate at which the elicitation messages 2003 are transmitted) may then be provided as an input to one or more of the processes shown in
The process 2100 may be performed by a wireless communication device that seeks to elicit MIMO transmissions from another wireless communication device. At 2102, a first set of messages is wirelessly transmitted at a first transmission rate to the device from which MIMO transmissions are sought. The first set of messages can be first network layer messages, which may be generated and transmitted according to the ICMP ping process (e.g., described in
At 2104, MIMO transmissions are received from the device. The MIMO transmissions can include MIMO training fields. The MIMO training fields contain signals (e.g., CSI) having a higher frequency resolution, a greater number of subcarrier frequencies, and a higher frequency bandwidth compared to Legacy training fields in the PHY frame. Use of the MIMO training field for motion detection provides more accurate motion detection capabilities. Therefore, at 2106, a training field is identified in each MIMO transmission, and channel information is generated based on the training field (at 2108). At 2110, the rate at which the channel information is generated is determined (e.g., using rate measurement circuitry 2012 shown in
Some of the subject matter and operations described in this specification can be implemented in digital electronic circuitry, or in computer software, firmware, or hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of one or more of them. Some of the subject matter described in this specification can be implemented as one or more computer programs, i.e., one or more modules of computer program instructions, encoded on a computer storage medium for execution by, or to control the operation of, data-processing apparatus. A computer storage medium can be, or can be included in, a computer-readable storage device, a computer-readable storage substrate, a random or serial access memory array or device, or a combination of one or more of them. Moreover, while a computer storage medium is not a propagated signal, a computer storage medium can be a source or destination of computer program instructions encoded in an artificially generated propagated signal. The computer storage medium can also be, or be included in, one or more separate physical components or media (e.g., multiple CDs, disks, or other storage devices).
Some of the operations described in this specification can be implemented as operations performed by a data processing apparatus on data stored on one or more computer-readable storage devices or received from other sources.
The term “data-processing apparatus” encompasses all kinds of apparatus, devices, and machines for processing data, including by way of example a programmable processor, a computer, a system on a chip, or multiple ones, or combinations, of the foregoing. The apparatus can include special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit). The apparatus can also include, in addition to hardware, code that creates an execution environment for the computer program in question, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, a cross-platform runtime environment, a virtual machine, or a combination of one or more of them.
A computer program (also known as a program, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, declarative or procedural languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, object, or other unit suitable for use in a computing environment. A computer program may, but need not, correspond to a file in a file system. A program can be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program, or in multiple coordinated files (e.g., files that store one or more modules, sub programs, or portions of code). A computer program can be deployed to be executed on one computer or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a communication network.
Some of the processes and logic flows described in this specification can be performed by one or more programmable processors executing one or more computer programs to perform actions by operating on input data and generating output. The processes and logic flows can also be performed by, and apparatus can also be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit).
To provide for interaction with a user, operations can be implemented on a computer having a display device (e.g., a monitor, or another type of display device) for displaying information to the user and a keyboard and a pointing device (e.g., a mouse, a trackball, a tablet, a touch sensitive screen, or another type of pointing device) by which the user can provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input. In addition, a computer can interact with a user by sending documents to and receiving documents from a device that is used by the user; for example, by sending web pages to a web browser on a user's client device in response to requests received from the web browser.
In a general aspect, MIMO transmissions are elicited from wireless communication devices and for wireless sensing.
In some aspects, a wireless sensing system (e.g., a motion detection system) initiates a message through a communication protocol defined in a layer above the physical (PHY) layer and the data link (MAC) layer in a first wireless communication device (e.g., in a transport layer or a network layer). The message is addressed to, and wirelessly transmitted to, a second wireless communication device. In response to the message, the second wireless communication device sends a MIMO transmission that traverses a space between the first and second wireless communication devices. The first wireless communication device senses the space (e.g., detects motion of an object in the space) based on the MIMO transmissions.
In a first example, a first wireless communication device: obtains a network layer address of a second wireless communication device; addresses network layer messages to the network layer address of the second wireless communication device; initiates wireless transmission of the network layer messages; in response to the network layer messages, receives MIMO transmissions from the second wireless communication device, where the MIMO transmissions traverse a space between the first and second wireless communication devices; generates a series of channel responses based on a training field in the MIMO transmissions; and detects motion of an object in the space based on the series of channel responses.
Implementations of the first example may include one or more of the following features. The network layer messages can be sent according to an ICMP Ping process, an ARP ping process, or another type of process. The MIMO training field can be an HE-LTF, VHT-LTF or an HT-LTF. The wireless sensing may include detecting motion of an object in the space.
In a second example, a first wireless communication device: generates a transport layer message addressed to a second wireless communication device; initiates wireless transmission of the transport layer messages; in response to the transport layer messages, receives MIMO transmissions from the second wireless communication device, where the MIMO transmissions traverse a space between the first and second wireless communication devices; generates a series of channel responses based on a training field in the MIMO transmissions; and performs wireless sensing of the space based on the series of channel responses.
Implementations of the second example may include one or more of the following features. The transport layer messages can be sent according to a TCP Ping process, or another type of process. The MIMO training field can be an HE-LTF, VHT-LTF or an HT-LTF. The wireless sensing may include detecting motion of an object in the space.
In a third example, a first wireless communication device: initiates a first mechanism to elicit a MIMO transmission from a second wireless communication device, and detects a failure of the first mechanism; initiates a second, different mechanism to elicit a MIMO transmission from the second wireless communication device, and detects a success of the second mechanism; generates a series of channel responses based on MIMO transmissions elicited from the second device using the second mechanism; and performs wireless sensing based on the series of channel responses.
Implementations of the third example may include one or more of the following features. The first mechanism and the second mechanism may include an ICMP Ping, a TCP Ping, an ARP Ping, or another type of request/response process. The first wireless communication device may initiate the first mechanism and the second mechanism (and possibly additional mechanisms) based on a state of a state machine. The wireless sensing may include detecting motion of an object in a space traversed by the MIMO transmissions.
In a fourth example, a first wireless communication device in a wireless communication network may: generate network or transport layer messages addressed to a second wireless communication device in the wireless communication network; wirelessly transmit the network or transport layer messages to the second wireless communication device to elicit multiple-input-multiple-output (MIMO) transmissions from the second wireless communication device; and receive MIMO transmissions from the second wireless communication device. The MIMO transmissions may traverse a space between the first wireless communication device and the second wireless communication device. The first wireless communication device may also identify a training field in each MIMO transmission; generate channel information based on the respective training fields; and detect motion that occurred in the space based on the channel information.
Implementations of the fourth example may include one or more of the following features. The network or transport layer messages includes network layer messages encapsulated into a payload field of respective Media Access Control (MAC) layer messages. The network layer messages are wirelessly transmitted according to an Internet Control Message Protocol (ICMP) Ping process. The first wireless communication device may further obtain a network layer address of the second wireless communication device; and encapsulate the network layer address of the second wireless communication device into the payload field of the respective MAC layer messages. The network or transport layer messages include transport layer messages encapsulated into a payload field of respective network layer messages, and the transport layer messages are wirelessly transmitted according to a Transmission Control Protocol (TCP) Ping process, an Address Resolution Protocol (ARP) Ping addressed to the second wireless communication device, or a combination thereof. The first wireless communication device may further detect a failure of the network or transport layer messages to elicit MIMO transmissions from the second wireless communication device; in response to detecting the failure, generate second network or transport layer messages addressed to the second wireless communication device; and wirelessly transmit the second network or transport layer messages to the second wireless communication device to elicit MIMO transmissions from the second wireless communication device. The network or transport layer messages are wirelessly transmitted according to a first type of communication process, and the second network or transport layer messages are wirelessly transmitted according to a second, different type of communication process. The first type of communication process and the second type of communication process are selected from the group consisting of an ICMP Ping, an ARP Ping addressed to the second wireless communication device, and a TCP Ping. Identifying the training field in each MIMO transmission includes identifying the training field in a PHY frame of each MIMO transmission.
In a fifth example, a non-transitory computer-readable medium stores instructions that are operable when executed by data processing apparatus to perform one or more operations of the first example, the second example, the third example, or the fourth example. In a sixth example, a system includes a plurality of wireless communication devices, and a device configured to perform one or more operations of the first example, the second example, the third example, or the fourth example.
Implementations of the sixth example may include one or more of the following features. One of the wireless communication devices can be or include the device. The device can be located remote from the wireless communication devices.
In another general aspect, a rate at which multiple-input/multiple-output (MIMO) transmissions are elicited from wireless communication devices is varied (e.g., to prevent the wireless communication devices from entering a sleep/power-saving mode).
In a seventh example, a first wireless communication device: wirelessly transmits a first set of messages at a first transmission rate to a second wireless communication device to elicit first multiple-input-multiple-output (MIMO) transmissions from the second wireless communication device. The first wireless communication device also receives the first MIMO transmissions from the second wireless communication device, where the first MIMO transmissions traverse a space between the first wireless communication device and the second wireless communication device. The first wireless communication device further generates first channel information based on respective training fields identified in each of the first MIMO transmissions; determines a rate at which the first channel information is generated; and varies the first transmission rate to a second, different transmission rate based on the rate at which the first channel information is generated. The first wireless communication device additionally wirelessly transmits a second set of messages at the second transmission rate to the second wireless communication device to elicit second MIMO transmissions from the second wireless communication device.
Implementations of the seventh example may include one or more of the following features. Varying the first transmission rate to the second transmission rate includes: comparing the rate at which the first channel information is generated to a threshold, the threshold being a minimum transmission rate to prevent the second wireless communication device from entering a power saving mode; and increasing the first transmission rate to the second transmission rate in response to the rate at which the first channel information is generated being less than the threshold. The first set of messages includes a first set of network or transport layer messages, and the second set of messages includes a second set of network or transport layer messages. At least one of the first set of network or transport layer messages or the second set of network or transport layer messages includes network layer messages encapsulated into a payload field of respective Media Access Control (MAC) layer messages. The network layer messages are wirelessly transmitted according to an Internet Control Message Protocol (ICMP) Ping process. At least one of the first set of network or transport layer messages or the second set of network or transport layer messages includes transport layer messages encapsulated into a payload field of respective network layer messages. The transport layer messages are wirelessly transmitted according to a Transmission Control Protocol (TCP) Ping process, an Address Resolution Protocol (ARP) Ping addressed to the second wireless communication device, or a combination thereof.
While this specification contains many details, these should not be understood as limitations on the scope of what may be claimed, but rather as descriptions of features specific to particular examples. Certain features that are described in this specification or shown in the drawings in the context of separate implementations can also be combined. Conversely, various features that are described or shown in the context of a single implementation can also be implemented in multiple embodiments separately or in any suitable subcombination.
Similarly, while operations are depicted in the drawings in a particular order, this should not be understood as requiring that such operations be performed in the particular order shown or in sequential order, or that all illustrated operations be performed, to achieve desirable results. In certain circumstances, multitasking and parallel processing may be advantageous. Moreover, the separation of various system components in the implementations described above should not be understood as requiring such separation in all implementations, and it should be understood that the described program components and systems can generally be integrated together in a single product or packaged into multiple products.
A number of embodiments have been described. Nevertheless, it will be understood that various modifications can be made. Accordingly, other embodiments are within the scope of the description above.
This application is a continuation-in-part of U.S. patent application Ser. No. 17/082,411, filed Oct. 28, 2020, entitled “Eliciting MIMO Transmissions from Wireless Communication Devices,” which claims priority to U.S. Provisional App. No. 62/944,177, filed Dec. 5, 2019, entitled “Eliciting MIMO Transmissions from Wireless Communication Devices,” and U.S. Provisional App. No. 62/928,684, filed Oct. 31, 2019, entitled “Using MIMO Training Fields for Motion Detection,” the contents of which are hereby incorporated by reference.
Number | Name | Date | Kind |
---|---|---|---|
4054879 | Wright et al. | Oct 1977 | A |
4197537 | Follen et al. | Apr 1980 | A |
4417157 | Gershberg et al. | Nov 1983 | A |
4636774 | Galvin et al. | Jan 1987 | A |
4649388 | Atlas | Mar 1987 | A |
4740045 | Goodson et al. | Apr 1988 | A |
5270720 | Stove | Dec 1993 | A |
5613039 | Wang et al. | Mar 1997 | A |
5696514 | Nathanson et al. | Dec 1997 | A |
6075797 | Thomas | Jun 2000 | A |
6380882 | Hegnauer | Apr 2002 | B1 |
6573861 | Hommel et al. | Jun 2003 | B1 |
6636763 | Junker et al. | Oct 2003 | B1 |
6914854 | Heberley et al. | Jul 2005 | B1 |
7652617 | Kurtz et al. | Jan 2010 | B2 |
7742753 | Carrero et al. | Jun 2010 | B2 |
8463191 | Farajidana et al. | Jun 2013 | B2 |
8660578 | Yang et al. | Feb 2014 | B1 |
8671069 | Chang et al. | Mar 2014 | B2 |
8710984 | Wilson et al. | Apr 2014 | B2 |
8760392 | Lloyd et al. | Jun 2014 | B2 |
8812654 | Gelvin et al. | Aug 2014 | B2 |
8832244 | Gelvin et al. | Sep 2014 | B2 |
8836344 | Habib et al. | Sep 2014 | B2 |
8836503 | Gelvin et al. | Sep 2014 | B2 |
8934884 | Gustafsson et al. | Jan 2015 | B2 |
9019148 | Bikhazi et al. | Apr 2015 | B1 |
9030321 | Breed | May 2015 | B2 |
9161172 | Poduri et al. | Oct 2015 | B2 |
9253592 | Moscovich et al. | Feb 2016 | B1 |
9329701 | Lautner | May 2016 | B2 |
9389085 | Khorashadi et al. | Jul 2016 | B2 |
9523760 | Kravets et al. | Dec 2016 | B1 |
9524628 | Omer et al. | Dec 2016 | B1 |
9551784 | Katuri et al. | Jan 2017 | B2 |
9584974 | Omer et al. | Feb 2017 | B1 |
9609468 | Moscovich et al. | Mar 2017 | B1 |
9628365 | Gelvin et al. | Apr 2017 | B2 |
9692459 | Maltsev et al. | Jun 2017 | B2 |
9743294 | Omer et al. | Aug 2017 | B1 |
9866308 | Bultan et al. | Jan 2018 | B1 |
9869759 | Furuskog et al. | Jan 2018 | B2 |
9927519 | Omer et al. | Mar 2018 | B1 |
9933517 | Olekas et al. | Apr 2018 | B1 |
9946351 | Sakaguchi et al. | Apr 2018 | B2 |
9989622 | Griesdorf et al. | Jun 2018 | B1 |
10004076 | Griesdorf et al. | Jun 2018 | B1 |
10048350 | Piao et al. | Aug 2018 | B1 |
10051414 | Omer et al. | Aug 2018 | B1 |
10077204 | Maschmeyer et al. | Sep 2018 | B2 |
10108903 | Piao et al. | Oct 2018 | B1 |
10109167 | Olekas et al. | Oct 2018 | B1 |
10109168 | Devison et al. | Oct 2018 | B1 |
10111228 | Griesdorf et al. | Oct 2018 | B2 |
10129853 | Manku et al. | Nov 2018 | B2 |
10228439 | Olekas et al. | Mar 2019 | B1 |
10264405 | Manku et al. | Apr 2019 | B1 |
10318890 | Kravets et al. | Jun 2019 | B1 |
10349216 | Tran et al. | Jul 2019 | B1 |
10380856 | Devison et al. | Aug 2019 | B2 |
10393866 | Kravets et al. | Aug 2019 | B1 |
10404387 | Devison et al. | Sep 2019 | B1 |
10438468 | Olekas et al. | Oct 2019 | B2 |
10459074 | Omer et al. | Oct 2019 | B1 |
10459076 | Kravets et al. | Oct 2019 | B2 |
10460581 | Devison et al. | Oct 2019 | B1 |
10498467 | Ravkine | Dec 2019 | B1 |
10499364 | Ravkine | Dec 2019 | B1 |
10506384 | Omer et al. | Dec 2019 | B1 |
10565860 | Omer et al. | Feb 2020 | B1 |
10567914 | Omer et al. | Feb 2020 | B1 |
10600314 | Manku et al. | Mar 2020 | B1 |
10605907 | Kravets et al. | Mar 2020 | B2 |
10605908 | Kravets et al. | Mar 2020 | B2 |
10743143 | Devison et al. | Aug 2020 | B1 |
10849006 | Beg et al. | Nov 2020 | B1 |
11012122 | Beg et al. | May 2021 | B1 |
11018734 | Beg | May 2021 | B1 |
11184063 | Beg | Nov 2021 | B2 |
20020080014 | McCarthy et al. | Jun 2002 | A1 |
20030108119 | Mohebbi et al. | Jun 2003 | A1 |
20050055568 | Agrawala et al. | Mar 2005 | A1 |
20050128067 | Zakrewski | Jun 2005 | A1 |
20060152404 | Fullerton et al. | Jul 2006 | A1 |
20060217132 | Drummond-Murray et al. | Sep 2006 | A1 |
20060284757 | Zemany | Dec 2006 | A1 |
20070036353 | Reznik et al. | Feb 2007 | A1 |
20070296571 | Kolen | Dec 2007 | A1 |
20080007404 | Albert et al. | Jan 2008 | A1 |
20080057978 | Karaoguz et al. | Mar 2008 | A1 |
20080119130 | Sinha | May 2008 | A1 |
20080240008 | Backes et al. | Oct 2008 | A1 |
20080258907 | Kalpaxis | Oct 2008 | A1 |
20080300055 | Lutnick et al. | Dec 2008 | A1 |
20080303655 | Johnson | Dec 2008 | A1 |
20090062696 | Nathan et al. | Mar 2009 | A1 |
20090180444 | Mcmanus et al. | Jul 2009 | A1 |
20100073686 | Medeiros et al. | Mar 2010 | A1 |
20100127853 | Hanson et al. | May 2010 | A1 |
20100130229 | Sridhara et al. | May 2010 | A1 |
20100207804 | Hayward et al. | Aug 2010 | A1 |
20100234045 | Karr et al. | Sep 2010 | A1 |
20100306320 | Leppanen et al. | Dec 2010 | A1 |
20100315284 | Trizna et al. | Dec 2010 | A1 |
20110019587 | Wang | Jan 2011 | A1 |
20110035491 | Gelvin et al. | Feb 2011 | A1 |
20110090081 | Khorashadi et al. | Apr 2011 | A1 |
20110148689 | Filippi et al. | Jun 2011 | A1 |
20110260856 | Rossmann et al. | Oct 2011 | A1 |
20110260871 | Karkowski | Oct 2011 | A1 |
20110263946 | El Kaliouby et al. | Oct 2011 | A1 |
20120115512 | Grainger et al. | May 2012 | A1 |
20120146788 | Wilson et al. | Jun 2012 | A1 |
20120182429 | Forutanpour et al. | Jul 2012 | A1 |
20120184296 | Milosiu | Jul 2012 | A1 |
20120283896 | Persaud | Nov 2012 | A1 |
20130017836 | Chang et al. | Jan 2013 | A1 |
20130045759 | Smith | Feb 2013 | A1 |
20130090151 | Ngai et al. | Apr 2013 | A1 |
20130094538 | Wang | Apr 2013 | A1 |
20130113647 | Sentelle et al. | May 2013 | A1 |
20130162459 | Aharony et al. | Jun 2013 | A1 |
20130178231 | Morgan | Jul 2013 | A1 |
20130283256 | Proud | Oct 2013 | A1 |
20140015706 | Ishihara et al. | Jan 2014 | A1 |
20140073346 | Yang et al. | Mar 2014 | A1 |
20140126323 | Li et al. | May 2014 | A1 |
20140135042 | Buchheim et al. | May 2014 | A1 |
20140148195 | Bassan-Eskenazi et al. | May 2014 | A1 |
20140213284 | Yang et al. | Jul 2014 | A1 |
20140247179 | Furuskog | Sep 2014 | A1 |
20140266669 | Fadell et al. | Sep 2014 | A1 |
20140274218 | Kadiwala et al. | Sep 2014 | A1 |
20140286380 | Prager et al. | Sep 2014 | A1 |
20140288876 | Donaldson | Sep 2014 | A1 |
20140329540 | Duggan et al. | Nov 2014 | A1 |
20140355713 | Bao et al. | Dec 2014 | A1 |
20140358473 | Goel et al. | Dec 2014 | A1 |
20140361920 | Katuri et al. | Dec 2014 | A1 |
20150043377 | Cholas et al. | Feb 2015 | A1 |
20150049701 | Tian et al. | Feb 2015 | A1 |
20150063323 | Sadek et al. | Mar 2015 | A1 |
20150078295 | Mandyam et al. | Mar 2015 | A1 |
20150098377 | Amini et al. | Apr 2015 | A1 |
20150159100 | Shi et al. | Jun 2015 | A1 |
20150181388 | Smith | Jun 2015 | A1 |
20150195100 | Imes et al. | Jul 2015 | A1 |
20150212205 | Shpater | Jul 2015 | A1 |
20150245164 | Merrill | Aug 2015 | A1 |
20150269825 | Tran | Sep 2015 | A1 |
20150288745 | Moghaddam et al. | Oct 2015 | A1 |
20150304886 | Liu et al. | Oct 2015 | A1 |
20150309166 | Sentelle et al. | Oct 2015 | A1 |
20150312877 | Bhanage | Oct 2015 | A1 |
20150338507 | Oh et al. | Nov 2015 | A1 |
20150350849 | Huang et al. | Dec 2015 | A1 |
20150350976 | Kodali et al. | Dec 2015 | A1 |
20150366542 | Brown et al. | Dec 2015 | A1 |
20160014554 | Sen et al. | Jan 2016 | A1 |
20160018508 | Chen et al. | Jan 2016 | A1 |
20160073060 | Renkis | Mar 2016 | A1 |
20160080908 | Julian et al. | Mar 2016 | A1 |
20160088438 | O'Keeffe | Mar 2016 | A1 |
20160088631 | Hedayat et al. | Mar 2016 | A1 |
20160135205 | Barbu et al. | May 2016 | A1 |
20160150418 | Kang et al. | May 2016 | A1 |
20160178741 | Ludlow et al. | Jun 2016 | A1 |
20160183059 | Nagy et al. | Jun 2016 | A1 |
20160187475 | Horng et al. | Jun 2016 | A1 |
20160203689 | Hintz et al. | Jul 2016 | A1 |
20160210838 | Yan et al. | Jul 2016 | A1 |
20160217683 | Li | Jul 2016 | A1 |
20160261452 | Porat et al. | Sep 2016 | A1 |
20160262355 | Swan | Sep 2016 | A1 |
20160363663 | Mindell et al. | Dec 2016 | A1 |
20170042488 | Muhsin | Feb 2017 | A1 |
20170052247 | Kong et al. | Feb 2017 | A1 |
20170055126 | O'Keeffe | Feb 2017 | A1 |
20170055131 | Kong et al. | Feb 2017 | A1 |
20170059190 | Stefanski et al. | Mar 2017 | A1 |
20170086281 | Avrahamy | Mar 2017 | A1 |
20170090026 | Joshi et al. | Mar 2017 | A1 |
20170111852 | Selen et al. | Apr 2017 | A1 |
20170123528 | Hu et al. | May 2017 | A1 |
20170126488 | Cordeiro et al. | May 2017 | A1 |
20170146656 | Belsley et al. | May 2017 | A1 |
20170150255 | Wang et al. | May 2017 | A1 |
20170155439 | Chang et al. | Jun 2017 | A1 |
20170177618 | Hu et al. | Jun 2017 | A1 |
20170180882 | Lunner et al. | Jun 2017 | A1 |
20170195016 | Alexander | Jul 2017 | A1 |
20170195893 | Lee et al. | Jul 2017 | A1 |
20170223628 | Snyder et al. | Aug 2017 | A1 |
20170251392 | Nabetani | Aug 2017 | A1 |
20170278374 | Skaaksrud | Sep 2017 | A1 |
20170280351 | Skaaksrud | Sep 2017 | A1 |
20170311279 | Allegue Martinez et al. | Oct 2017 | A1 |
20170311574 | Swan | Nov 2017 | A1 |
20170325117 | Li et al. | Nov 2017 | A1 |
20170343658 | Ramirez | Nov 2017 | A1 |
20170359804 | Manku et al. | Dec 2017 | A1 |
20180027389 | Shirakata et al. | Jan 2018 | A1 |
20180086264 | Pedersen | Mar 2018 | A1 |
20180106885 | Blayvas | Apr 2018 | A1 |
20180120420 | McMahon et al. | May 2018 | A1 |
20180168552 | Shi et al. | Jun 2018 | A1 |
20180180706 | Li et al. | Jun 2018 | A1 |
20180184907 | Tran | Jul 2018 | A1 |
20180270821 | Griesdorf et al. | Sep 2018 | A1 |
20180288587 | Allegue Martinez et al. | Oct 2018 | A1 |
20180323835 | Wang | Nov 2018 | A1 |
20180324815 | Nammi | Nov 2018 | A1 |
20180330293 | Kulkarni et al. | Nov 2018 | A1 |
20190033446 | Bultan et al. | Jan 2019 | A1 |
20190074876 | Kakishima et al. | Mar 2019 | A1 |
20190122514 | Olekas et al. | Apr 2019 | A1 |
20190146075 | Kravets et al. | May 2019 | A1 |
20190146076 | Kravets et al. | May 2019 | A1 |
20190146077 | Kravets et al. | May 2019 | A1 |
20190147713 | Devison et al. | May 2019 | A1 |
20190156943 | Kocherscheidt et al. | May 2019 | A1 |
20190170869 | Kravets et al. | Jun 2019 | A1 |
20190272718 | Hurtig et al. | Sep 2019 | A1 |
20190294833 | Lu et al. | Sep 2019 | A1 |
20190327124 | Lai et al. | Oct 2019 | A1 |
20200112939 | Scharf et al. | Apr 2020 | A1 |
20200175405 | Omer et al. | Jun 2020 | A1 |
20200178033 | Omer et al. | Jun 2020 | A1 |
20200204222 | Lou et al. | Jun 2020 | A1 |
20200209378 | Yokev et al. | Jul 2020 | A1 |
20200264292 | Kravets et al. | Aug 2020 | A1 |
20200305231 | Sadeghi et al. | Sep 2020 | A1 |
20200351576 | Beg et al. | Nov 2020 | A1 |
20200351692 | Beg et al. | Nov 2020 | A1 |
20200367021 | Devison et al. | Nov 2020 | A1 |
20200371222 | Kravets et al. | Nov 2020 | A1 |
20210099835 | Omer | Apr 2021 | A1 |
20210099836 | Omer | Apr 2021 | A1 |
20210099970 | Omer | Apr 2021 | A1 |
20210103045 | Kravets et al. | Apr 2021 | A1 |
20210135711 | Beg et al. | May 2021 | A1 |
20210135718 | Beg | May 2021 | A1 |
Number | Date | Country |
---|---|---|
2834522 | May 2014 | CA |
2945702 | Aug 2015 | CA |
102037667 | Jan 2015 | CN |
111373281 | Jul 2020 | CN |
2733684 | May 2014 | EP |
1997-507298 | Jul 1997 | JP |
2004286567 | Oct 2004 | JP |
2013072865 | Apr 2013 | JP |
6324935 | May 2018 | JP |
6776374 | Oct 2020 | JP |
2014021574 | Feb 2014 | WO |
2014201574 | Dec 2014 | WO |
2015168700 | Nov 2015 | WO |
2016005977 | Jan 2016 | WO |
2016066822 | May 2016 | WO |
2016110844 | Jul 2016 | WO |
2017106976 | Jun 2017 | WO |
2017132765 | Aug 2017 | WO |
2017177303 | Oct 2017 | WO |
2017210770 | Dec 2017 | WO |
2018071456 | Apr 2018 | WO |
2018094502 | May 2018 | WO |
2019041019 | Mar 2019 | WO |
2019075551 | Apr 2019 | WO |
2020150806 | Jul 2020 | WO |
2020150807 | Jul 2020 | WO |
2020227804 | Nov 2020 | WO |
2020227805 | Nov 2020 | WO |
2020227806 | Nov 2020 | WO |
2021081635 | May 2021 | WO |
2021081637 | May 2021 | WO |
Entry |
---|
USPTO, Notice of Allowance dated Jan. 22, 2021 in U.S. Appl. No. 17/082,456, 35 pgs. |
USPTO, Notice of Allowance dated Jan. 21, 2021, in U.S. Appl. No. 17/082,411, 39 pgs. |
WIPO, International Search Report and Written Opinion dated Dec. 30, 2020, in PCT/CA2020/051442, 8 pgs. |
WIPO, International Search Report and Written Opinion dated Jan. 11, 2021, in PCT/CA2020/051440, 8 pgs. |
Networking Layers—Apple Developer; https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/NetworkingConcepts/NetworkingLayers/NetworkingLayers.html, Jul. 19, 2012, 4 pgs. |
Banerjee , et al., “Through Wall People Localization Exploiting Radio Windows”, arXiv:1307.7233v1, Jul. 27, 2013, 14 pgs. |
Bejarano , et al., “IEEE 802.11ac: From Channelization to Multi-User MIMO”, IEEE Communications Magazine, Oct. 1, 2013, 7 pgs. |
Brauers , et al., “Augmenting OFDM Wireless Local Networks with Motion detection Capability”, 2016 IEEE 6th International Conference on Consumer Electronics—Berlin (ICCE—Berlin); pp. 253-257, 2016, 5 pgs. |
Cai, et al., “Human Movement Detection in Wi-Fi Mesh Networks”, Technical Disclosure Commons, Dec. 17, 2017, 8 pgs. |
Dekker , et al., “Gesture Recognition with a Low Power FMCW Radar and a Deep Convolutional Neural Network”, Proceedings of the 14th European Radar Conference, Nuremberg, Germany, Oct. 11-13, 2017, 4 pgs. |
Domenico , et al., “Exploring Training Options for RF Sensing Using CSI”, IEEE Communications Magazine, 2018, vol. 56, Issue 5, pp. 116-123, 8 pgs. |
Ganesan , et al., “Robust Channel Estimation for 802.11n (MIMO-OFDM) Systems”, 2014 International Conference on Signal Processing and Communications (SPCOM), Bangalore; Jul. 22-25, 2014, 5 pgs. |
Iqbal , et al., “Indoor Motion Classification Using Passive RF Sensing Incorporating Deep Learning”, ISSN: 2577-2465, Electronic IEEE, Jun. 3, 2018, 5 pgs. |
Keerativoranan , et al., “Mitigation of CSI Temporal Phase Rotation with B2B Calibration Method for Fine-Grained Motion Detection Analysis on Commodity Wi-Fi Devices”, Sensors 2018, Nov. 6, 2018, 18 pgs. |
Kosba , et al., “Robust WLAN Device-free Passive Motion Detection”, IEEE Wireless Communications and Networking Conference, Apr. 2012, 6 pgs. |
Krumm , et al., “Locadio: Inferring Motion and Location from Wi-Fi Signal Strengths”, First Annual Int'l Conference on Mobile and Ubiquitous Systems: Networking and Services, Boston, MA, Aug. 22, 2004, 10 pgs. |
Lai, “This mesh WiFi router can track motion to protect your family”, https://www.engadget.com/2018-06-06-origin-wireless-wifi-mesh-motion-fall-sleep-detection.htm., Jun. 16, 2018, 6 pgs. |
Youssef, Moustafa, et al., “Challenges: Device-free Passive Localization for Wireless Environments”, Mobicom 07 Proceedings of the 13th Annual ACM International Conference on Mobile Computing and Networking, Sep. 2007, 11 pgs. |
Youssef , et al., “Challenges: Device-free Passive Localization for Wireless Environments”, Proceedings of the 13th Annual ACM Int'l Conference on Mobile Computing and Networking, Montreal, Canada, Sep. 9, 2007, 8 pgs. |
USPTO, Notice of Allowance dated Jul. 28, 2021, in U.S. Appl. No. 17/318,211, 41 pgs. |
WIPO, International Search Report and Written Opinion dated Aug. 15, 2022, in PCT/CA2022/050749, 10 pgs. |
EPO, Extended European Search Report dated Nov. 11, 2022, in EP 20881889.8, 8 pgs. |
Number | Date | Country | |
---|---|---|---|
20210329554 A1 | Oct 2021 | US |
Number | Date | Country | |
---|---|---|---|
62944177 | Dec 2019 | US | |
62928684 | Oct 2019 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 17082411 | Oct 2020 | US |
Child | 17328479 | US |