Added ability to supply device arguments as parameter to applications.
Change adressing #140 enhancement request.
It is possible to select rtl-sdr dongle:
-with device index through commanline parameter: `--args="rtl=1"` (where 1 is the device index). Caution: device index is not unique identifier and it changes on each connection of the dongle.
-with devices serial number, the commandline option in this case has following form: `--args="rtl=00000001"` (where 00000001 is the serial number).

NOTE: You can set the serial number with use of:
```sh
rtl_eeprom -s <serial_number>
```
diff --git a/apps/grgsm_livemon b/apps/grgsm_livemon
index 9c5e8a9..7bf4ee3 100755
--- a/apps/grgsm_livemon
+++ b/apps/grgsm_livemon
@@ -35,7 +35,7 @@
 
 class grgsm_livemon(gr.top_block, Qt.QWidget):
 
-    def __init__(self, fc=939.4e6, gain=30, ppm=0, samp_rate=2000000.052982, shiftoff=400e3):
+    def __init__(self, fc=939.4e6, gain=30, ppm=0, samp_rate=2000000.052982, shiftoff=400e3, args=""):
         gr.top_block.__init__(self, "Gr-gsm Livemon")
         Qt.QWidget.__init__(self)
         self.setWindowTitle("Gr-gsm Livemon")
@@ -86,7 +86,7 @@
         self._fc_slider_range = Range(925e6, 1990e6, 2e5, fc, 100)
         self._fc_slider_win = RangeWidget(self._fc_slider_range, self.set_fc_slider, "Frequency", "counter_slider", float)
         self.top_layout.addWidget(self._fc_slider_win)
-        self.rtlsdr_source_0 = osmosdr.source( args="numchan=" + str(1) + " " + "" )
+        self.rtlsdr_source_0 = osmosdr.source( args="numchan=" + str(1) + " " + args )
         self.rtlsdr_source_0.set_sample_rate(samp_rate)
         self.rtlsdr_source_0.set_center_freq(fc_slider-shiftoff, 0)
         self.rtlsdr_source_0.set_freq_corr(ppm_slider, 0)
@@ -260,13 +260,16 @@
         help="Set samp_rate [default=%default]")
     parser.add_option("-o", "--shiftoff", dest="shiftoff", type="eng_float", default=eng_notation.num_to_str(400e3),
         help="Set shiftoff [default=%default]")
+    parser.add_option("", "--args", dest="args", type="string", default="",
+        help="Set device arguments [default=%default]")
+                
     (options, args) = parser.parse_args()
 #    from distutils.version import StrictVersion
 #    if StrictVersion(Qt.qVersion()) >= StrictVersion("4.5.0"):
 #        Qt.QApplication.setGraphicsSystem(gr.prefs().get_string('qtgui','style','raster'))
     Qt.QApplication.setGraphicsSystem(gr.prefs().get_string('qtgui','style','raster'))
     qapp = Qt.QApplication(sys.argv)
-    tb = grgsm_livemon(fc=options.fc, gain=options.gain, ppm=options.ppm, samp_rate=options.samp_rate, shiftoff=options.shiftoff)
+    tb = grgsm_livemon(fc=options.fc, gain=options.gain, ppm=options.ppm, samp_rate=options.samp_rate, shiftoff=options.shiftoff, args=options.args)
     tb.start()
     tb.show()
 
diff --git a/apps/grgsm_livemon.grc b/apps/grgsm_livemon.grc
index fc740fa..22c30b0 100644
--- a/apps/grgsm_livemon.grc
+++ b/apps/grgsm_livemon.grc
@@ -1,5 +1,5 @@
 <?xml version='1.0' encoding='utf-8'?>
-<?grc format='1' created='3.7.10'?>
+<?grc format='1' created='3.7.8'?>
 <flow_graph>
   <timestamp>Sat Dec 13 10:49:59 2014</timestamp>
   <block>
@@ -9,6 +9,10 @@
       <value>Piotr Krysik</value>
     </param>
     <param>
+      <key>alias</key>
+      <value></value>
+    </param>
+    <param>
       <key>window_size</key>
       <value>2280, 1024</value>
     </param>
@@ -41,10 +45,6 @@
       <value>qt_gui</value>
     </param>
     <param>
-      <key>hier_block_src_path</key>
-      <value>.:</value>
-    </param>
-    <param>
       <key>id</key>
       <value>grgsm_livemon</value>
     </param>
@@ -53,18 +53,10 @@
       <value>0</value>
     </param>
     <param>
-      <key>qt_qss_theme</key>
-      <value></value>
-    </param>
-    <param>
       <key>realtime_scheduling</key>
       <value></value>
     </param>
     <param>
-      <key>run_command</key>
-      <value>{python} -u {filename}</value>
-    </param>
-    <param>
       <key>run_options</key>
       <value>prompt</value>
     </param>
@@ -271,6 +263,49 @@
     </param>
   </block>
   <block>
+    <key>parameter</key>
+    <param>
+      <key>alias</key>
+      <value></value>
+    </param>
+    <param>
+      <key>comment</key>
+      <value></value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(872, 11)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>id</key>
+      <value>args</value>
+    </param>
+    <param>
+      <key>label</key>
+      <value>Device Arguments</value>
+    </param>
+    <param>
+      <key>short_id</key>
+      <value></value>
+    </param>
+    <param>
+      <key>type</key>
+      <value>string</value>
+    </param>
+    <param>
+      <key>value</key>
+      <value>""</value>
+    </param>
+  </block>
+  <block>
     <key>blocks_rotator_cc</key>
     <param>
       <key>alias</key>
@@ -960,7 +995,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(880, 11)</value>
+      <value>(1016, 11)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -2601,7 +2636,7 @@
     </param>
     <param>
       <key>args</key>
-      <value></value>
+      <value>args</value>
     </param>
     <param>
       <key>_enabled</key>
@@ -2728,7 +2763,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(16, 75)</value>
+      <value>(16, 115)</value>
     </param>
     <param>
       <key>_rotation</key>
diff --git a/apps/grgsm_scanner b/apps/grgsm_scanner
index 4fd7c88..94bba43 100755
--- a/apps/grgsm_scanner
+++ b/apps/grgsm_scanner
@@ -201,7 +201,7 @@
 
 class wideband_scanner(gr.top_block):
     
-    def __init__(self, rec_len=3, sample_rate=2e6, carrier_frequency=939e6, ppm=0):
+    def __init__(self, rec_len=3, sample_rate=2e6, carrier_frequency=939e6, ppm=0, args=""):
         
         gr.top_block.__init__(self, "Wideband Scanner")
         
@@ -211,7 +211,8 @@
         self.ppm = ppm
         
         # if no file name is given process data from rtl_sdr source
-        self.rtlsdr_source = osmosdr.source( args="numchan=" + str(1) + " " + "" )
+        print "Args=",args
+        self.rtlsdr_source = osmosdr.source( args="numchan=" + str(1) + " " + args )
         
         self.rtlsdr_source.set_sample_rate(sample_rate)
         
@@ -302,10 +303,12 @@
                       help="Specify the GSM band for the frequency.\nAvailable bands are: " + bands_list)
     parser.add_option("-s", "--samp-rate", dest="samp_rate", type="float", default=2e6,
         help="Set sample rate [default=%default] - allowed values even_number*0.2e6")
-    parser.add_option("-p", "--ppm", dest="ppm", type="intx", default=-45,
+    parser.add_option("-p", "--ppm", dest="ppm", type="intx", default=0,
         help="Set frequency correction in ppm [default=%default]")
     parser.add_option("-g", "--gain", dest="gain", type="eng_float", default=24.0,
         help="Set gain [default=%default]")
+    parser.add_option("", "--args", dest="args", type="string", default="",
+        help="Set device arguments [default=%default]")
     parser.add_option("--speed", dest="speed", type="intx", default=4,
         help="Scan speed [default=%default]. Value range 0-5.")
     parser.add_option("-v", "--verbose", action="store_true", 
@@ -351,7 +354,7 @@
         scanner = wideband_scanner(rec_len=6-options.speed, 
                             sample_rate=options.samp_rate, 
                             carrier_frequency=current_freq, 
-                            ppm=options.ppm)
+                            ppm=options.ppm, args=options.args)
 
         # start recording
         scanner.start()
diff --git a/apps/helpers/grgsm_capture.py b/apps/helpers/grgsm_capture.py
index 98696f4..bdce7d8 100755
--- a/apps/helpers/grgsm_capture.py
+++ b/apps/helpers/grgsm_capture.py
@@ -38,7 +38,7 @@
 
 class grgsm_capture(gr.top_block):
 
-    def __init__(self, fc, gain, samp_rate, ppm, arfcn, cfile=None, burst_file=None, band=None, verbose=False, rec_length=None):
+    def __init__(self, fc, gain, samp_rate, ppm, arfcn, cfile=None, burst_file=None, band=None, verbose=False, rec_length=None, args=""):
 
         gr.top_block.__init__(self, "Gr-gsm Capture")
                 
@@ -209,6 +209,9 @@
     parser.add_option("--band", dest="band", 
                       help="Specify the GSM band for the frequency.\nAvailable bands are: " + bands_list + ".\nIf no band is specified, it will be determined automatically, defaulting to 0." )
     
+    parser.add_option("", "--args", dest="args", type="string", default="",
+        help="Set device arguments [default=%default]")
+
     parser.add_option("-v", "--verbose", action="store_true", 
                       help="If set, the captured bursts are printed to stdout")