BeagleBoard/GSoC/etcher-beagleboot

=etcher-beagleboot = Integrate node-beagle-boot to Etcher and add features like U-boot console on boot up, grab latest images from beagleboard.org to BeagleBoot (electron app)

Student: Ravi Kumar Prasad Mentors: Jason Kridner Code: https://github.com/ravikp7/BeagleBoot Wiki: http://elinux.org/BeagleBoard/GSoC/etcher-beagleboot GSoC: [NA GSoC entry]

=Status= This project is currently just a proposal.

=Proposal= Cross-compile and utilize version control software by creating a "Hello World" application and generating a pull request https://github.com/jadonk/gsoc-application/pull/60

About you
IRC: ravikp7 Github: ravikp7 School: Maharaja Agrasen Institute of Technology Country: India Primary language: English, Hindi Typical work hours: (9AM-3PM and 7PM-12AM) IST or (11:30PM-5:30AM and 9:30AM-2:30PM) EST

About your project
Project name: BeagleBoot

Description
Etcher is a widely used open source app for flashing sd cards, thumb drives etc, with support on all major platforms. Recently it got usb boot support for Raspberry Pi, through which it can mount Pi's emmc for flashing. Similarly, node-beagle-boot server can be integrated in the app to boot BeagleBone (AM335x boards) into mass storage mode for Flashing.

The BeagleBoot (electron app) developed last year, needs some improvements and feature additions.

Features to be added:
1. Grab latest images from beagleboard.org for flashing. 2. Provide U-boot console in the app after booting. The U-boot console will be accessed via USB connection with Net console through node-beagle-boot server. Illustrated by Jason Kridner here. 3. For U-boot console UI, I'll be using this React Component in the app. As, I don't want to re-invent the wheel, this component seems a good fit for our requirement.

Improvements in node-beagle-boot:

 * Use this module to load WinUSB drivers on Windows.

Integration of node-beagle-boot in etcher

 * Provide a pull request to etcher that fits their framework for usb boot.

Timeline
Before Official coding time:  Make intro video. Analyse etcher's coding guidelines and framework 2018-05-21: Milestone #1 2018-05-28: Milestone #2 2018-06-04: Milestone #3 2018-06-11: Milestone #4  ---FIRST EVALUATION---  2018-06-18: Milestone #5 2018-06-25: Milestone #6 2018-07-01: Milestone #7 2018-07-08: Milestone #8  ---SECOND EVALUATION---  2018-07-15: Milestone #9 2018-07-22: Milestone #10 A buffer of one week has been kept for any unpredictable delays. 2018-07-29: Milestone #11
 * Write all protocols according to etcher framework.
 * Fix Linux support and root permissions requirement in etcher usbboot framework. See this
 * Etcher able to load WinUSB drivers for AM335x on Windows.
 * Etcher able to boot BeagleBone into mass storage mode.
 * Testing, bug fixes and documentation.
 * Refactor BeagleBoot app code.
 * Improve app state management.
 * Implement UI for downloading latest images from beagleboard.org
 * App able to grab latest images for flashing.
 * Implement UI for U-boot console.
 * App able to provide interaction with U-boot console.
 * node-beagle-boot and hence BeagleBoot able to load WinUSB drivers on Windows.
 * Fix all cross platform issues.
 * * Testing and Bug Fixes
 * Documentation

Experience and approach
I've successfully completed GSoC 2017 for BeagleBoard.org. Code repositories for same https://github.com/ravikp7/node-beagle-boot, https://github.com/ravikp7/BeagleBoot With the gained experience, I hope to be more consistent this time.

Contingency
What will you do if you get stuck on your project and your mentor isn’t around? If I get stuck and mentor isn't around: 1. I'll seek help from BeagleBone community on IRC and mailing list. 2. I'll crawl the internet with google :) and stackoverflow community is always there to help. 3. I believe that since all the code and machines ever are made by humans, so there's no reason I being a human too can't solve the problem. Surely, it can take time, but it isn't impossible.

Benefit
If successfully completed, what will its impact be on the BeagleBoard.org community? This project project will be really helpful for everybody especially newbies, who would have a nice experience with flashing images easily with their favourite Flashing app Etcher. Along with that, with access to U-boot console in electron app will make it easier to debug over USB without a serial cable.