The 49ers had a mostly uneventful opening to training camp as players shook off the rust from the six-week break since the conclusion of OTAs in June.

Kyle Shanahan’s opening day of 2018 was brisk, moving from period to period with little downtime in between. It was the first of two practices before the 49ers don pads on Saturday.

Here’s our winners and losers from Day 1 from the 49ers’ facility:

Winner: 49ers defense

Day 1 didn’t belong to Jimmy Garoppolo. Coordinator Robert Saleh’s defense, a much more animated unit, seemed a step ahead of an offense that was finding its footing. The offense was unable find a rhythm throughout the day with only a handful of splash plays to show for their efforts.

Cornerback Ahkello Witherspoon, defensive lineman Arik Armstead, linebackers Reuben Foster and Brock Coyle all recorded pass breakups for the first-team defense. Safety Chanceller James and lineman Ronald Blair both logged unofficial sacks, with Sheldon Day also found his way into the backfield on a few occasions.

Loser: QB Jimmy Garoppolo’s stat sheet

The 49ers’ new franchise quarterback wasn’t awful, but he wasn’t great either. He made the best of tough sledding against an effective defense, completing four of nine passes during full-team drills. He was sharper during the 7-on-7 portion practice.

One Garoppolo pass was dropped while another was a tad under-thrown and made for a tough catch for receiver Marquise Goodwin. The defense was able to get hands on few passes while blanketing Garoppolo’s targets. To be sure, it’s far too soon to worry about Garoppolo’s completion rate on the practice field.