Difference between revisions of "BeagleBoard/GSoC/2021 Proposal/beagle config"
m |
|||
Line 13: | Line 13: | ||
= Proposal = | = Proposal = | ||
* Completed all the general requirements | * Completed all the general requirements | ||
− | * Completed "Hello Wolrd" of cross compilation mentioned in the requirements list. | + | * Completed "Hello Wolrd" of cross-compilation mentioned in the requirements list. |
* Sent a PR to the mentioned upstream [https://github.com/jadonk/gsoc-application/pull/145 #145] | * Sent a PR to the mentioned upstream [https://github.com/jadonk/gsoc-application/pull/145 #145] | ||
Line 22: | Line 22: | ||
* School: [https://vjtimumbai.in/ Veermata Jijabai Technological Institute (VJTI)] | * School: [https://vjtimumbai.in/ Veermata Jijabai Technological Institute (VJTI)] | ||
* Country: India | * Country: India | ||
− | * Primary language : English, Hindi, Marathi | + | * Primary language: English, Hindi, Marathi |
− | * Typical work hours : 10AM - 7PM Indian Standard Time | + | * Typical work hours: 10AM - 7PM Indian Standard Time |
* Experience : | * Experience : | ||
* [https://github.com/SAtacker/pid-tuning-gui/tree/satacker/cpp_port PID-Tuning-GUI] is my Graphing Qt application as well as for sending data to esp32 microcontroller using Boost.ASIO as Netowrking stack in order to configure the Proportional-Integral-Derivative (PID) Controller. | * [https://github.com/SAtacker/pid-tuning-gui/tree/satacker/cpp_port PID-Tuning-GUI] is my Graphing Qt application as well as for sending data to esp32 microcontroller using Boost.ASIO as Netowrking stack in order to configure the Proportional-Integral-Derivative (PID) Controller. | ||
− | * [https://github.com/SAtacker/kernel_learn kernel learn] is a repo I had created for kernel learning | + | * [https://github.com/SAtacker/kernel_learn kernel learn] is a repo I had created for kernel learning purposes in which I had learned Kernel module development Basics. |
− | * I have | + | * I have realized the beauty of embedded systems after working on esp32 dev board and reading [http://exploringbeaglebone.com/ Exploring Linux with Beaglebone by Derek Molloy] while in [https://www.sravjti.in/ Society of Robotics and Automation] as a core team member. |
− | * This is the first time | + | * This is the first time I am participating in GSoC |
= About Your Project = | = About Your Project = | ||
Line 36: | Line 36: | ||
== Description == | == Description == | ||
− | * As we all know , nearly all of the user operations in Linux can be done using shell commands , scripts and Linux Userspace | + | * As we all know, nearly all of the user operations in Linux can be done using shell commands, scripts, and Linux Userspace API for advanced users. But all that being said for an average user and sometimes in production, these steps can be repetitive and time consuming. For example- Simply sharing a network i.e. editing iptables and enabling forwarding on the host pc is an uphill task without a script provided. However running scripts could be dangerous. |
* Enabling the PRU and loading the firmware is much daunting and unless anybody goes through their usage Documentations it will be difficult. | * Enabling the PRU and loading the firmware is much daunting and unless anybody goes through their usage Documentations it will be difficult. | ||
− | * Hence '''I propose beagle-config''' which is a terminal based UI application that brings down the steep curve and enables anybody to config their beagle device as they wish. Also a host side application to enable ICS | + | * Hence '''I propose beagle-config''' which is a terminal based UI application that brings down the steep curve and enables anybody to config their beagle device as they wish. Also, a host-side application to enable ICS |
* Not only does it makes beagle devices more friendly but provides an edge to beagle devices over other similar platforms. | * Not only does it makes beagle devices more friendly but provides an edge to beagle devices over other similar platforms. | ||
− | * Also while configuring sometimes if the script has hard coded values it makes difficult for the user to go back to default configurations. With beagle-config that won't be a problem anymore | + | * Also while configuring sometimes if the script has hard-coded values it makes it difficult for the user to go back to default configurations. With beagle-config that won't be a problem anymore |
− | * '''Goal''' : Beagle-Config aims to provide the functionality to make the most common low level configuration changes in beagle devices easily and providing a terminal UI to do the same as well as a host side application for ICS | + | * '''Goal''' : Beagle-Config aims to provide the functionality to make the most common low-level configuration changes in beagle devices easily and providing a terminal UI to do the same as well as a host-side application for ICS |
== Implementation Details == | == Implementation Details == | ||
− | * Beagle-Config consists of a host side application developed with cross platform framework Qt . | + | * Beagle-Config consists of a host-side application developed with cross-platform framework Qt . |
* Beagle-Config on user (board) side which will use bash, C/C++ as back end for low level access to linux's userspace api and [https://github.com/ArthurSonzogni/FTXUI FTXUI] for frontend. | * Beagle-Config on user (board) side which will use bash, C/C++ as back end for low level access to linux's userspace api and [https://github.com/ArthurSonzogni/FTXUI FTXUI] for frontend. | ||
* All the configuration options are stored in user's home directory inside ~/beagleconf.json | * All the configuration options are stored in user's home directory inside ~/beagleconf.json | ||
Line 56: | Line 56: | ||
==User (Board) == | ==User (Board) == | ||
=== System Options === | === System Options === | ||
− | The system options sub menu allows you to make configuration changes to various parts of the boot, login and networking process, along with some other system level changes. | + | The system options sub-menu allows you to make configuration changes to various parts of the boot, login, and networking process, along with some other system-level changes. |
* PRU enable/disable | * PRU enable/disable | ||
− | This will enable hobbyists to enable / disable their PRUs (/var/lib/cloud9/common/Makefile TARGET=gpio.prux start) if they want to test their PRU code in c or in simppru (Checks and asks if they want to install) . | + | This will enable hobbyists to enable/disable their PRUs (/var/lib/cloud9/common/Makefile TARGET=gpio.prux start) if they want to test their PRU code in c or in simppru (Checks and asks if they want to install) . |
Example - | Example - | ||
PRU Conf | PRU Conf | ||
Line 72: | Line 72: | ||
* Internet Sharing and Client Configurations | * Internet Sharing and Client Configurations | ||
− | Enables users to share their host internet | + | Enables users to share their host internet with a click |
Example - | Example - | ||
Host | Host | ||
Line 93: | Line 93: | ||
* Freeze Packages | * Freeze Packages | ||
− | apt-mark hold <package> and make a note of it in | + | apt-mark hold <package> and make a note of it in JSON |
* Wireless Configurations | * Wireless Configurations | ||
− | For wireless enabled devices like beaglebone black wireless configuring Access Point names , mDNS configurations, etc | + | For wireless-enabled devices like beaglebone black wireless configuring Access Point names, mDNS configurations, etc |
* Sensor Stats and Configurations | * Sensor Stats and Configurations | ||
− | If beagle bone has onboard sensors then enabling them , viewing stats | + | If beagle bone has onboard sensors then enabling them, viewing stats |
− | For ex. on Beaglebone Blue 9-axis IMU, barometer,thermometer, and a balancing LiPo charger are present | + | For ex. on Beaglebone Blue 9-axis IMU, barometer, thermometer, and a balancing LiPo charger are present |
* Password | * Password | ||
− | Configure passwords along with addition of users, groups | + | Configure passwords along with the addition of users, groups |
* Boot / Auto login | * Boot / Auto login | ||
Line 109: | Line 109: | ||
* User LED | * User LED | ||
− | Configure the USR | + | Configure the USR LEDs on the board. Their frequency and events. |
* Firmware Update | * Firmware Update | ||
Line 123: | Line 123: | ||
* Cape Configurations | * Cape Configurations | ||
Performs apt install bb-cape-overlays | Performs apt install bb-cape-overlays | ||
− | If a beagle board and its associated cape | + | If a beagle board and its associated cape need a configuration, this can be configured here easily. |
* SSH | * SSH | ||
− | Configure ssh , enable / disable and setup password | + | Configure ssh, enable/disable, and setup password |
* Provide an easy interface to manage uboot overlays | * Provide an easy interface to manage uboot overlays | ||
Line 149: | Line 149: | ||
* About | * About | ||
− | Show strings, license, author , version name and kernel version | + | Show strings, license, author, version name, and kernel version |
== Timeline == | == Timeline == | ||
Line 157: | Line 157: | ||
! Date !! Status !! Details | ! Date !! Status !! Details | ||
|- | |- | ||
− | | 13/04/2021 to 17/05/2021 || Application Review Period || Right After submitting the application I will go through rigorous set of reference materials | + | | 13/04/2021 to 17/05/2021 || Application Review Period || Right After submitting the application I will go through a rigorous set of reference materials |
− | * Fix my bricked | + | * Fix my bricked Pocketbeagle by debugging using UART output |
* Go through [https://github.com/ArthurSonzogni/FTXUI FTXUI] documentations | * Go through [https://github.com/ArthurSonzogni/FTXUI FTXUI] documentations | ||
* Resource for [https://missing.csail.mit.edu/2020/shell-tools/ Shell] scripting revision | * Resource for [https://missing.csail.mit.edu/2020/shell-tools/ Shell] scripting revision | ||
|- | |- | ||
| 17/05/2021 to 07/06/2021 || Community Bonding || | | 17/05/2021 to 07/06/2021 || Community Bonding || | ||
− | * Before it begins Complete College exams , vivas, practicals and stuff | + | * Before it begins Complete College exams, vivas, practicals, and stuff |
− | * Make sure that stuff for project is available | + | * Make sure that stuff for the project is available |
* Coding Begins | * Coding Begins | ||
|- | |- | ||
Line 209: | Line 209: | ||
| 31/07/2021 - 03/07/2021|| Milestone #7 || | | 31/07/2021 - 03/07/2021|| Milestone #7 || | ||
* Documentation of everything till now | * Documentation of everything till now | ||
− | * Brief overview and discussion with mentor | + | * Brief overview and discussion with a mentor |
* Bring in required changes | * Bring in required changes | ||
|- | |- | ||
Line 232: | Line 232: | ||
===Experience and approach=== | ===Experience and approach=== | ||
− | * Previously I have worked with Qt and Boost.ASIO . [https://github.com/SAtacker/pid-tuning-gui/tree/satacker/cpp_port PID-Tuning-GUI] is an application that sends data to ESP32 | + | * Previously I have worked with Qt and Boost.ASIO . [https://github.com/SAtacker/pid-tuning-gui/tree/satacker/cpp_port PID-Tuning-GUI] is an application that sends data to ESP32 microcontroller which supports WiFi connectivity. Handled Application threads and Plotting of data as well as sending user input to the microcontroller. |
− | * [https://github.com/SAtacker/kernel_learn kernel learn] is a repository I had created for kernel learning purpose in which I had learned several Kernel development Basics . | + | * [https://github.com/SAtacker/kernel_learn kernel learn] is a repository I had created for kernel learning purpose in which I had learned several Kernel development Basics. |
− | * I have played with Pocketbeagle for a month and learned a lot about u-boot, device trees and Loadable Kernel Modules. | + | * I have played with Pocketbeagle for a month and learned a lot about u-boot, device trees, and Loadable Kernel Modules. |
− | * This gives me best of both the worlds embedded as well as a bit in frontend (Qt). | + | * This gives me the best of both the worlds embedded as well as a bit in frontend (Qt). |
===Contingency=== | ===Contingency=== | ||
− | * There is | + | * There is good documentation of FXTUI and Qt |
* Plenty of examples to get me through if I am stuck. | * Plenty of examples to get me through if I am stuck. | ||
− | * Past experience regarding Qt and DOM manipulation combined with experience in embedded and loadable kernel | + | * Past experience regarding Qt and DOM manipulation combined with experience in embedded and loadable kernel module development will pay off in this duration. |
===Benefit=== | ===Benefit=== | ||
− | * Having a seamless one click experience to configure is enjoyed by any user , be it production or a robotics team. | + | * Having a seamless one-click experience to configure is enjoyed by any user, be it production or a robotics team. |
− | * Provides a configuration file to the users. Remembers defaults and helps in accidental modification to low level configurations. | + | * Provides a configuration file to the users. Remembers defaults and helps in accidental modification to low-level configurations. |
==== Quotes ==== | ==== Quotes ==== | ||
==Misc== | ==Misc== | ||
− | * For hello_world of cross compilation , sent a PR to the mentioned upstream [https://github.com/jadonk/gsoc-application/pull/145 #145] | + | * For hello_world of cross-compilation, sent a PR to the mentioned upstream [https://github.com/jadonk/gsoc-application/pull/145 #145] |
== Future Work == | == Future Work == | ||
* Theme options | * Theme options | ||
− | * Flashing functionality can be added instead of making the user download a third | + | * Flashing functionality can be added instead of making the user download a third party application like etcher |
* An IDE within the beagle-config host | * An IDE within the beagle-config host |
Revision as of 06:16, 6 April 2021
Proposal for Beagle Config
- Student: Shreyas Atre
- Mentors: Kumar Abhishek (IRC: Abhishek_ )
- Code: [N/A]
- Proposal : https://elinux.org/index.php?title=BeagleBoard/GSoC/2021_Proposal/beagle_config
- Wiki: [N/A]
- GSoC: [N/A]
Status
- Pre-application phase
Proposal
- Completed all the general requirements
- Completed "Hello Wolrd" of cross-compilation mentioned in the requirements list.
- Sent a PR to the mentioned upstream #145
About You
- IRC : satacker (@satacker:matrix.org)
- Github: https://github.com/SAtacker/
- School: Veermata Jijabai Technological Institute (VJTI)
- Country: India
- Primary language: English, Hindi, Marathi
- Typical work hours: 10AM - 7PM Indian Standard Time
- Experience :
- PID-Tuning-GUI is my Graphing Qt application as well as for sending data to esp32 microcontroller using Boost.ASIO as Netowrking stack in order to configure the Proportional-Integral-Derivative (PID) Controller.
- kernel learn is a repo I had created for kernel learning purposes in which I had learned Kernel module development Basics.
- I have realized the beauty of embedded systems after working on esp32 dev board and reading Exploring Linux with Beaglebone by Derek Molloy while in Society of Robotics and Automation as a core team member.
- This is the first time I am participating in GSoC
About Your Project
- Project name: Beagle Config
Description
- As we all know, nearly all of the user operations in Linux can be done using shell commands, scripts, and Linux Userspace API for advanced users. But all that being said for an average user and sometimes in production, these steps can be repetitive and time consuming. For example- Simply sharing a network i.e. editing iptables and enabling forwarding on the host pc is an uphill task without a script provided. However running scripts could be dangerous.
- Enabling the PRU and loading the firmware is much daunting and unless anybody goes through their usage Documentations it will be difficult.
- Hence I propose beagle-config which is a terminal based UI application that brings down the steep curve and enables anybody to config their beagle device as they wish. Also, a host-side application to enable ICS
- Not only does it makes beagle devices more friendly but provides an edge to beagle devices over other similar platforms.
- Also while configuring sometimes if the script has hard-coded values it makes it difficult for the user to go back to default configurations. With beagle-config that won't be a problem anymore
- Goal : Beagle-Config aims to provide the functionality to make the most common low-level configuration changes in beagle devices easily and providing a terminal UI to do the same as well as a host-side application for ICS
Implementation Details
- Beagle-Config consists of a host-side application developed with cross-platform framework Qt .
- Beagle-Config on user (board) side which will use bash, C/C++ as back end for low level access to linux's userspace api and FTXUI for frontend.
- All the configuration options are stored in user's home directory inside ~/beagleconf.json
- A restore to defaults option
Host
- Internet Connection Sharing Enabling nn linux as well as windows
- console for SSH within the application
User (Board)
System Options
The system options sub-menu allows you to make configuration changes to various parts of the boot, login, and networking process, along with some other system-level changes.
- PRU enable/disable
This will enable hobbyists to enable/disable their PRUs (/var/lib/cloud9/common/Makefile TARGET=gpio.prux start) if they want to test their PRU code in c or in simppru (Checks and asks if they want to install) . Example -
PRU Conf PRU 1 Enable Disable PRU 2 Enable Disable
- GPIO configuration
Enabling a GPIO pin for input/output using config-pin Example -
GPIO 18 - Enable Disable Set Value
For beaglebone blue motor driver, servo driver configurations
- Internet Sharing and Client Configurations
Enables users to share their host internet with a click Example -
Host Host A Enable Internet Advanced Set IP gateway Return to Defaults Host Name BBB Edit Country Code <Select Menu>
- eMMC stats
Enables users to extend the sd card partition size if available Example -
eMMC Storage Total 52 % Free -------- Extend --------
- Freeze Packages
apt-mark hold <package> and make a note of it in JSON
- Wireless Configurations
For wireless-enabled devices like beaglebone black wireless configuring Access Point names, mDNS configurations, etc
- Sensor Stats and Configurations
If beagle bone has onboard sensors then enabling them, viewing stats For ex. on Beaglebone Blue 9-axis IMU, barometer, thermometer, and a balancing LiPo charger are present
- Password
Configure passwords along with the addition of users, groups
- Boot / Auto login
We can configure whether to boot in desktop mode or using just console enabled. Add option to login automatically.
- User LED
Configure the USR LEDs on the board. Their frequency and events.
- Firmware Update
Firmware - apt update and upgrade to update your system,
Display Options
- Resolution
Enable configuration of HDMI/DVI if the board supports it
Interfacing Options
- Cape Configurations
Performs apt install bb-cape-overlays If a beagle board and its associated cape need a configuration, this can be configured here easily.
- SSH
Configure ssh, enable/disable, and setup password
- Provide an easy interface to manage uboot overlays
U-Boot /boot/uEnv.txt configuration in /boot/uEnv.txt:
enable_uboot_overlays=1 To Disable eMMC: disable_uboot_overlay_emmc To Disable HDMI VIDEO & AUDIO: disable_uboot_overlay_video disable_uboot_overlay_audio disable_uboot_overlay_wireless disable_uboot_overlay_adc
- Overlay File System
Enable or disable a read-only file system
- Timezone
Select your local time zone, starting with the region, e.g. India, then selecting a city, e.g. Mumbai. Type a letter to skip down the list to that point in the alphabet.
- Update
Update Beagle-Config
- About
Show strings, license, author, version name, and kernel version
Timeline
Date | Status | Details |
---|---|---|
13/04/2021 to 17/05/2021 | Application Review Period | Right After submitting the application I will go through a rigorous set of reference materials |
17/05/2021 to 07/06/2021 | Community Bonding |
|
14/06/2021 | Milestone #1 |
configurations |
21/06/2021 | Milestone #2 |
configurations |
28/06/2021 | Milestone #3 |
configurations |
05/07/2021 - 10/07/2021 | Milestone #4 |
|
17/07/2021 | Milestone #5 |
configurations |
24/07/2021 | Milestone #6 |
|
31/07/2021 - 03/07/2021 | Milestone #7 |
|
10/08/2021 | Milestone #8 |
|
17/08/2021 | Milestone #9 |
|
24/08/2021 | Milestone #10 |
|
31/08/2021 | Milestone #11 | Completion of GSoC |
Experience and approach
- Previously I have worked with Qt and Boost.ASIO . PID-Tuning-GUI is an application that sends data to ESP32 microcontroller which supports WiFi connectivity. Handled Application threads and Plotting of data as well as sending user input to the microcontroller.
- kernel learn is a repository I had created for kernel learning purpose in which I had learned several Kernel development Basics.
- I have played with Pocketbeagle for a month and learned a lot about u-boot, device trees, and Loadable Kernel Modules.
- This gives me the best of both the worlds embedded as well as a bit in frontend (Qt).
Contingency
- There is good documentation of FXTUI and Qt
- Plenty of examples to get me through if I am stuck.
- Past experience regarding Qt and DOM manipulation combined with experience in embedded and loadable kernel module development will pay off in this duration.
Benefit
- Having a seamless one-click experience to configure is enjoyed by any user, be it production or a robotics team.
- Provides a configuration file to the users. Remembers defaults and helps in accidental modification to low-level configurations.
Quotes
Misc
- For hello_world of cross-compilation, sent a PR to the mentioned upstream #145
Future Work
- Theme options
- Flashing functionality can be added instead of making the user download a third party application like etcher
- An IDE within the beagle-config host