diff --git a/cmake_targets/build_oai b/cmake_targets/build_oai
index 34f6edf5055006a374856130ea868d14da95775e..6bf30c54fec4b026863301031701041005ee80d7 100755
--- a/cmake_targets/build_oai
+++ b/cmake_targets/build_oai
@@ -728,7 +728,7 @@ function main() {
         echo_info "liboai_transpro.so is linked to ETHERNET transport"
       fi
 
-    if [ "$RFSIMULATOR" == "true" -o "$HW" == "OAI_SIMU" ] ; then
+    if [ "$HW" == "OAI_SIMU" ] ; then
         echo_info "Compiling rfsimulator"
         compilations \
             $lte_build_dir rfsimulator \
diff --git a/doc/BUILD.md b/doc/BUILD.md
index eb4f390421cc1a7cd37ffbed36d40e8b890a802e..c34db4f85e0a58544d57aedf868b664d8925ad95 100644
--- a/doc/BUILD.md
+++ b/doc/BUILD.md
@@ -54,7 +54,7 @@ cd cmake_targets/
 ```
 
 - The `-I` option is to install pre-requisites, you only need it the first time you build the softmodem or when some oai dependencies have changed. 
-- The `-w` option is to select the radio head support you want to include in your build. Radio head support is provided via a shared library, which is called the "oai device" The build script creates a soft link from `liboai_device.so` to the true device which will be used at run-time (here the USRP one,`liboai_usrpdevif.so` . USRP is the only hardware tested today in the Continuous Integration process.
+- The `-w` option is to select the radio head support you want to include in your build. Radio head support is provided via a shared library, which is called the "oai device" The build script creates a soft link from `liboai_device.so` to the true device which will be used at run-time (here the USRP one,`liboai_usrpdevif.so` . USRP is the only hardware tested today in the Continuous Integration process. The RF simulator[RF simulator](../targets/ARCH/rfsimulator/README.md) is implemented as a specific device replacing RF hardware, it can be build using `-w SIMU` option.
 - `--eNB` is to build the `lte-softmodem` executable and all required shared libraries
 - `--UE` is to build the `lte-uesoftmodem` executable and all required shared libraries
 
diff --git a/targets/ARCH/rfsimulator/README.md b/targets/ARCH/rfsimulator/README.md
index 2af138c738be183a6ca3608e4efa0dec60d08698..0b303bbcd848fe8bc5d2798f8bbf974aceec98c3 100644
--- a/targets/ARCH/rfsimulator/README.md
+++ b/targets/ARCH/rfsimulator/README.md
@@ -6,31 +6,52 @@ As much as possible, it works like a RF board, but not in realtime: it can run f
 
 #build
 
-## From build_oai
-You can build it the same way, and together with actual RF driver
+## From [build_oai](../../../doc/BUILD.md) script
+The RF simulator is implemented as an oai device and is always build when you build the oai eNB or the oai UE.
+Using the `-w SIMU` option it is possible to just re-build the RF simulator device 
 
 Example:
 ```bash
-./build_oai --ue-nas-use-tun --UE --eNB -w SIMU
+./build_oai --UE --eNB
+Will compile UE
+Will compile eNB
+CMAKE_CMD=cmake ..
+No local radio head and no transport protocol selected
+No radio head has been selected (HW set to None)
+No transport protocol has been selected (TP set to None)
+RF HW set to None
+Flags for Deadline scheduler: False
+..................
+.................
+Compiling rfsimulator
+Log file for compilation has been written to: /usr/local/oai/rfsimu_config/openairinterface5g/cmake_targets/log/rfsimulator.Rel14.txt
+rfsimulator compiled
+......................
+......................
 ```
-It is also possible to build actual RF and use choose on each run:
-```bash
-./build_oai --ue-nas-use-tun --UE --eNB -w USRP --rfsimulator
-```
-Will build both the eNB (lte-softmodem) and the UE (lte-uesoftmodem)
-We recommend to use the option --ue-nas-use-tun that is much simpler to use than the OAI kernel driver.
 
 ## Add the rfsimulator after initial build
-After any regular build, you can compile the driver
+After any regular build, you can compile the device, from the build directory
 ```bash
-cd <the_compilation_dir_from_bouild_oai_script>/build
+cd <path to oai sources>/openairinterface5g/cmake_targets/lte_build_oai/build
 make rfsimulator
 ```
-Then, you can use it freely
+this is equivalent to using `-w SIMU` when running the `build_oai` script.
+e 
 
 # Usage
-Setting the env variable RFSIMULATOR enables the RF board simulator
-It should the set to "server" in the eNB or gNB
+To use the RF simulator you add the  `--rfsim` option to the command line. By default the RF simulator device will try to connect to host 127.0.0.1, port 4043, which is usually the behavior for the UE.
+The RF simulator is using the configuration module, its parameters are defined in a specific section called "rfsimulator"
+
+| parameter            | usage                                                                                                             | default |
+|:---------------------|:------------------------------------------------------------------------------------------------------------------|----:|
+| serveraddr           | ip address to connect to, or "enb" to behave as a tcp server                                                      | 127.0.0.1 |
+| serverport           | port number to connect to or to listen on (eNB, which behaved as a tcp server)                                    | 4043 |
+| options              | list of comma separated run-time options, two are supported: `chanmod` to enable channel modeling and `saviq` to write transmitted iqs to a file | all options disabled  |
+| modelname            | Name of the channel model to apply on received iqs when the `chanmod` option is enabled                           | AWGN |
+| IQfile               | Path to the file to be used to store iqs, when the `saviq`option is enabled                                       | /tmp/rfsimulator.iqs |
+        
+Setting the env variable RFSIMULATOR can be used instead of using the serveraddr parameter, it is to preserve compatibility with previous version.
 
 ## 4G case
 For the UE, it should be set to the IP address of the eNB
@@ -38,13 +59,14 @@ example:
 ```bash
 sudo RFSIMULATOR=192.168.2.200 ./lte-uesoftmodem -C 2685000000 -r 50 
 ```
-Except this, the UE and the eNB can be used as it the RF is real
+Except this, the UE and the eNB can be used as it the RF is real. noS1 mode can also be used with the RF simulator.
 
-If you reach 'RA not active' on UE, be careful to generate a valid SIM
+If you reach 'RA not active' on UE, be careful to generate a valid SIM. 
 ```bash
 $OPENAIR_DIR/targets/bin/conf2uedata -c $OPENAIR_DIR/openair3/NAS/TOOLS/ue_eurecom_test_sfr.conf -o .
 ```
 ## 5G case
+5G RF simulator will be aligned with 4G as the effort to merge 5G specifuc branches into develop is making progress.
 After regular build, add the simulation driver
 (don't use ./build_oai -w SIMU until we merge 4G and 5G branches)
 ```bash
@@ -66,7 +88,7 @@ In UE, you can add "-d" to get the softscope
 
 You can store emitted I/Q samples:
 
-If you set the environment variable: saveIQfile to a file name
+If you set the option `saviq`
 The simulator will write all IQ samples into this file
 
 Then, you can replay with the executable "replay_node"
@@ -83,11 +105,11 @@ If you have existing stored I/Q, you can adpat the tool "replay_node" to convert
 The format intend to be compatible with the OAI store/replay feature on USRP
 
 ### Channel simulation
-The RF channel simulator is called.
-In current version all channel paramters are hard coded in the call to:
+When the `chanmod` option is enabled, The RF channel simulator is called.
+In current version all channel paramters are set depending on the model name via a call to:
 ```
 new_channel_desc_scm(bridge->tx_num_channels,bridge->rx_num_channels,
-                                          AWGN,
+                                          <model name>,
                                           bridge->sample_rate,
                                           bridge->tx_bw,
                                           0.0, // forgetting_factor
@@ -95,7 +117,7 @@ new_channel_desc_scm(bridge->tx_num_channels,bridge->rx_num_channels,
                                           0); // path_loss in dB
 ```
 Only the input noise can be changed on command line with -s parameter.
-With path loss = 0 set "-s 5" to see a little noise
+With path loss = 0 set "-s 5" to see a little noise. -s is a shortcut to `channelmod.s`. It is expected to enhance the channel modedelization flexibility via the addition of more parameters in the channelmod section.
 
 #Caveacts
 Still issues in power control: txgain, rxgain are not used