Follow up:
Two of the five buttons tended to generate a button code intermittently. So at least some of the time, all five buttons worked.
Things that seemed to help (but we're not sure):
- Supplying power to the Soundgate interface from the ignition wire instead of the blue Amp Rem power wire.
- Plugging the antenna into the tuner module.
- Cramming everything into the dash and screwing it all in place.
There is also an unrelated issue: Some of the control inputs are delayed. When you press a button on the steering wheel, there is a delay before the player interprets the button press. This is also intermittent. It was reported elsewhere on the BBS so it's a known issue. It made diagnosing the other (above) problem hard.
I put car_rate=115200, notify=0, and suppress_notify=1 in the appropriate places in config.ini just in case it was a serial problem. Didn't solve the delayed controls.