This paper presents a practical method for using multi-antenna radios to cancel interference in cognitive radio systems. Under this method, secondary radio transmitters use beamforming techniques to find antenna weights that place nulls at the primary receivers, and secondary radio receivers use adaptive techniques to decode in the presence of interference from primary users. As an example, we show how this scheme can be leveraged to effectively reuse the uplink band of a cellular network. However, estimating the channel responses, without causing interference and without requiring significant modifications to legacy systems, is a challenging problem. We provide an iterative method for accurate channel estimation in frequency division duplexed networks, where the uplink is independent of the downlink.