Difference between revisions of "BeagleBoard/GSoC/2021 Proposal/beagle config"
Line 12: | Line 12: | ||
= Proposal = | = Proposal = | ||
+ | * 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 44: | Line 45: | ||
== Implementation Details == | == Implementation Details == | ||
− | * Here are few details of the beagle-config 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 consists of a host side application developed with cross platform framework Qt . |
+ | * Here are few details of the 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 below config options are stored in user's home directory with .beaglec | * All the below config options are stored in user's home directory with .beaglec | ||
* A restore to defaults option | * A restore to defaults option | ||
* Light Vs Dark theme chooser | * Light Vs Dark theme chooser | ||
+ | == Host == | ||
+ | * Internet Connection Sharing Enabling | ||
+ | On linux as well as windows | ||
+ | * SSH within the application | ||
+ | |||
+ | ==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. | ||
Line 199: | Line 207: | ||
# Audio | # Audio | ||
# Display | # Display | ||
− | |||
− | |||
− | |||
* Add | * Add | ||
# Cape | # Cape | ||
Line 207: | Line 212: | ||
# File System | # File System | ||
configurations | configurations | ||
+ | |- | ||
+ | | 24/07/2021 || Milestone #6 || | ||
+ | * Build A Host side Qt application to enable ICS | ||
+ | * Add SSH within the Application itself | ||
|- | |- | ||
| 31/07/2021 - 03/07/2021|| Milestone #7 || | | 31/07/2021 - 03/07/2021|| Milestone #7 || | ||
Line 214: | Line 223: | ||
|- | |- | ||
| 10/08/2021 || Milestone #8 || | | 10/08/2021 || Milestone #8 || | ||
− | |||
* Compile with other latest kernels | * Compile with other latest kernels | ||
* Test the kernel modules and Verify the functionality | * Test the kernel modules and Verify the functionality | ||
− | + | * Test the Application for cross platform functionality | |
|- | |- | ||
| 17/08/2021 || Milestone #9 || | | 17/08/2021 || Milestone #9 || | ||
Line 224: | Line 232: | ||
* Add final About page | * Add final About page | ||
* Distribute a debian package | * Distribute a debian package | ||
+ | * Distribute Windows executables | ||
|- | |- | ||
| 24/08/2021 || Milestone #10 || | | 24/08/2021 || Milestone #10 || | ||
Line 232: | Line 241: | ||
|} | |} | ||
− | == Benefit == | + | |
− | === Quotes === | + | ===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 micro controller which supports WiFi connectivity. Handled Application threads and Plotting of data as well as sending user input to microcontroller. | ||
+ | * [https://github.com/SAtacker/kernel_learn kernel learn] is a repo 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 best of both the worlds embedded as well as a bit in frontend (Qt). | ||
+ | |||
+ | ===Contingency=== | ||
+ | * There is a 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 modules 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 [https://github.com/jadonk/gsoc-application/pull/145 #145] | ||
+ | |||
+ | == Future Work == | ||
+ | * Flashing functionality can be added instead of making the user download a third part application like etcher | ||
+ | * An IDE within the beagle-config host |
Revision as of 13:02, 30 March 2021
Proposal for Beagle Config Terminal UI
- 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 purpose in which I had learned several Kernel development Basics .
- I have realised 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 network i.e. editing iptables and enabling packet forwarding with Pocketbeagle is an uphill task without a script provided. However running scripts could be dangerous. Even adding a USB gadget without rcn-ee's boot script is definitely difficult.
- Enabling the PRU and loading the firmware is much daunting and unless anybody goes through their usage Documentations it will be difficult.
- Not only does it makes beagle devices more friendly but provides an edge to beagleboard over other similar platforms.
- 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 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
- 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.
Implementation Details
- Beagle-Config consists of a host side application developed with cross platform framework Qt .
- Here are few details of the 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 below config options are stored in user's home directory with .beaglec
- A restore to defaults option
- Light Vs Dark theme chooser
Host
- Internet Connection Sharing Enabling
On linux as well as windows
- 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 if they want to test their PRU code in c or in simppru . Example -
PRU Conf PRU 1 Enable Disable PRU 2 Enable Disable
- GPIO configuration
Enabling a GPIO pin for input/output Example -
GPIO 18 - Enable Disable Set Value
- Internet Sharing and Client Configurations
Enables users to share their host internet within 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 avaible Example -
eMMC Storage Total 52 % Free -------- Extend --------
- Wireless Configurations
For wireless enabled devices like beaglebone black wireless configuring Access Point names , mDNS configurations, etc
- Sensor Configurations
If beagle bone has onboard sensors then enabling them , viewing stats like charging status, battery status , power consumption, etc.
- Audio Configurations
If beagle supports audio on board Specify Audio Output
- Password
Configure passwords along with 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.
Display Options
- Resolution
Enable configuration of HDMI/DVI if the board supports it
Interfacing Options
- Cape Configurations
If a beagle board and its associated cape needs a configuration , this can be configured here easily.
- Camera
Enable any standard camera interface and additional configurations
- SSH
Configure ssh , enable / disable and setup password
- SPI and I2C
Enable/disable SPI and I2C interfaces and automatic loading of the SPI / I2C kernel modules if there are any existing.
- USB Gadget configurations
Configures usb cdc-acm-ecm gadget using libusbgx in the back end.
- Provide an easy interface to add overlays to device trees
For example -
Select Node - Select Property Edit Property Add Node - Add Alias Add Address Add Property Add register address
- 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.
- Keyboard
Configures Keyboard layout
- 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 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 micro controller which supports WiFi connectivity. Handled Application threads and Plotting of data as well as sending user input to microcontroller.
- kernel learn is a repo 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 best of both the worlds embedded as well as a bit in frontend (Qt).
Contingency
- There is a 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 modules 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
- Flashing functionality can be added instead of making the user download a third part application like etcher
- An IDE within the beagle-config host