A method for broadcasting or multicasting data to User Equipments, UEs, in a distributed cell-free massive Multiple Input Multiple Output, MIMO, network, comprising: • at each Access Point, AP, (502-m) of two or more APs (502-1,..., 502-M): ∘ obtaining long-term Channel State Information, CSI, for at least one UE; and ∘ communicating the long-term CSI for the at least one UE to a central processing system; • at the central processing system: ∘ for each AP (502-m) of the two or more APs (502-1,..., 502-M), receiving the long-term CSI for the at least one UE from the AP (502-m); ∘ computing a precoding vector, w, for the at least one UE across the two or more APs (502-1,..., 502-M) based on the long-term CSI for the at least one UE received from the two or more APs (502-1,..., 502-M); and ∘ communicating the precoding vector, w, to the two or more APs (502-1,..., 502-M); and • at each AP (502-m) of the two or more APs (502-1,..., 502-M): ∘ obtaining the precoding vector, w, from the central processing system; ∘ precoding data to be broadcast or multicast to the at least one UE based on the precoding vector, w; and ∘ broadcasting or multicasting the precoded data to the at least one UE, wherein computing the precoding vector, w, comprises: a) at iteration 0, initializing the precoding vector, w, to provide a precoding vector w for iteration 0; b) computing local-average Signal to Interference plus Noise Ratios, SINRs, of the at least one UE; c) identifying a weakest UE from among the at least one UE based on the computed local-average SINRs; d) at iteration n+1, updating the precoding vector, w, based on the long-term CSI obtained from the at least one UE for the weakest UE to thereby provide a precoding vector w ( n + 1) for iteration n+1; e) normalizing the precoding vector w ( n + 1) for iteration n+1; and f) repeating steps (b) through (e) until a stopping criterion is satisfied such that the normalized precoding vector for the last iteration is provided as the precoding vector, w. • at each Access Point, AP, (502-m) of two or more APs (502-1,..., 502-M): ∘ obtaining long-term Channel State Information, CSI, for at least one UE; and ∘ communicating the long-term CSI for the at least one UE to a central processing system; ∘ obtaining long-term Channel State Information, CSI, for at least one UE; and ∘ communicating the long-term CSI for the at least one UE to a central processing system; • at the central processing system: ∘ for each AP (502-m) of the two or more APs (502-1,..., 502-M), receiving the long-term CSI for the at least one UE from the AP (502-m); ∘ computing a precoding vector, w, for the at least one UE across the two or more APs (502-1,..., 502-M) based on the long-term CSI for the at least one UE received from the two or more APs (502-1,..., 502-M); and ∘ communicating the precoding vector, w, to the two or more APs (502-1,..., 502-M); and ∘ for each AP (502-m) of the two or more APs (502-1,..., 502-M), receiving the long-term CSI for the at least one UE from the AP (502-m); ∘ computing a precoding vector, w, for the at least one UE across the two or more APs (502-1,..., 502-M) based on the long-term CSI for the at least one UE received from the two or more APs (502-1,..., 502-M); and ∘ communicating the precoding vector, w, to the two or more APs (502-1,..., 502-M); and • at each AP (502-m) of the two or more APs (502-1,..., 502-M): ∘ obtaining the precoding vector, w, from the central processing system; ∘ precoding data to be broadcast or multicast to the at least one UE based on the precoding vector, w; and ∘ broadcasting or multicasting the precoded data to the at least one UE, ∘ obtaining the precoding vector, w, from the central processing system; ∘ precoding data to be broadcast or multicast to the at least one UE based on the precoding vector, w; and ∘ broadcasting or multicasting the precoded data to the at least one UE, a) at iteration 0, initializing the precoding vector, w, to provide a precoding vector w for iteration 0; b) computing local-average Signal to Interference plus Noise Ratios, SINRs, of the at least one UE; c) identifying a weakest UE from among the at least one UE based on the computed local-average SINRs; d) at iteration n+1, updating the precoding vector, w, based on the long-term CSI obtained from the at least one UE for the weakest UE to thereby provide a precoding vector w ( n + 1) for iteration n+1; e) normalizing the precoding vector w ( n + 1) for iteration n+1; and f) repeating steps (b) through (e) until a stopping criterion is satisfied such that the normalized precoding vector for the last iteration is provided as the precoding vector, w.