Compare commits

..

8 Commits
1.0.13 ... main

Author SHA1 Message Date
8ac881ffcf Add apt cleanup to reduce image size 2025-07-22 17:27:24 +01:00
b7e48f776e Display git tag on web interface 2025-07-22 17:25:47 +01:00
8e8f51f2d8 no need for x86 2025-07-21 15:11:39 +01:00
751a3fed26 rename to N-AnotterKiosk 2025-07-21 15:04:54 +01:00
8b25aa87db hyperion 2025-07-21 14:12:03 +01:00
e89639703d run hyperion as pi not root 2025-07-21 12:02:06 +01:00
b04d59338d allow rw filesystem 2025-07-19 13:38:38 +01:00
4ba1d6e916 Revert to 1.0.8 and add Hyperion 2025-07-19 09:39:17 +01:00
20 changed files with 53 additions and 68 deletions

View File

@ -24,12 +24,9 @@ jobs:
sudo apt update -qq
sudo apt install -yqq libguestfs-tools qemu-utils qemu-system-arm qemu-efi-aarch64 qemu-block-extra qemu-user-static binfmt-support rsync sudo wget xz-utils pigz mount dosfstools libarchive-tools
- name: Make build script executable
run: chmod +x build.sh
- name: Build firmware
run: |
sudo ./build.sh
sudo ./build_raspberry_pi.sh
- name: Release build artifacts
uses: softprops/action-gh-release@v1

View File

@ -3,7 +3,6 @@ N-AnotterKiosk (Not-AnotterKiosk)
### I have hacked this about alot from the main branch, mainly Raspberry Pi changes
- Removed x86 support
- Added scheduled screen on/off
- Added scheduled chrome page refresh
- Rpi3 Overclock settings
@ -18,7 +17,7 @@ This project aims to solve a lot of those (at least for the author), it might al
#### Key features
- [Images built via CI](https://github.com/Manawyrm/AnotterKiosk/blob/main/.github/workflows/main.yml)
- [Images built via CI](https://github.com/Manawyrm/N-AnotterKiosk/blob/main/.github/workflows/main.yml)
- WiFi connection support
- Raspberry Pi (Arm64) compatibility
- [USB flash drive, USB SSD, etc. compatible](#how-to-use)
@ -32,6 +31,7 @@ This project aims to solve a lot of those (at least for the author), it might al
- VNC support
- SSH tunneling support (for remote-access without port-forwarding, etc.)
- Basic API for Rpi Actions
- Hyperion-NG support for ambilight
#### Planned features:
@ -47,13 +47,13 @@ This project aims to solve a lot of those (at least for the author), it might al
### How-To Use
Like any other Raspberry Pi image: download the current .img file from the [Releases](https://github.com/Manawyrm/AnotterKiosk/releases) page and flash it to a storage device of your choice.
Like any other Raspberry Pi image: download the current .img file from the [Releases](https://github.com/Manawyrm/N-AnotterKiosk/releases) page and flash it to a storage device of your choice.
SD cards, USB flash drives, USB SSDs, SATA SSDs, NVMe SSDs are all good options.
You can use a tool like the [Raspberry Pi Imager](https://www.raspberrypi.com/software/), [BalenaEtcher](https://etcher.balena.io/), [Win32DiskImager](https://sourceforge.net/projects/win32diskimager/) or plain "dd" on \*nix-like systems.
When using the latter two, make sure to extract the .gz compression first (using a tool like 7zip).
After flashing, re-plug the storage device and open the FAT32 partition.
Open the [`kioskbrowser.ini`](https://github.com/Manawyrm/AnotterKiosk/blob/main/kiosk_skeleton/boot/kioskbrowser.ini) file in a text editor and change everything to your needs.
Open the [`kioskbrowser.ini`](https://github.com/Manawyrm/N-AnotterKiosk/blob/main/kiosk_skeleton/boot/kioskbrowser.ini) file in a text editor and change everything to your needs.
More complex WiFi setups (like WPA2-Enterprise) can be configured by creating a wpa_supplicant.conf.
Adding your own SSH keys can be done by creating a authorized_keys file.
If you want to use the autossh tunneling features, copy an SSH private key as either "id_rsa" or "id_ed25519".
@ -122,6 +122,11 @@ Starts the screen-refresh.service to refresh the screen.
`GET /script.php?action=reboot&key=YOUR_API_KEY`
Reboots the Raspberry Pi.
### Hyperion-NG
The kiosk now supports Hyperion-NG for ambilight control.
Manage Hyperion via its web interface, which is available on port 8090.
### Inspiration / Other Kiosk-OSes:
- https://github.com/jareware/chilipie-kiosk/

10
build.sh → build_raspberry_pi.sh Normal file → Executable file
View File

@ -42,8 +42,9 @@ sudo losetup -P /dev/loop0 raspikiosk.img
sudo mount /dev/loop0p2 "${BUILD_DIR}"
sudo mount /dev/loop0p1 "${BUILD_DIR}/boot"
# Copy the skeleton files
sudo rsync -a "${SCRIPT_DIR}/kiosk_skeleton/." "${BUILD_DIR}"
# Copy the (raspberry pi-specific) skeleton files
sudo rsync -a "${SCRIPT_DIR}/raspberry_pi_skeleton/." "${BUILD_DIR}"
sudo rsync -a "${SCRIPT_DIR}/kiosk_skeleton/." "${BUILD_DIR}/kiosk_skeleton"
# Make fstab read-only
sed -i 's/vfat defaults/vfat ro,defaults/g' "${BUILD_DIR}/etc/fstab"
@ -62,10 +63,9 @@ sudo mount devpts -t devtmpfs -o mode=0755,nosuid "${BUILD_DIR}/dev/"
sudo chroot "${BUILD_DIR}" /raspberry_pi_bullseye.sh
# and then actually install everything.
sudo chroot "${BUILD_DIR}" /build.sh
sudo chroot "${BUILD_DIR}" /kiosk_skeleton/build.sh
# remove the build scripts
sudo rm "${BUILD_DIR}/build.sh"
sudo rm -r "${BUILD_DIR}/kiosk_skeleton"
sudo rm "${BUILD_DIR}/raspberry_pi_bullseye.sh"
cp "${BUILD_DIR}/version-info" version-info

View File

@ -15,7 +15,7 @@ reboot_time = 04:00
; set screen rotation to be used (normal, left, right, inverted)
;rotate_screen = "normal"
; configure screen to power on/off as specific time of day (time format in 24 hours)
screen_off_time=22:30
;screen_off_time=23:00
;screen_on_time=07:00
; configure chrome to refresh the page every x minutes
;refresh_screen_every_x_min=15

View File

@ -81,7 +81,20 @@ systemctl enable ssh
systemctl enable kiosk-sechedule-screen.service
systemctl enable schedule-reboot.service
systemctl enable setup-refresh-timer.service
systemctl enable hyperiond
# Install Hyperion
curl -sSL https://apt.hyperion-project.org/hyperion.pub.key | gpg --dearmor -o /usr/share/keyrings/hyperion.pub.gpg
echo "deb [signed-by=/usr/share/keyrings/hyperion.pub.gpg] https://apt.hyperion-project.org/ $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/hyperion.list
apt update
apt install -y hyperion
# Run Hyperion as the 'pi' user
mkdir -p /etc/systemd/system/hyperiond.service.d
echo -e "[Service]\nUser=pi\nGroup=pi" > /etc/systemd/system/hyperiond.service.d/override.conf
chown -R pi:pi /var/lib/hyperion || true
chown -R pi:pi /etc/hyperion
usermod -a -G video pi
# generate a version info/build info file
echo -n "Chromium version: " >> /version-info
@ -90,3 +103,7 @@ dpkg --list | grep "ii chromium " >> /version-info
echo -n "Linux kernel version: " >> /version-info
ls /lib/modules/ | sort -r | head -n 1 >> /version-info
echo >> /version-info
# Clean up apt cache and remove unused packages
apt-get clean
apt-get autoremove -y

View File

@ -1,20 +0,0 @@
{
"device" :
{
"name" : "MyPi",
"type" : "ws281x",
"leds" : 50,
"colorOrder" : "grb",
"gpio" : 18,
"freq" : 800000,
"dmanum" : 5
},
"grabber-framebuffer" :
{
"width" : 64,
"height" : 64,
"frequency_Hz" : 10.0,
"priority" : 890
}
}

View File

@ -1,2 +1,2 @@
AnotterKiosk \n \l
N-AnotterKiosk \n \l

View File

@ -1,4 +1,3 @@
Welcome to AnotterKiosk!
Run "mount -o remount,rw /" to make the root filesystem writeable.
Welcome to N-AnotterKiosk!
FAT32 / config partition is located in /boot.

View File

@ -1,16 +0,0 @@
[Unit]
Description=Hyperion ambient light systemd service
After=network.target
[Service]
ExecStart=/usr/bin/hyperiond
WorkingDirectory=/usr/share/hyperion/bin
User=root
Group=root
TimeoutStopSec=5
KillMode=mixed
Restart=on-failure
RestartSec=2
[Install]
WantedBy=multi-user.target

View File

@ -1,4 +1,4 @@
# /etc/systemd/system/kiosk-schedule-screen.service
# /etc/systemd/system/kiosk-sechedule-screen.service
[Unit]
Description=Schedule Screen On/Off Timers
After=multi-user.target

View File

@ -6,7 +6,8 @@ then
if [ -f "/boot/id_rsa" ]; then
cp /boot/id_rsa /root/.ssh/id_rsa
AUTOSSH_KEYPATH="-i /root/.ssh/id_rsa"
elif [ -f "/boot/id_ed25519" ]; then
fi
if [ -f "/boot/id_ed25519" ]; then
cp /boot/id_ed25519 /root/.ssh/id_ed25519
AUTOSSH_KEYPATH="-i /root/.ssh/id_ed25519"
fi

View File

@ -16,7 +16,14 @@ remount_root() {
get_ini_value() {
get-ini "$INI_FILE" "$1" "$2"
local section=$1 key=$2
awk -F '=' -v sec="$section" -v k="$key" '
$0 ~ /^\[.*\]/ { in_section = ($0 == "[" sec "]") }
in_section && $1 ~ "^"k"$" {
gsub(/^[ \t]+|[ \t]+$/, "", $2)
print $2
exit
}' "$INI_FILE"
}
create_recurring_timer() {

View File

@ -1,7 +1,9 @@
#!/bin/bash
INI_FILE="/boot/kioskbrowser.ini"
REFRESH_INTERVAL=$(get-ini "$INI_FILE" screen refresh_screen_every_x_min)
REFRESH_INTERVAL=$(awk -F '=' '/^\[screen\]/ { in_screen=1; next }
in_screen && /^\[/ { in_screen=0 }
in_screen && $1 ~ /refresh_screen_every_x_min/ { gsub(/ /, "", $2); print $2 }' "$INI_FILE")
# Function to safely remount root FS
remount_root() {

View File

@ -1,4 +1,5 @@
<h1>Kioskbrowser</h1>
<h2>Version: <?php echo exec('git describe --tags --abbrev=0'); ?></h2>
CPU temperature: <br>
<?php passthru("sudo vcgencmd measure_temp"); ?>

View File

@ -1 +1 @@
console=serial0,115200 console=tty1 root=PARTUUID=544c6228-02 rootfstype=ext4 ro rootwait logo.nologo consoleblank=0 loglevel=0 quiet
console=serial0,115200 console=tty1 root=PARTUUID=544c6228-02 rootfstype=ext4 rw rootwait logo.nologo consoleblank=0 loglevel=0 quiet

View File

@ -61,4 +61,3 @@ arm_boost=1
[all]
avoid_warnings=1
dtparam=spi=on

View File

@ -12,10 +12,3 @@ APT_LISTCHANGES_FRONTEND=none DEBIAN_FRONTEND=noninteractive apt -o Dpkg::Option
# be less tested as the currently shipping kernel in the Raspberry Pi images.
apt install -y rpi-update
SKIP_CHECK_PARTITION=1 SKIP_WARNING=1 rpi-update
# Install Hyperion.ng
wget -qO- https://apt.hyperion-project.org/hyperion.pub | gpg --dearmor -o /usr/share/keyrings/hyperion.pub
echo "deb [signed-by=/usr/share/keyrings/hyperion.pub] https://apt.hyperion-project.org/ bookworm main" > /etc/apt/sources.list.d/hyperion.list
apt update
apt install -y hyperion
systemctl enable hyperion.service