Work of Diploma - Stephan Robert
Transcription
Work of Diploma - Stephan Robert
People Detection in Video Surveillance based on Atom development kit Author Professors Department Date : : : : Reussner Matthieu S.Robert A.Srinivas ”TIC” & ”Information Science and Engineering” June 20, 2012 ”The value of an idea lies in the using of it.” Thomas Edison Reussner Matthieu Acknowledgements First of all, I would like to thank those at PES-IT for allowing me to do my internship in Bangalore, India. I would especially like to thanks professor A.Srinivas for his time, support and making me feel at home in India. I would also like to thanks professor S.Robert for giving me the opportunity to travel between Switzerland, India, and America for my studies The following list comprises some of the peoples who helped me in any form during the realization of my work of bachelor. My deepest gratitude to all of the below. • Ahalya Srinivasan • Aude Ray • Kumari Radha • Michael Haney • Nitheesh K L • Sarah Carbonel • Valentin Delaye • Valérie C. Fazan Lastly, I wish to thank my parents Michel Reussner and Mireille Bourquin Reussner for their continuous support. Reussner Matthieu Contents 1 Scope statement 1.1 Project objective . . . . . . . . 1.2 Proposed Solution . . . . . . . 1.3 Requirements . . . . . . . . . . 1.4 Deliverables . . . . . . . . . . . 1.4.1 Proof of concept . . . . 1.4.2 Report . . . . . . . . . . 1.4.3 User documentation . . 1.4.4 Presentation documents 1.5 Deadline . . . . . . . . . . . . . 1.6 Owner of Deliverables . . . . . 1.7 Milestones . . . . . . . . . . . . 1.8 Approved change requests . . . 1.9 Acceptance criteria . . . . . . . 1.10 Signatures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 1 1 1 1 2 2 2 2 2 3 3 3 3 2 Summary 4 3 Introduction 5 4 Planning 4.1 Part One of the project (45 days) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 Part Two of the project (45 days) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 6 7 5 Materials and software R AtomTM Innovation Kit 5.1 Intel 5.1.1 Overview . . . . . . . . 5.1.2 Specifications[2] . . . . . 5.2 CompactFlash card . . . . . . . 5.2.1 Overview . . . . . . . . 5.3 Gnu/Linux Gentoo . . . . . . . 5.3.1 Overview . . . . . . . . 5.3.2 Specifications . . . . . . 5.4 OpenTLD . . . . . . . . . . . . 5.4.1 Overview . . . . . . . . 5.4.2 Specifications . . . . . . 5.5 OpenCV . . . . . . . . . . . . . 5.5.1 Overview . . . . . . . . 5.5.2 Specifications . . . . . . 5.6 The Spread Toolkit . . . . . . . 5.6.1 Overview . . . . . . . . Board 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 8 8 8 9 9 9 9 10 10 10 10 10 11 11 11 11 i Reussner Matthieu . . . . . . . . 11 11 12 12 12 12 12 12 6 Schema 6.1 Global . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2 Sensor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 13 13 7 Installation 7.1 Operating system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.1.1 Downloading and installing the base system . . . . . . . . . . . . . 7.1.2 Enter the new installation environment . . . . . . . . . . . . . . . 7.1.3 Installing and configuring the Kernel . . . . . . . . . . . . . . . . . 7.1.4 Installing and configuring the Boot-loader . . . . . . . . . . . . . . 7.1.5 Configuring the Network . . . . . . . . . . . . . . . . . . . . . . . . 7.1.6 Installing and configuring of miscellaneous applications and library 7.2 Messaging service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.2.1 Installing the Spread toolkit . . . . . . . . . . . . . . . . . . . . . . 7.2.2 Configuring the Spread toolkit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 15 15 17 17 17 18 18 18 19 19 8 Transmission of data 8.1 Schema . . . . . . . 8.2 Overview . . . . . . 8.3 Technical description 8.4 Implementation . . . 8.4.1 Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 20 20 20 21 21 9 Notifications 9.1 Schema . . . . . . . 9.2 Technical description 9.3 Implementation . . . 9.3.1 libcurl . . . . 9.3.2 libotr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 22 22 22 23 23 10 Results 10.1 Definition . . . . 10.2 Methodology . . 10.3 Raw data . . . . 10.4 Interpretation . . 10.4.1 Recall . . 10.4.2 Precision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 24 24 24 24 25 25 . . . . . . . 26 26 26 26 27 27 27 27 5.7 5.8 5.9 5.6.2 Specifications . . . . Microsoft LifeCam VX-1000 5.7.1 Specifications[7] . . . Library Curl . . . . . . . . 5.8.1 Overview . . . . . . 5.8.2 Specifications . . . . Library Off-The-Record . . 5.9.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . Webcam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Problems 11.1 Network . . . . . . . . . . . . . . . . 11.1.1 Block of specific website . . . 11.1.2 Man In The Middle . . . . . 11.1.3 General Block . . . . . . . . . 11.1.4 Consequences on the project 11.2 Predator . . . . . . . . . . . . . . . . 11.2.1 Consequences on the project . . . . . . . . . . . . . . . Black - USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ii Reussner Matthieu 12 Change from the initial objectives 12.1 Reason . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.2 Conservation of some part of the project . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 28 28 13 Cascade of Boosted Classifiers Based on Haar-like Features 13.1 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.2 Theory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.3 Generation of the Haarcascade with OpenCV . . . . . . . . . . 13.3.1 Installation of the training program . . . . . . . . . . . 13.3.2 Sources images . . . . . . . . . . . . . . . . . . . . . . . 13.3.3 Generation of the vector . . . . . . . . . . . . . . . . . . 13.3.4 Training of the classifier . . . . . . . . . . . . . . . . . . 13.4 Test of the classifier . . . . . . . . . . . . . . . . . . . . . . . . 13.4.1 Subjective assessment . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 29 29 30 30 30 31 32 32 32 . . . . . . . . . . 33 33 33 33 33 34 34 35 35 35 35 14 New notification system 14.1 Schema . . . . . . . . . . . . . . . 14.1.1 Schema of the Wall . . . . . 14.1.2 Logical connection . . . . . 14.2 Implementation . . . . . . . . . . . 14.2.1 Technical description . . . . 14.3 Making . . . . . . . . . . . . . . . 14.4 Product . . . . . . . . . . . . . . . 14.5 Problems . . . . . . . . . . . . . . 14.6 Realisation . . . . . . . . . . . . . 14.6.1 Installation of the operating 15 Source code and cf images 15.1 shared . . . . . . . . . . . 15.2 wall . . . . . . . . . . . . 15.3 master . . . . . . . . . . . 15.4 sensor . . . . . . . . . . . 15.5 wall.dd . . . . . . . . . . . 15.6 sensor.dd . . . . . . . . . 16 Deployment 16.1 Required Material 16.2 Notification system 16.3 Master node . . . . 16.4 Sensor . . . . . . . . . . (The . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . system on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . the embedded board . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 38 38 39 39 39 39 . . . . Wall) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 40 40 40 41 . . . . . . . . . . . . 17 Conclusion 42 18 Bibliography 43 43 iii Reussner Matthieu 19 Annexes 19.1 Custom settings for Portage . . . . 19.2 Network configuration . . . . . . . 19.3 Packages configurations . . . . . . 19.4 Kernel Configuration . . . . . . . . 19.5 Persistent net rules . . . . . . . . . 19.6 Network name resolution . . . . . . 19.7 Autologin . . . . . . . . . . . . . . 19.8 Spread toolkit configuration . . . . 19.9 Record video from Webcam . . . . 19.10mount Compact flash . . . . . . . 19.11updating environment settings . . 19.12Structure of transmitted data . . . 19.13Getting around the PESIT internet 20 Work log 20.1 Week 20.2 Week 20.3 Week 20.4 Week 20.5 Week 20.6 Week 20.7 Week 20.8 Week 20.9 Week 20.10Week 20.11Week 20.12Week 20.13Week 20.14Week 20.15Week 20.16Week 20.17Week 1. . 2. . 3. . 4. . 5,6 . 7. . 8. . 9. . 10 . 11 . 12 . 13 . 14 . 15 . 16 . 17 . 18 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 44 44 45 45 61 61 62 62 62 64 64 64 65 . . . . . . . . . . . . . . . . . 66 66 67 67 68 68 69 69 69 70 70 71 71 71 72 72 73 73 iv Reussner Matthieu List of Figures 4.1 Desired schedule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1 5.2 5.3 5.4 5.5 5.6 Pineview board overview[1] . . SanDisk 16Gb FlashCard[3] . . Gentoo logo[5] . . . . . . . . . OpenCV logo[6] . . . . . . . . . Webcam used for the project[7] libcurl logo[8] . . . . . . . . . . . . . . . . 8 9 9 10 11 12 6.1 6.2 Global schema of the project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sensor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 14 8.1 8.2 Transmission of data across the network . . . . . . . . . . . . . . . . . . . . . . . . . . . . Transmission of data across the network . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 21 9.1 9.2 Notifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Notification display by a email client (mutt) . . . . . . . . . . . . . . . . . . . . . . . . . . 22 23 13.1 Steps of haar-like features detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 14.1 The Wall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14.2 The Wall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 34 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 v Reussner Matthieu List of Listings 7.1 Partition on the CF card . . . . . . . . . . . . . . . . . . . . 7.2 Creation of the file system on the CF card . . . . . . . . . . . 7.3 Mounting partition . . . . . . . . . . . . . . . . . . . . . . . . 7.4 Downloading and extracting Gentoo stage 3 and Portage files 7.5 Changing root value . . . . . . . . . . . . . . . . . . . . . . . 7.6 Building the kernel . . . . . . . . . . . . . . . . . . . . . . . . 7.7 Installing the boot-loader . . . . . . . . . . . . . . . . . . . . 7.8 Installation and configuration of miscellaneous applications . 7.9 Installing the messaging system . . . . . . . . . . . . . . . . . 11.1 Certificate informations . . . . . . . . . . . . . . . . . . . . . 11.2 Certificate informations . . . . . . . . . . . . . . . . . . . . . 11.3 Certificate informations . . . . . . . . . . . . . . . . . . . . . 11.4 Denying access to smtps . . . . . . . . . . . . . . . . . . . . . 13.1 Installing OpenCV on Ubuntu . . . . . . . . . . . . . . . . . 13.2 Sample from positive.txt . . . . . . . . . . . . . . . . . . . . . 13.3 Labelling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.4 Generation of the vector . . . . . . . . . . . . . . . . . . . . . 13.5 Training of the classifier . . . . . . . . . . . . . . . . . . . . . 14.1 Installation of the embedded system for the wall . . . . . . . 14.2 Deep copy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14.3 Installation and configuration of miscellaneous applications . 15.1 Installation and configuration of miscellaneous applications . 15.2 Installation and configuration of miscellaneous applications . 16.1 Installation and configuration of miscellaneous applications . 16.2 Installation and configuration of miscellaneous applications . 16.3 Installation and configuration of miscellaneous applications . 19.1 Main gentoo configuration file . . . . . . . . . . . . . . . . . . 19.2 Network configuration with multicast route . . . . . . . . . . 19.3 Per-package ACCEPT KEYWORDS for profiles . . . . . . . 19.4 Feature selection . . . . . . . . . . . . . . . . . . . . . . . . . 19.5 Kernel .config . . . . . . . . . . . . . . . . . . . . . . . . . . . 19.6 Persistent configuration for network interface . . . . . . . . . 19.7 file hosts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19.8 Auto-login service . . . . . . . . . . . . . . . . . . . . . . . . 19.9 Spread main configuration file . . . . . . . . . . . . . . . . . . 19.10Webcam recorder . . . . . . . . . . . . . . . . . . . . . . . . . 19.11Mount then chroot inside cf card . . . . . . . . . . . . . . . . 19.12updating environment settings on CF card . . . . . . . . . . . 19.13Structure hosting data . . . . . . . . . . . . . . . . . . . . . . 19.14Configuring ssh connection . . . . . . . . . . . . . . . . . . . 19.15Content of authorizedkeys on vps server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 16 16 16 17 17 17 18 19 26 26 27 27 30 31 31 31 32 35 36 36 38 38 40 40 41 44 44 45 45 45 61 62 62 62 63 64 64 64 65 65 vi Reussner Matthieu List of Tables 10.1 Result of the first part (rounded value) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 vii Reussner Matthieu Glossary Advanced Packaging Tool Default package management system for Debian. 9 HeigVD School of Business and Engineering Vaud. 2, 5 Open Source Computer Vision Library Library for computer vision. 5, 11 PES-IT PES School of Engineering is a premiere Technical Education College based in Bengaluru, Karnataka. 2, 5 Yellowdog Updater, Modified Default package management system for RedHat. 9 viii Reussner Matthieu Acronyms CCTV Closed-circuit television. 4 CF Compact Flash. 9 DARPA Defense Advanced Research Projects Agency. 11 DNS Domain Name System. 18 NSA National Security Agency (USA). 11 OpenTLD Open Track Learn Detect. 5, 10 PoI Person of Interest. 1 TAR the tape archiver. 16 UDP User Datagram Protocol. 20 VCA Video Content Analysis. 4 ix Reussner Matthieu 1 Scope statement 1.1 Project objective This project will develop and deliver a new tracking system. The new system will be able to select a person on a video stream then track their movement across a large area covered by multiple movie-quality cameras. The system will be developed to be cost effective and easy to maintain. The project should be able to stop tracking a person for sometime then resume searching. 1.2 Proposed Solution Project Person of Interest (PoI) will design, develop and deliver a new tracking system which will allow user to stay focus on a specific person across a large area covered by multiple movies camera. This project will involve the use of a video recognition system previously developed and available under license. 1.3 Requirements The following equipment is required for the project: R AtomTM Innovation Kit?? Intel Movie camera One or more cameras/webcam that can be connected to the Innovation Kit?? Documentations Documentation will be provided as unfiltered1 Internet access. 1.4 1.4.1 Deliverables Proof of concept Disc Image A digital copy of hard drive (or SD cards) used during the project Demo A demo board installed and configured. 1 YouTube and Open-source projects repository must not be blocked 1 Reussner Matthieu 1.4.2 Report A report describing the following part of the project written in English . • Technical choices • Configuration • Deployment • Tests • Conclusions 1.4.3 User documentation If relevant to the project usage, user documentation which states: • How to track someone interactively • How to resume searching someone • How to save a pattern for later search 1.4.4 Presentation documents All documents, videos, files, and slides used during the presentation must be included. 1.5 Deadline At the end of the project (20th of June 2012), the following deliverables will be given to Pr. A.Srinivas from PES-IT: • Proof of concept • Report • User documentation • Presentation documents Only the report will be given on 20th of June to Pr. S.Robert from HeigVD. The remaining deliverables (except the Proof of concept) will be transmitted to Pr. S.Robert during the week following the return of M.Reussner. 1.6 Owner of Deliverables This project is developed for two different schools PES-IT(India) and HeigVD (Switzerland). The Deliverables of the project will be owned by the two aforementioned schools. 2 Reussner Matthieu 1.7 Milestones Every Friday at 8 pm (local time UTC+05:30), a summary of the work done during the week will be sent to Pr. S.Robert (Pr. A.Srinivas can request a copy of these email if needed). On the 20th of April 20122 , an intermediate report will be give to Pr. A.Srinivas and Pr. S.Robert for review. 1.8 Approved change requests Every change on the project has to be discussed and approved by Pr. A.Srinivas and forward to Pr. S.Robert. 1.9 Acceptance criteria This project evaluation will be based on • project presentation • project documentation • project results 1.10 Signatures Bengaluru, June 20, 2012 Pr. A.Srinivas (PES-IT) 2 The Pr. S.Robert (HeigVD) Reussner Matthieu date was later changed to 4th of May 3 Reussner Matthieu 2 Summary Currently, the rate at which Closed-circuit television (CCTV) are installed across the world is increasing rapidly. From the first use in 1942 in Germany to the surveillance system in London, a lot of progress have been made. They are now used for different purposes ranging from monitoring dangerous industrial processes to traffic monitoring, to the fight against crime. Since the first use of these cameras, much research has been carried out leading to tremendous development. Steady progress has led to cheaper systems, which has led to mass deployment (particuliary) in public spaces. According to CCTV advocates, these cameras are supposed to deter crime, provide evidence in criminal cases, and allow people to feel safer. However, opponents of CCTV systems claim that systematic use of monitoring leads to the loss of privacy and has a negative impact on civil liberties such as right of privacy, political meeting, etc... The objective of this diploma project is to build an affordable Video Content Analysis (VCA) which will be able to follow a moving object across a wide area covered by multiple sensors. An example use case might be that of tracking a specific person in a mall if suspected of theft. In order to achieve this goal, the specification provides two tasks which are simultaneously distinct and complementary. The first task will be to set up a monitoring system using multiple embedded systems. Secondarily, to integrate some intelligence into the monitoring system. 4 Reussner Matthieu 3 Introduction This report describes the objectives and results of a Bachelor’s thesis done in collaboration between PESIT and HeigVD. This project was conducted between February 20, 2012 and June 20, 2012 in Bangalore (Karnataka, India). The first goal of this project is to study the capability of a tracking software developed by ”Zdenek Kalal” during his PhD thesis. This software (called Open Track Learn Detect (OpenTLD) or ”Predator”), visually identifies an object and tracks it wherever it moves, regardless of the object’s ability to disappear and re-appear in the video stream. The second objective is to develop and implement an algorithm that is demonstrative of a typical use case. Finally the last objective of this project is to distribute the search of an object across a large area using multiple cameras plugged into multiple embedded systems. For this project, a broad range of technologies and software were used. Among them Open Source Computer Vision Library, OpenTLD, and ”The Spread toolkit”. 5 Task Description 11 Finalizing report 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 days 4.1 1 Writing report Reading documentation 2 OpenTLD 3 Writing scope Reading documentation 4 Network Installaton configuration 5 Embedded Installation + reading code 6 OpenTLD 7 Days off developing Notification 8 system transmition through Net9 work 10 Integration Reussner Matthieu 4 Planning Part One of the project (45 days) 1 As detailed in the work log, the project did not follow the schedule for several reason including two weeks of work not related to the project and various problems with OpenTLD. Figure 4.1: Desired schedule 6 Reussner Matthieu 4.2 Part Two of the project (45 days) After seeing difference between the desired planning and the real one, during the first part of the project. No real planning has been done for this part. The work done has been recorded in the work log. 7 Reussner Matthieu 5 Materials and software 5.1 R AtomTM Innovation Kit Board 2 Intel Figure 5.1: Pineview board overview[1] 5.1.1 Overview The kit5.1 is a fully integrated computer on one card (CPU,RAM,GPU, etc.). It was released on 11 January 2010. According to Intel[2], the kit halts the power of the previous version and is particularly suitable for embedded device. 5.1.2 Specifications[2] R PNV-M SC N450 1.6GHz; Intel R PNV-D DC D410/D510/ D525 CPU Intel R ICH8-M Chip-set South-bridge Intel System Memory One 200-pin SODIMM Up to 2GB DDR2 667MHz SDRAM/ One 204-pin SODIMM 4GB DDR3 800MHz SDRAM (EMX-PNV-D525) Video Output Dual View, VGA, 18-bit LVDS, Optional 48-bit LVDS Output High Definition Audio Codec Realtek ALC888 Supports 5.1+2-CH HD Audio R 82583V Gigabit Ethernet Ethernet Dual Intel Expansion 1 PCI, 1 Mini PCI Express, CompactFlash reader 8 Reussner Matthieu I/O 2 SATA, 4 COM, 8 USB, 16-bit GPIO Power Type ATX/ AT Power Mode Trusted Platform Module Infineon TPM 1.2 SLB9635 (Optional) 5.2 CompactFlash card Figure 5.2: SanDisk 16Gb FlashCard[3] 5.2.1 Overview Compact Flash (CF) is a ”Mass storage device” format developed in 1994 by SanDisk. It was later (1995) standardized by the ”CompactFlash Association”. According to the the ”CompactFlash Association”[4], even though the CompactFlash standards were first developed for cameras, it is now broadly use in embedded systems. 5.3 Gnu/Linux Gentoo Figure 5.3: Gentoo logo[5] 5.3.1 Overview Gentoo5.3 Linux is an operating system based on Gnu/Linux kernel. Unlike most of other Gnu/Linux distribution, Gentoo is a rolling release–meaning the system can be updated at any time. As all modern distribution, Gentoo provide a ”package management system” called ”portage”. Portage provides the ability to download, configure, compile, and install software. It may be differentiated from other ”package manager” like Advanced Packaging Tool or Yellowdog Updater, Modified by its unique proficiency to enable or disable features of the selected program. 9 Reussner Matthieu 5.3.2 Specifications Flexibility Gentoo can be customized for just about any need–from supercomputers to embedded systems. Speed Gentoo can be optimized to match local hardware. Packages Gentoo provides 19,2341 packages. This variety ensures that the needed program for any project will be available. 5.4 5.4.1 OpenTLD Overview OpenTLD2 is an implementation of the Predator algorithm for tracking objects without prior learning. The object is selected on the first frame of a video3 . Predator then tracks it, learning its appearance in order to detect it. OpenTLD is able to improve its detection rate over time as it processes additional frames with the object. 5.4.2 Specifications Training No off-line training Time constraint Real-time performance on QVGA video stream Object tracking TLD tracks only one object Interoperability Windows, Mac OS X and Linux Input video stream from a single camera Licensing GPL version 3.0 and Commercial 5.5 OpenCV Figure 5.4: OpenCV logo[6] 1 On February 28 2012, multiples versions of the same program are count only once C/Cpp version was choosen 3 From a video file or camera 2 The 10 Reussner Matthieu 5.5.1 Overview Open Source Computer Vision Library is a computer library for image processing released under an BSD license. 5.5.2 Specifications Algorithms Version 2.3.1 include more than 2500 optimized algorithms for image processing and computer vision Bindings C++, C, Python, Perl Interoperability Windows, Mac os X, Linux, Android 5.6 5.6.1 The Spread Toolkit Overview Spread Toolkit is an open source library that provides messaging services across different computers. It provides a layer of abstraction to most of the communications across different nodes of a network. 5.6.2 Specifications Broadcast Multi-cast message sending Group message Messages can be sent to 1 host, 1 group, or anyone Strength Reliability and ordering can be assured Wellknown Part of the funding was provided by Defense Advanced Research Projects Agency (DARPA) and National Security Agency (USA) (NSA). 5.7 Microsoft LifeCam VX-1000 Webcam - Black - USB Figure 5.5: Webcam used for the project[7] 11 Reussner Matthieu 5.7.1 Specifications[7] Resolution 0.3 mega-pixel - 640 x 480 Drivers GSPCA Size Width 2.2 in / Depth 2.1 in 5.8 Library Curl Figure 5.6: libcurl logo[8] 5.8.1 Overview Libcurl allows the transfer of data using various protocols, from HTTP to Gopher. This library is used to send email through SMTP. 5.8.2 Specifications Protocols FTP, FTPS, Gopher, HTTP, HTTPS, SCP, SFTP, TFTP, Telnet, DICT, the file URI scheme, LDAP, LDAPS, IMAP, POP3, SMTP and RTSP. Interoperability Solaris, NetBSD, FreeBSD, OpenBSD, Darwin, HPUX, IRIX, AIX, Tru64, Linux, Unix-Ware, HURD, Windows, Symbian, Amiga, OS/2, BeOS, Mac OS X, Ultrix, QNX, OpenVMS, RISC OS, Novell NetWare, DOS License Open source license based on MIT/X 5.9 5.9.1 Library Off-The-Record Overview Off the Record library provides the base64 encoding function used to encode images inside an email. 12 Reussner Matthieu 6 Schema 6.1 Global Figure 6.1: Global schema of the project As shown on figure6.1, the project once deployed is composed of different elements: Sensor Multiple sensors as described in 6.2 Network A network which allow multi-cast data(without firewall to get best result if possible) Object of interest An item (person or object) who will be tracked by the sensor network Security officer Someone who will watch the video stream and report any suspicious activity 6.2 Sensor Atom Board This is the ”brain” of the sensor, all calculations happen here. Movie camera This is the ”eye” of the sensor. 13 Reussner Matthieu Figure 6.2: Sensor Power supply To be fully autonomous, the sensor can be plugged into a battery or if the system. needs to stay on for an extended period of time, directly into sector AC. Network connection This allows the sensor to share pictures to the other sensors and to the Security officer. 14 Reussner Matthieu 7 Installation 7.1 Operating system This section assumes that the reader has prior knowledge of the Unix command line interface (CLI) and is using a Gnu/Linux distribution. This section covers the basis for installing a Gentoo system–more information can be found in the ”Gentoo Handbook”[9] 7.1.1 Downloading and installing the base system Preparing the Disks Even though it is possible to use only one partition for the operating system, it’s almost never done in practice. The first step is to split the cf card in smaller partitions. This step was done using fdisk from a terminal though it can also be done using a graphical user interface (GUI). 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 s t e e l b o o k ˜ # f d i s k / dev / sdb Command (m f o r h e l p ) : p Disk / dev / sda : 3997 MB, 3997163520 b y t e s 255 heads , 63 s e c t o r s / t r a c k , 485 c y l i n d e r s , t o t a l 7806960 s e c t o r s U n i t s = s e c t o r s o f 1 ∗ 512 = 512 b y t e s S e c t o r s i z e ( l o g i c a l / p h y s i c a l ) : 512 b y t e s / 512 b y t e s I /O s i z e ( minimum/ o p t i m a l ) : 512 b y t e s / 512 b y t e s Disk i d e n t i f i e r : 0 x00054b7c D e v i c e Boot / dev / sdb1 ∗ / dev / sdb2 / dev / sdb3 Start 62 198276 2150532 End 198275 2150531 7806959 Blocks 99107 976128 2828214 Id 83 83 83 System Linux Linux Linux Command (m f o r h e l p ) : Listing 7.1: Partition on the CF card As shown on figure7.1, 3 partitions were created. sdb1 Size: 100 Mo, FS Type: ext2, Flags: Boot, Mount Point: /boot sdb2 Size: 1.0 Go, FS Type: swap sdb3 Size: 2.8 Go, FS Type: ext3, Mount Point: / 15 Reussner Matthieu Creating file-systems The different file systems were created using the following commands 1 2 3 4 5 6 s t e e l b o o k ˜ # mkfs . e x t 2 / dev / sdb1 [...] s t e e l b o o k ˜ # mkfs . e x t 3 / dev / sdb3 [...] s t e e l b o o k ˜ # mkswap / dev / sdb2 [...] Listing 7.2: Creation of the file system on the CF card Mounting file-system After spliting the CF and creating a filesystem on the resulting partition, mount the filesystems with the following commands: 1 2 3 4 steelbook steelbook steelbook steelbook ˜ ˜ ˜ ˜ # # # # mkdir −p /mnt/ g e n t o o / dev / sdb3 /mnt/ g e n t o o mkdir /mnt/ g e n t o o / boot mount / dev / sdb1 /mnt/ g e n t o o / boot Listing 7.3: Mounting partition Downloading the base system and Portage files Unlike most of Gnu/Linux distribution, Gentoo’s base layout is provided as a simple the tape archiver (TAR) archive. It can be downloaded from various mirrors[10]1 . 1 2 3 4 5 6 7 8 s t e e l b o o k ˜ # cd /mnt/ g e n t o o / s t e e l b o o k g e n t o o # wget h t t p : / / g e n t o o . c s . nctu . edu . tw/ g e n t o o / r e l e a s e s / x86 / c u r r e n t − s t a g e 3 / s t a g e 3 −i 6 8 6 −20120221. t a r . bz2 s t e e l b o o k g e n t o o # t a r x j p f s t a g e 3 ∗ . t a r . bz2 [...] s t e e l b o o k g e n t o o # cd s t e e l b o o k ˜ # wget h t t p : / / g e n t o o . c s . nctu . edu . tw/ g e n t o o / s n a p s h o t s / p o r t a g e −l a t e s t . t a r . bz2 s t e e l b o o k ˜ # t a r x j p f p o r t a g e −l a t e s t . t a r . bz2 [...] Listing 7.4: Downloading and extracting Gentoo stage 3 and Portage files Copying modified configuration files The following files must be replaced be those provided • /etc/udev/rules.d/70-persistent-net.rules 19.6 • /env.sh19.12 • /etc/kernels/kernel-config-x86-3.2.1-gentoo-r219.5 • /etc/make.conf19.1 1 nctu.edu.tw was chosen for its speed from PES-IT. From Switzerland, the best choice is mirror.switch.ch 16 Reussner Matthieu • /etc/conf.d/net19.2 • /etc/portage/package.accept keywords19.3 • /etc/portage/package.use19.4 • /etc/local.d/x.start19.8 7.1.2 Enter the new installation environment Once all the previous operations have been completed, the next operation is to change the root (/) value: 1 2 3 4 steelbook steelbook steelbook steelbook ˜ ˜ ˜ ˜ # # # # cp −L / e t c / r e s o l v . c o n f /mnt/ g e n t o o / e t c / mount −t p r o c none /mnt/ g e n t o o / p r o c mount −o bind / dev /mnt/ g e n t o o / dev c h r o o t /mnt/ g e n t o o / env . sh Listing 7.5: Changing root value 7.1.3 Installing and configuring the Kernel On Gentoo, the process of configuring, building, and installing a kernel can be done with genkernel. This tool automates the process. 1 2 3 4 5 6 7 ( chroot ) [...] ( chroot ) ( chroot ) ( chroot ) ( chroot ) [...] hostname ˜ # emerge g e n k e r n e l =s y s −k e r n e l / gentoo−s o u r c e s −3.2.1 − r 2 hostname hostname hostname hostname ˜ # src src src cd / u s r / s r c / # rm l i n u x # l n −s l i n u x −3.2.1 − gentoo−r 2 l i n u x # g e n k e r n e l a l l & echo ”Time t o have a nap o r d r i n g some t e e ” Listing 7.6: Building the kernel 7.1.4 Installing and configuring the Boot-loader EXTLinux from SysLinux was chosen as the project boot-loader, mainly because of it’s size and speed. It can be installed on the CF card with the following commands: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ( c h r o o t ) hostname ˜ # emerge s y s −boot / s y s l i n u x ( c h r o o t ) hostname ˜ # mkdir / boot / e x t l i n u x / ( c h r o o t ) hostname ˜ # c a t − > / boot / e x t l i n u x / e x t l i n u x . c o n f DEFAULT g e n t o o LABEL g e n t o o KERNEL / k e r n e l −g e n k e r n e l −x86 −3.2.1 − gentoo−r 2 INITRD / i n i t r a m f s −g e n k e r n e l −x86 −3.2.1 − gentoo−r 2 APPEND r e a l r o o t =/dev / sda3 c t r l −d ( c h r o o t ) hostname ˜ # e x t l i n u x −− i n s t a l l / boot / e x t l i n u x ( c h r o o t ) hostname ˜ # cd / boot ( c h r o o t ) hostname boot #l n −s . boot Listing 7.7: Installing the boot-loader 17 Reussner Matthieu 7.1.5 Configuring the Network Configuring interface name and IPv4 address For this project, a trick was use to only have 1 cf card image but different IPv4 address without a DHCP server. The physical interfaces are renamed based on their MAC address. This is done by matching the ”ATTRaddress” variable from /etc/udev/rules.d/70-persistent-net.rules with the MAC address, then a unique name must be assigned. Consequently, all init services who require net as a dependency will not be able to start without ”-D” option. Then interface name must match their configuration in /etc/conf.d/net as show on Listing 19.2 The last part of the network configuration is adding the name of the embedded inside hosts file. By doing this, the network will not need a Domain Name System (DNS) server. Configuring multi-cast address A new static route must be created to the multi-cast address. The kernel will then be able to receive and dispatch multi-cast data. This is done as shown on Listing19.2. 7.1.6 Installing and configuring of miscellaneous applications and library The following packages need to be installed on the embedded system iproute2 command line tool to deal with routing and ip address awesome Windows manager xorg-server X servers opencv A collection of various computer vision algorithms dhcpcd DHCP client xterm terminal mplayer Media Player for Linux libotr provides functions to send email net-misc/curl provides functions to send email 1 2 3 4 ( c h r o o t ) hostname ˜ # media−l i b s / opencv [...] ( c h r o o t ) hostname ˜ # ( c h r o o t ) hostname ˜ # emerge i p r o u t e 2 net−misc / dhcpcd xterm xorg−s e r v e r mplayer x11−wm/ awesome net−misc / c u r l net−l i b s / l i b o t r u s e r a d d −m g r a p h i c echo ’ e x e c / u s r / b i n /awesome ’ > /home/ g r a p h i c / . x i n i t r c Listing 7.8: Installation and configuration of miscellaneous applications 7.2 Messaging service As specified on section 5.6, Spread is used as a messaging bus to transmit data across the different embedded systems 18 Reussner Matthieu 7.2.1 Installing the Spread toolkit The spread toolkit is tagged as arch, which means it is considered as not sufficiently tested to be included in the default branch. Since this package is highly specific, it is usually tagged as unstable. Before installing this package, the protection needs to be overridden (l1-34). 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 ( c h r o o t ) hostname ˜ # emerge net−misc / s p r e a d −−autounmask−w r i t e −av These a r e t h e p a c k a g e s t h a t would be merged , i n o r d e r : C a l c u l a t i n g d e p e n d e n c i e s . . . done ! [ ebuild N ˜ ] net−misc / s p r e a d − 4 . 1 . 0 0 kB T o t a l : 1 package ( 1 new ) , S i z e o f downloads : 0 kB The f o l l o w i n g keyword c h a n g e s a r e n e c e s s a r y t o p r o c e e d : #r e q u i r e d by net−misc / s p r e a d ( argument ) =net−misc / s p r e a d − 4 . 1 . 0 ˜ x86 31 32 33 34 35 36 Would you l i k e t o add t h e s e c h a n g e s t o your c o n f i g f i l e s ? [ Yes /No ] Yes Autounmask c h a n g e s s u c c e s s f u l l y w r i t t e n . Remember t o run e t c −update . [...] ( c h r o o t ) hostname ˜ # e t c −update Scanning C o n f i g u r a t i o n f i l e s . . . The f o l l o w i n g i s t h e l i s t o f f i l e s which need updating , each c o n f i g u r a t i o n f i l e i s f o l l o w e d by a l i s t o f p o s s i b l e r e p l a c e m e n t f i l e s . 1 ) / e t c / p o r t a g e / package . keywords ( 1 ) P l e a s e s e l e c t a f i l e t o e d i t by e n t e r i n g t h e c o r r e s p o n d i n g number . ( don ’ t u s e −3, −5, −7 o r −9 i f you ’ r e u n s u r e what t o do ) (−1 t o e x i t ) (−3 t o auto merge a l l r e m a i n i n g f i l e s ) (−5 t o auto−merge AND not u s e ’mv −i ’ ) (−7 t o d i s c a r d a l l u p d a t e s ) (−9 t o d i s c a r d a l l u p d a t e s AND not u s e ’ rm −i ’ ) : 1 R e p l a c i n g / e t c / p o r t a g e / package . keywords with / e t c / p o r t a g e / . c f g 0 0 0 0 p a c k a g e . keywords mv : o v e r w r i t e ‘ / e t c / p o r t a g e / package . keywords ’ ? y e s E x i t i n g : Nothing l e f t t o do ; e x i t i n g . : ) ( c h r o o t ) hostname ˜ # emerge net−misc / s p r e a d [...] Listing 7.9: Installing the messaging system 7.2.2 Configuring the Spread toolkit All aspect of the configuration of the Spread toolkit is done by altering the file /etc/spread.conf The appropriate file for the project is provided on Listing19.9 19 Reussner Matthieu 8 Transmission of data 8.1 Schema Figure 8.1: Transmission of data across the network 8.2 Overview As shown on figure9.1, The data is packed and then compressed before being send on the network. On the opposite side, they are uncompressed before being used. 8.3 Technical description As the the spread toolkit limits the payload size to 100 Kilo Octet and 2 pictures with a resolution of 320x240x1 (width X height X depth) weight about 192 Ko, it was not possible to send this amount of data without compressing it. The z library was chosen as it provides a good trade-off between size and CPU usage. On average, after compression, the data (2 pictures + context) weighs 79.257 Ko. This allows the compressed data to be sent inside 1 packet, which limits the delay between transmitting and receiving the pictures. As shown on figure 8.2 the data is similar to Matryoshka dolls. They are first compressed with zlib, and then wrapped by the spread toolkit. All the data is then sent to a multi-cast address (224.0.0.1) as User Datagram Protocol (UDP) message. This methodology allows the sender to pass the data in a single transmission to many receivers without overloading the network. 20 Reussner Matthieu Figure 8.2: Transmission of data across the network 8.4 8.4.1 Implementation Data For this project the data that will be transmitted is packed in a structure as shown on Listing19.13. The fields used are described below: pic1 memory space to store the previous picture (needed by openTLD to track) pic2 memory space to store the actual picture LBBx X coordinates of the top-left corner of the box bounding the previous object LBBy Y coordinates of the top-left corner of the box bounding the previous object LBBwidth Width of the box bounding the previous object LBBheight Height of the box bounding the previous object BBx X coordinates of the top-left corner of the box bounding the object BBy Y coordinates of the top-left corner of the box bounding the object BBwidth Width of the box bounding the object BBheight Height of the box bounding the object timer Timestamp of the second picture status Object is present on the actual picture 21 Reussner Matthieu 9 Notifications 9.1 Schema Figure 9.1: Notifications 9.2 Technical description Every time an alert is triggered, the main embedded board sends an E-mail. As shown in figure 9.2, the E-Mail includes some information about the camera and as attachment, a picture from the detected object. 9.3 Implementation The notification system is implemented using 2 libraries • libcurl • libotr from cypherpunks 22 Reussner Matthieu Figure 9.2: Notification display by a email client (mutt) 9.3.1 libcurl The curl library is used during this project for the following task: Connection to the smtps server Verification of the ssl/tls ceritificate Generating most of the header Sending the email 9.3.2 libotr The Off-The-Record (OTR) library from ”Cypherpunks” allows any kind of message to be encrypted. During this project, the library is used not to encrypt data but to encode it as base64. 23 Reussner Matthieu 10 Results 10.1 Definition To measure the quality of the results, two notions are essential: Recall is the number of object correctly found divided by the total number of object Precision is the number of relevent object found divided by the total number of object found. 10.2 Methodology Two movies of about 30 seconds are recorded then split into frames. Each frame is then labelled as positive or negative. If the frame is labeled as positive, the position of the object is also compared with the real position. The program is then run on each video and the results compared with the manual labelling. 10.3 Raw data Table 10.1 summarizes the result of the experiments. In the FINAL report, the results will be discussed in greater detail. Recall Precision # of frames # of positives frames # of negatives frames Movie 1 Movie 2 27% 97% 549 286 263 24% 89% 415 251 164 Table 10.1: Result of the first part (rounded value) 10.4 Interpretation As shown in table 10.1, Recall is too low for this system to work in real life. 24 Reussner Matthieu 10.4.1 Recall Within the context of the object detection, the recall is the ratio of object found. Table 10.1 clearly show that most occurence of the person are not found. 10.4.2 Precision Within the context of the object detection, the precision is the ratio of real object found versus the false positive. Table 10.1 show that the number of false positive is low. 25 Reussner Matthieu 11 Problems 11.1 Network The internet connection of PESIT is filtered by a network appliance called ”FortiGate”. During the realisation of this project, three different compartments of the ”box” were observed: • Block of some website (tcp port 80 and 443) but no alteration of other data • Man In The Middle for ssl connection • Block of every thing except tcp port 0,53,80,443 The first blocking techniques can easily be circumvented. The third one required a computer outside the network listing for incoming connection on one of the ”free” port. 11.1.1 Block of specific website Nothing has to be done. smtp.gmail.com was not blocked. 11.1.2 Man In The Middle As shown on listing11.1, the certificate for Google smtp can’t be trusted. The Certificate Authority who sign it is not ”Google Internet Authority” but ”Fortinet” 1 2 3 4 5 6 ∗ Server c e r t i f i c a t e : ∗ s u b j e c t : C=US ; ST=C a l i f o r n i a ; L=Mountain View ; O=Google I n c ; CN=smtp . g m a i l . com ∗ s t a r t d a t e : 2011−11−18 0 1 : 5 7 : 1 7 GMT ∗ e x p i r e d a t e : 2012−11−18 0 2 : 0 7 : 1 7 GMT ∗ i s s u e r : C=US ; ST=C a l i f o r n i a ; L=Sunnyvale ; O=F o r t i n e t ; OU=C e r t i f i c a t e A u t h o r i t y ; CN=F o r t i G a t e CA; e m a i l A d d r e s s=s u p p o r t @ f o r t i n e t . com ∗ SSL c e r t i f i c a t e v e r i f y r e s u l t : s e l f s i g n e d c e r t i f i c a t e i n c e r t i f i c a t e c h a i n ( 1 9 ) , c o n t i n u i n g anyway . Listing 11.1: Certificate informations The correct certificat can be seen on figure11.2. 1 2 3 4 5 6 ∗ Server c e r t i f i c a t e : ∗ s u b j e c t : C=US ; ST=C a l i f o r n i a ; L=Mountain View ; O=Google I n c ; CN=smtp . g m a i l . com ∗ s t a r t d a t e : 2011−11−18 0 1 : 5 7 : 1 7 GMT ∗ e x p i r e d a t e : 2012−11−18 0 2 : 0 7 : 1 7 GMT ∗ i s s u e r : C=US ; O=Google I n c ; CN=Google I n t e r n e t A u t h o r i t y ∗ SSL c e r t i f i c a t e v e r i f y ok . Listing 11.2: Certificate informations 26 Reussner Matthieu This block is more an annoyance than something really efficient. In this case, adding the following line and creating a disposable1 gmail account is enough. 1 c u r l e a s y s e t o p t ( c u r l , CURLOPT SSL VERIFYPEER, 0L) ; Listing 11.3: Certificate informations 11.1.3 General Block Presently, all tcp port but 53,80,443 are blocked by the fortigate bastion. The only way around is to use a server listening on one of the ”free” port. The server will then retransmit the data to smtp.gmail.com. As shown in firgure11.4, acces in denied to Google smtp. 1 2 3 $ o p e n s s l s c l i e n t −s h o w c e r t s −c o n n e c t smtp . g m a i l . com : 4 6 5 </dev / n u l l c o n n e c t : C o n n e c t i o n timed out c o n n e c t : e r r n o =110 Listing 11.4: Denying access to smtps As the block will not be present once the system is deployed, an elegant solution based on OpenSSH ”localforward” is used. The necessary step are shown in figure19.14 and 19.15. 11.1.4 Consequences on the project About 1.5 day was lost due to the changes of the network policies. The changes don’t implies any modification of the project itself. 11.2 Predator The version of OpenTLD used during this project2 is not able to recognize the object under the following circumstances: • Rapid movement of the object • Long disappearance of the object • Partial view of the object if moving 11.2.1 Consequences on the project The most important part of the project is based on OpenTLD, any change impact the whole work done during the last 2 month. Following the problems encountered, the project can’t be use as define in the ”Scope statement”. The risk of missing something important / dangerous is too big. For instance, a thief trying to leave the premise of PESIT, is likely going to run. In this case, the system will not be able to follow him. 1 The ”Proxy” has acces to plain text data alantrrs on github 2 From 27 Reussner Matthieu 12 Change from the initial objectives 12.1 Reason Following the disappointing results observed in 10.1, and after a talk with Pr.A.Srinivas, it was decided to change the orientation of the research. 12.2 Conservation of some part of the project The main subject (object detection) of the project is kept as well as the following parts: • Embedded system • Notifications system • Transmission between the embedded boards The main change on the project is the algorithm responsible to detect the objects of interest. In the first part, OpenTLD was the choosen algorithm, this part is done using Haar-like features from OpenCV. Also, the part responsible for sending and receiving has to be updated. On the first part, only one object was tracked, during the second, multiple occurences of an object can be tracked at the same time. 28 Reussner Matthieu 13 Cascade of Boosted Classifiers Based on Haar-like Features 13.1 Description Haar-like features are heavily used in computer object recognition, mostly for its calculation speed and its adaptability. A set of pictures of the particular object of interest is processed offline, a file contening all the results is created. Later all the region of interest of the pictures are then compared with the file. 13.2 Theory Haar-like features work by spliting the picture into squares. For each square the algorithm sums all the pixel, then calculate the difference between these number. The difference is then converted as binary based on a threshold. The thresholded values are then compared to the ”database” of value. Figure 13.1 show the differents steps needed to detect an eye. (a) Original picture (b) Training result (c) Spliting (d) Binary conversion (e) Comparing (f) (optional) drawing Figure 13.1: Steps of haar-like features detection 29 Reussner Matthieu 13.3 Generation of the Haarcascade with OpenCV 6 steps are required to generate a Haarcascade classifier: Collecting a large collection of images with and without the object of interest Cropping all the pictures contening the Object of interest Packing all the positives images in a single vector file Training of the classifier Merging all the trained cascade in a single xml file Testing the haar-like cascade to detect an object 13.3.1 Installation of the training program Generating haarcascade is a CPU Intensive process, which can’t be done in a timely fashion on the embedded board. For this reason, another computer with an Intel i5 CPU and 4Go of ram was used. The system use Ubuntu 11.10 code name Oneiric Ocelot as an operating system and OpenCV 2.3. Thanks to M.Gijs Molenaar, the installation is as straightforward as • add 2 repository • updating local package cache • installing a package The following commands install OpenCV on Ubuntu 11.10 without going through the though process of compiling OpenCV and it’s depencies. 1 2 3 4 5 6 7 8 9 10 buildCascade ˜ Password : 1234 buildCascade ˜ [...] buildCascade ˜ [...] buildCascade ˜ [...] buildCascade ˜ [...] $ sudo su − # add−apt−r e p o s i t o r y ppa : g i j z e l a a r / cuda # add−apt−r e p o s i t o r y ppa : g i j z e l a a r / opencv2 . 3 # apt−g e t update # apt−g e t i n s t a l l l i b c v −dev Listing 13.1: Installing OpenCV on Ubuntu 13.3.2 Sources images The Collection of sources images need to be split in 2 different group. One containing all the pictures of car called positive and one with all the remaining pictures called negative. 30 Reussner Matthieu Positives images The positive images need to be cropped to contain only one object, then ”tagged”. During this project, ”Gwenview” is use for this task. Once this task completed, a file containing the following fields need to be writen: • filename • number of object in the picture • top left x coordinate of the object • top left y coordinate of the object • width of the object • height of the object The following listing 13.2 shows the content of a sample file 1 2 #[ f i l e n a m e ] [# o f o b j e c t s ] [ [ x y width h e i g h t ] p o s i t i v e / i m a g e 0 0 0 0 0 1 . png 1 0 0 310 268 [ . . . 2nd o b j e c t ] ...] Listing 13.2: Sample from positive.txt The labeling phase can be done with the following script: 1 2 3 4 5 6 7 8 9 10 #! / u s r / b i n / env bash f o r f o o i n $ ( f i l e p o s i t i v e /∗ | t r −d ’ do FILENAME=$ ( echo $ f o o | c u t −d : −f 1 ) SIZE=$ ( echo $ f o o | c u t −d , −f 2 ) WIDTH=$ ( echo $SIZE | c u t −d x −f 1 ) HEIGHT=$ ( echo $SIZE | c u t −d x −f 2 ) echo $FILENAME 1 0 0 $WIDTH $HEIGHT done ’) Listing 13.3: Labelling Negative images The negative pictures don’t need to be cropped. Neither did they need to be tagged. The only task is to generate a text file containing the path of all the pictures. The easy way to do it, is to use ”find negative/ > negative.txt”. 13.3.3 Generation of the vector The vector of positive pictures is generated by the following command: 1 2 opencv−c r e a t e s a m p l e s −i n f o p o s i t i v e . t x t −v e c v e c f i l e . v e c \ −num $ ( ( $ ( c a t p o s i t i v e . t x t | wc − l ) −1) ) Listing 13.4: Generation of the vector The command shown in listing 13.4 counts the number of pictures listed in positive.txt then generate a vector using the opencv-createsamples application. 31 Reussner Matthieu 13.3.4 Training of the classifier The commands shown in listing 13.5 generate a classifier using 3.6Go of RAM in the haar folder, then convert it to an xml file named haarCascade.xml. 1 2 opencv−h a a r t r a i n i n g −data haar −v e c v e c f i l e . v e c −bg n e g a t i v e . t x t −n s t a g e s 25 −mem 3600 −mode a l l . / c o n v e r t c a s c a d e −− s i z e=” 30 x33 ” haar haarCascade . xml Listing 13.5: Training of the classifier 13.4 Test of the classifier 13.4.1 Subjective assessment Due to time constraints, only subjective tests have been made. The results seem to be promising with no false positive and high detection rate. 32 Reussner Matthieu 14 New notification system A new notification system was developped and integrated to the project. The notification system is called ”The WALL” 14.1 Schema 14.1.1 Schema of the Wall Figure 14.1: The Wall 14.1.2 Logical connection 14.2 Implementation The implementation of ”The WALL” rests on the following software: • OpenCV • Gstreamer The main system board (embedded0) receive information from the sensors through spread. The system generates an image corresponding to 9 screens and forwards it on the internal network of the wall. The 33 Reussner Matthieu Figure 14.2: The Wall other embedded systems retrieve the video stream, cut the portion corresponding to their screens and displayed the video. 14.2.1 Technical description Network To make the system extensible, images are transmitted in ”multicaste”. This allow the streaming of the video once to a unlimited number of clients. Inside ”The Wall”, the ip 224.0.0.1 is used. Multimedia The pair of framework GStreamer-OpenCV multimedia is used to generate a video, it is then encapsulated and transmitted via the network. A program specifically developed for the occasion generates the image corresponding to the screen wall, writes the contents to a file type ”FIFO”. The contents of that file is then injected into a gstreamer’s pipeline . GStreamer is responsible for preparing the data and then transmiting them via the network using the RTP protocol. 14.3 Making The fabrication of the notification system has been outsourced to a fabricator in Bangalore suburb. The address is Vaishnavi Controls Acoustics, Kanakapura Road, Bangalore-560062 34 Reussner Matthieu 14.4 Product The final product weighing several dozen kilograms and measuring several meters, it is therefore not possible to produce a copy for HeigVD. Therefore a gallery photo and video are different avaialble at the following address: http://vps.reussner.ch/Wall/. Two representative photos are attached in the annexes. 14.5 Problems Currently the system is not fully achieved. More than half (5/8) of the Embedded systems in possession of PESIT are defective. To validate the concepte, it was decided to use desktop computer temporarily. This change lead to heavy modifications to the operating system and to the project source code of the project. 14.6 Realisation 14.6.1 Installation of the operating system on the embedded board As specified in the ”Problems” section, the GNU/Linux distribution used had to be changed to support PC. Currently a minimal version of ubuntu is used. It was generated using ”debootstrap” scripts as shown below: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 r o o t @ s t e e l b o o k # mkdir /mnt/ c l e r o o t @ s t e e l b o o k # mount / dev / sdb3 /mnt/ c l e r o o t @ s t e e l b o o k # mkdir /mnt/ c l e / boot r o o t @ s t e e l b o o k # mount / dev / sdb1 /mnt/ c l e / boot / r o o t @ s t e e l b o o k # d e b o o t s t r a p −−v e r b o s e −−v a r i a n t=minbase −−a r c h i 3 8 6 p r e c i s e /mnt/ cle / r o o t @ s t e e l b o o k # mount −o bind / dev /mnt/ c l e / dev r o o t @ s t e e l b o o k # mount −t p r o c none /mnt/ c l e / p r o c r o o t @ s t e e l b o o k # cp −L / e t c / r e s o l v . c o n f /mnt/ c l e / e t c / r o o t @ s t e e l b o o k # c h r o o t /mnt/ c l e / b i n / bash r o o t @ c h r o o t # apt−g e t update r o o t @ c h r o o t # apt−g e t i n s t a l l l i b g t k 2 .0 −0 net−t o o l s i p r o u t e l i n u x −image \ g s t r e a m e r −t o o l s g s t r e a m e r 0 .10 − p l u g i n s −b a s e g s t r e a m e r 0 .10 − p l u g i n s −good \ x i n i t p s m i s c g s t r e a m e r 0 .10 − ff mp eg awesome x11−x s e r v e r − u t i l s r o o t @ c h r o o t # c a t − > / e t c / hostname embedded0 ˆ−D r o o t @ c h r o o t # mkdir / boot / e x t l i n u x r o o t @ c h r o o t # c a t − >/boot / e x t l i n u x / e x t l i n u x . c o n f DEFAULT ubuntu LABEL ubuntu KERNEL / vmlinuz −3.2.0−23− g e n e r i c −pae INITRD / i n i t r d . img −3.2.0−23− g e n e r i c −pae APPEND r e a l r o o t =/dev / sda3 r o o t =/dev / sda3 ˆ−D r o o t @ c h r o o t : /# c a t − > / r o o t / . x i n i t r c x s e t −dpms x s e t s noblank xset s o f f / r o o t / w a l l ‘ hostname | g r e p −o [ 0 − 9 ] ‘ & e x e c / u s r / b i n / awesome 35 Reussner Matthieu 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 ˆ−D r o o t @ c h r o o t : /# c a t − > / e t c / r c . l o c a l #! / b i n / sh −e HOST=$ ( hostname | g r e p −o [ 0 − 9 ] ∗ ) i f c o n f i g e t h 0 1 9 2 . 1 6 8 . 2 3 . $ ( (HOST+1) ) up i p r o u t e add 2 2 4 . 0 . 0 . 0 / 4 dev e t h 0 if ! f u s e r / dev / t t y 7 &> / dev / n u l l ; then su − −c ’ s t a r t x &> ˜ / . x s e s s i o n −e r r o r s ’ & fi exit 0 ˆ−D root@chroot # e x i t r o o t @ s t e e l b o o k # dd i f =/u s r / s h a r e / s y s l i n u x /mbr . b i n o f =/dev / sdb Listing 14.1: Installation of the embedded system for the wall Once the first system is configured, the fastest way to deploy other system is to make a deep copy of the memory card using ”dd” as presented below. The name of the embedded system must match the following schema: embedded0 for the screen 0 embedded1 for the screen 1 embedded8 for the screen 8 embedded9 for the full picture in one screen (debug feature) 1 2 3 4 5 root@steelbook root@steelbook root@steelbook root@steelbook root@steelbook # # # # # dd i f =/dev / sdb o f =/dev / s d X bs=8M mount / dev / s d c 3 /mnt/ c l e echo embedded Y > /mnt/ c l e / e t c / hostsname > /mnt/ c l e / e t c / udev / r u l e s . d/70− p e r s i s t e n t −n e t . r u l e s umount /mnt/ c l e Listing 14.2: Deep copy The system embedded0 need other programs and configurations: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 r o o t @ s t e e l b o o k # mount −o bind / dev /mnt/ c l e / dev r o o t @ s t e e l b o o k # mount −t p r o c none /mnt/ c l e / p r o c r o o t @ s t e e l b o o k # cp −L / e t c / r e s o l v . c o n f /mnt/ c l e / e t c / r o o t @ s t e e l b o o k # c h r o o t /mnt/ c l e / b i n / bash r o o t @ s t e e l b o o k : /# wget h t t p s : / / launchpad . n e t /˜ j r j o h a n s s o n /+ a r c h i v e / s p r e a d/+ b u i l d /2124936/+ f i l e s / s p r e a d 4 . 1 . 0 − 0 u b u n t u 2 i 3 8 6 . deb [...] r o o t @ s t e e l b o o k : /# wget h t t p s : / / launchpad . n e t /˜ j r j o h a n s s o n /+ a r c h i v e / s p r e a d/+ b u i l d /2124936/+ f i l e s / l i b s p r e a d 2 4 . 1 . 0 − 0 u b u n t u 2 i 3 8 6 . deb [...] r o o t @ s t e e l b o o k : /# gpg −−k e y s e r v e r k e y s e r v e r . ubuntu . com −−r e c v CA70E6A9087475A0 r o o t @ s t e e l b o o k : /# gpg −−e x p o r t −−armor CA70E6A9087475A0 | apt−key add − r o o t @ s t e e l b o o k : /# apt−g e t update [...] Fetched 8035 kB i n 60 s ( 1 3 2 kB/ s ) Reading package l i s t s . . . Done r o o t @ s t e e l b o o k : /# apt−g e t i n s t a l l opencv Reading package l i s t s . . . Done B u i l d i n g dependency t r e e 36 Reussner Matthieu 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 Reading s t a t e i n f o r m a t i o n . . . Done The f o l l o w i n g e x t r a p a c k a g e s w i l l be i n s t a l l e d : l i b c u d a r t 4 l i b c u f f t 4 l i b d c 1 3 9 4 −22 l i b j p e g 6 2 l i b n p p 4 l i b o p e n c v 2 . 3 l i b t b b 2 l i b u s b −1.0−0 Recommended p a c k a g e s : libcuda1 The f o l l o w i n g NEW p a c k a g e s w i l l be i n s t a l l e d : l i b c u d a r t 4 l i b c u f f t 4 l i b d c 1 3 9 4 −22 l i b j p e g 6 2 l i b n p p 4 l i b o p e n c v 2 . 3 l i b t b b 2 l i b u s b −1.0−0 opencv 0 upgraded , 9 newly i n s t a l l e d , 0 t o remove and 0 not upgraded . Need t o g e t 3 3 . 7 MB o f a r c h i v e s . A f t e r t h i s o p e r a t i o n , 221 MB o f a d d i t i o n a l d i s k s p a c e w i l l be used . Do you want t o c o n t i n u e [Y/n ] ? Y [...] r o o t @ s t e e l b o o k : ˜# dpkg − i l i b s p r e a d 2 4 . 1 . 0 − 0 u b u n t u 2 i 3 8 6 . deb s p r e a d 4 . 1 . 0 − 0 u b u n t u 2 i 3 8 6 . deb S e l e c t i n g p r e v i o u s l y u n s e l e c t e d package l i b s p r e a d 2 . ( Reading d a t a b a s e . . . 20004 f i l e s and d i r e c t o r i e s c u r r e n t l y i n s t a l l e d . ) Unpacking l i b s p r e a d 2 ( from l i b s p r e a d 2 4 . 1 . 0 − 0 u b u n t u 2 i 3 8 6 . deb ) . . . S e l e c t i n g p r e v i o u s l y u n s e l e c t e d package s p r e a d . Unpacking s p r e a d ( from s p r e a d 4 . 1 . 0 − 0 u b u n t u 2 i 3 8 6 . deb ) . . . S e t t i n g up l i b s p r e a d 2 ( 4 . 1 . 0 − 0 ubuntu2 ) . . . S e t t i n g up s p r e a d ( 4 . 1 . 0 − 0 ubuntu2 ) . . . Adding group ‘ s p r e a d ’ (GID 1 0 5 ) . . . Done . Warning : The home d i r / v a r / run / s p r e a d you s p e c i f i e d a l r e a d y e x i s t s . Adding system u s e r ‘ s p r e a d ’ (UID 1 0 3 ) . . . Adding new u s e r ‘ s p r e a d ’ (UID 1 0 3 ) with group ‘ s p r e a d ’ . . . The home d i r e c t o r y ‘ / v a r / run / s p r e a d ’ a l r e a d y e x i s t s . Not c o p y i n g from ‘ / e t c / s k e l ’ . a d d u s e r : Warning : The home d i r e c t o r y ‘ / v a r / run / s p r e a d ’ d o e s not b e l o n g t o t h e u s e r you a r e c u r r e n t l y c r e a t i n g . ‘ P r o c e s s i n g t r i g g e r s f o r l i b c −b i n . . . l d c o n f i g d e f e r r e d p r o c e s s i n g now t a k i n g p l a c e r o o t @ s t e e l b o o k : ˜# rm l i b s p r e a d 2 4 . 1 . 0 − 0 u b u n t u 2 i 3 8 6 . deb s p r e a d 4 . 1 . 0 − 0 u b u n t u 2 i 3 8 6 . deb Listing 14.3: Installation and configuration of miscellaneous applications 37 Reussner Matthieu 15 Source code and cf images The project is split in 3 differents program. Each program include a Makefile for an easy compilation. wall The program used to display the video on the notification system sensor The program who detect the object and send the video master The program who receive all the picture and video stream, generate the wall picture and stream it It should be noted that if the computer use for compilation run on Ubuntu, the program will not compile ”as is”. Two thing need to be changed. Source code In every source file, the following line need to be replace: 1 2 3 4 5 6 // remove t h i s l i n e #i n c l u d e <opencv2 / opencv . hpp> // add t h e f o l l o w i n g l i n e #i n c l u d e ” opencv2 / o b j d e t e c t / o b j d e t e c t . hpp ” #i n c l u d e ” opencv2 / h i g h g u i / h i g h g u i . hpp ” #i n c l u d e ” opencv2 / imgproc / imgproc . hpp ” Listing 15.1: Installation and configuration of miscellaneous applications Makefile Every Makefile related to OpenCV need to be edited 1 2 3 4 #r e p l a c e t h i s l i n e with LDFLAGS=‘pkg−c o n f i g −− l i b s opencv ‘ − l z #t h i s LDFLAGS=‘pkg−c o n f i g −− l i b s opencv | s e d s/− l o p e n c v c o n t r i b / ’ ’ / g ‘ − l z Listing 15.2: Installation and configuration of miscellaneous applications 15.1 shared This folder contain 2 configuration files for the project. The resolution of the webcam can be changed here. 15.2 wall This program need to be executed on each embedded system of the wall. It required the screen id as argument. For example: ./wall 0 for the screen 0. This program is started by xinit as stated in /root/.xinitrc. 38 Reussner Matthieu fullscreenRTP.c This source file is the program who display the RTP stream generate by master1 . 15.3 master This folder contain the following source files and scripts used on embedded0 to receive the tagged frames from the sensor, generate the wall and stream it. server.sh Stream the picture of the wall from fifo.avi to the other embedded system master.h configuration file for master program master.cpp Source code 15.4 sensor sensor.h configuration file for sensor program sensor.cpp Source code 15.5 wall.dd Backup image of the CF card of the embedded system for the wall. It should not be forgotted to change the hostname and clear the MAC address 15.6 sensor.dd Backup image of the CF card of the embedded system for the the sensor. It should not be forgotted to change the hostname and clear the MAC address 1 Most of the souce code come from the website: https://gitorious.org/blog-examples/blogexamples/trees/master/fullscreen video with gst gtk no license has been apply 39 Reussner Matthieu 16 Deployment 16.1 Required Material The following material is needed to deploy the project: • 9 screens + power supply + cables(VGA or DVI) • 9 embedded system for ”The Wall” + power supply • 1 switch 9 ports for ”The Wall” + cables • Multiples embedded system + webcam as sensor (up to 20) 16.2 Notification system (The Wall) The easiest way to deploy ”The Wall”, is usually to use the application ”dd”. This can be done using the following commands 1 2 3 4 5 root@steelbook root@steelbook root@steelbook root@steelbook root@steelbook # # # # # dd i f =/dev / sdb o f =/dev / s d X bs=8M mount / dev / s d X 3 /mnt/ c l e echo embedded Y > /mnt/ c l e / e t c / hostsname > /mnt/ c l e / e t c / udev / r u l e s . d/70− p e r s i s t e n t −n e t . r u l e s umount /mnt/ c l e Listing 16.1: Installation and configuration of miscellaneous applications 16.3 Master node The master node can either be install on any Wall node or alone. If installed in a Wall node, please follow the instruction in 16.1 first. then follow the instructions 14.3 then finally 1 2 3 4 5 6 7 8 9 10 r o o t @ s t e e l b o o k # mount / dev / s d X 3 /mnt/ c l e r o o t @ s t e e l b o o k # c a t − > /mnt/ c l e / r o o t / . x i n i t r c / r o o t / w a l l ‘ hostname | g r e p −o [ 0 − 9 ] ‘ & #Put t h i s i n a l o o p t o c a t c h k i l l by OOK / r o o t / s e r v e r . sh & sleep 2 / r o o t / master & #end o f l o o p e x e c / u s r / b i n / awesome ˆ−D 40 Reussner Matthieu 11 r o o t @ s t e e l b o o k # umount /mnt/ c l e Listing 16.2: Installation and configuration of miscellaneous applications 16.4 Sensor Deployment of the sensor is very similar to deployment of the wall node. The following command can be used: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 r o o t @ s t e e l b o o k # dd i f =s e n s o r . dd o f =/dev / s d X bs=8M r o o t @ s t e e l b o o k # mount / dev / s d X 3 /mnt/ c l e r o o t @ s t e e l b o o k # c a t − > /mnt/ c l e / e t c / c o n f . d/ n e t c o n f i g e t h 0=” 1 9 2 . 1 6 8 . 1 9 . SENSOR ID PLUS 1 netmask 2 5 5 . 2 5 5 . 2 5 5 . 0 brd 192.168.19.255 ” r o u t e s e t h 0=” 2 3 9 . 0 . 0 . 0 / 8 dev e t h 0 ” ˆ−D r o o t @ s t e e l b o o k # > /mnt/ c l e / e t c / udev / r u l e s . d/70− p e r s i s t e n t −n e t . r u l e s r o o t @ s t e e l b o o k # echo ” 1 9 2 . 1 6 8 . 1 9 . SENSOR ID PLUS 1 embedded SENSOR ID >> /mnt/ c l e / e t c / h o s t s root@steelbook # cat − > / etc / spread . conf EventLogFile = / var / l o g / spread . l o g EventTimeStamp Spread Segment embedded1 ” \ 239.0.0.1:4803 { 192.168.19.1 { D 192.168.19.1 C 192.168.19.1 } embedded SENSOR ID 1 9 2 . 1 6 8 . 1 9 . SENSOR ID PLUS 1 D 1 9 2 . 1 6 8 . 1 9 . SENSOR ID PLUS 1 C 1 9 2 . 1 6 8 . 1 9 . SENSOR ID PLUS 1 } { } ˆ−D Listing 16.3: Installation and configuration of miscellaneous applications 41 Reussner Matthieu 17 Conclusion At the end of my internship, and I’m can say that the project developped during the last 4 month has reached a stable and usable state. Currently the status of the project is a woking distributed system of sensor able to recognising an object/person on a video stream and sending alerts to a centraliszed notification system. The system developped can be use as a whole or split in differents parts. The current use-case of the full system are: monitoring a very big area, searching for a specific animal in its natural habitat, etc. If not use as a whole, the system can be split in two differents parts: detection system and a Synchronize multiple screen. The use cases ranged from advertisement in public places (train station, airport,...) to display of medical informations through person counting. The project duration was not enough to explore all the aspect of the topic, therefor the following enhancements remain to be explored: • Representing a person’s position in real time in a building • Person identification system(can be helpful in prison, colleges, hospitals, etc). • Extending the display from small screen devices to the Wall. Having been able to explore the field of inteligent sensor has been very rewarding experience. Having been able to work in the young and dynamic environnement of the ”Nokia Lab” of PESIT has certainty contributed to the success of this internship. Having the opportunity of achieving a work of diploma abroad, particulary in Bangalore - which is known as the Silicon Valley of asia - was an immense opportunity. I would once again thank the following people for the assistance provided during this project: S.Robert, A.Srinivas, Kumari Radha, Nitheesh K L, Vishal Gupta, Ahalya Srinivasan, Greeshma N and any members of the ”Lab”. 42 Reussner Matthieu 18 Bibliography R atomTM innovation kit board 2 overview picture. http://www.indiaeduservices. [1] Intel. Intel com/cms/images/stories/atomik/pineview1.png. Feb, 2012. [2] Intel. Intel atom innovation kit board 2. http://www.indiaeduservices.com/cms/index.php? option=com_content&view=article&id=81&Itemid=165. Feb, 2012. [3] SanDisk. Sandisk 16gb flashcard. http://www.sandisk.com/media/370208/ultra16gbbig.jpg. Feb, 2012. [4] The CompactFlash Association. specifications/. Feb, 2012. Compactflash specifications. http://compactflash.org/ [5] Lennart Andre Rolland. The gentoo linux logo in svg format, without reflections. http://www. gentoo.org/main/en/name-logo.xml. Sep, 2007. [6] Willow Garage. Opencv logo. http://opencv.itseez.com/report/logo.jpg. Feb, 2012. [7] Microsoft. Microsoft lifecam vx-1000 webcam. 41V9S00SGRL._SL500_AA300_.jpg. Mar, 2012. http://ecx.images-amazon.com/images/I/ [8] Daniel Stenberg. Library curl logo. http://curl.haxx.se/ds-curlicon.png. Jun, 2003. [9] Sven Vermeulen. Gentoo handbook. http://www.gentoo.org/doc/en/handbook/index.xml. Sep, 2011. [10] The Gentoo Documentation Project. The gentoo mirrorlist. http://www.gentoo.org/main/en/ mirrors2.xml. Dec, 2009. 43 Reussner Matthieu 19 Annexes 19.1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 Custom settings for Portage # These s e t t i n g s were s e t by t h e c a t a l y s t b u i l d s c r i p t t h a t a u t o m a t i c a l l y # built this stage . # P l e a s e c o n s u l t / u s r / s h a r e / p o r t a g e / c o n f i g /make . c o n f . example f o r a more # d e t a i l e d example . CFLAGS=”−O2 −march=i 6 8 6 −p i p e ” CXXFLAGS=” $ {CFLAGS} ” # WARNING: Changing your CHOST i s not s o m e t h i n g t h a t s h o u l d be done l i g h t l y . # P l e a s e c o n s u l t h t t p : / /www. g e n t o o . o r g / doc / en / change−c h o s t . xml b e f o r e c h a n g i n g . CHOST=” i 6 8 6 −pc−l i n u x −gnu ” USE=” minimal −X −cups o p e n g l −i p v 6 ” #GENTOO MIRRORS=”h t t p : / / m i r r o r s . stuhome . n e t / g e n t o o /” GENTOO MIRRORS=” h t t p : / / g e n t o o . c s . nctu . edu . tw/ g e n t o o / f t p : / / g e n t o o . c s . nctu . edu . tw/ g e n t o o / h t t p : / / m i r r o r s . sohu . com/ g e n t o o / h t t p : / / g e n t o o . a d i t s u . n e t : 8 0 0 0 / ” VIDEO CARDS=” i n t e l ” Listing 19.1: Main gentoo configuration file 19.2 1 2 3 4 5 6 7 8 9 10 11 12 13 Network configuration # # # # This b l a n k c o n f i g u r a t i o n w i l l a u t o m a t i c a l l y u s e DHCP f o r any n e t . ∗ s c r i p t s i n / e t c / i n i t . d . To c r e a t e a more c o m p l e t e c o n f i g u r a t i o n , p l e a s e r e v i e w / u s r / s h a r e / doc / o p e n r c ∗/ n e t . example ∗ and s a v e your c o n f i g u r a t i o n i n / e t c / c o n f . d/ n e t ( t h i s f i l e : ] ! ) . c o n f i g e t h 0=” 1 9 2 . 1 6 8 . 1 4 2 . 1 netmask 2 5 5 . 2 5 5 . 2 5 5 . 0 brd 1 9 2 . 1 6 8 . 1 2 4 . 2 5 5 ” r o u t e s e t h 0=” d e f a u l t v i a 1 9 2 . 1 6 8 . 1 4 2 . 1 ” c o n f i g e t h 2=” 1 9 2 . 1 6 8 . 1 4 2 . 2 netmask 2 5 5 . 2 5 5 . 2 5 5 . 0 brd 1 9 2 . 1 6 8 . 1 4 2 . 2 5 5 ” r o u t e s e t h 2=” d e f a u l t v i a 1 9 2 . 1 6 8 . 1 4 2 . 1 2 2 4 . 0 . 0 . 0 / 4 dev e t h 0 ” Listing 19.2: Network configuration with multicast route 44 Reussner Matthieu 19.3 1 2 3 4 Packages configurations #r e q u i r e d by =media−l i b s / opencv − 2 . 3 . 1 a−r 1 ( argument ) =media−l i b s / opencv − 2 . 3 . 1 a−r 1 ˜ x86 #r e q u i r e d by net−misc / s p r e a d ( argument ) =net−misc / s p r e a d − 4 . 1 . 0 ˜ x86 Listing 19.3: Per-package ACCEPT KEYWORDS for profiles 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #r e q u i r e d by x11−l i b s / g t k +−2.24.8− r1 , r e q u i r e d by media−l i b s / opencv − 2 . 3 . 1 a−r 1 [ g t k ] , r e q u i r e d by opencv ( argument ) =x11−l i b s / c a i r o −1.10.2 − r 1 X #r e q u i r e d by x11−l i b s / g t k +−2.24.8− r1 , r e q u i r e d by media−l i b s / opencv − 2 . 3 . 1 a−r 1 [ g t k ] , r e q u i r e d by opencv ( argument ) =x11−l i b s /gdk−p i x b u f −2.24.0 − r 1 X media−l i b s / opencv o p e n g l s s e s s e 2 f fm pe g g t k python v 4 l #r e q u i r e d by media−l i b s /mesa − 7 . 1 1 . 2 , r e q u i r e d by x11−b a s e / xorg−s e r v e r −1.11.2 − r 2 [− minimal ] , r e q u i r e d by x11−d r i v e r s / x f 8 6 −i n p u t −evdev − 2 . 6 . 0 , r e q u i r e d by x11−b a s e / xorg−d r i v e r s − 1 . 1 1 [ i n p u t d e v i c e s e v d e v ] >=dev−l i b s / l i b x m l 2 −2.7.8 − r 4 python #r e q u i r e d by x11−d r i v e r s / x f 8 6 −v i d e o −i n t e l −2.17.0 − r 3 [ d r i ] , r e q u i r e d by x11−b a s e / xorg −d r i v e r s − 1 . 1 1 [ v i d e o c a r d s i n t e l ] =x11−b a s e / xorg−s e r v e r −1.11.2 − r 2 −minimal #r e q u i r e d by x11−wm/awesome −3.4.9 − r1 , r e q u i r e d by x11−wm/ awesome ( argument ) =x11−l i b s / c a i r o −1.10.2 − r 1 xcb #r e q u i r e d by x11−wm/awesome −3.4.9 − r1 , r e q u i r e d by x11−wm/ awesome ( argument ) >=media−g f x / imagemagick − 6 . 7 . 5 . 3 png #r e q u i r e d by x11−wm/awesome −3.4.9 − r1 , r e q u i r e d by x11−wm/ awesome ( argument ) =media−l i b s / i m l i b 2 − 1 . 4 . 4 png media−v i d e o / mplayer −a52 −c d i o −d i r a c −d t s −dv −dvd −dvdnav −enca −f a a c −f a a d − network −osdmenu −q u i c k t i m e −r a r − r e a l −r t c −s c h r o e d i n g e r −s p e e x −t h e o r a − t o o l a m e −tre mor −twolame −v o r b i s −x264 −x s c r e e n s a v e r −xv media−v i d e o / mplayer −a52 −c d i o −d i r a c −d t s −dv −dvd −dvdnav −enca −f a a c −f a a d − network −osdmenu −q u i c k t i m e −r a r − r e a l −r t c −s c h r o e d i n g e r −s p e e x −t h e o r a − t o o l a m e −tre mor −twolame −v o r b i s −x264 −x s c r e e n s a v e r −xv −a s s − l i v e −mp3 media−v i d e o / mplayer v 4 l X Listing 19.4: Feature selection 19.4 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Kernel Configuration CONFIG X86 32=y CONFIG X86=y CONFIG INSTRUCTION DECODER=y CONFIG OUTPUT FORMAT=” e l f 3 2 −i 3 8 6 ” CONFIG ARCH DEFCONFIG=” a r c h / x86 / c o n f i g s / i 3 8 6 d e f c o n f i g ” CONFIG GENERIC CMOS UPDATE=y CONFIG CLOCKSOURCE WATCHDOG=y CONFIG GENERIC CLOCKEVENTS=y CONFIG GENERIC CLOCKEVENTS BROADCAST=y CONFIG LOCKDEP SUPPORT=y CONFIG STACKTRACE SUPPORT=y CONFIG HAVE LATENCYTOP SUPPORT=y CONFIG MMU=y CONFIG ZONE DMA=y CONFIG NEED SG DMA LENGTH=y CONFIG GENERIC ISA DMA=y CONFIG GENERIC IOMAP=y CONFIG GENERIC BUG=y CONFIG GENERIC HWEIGHT=y 45 Reussner Matthieu 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 CONFIG ARCH MAY HAVE PC FDC=y CONFIG RWSEM XCHGADD ALGORITHM=y CONFIG ARCH HAS CPU IDLE WAIT=y CONFIG GENERIC CALIBRATE DELAY=y CONFIG ARCH HAS CPU RELAX=y CONFIG ARCH HAS DEFAULT IDLE=y CONFIG ARCH HAS CACHE LINE SIZE=y CONFIG HAVE SETUP PER CPU AREA=y CONFIG NEED PER CPU EMBED FIRST CHUNK=y CONFIG NEED PER CPU PAGE FIRST CHUNK=y CONFIG ARCH HIBERNATION POSSIBLE=y CONFIG ARCH SUSPEND POSSIBLE=y CONFIG ARCH POPULATES NODE MAP=y CONFIG ARCH SUPPORTS OPTIMIZED INLINING=y CONFIG ARCH SUPPORTS DEBUG PAGEALLOC=y CONFIG X86 32 SMP=y CONFIG X86 HT=y CONFIG X86 32 LAZY GS=y CONFIG ARCH HWEIGHT CFLAGS=”− f c a l l −saved−e c x − f c a l l −saved−edx ” CONFIG KTIME SCALAR=y CONFIG ARCH CPU PROBE RELEASE=y CONFIG DEFCONFIG LIST=” / l i b / modules /$UNAME RELEASE/ . c o n f i g ” CONFIG HAVE IRQ WORK=y CONFIG IRQ WORK=y CONFIG EXPERIMENTAL=y CONFIG INIT ENV ARG LIMIT=32 CONFIG CROSS COMPILE=” ” CONFIG LOCALVERSION=” ” CONFIG HAVE KERNEL GZIP=y CONFIG HAVE KERNEL BZIP2=y CONFIG HAVE KERNEL LZMA=y CONFIG HAVE KERNEL XZ=y CONFIG HAVE KERNEL LZO=y CONFIG KERNEL GZIP=y CONFIG DEFAULT HOSTNAME=” ( none ) ” CONFIG SWAP=y CONFIG SYSVIPC=y CONFIG SYSVIPC SYSCTL=y CONFIG POSIX MQUEUE=y CONFIG POSIX MQUEUE SYSCTL=y CONFIG BSD PROCESS ACCT=y CONFIG BSD PROCESS ACCT V3=y CONFIG TASKSTATS=y CONFIG TASK DELAY ACCT=y CONFIG TASK XACCT=y CONFIG TASK IO ACCOUNTING=y CONFIG AUDIT=y CONFIG AUDITSYSCALL=y CONFIG AUDIT WATCH=y CONFIG AUDIT TREE=y CONFIG HAVE GENERIC HARDIRQS=y CONFIG GENERIC HARDIRQS=y CONFIG HAVE SPARSE IRQ=y CONFIG GENERIC IRQ PROBE=y CONFIG GENERIC IRQ SHOW=y CONFIG GENERIC PENDING IRQ=y CONFIG IRQ FORCED THREADING=y CONFIG SPARSE IRQ=y CONFIG TREE RCU=y CONFIG RCU FANOUT=32 CONFIG IKCONFIG=y CONFIG IKCONFIG PROC=y CONFIG LOG BUF SHIFT=15 CONFIG HAVE UNSTABLE SCHED CLOCK=y 46 Reussner Matthieu 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 CONFIG CGROUPS=y CONFIG CPUSETS=y CONFIG PROC PID CPUSET=y CONFIG CGROUP CPUACCT=y CONFIG NAMESPACES=y CONFIG UTS NS=y CONFIG IPC NS=y CONFIG USER NS=y CONFIG PID NS=y CONFIG NET NS=y CONFIG SYSFS DEPRECATED=y CONFIG RELAY=y CONFIG BLK DEV INITRD=y CONFIG INITRAMFS SOURCE=” ” CONFIG RD GZIP=y CONFIG RD BZIP2=y CONFIG RD LZMA=y CONFIG RD XZ=y CONFIG RD LZO=y CONFIG CC OPTIMIZE FOR SIZE=y CONFIG SYSCTL=y CONFIG ANON INODES=y CONFIG UID16=y CONFIG KALLSYMS=y CONFIG HOTPLUG=y CONFIG PRINTK=y CONFIG BUG=y CONFIG ELF CORE=y CONFIG PCSPKR PLATFORM=y CONFIG HAVE PCSPKR PLATFORM=y CONFIG BASE FULL=y CONFIG FUTEX=y CONFIG EPOLL=y CONFIG SIGNALFD=y CONFIG TIMERFD=y CONFIG EVENTFD=y CONFIG SHMEM=y CONFIG AIO=y CONFIG HAVE PERF EVENTS=y CONFIG PERF EVENTS=y CONFIG VM EVENT COUNTERS=y CONFIG PCI QUIRKS=y CONFIG COMPAT BRK=y CONFIG SLAB=y CONFIG PROFILING=y CONFIG TRACEPOINTS=y CONFIG OPROFILE=m CONFIG HAVE OPROFILE=y CONFIG KPROBES=y CONFIG OPTPROBES=y CONFIG HAVE EFFICIENT UNALIGNED ACCESS=y CONFIG KRETPROBES=y CONFIG HAVE IOREMAP PROT=y CONFIG HAVE KPROBES=y CONFIG HAVE KRETPROBES=y CONFIG HAVE OPTPROBES=y CONFIG HAVE ARCH TRACEHOOK=y CONFIG HAVE DMA ATTRS=y CONFIG USE GENERIC SMP HELPERS=y CONFIG HAVE REGS AND STACK ACCESS API=y CONFIG HAVE DMA API DEBUG=y CONFIG HAVE HW BREAKPOINT=y CONFIG HAVE MIXED BREAKPOINTS REGS=y CONFIG HAVE USER RETURN NOTIFIER=y 47 Reussner Matthieu 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 CONFIG HAVE PERF EVENTS NMI=y CONFIG HAVE ARCH JUMP LABEL=y CONFIG ARCH HAVE NMI SAFE CMPXCHG=y CONFIG HAVE GENERIC DMA COHERENT=y CONFIG SLABINFO=y CONFIG RT MUTEXES=y CONFIG BASE SMALL=0 CONFIG MODULES=y CONFIG MODULE UNLOAD=y CONFIG MODULE FORCE UNLOAD=y CONFIG MODVERSIONS=y CONFIG STOP MACHINE=y CONFIG BLOCK=y CONFIG LBDAF=y CONFIG BLK DEV BSG=y CONFIG BLK DEV BSGLIB=y CONFIG IOSCHED NOOP=y CONFIG IOSCHED DEADLINE=y CONFIG IOSCHED CFQ=y CONFIG DEFAULT CFQ=y CONFIG DEFAULT IOSCHED=” c f q ” CONFIG INLINE SPIN UNLOCK=y CONFIG INLINE SPIN UNLOCK IRQ=y CONFIG INLINE READ UNLOCK=y CONFIG INLINE READ UNLOCK IRQ=y CONFIG INLINE WRITE UNLOCK=y CONFIG INLINE WRITE UNLOCK IRQ=y CONFIG TICK ONESHOT=y CONFIG HIGH RES TIMERS=y CONFIG GENERIC CLOCKEVENTS BUILD=y CONFIG GENERIC CLOCKEVENTS MIN ADJUST=y CONFIG SMP=y CONFIG X86 MPPARSE=y CONFIG X86 EXTENDED PLATFORM=y CONFIG X86 SUPPORTS MEMORY FAILURE=y CONFIG SCHED OMIT FRAME POINTER=y CONFIG NO BOOTMEM=y CONFIG MATOM=y CONFIG X86 GENERIC=y CONFIG X86 INTERNODE CACHE SHIFT=6 CONFIG X86 CMPXCHG=y CONFIG CMPXCHG LOCAL=y CONFIG CMPXCHG DOUBLE=y CONFIG X86 L1 CACHE SHIFT=6 CONFIG X86 XADD=y CONFIG X86 WP WORKS OK=y CONFIG X86 INVLPG=y CONFIG X86 BSWAP=y CONFIG X86 POPAD OK=y CONFIG X86 INTEL USERCOPY=y CONFIG X86 USE PPRO CHECKSUM=y CONFIG X86 TSC=y CONFIG X86 CMPXCHG64=y CONFIG X86 CMOV=y CONFIG X86 MINIMUM CPU FAMILY=5 CONFIG X86 DEBUGCTLMSR=y CONFIG CPU SUP INTEL=y CONFIG CPU SUP CYRIX 32=y CONFIG CPU SUP AMD=y CONFIG CPU SUP CENTAUR=y CONFIG CPU SUP TRANSMETA 32=y CONFIG CPU SUP UMC 32=y CONFIG HPET TIMER=y CONFIG DMI=y 48 Reussner Matthieu 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 CONFIG NR CPUS=8 CONFIG SCHED SMT=y CONFIG SCHED MC=y CONFIG PREEMPT NONE=y CONFIG X86 LOCAL APIC=y CONFIG X86 IO APIC=y CONFIG X86 MCE=y CONFIG X86 MCE INTEL=y CONFIG X86 MCE THRESHOLD=y CONFIG X86 THERMAL VECTOR=y CONFIG VM86=y CONFIG X86 REBOOTFIXUPS=y CONFIG MICROCODE=m CONFIG MICROCODE INTEL=y CONFIG MICROCODE OLD INTERFACE=y CONFIG X86 MSR=m CONFIG X86 CPUID=m CONFIG HIGHMEM4G=y CONFIG PAGE OFFSET=0xC0000000 CONFIG HIGHMEM=y CONFIG ARCH FLATMEM ENABLE=y CONFIG ARCH SPARSEMEM ENABLE=y CONFIG ARCH SELECT MEMORY MODEL=y CONFIG ILLEGAL POINTER VALUE=0 CONFIG SELECT MEMORY MODEL=y CONFIG FLATMEM MANUAL=y CONFIG FLATMEM=y CONFIG FLAT NODE MEM MAP=y CONFIG SPARSEMEM STATIC=y CONFIG HAVE MEMBLOCK=y CONFIG PAGEFLAGS EXTENDED=y CONFIG SPLIT PTLOCK CPUS=4 CONFIG ZONE DMA FLAG=1 CONFIG BOUNCE=y CONFIG VIRT TO BUS=y CONFIG DEFAULT MMAP MIN ADDR=4096 CONFIG ARCH SUPPORTS MEMORY FAILURE=y CONFIG HIGHPTE=y CONFIG X86 RESERVE LOW=64 CONFIG MTRR=y CONFIG MTRR SANITIZER=y CONFIG MTRR SANITIZER ENABLE DEFAULT=0 CONFIG MTRR SANITIZER SPARE REG NR DEFAULT=1 CONFIG X86 PAT=y CONFIG ARCH USES PG UNCACHED=y CONFIG ARCH RANDOM=y CONFIG SECCOMP=y CONFIG HZ 100=y CONFIG HZ=100 CONFIG SCHED HRTICK=y CONFIG KEXEC=y CONFIG CRASH DUMP=y CONFIG PHYSICAL START=0x100000 CONFIG RELOCATABLE=y CONFIG X86 NEED RELOCS=y CONFIG PHYSICAL ALIGN=0x100000 CONFIG HOTPLUG CPU=y CONFIG COMPAT VDSO=y CONFIG ARCH ENABLE MEMORY HOTPLUG=y CONFIG CPU FREQ=y CONFIG CPU FREQ TABLE=m CONFIG CPU FREQ STAT=m CONFIG CPU FREQ STAT DETAILS=y CONFIG CPU FREQ DEFAULT GOV PERFORMANCE=y 49 Reussner Matthieu 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 CONFIG CPU FREQ GOV PERFORMANCE=y CONFIG CPU FREQ GOV POWERSAVE=m CONFIG CPU FREQ GOV USERSPACE=m CONFIG CPU FREQ GOV ONDEMAND=m CONFIG CPU FREQ GOV CONSERVATIVE=m CONFIG X86 POWERNOW K6=m CONFIG X86 POWERNOW K7=m CONFIG X86 GX SUSPMOD=m CONFIG X86 SPEEDSTEP CENTRINO=m CONFIG X86 SPEEDSTEP CENTRINO TABLE=y CONFIG X86 SPEEDSTEP ICH=m CONFIG X86 SPEEDSTEP SMI=m CONFIG X86 P4 CLOCKMOD=m CONFIG X86 CPUFREQ NFORCE2=m CONFIG X86 LONGRUN=m CONFIG X86 E POWERSAVER=m CONFIG X86 SPEEDSTEP LIB=m CONFIG CPU IDLE=y CONFIG CPU IDLE GOV LADDER=y CONFIG PCI=y CONFIG PCI GOANY=y CONFIG PCI BIOS=y CONFIG PCI DIRECT=y CONFIG PCI DOMAINS=y CONFIG ARCH SUPPORTS MSI=y CONFIG PCI MSI=y CONFIG HT IRQ=y CONFIG PCI LABEL=y CONFIG ISA DMA API=y CONFIG AMD NB=y CONFIG PCCARD=m CONFIG PCMCIA=m CONFIG PCMCIA LOAD CIS=y CONFIG CARDBUS=y CONFIG YENTA=m CONFIG YENTA O2=y CONFIG YENTA RICOH=y CONFIG YENTA TI=y CONFIG YENTA ENE TUNE=y CONFIG YENTA TOSHIBA=y CONFIG PD6729=m CONFIG I82092=m CONFIG PCCARD NONSTATIC=y CONFIG HOTPLUG PCI=m CONFIG HOTPLUG PCI COMPAQ=m CONFIG HOTPLUG PCI IBM=m CONFIG HOTPLUG PCI CPCI=y CONFIG HOTPLUG PCI CPCI ZT5550=m CONFIG HOTPLUG PCI CPCI GENERIC=m CONFIG HOTPLUG PCI SHPC=m CONFIG BINFMT ELF=y CONFIG CORE DUMP DEFAULT ELF HEADERS=y CONFIG HAVE AOUT=y CONFIG BINFMT AOUT=m CONFIG BINFMT MISC=m CONFIG HAVE ATOMIC IOMAP=y CONFIG HAVE TEXT POKE SMP=y CONFIG NET=y CONFIG PACKET=y CONFIG UNIX=y CONFIG XFRM=y CONFIG XFRM USER=m CONFIG NET KEY=m CONFIG INET=y 50 Reussner Matthieu 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 CONFIG IP MULTICAST=y CONFIG IP ADVANCED ROUTER=y CONFIG IP MULTIPLE TABLES=y CONFIG IP ROUTE MULTIPATH=y CONFIG IP PNP=y CONFIG IP PNP DHCP=y CONFIG INET LRO=m CONFIG INET DIAG=y CONFIG INET TCP DIAG=y CONFIG TCP CONG ADVANCED=y CONFIG TCP CONG BIC=m CONFIG TCP CONG CUBIC=y CONFIG TCP CONG WESTWOOD=m CONFIG TCP CONG HTCP=m CONFIG TCP CONG HSTCP=m CONFIG TCP CONG HYBLA=m CONFIG TCP CONG VEGAS=m CONFIG TCP CONG SCALABLE=m CONFIG TCP CONG LP=m CONFIG TCP CONG VENO=m CONFIG TCP CONG YEAH=m CONFIG TCP CONG ILLINOIS=m CONFIG DEFAULT CUBIC=y CONFIG DEFAULT TCP CONG=” c u b i c ” CONFIG TCP MD5SIG=y CONFIG NETWORK SECMARK=y CONFIG IP SCTP=y CONFIG SCTP HMAC MD5=y CONFIG ATM=m CONFIG ATM CLIP=m CONFIG STP=m CONFIG BRIDGE=m CONFIG BRIDGE IGMP SNOOPING=y CONFIG LLC=m CONFIG DNS RESOLVER=y CONFIG RPS=y CONFIG RFS ACCEL=y CONFIG XPS=y CONFIG NET PKTGEN=m CONFIG AF RXRPC=m CONFIG RXKAD=m CONFIG FIB RULES=y CONFIG WIRELESS=y CONFIG LIB80211=y CONFIG RFKILL=m CONFIG RFKILL INPUT=y CONFIG UEVENT HELPER PATH=” / s b i n / h o t p l u g ” CONFIG STANDALONE=y CONFIG PREVENT FIRMWARE BUILD=y CONFIG FW LOADER=y CONFIG FIRMWARE IN KERNEL=y CONFIG EXTRA FIRMWARE=” ” CONFIG CONNECTOR=m CONFIG BLK DEV=y CONFIG BLK DEV LOOP=y CONFIG BLK DEV LOOP MIN COUNT=8 CONFIG BLK DEV RAM=y CONFIG BLK DEV RAM COUNT=16 CONFIG BLK DEV RAM SIZE=8192 CONFIG HAVE IDE=y CONFIG SCSI MOD=y CONFIG RAID ATTRS=m CONFIG SCSI=y CONFIG SCSI DMA=y 51 Reussner Matthieu 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 CONFIG SCSI TGT=m CONFIG SCSI NETLINK=y CONFIG SCSI PROC FS=y CONFIG BLK DEV SD=y CONFIG CHR DEV ST=m CONFIG CHR DEV OSST=m CONFIG BLK DEV SR=y CONFIG BLK DEV SR VENDOR=y CONFIG CHR DEV SG=m CONFIG CHR DEV SCH=m CONFIG SCSI MULTI LUN=y CONFIG SCSI CONSTANTS=y CONFIG SCSI LOGGING=y CONFIG SCSI SCAN ASYNC=y CONFIG SCSI WAIT SCAN=m CONFIG SCSI SPI ATTRS=m CONFIG SCSI FC ATTRS=m CONFIG SCSI FC TGT ATTRS=y CONFIG SCSI ISCSI ATTRS=y CONFIG SCSI SAS ATTRS=m CONFIG SCSI SAS LIBSAS=m CONFIG SCSI SAS ATA=y CONFIG SCSI SAS HOST SMP=y CONFIG SCSI SRP ATTRS=m CONFIG SCSI SRP TGT ATTRS=y CONFIG SCSI LOWLEVEL=y CONFIG ISCSI TCP=y CONFIG ISCSI BOOT SYSFS=m CONFIG BLK DEV 3W XXXX RAID=m CONFIG SCSI 3W 9XXX=m CONFIG SCSI ACARD=m CONFIG SCSI AACRAID=m CONFIG SCSI AIC7XXX=m CONFIG AIC7XXX CMDS PER DEVICE=32 CONFIG AIC7XXX RESET DELAY MS=15000 CONFIG AIC7XXX DEBUG MASK=0 CONFIG AIC7XXX REG PRETTY PRINT=y CONFIG SCSI AIC79XX=m CONFIG AIC79XX CMDS PER DEVICE=32 CONFIG AIC79XX RESET DELAY MS=15000 CONFIG AIC79XX DEBUG MASK=0 CONFIG SCSI AIC94XX=m CONFIG SCSI DPT I2O=m CONFIG SCSI ADVANSYS=m CONFIG SCSI ARCMSR=m CONFIG MEGARAID NEWGEN=y CONFIG MEGARAID MM=m CONFIG MEGARAID MAILBOX=m CONFIG MEGARAID LEGACY=m CONFIG MEGARAID SAS=m CONFIG SCSI HPTIOP=m CONFIG SCSI BUSLOGIC=m CONFIG SCSI DMX3191D=m CONFIG SCSI EATA=m CONFIG SCSI EATA TAGGED QUEUE=y CONFIG SCSI EATA LINKED COMMANDS=y CONFIG SCSI EATA MAX TAGS=16 CONFIG SCSI FUTURE DOMAIN=m CONFIG SCSI GDTH=m CONFIG SCSI IPS=m CONFIG SCSI INITIO=m CONFIG SCSI INIA100=m CONFIG SCSI STEX=m CONFIG SCSI SYM53C8XX 2=m 52 Reussner Matthieu 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 CONFIG SCSI SYM53C8XX DMA ADDRESSING MODE=1 CONFIG SCSI SYM53C8XX DEFAULT TAGS=16 CONFIG SCSI SYM53C8XX MAX TAGS=64 CONFIG SCSI SYM53C8XX MMIO=y CONFIG SCSI IPR=m CONFIG SCSI IPR TRACE=y CONFIG SCSI IPR DUMP=y CONFIG SCSI QLOGIC 1280=m CONFIG SCSI QLA FC=m CONFIG SCSI QLA ISCSI=m CONFIG SCSI LPFC=m CONFIG SCSI DC395x=m CONFIG SCSI DC390T=m CONFIG SCSI NSP32=m CONFIG SCSI SRP=m CONFIG SCSI LOWLEVEL PCMCIA=y CONFIG PCMCIA AHA152X=m CONFIG PCMCIA FDOMAIN=m CONFIG PCMCIA NINJA SCSI=m CONFIG PCMCIA QLOGIC=m CONFIG PCMCIA SYM53C500=m CONFIG ATA=y CONFIG ATA SFF=y CONFIG ATA BMDMA=y CONFIG ATA PIIX=y CONFIG PATA MPIIX=y CONFIG PATA PCMCIA=m CONFIG ATA GENERIC=y CONFIG I2O=m CONFIG I2O LCT NOTIFY ON CHANGES=y CONFIG I2O EXT ADAPTEC=y CONFIG I2O CONFIG=m CONFIG I2O CONFIG OLD IOCTL=y CONFIG I2O BUS=m CONFIG I2O BLOCK=m CONFIG I2O SCSI=m CONFIG I2O PROC=m CONFIG NETDEVICES=y CONFIG NET CORE=y CONFIG MII=y CONFIG ETHERNET=y CONFIG NET VENDOR 3COM=y CONFIG NET VENDOR INTEL=y CONFIG E100=m CONFIG E1000=m CONFIG E1000E=m CONFIG IGB=m CONFIG IGB DCA=y CONFIG IXGBEVF=m CONFIG NET VENDOR I825XX=y CONFIG NET VENDOR REALTEK=y CONFIG 8139CP=y CONFIG 8139TOO=y CONFIG 8139TOO TUNE TWISTER=y CONFIG 8139TOO 8129=y CONFIG R8169=y CONFIG INPUT=y CONFIG INPUT POLLDEV=m CONFIG INPUT SPARSEKMAP=m CONFIG INPUT MOUSEDEV=y CONFIG INPUT MOUSEDEV PSAUX=y CONFIG INPUT MOUSEDEV SCREEN X=1366 CONFIG INPUT MOUSEDEV SCREEN Y=768 CONFIG INPUT EVDEV=y 53 Reussner Matthieu 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 CONFIG INPUT KEYBOARD=y CONFIG KEYBOARD ATKBD=y CONFIG KEYBOARD LKKBD=m CONFIG KEYBOARD NEWTON=m CONFIG KEYBOARD STOWAWAY=m CONFIG KEYBOARD SUNKBD=m CONFIG KEYBOARD XTKBD=m CONFIG INPUT MOUSE=y CONFIG MOUSE PS2=y CONFIG MOUSE PS2 ALPS=y CONFIG MOUSE PS2 LOGIPS2PP=y CONFIG MOUSE PS2 SYNAPTICS=y CONFIG MOUSE PS2 LIFEBOOK=y CONFIG MOUSE PS2 TRACKPOINT=y CONFIG MOUSE PS2 TOUCHKIT=y CONFIG MOUSE SERIAL=m CONFIG MOUSE VSXXXAA=m CONFIG SERIO=y CONFIG SERIO I8042=y CONFIG SERIO SERPORT=m CONFIG SERIO CT82C710=m CONFIG SERIO PCIPS2=m CONFIG SERIO LIBPS2=y CONFIG SERIO RAW=m CONFIG VT=y CONFIG CONSOLE TRANSLATIONS=y CONFIG VT CONSOLE=y CONFIG HW CONSOLE=y CONFIG VT HW CONSOLE BINDING=y CONFIG UNIX98 PTYS=y CONFIG DEVKMEM=y CONFIG SERIAL 8250=y CONFIG SERIAL 8250 CONSOLE=y CONFIG FIX EARLYCON MEM=y CONFIG SERIAL 8250 PCI=y CONFIG SERIAL 8250 CS=m CONFIG SERIAL 8250 NR UARTS=4 CONFIG SERIAL 8250 RUNTIME UARTS=4 CONFIG SERIAL 8250 EXTENDED=y CONFIG SERIAL 8250 MANY PORTS=y CONFIG SERIAL 8250 SHARE IRQ=y CONFIG SERIAL 8250 RSA=y CONFIG SERIAL CORE=y CONFIG SERIAL CORE CONSOLE=y CONFIG SERIAL JSM=m CONFIG IPMI HANDLER=m CONFIG IPMI PANIC EVENT=y CONFIG IPMI PANIC STRING=y CONFIG IPMI DEVICE INTERFACE=m CONFIG IPMI SI=m CONFIG IPMI WATCHDOG=m CONFIG IPMI POWEROFF=m CONFIG HW RANDOM=y CONFIG HW RANDOM INTEL=y CONFIG NVRAM=m CONFIG GEN RTC=y CONFIG GEN RTC X=y CONFIG SYNCLINK CS=m CONFIG CARDMAN 4000=m CONFIG CARDMAN 4040=m CONFIG DEVPORT=y CONFIG I2C=y CONFIG I2C BOARDINFO=y CONFIG I2C COMPAT=y 54 Reussner Matthieu 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 CONFIG I2C CHARDEV=m CONFIG I2C HELPER AUTO=y CONFIG I2C ALGOBIT=y CONFIG I2C ALI1535=m CONFIG I2C ALI1563=m CONFIG I2C ALI15X3=m CONFIG I2C AMD756=m CONFIG I2C AMD756 S4882=m CONFIG I2C AMD8111=m CONFIG I2C I801=m CONFIG I2C PIIX4=m CONFIG I2C NFORCE2=m CONFIG I2C SIS5595=m CONFIG I2C SIS630=m CONFIG I2C SIS96X=m CONFIG I2C VIA=m CONFIG I2C VIAPRO=m CONFIG I2C OCORES=m CONFIG I2C SIMTEC=m CONFIG SCx200 ACB=m CONFIG SPI=y CONFIG SPI MASTER=y CONFIG SPI BITBANG=m CONFIG SPI SPIDEV=m CONFIG SPI TLE62X0=m CONFIG ARCH WANT OPTIONAL GPIOLIB=y CONFIG SSB POSSIBLE=y CONFIG SSB=m CONFIG SSB SPROM=y CONFIG SSB PCIHOST POSSIBLE=y CONFIG SSB PCIHOST=y CONFIG SSB PCMCIAHOST POSSIBLE=y CONFIG SSB PCMCIAHOST=y CONFIG SSB SDIOHOST POSSIBLE=y CONFIG SSB DRIVER PCICORE POSSIBLE=y CONFIG SSB DRIVER PCICORE=y CONFIG BCMA POSSIBLE=y CONFIG MFD SM501=m CONFIG MEDIA SUPPORT=y CONFIG VIDEO DEV=y CONFIG VIDEO V4L2 COMMON=y CONFIG VIDEO MEDIA=y CONFIG MEDIA ATTACH=y CONFIG MEDIA TUNER=y CONFIG MEDIA TUNER SIMPLE=y CONFIG MEDIA TUNER TDA8290=y CONFIG MEDIA TUNER TDA827X=y CONFIG MEDIA TUNER TDA18271=y CONFIG MEDIA TUNER TDA9887=y CONFIG MEDIA TUNER TEA5761=y CONFIG MEDIA TUNER TEA5767=y CONFIG MEDIA TUNER MT20XX=y CONFIG MEDIA TUNER XC2028=y CONFIG MEDIA TUNER XC5000=y CONFIG MEDIA TUNER XC4000=y CONFIG MEDIA TUNER MC44S803=y CONFIG VIDEO V4L2=y CONFIG VIDEOBUF GEN=y CONFIG VIDEOBUF VMALLOC=y CONFIG VIDEO TVEEPROM=y CONFIG VIDEO TUNER=y CONFIG VIDEOBUF2 CORE=y CONFIG VIDEOBUF2 MEMOPS=y CONFIG VIDEOBUF2 VMALLOC=y 55 Reussner Matthieu 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 CONFIG VIDEO CAPTURE DRIVERS=y CONFIG VIDEO HELPER CHIPS AUTO=y CONFIG VIDEO MSP3400=y CONFIG VIDEO CS53L32A=y CONFIG VIDEO WM8775=y CONFIG VIDEO SAA711X=y CONFIG VIDEO TVP5150=y CONFIG VIDEO CX25840=y CONFIG VIDEO CX2341X=y CONFIG VIDEO MT9V011=y CONFIG V4L USB DRIVERS=y CONFIG USB VIDEO CLASS=y CONFIG USB VIDEO CLASS INPUT EVDEV=y CONFIG USB GSPCA=y CONFIG USB M5602=y CONFIG USB STV06XX=y CONFIG USB GL860=y CONFIG USB GSPCA BENQ=y CONFIG USB GSPCA CONEX=y CONFIG USB GSPCA CPIA1=y CONFIG USB GSPCA ETOMS=y CONFIG USB GSPCA FINEPIX=y CONFIG USB GSPCA JEILINJ=y CONFIG USB GSPCA KINECT=y CONFIG USB GSPCA KONICA=y CONFIG USB GSPCA MARS=y CONFIG USB GSPCA MR97310A=y CONFIG USB GSPCA NW80X=y CONFIG USB GSPCA OV519=y CONFIG USB GSPCA OV534=y CONFIG USB GSPCA OV534 9=y CONFIG USB GSPCA PAC207=y CONFIG USB GSPCA PAC7302=y CONFIG USB GSPCA PAC7311=y CONFIG USB GSPCA SE401=y CONFIG USB GSPCA SN9C2028=y CONFIG USB GSPCA SN9C20X=y CONFIG USB GSPCA SONIXB=y CONFIG USB GSPCA SONIXJ=y CONFIG USB GSPCA SPCA500=y CONFIG USB GSPCA SPCA501=y CONFIG USB GSPCA SPCA505=y CONFIG USB GSPCA SPCA506=y CONFIG USB GSPCA SPCA508=y CONFIG USB GSPCA SPCA561=y CONFIG USB GSPCA SPCA1528=y CONFIG USB GSPCA SQ905=y CONFIG USB GSPCA SQ905C=y CONFIG USB GSPCA SQ930X=y CONFIG USB GSPCA STK014=y CONFIG USB GSPCA STV0680=y CONFIG USB GSPCA SUNPLUS=y CONFIG USB GSPCA T613=y CONFIG USB GSPCA TOPRO=y CONFIG USB GSPCA TV8532=y CONFIG USB GSPCA VC032X=y CONFIG USB GSPCA VICAM=y CONFIG USB GSPCA XIRLINK CIT=y CONFIG USB GSPCA ZC3XX=y CONFIG VIDEO PVRUSB2=y CONFIG VIDEO PVRUSB2 SYSFS=y CONFIG VIDEO PVRUSB2 DEBUGIFC=y CONFIG VIDEO HDPVR=y CONFIG VIDEO EM28XX=y 56 Reussner Matthieu 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 CONFIG VIDEO USBVISION=y CONFIG USB ET61X251=y CONFIG USB SN9C102=y CONFIG USB PWC=y CONFIG USB PWC DEBUG=y CONFIG USB PWC INPUT EVDEV=y CONFIG USB ZR364XX=y CONFIG USB STKWEBCAM=y CONFIG USB S2255=y CONFIG AGP=y CONFIG AGP INTEL=y CONFIG VGA ARB=y CONFIG VGA ARB MAX GPUS=16 CONFIG DRM=y CONFIG DRM KMS HELPER=y CONFIG DRM I810=y CONFIG DRM I915=y CONFIG DRM I915 KMS=y CONFIG STUB POULSBO=y CONFIG VIDEO OUTPUT CONTROL=m CONFIG FB=y CONFIG FIRMWARE EDID=y CONFIG FB BOOT VESA SUPPORT=y CONFIG FB CFB FILLRECT=y CONFIG FB CFB COPYAREA=y CONFIG FB CFB IMAGEBLIT=y CONFIG FB VESA=y CONFIG BACKLIGHT LCD SUPPORT=y CONFIG LCD CLASS DEVICE=y CONFIG LCD LTV350QV=y CONFIG BACKLIGHT CLASS DEVICE=m CONFIG BACKLIGHT GENERIC=m CONFIG BACKLIGHT PROGEAR=m CONFIG DISPLAY SUPPORT=m CONFIG VGA CONSOLE=y CONFIG DUMMY CONSOLE=y CONFIG FRAMEBUFFER CONSOLE=y CONFIG FRAMEBUFFER CONSOLE DETECT PRIMARY=y CONFIG FB CON DECOR=y CONFIG FONT 8x8=y CONFIG FONT 8x16=y CONFIG HID SUPPORT=y CONFIG HID=y CONFIG HIDRAW=y CONFIG USB HID=m CONFIG HID PID=y CONFIG USB HIDDEV=y CONFIG HID A4TECH=m CONFIG HID APPLE=m CONFIG HID BELKIN=m CONFIG HID CHERRY=m CONFIG HID CHICONY=m CONFIG HID CYPRESS=m CONFIG HID EZKEY=m CONFIG HID KYE=m CONFIG HID KENSINGTON=m CONFIG HID LOGITECH=m CONFIG HID MICROSOFT=m CONFIG HID MONTEREY=m CONFIG USB SUPPORT=y CONFIG USB COMMON=y CONFIG USB ARCH HAS HCD=y CONFIG USB ARCH HAS OHCI=y CONFIG USB ARCH HAS EHCI=y 57 Reussner Matthieu 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 CONFIG USB ARCH HAS XHCI=y CONFIG USB=y CONFIG USB ANNOUNCE NEW DEVICES=y CONFIG USB EHCI HCD=m CONFIG USB EHCI ROOT HUB TT=y CONFIG USB EHCI TT NEWSCHED=y CONFIG USB OHCI HCD=m CONFIG USB OHCI HCD SSB=y CONFIG USB OHCI LITTLE ENDIAN=y CONFIG USB UHCI HCD=y CONFIG USB STORAGE=m CONFIG USB STORAGE REALTEK=m CONFIG MMC=m CONFIG MMC BLOCK=m CONFIG MMC BLOCK MINORS=8 CONFIG MMC BLOCK BOUNCE=y CONFIG SDIO UART=m CONFIG MMC SDHCI=m CONFIG DMADEVICES=y CONFIG INTEL IOATDMA=y CONFIG DMA ENGINE=y CONFIG NET DMA=y CONFIG DCA=y CONFIG CLKSRC I8253=y CONFIG CLKEVT I8253=y CONFIG I8253 LOCK=y CONFIG CLKBLD I8253=y CONFIG FIRMWARE MEMMAP=y CONFIG EXT2 FS=y CONFIG EXT2 FS XATTR=y CONFIG EXT2 FS POSIX ACL=y CONFIG EXT2 FS SECURITY=y CONFIG EXT3 FS=y CONFIG EXT3 DEFAULTS TO ORDERED=y CONFIG EXT3 FS XATTR=y CONFIG EXT3 FS POSIX ACL=y CONFIG EXT3 FS SECURITY=y CONFIG JBD=y CONFIG FS MBCACHE=y CONFIG FS POSIX ACL=y CONFIG FILE LOCKING=y CONFIG FSNOTIFY=y CONFIG DNOTIFY=y CONFIG INOTIFY USER=y CONFIG GENERIC ACL=y CONFIG FAT FS=y CONFIG MSDOS FS=m CONFIG VFAT FS=y CONFIG FAT DEFAULT CODEPAGE=437 CONFIG FAT DEFAULT IOCHARSET=” i s o 8 8 5 9 −1” CONFIG NTFS FS=m CONFIG PROC FS=y CONFIG PROC KCORE=y CONFIG PROC VMCORE=y CONFIG PROC SYSCTL=y CONFIG PROC PAGE MONITOR=y CONFIG SYSFS=y CONFIG TMPFS=y CONFIG TMPFS POSIX ACL=y CONFIG TMPFS XATTR=y CONFIG CONFIGFS FS=y CONFIG PARTITION ADVANCED=y CONFIG MAC PARTITION=y CONFIG MSDOS PARTITION=y 58 Reussner Matthieu 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 CONFIG BSD DISKLABEL=y CONFIG MINIX SUBPARTITION=y CONFIG SOLARIS X86 PARTITION=y CONFIG UNIXWARE DISKLABEL=y CONFIG LDM PARTITION=y CONFIG KARMA PARTITION=y CONFIG EFI PARTITION=y CONFIG NLS=y CONFIG NLS DEFAULT=” i s o 8 8 5 9 −1” CONFIG NLS CODEPAGE 437=y CONFIG NLS ISO8859 1=y CONFIG NLS ISO8859 15=y CONFIG NLS UTF8=y CONFIG TRACE IRQFLAGS SUPPORT=y CONFIG DEFAULT MESSAGE LOGLEVEL=4 CONFIG ENABLE WARN DEPRECATED=y CONFIG ENABLE MUST CHECK=y CONFIG FRAME WARN=1024 CONFIG MAGIC SYSRQ=y CONFIG DEBUG FS=y CONFIG DEBUG KERNEL=y CONFIG DEBUG SHIRQ=y CONFIG SCHED DEBUG=y CONFIG DEBUG RT MUTEXES=y CONFIG DEBUG PI LIST=y CONFIG DEBUG MUTEXES=y CONFIG STACKTRACE=y CONFIG DEBUG BUGVERBOSE=y CONFIG DEBUG MEMORY INIT=y CONFIG ARCH WANT FRAME POINTERS=y CONFIG FRAME POINTER=y CONFIG RCU CPU STALL TIMEOUT=60 CONFIG USER STACKTRACE SUPPORT=y CONFIG NOP TRACER=y CONFIG HAVE FUNCTION TRACER=y CONFIG HAVE FUNCTION GRAPH TRACER=y CONFIG HAVE FUNCTION GRAPH FP TEST=y CONFIG HAVE FUNCTION TRACE MCOUNT TEST=y CONFIG HAVE DYNAMIC FTRACE=y CONFIG HAVE FTRACE MCOUNT RECORD=y CONFIG HAVE SYSCALL TRACEPOINTS=y CONFIG HAVE C RECORDMCOUNT=y CONFIG RING BUFFER=y CONFIG EVENT TRACING=y CONFIG EVENT POWER TRACING DEPRECATED=y CONFIG CONTEXT SWITCH TRACER=y CONFIG RING BUFFER ALLOW SWAP=y CONFIG TRACING=y CONFIG GENERIC TRACER=y CONFIG TRACING SUPPORT=y CONFIG FTRACE=y CONFIG BRANCH PROFILE NONE=y CONFIG BLK DEV IO TRACE=y CONFIG KPROBE EVENT=y CONFIG HAVE ARCH KGDB=y CONFIG HAVE ARCH KMEMCHECK=y CONFIG X86 VERBOSE BOOTUP=y CONFIG EARLY PRINTK=y CONFIG DOUBLEFAULT=y CONFIG HAVE MMIOTRACE SUPPORT=y CONFIG IO DELAY TYPE 0X80=0 CONFIG IO DELAY TYPE 0XED=1 CONFIG IO DELAY TYPE UDELAY=2 CONFIG IO DELAY TYPE NONE=3 59 Reussner Matthieu 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 CONFIG IO DELAY 0X80=y CONFIG DEFAULT IO DELAY TYPE=0 CONFIG KEYS=y CONFIG SECURITYFS=y CONFIG DEFAULT SECURITY DAC=y CONFIG DEFAULT SECURITY=” ” CONFIG ASYNC TX DISABLE PQ VAL DMA=y CONFIG ASYNC TX DISABLE XOR VAL DMA=y CONFIG CRYPTO=y CONFIG CRYPTO ALGAPI=y CONFIG CRYPTO ALGAPI2=y CONFIG CRYPTO AEAD=m CONFIG CRYPTO AEAD2=y CONFIG CRYPTO BLKCIPHER=m CONFIG CRYPTO BLKCIPHER2=y CONFIG CRYPTO HASH=y CONFIG CRYPTO HASH2=y CONFIG CRYPTO RNG=m CONFIG CRYPTO RNG2=y CONFIG CRYPTO PCOMP2=y CONFIG CRYPTO MANAGER=y CONFIG CRYPTO MANAGER2=y CONFIG CRYPTO MANAGER DISABLE TESTS=y CONFIG CRYPTO GF128MUL=m CONFIG CRYPTO NULL=m CONFIG CRYPTO WORKQUEUE=y CONFIG CRYPTO CRYPTD=m CONFIG CRYPTO AUTHENC=m CONFIG CRYPTO CBC=m CONFIG CRYPTO ECB=m CONFIG CRYPTO LRW=m CONFIG CRYPTO PCBC=m CONFIG CRYPTO XTS=m CONFIG CRYPTO HMAC=y CONFIG CRYPTO XCBC=m CONFIG CRYPTO CRC32C=y CONFIG CRYPTO MD4=m CONFIG CRYPTO MD5=y CONFIG CRYPTO MICHAEL MIC=m CONFIG CRYPTO SHA1=y CONFIG CRYPTO SHA256=m CONFIG CRYPTO SHA512=m CONFIG CRYPTO TGR192=m CONFIG CRYPTO WP512=m CONFIG CRYPTO AES=m CONFIG CRYPTO AES 586=m CONFIG CRYPTO ANUBIS=m CONFIG CRYPTO ARC4=m CONFIG CRYPTO BLOWFISH=m CONFIG CRYPTO BLOWFISH COMMON=m CONFIG CRYPTO CAMELLIA=m CONFIG CRYPTO CAST5=m CONFIG CRYPTO CAST6=m CONFIG CRYPTO DES=y CONFIG CRYPTO FCRYPT=m CONFIG CRYPTO KHAZAD=m CONFIG CRYPTO SEED=m CONFIG CRYPTO SERPENT=m CONFIG CRYPTO TEA=m CONFIG CRYPTO TWOFISH=m CONFIG CRYPTO TWOFISH COMMON=m CONFIG CRYPTO TWOFISH 586=m CONFIG CRYPTO DEFLATE=m CONFIG CRYPTO ANSI CPRNG=m 60 Reussner Matthieu 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 CONFIG CRYPTO HW=y CONFIG HAVE KVM=y CONFIG BINARY PRINTF=y CONFIG BITREVERSE=y CONFIG GENERIC FIND FIRST BIT=y CONFIG CRC CCITT=m CONFIG CRC16=y CONFIG CRC ITU T=y CONFIG CRC32=y CONFIG CRC7=m CONFIG LIBCRC32C=y CONFIG AUDIT GENERIC=y CONFIG ZLIB INFLATE=y CONFIG ZLIB DEFLATE=m CONFIG LZO DECOMPRESS=y CONFIG XZ DEC=y CONFIG XZ DEC X86=y CONFIG XZ DEC POWERPC=y CONFIG XZ DEC IA64=y CONFIG XZ DEC ARM=y CONFIG XZ DEC ARMTHUMB=y CONFIG XZ DEC SPARC=y CONFIG XZ DEC BCJ=y CONFIG DECOMPRESS GZIP=y CONFIG DECOMPRESS BZIP2=y CONFIG DECOMPRESS LZMA=y CONFIG DECOMPRESS XZ=y CONFIG DECOMPRESS LZO=y CONFIG HAS IOMEM=y CONFIG HAS IOPORT=y CONFIG HAS DMA=y CONFIG CHECK SIGNATURE=y CONFIG CPU RMAP=y CONFIG NLATTR=y CONFIG AVERAGE=y Listing 19.5: Kernel .config 19.5 1 2 3 4 5 6 7 8 9 Persistent net rules #c a r d 1 # PCI d e v i c e 0 x8086 : 0 x1501 ( e 1 0 0 0 e ) SUBSYSTEM==” n e t ” , ACTION==” add ” , DRIVERS==” ?∗ ” , ATTR{ a d d r e s s}==” 0 0 : 0 b : ab : 2 b : 5 b : 5 4 ” , ATTR{ d e v i d}==” 0 x0 ” , ATTR{ t y p e}==” 1 ” , KERNEL==” e t h ∗ ” , NAME=” e t h 0 ” SUBSYSTEM==” n e t ” , ACTION==” add ” , DRIVERS==” ?∗ ” , ATTR{ a d d r e s s}==” 0 0 : 0 b : ab : 2 b : 5 b : 5 5 ” , ATTR{ d e v i d}==” 0 x0 ” , ATTR{ t y p e}==” 1 ” , KERNEL==” e t h ∗ ” , NAME=” e t h 1 ” # card 2 # PCI d e v i c e 0 x 1 0 e c : 0 x8136 ( r 8 1 6 9 ) SUBSYSTEM==” n e t ” , ACTION==” add ” , DRIVERS==” ?∗ ” , ATTR{ a d d r e s s}==” 0 0 : 5 0 : c2 : c5 : 1 0 : ab ” , ATTR{ d e v i d}==” 0 x0 ” , ATTR{ t y p e}==” 1 ” , KERNEL==” e t h ∗ ” , NAME=” e t h 2 ” Listing 19.6: Persistent configuration for network interface 19.6 Network name resolution 61 Reussner Matthieu 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 # # # # # # # # / e t c / h o s t s : L o c a l Host Database This f i l e d e s c r i b e s a number o f a l i a s e s −to−a d d r e s s mappings f o r t h e f o r l o c a l hosts that share t h i s f i l e . I n t h e p r e s e n c e o f t h e domain name s e r v i c e o r NIS , t h i s f i l e may not be consulted at a l l ; see / etc / host . conf f o r the r e s o l u t i o n order . 1 9 2 . 1 6 8 . 1 4 2 . 1 embedded01 1 9 2 . 1 6 8 . 1 4 2 . 2 embedded02 #. . . # IPv4 and IPv6 l o c a l h o s t a l i a s e s 127.0.0.1 localhost ::1 localhost Listing 19.7: file hosts 19.7 1 2 3 4 5 6 Autologin / e t c / i n i t . d/ s p r e a d −D s t a r t / e t c / i n i t . d/ s s h d −D s t a r t i f ! f u s e r / dev / t t y 7 &> / dev / n u l l ; then su − g r a p h i c − l −c ’ e x e c s t a r t x &> ˜ / . x s e s s i o n −e r r o r s ’ & fi Listing 19.8: Auto-login service 19.8 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Spread toolkit configuration EventLogFile = / var / l o g / spread . l o g EventTimeStamp Spread Segment 224.0.0.1:4803 { embedded01 192.168.142.1 { D 192.168.142.1 C 192.168.142.1 } embedded02 192.168.142.2 { D 192.168.142.2 C 192.168.142.2 } } Listing 19.9: Spread main configuration file 19.9 Record video from Webcam 62 Reussner Matthieu 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 s t e e l i d o @ s t e e l b o o k ˜ $ mencoder t v : / / −t v d r i v e r=v 4 l 2 : width =640: h e i g h t =480: d e v i c e =/dev / v i d e o 0 −nosound −ovc l a v c −o Downloads / t r a i n i n g . a v i MEncoder SVN−r33094 − 4 . 5 . 3 (C) 2000 −2011 MPlayer Team s u c c e s : f o r m a t : 9 data : 0 x0 − 0 x0 F i c h i e r de t y p e TV d e t e c t e . Driver s e l e c t i o n n e : v4l2 nom : Video 4 Linux 2 i n p u t a u t e u r : Martin O l s c h e w s k i <o l s c h e w s k i @ z p r . uni−k o e l n . de> commentaire : f i r s t t r y , more t o come ; −) v 4 l 2 : your d e v i c e d r i v e r d o e s not s u p p o r t VIDIOC G STD i o c t l , VIDIOC G PARM was used i n s t e a d . S e l e c t e d d e v i c e : USB camera Capabilities : video capture read / write streaming s u p p o r t e d norms : inputs : 0 = sonixj ; C u r r e nt i n p u t : 0 C u r r e nt f o r m a t : unknown ( 0 x4745504a ) t v . c : n o r m f r o m s t r i n g ( p a l ) : p a r a m e t r e de norme bogue . Ajuste a d e f a u l t . v 4 l 2 : i o c t l enum norm f a i l e d : I n a p p r o p r i a t e i o c t l f o r d e v i c e E r r e u r : La norme ne peut pas e t r e a p p l i q u e e ! L ’ e n t r e e s e l e c t i o n n e e n ’ a pas de t u n e r ! v 4 l 2 : i o c t l s e t mute f a i l e d : I n v a l i d argument v 4 l 2 : i o c t l query c o n t r o l f a i l e d : I n v a l i d argument [V] f i l e f m t : 9 f o u r c c : 0 x4745504A t a i l l e : 6 4 0 x480 f p s : 2 5 . 0 0 0 ftime :=0.0400 Ouverture du f i l t r e v i d e o : [ expand osd =1] Expand : −1 x −1, −1 ; −1, osd : 1 , a s p e c t : 0 . 0 0 0 0 0 0 , round : 1 ========================================================================== Ouverture du d e c o d e u r v i d e o : [ f fm pe g ] FFmpeg ’ s l i b a v c o d e c c o d e c f a m i l y Codec v i d e o c h o i s i : [ f f m j p e g ] vfm : f fm pe g ( FFmpeg MJPEG) ========================================================================== F o r c a g e du pre−chargement a u d i o a 0 e t de l a c o r r e c t i o n max d e s p t s a 0 Image s a u t e e ! Pos : 0.0 s 1 f ( 0%) 0 . 9 5 f p s Trem : 0min 0mb A−V: 0 . 0 0 0 [0:0] Image s a u t e e ! Pos : 0.0 s 2 f ( 0%) 1 . 2 8 f p s Trem : 0min 0mb A−V: 0 . 0 0 0 [ 0 : 0 ] N’ a pas pu t r o u v e r e s p a c e c o l o r i m e t r i q u e c o r r e s p o n d a n t − n o u v e l e s s a i a v e c −v f scale . . . Ouverture du f i l t r e v i d e o : [ s c a l e ] L ’ a s p e c t du f i l m e s t i n d e f i n i − pas de pre−dimensionnement a p p l i q u e . [ s w s c a l e r @ 0 x b 0 f 7 4 0 ] BICUBIC s c a l e r , from yuv422p t o yuv420p u s i n g MMX2 v i d e o c o d e c : l i b a v c o d e c ( 6 4 0 x480 f o u r c c =34504 d46 [FMP4 ] ) E c r i t u r e de l ’ e n t e t e . . . ODML: Aspect i n f o r m a t i o n not ( y e t ? ) a v a i l a b l e o r u n s p e c i f i e d , not w r i t i n g vprp header . E c r i t u r e de l ’ e n t e t e . . . ODML: Aspect i n f o r m a t i o n not ( y e t ? ) a v a i l a b l e o r u n s p e c i f i e d , not w r i t i n g vprp header . Pos : 0.0 s 3 f ( 0%) 1 . 7 9 f p s Trem : 0min 0mb A−V: 0 . 0 0 0 [ 0 : 0 ] [...] 1 image ( s ) r e p e t e e ( s ) ! Pos : 0.2 s 5 f ( 0%) 2 . 7 3 f p s Trem : 0min 0mb A−V: 0 . 0 0 0 [0:0] Abandonne d e s trames v i d e o . E c r i t u r e de l ’ i n d e x . . . E c r i t u r e de l ’ e n t e t e . . . ODML: Aspect i n f o r m a t i o n not ( y e t ? ) a v a i l a b l e o r u n s p e c i f i e d , not w r i t i n g vprp header . 57 63 Reussner Matthieu 58 59 60 61 Flux v i d e o : 4 0 6 . 9 7 1 k b i t / s ( 5 0 8 7 1 B/ s ) t a i l l e : 1347075 o c t e t s 320 images v 4 l 2 : i o c t l s e t mute f a i l e d : I n v a l i d argument v 4 l 2 : 320 f r a m e s s u c c e s s f u l l y p r o c e s s e d , 345 f r a m e s dropped . steelido@steelbook ˜ $ 26.480 secs Listing 19.10: Webcam recorder 19.10 1 2 3 4 5 6 7 8 9 10 mount Compact flash #! / u s r / b i n / env bash mount / dev / sdb3 /mnt/ g e n t o o mount / dev / sdb1 /mnt/ g e n t o o / boot mount −t p r o c none /mnt/ g e n t o o / p r o c mount −o bind / dev /mnt/ g e n t o o / dev mount −o bind / u s r / p o r t a g e /mnt/ g e n t o o / u s r / p o r t a g e mount −o bind / v a r /tmp/ /mnt/ g e n t o o / v a r /tmp c h r o o t /mnt/ g e n t o o / env . sh umount /mnt/ g e n t o o /{ dev , proc , u s r / p o r t a g e , v a r /tmp , boot , } Listing 19.11: Mount then chroot inside cf card 19.11 1 2 3 4 5 6 7 8 updating environment settings #! / b i n / bash env−update source / etc / p r o f i l e e x p o r t TERM=xterm e x p o r t PS1=” ( c h r o o t ) $PS1 ” cd bash Listing 19.12: updating environment settings on CF card 19.12 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Structure of transmitted data t y p e d e f s t r u c t myParam { // r e a d param from network u n s i g n e d c h a r p i c 1 [ ( CV FRAME WIDTH∗CV FRAME HEIGHT) / s i z e o f ( u n s i g n e d c h a r ) ] ; u n s i g n e d c h a r p i c 2 [ ( CV FRAME WIDTH∗CV FRAME HEIGHT) / s i z e o f ( u n s i g n e d c h a r ) ] ; i n t LBBx ; i n t LBBy ; i n t LBBwidth ; i n t LBBheight ; i n t BBx ; i n t BBy ; i n t BBwidth ; i n t BBheight ; time t timer ; bool status ; } myParam ; Listing 19.13: Structure hosting data 64 Reussner Matthieu 19.13 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 Getting around the PESIT internet block embedded01 $ c a t ˜ / . s s h / c o n f i g Host m a i l HostName 1 7 6 . 9 . 1 8 0 . 1 5 4 User t u n n e l p o r t 443 I d e n t i t y F i l e ˜/. ssh / i d r s a LocalForward 2525 smtp . g m a i l . com : 4 6 5 embedded01 ˜ $ ssh−keygen G e n e r a t i n g p u b l i c / p r i v a t e r s a key p a i r . Enter f i l e i n which t o s a v e t h e key ( / home/USERNAME/ . s s h / i d r s a ) : <e n t e r > Enter p a s s p h r a s e ( empty f o r no p a s s p h r a s e ) : <e n t e r > Enter same p a s s p h r a s e a g a i n : <e n t e r > Your i d e n t i f i c a t i o n has been s a v e d i n /home/USERNAME/ . s s h / i d r s a . Your p u b l i c key has been s a v e d i n /home/USERNAME/ . s s h / i d r s a r . pub . The key f i n g e r p r i n t i s : 3 4 : c e : 2 c : c f : 9 4 : e7 : e0 : b5 : 2 b : d7 : 2 8 : be : 7 3 : 9 b : e7 : 5 0 USERNAME@embedded01 The key ’ s randomart image i s : +−−[ RSA 2048]−−−−+ | | | | | o | | = o | | . S o E | | ∗ = o | | + +o | | + ++o | | . oB++. | +−−−−−−−−−−−−−−−−−+ embedded01 $ Listing 19.14: Configuring ssh connection 1 p e r m i t o p e n=” smtp . g m a i l . com : 4 6 5 ” , no−pty , no−X11−f o r w a r d i n g , no−agent−f o r w a r d i n g ssh− r s a AAAAB3 [ . . . ] USERNAME@embedded01 Listing 19.15: Content of authorizedkeys on vps server 65 Reussner Matthieu 20 Work log 20.1 Week 1 February 20, 2012 Maha Shivaratri is a national holiday in India, in honor of Lord Shiva. No work was done this day February 21, 2012 • First working day at school. Discovering of the university. • Talk with Pr A.Srinivas about the orientations of the project • Registering on Intel website February 22, 2012 • Writing specifications of the project February 23, 2012 • Writing specifications of the project • Talk with pr. A.Srinivas and Nitheesh Kl about the embedded system February 24, 2012 • OS deployment on the target board • Configuration of the kernel to boot in less than 15 sec February 25, 2012 • Test of OpenTLD on the embedded board 66 Reussner Matthieu 20.2 Week 2 February 27, 2012 • Modification of OpenTLD source code to make it working with two webcam February 28, 2012 • setup of the messaging system February 29, 2012 • setup of the messaging system March 01, 2012 • writing the documentation about the OS + spread installation March 02, 2012 • writing the documentation about the OS + spread installation 20.3 Week 3 March 05, 2012 • writing the part responsible of sending the data March 06, 2012 • writing the part responsible of sending the data+receiving March 07, 2012 • Bug-fix March 08, 2012 • Writing a viewer+sender application 67 Reussner Matthieu March 09, 2012 • Splitting code into 3 Application (viewer,sender,sensor) March 10, 2012 • Drawing schema, updating report 20.4 Week 4 March 12, 2012 • Writing Introduction, Summary, updating planning March 13, 2012 • writing function to send an email March 14, 2012 • writing function to send an email March 15, 2012 • updating report, demo, bug-fix, fighting again Fortinet proxy March 16, 2012 • updating report, demo, bug-fix, fighting again Fortinet proxy 20.5 Week 5,6 March 19, 2012 to March 29, 2012 • No work for the internship was done. • Writing presentation for the Hackaton • Helping students to install OpenCV for one of their lesson March 30, 2012 • Talking with Pr A.Srinivas about some change in the project 68 Reussner Matthieu 20.6 Week 7 April 02, 2012 • Recode movie • Split movie in frames (15’000) April 03, 2012 • Cropping of the frames April 04, 2012 • Cropping of the frames April 05, 2012 • Cropping of the frames April 06, 2012 • Cropping of the frames 20.7 Week 8 April 09, 2012 to April 11, 2012 • Days off in Chennai, Mahabalipuram, Kanchipuram,... April 12, 2012 • Updating the report April 13, 2012 • Install of the computer who will be use to train the haarcascade 20.8 Week 9 April 16, 2012 • Downloading 2000 pictures without a car from google image index 69 Reussner Matthieu April 17, 2012 • Generating all the needed samples for the training April 18, 2012 • Interview for Intel Embedded on the project • Updating the report April 19, 2012 • Updating the report April 20, 2012 • Updating the report 20.9 Week 10 April 23, 2012 • Test of the classifier April 24, 2012 • Removing some picture of car April 25, 2012 • Training of the new classifier April 26 and 27, 2012 • Working on my Pet project for the Hackaton at PESIT 20.10 Week 11 April 30, 2012 • Cleaning the Nokia lab 70 Reussner Matthieu May 01, 2012 • Day off • Helping students from the ”Lab” May 02,03,04, 2012 • Updating the report • Helping students from the ”Lab” • Teaching 20.11 Week 12 May 07, 2012 • Writing a proposal to include a better notification system on the project May 08-09-10, 2012 • Helping students from the nokia lab May 11, 2012 • No work 20.12 Week 13 May 14-18, 2012 • No work has been done this week, I was ill 20.13 Week 14 May 21-23, 2012 • writing the glue code between the notification system and the detection system May 24-25, 2012 • Helping students from the lab 71 Reussner Matthieu 20.14 Week 15 May 28-29, 2012 • moving the code to the embedded system May 30, 2012 • generating the mosaic May 31, 2012 • streaming the mosaic June 01, 2012 • displaying the wall (mosaic) 20.15 Week 16 June 04, 2012 • reading documentation about gstreamer+gtk June 05, 2012 • writing the code for the wall June 06, 2012 • merge of the different part of the code June 07, 2012 • bug fix June 08, 2012 • clean up of code 72 Reussner Matthieu 20.16 Week 17 June 11, 2012 • Changing operating system for the wall June 12, 2012 • Changing operating system for the wall • writing a demo for the wall June 13, 2012 • Reconfiguring the wall June 14, 2012 • Testing the project June 15, 2012 • Updating the report • Testing the project • Helping students 20.17 Week 18 June 18-20, 2012 • Updating the report • Writing the presentation • Packing 73