This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC2564C: Bluetooth PAN profile bandwidth

Part Number: CC2564C
Other Parts Discussed in Thread: CC256XCQFN-EM

Hi,

I am currently testing the performance of the CC2564C Bluetooth controller, especially its bandwidth when sending or receiving data.

I implemented for that the PAN (Personal Aera Networking) Bluetooth Classic profile in two similar systems, composed of a Raspberry Pi 2 with a Linux Kernel and BlueZ 5.50 and a dev card CC256XCQFN-EM.

This profile uses the BNEP (Bluetooth Network Encapsulation Protocol) allowing me to give each device a local IP and to address them as network components, sending data via IP.

The PAN profile requires one device working as server, and another one working as client (PAN server and PAN client), the only difference being that the server implements a network bridge.

But even if both my systems are exactly similar, I see a major difference in bandwith value depending of the device that is sending the data, PAN server or PAN client: the PAN server sends data at a much higher rate than the PAN client, especially when doing other tasks in parallel (BLE, audio).

Could there be a reason for this difference linked directly to the CC2564C component ?

Thank you in advance for your help.

  • Hi Pierre,

    I'm not too familiar with the BT PAN profile but I will help the best way I can. To make sure I understand your concern, you are wondering why you see different data rates depending on the PAN role our device is playing (e.g. server vs client)? To be clear, according to how the BT PAN spec calls it, you are referring to our device acting as a PAN-NAP vs PANU?

    Jesu

  • Hi Jesu,

    Thank you for your answer, that is exactly my question. My PAN server is indeed a NAP, and my PAN client a PANU. 

    EDIT: In fact, both devices have the NAP UUID, as this seems to be the only way to implement a PAN network with BlueZ (issue also encountered here: https://github.com/mk-fg/fgtk#bt-pan). If a client device with a PANU UUID tries to connect to a server device with a NAP UUID using the network BlueZ API (https://github.com/r10r/bluez/blob/master/doc/network-api.txt, blueZ returns an error with "Operation not supported", though theoretically I agree with your NAP/PANU implementation for PAN server/client.

    Pierre

  • Hi Pierre,

    Thanks for the clarification. How are you measuring the data rates for each role? The difference in data rates might have something to do with how the stack configures the PHY depending on the role the device is taking but I'm not sure yet. Intuitively I would say it makes sense for a server (NAP) to have faster data rates since it has to support multiple clients (U) but I haven't seen anything in the PAN profile BT spec yet to confirm this. 

    You said you are using BlueZ stack?

    Jesu

  • Hi Jesu,

    I'm measuring the data rate using iperf3 (http://manpages.org/iperf3). I'm sending UDP (also tried with TCP) data packets continuously for 30 seconds both ways, to test reception and transmission.

    I indeed also had this thought, that it might be a low level Bluetooth stack layer like PHY reconfiguration that is different for PAN server and client, but indeed nothing in the Bluetooth Specs about that... So i thought it might be specific to the CC2564C.

    I didn't think about the fact that it might be because server has to support multiple clients though, that is interesting because it could explain the fact that data rates are the same if no operation is running in parallel of data transfer, but then if I am for example collecting data from BLE sensors in parallel, server data rates are much higher than client data rates. This may be because PAN server somehow is optimized/configured to run different operations at the same time, as it would do for multiple clients...

    I am using the BlueZ 5.50 stack yes, with an embedded Linux kernel (4.19).

    Pierre 

  • Hi Pierre,

    I didn't think about the fact that it might be because server has to support multiple clients though, that is interesting because it could explain the fact that data rates are the same if no operation is running in parallel of data transfer, but then if I am for example collecting data from BLE sensors in parallel, server data rates are much higher than client data rates. This may be because PAN server somehow is optimized/configured to run different operations at the same time, as it would do for multiple clients...

    So if the server is only communicating with one client you say you see the same data rates? If so that would definitely explain it. Maybe the data rate is capped per connection and since clients can only have one connection there is your limitation. I took a second look through the profile spec and did not see anything either. If you don't mind me asking, is there an issue with the data rates you are seeing or are you asking out of curiosity?

    Jesu

  • Hi Jesu,

    The PAN server only ever communicates with one PAN client, both being exactly the same hardware (Raspberry Pi 2 + CC2564C).

    If I only do data transfer using the PAN profile and the BNEP protocol associated, they both have the same data rate indeed.

    But then if I add another task, running in parallel, to either the PAN client or server, which is not another PAN client but a different task like periodically collecting data from BLE sensors, then the PAN server shows a much better data rate than the PAN client.

    So it's not really about having one or multiple PAN client, but having multiple tasks running on the CC2564C. But it still might be because of PAN server specific configuration allowing a better multitasking, even if the task isn't related to data transfer. 

    So the CC2564C does not have any specific layer reconfiguration that could be different between PAN server and client and that could explain such a difference ?

    No there is no issue with the data rates, I am just testing them, but I'm asking because I wanted to know th reason, and if it was CC2564C specific. In other words, do I have to specify that the component has to be PAN server for a better data rate, or can I configure or at least explain it.

    Pierre

  • Understood. I dug more into the profile spec and core spec and I could not find anything specifically about the profile that would explain this behavior. It could have something to do with what I said before. The role the client plays in the connection and the demand pressure that puts on it. Generally BT slaves have to work more to maintain a connection since they have to follow the rules/link parameters a master sets. When you start adding other tasks that increase the over the air activity the two tasks might be fighting for radio times creating a bottle neck.

    I know it's not a direct answer but I think it makes sense. I don't really think there is a problem here.

    Jesu