Building a Custom Perspective Kiosk on Linux Hardware

Sorry, I should probably put more info as to what I have done.

The screen is on the DSI-2 port, res is 1280x800 at 40Hz, so I used "video=DSI-2:1280x800M@40,rotate270". This didn't work for me either.

In the config.txt file I have also tried lcd_rotate=3, but also didn't work :frowning:

Everything on my display is the correct orientation (boot splash screen, terminals, desktop etc.) except the kiosk screen. I think it is more to do with the dtoverlay driver that Edatec is using for the screen as they have a custom interface board between the pi and LCD.

Maybe have a look at this. If your terminal rotates, the cmdline works, if Ubuntu frame does not, you need to use orientation in wayland

3 Likes

Not sure if anyone will ever have the same issue, but I followed what David suggested and was able to use this page to help. Thanks heaps :heart:

1 Like

Thought I would drop a link here to my tutorial regarding my recent experiments with a Chromium-based kiosk for Raspberry Pi.

How To: Perspective Kiosk for Rasberry Pi - Ignition - Inductive Automation Forum

2 Likes

I feel like it is so easy now to get a great quality kiosk running on very little hardware these days.
IT departments have been very happy when there are no M$ based machines on the floor and also nothing that has poor implementations of on screen keyboards.
I definitely appreciate the effort you went to on the benchmarking, it is pretty thorough.
With the Webkit/Chromium, there are a few drawbacks with running just Chromium, one of which is lack of H.264 and similar codecs. Also somewhere I was seeing people with rendering issues on some Perspective pages.

3 Likes

This thread really helped me out at my plant, so I wanted to contribute something too. We use Standard Ignition (no Edge gateways yet), and we wanted a way of displaying a single Ignition Perspective application on a touch screen HMI and have it do nothing else. We bought some Onlogic and Superlogics industrial iPCs and paired them with some Beelink HMIs. Then we loaded Pop! OS 22.04 onto them because it had the best on-screen keyboard support out of all the linux distros we tried, but we still ran into issues with the osk often freezing when using the perspectiveworkstation.desktop app. Also ran into headaches every time we upgraded the Ignition version, which required downloading the new version of the Perspective Workstation each time onto all HMIs. So, I followed David’s script above to run a simple firefox kiosk pointing to a webpage url and it solved all those issues.

I took it a step further and created an autoinstall.yaml file for this Ubuntu Server setup. (I’ve attached the plain text here since uploading yaml was not allowed, but the text file autoinstall.txt needs to be converted to an autoinstall.yaml file). I used this reference: Autoinstall configuration reference manual. This was the only way I could think of other than creating an entire custom ISO file to have a customizable “Perspective Kiosk OS”. Below are instructions for how to use this to install the OS on a blank 64-bit PC (I didn’t test on Raspberry Pi).

autoinstall.txt (7.3 KB)

Create USB Installation Media:

  1. Download Ubuntu Server 24.04.4 from Download | Ubuntu and Rufus - bootable USB drives for Windows. (I tried using Linux’s dd command, Startup Disk Creator, and Balena-Etcher, but all 3 did not leave space remaining on the USB install media to add the autoinstall.yaml file).
  2. Open Rufus and flash the ubuntu server amd64 ISO onto a USB flash drive (default options okay).
  3. Edit the autoinstall.txt file and save changes to a new autoinstall.yaml file (use VS Code or other text editor):
    1. Add the URL for your desired Ignition Perspective Application. (look for “demo.inductiveautomation” and replace it with your URL)
    2. If using WiFi for the install, the WiFi device will not show on the interactive network screen until the USB finishes installing the WiFi drivers and the network screen is refreshed. In this case it might be helpful to enable a second interactive screen like “storage”, so you can use it to go back and refresh the network screen.
    3. Edit any of the options in there for autoinstall as necessary. Maybe add font packages, change the encrypted password, or choose to have the root user (identity) be configured interactively during install.
  4. Drop the autoinstall.yaml file into the root directory of the USB flash drive. (you should see the folders boot, casper, dists, etc.)
  5. Unmount the USB flash drive and it’s ready to install the “Kiosk OS” onto a new PC.

Install “Kiosk OS” onto a new PC:

  1. Plug in Keyboard, USB Flash Drive, and Network Cable with internet or Android Device with WiFi USB Tethering. If using Android device, get the network settings ready to toggle on USB Tethering.
  2. Power on the PC and enter BIOS or boot options to boot from the USB Flash Drive. Select “Try or Install Ubuntu Server” and press enter.
  3. During initial boot, toggle Android USB Tethering to Enabled, if applicable.
  4. After a few moments there will be a prompt for the network configuration. Select the ethernet port which will connect to your Ignition gateway, then configure it.
    1. Subnet should look like 192.168.0.0/24 using CIDR notation (instead of 255.255.255.0)
    2. Address should be the address of the PC, e.g. 192.168.0.10
    3. Gateway should be the address of the gateway, e.g. 192.168.0.1
    4. Configure DNS 1 and DNS 2 if applicable
    5. Make sure internet is connected and select “Done” at the bottom when ready. (Do not continue without network).
  5. A few moments later, the install will ask for permission to perform destructive action (format the partition). Select “Continue”.
  6. Wait 10-20 minutes for everything to install (depending on internet speed). When complete, the orange banner at the top should say “Installation Successful”.
  7. Select “Reboot Now” at the bottom. It will probably ask you to remove the installation media (USB flash drive) and press enter.
  8. Upon rebooting, wait another 10-20 minutes and everything should be installed. Don’t login and don’t disable USB Tethering during this time. Just let it do its thing and eventually your Ignition application should appear on the screen.
  9. Remove keyboard and Android device once you see your ignition application loaded.

Hope this works for someone else! - Austin

9 Likes

This actually looks great, I have had it on my list for quite some time to work on some more automated deployment options for this. I will have to give it a shot and see how your work goes. For reference, I have probably deployed about 20 of these type of kiosk now since starting this thread.

1 Like

Nice work! I did something similar for a client of mine. I had the autoinstall set to autoconfigure a majority of the OS, with the network settings as the only user-defined section. After the install completes and PC reboots, there is an interactive deployment script which runs to finish configuration of the box…complete with hostname (re)assignment, a login prompt with some ascii-art, Ignition & 3rd party module installs, initial gateway config restored, etc… Still using Firefox w/ ubuntu-frame & ubuntu-frame-osk…

I believe…around 150 Edge gateways deployed in the last couple of years. :+1: :+1:

5 Likes

Not as cool as the way you described yours Chris, but I made another autoinstall file to automatically load up the gateway homepage for Ignition Edge 8.3.4 after install.

The scripts in this file are the same as the ones you and David provided above, and the installation steps are the same as my previous post.

Some other notes:

  • The download URL and filename for Ignition Edge is specific and must be changed if you’re looking for a different version. I have the install location set to /usr/local/bin/ignition/
  • I enabled the interactive identity screen and allowed ssh in the autoinstall file, since this version of ubuntu server running Ignition might require more configuration. If the hostname is set to “ubuntu”, the ignition gateway name will be “Ignition-ubuntu” by default.
  • Had to add the wget, curl, unzip, libssl-dev, and fontconfig packages. (fontconfig required for Ignition on ubuntu and libssl-dev for Siemens Enhanced Driver on 8.3.3+, per Ignition install docs)
  • No auto-configuration scripts for the gateway are provided, but the autoinstall will give you a blank Ignition Edge gateway that you can configure manually or restore gateway or project backups to after the installation is complete.

autoinstall.txt (9.1 KB)

2 Likes

Might want to add the below to the autoinstall, it will enable the Enhanced Siemens Driver to work out of the box.

3 Likes

Hey David, thanks for pointing that out. I added the libssl-dev package to the list and I believe that ubuntu 24.04.4 comes with glibc version 2.39, so I think the new Siemens driver should work now with the new file I just uploaded.

I don’t currently have any Siemens PLCs or Edge panels I could test this on (I only know that it successfully completes installation on my PC partition), so I’ll rely on you to let me know if it needs further revision.

I admit that I started with a lot of late-commands in my ISO image, but quickly hit limitations that forced me to u-turn.

  • Automation technicians were tasked with deploying these gateways, and IS permitted USB thumb drive access to only select individuals. Deploying an updated ISO to remote techs became…difficult. Enter requirement: Updates to ISO must be minimal.
  • In this architecture, many items are configured based on user input, including the hostname (containing a facility ID), drivers (touchscreen/hardware selected, etc.), Ignition roles (based on facility type), etc. Enter requirements: Deployment must be interactive. Deployment updates (new drivers, Ignition versions, etc.) should be rapid deployable.

I now have an image which installs the (now outdated) OS (which is updated to latest during post-install deployment), and adds only a login prompt containing the command for techs to copy-paste (via ssh) and execute. That command reaches out to the appropriate full Ignition gateway’s WebDev API, where the interactive bash script is downloaded and executed, and also serves up additional files (drivers, Ignition installer, 3rd party modules, preconfigured gwbk, etc.) based on selection. I think it’s a combined >1000 lines (well commented). I haven’t updated in a while, but 8.3 upgrades are coming soon…excited for the opportunity to enhance!

1 Like