Difference between revisions of "BeagleBoard/GSoC/2021 Proposal/beagle config"

From eLinux.org
Jump to: navigation, search
m
(4 intermediate revisions by the same user not shown)
Line 3: Line 3:
  
 
* Student: [https://elinux.org/User:Satacker Shreyas Atre]
 
* Student: [https://elinux.org/User:Satacker Shreyas Atre]
* Mentors: Kumar Abhishek (IRC: Abhishek_ )
+
* Mentors: Kumar Abhishek (IRC: Abhishek_ ) , Deepak Khatri (IRC: lorforlinux)
 
* Code: [N/A]
 
* Code: [N/A]
 
* Proposal : https://elinux.org/index.php?title=BeagleBoard/GSoC/2021_Proposal/beagle_config
 
* Proposal : https://elinux.org/index.php?title=BeagleBoard/GSoC/2021_Proposal/beagle_config
Line 19: Line 19:
 
== About You ==
 
== About You ==
  
* IRC : satacker  (@satacker:matrix.org)
+
* IRC: satacker  (@satacker:matrix.org)
 
* Github: https://github.com/SAtacker/
 
* Github: https://github.com/SAtacker/
 
* 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: 10 AM - 7 PM 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 Networking 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 purposes in which I had learned Kernel module development Basics.
 
* [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 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.  
 
* 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.  
Line 41: Line 41:
 
* 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 it difficult for the user to go back to default configurations. With beagle-config that won't be a problem anymore. Beagle-Config will store the defaults at /usr/local/share/ and user configurations in /home/user/.config/beagle-config/Backups/config.json
+
* 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. Beagle-Config will store the defaults at /usr/local/share/ and user configurations in /home/user/.config/beagle-config/Backups/config.json . This ensures portability and helps in reverting to defaults in case settings are unwanted.
 
* '''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.
+
Reason to choose Qt: It seems that Qt satisfies the objectives which are Good Documentations, Fewer dependencies, and as for deployment electron is easier but Qt is not much difficult. This isn't performance-critical right now but if in the future it adds some performance-critical activity then Qt would be great here.
 +
* 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.
 +
 
 +
==== Comparision of a few text-based GUI ====
 +
{| class="wikitable"
 +
|-
 +
! Name !! Description
 +
|-
 +
| [https://github.com/vadimdemedes/ink ink] ||
 +
* It is basically React for cli
 +
* Depends on [https://github.com/facebook/yoga yoga by Facebook]
 +
* Javascript
 +
|-
 +
| [https://github.com/cronvel/terminal-kit terminal-kit] ||
 +
* This is again a JS library
 +
* Easy to develop
 +
|-
 +
| [https://github.com/magiblot/tvision tvision] ||
 +
* UI/UX feels old enough or retro like
 +
* C++ is a plus point
 +
* Depends on libncursesw
 +
|-
 +
| [https://github.com/yaronn/blessed-contrib blessed contrib] ||
 +
* JS
 +
* Nice Widgets support
 +
|-
 +
| [https://github.com/urwid/urwid urwid] ||
 +
* Python
 +
* Many applications built on it
 +
|-
 +
| [https://github.com/ArthurSonzogni/FTXUI FXTUI] ||
 +
* Functional style. Inspired by [1] and React
 +
* No dependencies.
 +
* Cross platform
 +
* Simple and elegant syntax
 +
|}
 +
This wasn't a detailed review but definitely, I would choose FXTUI despite its newness, I feel it has all that I need and doesn't involve dependencies while providing a DOM manip. functional style like react.
 
* All the configuration options are stored in the user's home directory inside /home/user/.config/beagle-config/Backups/config.json
 
* All the configuration options are stored in the user's home directory inside /home/user/.config/beagle-config/Backups/config.json
 
* A restore to defaults option  
 
* A restore to defaults option  
  
 
== Host ==
 
== Host ==
* Internet Connection Sharing Enabling nn linux as well as  windows
+
* Internet Connection Sharing Enabling in Linux as well as  windows
 
* console for SSH within the application
 
* console for SSH within the application
 +
Recipe Outline -
 +
# TODO
  
 
==User (Board) ==
 
==User (Board) ==
Line 59: Line 97:
 
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) and 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
 
                         PRU 1 Enable Disable
 
                         PRU 1 Enable Disable
 
                         PRU 2 Enable Disable
 
                         PRU 2 Enable Disable
* GPIO configuration
+
Recipe Outline -
Enabling a GPIO pin for input/output using config-pin
+
# It will essentially be a wrapper around make targets (clpru and lnkpru ,the PRU compiler and linker are already installed on the standard images.)
 +
# The PRUs appear in the Linux file space at /sys/devices/platform/ocp/4a32600*.pruss-soc-bus/4a300000.pruss
 +
Note: If it comes out that the addresses are not fixed I would have to traverse through the ocp node until I discover "pruss-soc-bus"
 +
# Select .out file and copy to  /sys/devices/platform/ocp/4a32600*.pruss-soc-bus/4a300000.pruss/lib/firmware/am335x-pruX-fw (X=0,1)
 +
 
 +
==== GPIO configuration ====
 +
Enabling a GPIO pin for input/output using config-pin
 
Example -  
 
Example -  
 
                 GPIO 18 -
 
                 GPIO 18 -
 
                         Enable Disable Set Value
 
                         Enable Disable Set Value
For beaglebone blue motor driver, servo driver configurations
+
Recipe Outline -
 +
# Now there's config-pin .
 +
# Also traversing through /sys/class/gpio is an option
  
* Internet Sharing and Client Configurations
+
==== Internet Sharing and Client Configurations ====
 
Enables users to share their host internet with a click
 
Enables users to share their host internet with a click
 
Example -
 
Example -
Line 84: Line 130:
 
                     Edit  
 
                     Edit  
 
                 Country Code      <Select Menu>
 
                 Country Code      <Select Menu>
 +
Recipe Outline -
 +
# Ask for user password
 +
# Add routes for default gateways
 +
# Add nameservers IP addresses
 +
On host side -
 +
# If Linux then configures USB Ethernet with default IP address and iptables rules.
 +
# If windows then use `net start SharedAccess` (Windows 7) or [https://superuser.com/questions/1511952/automate-sharing-internet-between-network-adapters-on-windows-10 Powershell script]
  
* eMMC stats
+
==== eMMC stats ====
 
Enables users to extend the sd card partition size if available
 
Enables users to extend the sd card partition size if available
 
Example -  
 
Example -  
Line 91: Line 144:
 
                     Free            --------
 
                     Free            --------
 
                     Extend          --------
 
                     Extend          --------
 +
Recipe Outline -
 +
# TODO
  
 
+
==== Freeze Packages ====
* Freeze Packages
 
 
apt-mark hold <package> and make a note of it in JSON
 
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
 +
Recipe Outline -
 +
# Enable /etc/systemd/resolved.conf and turn MulticastDNS=yes
 +
# The other way is to using Avahi : check if avahi is installed
 +
# TODO
  
* 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
 +
Recipe Outline -
 +
# TODO
  
* Password
+
==== Password ====
 
Configure passwords along with the addition of users, groups
 
Configure passwords along with the addition of users, groups
 +
Recipe Outline -
 +
# TODO
  
* Boot / Auto login
+
==== Boot / Auto login ====
 
We can configure whether to boot in desktop mode or using just console enabled. Add option to login automatically.
 
We can configure whether to boot in desktop mode or using just console enabled. Add option to login automatically.
 +
Recipe Outline -
 +
# TODO
  
* User LED
+
==== User LED ====
 
Configure the USR LEDs on the board. Their frequency and events.  
 
Configure the USR LEDs on the board. Their frequency and events.  
 +
Recipe Outline -
 +
# TODO
  
* Firmware Update
+
==== Firmware Update ====
 
Firmware - apt update and upgrade to update your system,
 
Firmware - apt update and upgrade to update your system,
 
+
Recipe Outline -
 +
# Provide timely update option
 +
# wrapper for apt update and apt upgrade
 +
# TODO
  
 
=== Display Options ===
 
=== Display Options ===
  
* Resolution
+
==== Resolution ====
 
Enable configuration of HDMI/DVI if the board supports it
 
Enable configuration of HDMI/DVI if the board supports it
 +
Recipe Outline -
 +
# TODO
  
 
=== Interfacing Options ===
 
=== Interfacing Options ===
* Cape Configurations
+
 
 +
==== Cape Configurations ====
 
Performs apt install bb-cape-overlays   
 
Performs apt install bb-cape-overlays   
 
If a beagle board and its associated cape need a configuration, this can be configured here easily.
 
If a beagle board and its associated cape need a configuration, this can be configured here easily.
 +
Recipe Outline -
 +
# TODO
  
* SSH
+
==== SSH ====
 
Configure ssh, enable/disable, and setup password
 
Configure ssh, enable/disable, and setup password
 +
Recipe Outline -
 +
# TODO
  
* Provide an easy interface to manage uboot overlays
+
==== Provide an easy interface to manage uboot overlays ====
 +
Recipe Outline -
 
U-Boot /boot/uEnv.txt configuration in /boot/uEnv.txt:
 
U-Boot /boot/uEnv.txt configuration in /boot/uEnv.txt:
 
                     enable_uboot_overlays=1
 
                     enable_uboot_overlays=1
Line 140: Line 217:
 
                     disable_uboot_overlay_adc
 
                     disable_uboot_overlay_adc
  
* Overlay File System
+
==== Overlay File System ====
 
Enable or disable a read-only file system
 
Enable or disable a read-only file system
 +
Recipe Outline -
 +
# TODO
  
* Timezone
+
==== 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.
 
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 ====
 
Update Beagle-Config
 
Update Beagle-Config
 +
Recipe Outline -
 +
# TODO
  
* About
+
==== About ====
 
Show strings, license, author, version name, and kernel version
 
Show strings, license, author, version name, and kernel version
  
Line 233: Line 314:
  
 
===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 microcontroller which supports WiFi connectivity. Handled Application threads and Plotting of data as well as sending user input to the microcontroller.
+
* 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 the 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 the frontend (Qt).  
  
 
===Contingency===
 
===Contingency===
Line 253: Line 334:
 
== Future Work ==
 
== Future Work ==
 
* Theme options
 
* Theme options
* Flashing functionality can be added instead of making the user download a third party application like etcher
+
* 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 14:28, 8 April 2021

Proposal for Beagle Config

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

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. This explains that using a compiled program instead can implement safe and proper security.
  • 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. Beagle-Config will store the defaults at /usr/local/share/ and user configurations in /home/user/.config/beagle-config/Backups/config.json . This ensures portability and helps in reverting to defaults in case settings are unwanted.
  • 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.

Reason to choose Qt: It seems that Qt satisfies the objectives which are Good Documentations, Fewer dependencies, and as for deployment electron is easier but Qt is not much difficult. This isn't performance-critical right now but if in the future it adds some performance-critical activity then Qt would be great here.

  • 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.

Comparision of a few text-based GUI

Name Description
ink
terminal-kit
  • This is again a JS library
  • Easy to develop
tvision
  • UI/UX feels old enough or retro like
  • C++ is a plus point
  • Depends on libncursesw
blessed contrib
  • JS
  • Nice Widgets support
urwid
  • Python
  • Many applications built on it
FXTUI
  • Functional style. Inspired by [1] and React
  • No dependencies.
  • Cross platform
  • Simple and elegant syntax

This wasn't a detailed review but definitely, I would choose FXTUI despite its newness, I feel it has all that I need and doesn't involve dependencies while providing a DOM manip. functional style like react.

  • All the configuration options are stored in the user's home directory inside /home/user/.config/beagle-config/Backups/config.json
  • A restore to defaults option

Host

  • Internet Connection Sharing Enabling in Linux as well as windows
  • console for SSH within the application

Recipe Outline -

  1. TODO

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) and 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

Recipe Outline -

  1. It will essentially be a wrapper around make targets (clpru and lnkpru ,the PRU compiler and linker are already installed on the standard images.)
  2. The PRUs appear in the Linux file space at /sys/devices/platform/ocp/4a32600*.pruss-soc-bus/4a300000.pruss

Note: If it comes out that the addresses are not fixed I would have to traverse through the ocp node until I discover "pruss-soc-bus"

  1. Select .out file and copy to /sys/devices/platform/ocp/4a32600*.pruss-soc-bus/4a300000.pruss/lib/firmware/am335x-pruX-fw (X=0,1)

GPIO configuration

Enabling a GPIO pin for input/output using config-pin Example -

                GPIO 18 -
                       Enable Disable Set Value

Recipe Outline -

  1. Now there's config-pin .
  2. Also traversing through /sys/class/gpio is an option

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>

Recipe Outline -

  1. Ask for user password
  2. Add routes for default gateways
  3. Add nameservers IP addresses

On host side -

  1. If Linux then configures USB Ethernet with default IP address and iptables rules.
  2. If windows then use `net start SharedAccess` (Windows 7) or Powershell script

eMMC stats

Enables users to extend the sd card partition size if available Example -

              eMMC Storage        Total 52 %
                   Free            --------
                   Extend          --------

Recipe Outline -

  1. TODO

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 Recipe Outline -

  1. Enable /etc/systemd/resolved.conf and turn MulticastDNS=yes
  2. The other way is to using Avahi : check if avahi is installed
  3. TODO

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 Recipe Outline -

  1. TODO

Password

Configure passwords along with the addition of users, groups Recipe Outline -

  1. TODO

Boot / Auto login

We can configure whether to boot in desktop mode or using just console enabled. Add option to login automatically. Recipe Outline -

  1. TODO

User LED

Configure the USR LEDs on the board. Their frequency and events. Recipe Outline -

  1. TODO

Firmware Update

Firmware - apt update and upgrade to update your system, Recipe Outline -

  1. Provide timely update option
  2. wrapper for apt update and apt upgrade
  3. TODO

Display Options

Resolution

Enable configuration of HDMI/DVI if the board supports it Recipe Outline -

  1. TODO

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. Recipe Outline -

  1. TODO

SSH

Configure ssh, enable/disable, and setup password Recipe Outline -

  1. TODO

Provide an easy interface to manage uboot overlays

Recipe Outline - 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 Recipe Outline -

  1. TODO

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 Recipe Outline -

  1. TODO

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
  • Fix my bricked Pocketbeagle by debugging using UART output
  • Go through FTXUI documentations
  • Resource for Shell scripting revision
17/05/2021 to 07/06/2021 Community Bonding
  • Before it begins Complete College exams, vivas, practicals, and stuff
  • Make sure that stuff for the project is available
  • Coding Begins
14/06/2021 Milestone #1
  • Introductory Video
  • Implement a basic TUI with basic operations like USR LED enable, disable, frequency
  • Add
  1. Network (ICS and Wireless settings)
  2. ssh
  3. timezone

configurations

21/06/2021 Milestone #2
  • Add
  1. PRU
  2. GPIO
  3. eMMC stats and sd card resizer

configurations

28/06/2021 Milestone #3
  • Add
  1. Sensor stats and
  2. Display
  3. boot
  4. Password
  5. Freeze Packages

configurations

05/07/2021 - 10/07/2021 Milestone #4
  • Review the configurations for errors
  • Documentation for everything till now
17/07/2021 Milestone #5
  • Add
  1. U-boot
  2. File System
  3. Firmware Update

configurations

24/07/2021 Milestone #6
  • Build A Host side Qt application to enable ICS
  • Add SSH console within the Application itself
31/07/2021 - 03/07/2021 Milestone #7
  • Documentation of everything till now
  • Brief overview and discussion with a mentor
  • Bring in required changes
10/08/2021 Milestone #8
  • Compile user(board) application with other latest kernels
  • Test the Host Application for cross platform functionality
17/08/2021 Milestone #9
  • Add additional configurations for updates
  • Document If anything remaining
  • Add final About page
  • Distribute a Debian package
  • Distribute Windows executable
24/08/2021 Milestone #10
  • Submit final work product and final mentor evaluation
  • Completion of YouTube video
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 the 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