diff --git a/pom.xml b/pom.xml
index c9b2ee0..87bf403 100644
--- a/pom.xml
+++ b/pom.xml
@@ -8,7 +8,7 @@
     JavaUSBTool
 
     javausbtool
-    0.3-SNAPSHOT
+    0.4-SNAPSHOT
 
     https://github.com/developersu/javausbtool/
     
diff --git a/src/main/java/javausbtool/AppPreferences.java b/src/main/java/javausbtool/AppPreferences.java
index e1b2942..fd56495 100644
--- a/src/main/java/javausbtool/AppPreferences.java
+++ b/src/main/java/javausbtool/AppPreferences.java
@@ -63,4 +63,7 @@ public class AppPreferences {
 
     public int getReadBufferSize(){ return preferences.getInt("read_buffer_size", 512); }
     public void setReadBufferSize(int value){ preferences.putInt("read_buffer_size", value); }
+
+    public boolean getBufAsHex(){ return preferences.getBoolean("buf_as_hex", false); }
+    public void setBufAsHex(boolean value){preferences.putBoolean("buf_as_hex", value);}
 }
\ No newline at end of file
diff --git a/src/main/java/javausbtool/JFXMain.java b/src/main/java/javausbtool/JFXMain.java
index 34f48ed..7aa81a4 100644
--- a/src/main/java/javausbtool/JFXMain.java
+++ b/src/main/java/javausbtool/JFXMain.java
@@ -28,7 +28,7 @@ import javausbtool.controllers.LandingPageController;
 
 public class JFXMain extends Application {
 
-    public static final String appVersion = "v0.3";
+    public static final String appVersion = "v0.4";
 
     @Override
     public void start(Stage primaryStage) throws Exception{
diff --git a/src/main/java/javausbtool/controllers/LandingPageController.java b/src/main/java/javausbtool/controllers/LandingPageController.java
index 13b351f..4d9c506 100644
--- a/src/main/java/javausbtool/controllers/LandingPageController.java
+++ b/src/main/java/javausbtool/controllers/LandingPageController.java
@@ -46,7 +46,7 @@ public class LandingPageController implements Initializable {
             readBufferSizeTf;
 
     @FXML
-    private Label saveToLbl, sendFileLbl;
+    private Label saveToLbl, sendFileLbl, decHexReprLbl;
 
     @FXML
     private CheckBox handleKernelDrvDetachCb,
@@ -60,6 +60,9 @@ public class LandingPageController implements Initializable {
     private RadioButton readOnStartRb,
             writeOnStartRb;
 
+    @FXML
+    private MenuButton dexHexMenuItem;
+
     private String previouslyOpenedPath;
     private File writeOnStartFile;
     private Task usbCommunications;
@@ -77,14 +80,89 @@ public class LandingPageController implements Initializable {
         handleKernelDrvDetachCb.setSelected(pref.getHandleKernelDrvAutoDetach());
         mandatorySoftResetCb.setSelected(pref.getSoftResetOnHandle());
 
-        readBufferSizeTf.setText(Integer.toString(pref.getReadBufferSize()));
+        if (pref.getBufAsHex())
+            readBufferSizeTf.setText(String.format("%x", pref.getReadBufferSize()));
+        else
+            readBufferSizeTf.setText(String.format("%d", pref.getReadBufferSize()));
 
         vidTf.setTextFormatter(getNumericTextFormatter());
         pidTf.setTextFormatter(getNumericTextFormatter());
         devConfigurationTf.setTextFormatter(getNumericTextFormatter());
         devConfigurationTf.setTextFormatter(getNumericTextFormatter());
 
-        readBufferSizeTf.setTextFormatter(getNumericTextFormatter());
+        MenuItem decItem = new MenuItem("Dec");
+        decItem.setOnAction(event -> {
+            dexHexMenuItem.setText("Dec");
+
+            String oldValue = decHexReprLbl.getText();
+
+            readBufferSizeTf.setTextFormatter(new TextFormatter<>(change -> {
+                String text = change.getControlNewText();
+                if (text.matches("^[0-9]{0,}$")) {
+                    if (! text.isEmpty()) {
+                        try {
+                            decHexReprLbl.setText(String.format("0x%x", Integer.parseInt(text)));
+                        }
+                        catch (Exception e){
+                            return null;
+                        }
+                    }
+                    return change;
+                }
+                return null;
+            }));
+
+            if (! oldValue.isEmpty()){
+                try {
+                    int val = Integer.parseInt(oldValue, 10);
+                    readBufferSizeTf.setText(Integer.toString(val));
+                    decHexReprLbl.setText(String.format("0x%x", val));
+                }
+                catch (Exception e){
+                    readBufferSizeTf.setText("0");
+                    decHexReprLbl.setText("0x0");
+                }
+            }
+        });
+        MenuItem hexItem = new MenuItem("Hex");
+
+        hexItem.setOnAction(event -> {
+            dexHexMenuItem.setText("Hex");
+
+            String oldValue = decHexReprLbl.getText();
+
+            readBufferSizeTf.setTextFormatter(new TextFormatter<>(change -> {
+                String text = change.getControlNewText();
+                if (text.matches("^[0-9a-fA-F]{0,}$")) {
+                    if (! text.isEmpty() ) {
+                        try {
+                            decHexReprLbl.setText(String.format("%d", Integer.parseInt(text, 16)));
+                        }
+                        catch (Exception e){
+                            return null;
+                        }
+                    }
+                    return change;
+                }
+                return null;
+            }));
+
+            if (! oldValue.isEmpty()){
+                try {
+                    int val = Integer.decode(oldValue);
+                    readBufferSizeTf.setText(String.format("%x", val));
+                    decHexReprLbl.setText(Integer.toString(val));
+                }
+                catch (Exception e){
+                    e.printStackTrace();
+                    readBufferSizeTf.setText("0");
+                    decHexReprLbl.setText("0");
+                }
+            }
+        });
+
+        dexHexMenuItem.getItems().add(decItem);
+        dexHexMenuItem.getItems().add(hexItem);
 
         saveToLbl.setText(pref.getSaveTo());
         changeSaveToBtn.setOnAction(event -> setSaveToFolder());
@@ -99,6 +177,11 @@ public class LandingPageController implements Initializable {
 
         startBtn.setOnAction(event -> startProcess());
         stopBtn.setOnAction(event -> stopProcess());
+
+        if (pref.getBufAsHex())
+            hexItem.fire();
+        else
+            decItem.fire();
     }
 
     private TextFormatter getNumericTextFormatter(){
@@ -109,6 +192,12 @@ public class LandingPageController implements Initializable {
         });
     }
 
+    private int getBufferSize() throws NumberFormatException {
+        if (dexHexMenuItem.getText().equals("Dec"))
+            return Integer.parseInt(readBufferSizeTf.getText());
+        return Integer.parseInt(readBufferSizeTf.getText(), 16);
+    }
+
     private void setSaveToFolder() {
         DirectoryChooser dirChooser = new DirectoryChooser();
         dirChooser.setTitle("Save files to...");
@@ -140,6 +229,8 @@ public class LandingPageController implements Initializable {
     }
 
     private void startProcess(){
+        System.out.println(getBufferSize());
+
         logArea.clear();
         if (writeOnStartRb.isSelected() && writeOnStartFile == null){
             logArea.appendText("'Write on start' option selected but no file defined\n");
@@ -158,7 +249,7 @@ public class LandingPageController implements Initializable {
                 Integer.parseInt(devConfigurationTf.getText()),
                 handleKernelDrvDetachCb.isSelected(),
                 mandatorySoftResetCb.isSelected(),
-                Integer.parseInt(readBufferSizeTf.getText()),
+                getBufferSize(),
                 saveToLbl.getText(),
                 readOnStartRb.isSelected(),
                 writeOnStartFile
@@ -211,9 +302,11 @@ public class LandingPageController implements Initializable {
         pref.setSaveTo(saveToLbl.getText());
 
         try {
-            if ((intValue = Integer.parseInt(readBufferSizeTf.getText())) > 0)
+            if ( (intValue = getBufferSize()) > 0)
                 pref.setReadBufferSize(intValue);
         }
         catch (NumberFormatException e){ e.printStackTrace(); }
+
+        pref.setBufAsHex(dexHexMenuItem.getText().equals("Hex"));
     }
 }
diff --git a/src/main/java/javausbtool/usb/UsbLoop.java b/src/main/java/javausbtool/usb/UsbLoop.java
index 2a1d2c6..4f7d103 100644
--- a/src/main/java/javausbtool/usb/UsbLoop.java
+++ b/src/main/java/javausbtool/usb/UsbLoop.java
@@ -29,9 +29,6 @@ import java.nio.IntBuffer;
 import java.time.LocalTime;
 import java.time.format.DateTimeFormatter;
 
-/**
- * Tinfoil processing
- * */
 class UsbLoop {
 
     private LogPrinter logPrinter;
@@ -55,7 +52,7 @@ class UsbLoop {
         this.readBufferCapacity = readBufferCapacity;
         this.readCounter = 0;
 
-        logPrinter.print("============= UsbProtocol =============");
+        logPrinter.print("============= USB =============");
 
         this.saveRepliesFolder = new File(saveRepliesTo+File.separator+ LocalTime.now().format(DateTimeFormatter.ofPattern("HH-mm-ss")));
         saveRepliesFolder.mkdirs();
diff --git a/src/main/resources/landingPage.fxml b/src/main/resources/landingPage.fxml
index 123ab4c..331d712 100644
--- a/src/main/resources/landingPage.fxml
+++ b/src/main/resources/landingPage.fxml
@@ -4,6 +4,7 @@
 
 
 
+
 
 
 
@@ -70,13 +71,15 @@
                            
                         
                         
-                        
+                        
                            
-                              
+                              
                               
-                              
+                              
+                              
                            
                         
+