Remote software update
Background
The original use model for the edgertronic camera was a laptop connected to the camera. Two nodes on the network with the camera in easy reach. Every design decision was made to simplify using an edgertronic camera with this direct use model in mind.
The image quality, performance, and price have expanded the edgertronic camera to uses where there are many edgertronic cameras all connected to a network, permanently mounted, with the cameras difficult to access. Updating the camera by modifying the contents of the SD card is no longer practical.
At some point in the future, you will be able to update an edgertronic camera through CAMAPI or by using the web browser user interface.
Until then, since the edgertronic camera runs Linux, with all its amazing features and flexibility, there are a variety ways to update the camera over the network.
In summary, you simply need to transfer the software update file on the SD card and then cause the camera to reboot.
FTP
You can establish an ftp session (user: root, no password) with the camera to put the update file in the /mnt/sdcard directory.
To perform an FTP file transfer, you can use a GUI application, like Cyberduck (for OSX or Windows) or PuTTY (for Windows). I use Cyberduck all the time and years ago used PuTTY (when I had to use Windows).
Below is an example command line FTP session run on OSX 10.14.4 (after running brew install inetutils to install an ftp client application).
Commands:
cd /mnt/sdcard put sanstreak_update.ssc.20190418204022.68.84d05bd9.e863e4.tar quit
Session transcript (note: my cameras all have DNS assigned names - in this case I am uploading the update file to the camera I named sc3b):
bongo-lx:Downloads tfischer$ ftp sc3b. Connected to sc3b. 220 Operation successful Name (sc3b.:tfischer): root 230 Operation successful ftp> cd /mnt/sdcard 250 Operation successful ftp> put sanstreak_update.ssc.20190418204022.68.84d05bd9.e863e4.tar 200 Operation successful 150 Ok to send data 226 Operation successful 94362710 bytes sent in 35.5 seconds (2.53 Mbytes/s) ftp> quit 221 Operation successful
Camera reboot
You can cause the camera to reboot using either the CAMAPI reboot() method or using your web browser fetching the URL:
http://10.11.12.13/reboot
replacing 10.11.12.13 with your camera's IP address as necessary.
You can also cause the camera to reboot by establishing a telnet session (user: root, no password) and running the command
reboot
The reboot process causes the camera to look for a [Edgertronic configuration files |long list of files] in the root directory of the SD card and take action based on the files found. On of these files is a properly formed, properly named software update file. If such a file is found in the SD card root directory, a software update will be performed.
Scripting
I wrote a couple of simple remote update scripts.
Shell script
I found ftp-upload command line utility made it easy when combined with the ever popular curl command line utility.
Here is the contents of edgertronic-update.sh:
#!/bin/sh if [ $# -ne 2 ] ; then echo "usage: edgertronic-update.sh <update-file> <camera-ip-address>" exit 1 fi set -x ftp-upload -d /mnt/sdcard -h $2 $1 curl -m 1 -o /dev/null http://$2/reboot
Example session:
edgertronic-update.sh sanstreak_update.ssc.20191127205203.69.65961d8d.a46f2c.tar 10.11.12.13 + ftp-upload -d /mnt/sdcard -h 10.11.12.13 sanstreak_update.ssc.20191127205203.69.65961d8d.a46f2c.tar + curl -m 1 -o /dev/null http://10.11.12.13/reboot % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 curl: (28) Operation timed out after 1000 milliseconds with 0 bytes received
And the camera then performed the update.
Python
Work in progress.