Tennessee Highway Patrol said in a news release that Nelly, whose real name is Cornell Haynes, was pulled over about 9:20 a.m. because the bus he was riding in failed to display a U.S. Department of Transportation and International Fuel Tax Association sticker.
According to the release troopers smelled marijuana when they reached the bus.
When troopers searched the bus, they found five rocks that tested positive for meth, as well as a small amount of marijuana and drug paraphernalia.
Troopers also say they found numerous handguns.
The St. Louis native is facing charges including felony possession of drugs and possession of drug paraphernalia.
Nelly, 40, was released from Putnam County Jail on a $10,000 bond. His next court date is June 19.