01cd07a
diff --git a/lib/source_impl.cc b/lib/source_impl.cc
01cd07a
index 8f2028b..3918890 100644
01cd07a
--- a/lib/source_impl.cc
01cd07a
+++ b/lib/source_impl.cc
01cd07a
@@ -590,7 +590,7 @@ bool source_impl::set_gain_mode( bool automatic, size_t chan )
01cd07a
   for (source_iface *dev : _devs)
01cd07a
     for (size_t dev_chan = 0; dev_chan < dev->get_num_channels(); dev_chan++)
01cd07a
       if ( chan == channel++ ) {
01cd07a
-        if ( _gain_mode[ chan ] != automatic ) {
01cd07a
+        if ( (_gain_mode.count(chan) == 0) || (_gain_mode[ chan ] != automatic) ) {
01cd07a
           _gain_mode[ chan ] = automatic;
01cd07a
           bool mode = dev->set_gain_mode( automatic, dev_chan );
01cd07a
           if (!automatic) // reapply gain value when switched to manual mode