Storing local versions of extensions

Hello,

I have a system that is going out of an internet connection for a bit and I’m trying to figure out what spares I can offer for trouble shooting while its out there. This is mainly in reference to the waterlinked DVL A50 drivers if there is a fault with the ROV’s raspberry pi as in the situation that I need to reinstall the driver, it will usually require an internet connection.
Is there a way for me to store the DVL A50 extension on a removable thumbstick that would allow me to install the DVL A50 extension locally through the terminal without needing an internet connection?

thanks,
Quinlan

Hi @Qlowe,

The extensions system does not yet have support for local installs, but it should at least technically be possible to download and store the relevant docker image, upload it to the onboard computer via the BlueOS File Browser (or scp), or using the web terminal to transfer it from a USB stick (if you for some reason prefer that - though I can’t think of any reasons why it would be relevant to), and then use the web terminal to either replace the existing docker image (if a version was already installed on the system), and/or manually do the docker run configuration to set it up (if it wasn’t already installed, or the setup needs to be modified).

If this becomes important we should be able to provide more detailed instructions, but if it’s not important at the moment then in the meantime it’s likely preferable on our end to focus on developing the functionality in an easy to use way, rather than taking the time to document an approach we generally won’t want people to use in future :slight_smile:

Alright, thanks for the response, to clarify the removable device, its because I don’t really have access to the main system since its in cargo for transportation, so I just wanted to be able to give something to the people running it to troubleshoot, that doesn’t need to be checked in again.
On my end, its certainly not high priority and more just me wondering if its possible as a troubleshooting method, because this is an extremely niche scenario and honestly a lot would have to go wrong for this to even be needed. I doubt many ROV’s might be out of a reliable internet connection for up to a month or two, so I definitely understand not looking at doing something like this.

Ahh right, fair enough - I was thinking you meant specifically for plugging into the vehicle. They could plug a removable device into the computer they’re using to communicate with the vehicle, and then use scp or the BlueOS File Browser to copy the relevant file(s) over to the relevant places.

Any approach that makes the file(s) accessible from the control computer should be workable (e.g. for a laptop you might download files from the internet, then go somewhere without internet, then connect to the vehicle and do the transfer).

Makes sense. Yes, it’s technically possible, although it would require at least a few steps to do :slight_smile:

I can imagine this being relevant for long term autonomous remote deployments, and/or for applications with sensitive information that use air-gapped computer systems (e.g. some commercial and/or military). That said, I expect the most relevant functionalities there are more general offline installations and updates, rather than specifically replacing/restoring an extension that stops working.

That’s particularly the case since extensions are docker images, which ‘start fresh’ every time the vehicle reboots. The only ways one can end up being broken after having worked previously are

  • non-robust reliance on persistent settings files stored on the base device that get corrupted
    • could happen due to poor handling of user input, or a bug in automatic configuration code
    • is the kind of thing BlueOS’s extension manager should be able to help with, possibly in general, but at minimum in terms of “fully” uninstalling an extension, or perhaps just something like a “fresh install” option that deletes any related persistent files
  • non-robust reliance on external devices that stop behaving/responding as expected
    • includes storage device (e.g. SD card) corruption
  • required logging that fails due to insufficient remaining storage
    • likely best handled by the user transferring logs off the device, and/or BlueOS adding functionality to easily do mass transfers and/or deletions of service logs off the vehicle
    • BlueOS may also be able to add time- and/or space-based limits on logs for a given service, after which they are automatically deleted
    • could have some robustness built into the extension by allowing it to delete and/or overwrite its own logs if it runs out of space

In all of those cases just replacing the extension generally wouldn’t help, unless it was with a new version that was robust to the underlying issue.

This is not being worked on at the moment, but I’ve raised an issue for it in case anyone wants to track progress on the feature later.