-
Notifications
You must be signed in to change notification settings - Fork 31
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Is it possible to increase the speed and throughput? #30
Comments
Hi. The GATT MTU doesn't play such a large role in the overall throughput you can achieve. Very small values (like the default value of 23) are a problem, but at the MTU gets larger, the overhead starts being negligible. 185 is a "common" value that used to be the default for iOS devices for a while. What we observe in practice is that without Data Length Extension, with a 150 to 512 GATT MTU, you should see on the order of 10,000 bytes/s of reliable throughput, with a connection interval of 15 to 30ms. You can get much better if you're able to negotiate a short (say <= 15ms) connection event, and Data Length Extension is supported, and the limit on the number of packets per connection event isn't severely limited. In your case, what's the device on the other side of the connection? Another Android phone, or an embedded device, or something else? Are you able to check the values of the negotiated connection interval? Please note that the Link Controller feature, while in code base, isn't really enabled. We have currently left it mostly de-activated, because is requires some additional logic that we haven't had the time to integrate into the Github project yet. But it really shouldn't be needed here, at least not for speed. The main role of the link controller is to allow dynamic changes in the connection parameters, which can currently only really be done when you have full control over an embedded device with a customized BT stack. |
Thanks for your reply. We used two Android devices (Samsung S7 [Android 8] and a S88 Pro [Android 10]) and the included GoldenGate example Android app without modifications so far. The app indicates an RX/TX length of 23 in the Link Controller setup. I don't know if these values are correct with respect to your last paragraph? That said the connection is very slow with just 2000 Bytes at maximum. I tried already to update the MTU settings (GATTLINK_FRAGMENT_SIZE and IP_MTU), but it didn't not really increased the throughput. Nevertheless, on other devices (Pixel 3 and Lenova Tablet) we see a throughput of around 5000 Bytes/s using the original app. Maybe, it is caused by one of the devices. Nevertheless, even 5000 Bytes per second wouldn't be that fast. Am I correct that I can set the GATT MTU using GG_STACK_BUILDER_DEFAULT_GATTLINK_FRAGMENT_SIZE (gg_stack_builder_base.h) and just increase its value? |
…ve_reference_refactoring_part1 to master * commit '7945c6720216024c80b03792e18d1af258f17b8d': FC-5315: add create and free wrapper functions FC-5315: add synchronized annotation to setter and getter FC-5315: apply new native reference interface to CoapEndpoint and coap filter class
Hello developers,
after compiling the demo app for Android and using Gattlink+UDP+DTLS (we will require the same setup and encryption or even something with certificates), I noticed that the throughput is very slow with about 1950 B/s only.
By default, increasing the packet size would allow me to reduce protocol overhead and gain more speed/throughput. I was wondering, which values you would recommend me for tweaking here?
In the "Link Controller Setup" I noticed that the MTU (for BT) is set to 185. By default, BT should support larger packets and I assume this figure is based on the IP/UDP overhead?
What about those values like 1280 for the IP MTU... ? Any chance to increase the throughput somehow?
P.S.
It appears modifying the values in the link controller setup has no effect. At least, there is no update of the settings. Can you confirm that or let me know how to use it?
The text was updated successfully, but these errors were encountered: