embedded software boot camp

How to lockup the in-flight entertainment system on a Boeing 777

Saturday, June 18th, 2011 by Nigel Jones

I have recently returned from  a short trip to the UK. I flew both ways on what appeared to be a relatively new Boeing 777 courtesy of  United Airlines. As is now common place on trans-Atlantic wide-body aircraft, my seat came with its own in-flight entertainment system. After I took my seat to fly to London, I was a little surprised to see that the in-flight entertainment system was suddenly rebooted. How did I know this? Well there was cute Linux penguin in the top left hand corner, plus I (and the rest of the plane) was treated to the always delightful task of watching hundreds of lines of startup script scrolling across the screen. After a minute or two the reboot came to an end and I was presented with the now standard touch screen user interface.This should have given me a hint that the in-flight entertainment system wasn’t the most stable of applications.

Now flights from the east coast of the USA to Europe tend to be night flights, and this flight was no exception. Being a seasoned traveler I have my trans-Atlantic night flight routine down pat. Get settled in, have something to eat, put on the noise cancelling headphones, select a classical music channel and then try and sleep for the rest of the flight. I followed my routine, and after selecting the appropriate music channel, I selected the volume control icon. This resulted in a pop-up window from which I adjusted the volume to something reasonable. I then made the fateful mistake. Rather than exiting the volume adjust window, I simply hit the ‘on/off’ button. This of course doesn’t turn the system off, it merely blanks the display. I then settled in for my nap. Several hours later, I woke up and wondered how far into the flight we were and thus decided to take a look at the real-time route map. Accordingly I turned the display ‘on’ and was rewarded with what I expected to see, namely the volume control screen. A photograph is shown below:

When I touched the Back button, nothing happened. Hmmm thought I, has my system died? Answer – no. I could still adjust the volume, and I could still mute and un-mute the audio. I could also turn the system ‘on’ and ‘off’. Clearly the problem was that there was no ‘back’ associated with the Back button. Needless to say, United Airlines wasn’t going to reboot the entire system so that I could experiment some more, plus I was tired. Anyway I resolved to experiment some more on the return flight.

Thus a week later I’m on a Boeing 777 with the same in flight entertainment system. I brought up the volume control page and did nothing. After about 30 seconds, the pop-up window auto cleared. This was the clue I needed. I thus brought up the volume control page again and immediately turned the unit ‘off’ and then a few seconds later ‘on’. When I did this the back button worked correctly. I repeated the exercise a few more times, and it always worked. I then repeated the exercise, but this time I waited longer than the screen timeout period. Voila – lockup. Clearly this was a case where there was a gaping hole in the state machine that was driving the user interface. At this point I found some interesting thoughts crossing my mind:

  • Idiot. Now you can’t watch any movies.
  • I bet the designer didn’t use a formal state machine tool such as visualSTATE, or QP
  • Whenever there are two distinct ways of exiting a state (in this case, user action or the passage of time), life gets complicated
  • Preserving state across a ‘power down’ is always difficult
  • I hope the guy that wrote the in-flight entertainment  system had nothing to do with the flight control systems on the plane!

Anyway if you find yourself on a plane with an in-flight entertainment system in the near future, see if you too can crash the system – and let us know how you did it.

P.S. I woke up this morning to read that a computer ‘glitch’ effectively grounded United Airlines yesterday. See this for thoughts on United’s computer system.

13 Responses to “How to lockup the in-flight entertainment system on a Boeing 777”

  1. david collier says:

    I think we should set up SPUNK – society for the protection of untested kit – and nominate Nigel as our Great Satan….

  2. Sam says:

    A month ago we were flying trans-atlantic on triple 7s… we too witnessed a reboot of the flight entertainment system when movies and such would not start properly for quite a few people. Also, on another flight, mine was having a strange audio issue where the sound was all garbled. When inquiring about it, the flight attendant was able to reset my screen, which went back to normal after a few mins.

  3. Paul says:

    I’m a flight attendant for the new United and system reboots are common. These systems are not very well tested in my opinion, specially under load. On 777 were talking at possibly 300 people all going at it: and not alll movies, but games and music too. Although, I have to admit that FULL system reboot have happening in less frequency. The system also supports resetting individual seats, and that usually fixes most passenger’s issues.
    And, NO, these are not the same folks that program the flight system. The entertainment system is not connected to the flight controls.

  4. hpro says:

    I have always been fascinated by how poorly tested much of the consumer-facing software is, as it is not uncommon to find trivial ways to break them, or at least make behave strangely. I realize that this is very much due to the fact that “user != purchaser”.

    But still. Is there no testing done whatsoever? I recall that one of the best things we did to a product i worked on was to set up automated “raving monkey-tests”, where the software would be fed random user input at a decent clip. Within two weeks we managed to pin down quite a few crashes, hangs and interface lockups, even really obscure ones such as managing to “click” in two different places within just two frames.

  5. dobro says:

    hpro:

    Great minds must think alike! QA at a previous company would run what I called the “Epileptic Monkey” tests on our printer controllers. Stuff that no sane person would ever do, maybe COULDN’T ever do, we had to handle. As much as I hated those tests, I can’t deny that my code was much better for it.

  6. Dennis says:

    I wonder who made the IFE

  7. Mark M says:

    I was on a United flight (Boeing 777) in business class waiting to depart, and my entertainment center locked up during the pre-flight video, then my seatmate’s locked up too. I Googled the issue and was hoping this website would tell me how to fix it myself (I was really wishing there was somewhat to do it from the wired remote control at each seat. I even tried pressing and holding individual buttons, as well as 2- and 3-button press combinations — no luck!)

    The flight attendant said she rebooted our systems from the galley back somewhere and that we should be patient. 30 min later, we were still locked up. The flight attendant had to have my seatmate (who was seated on the aisle; I was on the window) raise his footrest so he could reach underneath it and flip a “hard switch” that did a hard reset on my and my seatmate’s entertainment system. The switch seemed to be near the aisle.

    So, weary traveler, if you’re sick of waiting for the flight attendant to do a soft reset, or the soft reset is taking too long and the attendant is nowhere to be found, now you know how to reset it yourself! …as long as you don’t mind getting down on your hands and knees and groping underneath the seat 🙂

  8. StuckOnTheGround says:

    Reached this website the same way as Mark above..on a British/Turkish Airline 777-300ER staring at a “Loading” screen with spinning dots around their bird (crane?) logo. Everyone else’s system is still working (I see people browsing through list of movies), while another listening to music), and didn’t fix after Captain’s announcement or holding power button.

    I remember this happening a few years before and the flight attendant also reached under seat to reset the system in front. Groped beneath the bottom of my seat but it seems perfectly smooth, and with a pair of some lady’s naked feet stretched under me I can’t really crawl on my knees and peek under.

    The system scrolled fine through movies and several menu, but I think when I clicked the flight status it’s stuck (maybe because the flight never “took off” yet? Still by the gate). Will see if it changes after taking off.

    Wish I spoke German

  9. Wally says:

    You don’t even need to use a formal tool like VisualState.

    Just draw the state diagram up on a whiteboard, and properly write out every state transition and what is done on the transiation.

    The methodology for this is quite simple and has been around for years. Any state that has only a single entry and exit (and no looping back to itself) should not exist and can be folded into one of the other states.

    Do this and ask your colleages to look over it – this shakes the edges cases out.

  10. RichTheEngineer says:

    Just did a round-trip from Detroit to Heathrow, both legs on Boeing. Happy to report that nothing has changed; in-flight entertainment systems are still SNAFUed. Obviously a fly-by-nighter (pun intended) did the programming.

  11. Mike Lewis says:

    My in flight entertainment system on a Boeing 787-9 Dreamliner stopped working when I was plugging and unplugging my Samsung Galaxy Ace 3 phone into the USB port while it was doing something. Oh dear. I was doing state machines back in the late eighties for Australia’s first phone banking system and they’re really not that difficult. One of the final tests we performed on the banking software was a “cable trip test” when we pulled out the communications cable (RS-232 serial in those days) and the software had to recover from total communications failure at any point in the cycle.

    It must happen a lot as the flight attendant knew how to reset it.

Leave a Reply to david collier

You must be logged in to post a comment.