WebReflection Ltd
webreflection / archibold.io Goto Github PK
View Code? Open in Web Editor NEWarchibold.io
License: ISC License
archibold.io
License: ISC License
First of all, thanks for bringing BENJA to the world!
While installing BENJA, I was stuck in a Wi-Fi setup loop after each reboot. If network is not available, the installer tries to request a web page with curl, fails, assumes WiFi was not set up and forces that loop.
After spending some time on figuring out the problem, I finally found an underlying issue described on StackOverflow. It seems to be a combination of Raspberry Pi 3B + ArchLinux ARM + NetworkManager (but may affect other boards as well).
The underlying problem manifests itself like this: even if Raspberry Pi is connected to WiFi and can ping IP addresses (e.g. ping 8.8.8.8
works fine), DNS won't work (ping google.com
will fail with "Name or service not known" error).
The solution described on StackOverflow worked for me:
# Press Ctrl+C multiple times to get out of BENJA setup / WiFi setup and prevent powerdown.
$ su
Password: root
$ systemctl stop systemd-resolved
$ systemctl mask systemd-resolved
$ reboot now
After that, network should start working, and the installation will continue.
What I suggest in this issue (besides providing the solution that worked for me):
su
command and root
password.systemctl mask systemd-resolved
is something that can be added unconditionally or if daemons can be reconfigured somehow to work properly on all boards?f***ing captchas (really starting to hate them) wont let me do anything. Please provide a way similar to the guys at nvm
who provide a AIO script to get things done.
hi, i've tried to configure an sd card for a raspberry pi 3.
But after a few tries on different OSs, i've thought: "somethings wrong here".
So i've investigated a bit and found out, that http://os.archlinuxarm.org/os/ArchLinuxARM-rpi-3-latest.tar.gz
seems to be no longer existing. It seems to be replaced with http://os.archlinuxarm.org/os/ArchLinuxARM-rpi-aarch64-latest.tar.gz
.
Hello,
I've tried booting the Arch installer on an Intel Compute Stick (STCK1A32WFCR) with a normal dd-created USB flash installation medium, but having no luck. The boot menu does not list the device.
I've had to connect the USB flash drive through a USB hub in order to also connect a keyboard so that I'll even get to the boot menu.
As your web page says someone has been able to do this using Archibold, I'm hoping you have some pointers on how to create the installation medium.
Hey Andrea, I'm sorry that I have to bug you with this but I've been trying to get your Minimalistic 64 bit Web Kiosk for RPi 3 to work with the official Raspberry Pi Touch Display for weeks now and I'm completely out of ideas. While everything is working on my HDMI monitor (the demo page shows up), when using the touch screen I'm experiencing some very weird behavior:
The screen is definitely not broken since everything before that including the colored rectangle works perfectly. It also worked back when I was using Benja for my project.
Is the touch screen even supposed to work after running your kiosk install script or is there something I have to configure/install? How did you get the screen to work by default in Benja?
Hello,
I have this package installed on arch linux with a raspberry pi 4. I discovered the touchscreen input doesn't support hold ad drag on the COG browser. I tried the [libinput] settings in weston.ini and they didnt seem to do anythning.
I run:
libinput list-devices
it gets the device name 'raspberrypi_ts' but all the options like Tap-and-drag or Tap-to-click say n/a
Looks like the touchscreen is being identified as a mouse? or like a laptop touchpad? not sure.
As I mentioned to @WebReflection when I started using BENJA I have had no success in connecting to any of my WiFi networks using the wifi-setup
script.
I noticed that a request for password comes up but it disappears after a bit and if you make it in time to type it in you get authentication failure
This evening I had some extra time to play with configuring WiFi manually and it worked.
I began looking at the script and going through what it does.
At line 8 we have root | su -c "wifi-menu"
so I went straight to executing "wifi-menu" with sudo
[~]$ sudo wifi-menu
this managed to create a profile for my network which I was later able to load using netctl
[~]$ netctl enable my-profile-name
so I guess the issue is in how these two bits of code deal with authenticating root
, namely these two blocks:
...
sleep 3
echo root | su -c "wifi-menu"
echo "
trying to configure the wifi automatically
"
...
...
echo root | su -c "netctl enable ${WLAN:2}"
echo "wifi ${WLAN:2} enabled"
echo ""
...
any chance you can find a fix?
I'm not that versed in bash, although I have to admit I am becoming more and more familiar with it thanks to this project :D
thank you
ubi
Environment:
Steps:
kiosk dependencies
with command bash <(curl -s archibold.io/kiosk/dependencies)
pacman-key --init
and pacman-key --populate archlinuxarm
bash <(curl -s archibold.io/kiosk/pi3)
Actual result:
/dev/fd/63: line 14: pacman-optimize: command not found
Here is the console output:
Optional dependencies for geoip
geoip-database-extra: city/ASN databases (not needed for country lookups)
:: Running post-transaction hooks...
( 1/16) Warn about old perl modules
( 2/16) Updating fontconfig cache...
( 3/16) Probing GDK-Pixbuf loader modules...
( 4/16) Updating GIO module cache...
( 5/16) Compiling GSettings XML schema files...
( 6/16) Probing GTK3 input method modules...
( 7/16) Updating icon theme caches...
( 8/16) Reloading system manager configuration...
( 9/16) Updating udev hardware database...
(10/16) Creating system user accounts...
(11/16) Creating temporary files...
(12/16) Reloading device manager configuration...
(13/16) Arming ConditionNeedsUpdate...
(14/16) Updating the info directory file...
(15/16) Updating the desktop file MIME type cache...
(16/16) Updating the MIME type database...
/dev/fd/63: line 14: pacman-optimize: command not found
warning: uboot-tools-2018.03-1 is up to date -- skipping
there is nothing to do
Image Name: RPi3 VC4
Created: Wed May 30 13:47:19 2018
Image Type: PowerPC Linux Script (uncompressed)
Data Size: 722 Bytes = 0.71 KiB = 0.00 MiB
Load Address: 00000000
Entry Point: 00000000
Contents:
Image 0: 714 Bytes = 0.70 KiB = 0.00 MiB
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 2209 100 2209 0 0 7412 0 --:--:-- --:--:-- --:--:-- 7437
Connection to 192.168.0.216 closed by remote host.
Expected:
pacman-optimize
is run successfully.
dosfstools
parted
were missing and failing silently and breaking the card prep
Hi,
I created a simple index.html with just a video element, as I could not seem to make videos play.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
</head>
<body>
<video autoplay muted controls src="https://path/to/mp4/file.mp4"></video>
</body>
</html>
I was able to see the player controls by right clicking on it, the video player is playing something, I believe it is playing the video but no video is shown or sound comes out.
in the terminal the only error I get is:
$> AL lib: (EE) ALCplaybackAlsa_open: Could not open playback device 'default': Invalid argument
as I can see this is sound drivers, thus not thinking this is a problem.
I can't seem to figure out a video log.
This is the Xorg log file might help on anything:
192.168.70.�X�Z92.168.70.[root@alarm log]# tail Xorg.1.log
[ 61927.499] (II) No input driver specified, ignoring this device.
[ 61927.499] (II) This device may have been added with another device file.
[ 61927.499] (II) config/udev: Adding drm device (/dev/dri/card0)
[ 61927.500] (II) xfree86: Adding drm device (/dev/dri/card0)
[ 61927.500] (EE) /dev/dri/card0: failed to set DRM interface version 1.4: Permission denied
[ 61927.638] (II) event3 - RC for vc4: device removed
[ 61927.700] (II) event0 - SIGMACHIP Usb Mouse: device removed
[ 61927.744] (II) UnloadModule: "libinput"
[ 61927.745] (II) UnloadModule: "libinput"
[ 61927.861] (II) Server terminated successfully (0). Closing log file.
At first launch I could not get to the automatic setup.
The bootstrap
process always failed to retrieve OK
and went into wifi-setup
again.
I found out that resolvconf
has an issue reading from resolvconf.conf
stating that static
is an unknown command.
I repeated the provisioning process from scratch but got the same result.
The issue seems to be DNS related, because I could ping 8.8.8.8
but not domain names, which made it fail here
if [ "$(curl -Ls http://archibold.io/OK)" != "OK" ]; then
./wifi-setup
fi
I eventually plugged in an Ethernet cable and relaunched bootstrap
.
It is now progressing :)
@WebReflection
I have been looking at how to implement glesv2 in order to run WEBGL accelerated content and I have to say there's sooooooo much to learn about how Linux and Xorg manage screen output that I feel that learning tingle :D
Anyway... I have replaced cairo
with cairo-gles2-armv7l
(https://aur.archlinux.org/packages/cairo-glesv2-armv7l/) and it installs replacing cairo
installed by BENJA's setup, but I have incurred into a minor install issue:
makepkg -si
will return ==> ERROR: cairo-glesv2-armv7l is not available for the 'armv7h' architecture.
I've looked it up and amongst suggestions there was passing A
to the command so
makepkg -siA
did the trick.
I've shipped my game to the faire in London after testing it extensively, so I'd say it's safe to replace cairo
with cairo-gles2-armv7l
if you feel comfortable.
u.
What License does this software use?
@WebReflection
I still get serialport bindings issues.
I'll upgrade Node and fix it (already been there) but maybe it's something you want to look into :)
> electron . --no-sandbox --disable-frame-rate-limit
App threw an error during load
Error: The module '/home/alarm/node_modules/@serialport/bindings/build/Release/bindings.node'
was compiled against a different Node.js version using
NODE_MODULE_VERSION 72. This version of Node.js requires
NODE_MODULE_VERSION 75. Please try re-compiling or re-installing
the module (for instance, using `npm rebuild` or `npm install`).
at process.func (electron/js2c/asar.js:140:31)
at process.func [as dlopen] (electron/js2c/asar.js:140:31)
at Object.Module._extensions..node (internal/modules/cjs/loader.js:922:18)
at Object.func (electron/js2c/asar.js:140:31)
at Object.func [as .node] (electron/js2c/asar.js:140:31)
at Module.load (internal/modules/cjs/loader.js:735:32)
at Module._load (internal/modules/cjs/loader.js:648:12)
at Module._load (electron/js2c/asar.js:717:26)
at Function.Module._load (electron/js2c/asar.js:717:26)
at Module.require (internal/modules/cjs/loader.js:775:19)
A JavaScript error occurred in the main process
Uncaught Exception:
Error: The module '/home/alarm/node_modules/@serialport/bindings/build/Release/bindings.node'
was compiled against a different Node.js version using
NODE_MODULE_VERSION 72. This version of Node.js requires
NODE_MODULE_VERSION 75. Please try re-compiling or re-installing
the module (for instance, using `npm rebuild` or `npm install`).
at process.func (electron/js2c/asar.js:140:31)
at process.func [as dlopen] (electron/js2c/asar.js:140:31)
at Object.Module._extensions..node (internal/modules/cjs/loader.js:922:18)
at Object.func (electron/js2c/asar.js:140:31)
at Object.func [as .node] (electron/js2c/asar.js:140:31)
at Module.load (internal/modules/cjs/loader.js:735:32)
at Module._load (internal/modules/cjs/loader.js:648:12)
at Module._load (electron/js2c/asar.js:717:26)
at Function.Module._load (electron/js2c/asar.js:717:26)
at Module.require (internal/modules/cjs/loader.js:775:1
Hi Andrea!
I'd try to make a kiosk by your post https://webreflection.medium.com/ive-found-the-time-to-create-a-wpewebkit-based-kiosk-for-raspberry-pi-4-the-3-has-issues-with-3a651f0f320e
After installing wpewebkit
bash <(curl -s https://archibold.io/kiosk/pi/wpe)
and restarting RPi doesn't boot at all
Any idias?
--
Evgeny
is it just manually copied or installed via npm during setup?
I found something to fix while snooping, it's the home path, which should now point to /home/alarm/app/node_modules
.
I guess it works anyway because of globalPaths
this.paths = function paths() {
[
// should be the same as '/home/benja/app/node_modules'
process.cwd() + '/node_modules',
// to be sure it's available via process.cwd()
'/home/benja/app/node_modules'
].concat(
// eventually defined by BenjaOS
(process.env.NODE_PATH || '').split(':').filter(stringValue)
).forEach(
append,
require('module').globalPaths
);
};
Hey I am using your gjs browser script for a application in Kiosk mode. Unfortunately I am unable to add a virtualKeyboard. Do you have a recommendation for best way to implement this feature ?
Thanks a lot
Hi
I want to thank you for the article on freecode camp, and I do have a couple of questions please. 1- You said once you log in to your account issue commands. I am assuming you meant once I boot into the live usb? and 2- If I am doing this from a location that needs me to accept the wifi policy by clicking on a button of a web page, can I still follow your instructions?
lastly I want to say I appologize if I am in the wrong place. I followed the link that was provided on the article.
I have bumped into a weird one (always me) which escalated into madness.
node version 13.6.0
npm version 6.13.4
Essentially I could not install my app (package.json
to follow) because it required node-gyp
to find the right version of python (not 2.x but 3.x) and then complaining about still not being able to do node-gyp rebuild
.
here's an extract of the error from the --verbose
log:
gyp verb find Python checking Python explicitly set from command line or npm configuration
gyp verb find Python - "--python=" or "npm config get python" is "python2"
gyp verb find Python - executing "python2" to get executable path
gyp verb find Python - executable path is "/usr/bin/python2"
gyp verb find Python - executing "/usr/bin/python2" to get version
gyp verb find Python - version is "2.7.17"
gyp ERR! UNCAUGHT EXCEPTION
gyp ERR! stack TypeError: Class constructor Range cannot be invoked without 'new'
gyp ERR! stack at PythonFinder.<anonymous> (/usr/lib/node_modules/node-gyp/lib/find-python.js:229:28)
gyp ERR! stack at PythonFinder.execFileCallback (/usr/lib/node_modules/node-gyp/lib/find-python.js:274:7)
gyp ERR! stack at ChildProcess.exithandler (child_process.js:294:7)
gyp ERR! stack at ChildProcess.emit (events.js:321:20)
gyp ERR! stack at maybeClose (internal/child_process.js:1028:16)
gyp ERR! stack at Socket.<anonymous> (internal/child_process.js:443:11)
gyp ERR! stack at Socket.emit (events.js:321:20)
gyp ERR! stack at Pipe.<anonymous> (net.js:668:12)
gyp ERR! System Linux 4.19.93-1-ARCH
gyp ERR! command "/usr/bin/node" "/usr/lib/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /home/alarm/node_modules/@serialport/bindings
gyp ERR! node -v v13.6.0
gyp ERR! node-gyp -v v6.0.1
gyp ERR! This is a bug in `node-gyp`.
gyp ERR! Try to update node-gyp and file an Issue if it does not help:
gyp ERR! <https://github.com/nodejs/node-gyp/issues>
my package.json is as follows
{
"name": "bett2020",
"version": "1.0.0",
"description": "",
"main": "main.js",
"scripts": {
"install": "electron-rebuild",
"start": "electron .",
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"electron": "^7.1.7",
"serialport": "^8.0.6"
},
"devDependencies": {
"electron-rebuild": "^1.8.8"
}
}
after a long series of searches, readings and the usual cussing I decided to attempt installing Python 3.x and link it as the right Python for npm
to use, and because after instaling 3.8.1 it was automatically linked to be the default Python binary we can refer to it simply as python
when setting the config for npm.
[alarm@alarm ~] pacman -S python3
...
...
[alarm@alarm ~] npm config set python python
after this I kept getting the same issue, but of course the correct version of Python was part of the above error's output: the culprit must be node-gyp
version 6.0.1 at this point... it can't be anything else.
I struggle to accept that I cannot install the latest version of a package on Arch, but I realised that despite me still not understanding the whole npm
way of life, I could simply install the latest node-gyp
by simply
[alarm@alarm ~] npm i -g node-gyp
this installed version 6.1.0 in /home/alarm/.npm-packages/bin/node-gyp
, and I could finally
[alarm@alarm ~] npm config set node-gyp /home/alarm/.npm-packages/bin/node-gyp
after this step my installation worked and I could install all my modules and binaries in the home folders' .npm-packages
and node_modules
.
I confess I still don't get it, but I guess being this my very first Node+Electron project I'm doing better than I would expect.
Hope the above infos help someone running into similar issues.
I think B.E.N.J.A. is a great idea and it can go very far, but some more detailed information is required to get regular Debian/Raspian users into how and why the system is setup this way as well as giving a better run down of what exactly happens when the system is setup and run.
Loving the learning curve so far. I'm joking... it's a learning wall :D
After creating the SD card for a Raspberry Pi 4 and logging into the pi, the setup script runs until it hits a point and loops over this set in the terminal (See output below). I've tried on both a Pi 2 and 4 with multiple sd cards. Seems like an issue with the package libcanberra-gstreamer? Im really interested in this project and want to try it out.
warning: nss-3.72-1 is up to date -- skipping\ warning: libva-vdpau-driver-0.7.4-5 is up to date -- skipping\ warning: libva-mesa-driver-21.2.5-1 is up to date -- skipping\ error: target not found: libcanberra-gstreamer\ warning: c-ares-1.18.1-1 is up to date -- skipping\ warning: libnghttp2-1.46.0-1 is up to date -- skipping\ warning: nss-3.72-1 is up to date -- skipping\ warning: libva-vdpau-driver-0.7.4-5 is up to date -- skipping\ warning: libva-mesa-driver-21.2.5-1 is up to date -- skipping\ error: target not found: libcanberra-gstreamer\ warning: c-ares-1.18.1-1 is up to date -- skipping\ warning: libnghttp2-1.46.0-1 is up to date -- skipping\ warning: nss-3.72-1 is up to date -- skipping\ warning: libva-vdpau-driver-0.7.4-5 is up to date -- skipping\ warning: libva-mesa-driver-21.2.5-1 is up to date -- skipping\ error: target not found: libcanberra-gstreamer\ warning: c-ares-1.18.1-1 is up to date -- skipping\ warning: libnghttp2-1.46.0-1 is up to date -- skipping\ warning: nss-3.72-1 is up to date -- skipping
I keep getting failure to execute bash <(curl -s https://archibold.io/benja/prepare)
/dev/fd/14: line 37: echoWithLogo: command not found
/dev/fd/14: line 39: diskSize: command not found
/dev/fd/14: line 41: [: : integer expression expected
/dev/fd/14: line 55: echomd: command not found
/dev/fd/14: line 56: echomd: command not found
(23) Failed writing body
I have fixed this by going through every bash <()
call and downloading files locally, later replacing that call with source "./filename.dms"
not sure where the issue stands, to be honest, but it must be how commands are setup when remote scripts are executed/included.
would take me longer to investigate than what it took me to download all the scripts and run them locally :)
I am trying to track this one down.
Setup goes well, it gets towards the end where I get an npm error related to serialport
after setup is done I can restart the system and have it run off Ethernet but it will keep flashing the "Welcome to Arch Linux ARM"
Not sure why it keeps reloading that way, but I can ssh
into the system and check things out.
I figure this system runs on ramfs and temporary RAM storage, so how would I go about switching to an updatable system I can work on before rebooting and make sure my changes stick?
I followed the tutorial for the WPE Kiosk and my Raspberry PI 4 is booting to a black screen. After a bit of debugging I noticed that cog was failing to start with the following error.
cog: error while loading shared libraries: libicudata.so.67: cannot open shared object file: No such file or directory
It looks like icu was updated to 68 recently.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.