We investigate how to send interference-free codewords with full diversity and low decoding complexity over X channels. We consider an X channel with 2 transmitters and 2 receivers. Each transmitter sends different codewords to different receivers at the same time. We propose precoding and decoding schemes such that each receiver can decode the desired signals from each transmitter without any interference and with low complexity. We also analytically provide the achievable diversity of the system.