diff --git a/targets/ARCH/BLADERF/USERSPACE/LIB/bladerf_lib.c b/targets/ARCH/BLADERF/USERSPACE/LIB/bladerf_lib.c
index d515a206ae8e0683ff5ba4529107fe6fbb0b6f5a..b9bcf8ed2abff0d29cf777a17200d3023e74c8d7 100644
--- a/targets/ARCH/BLADERF/USERSPACE/LIB/bladerf_lib.c
+++ b/targets/ARCH/BLADERF/USERSPACE/LIB/bladerf_lib.c
@@ -38,15 +38,26 @@
 #include <inttypes.h>
 #include "bladerf_lib.h"
 
+/** @addtogroup _BLADERF_PHY_RF_INTERFACE_
+ * @{
+ */
+
+//! Number of BladeRF devices 
 int num_devices=0;
+
 /*These items configure the underlying asynch stream used by the the sync interface. 
  */
 
-int trx_brf_init(openair0_device *openair0) {
+/*! \brief BladeRF Init function (not used at the moment)
+ * \param device RF frontend parameters set by application
+ */
+int trx_brf_init(openair0_device *device) {
   
 }
 
- 
+/*! \brief get current timestamp
+ *\param device the hardware to use 
+ */
 openair0_timestamp trx_get_timestamp(openair0_device *device) {
   int status;
   struct bladerf_metadata meta;
@@ -60,17 +71,29 @@ openair0_timestamp trx_get_timestamp(openair0_device *device) {
   return meta.timestamp;
 }
 
-
-int trx_brf_start(openair0_device *openair0) {
+/*! \brief Start BladeRF
+ *\param device the hardware to use 
+ */
+int trx_brf_start(openair0_device *device) {
 
   return 0;
 }
 
+/*! \brief Get BladeRF stats
+ *\param device the hardware to use 
+ */
 static void trx_brf_stats(openair0_device *device){
 
 
 }
 
+/*! \brief Called to send samples to the BladeRF RF target
+      @param device pointer to the device structure specific to the RF hardware target
+      @param timestamp The timestamp at whicch the first sample MUST be sent 
+      @param buff Buffer which holds the samples
+      @param nsamps number of samples to be sent
+      @param cc index of the component carrier
+*/ 
 static int trx_brf_write(openair0_device *device,openair0_timestamp ptimestamp, void **buff, int nsamps, int cc) {
   
   int status, i;
@@ -106,6 +129,16 @@ static int trx_brf_write(openair0_device *device,openair0_timestamp ptimestamp,
   return(0);
 }
 
+/*! \brief Receive samples from hardware.
+ * Read \ref nsamps samples from each channel to buffers. buff[0] is the array for
+ * the first channel. *ptimestamp is the time at which the first sample
+ * was received.
+ * \param device the hardware to use
+ * \param[out] ptimestamp the time at which the first sample was received.
+ * \param[out] buff An array of pointers to buffers for received samples. The buffers must be large enough to hold the number of samples \ref nsamps.
+ * \param nsamps Number of samples. One sample is 2 byte I + 2 byte Q => 4 byte.
+ * \param cc  Index of component carrier
+*/
 static int trx_brf_read(openair0_device *device, openair0_timestamp *ptimestamp, void **buff, int nsamps, int cc) {
   int status, ret;
   
@@ -140,6 +173,9 @@ static int trx_brf_read(openair0_device *device, openair0_timestamp *ptimestamp,
 
 }
 
+/*! \brief Terminate operation of the BladeRF transceiver -- free all associated resources 
+ * \param device the hardware to use
+ */
 int trx_brf_end(openair0_device *device) {
 
   int status;
@@ -155,36 +191,59 @@ int trx_brf_end(openair0_device *device) {
   return 0;
 }
 
-
+/*! \brief print the BladeRF statistics  
+* \param device the hardware to use
+* \returns  0 on success
+*/
 int trx_brf_get_stats(openair0_device* device) {
 
   return(0);
 
 }
 
+/*! \brief Reset the BladeRF statistics  
+* \param device the hardware to use
+* \returns  0 on success
+*/
 int trx_brf_reset_stats(openair0_device* device) {
 
   return(0);
 
 }
 
+/*! \brief Stop USRP
+ * \param device the hardware to use
+ */
 int trx_brf_stop(openair0_device* device) {
 
   return(0);
 
 }
 
+/*! \brief Set frequencies (TX/RX)
+ * \param device the hardware to use
+ * \returns 0 in success 
+ */
 int trx_brf_set_freq(openair0_device* device) {
 
   return(0);
 
 }
+
+/*! \brief Set Gains (TX/RX)
+ * \param device the hardware to use
+ * \returns 0 in success 
+ */
 int trx_brf_set_gains(openair0_device* device) {
 
   return(0);
 
 }
 
+/*! \brief Initialize Openair BLADERF target. It returns 0 if OK 
+ * \param device the hardware to use
+ * \param openair0_cfg RF frontend parameters set by application
+ */
 int openair0_dev_init_bladerf(openair0_device *device, openair0_config_t *openair0_cfg) {
 
   int status;
@@ -322,6 +381,9 @@ int openair0_dev_init_bladerf(openair0_device *device, openair0_config_t *openai
   return 0;
 }
 
+/*! \brief bladeRF error report 
+ * \param status 
+ */
 int brf_error(int status) {
   
   //exit(-1);
@@ -329,7 +391,9 @@ int brf_error(int status) {
 }
 
 
-
+/*! \brief Open BladeRF from serial port
+ * \param serial name of serial port on which to open BladeRF device
+ */
 struct bladerf * open_bladerf_from_serial(const char *serial) {
 
   int status;
@@ -356,6 +420,10 @@ struct bladerf * open_bladerf_from_serial(const char *serial) {
     return dev;
   }
 }
+
+/*! \brief Get BladeRF log level
+ * \param log_level log level
+ */
 int get_brf_log_level(int log_level){
 
   int level=BLADERF_LOG_LEVEL_INFO;
@@ -384,3 +452,4 @@ int get_brf_log_level(int log_level){
   }
   return level;
 }
+/*@}*/
diff --git a/targets/ARCH/BLADERF/USERSPACE/LIB/bladerf_lib.h b/targets/ARCH/BLADERF/USERSPACE/LIB/bladerf_lib.h
index 15e1d39da744b508138763344ede60c2267f33fe..3a05c80e5c8f83e8d7e7434e3e5ead3484493709 100644
--- a/targets/ARCH/BLADERF/USERSPACE/LIB/bladerf_lib.h
+++ b/targets/ARCH/BLADERF/USERSPACE/LIB/bladerf_lib.h
@@ -37,45 +37,69 @@
 #include "common_lib.h"
 #include "log.h"
 
+/** @addtogroup _BLADERF_PHY_RF_INTERFACE_
+ * @{
+ */
+
+/*! \brief BladeRF specific data structure */ 
 typedef struct {
 
-  // opaque BRF data struct
+  //! opaque BladeRF device struct. An empty ("") or NULL device identifier will result in the first encountered device being opened (using the first discovered backend)
   struct bladerf *dev;
-  // An empty ("") or NULL device identifier will result in the first encountered device being opened (using the first discovered backend)
-
+  
+  //! Number of buffers
   unsigned int num_buffers;
+  //! Buffer size 
   unsigned int buffer_size;
+  //! Number of transfers
   unsigned int num_transfers;
+  //! RX timeout
   unsigned int rx_timeout_ms;
+  //! TX timeout
   unsigned int tx_timeout_ms;
-
+  //! Metadata for RX
   struct bladerf_metadata meta_rx;
+  //!Metadata for TX
   struct bladerf_metadata meta_tx;
-
+  //! Sample rate
   unsigned int sample_rate;
-  // time offset between transmiter timestamp and receiver timestamp;
+  //! time offset between transmiter timestamp and receiver timestamp;
   double tdiff;
-  // use brf_time_offset to get this value
+  //! TX number of forward samples use brf_time_offset to get this value
   int tx_forward_nsamps; //166 for 20Mhz
 
 
   // --------------------------------
   // Debug and output control
   // --------------------------------
+  //! Number of underflows
   int num_underflows;
+  //! Number of overflows
   int num_overflows;
+  //! number of sequential errors
   int num_seq_errors;
+  //! number of RX errors
   int num_rx_errors;
+  //! Number of TX errors
   int num_tx_errors;
 
+  //! timestamp of current TX
   uint64_t tx_current_ts;
+  //! timestamp of current RX
   uint64_t rx_current_ts;
+  //! number of actual samples transmitted
   uint64_t tx_actual_nsamps;
+  //! number of actual samples received
   uint64_t rx_actual_nsamps;
+  //! number of TX samples
   uint64_t tx_nsamps;
+  //! number of RX samples
   uint64_t rx_nsamps;
+  //! number of TX count
   uint64_t tx_count;
+  //! number of RX count
   uint64_t rx_count;
+  //! timestamp of RX packet
   openair0_timestamp rx_timestamp;
 
 } brf_state_t;
@@ -84,3 +108,4 @@ typedef struct {
  */
 
 int brf_error(int status);
+/*@}*/
diff --git a/targets/DOCS/Doxyfile b/targets/DOCS/Doxyfile
index 7ebc15f6746733865f011e6149a0d5f4e99012d2..ac6ee99480063889df7bec664722b23229e47ff9 100644
--- a/targets/DOCS/Doxyfile
+++ b/targets/DOCS/Doxyfile
@@ -795,8 +795,8 @@ INPUT                  = $(OPENAIR1_DIR)/PHY/defs.h \
                          $(OPENAIR2_DIR)/NETWORK_DRIVER/MESH/proto_extern.h \
                          $(OPENAIR_TARGETS)/ARCH/COMMON/common_lib.h \
                          $(OPENAIR_TARGETS)/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp \
-                         $(OPENAIR_TARGETS)/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp \
-                         $(OPENAIR_TARGETS)/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp
+                         $(OPENAIR_TARGETS)/ARCH/BLADERF/USERSPACE/LIB/bladerf_lib.c \
+                         $(OPENAIR_TARGETS)/ARCH/BLADERF/USERSPACE/LIB/bladerf_lib.h
 
 # This tag can be used to specify the character encoding of the source files
 # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses