Difference between revisions of "BeagleBoard/GSoC/BeagleBone-based-Serial-Terminal-Server"

From eLinux.org
Jump to: navigation, search
m (About you)
(About my project)
Line 26: Line 26:
 
''Previous GSoC participation'': No previous participation.
 
''Previous GSoC participation'': No previous participation.
  
==About your project==
+
==About my project==
 
''Project name'':    BeagleBone based Serial Terminal Server<br>
 
''Project name'':    BeagleBone based Serial Terminal Server<br>
 
''Task Completion'': [https://github.com/jadonk/gsoc-application/pull/100 Pull request].
 
''Task Completion'': [https://github.com/jadonk/gsoc-application/pull/100 Pull request].
Line 35: Line 35:
 
===Deliverables===
 
===Deliverables===
 
The project will have the following features:
 
The project will have the following features:
# User connects to the terminal server over SSH
+
# User connects to the terminal server over SSH.
# A command line interface will allow users to configure and select the interfaces to monitor and log
+
# A command line interface will allow users to configure and select the interfaces to monitor and log.
# Logs will be split and archived every 24 hours
+
# Logs will be split and archived every 24 hours.
# User will be able to attach to and detach from individual serial terminal sessions, similar to tmux/screen
+
# User will be able to attach to and detach from individual serial terminal sessions, similar to tmux/screen.
# User will be able to view logged data from the serial device
+
# User will be able to view logged data from the serial device.
 +
# Kermit style [https://en.wikipedia.org/wiki/Expect expect-send] scripts can be attached to interfaces from the prompt.
 +
# Arbitrary scripts/executables can be attached to interfaces for automation through redirection of stdio.
 +
# Scripts can be scheduled for periodically connecting to devices, performing actions and logging the output.
  
 
===Implementation===
 
===Implementation===
* A new user will be added to the BeagleBone for users to connect to
+
* A new user will be added to the BeagleBone for users to connect to.
* The new user will have a custom prompt instead of bash
+
* The new user will have a custom prompt instead of bash.
* termios will be used to configure serial interfaces
+
* termios will be used to configure serial interfaces.
* Incoming data will be piped to a log file without buffering
+
* Incoming data will be piped to a log file without buffering.
* When a user attaches to a session, the log will be tailed to display the serial output
+
* When a user attaches to a session, the log will be tailed to display the serial output.
* Input from the user will be piped to the serial device in interactive mode
+
* Input from the user will be piped to the serial device in interactive mode.
* A cron job will handle log archiving
+
* A cron job will handle log archiving.
 +
* The native "expect" program will be used to parse expect scripts.
 +
* On running a script, the output of UART will be piped to the script, and the output of the script will be piped to UART.
 +
* scheduling of scripts will be handled by a separate thread.
  
 
===Timeline===
 
===Timeline===
Line 65: Line 71:
 
| 5 || Implement basic attach/detach functionality
 
| 5 || Implement basic attach/detach functionality
 
|-
 
|-
| 6 || Implement basic attach/detach functionality
+
| 6 || Implement "configure" CLI command to configure UARTs
 
|-
 
|-
| 7 || Implement "configure" CLI command to configure UARTs
+
| 7 || Add scripting support
 
|-
 
|-
| 8 || Add other commands for CLI
+
| 8 || Add and test scripting support
 
|-
 
|-
 
| 9 || Test
 
| 9 || Test
Line 88: Line 94:
  
 
===Benefit===
 
===Benefit===
This project will allow users to monitor up to 4 UART devices over ethernet without having to use either an expensive serial terminal server, or an always-online computer with USB hubs and multiple USB-TTL converters.
+
This project will allow users to monitor up to 4 UART devices over ethernet without having to use either an expensive serial terminal server, or an always-online computer with USB hubs and multiple USB-TTL converters. This will also allow users to automate monitoring by using expect, python and other scripting languages.

Revision as of 21:03, 20 March 2018


BeagleBone based Serial Terminal Server

Student: Harikrishnan R
Mentors: Michael Welling
Code: TBD
Wiki: http://elinux.org/BeagleBoard/GSoC/BeagleBone-based-Serial-Terminal-Server
GSoC: TBD

Status

This project is currently just a proposal.

Proposal

About me

IRC: illustris
Github: https://github.com/illustris
School: BITS Pilani, Goa campus
Country: India
Primary language: English
Typical work hours: 11:30 PM to 4.30 PM UTC
Previous GSoC participation: No previous participation.

About my project

Project name: BeagleBone based Serial Terminal Server
Task Completion: Pull request.

Description

Often in embedded development it is valuable to have a serial terminal server which can retain a serial port connection along with buffered past I/O separate from a typical host PC, either for longer term logging of serial port data or to enable remote management of a device via serial port. Commercial units which have this capability are very expensive, with even single port serial terminal servers consting hundreds of dollars. The BeagleBone has 4 highly capable UARTs exposed besides UART0 through the cape connectors. A simple cape hardware could easily enable a BeagleBone to physically have all the interfaces needed to be a serial terminal server.

Deliverables

The project will have the following features:

  1. User connects to the terminal server over SSH.
  2. A command line interface will allow users to configure and select the interfaces to monitor and log.
  3. Logs will be split and archived every 24 hours.
  4. User will be able to attach to and detach from individual serial terminal sessions, similar to tmux/screen.
  5. User will be able to view logged data from the serial device.
  6. Kermit style expect-send scripts can be attached to interfaces from the prompt.
  7. Arbitrary scripts/executables can be attached to interfaces for automation through redirection of stdio.
  8. Scripts can be scheduled for periodically connecting to devices, performing actions and logging the output.

Implementation

  • A new user will be added to the BeagleBone for users to connect to.
  • The new user will have a custom prompt instead of bash.
  • termios will be used to configure serial interfaces.
  • Incoming data will be piped to a log file without buffering.
  • When a user attaches to a session, the log will be tailed to display the serial output.
  • Input from the user will be piped to the serial device in interactive mode.
  • A cron job will handle log archiving.
  • The native "expect" program will be used to parse expect scripts.
  • On running a script, the output of UART will be piped to the script, and the output of the script will be piped to UART.
  • scheduling of scripts will be handled by a separate thread.

Timeline

Week Plan
1 Discuss with mentor and finalise available commands/features
2 Enable all UARTs, write code to read from UART and log
3 Implement non-interactive live log display
4 Implement piping of stdin to uart device
5 Implement basic attach/detach functionality
6 Implement "configure" CLI command to configure UARTs
7 Add scripting support
8 Add and test scripting support
9 Test
10 BUG fixing and documentation
11 BUG fixing and documentation
12 Package into installer

Experience and approach

As the controls engineering lead of Hyperloop India, I have worked extensively with embedded electronics and software. One of the nodes used in the pod electronics was built around a BeagleBone with a device tree overlay for enabling DCAN1. I have also ported FreeRTOS to a RISC-V processor I helped design.

Contingency

What will you do if you get stuck on your project and your mentor isn’t around?
If Michael and Stephanie are unavailable, I would try asking for help on IRC. I would also consult relevant manpages and documentation.

Benefit

This project will allow users to monitor up to 4 UART devices over ethernet without having to use either an expensive serial terminal server, or an always-online computer with USB hubs and multiple USB-TTL converters. This will also allow users to automate monitoring by using expect, python and other scripting languages.