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.
Complexity: 350 hours
Goal: GBridge should be submitted upstream, stable and provide debug visibility
Hardware Skills: Familiarity with wireless communication
Software Skills: C, Rust (optional)
Possible Mentors: jkridner, vaishnav
Rating: Medium
Upstream Repository: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
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.
Complexity: 175 hours
Goal: Visual Studio Code environment hosted by Beagles ready to develop on Zephyr for BeagleConnect Freedom
Hardware Skills: flashing MCU boards
Software Skills: C, RTOS
Possible Mentors: jkridner, rcn-ee, lorforlinux
Rating: Medium
Upstream Repository: beagleboard/image-builder
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:
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.
The zephyr firmware side needs to implement these ops as well and hook it up to the zephyr radio_api
A way to read the permanent extended address from the device to use in Linux is needed
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.
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.
Complexity: 175 hours
Goal: Submit upstream patches for these drivers and respond to feedback
Hardware Skills: Familiarity with wireless communication
Software Skills: C, Linux
Possible Mentors: jkridner, vaishnav
Rating: Medium
Upstream Repository: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
BeagleConnect(Greybus) host on WIO Terminal
Complexity: 350 hours
Goal: Enable remote access to mikroBUS(GPIO, I2C, SPI, PWM, ADC drivers) via UART/BLE.
Hardware Skills: Basic wiring
Software Skills: C, RTOS
Possible Mentors: jkridner, vaishnav
Rating: Medium
Upstream Repository: zephyrproject-rtos/zephyr#40811
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: