A method for decoding a set of packets asynchronously transmitted on a nominal carrier frequency over a common communication medium, comprising: receiving a signal including a combination of the set of packets modified with noise of the common communication medium, each packet includes a preamble common to all packets in the set and a payload unique for at least some packets in the set; determining, using a sparse recovery, a frequency offset of the transmission of each packet from the carrier frequency, a time offset of the transmission of each packet from a common point in time, and a channel gain corresponding to the transmission of each packet over a channel in the common communication medium; and decoding the payloads of the packets in the set using the frequency offsets, the time offsets, and the channel gains; wherein the payloads are decoded iteratively within iterations of the sparse recovery until a termination condition is met, an iteration comprising: cross-correlating the received signal with each element of a dictionary matrix of the sparse recovery, wherein each element of the dictionary matrix is a packet transmitted over a channel for a combination of the frequency and the time offsets; selecting the combination of the frequency and the time offsets corresponding to the largest magnitude of the cross-correlating; determining the payload of the packet transmitted over the channel for the selected combination of the frequency and the time offsets; and removing contributions of the packets having the preamble and the payload and transmitted over the selected combinations of the frequency and the time offsets from the received signal, such that the received signal is updated for subsequent iterations. receiving a signal including a combination of the set of packets modified with noise of the common communication medium, each packet includes a preamble common to all packets in the set and a payload unique for at least some packets in the set; determining, using a sparse recovery, a frequency offset of the transmission of each packet from the carrier frequency, a time offset of the transmission of each packet from a common point in time, and a channel gain corresponding to the transmission of each packet over a channel in the common communication medium; and decoding the payloads of the packets in the set using the frequency offsets, the time offsets, and the channel gains; wherein the payloads are decoded iteratively within iterations of the sparse recovery until a termination condition is met, an iteration comprising: cross-correlating the received signal with each element of a dictionary matrix of the sparse recovery, wherein each element of the dictionary matrix is a packet transmitted over a channel for a combination of the frequency and the time offsets; selecting the combination of the frequency and the time offsets corresponding to the largest magnitude of the cross-correlating; determining the payload of the packet transmitted over the channel for the selected combination of the frequency and the time offsets; and removing contributions of the packets having the preamble and the payload and transmitted over the selected combinations of the frequency and the time offsets from the received signal, such that the received signal is updated for subsequent iterations. cross-correlating the received signal with each element of a dictionary matrix of the sparse recovery, wherein each element of the dictionary matrix is a packet transmitted over a channel for a combination of the frequency and the time offsets; selecting the combination of the frequency and the time offsets corresponding to the largest magnitude of the cross-correlating; determining the payload of the packet transmitted over the channel for the selected combination of the frequency and the time offsets; and removing contributions of the packets having the preamble and the payload and transmitted over the selected combinations of the frequency and the time offsets from the received signal, such that the received signal is updated for subsequent iterations.