diff --git a/fmapp2/src/com/caf/fmradio/FMRadioService.java b/fmapp2/src/com/caf/fmradio/FMRadioService.java
index 4807355..7ac7eee 100644
--- a/fmapp2/src/com/caf/fmradio/FMRadioService.java
+++ b/fmapp2/src/com/caf/fmradio/FMRadioService.java
@@ -1239,7 +1239,7 @@
              mRecorder.setAudioSource(MediaRecorder.AudioSource.RADIO_TUNER);
              mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
              mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
-             final int samplingRate = 44100;
+             final int samplingRate = 48000;
              mRecorder.setAudioSamplingRate(samplingRate);
              final int bitRate = 128000;
              mRecorder.setAudioEncodingBitRate(bitRate);
diff --git a/fmapp2/src/com/caf/fmradio/FMStats.java b/fmapp2/src/com/caf/fmradio/FMStats.java
index 063326d..c9fa1fb 100644
--- a/fmapp2/src/com/caf/fmradio/FMStats.java
+++ b/fmapp2/src/com/caf/fmradio/FMStats.java
@@ -2852,7 +2852,7 @@
 
         String chip = mReceiver.getSocName();
 
-        if (chip.equals("cherokee"))
+        if (chip.equals("cherokee") || chip.equals("evros"))
             return true;
         else
             return false;
@@ -2896,22 +2896,28 @@
         TextView colFreq = new TextView(getApplicationContext());
         colFreq.setText(aRes.getFreq());
         colFreq.setTextSize(TypedValue.COMPLEX_UNIT_SP, 25);
-        colFreq.setWidth(width/4);
+        colFreq.setWidth(width/5);
                 /* Add Button to row. */
         tr2.addView(colFreq);
 
         TextView colRMSSI = new TextView(getApplicationContext());
         colRMSSI.setText(aRes.getRSSI());
         colRMSSI.setTextSize(TypedValue.COMPLEX_UNIT_SP, 25);
-        colRMSSI.setWidth(width/4);
+        colRMSSI.setWidth(width/5);
         tr2.addView(colRMSSI);
 
         if(!isRomeChip() && !isHastingsChip()) {
             TextView colIoC = new TextView(getApplicationContext());
             colIoC.setText(aRes.getIoC());
             colIoC.setTextSize(TypedValue.COMPLEX_UNIT_SP, 25);
-            colIoC.setWidth(width/4);
+            colIoC.setWidth(width/5);
             tr2.addView(colIoC);
+
+            TextView colIntDet = new TextView(getApplicationContext());
+            colIntDet.setText(aRes.getIntDet());
+            colIntDet.setTextSize(TypedValue.COMPLEX_UNIT_SP, 25);
+            colIntDet.setWidth(width/5);
+            tr2.addView(colIntDet);
         }
 
         if(isTransportLayerSMD() || isRomeChip() || isCherokeeChip())
@@ -2919,7 +2925,7 @@
              TextView colSINR = new TextView(getApplicationContext());
              colSINR.setText(aRes.getSINR());
              colSINR.setTextSize(TypedValue.COMPLEX_UNIT_SP, 25);
-             colSINR.setWidth(width/4);
+             colSINR.setWidth(width/5);
              tr2.addView(colSINR);
         }
           /* Add row to TableLayout. */
