• Stars
    star
    378
  • Rank 113,272 (Top 3 %)
  • Language
    Shell
  • License
    Apache License 2.0
  • Created over 7 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Fullscreen WebKit browser with hardware accelerated CSS, WebGL, and HTML5 video for the RaspberryPi 3.

WPE Webkit for the RaspberryPi

This project provides an easy way of running WPE Webkit for the RaspberryPi. WPEWebkit is a full featured browser that takes advantage of the GPU to provide hardware accelerated CSS, WebGL, and HTML5 video.

Showcase

Table of contents

Getting started

  • Sign up on balena
  • Go through the getting started guide and create a new application
  • Clone this repository to your local workspace
  • Add the balena remote to your local workspace using the useful shortcut in the dashboard UI remoteadd
  • git push balena master
  • See the magic happening, your device is getting updated Over-The-Air!

Configuration

A lot of the configuration of this project is about setting up config.txt. The way you do this on balena is by setting some special fleet configuration variables. If you don't know how to do this, you can find more info here.

First, we need to set the GPU memory to something suitable for hardware accelerated graphics. You can set only one of the following if you know how much RAM your Pi has or you can set all of them and your Pi will autoselect based on its memory. If you don't set any of these, WPE won't work.

Key Value
RESIN_HOST_CONFIG_gpu_mem_256 128
RESIN_HOST_CONFIG_gpu_mem_512 196
RESIN_HOST_CONFIG_gpu_mem_1024 396

Displaying on an HDMI screen

WPE will display to the primary framebuffer (HDMI output) by default. If you don't set the resolution, it will be autodetected on boot up. Depending on what you want to do, you might find the performance at FullHD resolution isn't enough. In that case you can force the HDMI to 720p by adding the following fleet configuration variables:

Key Value
RESIN_HOST_CONFIG_hdmi_group 1
RESIN_HOST_CONFIG_hdmi_mode 4

Displaying on a PiTFT 2.8"

PiTFT picture

Displaying to a secondary framebuffer is accomplished by rendering on the primary and continuously copying the resulting image to the secondary. The reason for this is that the Pi can only render hardware accelerated graphics to the primary framebuffer. A side effect of this is that you can't display different content or have different resolutions between the HDMI and your PiTFT screen.

Since the rendering will happen to the primary framebuffer, we need to force the HDMI output to be 320x240, our native resolution. You can do this with the following variables. If don't set those, the Pi will render on a higher resolution and then scale down the image to fit the Pi screen.

Key Value
RESIN_HOST_CONFIG_hdmi_force_hotplug 1
RESIN_HOST_CONFIG_hdmi_group 2
RESIN_HOST_CONFIG_hdmi_mode 87
RESIN_HOST_CONFIG_hdmi_cvt 320 240 60 1 0 0 0

Capacitive touchscreen

Warning: The PiTFT based on the ft6x06_ts kernel module is not currently supported out of the box on balena. If your screen says "FT6206" at the back, it's probably one of those.

Key Value
RESIN_HOST_CONFIG_dtoverlay pitft28-capacitive,rotate=90,speed=62000000,fps=60

Resistive touchscreen

Key Value
RESIN_HOST_CONFIG_dtoverlay pitft28-resistive,rotate=90,speed=62000000,fps=60

Controlling backlight brightness

If you have a Raspberry touchscreen, you can control the backlight brightness by setting the environment variable RPI_BACKLIGHT to a value in the range 0-255. The default value is 255 (maximum brightness).

Sound configuration

WPE will normally try to select an appropriate audio sink to output to. However, if you want to force a specific output to be used you can set the WPE_GSTREAMER_AUDIO_SINK environment variable according to the following table:

Value Notes
autoaudiosink Automatically select output (default)
omxhdmiaudiosink Outputs sound over HDMI
omxanalogaudiosink Outputs to the 3.5mm jack
alsasink Outputs using alsa (EXPERIMENTAL)

Controlling content

Loading a URL

To configure the URL displayed by webkit, set the WPE_URL environment variable. The default value is Youtube TV

Offline content

If you want your device to display content even without internet, you can add your content in the docker image and point WPE to them. Append a similar Dockerfile fragment to your project:

COPY public_html /var/lib/public_html

ENV WPE_URL="file:///var/lib/public_html/index.html"

Changing content at runtime

balena-wpe ships with tohora so which provides a web interface for changing target URLs at runtime on port 8080

Enabling mouse

To enable the mouse cursor you have to set the following environment variable. Keep in mind that there are some known issues with mouse support when the webpage includes iframes.

Key Value
WPE_BCMRPI_CURSOR 1

More Repositories

1

balena-sound

Build a single or multi-room streamer for an existing audio device using a Raspberry Pi! Supports Bluetooth, Airplay and Spotify Connect
TypeScript
2,410
star
2

balena-electronjs

electronJS-based resin application template
JavaScript
346
star
3

boombeastic

A Raspberry Pi based smart connected speaker with support for airplay, spotify, mpd and local playback
JavaScript
216
star
4

browser

A drop-in web browser block
JavaScript
99
star
5

balena-homeassistant

Raspberry Pi + Home Assistant + balenaSense
Dockerfile
79
star
6

awesome-balena

A curated list of helpful balena.io resources.
55
star
7

coral-audio-analysis

Coral Edge TPU project for analyzing noise pollution
CSS
46
star
8

balena-web-ble

A project to showcase a Web BLE app communicating with a balena powered BLE peripheral
HTML
42
star
9

balena-rpi-python-picamera

balena + python + raspberry pi camera module
Python
38
star
10

raspberry-pineapple

Build your own WiFi Pineapple, with Resin.io and a raspberry pi
JavaScript
36
star
11

balena-bridge

Resin.io device to bridging the wifi network to ethernet
Shell
35
star
12

office-lock

Resin based RFID lock system
Python
33
star
13

node-sense-hat

A node module which pulls in individual modules for each sense-hat hardware, for use with the RPI
JavaScript
32
star
14

opendatacam

An implementation of OpenDataCam that is fully containerized and runs on balena + Jetson.
Shell
32
star
15

balena-octoprint

Remotely control your 3d-printer with Octoprint and balena!
Shell
31
star
16

wifi-connect

Easy WiFi setup for Linux devices from your mobile phone or laptop
Shell
30
star
17

balena-wifi-connect-example

Example application to demonstrate balena-wifi-connect
Python
30
star
18

balena-cam-uv4l

a Raspberry Pi based network camera
Shell
30
star
19

meetbot

A Google Meet bot to make meetings frictionless
TypeScript
28
star
20

balenaVirt

Easy virtualization on balenaOS
JavaScript
27
star
21

balena-rpi-nodejs-basic-gpio

This is a basic example of GPIO control on the rasperry pi
JavaScript
26
star
22

balena-prometheus

demo app running prometheus.io monitoring on resin devices
Shell
24
star
23

sdr-spectrum-monitor

Running OpenWebRX on balena to monitor radio spectrum and stream audio.
Python
22
star
24

balena-rpi-nodejs-picamera

JavaScript
21
star
25

edge-node-manager

Resin uC edge-node-manager written in Go
Go
21
star
26

balena-sensehat-example

Example of using the Pi, Sense-HAT, InfluxDB and Grafana
Python
21
star
27

gps-tracker

A simple gps tracker built with balenaFin and a Quectel EC25 modem
JavaScript
21
star
28

text2speech

Shell
21
star
29

balena-kodi

A boilerplate for getting up and running with Kodi on your resin-enabled rpi!
Shell
20
star
30

jetson-sample-new

Jetson samples for CUDA and OpenCV on Nano, TX2, Xavier and Orin
19
star
31

photo-slideshow

A web frame to display photo slideshow of your favorite photo albums
19
star
32

esp8266

edge-node-manager compatible firmware for the ESP8266
C++
19
star
33

balena-openssh

SSH into your resin.io container on you device
Shell
19
star
34

rpi3-bluetooth

Raspberry Pi 3 on-board Bluetooth example
Shell
18
star
35

multicontainer-demo-rpi3

A demo of balena multicontainer on Raspberry Pi3 with PiTFT LCDs
JavaScript
18
star
36

balena-ubnt

Run software to manage your Ubiquiti devices
Shell
17
star
37

resin-safebox

An electronic safe-deposit box with 2FA, using resin.io and Authy.
JavaScript
16
star
38

balena-avahi-dbus

Example project announcing mDNS/Avahi services over dbus on resin.io
Python
16
star
39

balena-arduino-programmer

Create an updating mechanism for an Arduino within the resin.io ecosystem.
Makefile
16
star
40

node-red-contrib-balena

A set of nodes to interact with the balena supervisor from node-red
JavaScript
15
star
41

balena-rpi-gpio-sample-with-python

Python
15
star
42

balena-ir-remote

[WIP] A simple application for controlling your AC with a RaspberryPi ( or a balenaFin, if you wanna go fancy or even cellular :P )
JavaScript
14
star
43

photo-gallery

Display a photo slideshow on a webpage over a web server.
JavaScript
14
star
44

cellular-test

A sample app to debug and validate cellular modems on balena devices
Python
13
star
45

movidius-rpi3-demo

An example project using a tensorflow model and Movidius NCS to do object recognition RPI camera module stream
Python
12
star
46

scratch

Create your own Scratch server using a Raspberry Pi 4 (2GB+) and balena.
Shell
11
star
47

rpisurveillance

RaspberryPi Surveillance
Shell
11
star
48

balena-gitlab-runner

Gitlab Runner as a balena application
Shell
11
star
49

balena-prometheus-grafana

Shell
11
star
50

music-player-device

CoffeeScript
11
star
51

balena-vnc-example

Example project on how to run a GUI application via VNC on balenaCloud
Shell
11
star
52

balena-k3s

Run a Kubernetes cluster on balenaCloud via k3s!
Dockerfile
11
star
53

etcher-headless

etcher-based automatic drive flashing device
JavaScript
11
star
54

sense-snake

A snake game for the raspberry pi and sensehat
JavaScript
11
star
55

balenaos-compose

Basic Docker-Compose example on resinOS with Raspberry Pi 3
Python
11
star
56

express-mongo-sample

A sample project to illustrate running 32bit and 64bit applications running alongside on Raspberry Pi(3B+ or 4)
JavaScript
11
star
57

wifi-connect-ble

A Resin.io template application that allows wifi configuration via BLE service
JavaScript
10
star
58

firebaseDTL

A Firebase and Resin.io powered digital temperature logging system
JavaScript
10
star
59

rpi3-uart

Basic example of using UART0 with raspberry pi 3 on resin.io
JavaScript
10
star
60

balena-samba

Share your USB drive over the network using your IoT device.
Shell
10
star
61

esp32

edge-node-manager compatible firmware for the ESP32
C++
10
star
62

balena-motioneye

A MotionEye server deployed on resin.io
Shell
9
star
63

audio-stock-ticker

A raspberry pi that verbally announces your favourite stocks
JavaScript
9
star
64

balena-travis-test

Deploy to resin.io from GitHub using Travis
9
star
65

sense-hat-base-application

A balena application showing the basics of sense-hat development using javascript
JavaScript
9
star
66

sms2speech_python

send SMS with Twilio and convert them to speech on your Raspberry Pi
Python
9
star
67

balena-logging-sensors

Three part project series that explores datalogging sensors with embedded Linux and Balena's platform.
Shell
9
star
68

balena-mdns-service

An example project to set up a local service and advertise it over Avahi/mDNS.
Python
9
star
69

airpod

AirPlay streaming for your Raspberry Pi
Shell
9
star
70

rpi3-bluetooth-peripheral

Raspberry Pi 3 bluetooth peripheral example, using Bleno
JavaScript
9
star
71

LED-Alerter

Build a remote โ€œLED Alerterโ€ to notify others when you donโ€™t want to be disturbed
JavaScript
9
star
72

balenaos-vagrant

balenaOS support for Vagrant
Ruby
8
star
73

balena-pm2-monitor

Use pm2 (process manager) to run your scripts forever and notify you if your device goes offline.
JavaScript
8
star
74

digitiser

display the number of devices online on resin.io
JavaScript
8
star
75

balena-PaPiRus

PaPiRus HAT working with resin.io
Shell
8
star
76

nmcli-no-network-manager

Running `nmcli` in a container without installing the full NetworkManager suite
Shell
8
star
77

fin-block

The fin block is a balenaBlock that provides flashing utilities, status tagging, sleep control and firmata control functionality of the balenaFin.
JavaScript
8
star
78

ssh-key-insert

Tooling to insert the relevant SSH keys into balena devices' configuration.
Shell
8
star
79

access-point-example

Example project to demonstrate creating an Access Point on a Raspberry Pi 3
Shell
8
star
80

connectivity-test

resinOS connectivity test rig
JavaScript
7
star
81

balena-wifivisor

a supervisor-like set of endpoints that enables wifi management under resin containers using a simple REST interface
JavaScript
7
star
82

jetson-base-images

Dockerfiles for creating new base images. Require files from the SDK Manager.
Dockerfile
7
star
83

balena-calibre-server

Host your e-book library on a balena device
Shell
7
star
84

balena-faasd

faasd Balena app
Dockerfile
7
star
85

simple-ssh-tunnel

Example of setting up a reverse ssh tunnel using resin.io
Shell
7
star
86

balena-prometheus-server

Server side portion of prometheus.io demo - more info on resin.io/blog/prometheusv2
Shell
7
star
87

balena-plex-seedbox

One-click install of everything you need to run Plex and popular seedbox software.
7
star
88

balena-cncjs

An example of running CNC.js on the Balena platform.
TypeScript
7
star
89

ros-kinetic-example

Example of building a Robot OS (ROS) Kinetic image with resin.io
CMake
7
star
90

music-player-web

JavaScript
7
star
91

balena-stageddeploy

[Deprecated, see https://github.com/resin-io-playground/staged-releases ] Helper script for staged roll-out for application updates on resin.io.
Python
7
star
92

balena-rpi-wifiquality

Display wifi connection quality on a Raspberry Pi screen
JavaScript
7
star
93

movidius-rpi3-baseimage

A base image build for the Movidius/Intel Compute stick
6
star
94

fold-for-covid-landing

Landing page for the Fold for Covid project
TypeScript
6
star
95

musync

Play your music in sync!
CoffeeScript
6
star
96

libcamera-apps

Example repo to showcase Raspberry Pi's new libcamera stack on balenaOS
Shell
6
star
97

Hello.Net

Hello .NET in Resin.io
C#
6
star
98

balena-diddyborg

a resin.io application for remote-controlling the piborg diddyborg
JavaScript
6
star
99

balena-monero-node

A monero node deployed on resin.io
Shell
6
star
100

ssh-node

Node.js port for the existing resin-ssh project.
JavaScript
6
star