Hi there,
I took a look at the install.sh
script here: https://apps.industrialshields.com/main/rpi/rpiplc_v4/install.sh to see what it does. From an initial glance, I would say:
insert "dtparam=spi=on" /boot/config.txt
insert "gpio=8=pd" /boot/config.txt
insert "dtoverlay=spi0-1cs,cs0_pin=7" /boot/config.txt
update "dtoverlay=w5500,cs=0,int_pin=6" /boot/config.txt
insert "dtparam=i2c_arm=on" /boot/config.txt
update "dtoverlay=i2c-rtc,ds3231" /boot/config.txt
update "dtoverlay=sc16is752-spi1-rpiplc-v4,xtal=14745600" /boot/config.txt
You can set these by either mounting the sd card with your balena OS image on it outside of the pi, and adding these to the config.txt
in the boot partition. Alternatively, I believe you can set the dtoverlay
and dtparam
using device configuration variables as described here: Advanced boot settings - Balena Documentation
update "enable_uart=1" /boot/config.txt
same here.
insert "i2c-dev" /etc/modules
I think that this shouldn’t be nessaary, as I think that i2c-dev gets loaded by default. I would recommend running your container in privileged mode.
if [ ! -f /etc/network/interfaces.d/eth0_1 ]; then
cat > /etc/network/interfaces.d/eth0_1 << EOT
auto eth0:1
allow-hotplug eth0:1
iface eth0:1 inet static
address 10.10.10.20
netmask 255.255.255.0
EOT
fi
if [ ! -f /etc/network/interfaces.d/eth1_1 ]; then
cat > /etc/network/interfaces.d/eth1_1 << EOT
auto eth1:1
allow-hotplug eth1:1
iface eth1:1 inet static
address 10.10.11.20
netmask 255.255.255.0
EOT
fi
I’m not sure about this - in balenOS ethernet interfaces have always automatically configured when I’ve ever added one to a device - it mght not be necessary
[ ! -d /home/pi/.ssh ] && mkdir /home/pi/.ssh && chown pi:pi /home/pi/.ssh
[ ! -f /home/pi/.ssh/authorized_keys ] && touch /home/pi/.ssh/authorized_keys && chown pi:pi /home/pi/.ssh/authorized_keys && chmod 600 /home/pi/.ssh/authorized_keys
update "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDCmUlYcl2AIROXD6US8s6D+IFU/Mau3TLuoPIhv5t6V0O+u0zoDEvAurC2xP1xf0mLabaIkFxGgixeSvaGrIqy1oPP30ly8f+zMKe0P9k41D+Lq8ZR9ohdTivlZm5MfW4l6xV6jojWPZNafMn+WW7trfRP/XRxKzcz2mjU9GMLHQmxHqBCsqlnUYkIH0Hq+3xwj9U/IJqYiQD5cm9mtXNLhwK7fYS81GPJhE9bNrJ7B/gmvVw0/3JMCK08DcbUOfHoCvJVbYCdZOM3xPIBtnmtLVD9YWn49yXXDg7Ndipq+tYIpg78HLJkhl31wvXiuKZKne/+sCtWArWZkrLdtLhn pi@raspberrypi" /home/pi/.ssh/authorized_keys
systemctl enable ssh
Not sure about this either - it looks like its trying to allow for an ssh connection to the pi - shouldn’t be needed as the balenaOS host OS already has ssh configured, so you can access the pi over ssh using that.
RPISHUTDOWN_STATUS=0
systemctl status rpishutdown
[ $? -eq 0 ] && RPISHUTDOWN_STATUS=1 && systemctl stop rpishutdown
curl -L https://apps.industrialshields.com/main/rpi/ups/rpishutdown.service -o /lib/systemd/system/rpishutdown.service
curl -L https://apps.industrialshields.com/main/rpi/ups/rpishutdown -o /usr/local/bin/rpishutdown
chmod ugo+x /usr/local/bin/rpishutdown
if [ ${RPISHUTDOWN_STATUS} -eq 1 ]; then
systemctl daemon-reload && systemctl start rpishutdown
fi
systemctl enable rpishutdown.service
HWCONFIG_STATUS=0
systemctl status hw-config
[ $? -eq 0 ] && HWCONFIG_STATUS=1 && systemctl stop hw-config
curl -L https://apps.industrialshields.com/main/rpi/rpiplc_v4/hw-config.service -o /lib/systemd/system/hw-config.service
curl -L https://apps.industrialshields.com/main/rpi/rpiplc_v4/hw-config -o /usr/local/bin/hw-config
chmod ugo+x /usr/local/bin/hw-config
if [ ${HWCONFIG_STATUS} -eq 1 ]; then
systemctl daemon-reload && systemctl start hw-config
fi
systemctl enable hw-config.service
Not sure about this or what these services do, sorry!
mkdir -p /usr/local/share/industrialshields/overlays/
curl -L https://apps.industrialshields.com/main/rpi/rpiplc_v4/sc16is752-spi1-rpiplc-v4.dtbo -o /boot/overlays/sc16is752-spi1-rpiplc-v4.dtbo
Best bet here might be to download this on your laptop/pc and then mount the pi image, put it in the overlay folder in the boot partition?
curl -L https://apps.industrialshields.com/main/rpi/rpiplc_v4/librpiplc.tgz -o - | tar zxvf - -C /usr/lib/
curl -L https://apps.industrialshields.com/main/rpi/rpiplc_v4/test.tgz -o - | tar zxvf - -C /home/pi/
chown -R pi:pi /home/pi/test
These are fine, just adjust the directory names as you need to
npm install --prefix ~/.node-red node-red-dashboard
systemctl enable nodered.service
apt-get install -y ppp ppp-dev python3-pip
cd ~
umask 022
pip3 install pyserial
This that these will be fine?
Hope that helps a little at least - I haven’t tried this out of course and so may be wrong in a few places - but what I would recommend is to go through that installation script piece by piece, and search for the balenaOS (and container based) alternative for each part