GSoC23: Summary Post

Hello everyone. This is the final blog post I will write before Google Summer of Code 2023 ends (hopefully not the final greybus one). In this post, I will summarize my GSoC23 work to make it more accessible to everyone.

Background

During GSoC23, I worked on replacing GBridge by moving SVC and APBridge roles to BeaglePlay CC1352. This allows for simplifying the stack and easier merging to upstream Linux.

The new simplified architecture looks as follows:

In some rudimentary testing, the new setup can easily handle non-stop remote device usage with a latency of around 40ms for each request/response pair, measuring over 1,000,000 requests without any message drops. Since I only have one Beagleconnect Freedom, I have yet to be able to test how the number of nodes affects the performance.

Project Links

Project Goals

Completed

  1. Implement Greybus Node Discovery over mDNS.
  2. Implement SVC Progocol in the Zephyr Application.
  3. Implement APBridge Role in Zephyr Application.
  4. Create a Linux driver to serve as AP.
  5. Implement HDLC communication between the Linux driver and BeaglePlay CC1352 over UART.
  6. Test the complete new BeagleConnect setup with all the parts.

Partially Completed

  1. Get the Linux Driver merged upstream. (Submitted in mailing list but not yet merged)

Benefits of this Project

  • GBridge requires gb-netlink driver, which was never accepted upstream. Eliminating it would allow easier upstreaming of the whole BeagleConnect stack.
  • This, in turn, should help with industry adoption by providing strong guarantees as being part of the Linux Kernel
  • This will also help simplify the whole BeagleConnect stack, thus making it much easier to get started for Beginners.

Blog Posts

  1. GSoC 2023 Introduction
  2. GSoC23: Writing a Hello World Driver for BeaglePlay
  3. GSoC23: Getting started with Zephyr for BeaglePlay CC1352
  4. GSoC23: Linux Serial Device Bus
  5. GSoC23: Concurrency in ZephyrRTOS
  6. GSoC23: Project Status update
  7. GSoC23: BeaglePlay Greybus Demo

Videos

Introduction

Demo

Final

Conclusion

I want to thank my mentors and all the members of beagleboard.org Slack and Discord channels. I would also like to thank kernenewbies and greybus mailing list members for helping with my linux driver-related questions. Finally, I would like to thank Google for running this wonderful open-source program.

I will continue working on getting the Linux Driver merged upstream. I also have some more Zephyr and Greybus ideas lined up, which I will be working on in my free time. Feel free to experiment with the new Greybus setup, and contact me if you need any help.

Consider supporting me if you like my work.