> For the complete documentation index, see [llms.txt](https://theiotlearninginitiative.gitbook.io/embedded-linux/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://theiotlearninginitiative.gitbook.io/embedded-linux/wrap-up/challenge.md).

# Challenge

## Challenge

With this step by step challenge you will maximize the capacity of your Development Board by writing functionality both in User Space and Kernel Space from the topics you have learned during the workshop.

1. Build Systems, Yocto Board Support Package, Compilation, Make
2. Build Systems, Yocto Board Support Package, Compilation, Make, Kernel Version
3. Build Systems, Yocto Board Support Package, Modules, Simulated Sensor Kernel Module
4. Build Systems, Yocto Board Support Package, Modules, Simulated Sensor Kernel Module, Load Automatically At Boot Time
5. Build Systems, Yocto Board Support Package, Modules, Simulated Sensor Kernel Module, InternetOfThings101/main.py
6. Initialization, Dual Boot
7. User Space, Virtual Network Computing
8. User Space, Services
9. Libraries, Temboo
10. Subsystems LED
11. Application Development, Bots, Telegram Bot
12. Application Development, Artificial Intelligence, Wit.Ai
13. Software Version Control System Pushing Code

## 00 Build Systems, Yocto Board Support Package, Compilation, Make

Section [Build Systems Yocto Board Support Package Compilation](https://theiotlearninginitiative.gitbooks.io/embedded-linux/content/documentation/Compilation.html)

**Instruction**

> Under your Linux Host Development, install the required dependencies, download and decompress the Intel Edison Linux Sources and compile your own Intel Edison Board Support Package

## 01 Build Systems, Yocto Board Support Package, Compilation, Make, Kernel Version

Section [Build Systems Yocto Board Support Package Compilation](https://theiotlearninginitiative.gitbooks.io/embedded-linux/content/documentation/Compilation.html)

**Instruction**

> Choose another version / branch and compile

* [01 Org Intel Edison Linux Kernel](https://github.com/01org/edison-linux)
  * edison-3.19.5
  * edison-3.10.98
  * edison-3.10.17
* [meta-intel-edison-bsp/recipes-kernel/linux/linux-externalsrc.bb log](http://git.yoctoproject.org/cgit/cgit.cgi/meta-intel-edison/tree/meta-intel-edison-bsp/recipes-kernel/linux/linux-externalsrc.bb)
* [meta-intel-edison-bsp/recipes-kernel/linux/linux-externalsrc.bb log](http://git.yoctoproject.org/cgit/cgit.cgi/meta-intel-edison/log/meta-intel-edison-bsp/recipes-kernel/linux/linux-externalsrc.bb)

## 02 Build Systems, Yocto Board Support Package, Modules, Simulated Sensor Kernel Module

Section [Build Systems Yocto Board Support Package Modules](https://theiotlearninginitiative.gitbooks.io/embedded-linux/content/documentation/Modules.html)

**Instruction**

> Write a Linux Kernel module under that gets registered under /sys/kernel/sensor using Native Compilation, Simulated Sensor Kernel Module will generate a random number

Look at Linux Kernel Sysfs Documentation

```bash
root@edison:~# ls /sys/kernel/sensor
status
root@edison:~# cat /sys/kernel/sensor/status
456
root@edison:~#
```

## 03 Build Systems, Yocto Board Support Package, Modules, Simulated Sensor Kernel Module, Load Automatically At Boot Time

Section [Build Systems Yocto Board Support Package Modules](https://theiotlearninginitiative.gitbooks.io/embedded-linux/content/documentation/Modules.html)

**Instruction**

> Make your Simulated Sensor Module load automatically at boot time by incorporating your Linux Kernel module into your Yocto Board Support Package Compilation

## 04 Build Systems, Yocto Board Support Package, Modules, Simulated Sensor Kernel Module, InternetOfThings101/main.py

Section [Build Systems Yocto Board Support Package Modules](https://theiotlearninginitiative.gitbooks.io/embedded-linux/content/documentation/Modules.html)

**Instruction**

> Under EmbeddedLinux/main.py replace existing functionality/logic under functionDataSensor to use now the random number generated by the Simulated Sensor Kernel Module

## 05 Initialization, Dual Boot

Section [Initialization Dual Boot](https://theiotlearninginitiative.gitbooks.io/embedded-linux/content/documentation/DualBoot.html)

**Instruction**

> Allow Intel Edison to boot Ubilinux from uSD, Yocto shall be maintained under main flash partition

## 06 User Space, Virtual Network Computing

Section [User Space Virtual Network Computing](https://theiotlearninginitiative.gitbooks.io/embedded-linux/content/documentation/VirtualNetworkComputing.html)

**Instruction**

> Enable Virtual Network Computing server from Ubilinux under uSD, access Intel Edison from your Development Host using Virtual Network Computing client

## 07 User Space, Services

Section [User Space Services](https://theiotlearninginitiative.gitbooks.io/embedded-linux/content/documentation/Services.html)

**Instruction**

> Configure SystemD to run your script EmbeddedLinux/main.py on startup

## 08 Libraries, Temboo

Section [Libraries Temboo](https://theiotlearninginitiative.gitbooks.io/embedded-linux/content/documentation/Temboo.html)

**Instruction**

> Implement 1 CHOREOS under EmbeddedLinux/main.py

## 09 Subsystems, LED

Section [Subsystems LED](https://theiotlearninginitiative.gitbooks.io/embedded-linux/content/documentation/Led.html)

**Instruction**

> Enable under your Yocto Board Support Package Compilation the macros LEDS\_TRIGGERS and LEDS\_TRIGGER\_HEARTBEAT so you can control a Led from the Grove Indoor Environment Kit attached to one of the GPIOs

## 10 Application Development, Bots, Telegram Bot

Section [Application Development Bots](https://theiotlearninginitiative.gitbooks.io/embedded-linux/content/documentation/Bots.html)

**Instruction**

> Create a new Bot and implement under your script EmbeddedLinux/main.py 2 commands, to report data from functionDataSensor and to execute the action under functionDataActuator from any Telegram client

## 11 Application Development, Artificial Intelligence, Wit.Ai

Section [Application Development Artificial Intelligence Wit.Ai](https://theiotlearninginitiative.gitbooks.io/embedded-linux/content/documentation/ArtificialIntelligence.html)

**Instruction**

> Implement under your script EmbeddedLinux/main.py 2 commands, to report data from functionDataSensor and to execute the action under functionDataActuator from from the Wit.Ai bot

## 12 Software Version Control System Pushing Code

Section [Software Version Control System](<https://theiotlearninginitiative.gitbooks.io/internetofthings101/content/documentation/ControlVersionSystem.html >)

**Instruction**

> Confirm every code under your local "TheIoTLearningInitiative" git repository, "EmbeddedLinux" directory is uploaded to your remote "TheIoTLearningInitiative" github repository

ToDo Diretory Structure
