diff --git a/README.md b/README.md
index e7728980e32f7d6eeb38f8cc94ab90c6d1bfd4ce..cfbd7a81130ff6aef5a4394d5b49cf6f4339582f 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,16 @@
 # SU aka Spectrum Usage
 
+## Usage
+
+### Environment variables
+
+There are environment variables available to define configuration
+parameters during start:
+
+```
+  SU_DUMP_FILE_PATH=/home/user/su/dump_file.iq
+```
+
 ## Requirements
 
 ### Software
diff --git a/lib/gr/file_sink.py b/lib/gr/file_sink.py
index b1fe6cab4c62fde441d032cc71e549f39a510616..41006b8e3d396bea57614229b13490daa57baa57 100644
--- a/lib/gr/file_sink.py
+++ b/lib/gr/file_sink.py
@@ -1,6 +1,7 @@
 # -*- coding: utf-8 -*-
 
 import os
+import logging
 
 import osmosdr
 
@@ -26,7 +27,7 @@ class FileSink(gr.top_block):
     ):
         gr.top_block.__init__(self, "file_sink_block")
 
-        self.file_path = dump_file
+        self.file_path = str(dump_file)
         self.samp_rate = samp_rate
         self.freq = freq
         self.capture_time = capture_time
@@ -45,10 +46,11 @@ class FileSink(gr.top_block):
         """
         Capture samples to dump file.
         """
-        tb = top_block()
-        tb.start()
-        tb.stop()
-        tb.wait()
+        logging.info("Start '%s' capture." % self.file_path)
+        self.start()
+        self.wait()
+        logging.info("Capture '%s' done." % self.file_path)
+
 
     def get_file_path(self):
         return self.file_path
@@ -86,13 +88,13 @@ class FileSink(gr.top_block):
         # configure additional blocks
         self.blocks_head_0 = blocks.head(gr.sizeof_gr_complex*1, \
                                          int(self.samp_rate)*self.capture_time)
-        self.blocks_file_meta_sink_0 = blocks.file_meta_sink(
-                                        gr.sizeof_gr_complex*1, \
-                                        self.file_path, \
-                                        self.samp_rate, \
-                                        1, \
-                                        blocks.GR_FILE_FLOAT, \
-                                        True, 1000000, "", False)
+        self.blocks_file_meta_sink_0 = blocks.file_meta_sink( \
+                                            gr.sizeof_gr_complex*1, \
+                                            self.file_path, \
+                                            self.samp_rate, \
+                                            1, \
+                                            blocks.GR_FILE_FLOAT, \
+                                            True, 1000000, "", False)
         self.blocks_file_meta_sink_0.set_unbuffered(False)
         # connect blocks
         self.connect((self.blocks_head_0, 0), (self.blocks_file_meta_sink_0, 0))
diff --git a/lib/gui/gui.py b/lib/gui/gui.py
index 7c54b4f5f6beca50c5e3fcf2399e90a0d025fd53..40913cc58ba94e2dc1eac36ec1aaea9f52ec8f0e 100644
--- a/lib/gui/gui.py
+++ b/lib/gui/gui.py
@@ -5,6 +5,7 @@ import os
 import logging
 import datetime
 import re
+import threading
 
 from PyQt5 import QtCore, QtGui, QtWidgets, uic
 
@@ -81,6 +82,8 @@ class SuGui(QtWidgets.QMainWindow):
                 options['device']
             )
 
+            file_sink.capture()
+
 
 
     def stop_button(self):
@@ -231,6 +234,9 @@ class SuGui(QtWidgets.QMainWindow):
                 return {radio_button: value}
 
     def _set_default_dump_file_path(self):
+        """
+        Set default dump file path.
+        """
         if "SU_DUMP_FILE_PATH" in os.environ:
             self.lineEdit_dump_file.setText(os.environ['SU_DUMP_FILE_PATH'])
         else: