Abstract Recent experimental results have pointed out the impact of physical layer multi-path fading and co-channel interference as the key factors influencing packet delivery among mesh routers (MRs) in wireless mesh networks. In addition, in a multi-channel environment, there exists significant power spectral overlap among channels used by MRs, leading to adjacent channel interference. In this paper, a cross-layer multi-radio, multi-channel routing protocol, XCHARM, is proposed in which the key contribution is the selection of the next hop, channel and transmission rate based on fading and interference concerns. The key features of our proposed protocol are as follows: (i) Routes are chosen based on the availability of channels that support high data rates, exhibit acceptable interference levels and long term resilience to fading related losses, (ii) The path latency is analytically calculated in advance for the candidate routes, accounting for channel induced errors, link layer contention, forward error correcting (FEC) codes, and the allowed data rates over the chosen channels, (iii) The route maintenance is performed by first attempting to identify and correct the point of failure before undertaking a global recovery action. An extensive performance evaluation, spanning the network, link and physical layers, reveals the benefits of adopting our cross-layer routing solution for wireless mesh networks.