Updating ReachView with no internet available? then do an offline update

My new Reach units came with firmware v1.2 which is current, but the ReachView software version needs updating to enable some of the new features. You might also be in the same situation if you just reflashed the firmware.

Normally you just click the update within ReachView and that is it, however the network I use Reach on is not connected to the internet, so, ReachView must be updated by a manual process.

(note: The first time around I did this the wrong way, and I ended up with broken Reach and a solid red LED. That was because the ReachView server had crashed.)

So this is how I did it the right way in the terminal window under Linux (or Mac):

Start from a computer that is connected to the internet:

  • In the ReachView directory of the GitHub website, they offer a “Download ZIP” button. I tried using that ZIP file, but it didn’t preserve the file permissions and it didn’t contain the .git directory which ReachView uses to know it’s version number. In the end, I found out that using git to clone the repository was best. So at the terminal, I used:
    $ git clone https://github.com/emlid/ReachView.git ReachView

  • In addition, ReachView needs to install 2 other software packages for this update. They are: PyBluez, a Bluetooth Python extension module, and kernel-module-ftdi-sio the FTDI Serial Device converter driver. Download both of them as well:

  1. PyBluez: Webpage or direct download
  2. kernel-module-ftdi-sio: Web directory or direct download
  • I made sure everything was in the same directory, and packed them up in a tarball for easy transporting:
    $ tar -cvzf ReachView_git-clone_and_extras_2015-03-25.tar.gz ReachView PyBluez-0.22.zip kernel-module-ftdi-sio_3.10.17-r0_edison.ipk
  • Then I copied the tarball ReachView_git-clone_and_extras_2015-03-25.tar.gz to the offline computer (using a USB stick, etc. or just taking the laptop to the offline site).

Now at your computer at the offline location:

  • To get Reach on my network. I was using ethernet over USB, but slightly different than in the documentation. I have a network bridge and it is already in the 192.168.2.x subnet, so my commands were:
    $ sudo brctl addif br0 usb0
    $ sudo ifconfig usb0 up

  • Then I copied the tarball to Reach:
    $ scp ReachView_git-clone_and_extras_2015-03-25.tar.gz reach@192.168.2.15:

  • And then I used ssh to open a terminal window on Reach:
    $ ssh reach@192.168.2.15

  • And finally, install the software:
    $ ps | grep server.py #note the process ID
    $ sudo kill 123 #replace 123 with the process ID from previous command. This stops ReachView
    $ mv ReachView ReachView_original #making a backup
    $ tar -xvzf ReachView_git-clone_and_extras_2015-03-25.tar.gz #unpacking the tarball
    $ sudo opkg install kernel-module-ftdi-sio_3.10.17-r0_edison.ipk #installing the kernel module
    $ sudo pip install PyBluez-0.22.zip #installing PyBluez
    $ cd ReachView #get ready to finish up the installation tasks manually
    $ cp /home/reach/ReachView/rtklib_configs/.conf /home/reach/RTKLIB/app/rtkrcv/
    $ cp /home/reach/ReachView/rtklib_configs/
    .cmd /home/reach/RTKLIB/app/rtkrcv/
    $ cp /home/reach/ReachView/rtklib_configs/rtkrcv /home/reach/RTKLIB/app/rtkrcv/gcc/
    $ cp /home/reach/ReachView/rtklib_configs/str2str /home/reach/RTKLIB/app/str2str/gcc/
    $ cp /home/reach/ReachView/rtklib_configs/convbin /home/reach/RTKLIB/app/convbin/gcc/
    $ sudo /home/reach/ReachView/install_packages.sh #sort of a repeat, but do it anyway
    $ sudo chown -R reach:users /home/reach # reset permissions
    $ exit #you are done

reboot and cross your fingers!

  • If everything worked, it is time to do housekeeping and save precious log space by removing the backup folder we made and the extra files we uploaded. SSH into Reach as before, then:
    $ sudo rm -r ReachView_original
    $ rm ReachView_git-clone_and_extras_2015-03-25.tar.gz
    $ rm PyBluez-0.22.zip
    $ rm kernel-module-ftdi-sio_3.10.17-r0_edison.ipk

Congratulations on a successful offline update!

Hi

I’m really sorry you had to go through this. Actually, update will not be triggered if you are offline. And server should just restart without the version bump.

Could you please tell me more about the update circumstances that crashed Reach?

No need to be sorry Egor. I consider updating offline to be abnormal, and I just wanted to write the procedure down for future reference. I have reworded the first paragraph to not sound so negative.

I did see your last release which fixed the opkg hangup, and what I saw today is “install_pip_packages()” hanging things up. For most people I guess it might only be a problem if the pip repository was down while updating ReachView?

Does this still work? Seems that github repo deosn’t have the latest version (updated 2 years ago).

It was written almost 2 years ago, so probably not.