Higher Layer Losses
Figure 2 shows us that the baseband data rate can vary from 57.6 kilobits per second to 723.3 kilobits per second, depending on the packet types used. However, the data rate that an application sees is affected by more than just the baseband packets. Host protocol layers such as L2CAP and RFCOMM use up bandwidth for header and framing information. For example, if we assume that a regular stream of 20-byte packets is sent via RFCOMM, L2CAP, and HCI, this is what will happen:
RFCOMM adds a byte of address information, a byte of control information, a byte of length indicator information, and a byte of Frame Check Sequence (FCS) information. With these extra 4 bytes, L2CAP receives a 24-byte packet. RFCOMM escapes some characters, so the data rate could be even worse, depending on the data patterns sent.
L2CAP adds 2 bytes of length information and 2 bytes of channel ID onto the packet. So, having received 24 bytes from RFCOMM, L2CAP passes 28 bytes on to HCI.
If the link is using DH1 packets, the payload is 27 bytes, so the L2CAP packet will be split up into two DH1 packets. A DH1 packet can be transmitted once every slot pair, at most, which is once every 1350 microseconds, so 800 packets can be sent each second. Each packet could carry 27 bytes, giving a maximum data rate of 21.6 kilobytes per second, or 172.8 kilobits per second. In practice, however, each pair of packets is carrying 28 bytes, giving a data rate on air of 112.2 kilobytes per second, or 89.6 kilobits per second. The data rate is down by almost half, at 52 percent.
Four hundred packets of 20 bytes each can be sent per second to RFCOMM, so, above RFCOMM, the data rate is only 8 kilobytes per second, or 64 kilobits per second. Now the data rate is down by 37 percent of the maximum on air rate.
If we repeat the calculations and see what transfer rates are achieved above RFCOMM for 20-byte packets, we get the figures in Figure 3. As the packet sizes increase, they become a less efficient way of transporting the small RFCOMM packets, so data rates decrease instead of increase.
Maximum data rates on air compared to example rates at RFCOMM.
This example was chosen to make a point, so the figures are particularly bad, but you should keep in mind that the figures quoted for Bluetooth channel rates in the specification will not translate to the same data rate at the application level.