diff --git a/dist/hornverifier b/dist/hornverifier index cd817e12..6874b926 100755 Binary files a/dist/hornverifier and b/dist/hornverifier differ diff --git a/dist/roverd b/dist/roverd index fa9c07ba..34c8d280 100755 Binary files a/dist/roverd and b/dist/roverd differ diff --git a/dist/servoverifier b/dist/servoverifier index f79f69e8..9fbf1cc1 100755 Binary files a/dist/servoverifier and b/dist/servoverifier differ diff --git a/pi/roverd/audio_levels.go b/pi/roverd/audio_levels.go index e92a2b7f..8716d2b5 100644 --- a/pi/roverd/audio_levels.go +++ b/pi/roverd/audio_levels.go @@ -85,9 +85,17 @@ func (c *WSClient) applyMixerGain(control string, gain float64) { db = -60.0 } - dbArg := fmt.Sprintf("%.2fdB", db) - if err := c.trySetMixerControl(control, dbArg); err != nil { - c.log.Printf("audio-levels: amixer set %s=%s failed: %v", control, dbArg, err) + // amixer treats a leading "-" value as an option; set via percent to avoid getopt ambiguity. + percent := int(math.Round((db + 60.0) / 72.0 * 100.0)) + if percent < 0 { + percent = 0 + } + if percent > 100 { + percent = 100 + } + percentArg := fmt.Sprintf("%d%%", percent) + if err := c.trySetMixerControl(control, percentArg); err != nil { + c.log.Printf("audio-levels: amixer set %s=%s failed: %v", control, percentArg, err) } }