Welcome to the new site for BeagleBoard.org GSoC 2024 projects!

BeagleConnect Technology#

See beagleboard/beagleconnect. The BeagleConnect Freedom board runs the Zephyr RTOS has mikroBUS ports along with BLE and Sub-GHz radios on it. The code to enable a Linux gateway for the Sub-GHz radio is in the repository.

Rewrite GBridge

Greybus was created to enable modular mobile phones. We are reusing it to drastically simplify developing embedded systems. Fundamental to using Greybus for IoT (embedded systems) is a tool called GBridge. GBridge is a combination of a kernel module called gb-netlink and a userspace application called gbridge that enables routing of Greybus traffic across various transports, including IP. It was initially written as a proof of concept and has not been developed into a stable, production tool. It needs to be rewritten with better error handling and, potentially, to be part of the Linux kernel itself. Further, additional hooks, probably through debugfs, should be provided to report on network status, including signal strength. This might further require patches to the wpanusb and bcfserial drivers to expose additional debug information.

Zephyr SDK

Beagle will be using Visual Studio Code as an IDE moving forward. We want to simplify development targeting Zephyr by hosting a quality set of development tools targeting BeagleConnect Freedom.

Upstream wpanusb and bcfserial

These are the drivers that are used to enable Linux to use a BeagleConnect Freedom as a SubGHz IEEE802.15.4 radio (gateway). They need to be part of upstream Linux to simplify on-going support. There are several gaps that are known before they are acceptable upstream

Some notes from Stefan Schmidt:

  1. The wpanusb linux driver is missing quite a few driver ops (listen before talk, set frame retries). I added rough sketches but these are non functional due to 2.

  2. The zephyr firmware side needs to implement these ops as well and hook it up to the zephyr radio_api

  3. A way to read the permanent extended address from the device to use in Linux is needed

  4. The generic aspect of the firmware driver combo is missing completely. Band, supported channel, power levels, etc is all hard-coded in the linux driver and not queried from the device firmware. Its not even giving the page on which a channel is being set when changing it.

  5. More driver ops are coming in right now as there is heavy work towards support management frames as well as active and passive scanning on the Linux stack. Which means these would need proper handling on the firmware side as well.

BeagleConnect(Greybus) host on WIO Terminal

Greybus for Zephyr Updates

  • Complexity: 350 hours

  • Goal: Support all the relevant peripherals(SPI, UART, PWM, ADC, GPIO IRQ) on BeagleConnect Freedom on Greybus for Zephyr, this requires adding platform specific changes to enable the protocols and interface to the existing NuttX sources, once the protocols are tested over greybus-for-zephyr, the mikrobus kernel driver needs to be updated to be able to support mikrobus add-on boards on these buses. An ideal end goal for the project would be to test one mikrobus add-on board of each category over greybus with the corresponding device driver in kernel.

  • Hardware Skills: Basic wiring

  • Software Skills: C, Linux Kernel, RTOS

  • Possible Mentors: Vaishnav, jkridner

  • Rating: Medium

  • Upstream Repository: jadonk/greybus-for-zephyr

  • References:

Micropython for BeagleConnect Freedom

  • Goal: Enable Micropython for BeagleConnect Freedom along with basic GPIO, I2C, SPI, PWM, ADC drivers.

  • Hardware Skills: Basic wiring

  • Software Skills: C, RTOS

  • Possible Mentors: jkridner, Vaishnav, lorforlinux

  • Expected Size of Project: 350 hrs

  • Rating: Medium

  • Upstream Repository: micropython/micropython

  • References: