Monday, April 25, 2016

Chromebook LED Diagnostic: Senior Design Project (Winter - Spring 2016)


Chrome logo
Summary: A Quick Look at the Project

The Chromebook LED diagnostic project is part of University of California Davis Senior Design class. Our client Sheng-Liang Song, a software engineer at Google HQ in Mountain View, proposed and overlooked our progress. The project focuses on updating Chromebook's firmware to encode and send out an error message through the computer's LED light bar. Over the course of the project, we have learned many technical, communicative and team working skills.

     While we could bore you with a bunch of technical buzz words and fancy computer terms, this is not what this blog is for. This is not a step by step tutorial to recreate our resuts. The purpose of this blog is to communicate how we got the results that we got and hopefully inspire some of the readers to undertake similar projects of their own.

    So without further ado, we welcome you to Chrome Failure Analysis group!

The Project: A Closer Look

Beautiful Chromebook LED light

     The project began with five UC Davis computer science students. We undertook this particular project because of the scale of the project. Up to this point, the projects we have encountered in classes and in internships were small in scale. Approaching a project like this required a new way of viewing and thinking about various parts, including planning, communicating, and working together as a team. 

     The project had several stages: the initialization, embedded board, transition to firmware/Chromebook, and presentations. Eager to learn and dive into the Chromebook (we were told we would be working below C level) our first steps would prove to be the foundation to the later parts of the project. 

Courtesey of google.com
Initialization: Our Two Quarter Journey Begins

     The first few weeks were all about taking notes and learning as much as possible about Chrome OS. We all heard of Chrome OS but what was it? This is what we tried to answer before we even started planning our project. One of the most important aspects of solving a problem is having an knowledgeable approach to it. Although it is possible to blindly try to tackle an obstacle, it is much more logical to have an understanding of the situation and what to expect. 

Embedded Boards: Our Next Step

Courtesy of google.com
     Our direction after the first three weeks had a few uncertainties. We were facing many options concerning where our project development would head next. Should we go ahead and start trying to understand the source code for the EC in the Chromebook or should we take a safer approach with the embedded board. 



    Our client suggested starting with the embedded board because it would provide a smoother transition into the embedded controllers. One of the take away from this projects for us was that taking a more reliable approach, not necessarily the fastest approach, is a better choice for a larger scale project. 

Firmware: Compiling and Flashing

Chromebook back panel opened up
Once we were ready, our client provided us with a Chromebook and a servo board that would aid us in updating the firmware and eventually changing the functionality of the Chromebook. 

The steps we took to compile, flash, and transfer the new code onto the Chromebook taught us the importance of documentation. Almost all of us had documented their steps for this process. This was due to the fact that the provided Chromium documentation gave us difficulties and took us quite some time to fully understand. 

Documentation is not only important for tracking your progress but its also helpful when other people want to follow your steps. In an open source project like the Chrome OS, this is especially important. 

Once we had all of our steps figured out, we began editing the source code. This is where we truly shined. Seeing the so familiar C code, that we have grown to hate and eventually love in our classes, made us feel much more comfortable with the project. Having the knowledge we have acquired from the previous months studying the embedded board and Chrome OS developers guides was indeed beneficial. 


Servo board connected to the Chromebook via a ribbon cable
     Pretty soon we had divided the main objective into smaller, easier functionalities and we assigned everybody their respective parts. We would hold weekly (sometimes bi-weekly) meetings to update all the group members and ask questions or share anything new/exciting we had come across.


This is a demo of the lid detection working with the LED light

Debugging Mode: Planing and Assembling
   
   Once we were ready to put all the different parts of the project into one, communication and documentation became a key part of successfully accomplishing this step. 
Finite State Machine Blue Prints
   It was also crucial to account our design towards easy user utilization. To do so, we had to balance both the ease of implementation and the ease of instructions. We came up with the following design to enter our Chromebook debugging mode via the lid angle. 

 
                 The sequence of angles to enter debugging is 45-90-45-90. To exit, an angle greater then 130 will flash green and reset. User has 5 seconds before flashing red and resetting. 

Presentations: Senior Design Showcase at UC Davis

Coming soon...

The Team: Faces Behind the Project

Coming soon..

GitHub Link:
https://github.com/akappy7/ChromeOS_EC_LED_Diagnostics