Cricket is an indoor location system. It provides two forms of location information--space identifiers and position coordinates--and can be as accurate as between 1 cm and 3 cm in real deployments. Space identifiers are user- or application-specified names associated with spaces such as rooms or parts of rooms. The position coordinates are Cartesian coordinates in some coordinate system.
The most common way to use Cricket is to deploy actively transmitting beacons on walls and/or ceilings, and attach listeners to host devices (handhelds, laptops, etc.) whose location needs to be obtained. See Figures 1.1 and 1.2.
Users or administrators configure beacons with space identifiers, and optionally with position coordinates (one can also use an auto-localization algorithm to assign position coordinates to beacons; we provide a simple one with the Cricket v2.0 software distribution). Each beacon periodically broadcasts its space identifer and position coordinates on a radio frequency (RF) channel, which listeners within radio range can receive. Each beacon also broadcasts an ultrasonic pulse at the same time as the RF message. Listeners that have line-of-sight connectivity to the beacon and are within the ultrasonic range will receive this pulse. (The exact values of the RF and ultrasonic ranges for the Cricket hardware are mentioned in the next chapter.)
Because RF travels about times faster than ultrasound, the listener can use the time difference of arrival between the start of the RF message from a beacon and the corresponding ultrasonic pulse to infer its distance from the beacon. Every time a listener receives information from a beacon, it provides that information together with the associated distance to the attached host using the API described in the next chapter. The listener (or software running on the host device) infers its position coordinates based on distances from multiple beacons whose positions are known, and software running on the host device can associate itself with the space corresponding to the nearest beacon.
The spaces advertised by Cricket beacons may be demarcated by physical boundaries such as walls, or may be virtual (e.g., different parts of a room may correspond to different spaces). Cricket is designed to accurately demarcate virtual spaces that don't have any walls between them. Because ultrasound does not travel through walls, Cricket can easily demarcate spaces separated by walls.
Cricket scales reasonably well with large numbers and high densities of devices in close proximity (e.g., many devices in the same room). Cricket is relatively easy to set up and start using, and relatively straightforward to maintain.
Because listeners need not transmit any information, Cricket makes it harder to track users if location privacy is a desired goal. This property of Cricket makes it different from some other indoor location systems like the Active Badge  and Active Bat  systems, in which tracking users is inherent.
Finally, note that the Cricket infrastructure is quite flexible, in that you can run the beacon on a moving device, and also run a more symmetric Cricket-based system where every node can be configured to simultaneously function as both a beacon and a listener.