Due to their favorable size, cost, and sustainability battery-free devices are preferred in many applications. However, battery-free devices operate only intermittently since ambient energy sources such as light, vibrations, and RF signals are often too weak to continuously power a device.
This work addresses the unsolved problem of efficient device-to-device communication in the face of intermittency. We present FIND, the first neighbor discovery protocol for battery-free wireless networks that uses randomized waiting to minimize discovery latency. We also introduce FLYNC, a new hardware/software solution that taps into the powerline-induced flicker of widely used lamps to synchronize indoor light harvesting devices, which we exploit to further speed up neighbor discovery. Experiments with an open-source prototype built from off-the-shelf hardware components show that our techniques reduce the discovery latency by 4.3x (median) and 34.4x (99th percentile) compared to a baseline approach without waiting.

We provide a Python implementation of the analytical FIND model, the hardware design files of our prototype battery-free node, and the corresponding firmware as open source. If you want to learn more, read our detailed description.


Why go battery-free?

As the Internet of Things (IoT) grows to trillions of devices, sustainability and reliability of this computing infrastructure become matters of utmost importance. One possible path to sustainability is the adoption of battery-free devices that buffer energy harvested from the environment in a capacitor. Battery-free devices promise to overcome the drawbacks of (rechargeable) batteries, such as bulkiness, wear-out, toxicity, uncertain remaining charge, etc. Leaving batteries behind allows for building cheap, tiny, and maintenance-free devices that can be embedded into smart textiles, intelligent surfaces, or even the human body.

What is intermittency?

The power that can be harvested from ambient energy sources can vary significantly across time and space, and is often too weak to directly power a battery-free node. Thus, as illustrated in the figure below, a battery-free device first needs to buffer sufficient energy in its capacitor before it can operate for a short period of time; then the device turns off until the capacitor is sufficiently charged again. As a result, battery-free devices operate intermittently. Intermittent operation

Battery-free Communication

Just like in conventional battery-supported networks, direct communication between battery-free devices is desirable, for example, to increase the availability of the system, to enable novel applications, and to reduce infrastructure costs. However, to communicate with one another, sender and receiver must be active simultaneously for at least the airtime of one complete packet. This is difficult in battery-free networks for three reasons:

  • Battery-free nodes can only become active when they have accumulated sufficient energy in their capacitors.
  • They may only be active for a short period, which renders excessive sampling of the wireless channel infeasible.
  • Their duty cycles are often low and may change unpredictably due to varying availability of ambient energy.
The resulting key challenge is that the short activity phases of different nodes are generally interleaved, as illustrated in the figure below. Therefore, it can take a very long time until nodes encounter each other. And this is not a one-time endeavor: While nodes may attempt to synchronize their activity phases at the first encounter, they lose track of time during extended periods without energy, which forces them to re-synchronize. Greedy neighbor discovery

What is FIND?

FIND is the first neighbor discovery protocol for battery-free wireless networks. It empowers battery-free nodes to quickly discover each other's presence despite intermittent operation and varying ambient energy availability. It is agnostic as to how the nodes harvest energy (from solar, vibrations, RF, etc.) and as to whether they communicate using backscatter or radio communication. The design of FIND is based on the observation that the only way battery-free nodes can reliably avoid interleaving is to not wake up and become active immediately after reaching the minimum energy level required to do so. Instead, FIND delays each wake-up for a random time according to an optimized probability distribution. This breaks up the interleaving pattern and enables fast discovery as shown in the figure below. FIND neighbor discovery

What is FLYNC?

Although FIND provides fast and energy-efficient neighbor discovery in battery-free networks, discovery may still take a long time due to the low duty cycles if the ambient energy availability is low. FLYNC can facilitate a 10x speed-up at an additional cost of only 5μW. The basic idea is that neighboring nodes harvest energy from the same ambient source(s) and may therefore have access to a common energy signal that can be used as a time reference. In combination with FIND, nodes can exploit this common time reference to align their wake-ups, thereby increasing the chances that nodes are active in the same slot, as illustrated in the figure below. FIND & FLYNC neighbor discovery We implemented FLYNC for indoor light harvesting devices, exploiting the powerline-induced brightness variations of lamps as a common energy/synchronization signal. FLYNC is also applicable to battery-supported devices and useful for other purposes beyond speeding up neighbor discovery.

Can I see FIND & FLYNC in action?

Open Source

We provide a Python implementation of the analytical FIND model, the hardware design files of our battery-free node, and the corresponding firmware under an MIT license in our GitHub repository.

FIND Python model

The provided code allows to calculate the probability for each node in a clique to become active in any slot, the probability for any individual link to be discovered in any slot, and the network discovery latency.


pip install neslab.find[examples]


Instantiate the model with a uniform distribution with scale 10 and three nodes with charging times of 100, 125, and 200 slots, respectively:

import matplotlib.pyplot as plt
from neslab.find import Model
m = Model(10, "Uniform", [100, 125, 200], offset=0)
Plot the cdf of the discovery latency of the three links:
cdfs = m.cdf()
Print the network discovery latency:
lat = m.disco_latency()
print(f"Discovery latency: {lat} slots")

Hardware Design

We designed a battery-free wireless node implementing a circuit to extract a clock signal from powerline-induced current variations of the solar panel current (FLYNC). The node was designed using Eagle and we provide the corresponding schematics and layout files. Can't show image


The firmware running on our battery-free sensor node is written in C and uses protothreads. It implements an efficient battery-free runtime, the phase-locked loop (PLL) to synchronize the local clock to the output of the FLYNC circuit and the FIND neighbor discovery protocol. For detailed instructions on how to build and flash the firmware, please refer to the README.

for (;;) {
	/* Timestamp beginning of charging period */
	int t_start = timer_now();

	/* Wait until voltage reaches turn-on threshold */
	pt_wait(pt, adc_read_vcap() > V2ADC(V_THR_ON));
	int t_charge = timer_now() - t_start;

	/* Maximum waiting time equals charging time */
	int wait_time = dist_geom(lookup_scale(t_charge));

	/* Wait for waiting time */
	pt_event_t *clk_evt = timer_flync_wait(wait_time);
	pt_wait(pt, pt_event_get(clk_evt));


	pt_event_t *pof_evt = pofwarn_request(V_THR_OFF);

	if (disco_results_pop() != NULL) {

	while (!pt_event_get(pof_evt)) {


Bootstrapping Battery-free Wireless Networks: Efficient Neighbor Discovery in the Face of Intermittency
K. Geissdoerfer and M. Zimmerling
USENIX Symposium on Networked Systems Design and Implementation (NSDI), Virtual, April 2021
[ pdf ]

Demo Abstract: Bootstrapping Batteryless Networks Using Fluorescent Light Properties
K. Geissdoerfer, F. Schmidt, B. Kusy, and M. Zimmerling
ACM/IEEE International Conference on Information Processing in Sensor Networks (IPSN), Virtual, April 2020
[ pdf ] [ video ]