This document proposes a spectrum sensing algorithm that senses sub-bands serially to determine spectrum utilization. It discriminates primary system signals from noise by measuring received energy and extracting features. It then considers three conditions to determine if inactive primary systems exist. When an active system is detected, it decodes frame headers to determine radio resources available to secondary systems. The algorithm involves measuring each sub-band and performing a series of hypothesis tests to identify primary system signals, track fundamental parameters, and decode frame headers to characterize channel states and available resources.