Changes

Jump to: navigation, search

XELK-TN-001: Using Chromium browser as an Embedded GUI

3,224 bytes added, 12:49, 3 October 2019
Created page with "{{InfoBoxTop}} {{AppliesToAxel}} {{AppliesToAxelEsatta}} {{AppliesToAxelLite}} {{AppliesToSBCX}} {{InfoBoxBottom}} {{ImportantMessage|text=This application note has been vali..."
{{InfoBoxTop}}
{{AppliesToAxel}}
{{AppliesToAxelEsatta}}
{{AppliesToAxelLite}}
{{AppliesToSBCX}}
{{InfoBoxBottom}}

{{ImportantMessage|text=This application note has been validated starting from the '''XELK 4.0.0''' kit version.}}
==History==

{| class="wikitable" border="1"
!Version
!Date
!XELK version
!Notes
|-
|1.0.0
|Sep 2019
|[[Axel_Embedded_Linux_Kit_(XELK)#XELK_4.0.0|4.0.0]]
|
|-
|}

==Introduction==
Starting from [[Axel_Embedded_Linux_Kit_(XELK)#XELK_4.0.0|XELK 4.0.0]] a new root file system image can be created using Yocto recipes provided by DAVE's XELK BSP.

The new <code>axel-image-x11-browser</code> Yocto image includes the recipes for adding the following packages:

* Chromium browser
* apache2 web server
* PHP with apache2 plugin

== Architecture ==

The new root file system can be a complete solution for creating GUI (Graphical User Interface) using popular knowledge as per designing HTML web pages.
The ''apache2'' web server is configured for starting at boot time: the web pages, stored on local file system, will be directly shown on the Chromium browser which is configured for looking on localhost interface.

Here below a command line example for chromium using this configuration:

google-chrome --test-type --kiosk -disable-gpu --start-maximized http://localhost:80/phpinfo.php

== How to configure ==

=== Graphical backend ===

Chromium browser has been built on top of X11 backend: the Yocto build automatically starts the X11 Desktop which should be avoided for having a clean boot with '''only''' the browser displayed.

Dor this pruposes, the desktop will be displayed and the X1 server will be started only as backend:

root@imx6qxelk:~# systemctl disable xserver-nodm.service
Removed /etc/systemd/system/multi-user.target.wants/xserver-nodm.service.
root@imx6qxelk:~#

Then, the new X service will be created and started

<pre>
root@imx6qxelk:~# cat /etc/systemd/system/X.service
[Unit]
Description=X
After=network.target
StartLimitIntervalSec=0

[Service]
Type=simple
Restart=always
RestartSec=1
User=root
ExecStart=/usr/bin/X -nocursor

[Install]
WantedBy=multi-user.target
</pre>

root@imx6qxelk:~# systemctl enable X
Created symlink /etc/systemd/system/multi-user.target.wants/X.service → /etc/systemd/system/X.service.
root@imx6qxelk:~#

=== Web server ===
Apache2 is used as a web server let the embedded system to provide the HTML pages used for creating the GUI. Once installed into the rfs, <code>apache2</code> will be automatically started using the following configuration file:

/etc/apache2/httpd.conf

It is possible to see that apache2 uses the web page present into the ''/usr/share/apache2/htdocs'' directory:

root@imx6qxelk:~# cat /etc/apache2/httpd.conf | grep htdocs
DocumentRoot "/usr/share/apache2/htdocs"
<Directory "/usr/share/apache2/htdocs">
root@imx6qxelk:~#

=== PHP ===
For demonstration purposes the PHP info page is loaded as the home page for our web server running on the system:

<pre>
root@imx6qxelk:~# cat /usr/share/apache2/htdocs/.htaccess
DirectoryIndex phpinfo.php
root@imx6qxelk:~# cat /usr/share/apache2/htdocs/phpinfo.php
<?php

phpinfo();

?>
root@imx6qxelk:~#
</pre>

In this way, the PHP info page is shonw as the
8,221
edits

Navigation menu