BeagleBoard/GSoC/etcher-beagleboot

From eLinux.org
Jump to: navigation, search


etcher-beagleboot

Integrate node-beagle-boot to Etcher and add features like U-boot console on boot up, a proxy server, 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.

Proxy Server in node-beagle-boot

  • A proxy server that gets all requests (targeted at addresses other than app's virtual IP) from BeagleBone and routes them to the host IP stack using Node sockets, so that it reaches the internet and also feeds the response (received on app's port) back to the BeagleBone.
  • All requests will be received and served to-from BeagleBone over node-usb (RNDIS).
  • This would help to circumvent all the host specific configs to enable networking in BeagleBone.
  • This way the cloud9 server hosted on BeagleBone can also be exposed only to the BeagleBoot app, not the entire host network.

Improvements in node-beagle-boot:

Integration of node-beagle-boot in etcher

Timeline

Before Official coding time: Make intro video. Analyse etcher's coding guidelines and framework
2018-05-21: Milestone #1

  • Write all protocols according to etcher framework.

2018-05-28: Milestone #2

  • Fix Linux support and root permissions requirement in etcher usbboot framework. See this
  • Etcher able to load WinUSB drivers for AM335x on Windows.

2018-06-04: Milestone #3

  • Etcher able to boot BeagleBone into mass storage mode.

2018-06-11: Milestone #4

  • TCP/IP proxy in node-beagle-boot
  • Implement TCP requests handling (parsing and encoding), received from board.
  • Route required TCP requests to host network stack using Node sockets.
  • Receive response on app port and route it to board.

---FIRST EVALUATION---
2018-06-18: Milestone #5

  • Refactor BeagleBoot app code.
  • Improve app state management.

2018-06-25: Milestone #6

2018-07-01: Milestone #7

  • Implement UI for U-boot console.
  • App able to provide interaction with U-boot console.

2018-07-08: Milestone #8

  • node-beagle-boot and hence BeagleBoot able to load WinUSB drivers on Windows.
  • Fix all cross platform issues.

---SECOND EVALUATION---
2018-07-15: Milestone #9

  • * Testing and Bug Fixes

2018-07-22: Milestone #10

  • Documentation

A buffer of one week has been kept for any unpredictable delays.
2018-07-29: Milestone #11

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.