diff --git a/Demos/Host/Incomplete/BluetoothHost/BluetoothEvents.c b/Demos/Host/Incomplete/BluetoothHost/BluetoothEvents.c
index 17cf7ede4ee27db18aed069162e22e353072b11f..1b7997adc0e6b9c017348ef7b2216e80784be6d9 100644
--- a/Demos/Host/Incomplete/BluetoothHost/BluetoothEvents.c
+++ b/Demos/Host/Incomplete/BluetoothHost/BluetoothEvents.c
@@ -154,3 +154,16 @@ void Bluetooth_PacketReceived(void* Data, uint16_t DataLen, Bluetooth_Channel_t*
 			break;
 	}
 }
+
+/** RFCOMM layer callback for when a packet is received on an open RFCOMM channel.
+ *
+ *  \param[in] RFCOMMChannel  RFCOMM channel that the data was directed to
+ *  \param[in] DataLen        Length of the received data, in bytes
+ *  \param[in] Data           Pointer to a buffer where the received data is stored
+ */
+void RFCOMM_DataReceived(RFCOMM_Channel_t* const RFCOMMChannel, uint16_t DataLen, const uint8_t* Data)
+{
+	/* Write the received bytes to the serial port */
+	for (uint8_t i = 0; i < DataLen; i++)
+	  putchar(Data[i]);
+}
diff --git a/Demos/Host/Incomplete/BluetoothHost/Lib/RFCOMM.c b/Demos/Host/Incomplete/BluetoothHost/Lib/RFCOMM.c
index e0446c0e79ce040782135e5480364963322005d5..ae4e7832805a1eed79c0fa920846be8f03be1c01 100644
--- a/Demos/Host/Incomplete/BluetoothHost/Lib/RFCOMM.c
+++ b/Demos/Host/Incomplete/BluetoothHost/Lib/RFCOMM.c
@@ -352,11 +352,9 @@ static void RFCOMM_ProcessUIH(const RFCOMM_Address_t* const FrameAddress, const
 	BT_RFCOMM_DEBUG(1, "<< UIH Received");
 	BT_RFCOMM_DEBUG(2, "-- DLCI 0x%02X", FrameAddress->DLCI);
 	BT_RFCOMM_DEBUG(2, "-- Length 0x%02X", FrameLength);
-		
-	puts("RFCOMM Data: ");
 	
-	for (uint8_t i = 0; i < FrameLength; i++)
-	  printf("0x%02X (%c) ", FrameData[i], FrameData[i]);
+	RFCOMM_Channel_t* RFCOMMChannel = RFCOMM_GetChannelData(FrameAddress->DLCI);
 	
-	printf("\r\n");
+	if (RFCOMMChannel != NULL)
+	  RFCOMM_DataReceived(RFCOMMChannel, FrameLength, FrameData);
 }
diff --git a/Demos/Host/Incomplete/BluetoothHost/Lib/RFCOMM.h b/Demos/Host/Incomplete/BluetoothHost/Lib/RFCOMM.h
index e557858f27e2d45a8119e7ba6e69913f0b833b2e..d23d6350160dfdefa4c7b210adeb01cab24c5663 100644
--- a/Demos/Host/Incomplete/BluetoothHost/Lib/RFCOMM.h
+++ b/Demos/Host/Incomplete/BluetoothHost/Lib/RFCOMM.h
@@ -107,6 +107,8 @@
 		void              RFCOMM_SendChannelSignals(const RFCOMM_Channel_t* const RFCOMMChannel,
 		                                            Bluetooth_Channel_t* const BluetoothChannel);
 
+		void              RFCOMM_DataReceived(RFCOMM_Channel_t* const RFCOMMChannel, uint16_t DataLen, const uint8_t* Data);
+
 		RFCOMM_Channel_t* RFCOMM_GetFreeChannelEntry(const uint8_t DLCI);
 		RFCOMM_Channel_t* RFCOMM_GetChannelData(const uint8_t DLCI);
 		uint16_t          RFCOMM_GetVariableFieldValue(const uint8_t** BufferPos);