SlideShare a Scribd company logo
1 of 19
Download to read offline
Surfing on an Interactive Kiosk
Leon Anavi
Konsulko Group
leon.anavi@konsulko.com
leon@anavi.org
Yocto Project Summit 2021
Yocto Project Summit 2021, Leon Anavi, Surfing on an Interactive Kiosk
Konsulko Group
 Services company specializing in Embedded Linux and Open Source Software
 Hardware/software build, design, development, and training services
 Based in San Jose, CA with an engineering presence worldwide
 http://konsulko.com/
Yocto Project Summit 2021, Leon Anavi, Surfing on an Interactive Kiosk
Agenda
 Using web browsers for an interactive kiosk
 Openbox and Surf
 Building an image
 Conclusions
 Q&A
Yocto Project Summit 2021, Leon Anavi, Surfing on an Interactive Kiosk
Web Browser Market Share
Yocto Project Summit 2021, Leon Anavi, Surfing on an Interactive Kiosk
Yocto/OE Layer for Mainstream Web Browsers
 meta-browser
https://github.com/OSSystems/meta-browser
 Available in GitHub under MIT license
 Sub-layer with recipes for Chromium
 Sub-layer with recipes for Firefox
Yocto Project Summit 2021, Leon Anavi, Surfing on an Interactive Kiosk
Surf Web Browser
 Minimalist web browser
 No graphical control elements
 Controlled via keyboard shortcuts or external tools
 Based on WebKit2/GTK+
 Developed by suckless.org
 Initial release in 2009
 Available under MIT License
Yocto Project Summit 2021, Leon Anavi, Surfing on an Interactive Kiosk
Surf in meta-openembedded/meta-oe
Yocto Project Summit 2021, Leon Anavi, Surfing on an Interactive Kiosk
Surf Web Browser
Requirements:
 Requires X11 and OpenGL
 Depends on WebKitGTK, GTK+ 3, glib-2.0 and gcr
 WebKitGTK is a full-featured port of the WebKit2 rendering engine
Yocto Project Summit 2021, Leon Anavi, Surfing on an Interactive Kiosk
Openbox
 Highly configurable stacking window manager for X11
 Written in C and XML for configurations, licensed under GPLv2
 rc.xml - main configuration file of the overall session
 menu.xml - configuration file for the desktop menu, accessible by
right-clicking the background
 autostart – automatically starts applications
 Recipe in meta-oe
 http://openbox.org/
Yocto Project Summit 2021, Leon Anavi, Surfing on an Interactive Kiosk
Openbox Screenshot
 Openbox
 xterm
 pcmanfm
 gedit
 surf
 stalonetray
Yocto Project Summit 2021, Leon Anavi, Surfing on an Interactive Kiosk
Layers
 Poky
 meta-raspberrypi
 meta-openembedded/meta-oe
 meta-openembedded/meta-python
 meta-openembedded/meta-networking
Yocto Project Summit 2021, Leon Anavi, Surfing on an Interactive Kiosk
Create a New Layer
 Set up build environment:
source oe-init-build-env
 Create a new layer:
bitbake-layers create-layer ../meta-my-kiosk
 Add the new layer:
bitbake-layers add-layer ../meta-my-kiosk
 Add other required layers
Yocto Project Summit 2021, Leon Anavi, Surfing on an Interactive Kiosk
Systemd Service for Surf
 surf.service:
[Unit]
Description=Surf
After=display-manager.service
[Service]
Type=simple
EnvironmentFile=/etc/default/xserver-nodm
ExecStart=/usr/bin/surf https://www.yoctoproject.org/
TimeoutStartSec=120
Restart=on-failure
RestartSec=3
[Install]
WantedBy=graphical.target
Yocto Project Summit 2021, Leon Anavi, Surfing on an Interactive Kiosk
Systemd Service for Surf
 surf_%.bbappend in meta-my-kiosk:
FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
SRC_URI += "file://surf.service"
inherit systemd
do_install_append() {
if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
install -d ${D}${systemd_unitdir}/system
install -m 644 ${WORKDIR}/surf.service ${D}${systemd_unitdir}/system
fi
}
FILES_${PN} += "${systemd_unitdir}/scripts/"
SYSTEMD_SERVICE_${PN} = "surf.service"
Yocto Project Summit 2021, Leon Anavi, Surfing on an Interactive Kiosk
My Kiosk Image
 core-image-kiosk
SUMMARY = "Interactive kiosk with X11, openbox and surf"
IMAGE_FEATURES += "splash package-management x11-base"
LICENSE = "MIT"
inherit core-image features_check
REQUIRED_DISTRO_FEATURES = "x11"
QB_MEM = '${@bb.utils.contains("DISTRO_FEATURES", "opengl", "-m 512", "-m
256", d)}'
IMAGE_INSTALL_append = " 
kernel-modules 
nano 
openbox pcmanfm xterm surf xwd 
"
Yocto Project Summit 2021, Leon Anavi, Surfing on an Interactive Kiosk
Building an Image
 Set machine and enable UART at local.conf:
MACHINE = "raspberrypi4"
ENABLE_UART="1"
 Switch to systemd at local.conf:
DISTRO_FEATURES_append = " systemd"
VIRTUAL-RUNTIME_init_manager = "systemd"
DISTRO_FEATURES_BACKFILL_CONSIDERED = "sysvinit"
VIRTUAL-RUNTIME_initscripts = ""
 Build the image:
bitbake core-image-kiosk
Yocto Project Summit 2021, Leon Anavi, Surfing on an Interactive Kiosk
Showcase
Yocto Project Summit 2021, Leon Anavi, Surfing on an Interactive Kiosk
Conclusions
 The Yocto Project and OpenEmbedded provide a lot of different options for
creating interactive kiosk images
 Surf web browser is an alternative of the mainstream web browsers for some very
specific use cases
 Minimalist configuration with X11, Openbox and surf web browser is good and
easy option for implementing an interactive HTML5 kiosk on constrained
embedded Linux devices
 TODO: software over the air updates, continuous integration, setup tool (google
repo/kas/git submodules/etc), templates for local.conf and bblayers, create distro
configuration...
Yocto Project Summit 2021, Leon Anavi, Surfing on an Interactive Kiosk
Thank You!
Useful links
 https://surf.suckless.org/
 http://openbox.org/wiki/Main_Page
 http://git.openembedded.org/meta-openembedded
 http://git.yoctoproject.org/cgit/cgit.cgi/meta-raspberrypi
 http://git.yoctoproject.org/cgit/cgit.cgi/poky/
 https://www.yoctoproject.org/docs/current/mega-manual/mega-manual.html
 https://archive.fosdem.org/2020/schedule/event/ema_homebridge_with_yocto/

More Related Content

What's hot

U boot porting guide for SoC
U boot porting guide for SoCU boot porting guide for SoC
U boot porting guide for SoC
Macpaul Lin
 
Uboot startup sequence
Uboot startup sequenceUboot startup sequence
Uboot startup sequence
Houcheng Lin
 

What's hot (20)

[CB20] DeClang: Anti-hacking compiler by Mengyuan Wan
[CB20] DeClang: Anti-hacking compiler by Mengyuan Wan[CB20] DeClang: Anti-hacking compiler by Mengyuan Wan
[CB20] DeClang: Anti-hacking compiler by Mengyuan Wan
 
Linux : PSCI
Linux : PSCILinux : PSCI
Linux : PSCI
 
Static partitioning virtualization on RISC-V
Static partitioning virtualization on RISC-VStatic partitioning virtualization on RISC-V
Static partitioning virtualization on RISC-V
 
The Yocto Project
The Yocto ProjectThe Yocto Project
The Yocto Project
 
Tegra 186のu-boot & Linux
Tegra 186のu-boot & LinuxTegra 186のu-boot & Linux
Tegra 186のu-boot & Linux
 
Go logging using eBPF
Go logging using eBPFGo logging using eBPF
Go logging using eBPF
 
Deep Dive into the Linux Kernel - メモリ管理におけるCompaction機能について
Deep Dive into the Linux Kernel - メモリ管理におけるCompaction機能についてDeep Dive into the Linux Kernel - メモリ管理におけるCompaction機能について
Deep Dive into the Linux Kernel - メモリ管理におけるCompaction機能について
 
Toolchain
ToolchainToolchain
Toolchain
 
Virtualization Support in ARMv8+
Virtualization Support in ARMv8+Virtualization Support in ARMv8+
Virtualization Support in ARMv8+
 
U boot porting guide for SoC
U boot porting guide for SoCU boot porting guide for SoC
U boot porting guide for SoC
 
Yocto Project ハンズオン プレゼン用資料
Yocto Project ハンズオン プレゼン用資料Yocto Project ハンズオン プレゼン用資料
Yocto Project ハンズオン プレゼン用資料
 
Build your own embedded linux distributions by yocto project
Build your own embedded linux distributions by yocto projectBuild your own embedded linux distributions by yocto project
Build your own embedded linux distributions by yocto project
 
Block Drivers
Block DriversBlock Drivers
Block Drivers
 
Continguous Memory Allocator in the Linux Kernel
Continguous Memory Allocator in the Linux KernelContinguous Memory Allocator in the Linux Kernel
Continguous Memory Allocator in the Linux Kernel
 
Xvisor: embedded and lightweight hypervisor
Xvisor: embedded and lightweight hypervisorXvisor: embedded and lightweight hypervisor
Xvisor: embedded and lightweight hypervisor
 
QEMU in Cross building
QEMU in Cross buildingQEMU in Cross building
QEMU in Cross building
 
Uboot startup sequence
Uboot startup sequenceUboot startup sequence
Uboot startup sequence
 
Velocity 2015 linux perf tools
Velocity 2015 linux perf toolsVelocity 2015 linux perf tools
Velocity 2015 linux perf tools
 
Receive side scaling (RSS) with eBPF in QEMU and virtio-net
Receive side scaling (RSS) with eBPF in QEMU and virtio-netReceive side scaling (RSS) with eBPF in QEMU and virtio-net
Receive side scaling (RSS) with eBPF in QEMU and virtio-net
 
Achieving the ultimate performance with KVM
Achieving the ultimate performance with KVM Achieving the ultimate performance with KVM
Achieving the ultimate performance with KVM
 

Similar to Surfing on an Interactive Kiosk

Integrating VNC in Weston with the Yocto Project and OpenEmbedded
Integrating VNC in Weston with the Yocto Project and OpenEmbeddedIntegrating VNC in Weston with the Yocto Project and OpenEmbedded
Integrating VNC in Weston with the Yocto Project and OpenEmbedded
Leon Anavi
 
A Study of SVG-based Application Development @ OSDC 2010
A Study of SVG-based Application Development @ OSDC 2010A Study of SVG-based Application Development @ OSDC 2010
A Study of SVG-based Application Development @ OSDC 2010
Rex Tsai
 
DIY- computer vision with GWT
DIY- computer vision with GWTDIY- computer vision with GWT
DIY- computer vision with GWT
Francesca Tosi
 
Minko - Scripting 3D apps with Lua and C++
Minko - Scripting 3D apps with Lua and C++Minko - Scripting 3D apps with Lua and C++
Minko - Scripting 3D apps with Lua and C++
Minko3D
 
Add the power of the Web to your embedded devices with WPE WebKit
Add the power of the Web to your embedded devices with WPE WebKitAdd the power of the Web to your embedded devices with WPE WebKit
Add the power of the Web to your embedded devices with WPE WebKit
Igalia
 
Building End-user Applications on Embedded Devices with WPE
Building End-user Applications on Embedded Devices with WPEBuilding End-user Applications on Embedded Devices with WPE
Building End-user Applications on Embedded Devices with WPE
Igalia
 
Os Grossupdated
Os GrossupdatedOs Grossupdated
Os Grossupdated
oscon2007
 

Similar to Surfing on an Interactive Kiosk (20)

Integrating VNC in Weston with the Yocto Project and OpenEmbedded
Integrating VNC in Weston with the Yocto Project and OpenEmbeddedIntegrating VNC in Weston with the Yocto Project and OpenEmbedded
Integrating VNC in Weston with the Yocto Project and OpenEmbedded
 
WebKit and Blink: Open Development Powering the HTML5 Revolution (LinuxCon No...
WebKit and Blink: Open Development Powering the HTML5 Revolution (LinuxCon No...WebKit and Blink: Open Development Powering the HTML5 Revolution (LinuxCon No...
WebKit and Blink: Open Development Powering the HTML5 Revolution (LinuxCon No...
 
WebKit and Blink: open development powering the HTML5 revolution
WebKit and Blink: open development powering the HTML5 revolutionWebKit and Blink: open development powering the HTML5 revolution
WebKit and Blink: open development powering the HTML5 revolution
 
The WebKit project
The WebKit projectThe WebKit project
The WebKit project
 
The WebKit project (LinuxCon North America 2012)
The WebKit project (LinuxCon North America 2012)The WebKit project (LinuxCon North America 2012)
The WebKit project (LinuxCon North America 2012)
 
WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolution
WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 RevolutionWebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolution
WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolution
 
WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolutio...
WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolutio...WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolutio...
WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolutio...
 
A Study of SVG-based Application Development @ OSDC 2010
A Study of SVG-based Application Development @ OSDC 2010A Study of SVG-based Application Development @ OSDC 2010
A Study of SVG-based Application Development @ OSDC 2010
 
DIY: Computer Vision with GWT.
DIY: Computer Vision with GWT.DIY: Computer Vision with GWT.
DIY: Computer Vision with GWT.
 
DIY- computer vision with GWT
DIY- computer vision with GWTDIY- computer vision with GWT
DIY- computer vision with GWT
 
Minko - Scripting 3D apps with Lua and C++
Minko - Scripting 3D apps with Lua and C++Minko - Scripting 3D apps with Lua and C++
Minko - Scripting 3D apps with Lua and C++
 
Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...
Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...
Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...
 
Docker Warsaw Meetup 12/2017 - DockerCon 2017 Recap
Docker Warsaw Meetup 12/2017 - DockerCon 2017 RecapDocker Warsaw Meetup 12/2017 - DockerCon 2017 Recap
Docker Warsaw Meetup 12/2017 - DockerCon 2017 Recap
 
RunX: deploy real-time OSes as containers at the edge
RunX: deploy real-time OSes as containers at the edgeRunX: deploy real-time OSes as containers at the edge
RunX: deploy real-time OSes as containers at the edge
 
Add the power of the Web to your embedded devices with WPE WebKit
Add the power of the Web to your embedded devices with WPE WebKitAdd the power of the Web to your embedded devices with WPE WebKit
Add the power of the Web to your embedded devices with WPE WebKit
 
Building End-user Applications on Embedded Devices with WPE
Building End-user Applications on Embedded Devices with WPEBuilding End-user Applications on Embedded Devices with WPE
Building End-user Applications on Embedded Devices with WPE
 
Matteo Valoriani, Antimo Musone - The Future of Factory - Codemotion Rome 2019
Matteo Valoriani, Antimo Musone - The Future of Factory - Codemotion Rome 2019Matteo Valoriani, Antimo Musone - The Future of Factory - Codemotion Rome 2019
Matteo Valoriani, Antimo Musone - The Future of Factory - Codemotion Rome 2019
 
Os Grossupdated
Os GrossupdatedOs Grossupdated
Os Grossupdated
 
Installing OpenCV 2.3.1 with Qt
Installing OpenCV 2.3.1 with QtInstalling OpenCV 2.3.1 with Qt
Installing OpenCV 2.3.1 with Qt
 
Blockchain Software for Hardware: The Canaan AvalonMiner Open Source Embedded...
Blockchain Software for Hardware: The Canaan AvalonMiner Open Source Embedded...Blockchain Software for Hardware: The Canaan AvalonMiner Open Source Embedded...
Blockchain Software for Hardware: The Canaan AvalonMiner Open Source Embedded...
 

More from Leon Anavi

How to Choose a Software Update Mechanism for Embedded Linux Devices
How to Choose a Software Update Mechanism for Embedded Linux DevicesHow to Choose a Software Update Mechanism for Embedded Linux Devices
How to Choose a Software Update Mechanism for Embedded Linux Devices
Leon Anavi
 
Linux дистрибуции и софтуерни обновления за вградени устройства
Linux дистрибуции и софтуерни обновления за вградени устройства Linux дистрибуции и софтуерни обновления за вградени устройства
Linux дистрибуции и софтуерни обновления за вградени устройства
Leon Anavi
 

More from Leon Anavi (20)

Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...
Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...
Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...
 
Как да убием и последната дискета с Open Source технологии?
Как да убием и последната дискета с Open Source технологии?Как да убием и последната дискета с Open Source технологии?
Как да убием и последната дискета с Open Source технологии?
 
Linux обновления с RAUC и Docker
Linux обновления с RAUC и DockerLinux обновления с RAUC и Docker
Linux обновления с RAUC и Docker
 
How to Choose a Software Update Mechanism for Embedded Linux Devices
How to Choose a Software Update Mechanism for Embedded Linux DevicesHow to Choose a Software Update Mechanism for Embedded Linux Devices
How to Choose a Software Update Mechanism for Embedded Linux Devices
 
Open Hardware Makers
Open Hardware MakersOpen Hardware Makers
Open Hardware Makers
 
Open Source Tools for Making Open Source Hardware
Open Source Tools for Making Open Source HardwareOpen Source Tools for Making Open Source Hardware
Open Source Tools for Making Open Source Hardware
 
A/B Linux updates with RAUC and meta-rauc-community: now & in the future
A/B Linux updates with RAUC and meta-rauc-community: now & in the futureA/B Linux updates with RAUC and meta-rauc-community: now & in the future
A/B Linux updates with RAUC and meta-rauc-community: now & in the future
 
Linux дистрибуции и софтуерни обновления за вградени устройства
Linux дистрибуции и софтуерни обновления за вградени устройства Linux дистрибуции и софтуерни обновления за вградени устройства
Linux дистрибуции и софтуерни обновления за вградени устройства
 
Getting started with AGL using a Raspberry Pi
Getting started with AGL using a Raspberry PiGetting started with AGL using a Raspberry Pi
Getting started with AGL using a Raspberry Pi
 
Automotive Grade Linux on Raspberry Pi: How Does It Work?
Automotive Grade Linux on Raspberry Pi: How Does It Work?Automotive Grade Linux on Raspberry Pi: How Does It Work?
Automotive Grade Linux on Raspberry Pi: How Does It Work?
 
Comparison of Open Source Software Home Automation Tools
Comparison of Open Source Software Home Automation ToolsComparison of Open Source Software Home Automation Tools
Comparison of Open Source Software Home Automation Tools
 
Практични примери за device tree overlays на Raspberry Pi
Практични примери за device tree overlays на Raspberry PiПрактични примери за device tree overlays на Raspberry Pi
Практични примери за device tree overlays на Raspberry Pi
 
The Software Developer’s Guide to Open Source Hardware
The Software Developer’s Guide to Open Source HardwareThe Software Developer’s Guide to Open Source Hardware
The Software Developer’s Guide to Open Source Hardware
 
Making Open Source Hardware for Retrogaming on Raspberry Pi
Making Open Source Hardware for Retrogaming on Raspberry PiMaking Open Source Hardware for Retrogaming on Raspberry Pi
Making Open Source Hardware for Retrogaming on Raspberry Pi
 
Вграждане на умни гласови асистенти в устройства с Linux
Вграждане на умни гласови асистенти в устройства с LinuxВграждане на умни гласови асистенти в устройства с Linux
Вграждане на умни гласови асистенти в устройства с Linux
 
Comparison of Voice Assistant SDKs for Embedded Linux Devices
 Comparison of Voice Assistant SDKs for Embedded Linux Devices Comparison of Voice Assistant SDKs for Embedded Linux Devices
Comparison of Voice Assistant SDKs for Embedded Linux Devices
 
Open Source MQTT Brokers
Open Source MQTT BrokersOpen Source MQTT Brokers
Open Source MQTT Brokers
 
Въведение в RetroPie за Raspberry Pi
Въведение в RetroPie за Raspberry PiВъведение в RetroPie за Raspberry Pi
Въведение в RetroPie за Raspberry Pi
 
Free and Open Source Software Tools for Making Open Source Hardware
 Free and Open Source Software Tools for Making Open Source Hardware Free and Open Source Software Tools for Making Open Source Hardware
Free and Open Source Software Tools for Making Open Source Hardware
 
Building a Remote Control Robot with Automotive Grade Linux
Building a Remote Control Robot with Automotive Grade LinuxBuilding a Remote Control Robot with Automotive Grade Linux
Building a Remote Control Robot with Automotive Grade Linux
 

Recently uploaded

Breaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdfBreaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
UK Journal
 
Hyatt driving innovation and exceptional customer experiences with FIDO passw...
Hyatt driving innovation and exceptional customer experiences with FIDO passw...Hyatt driving innovation and exceptional customer experiences with FIDO passw...
Hyatt driving innovation and exceptional customer experiences with FIDO passw...
FIDO Alliance
 
Structuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessStructuring Teams and Portfolios for Success
Structuring Teams and Portfolios for Success
UXDXConf
 

Recently uploaded (20)

Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024
 
How we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdfHow we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdf
 
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdfBreaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
 
WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024
 
Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...
Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...
Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...
 
Introduction to FIDO Authentication and Passkeys.pptx
Introduction to FIDO Authentication and Passkeys.pptxIntroduction to FIDO Authentication and Passkeys.pptx
Introduction to FIDO Authentication and Passkeys.pptx
 
(Explainable) Data-Centric AI: what are you explaininhg, and to whom?
(Explainable) Data-Centric AI: what are you explaininhg, and to whom?(Explainable) Data-Centric AI: what are you explaininhg, and to whom?
(Explainable) Data-Centric AI: what are you explaininhg, and to whom?
 
Hyatt driving innovation and exceptional customer experiences with FIDO passw...
Hyatt driving innovation and exceptional customer experiences with FIDO passw...Hyatt driving innovation and exceptional customer experiences with FIDO passw...
Hyatt driving innovation and exceptional customer experiences with FIDO passw...
 
1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPT
1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPT1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPT
1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPT
 
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
 
WebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM PerformanceWebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM Performance
 
Portal Kombat : extension du réseau de propagande russe
Portal Kombat : extension du réseau de propagande russePortal Kombat : extension du réseau de propagande russe
Portal Kombat : extension du réseau de propagande russe
 
Using IESVE for Room Loads Analysis - UK & Ireland
Using IESVE for Room Loads Analysis - UK & IrelandUsing IESVE for Room Loads Analysis - UK & Ireland
Using IESVE for Room Loads Analysis - UK & Ireland
 
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdfLinux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
 
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
 
Structuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessStructuring Teams and Portfolios for Success
Structuring Teams and Portfolios for Success
 
State of the Smart Building Startup Landscape 2024!
State of the Smart Building Startup Landscape 2024!State of the Smart Building Startup Landscape 2024!
State of the Smart Building Startup Landscape 2024!
 
Long journey of Ruby Standard library at RubyKaigi 2024
Long journey of Ruby Standard library at RubyKaigi 2024Long journey of Ruby Standard library at RubyKaigi 2024
Long journey of Ruby Standard library at RubyKaigi 2024
 
Collecting & Temporal Analysis of Behavioral Web Data - Tales From The Inside
Collecting & Temporal Analysis of Behavioral Web Data - Tales From The InsideCollecting & Temporal Analysis of Behavioral Web Data - Tales From The Inside
Collecting & Temporal Analysis of Behavioral Web Data - Tales From The Inside
 
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
 

Surfing on an Interactive Kiosk

  • 1. Surfing on an Interactive Kiosk Leon Anavi Konsulko Group leon.anavi@konsulko.com leon@anavi.org Yocto Project Summit 2021
  • 2. Yocto Project Summit 2021, Leon Anavi, Surfing on an Interactive Kiosk Konsulko Group  Services company specializing in Embedded Linux and Open Source Software  Hardware/software build, design, development, and training services  Based in San Jose, CA with an engineering presence worldwide  http://konsulko.com/
  • 3. Yocto Project Summit 2021, Leon Anavi, Surfing on an Interactive Kiosk Agenda  Using web browsers for an interactive kiosk  Openbox and Surf  Building an image  Conclusions  Q&A
  • 4. Yocto Project Summit 2021, Leon Anavi, Surfing on an Interactive Kiosk Web Browser Market Share
  • 5. Yocto Project Summit 2021, Leon Anavi, Surfing on an Interactive Kiosk Yocto/OE Layer for Mainstream Web Browsers  meta-browser https://github.com/OSSystems/meta-browser  Available in GitHub under MIT license  Sub-layer with recipes for Chromium  Sub-layer with recipes for Firefox
  • 6. Yocto Project Summit 2021, Leon Anavi, Surfing on an Interactive Kiosk Surf Web Browser  Minimalist web browser  No graphical control elements  Controlled via keyboard shortcuts or external tools  Based on WebKit2/GTK+  Developed by suckless.org  Initial release in 2009  Available under MIT License
  • 7. Yocto Project Summit 2021, Leon Anavi, Surfing on an Interactive Kiosk Surf in meta-openembedded/meta-oe
  • 8. Yocto Project Summit 2021, Leon Anavi, Surfing on an Interactive Kiosk Surf Web Browser Requirements:  Requires X11 and OpenGL  Depends on WebKitGTK, GTK+ 3, glib-2.0 and gcr  WebKitGTK is a full-featured port of the WebKit2 rendering engine
  • 9. Yocto Project Summit 2021, Leon Anavi, Surfing on an Interactive Kiosk Openbox  Highly configurable stacking window manager for X11  Written in C and XML for configurations, licensed under GPLv2  rc.xml - main configuration file of the overall session  menu.xml - configuration file for the desktop menu, accessible by right-clicking the background  autostart – automatically starts applications  Recipe in meta-oe  http://openbox.org/
  • 10. Yocto Project Summit 2021, Leon Anavi, Surfing on an Interactive Kiosk Openbox Screenshot  Openbox  xterm  pcmanfm  gedit  surf  stalonetray
  • 11. Yocto Project Summit 2021, Leon Anavi, Surfing on an Interactive Kiosk Layers  Poky  meta-raspberrypi  meta-openembedded/meta-oe  meta-openembedded/meta-python  meta-openembedded/meta-networking
  • 12. Yocto Project Summit 2021, Leon Anavi, Surfing on an Interactive Kiosk Create a New Layer  Set up build environment: source oe-init-build-env  Create a new layer: bitbake-layers create-layer ../meta-my-kiosk  Add the new layer: bitbake-layers add-layer ../meta-my-kiosk  Add other required layers
  • 13. Yocto Project Summit 2021, Leon Anavi, Surfing on an Interactive Kiosk Systemd Service for Surf  surf.service: [Unit] Description=Surf After=display-manager.service [Service] Type=simple EnvironmentFile=/etc/default/xserver-nodm ExecStart=/usr/bin/surf https://www.yoctoproject.org/ TimeoutStartSec=120 Restart=on-failure RestartSec=3 [Install] WantedBy=graphical.target
  • 14. Yocto Project Summit 2021, Leon Anavi, Surfing on an Interactive Kiosk Systemd Service for Surf  surf_%.bbappend in meta-my-kiosk: FILESEXTRAPATHS_prepend := "${THISDIR}/files:" SRC_URI += "file://surf.service" inherit systemd do_install_append() { if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then install -d ${D}${systemd_unitdir}/system install -m 644 ${WORKDIR}/surf.service ${D}${systemd_unitdir}/system fi } FILES_${PN} += "${systemd_unitdir}/scripts/" SYSTEMD_SERVICE_${PN} = "surf.service"
  • 15. Yocto Project Summit 2021, Leon Anavi, Surfing on an Interactive Kiosk My Kiosk Image  core-image-kiosk SUMMARY = "Interactive kiosk with X11, openbox and surf" IMAGE_FEATURES += "splash package-management x11-base" LICENSE = "MIT" inherit core-image features_check REQUIRED_DISTRO_FEATURES = "x11" QB_MEM = '${@bb.utils.contains("DISTRO_FEATURES", "opengl", "-m 512", "-m 256", d)}' IMAGE_INSTALL_append = " kernel-modules nano openbox pcmanfm xterm surf xwd "
  • 16. Yocto Project Summit 2021, Leon Anavi, Surfing on an Interactive Kiosk Building an Image  Set machine and enable UART at local.conf: MACHINE = "raspberrypi4" ENABLE_UART="1"  Switch to systemd at local.conf: DISTRO_FEATURES_append = " systemd" VIRTUAL-RUNTIME_init_manager = "systemd" DISTRO_FEATURES_BACKFILL_CONSIDERED = "sysvinit" VIRTUAL-RUNTIME_initscripts = ""  Build the image: bitbake core-image-kiosk
  • 17. Yocto Project Summit 2021, Leon Anavi, Surfing on an Interactive Kiosk Showcase
  • 18. Yocto Project Summit 2021, Leon Anavi, Surfing on an Interactive Kiosk Conclusions  The Yocto Project and OpenEmbedded provide a lot of different options for creating interactive kiosk images  Surf web browser is an alternative of the mainstream web browsers for some very specific use cases  Minimalist configuration with X11, Openbox and surf web browser is good and easy option for implementing an interactive HTML5 kiosk on constrained embedded Linux devices  TODO: software over the air updates, continuous integration, setup tool (google repo/kas/git submodules/etc), templates for local.conf and bblayers, create distro configuration...
  • 19. Yocto Project Summit 2021, Leon Anavi, Surfing on an Interactive Kiosk Thank You! Useful links  https://surf.suckless.org/  http://openbox.org/wiki/Main_Page  http://git.openembedded.org/meta-openembedded  http://git.yoctoproject.org/cgit/cgit.cgi/meta-raspberrypi  http://git.yoctoproject.org/cgit/cgit.cgi/poky/  https://www.yoctoproject.org/docs/current/mega-manual/mega-manual.html  https://archive.fosdem.org/2020/schedule/event/ema_homebridge_with_yocto/