The GW approximation is a well-known method to obtain the quasiparticle and spectral properties of systems ranging from molecules to solids. In practice, GW calculations are often employed with many different approximations and truncations. In this work, we describe the implementation of a fully self-consistent GW approach based on the solution of the Dyson equation using plane wave basis set. Algorithmic, numerical and technical details of the self-consistent GW approach are presented. The fully self-consistent GW calculations are performed for GaAs, ZnO and CdS including semicores in the pseudopotentials. No further approximations and truncations apart from the truncation on the plane wave basis set are made in our implementation of the GW calculation. After adopting a special potential technique, a ~ 100 Ryd energy cutoff can be used without the loss of accuracy. We found that the self-consistent GW (sc-GW) significantly overestimates the bulk band gaps, and this overestimation is likely due to the underestimation of the macroscopic dielectric constants. On the other hand, the sc-GW predicts accurately the d-state positions, mostly likely because the d-state screening does not sensitively depend on the macroscopic dielectric constant. Our work indicates the needs to include the high-order vertex term in order for the many-body perturbation theory to accurately predict the semiconductor band gaps. It also sheds some lights on why, in some cases, the G 0 W 0 bulk calculation is more accurate than the fully self-consistent GW calculation, because the initial density functional theory has a better dielectric constant compared to experiments.