10 Replies Latest reply on Dec 9, 2014 7:00 PM by bperkins

    Update Edison Without Arduino Expansion Board

    SmallLetters

      I purchased Edison without the arduino expansion board, and I'm stuck with old edison firmware.  I have the sparkfun console board, and I can log in. (DEV-13039), All guides that I have seen so far seem to require the expansion board. 


      I would really like to use configure_edison --upgrade, but that command is unavailable. 


      Is there an alternate alternate way to re-flash/upgrade the Edison without the expansion board from the serial console/SSH etc?  I have windows and Linux host systems.  The flashall script executes - but seems to keep looking for an expansion board. 



        • 1. Re: Update Edison Without Arduino Expansion Board
          deium

          SmallLetters,

          You can accomplish the upgrade with an Intel Mini Breakout Board (without the need for the Arduino board).

          Since I have not played with the sparkfun console board, I have to ask when you connect it to a windows computer, does it give you an additional drive letter (like a flash drive).

          If so, you can download the latest firmware, unzip to that drive, login to Edison, and issue reboot ota.  If not, you will either have to check with sparkfun on their procedures or purchase at minimum the Mini Breakout Board -- mouser.com carries them, as well as others.

          • 2. Re: Update Edison Without Arduino Expansion Board
            KurtE

            I also am not sure of the proper way to update this board, either.  As far as I can tell it only has one USB connector which is connected up to UART2 (with Arduino IDE this would be Serial2).

             

            There is no connection for the actual USB port of the Edison. For that you would probably need a different sparkfun module, like: DEV-13045 which looks like it is not released yet.

             

            Again as deium mentioned, maybe someone at Sparkfun has an idea. 

             

            The only Ideas I have could leave you in a very bad state.  Something like, what is mentioned in:

            How to install a kernel from my repo onto Edison with the official image

             

            But again I have no idea what state this would leave you in...

            • 3. Re: Update Edison Without Arduino Expansion Board
              deium

              KurtE,

              On the mini breakout board, the USB connector on J16 provides a point for both power and access to the OTA drive with the supplied driver installed.

              I need to connect to the USB on J3 if I want to access console over serial, ie with putty.

              Without the sparkfun documentation, and that description of "console board", leads me to believe that it is the serial putty connection (and hopefully ota access)

              My recommendation on the mini breakout board vs arduino is purely a lower cost consideration.

              Not sure what support sparkfun is providing, I liked their minimalist block design, but they still haven't released their battery layer, so I chose Intel.

              • 4. Re: Update Edison Without Arduino Expansion Board
                KurtE

                Looking at the schematic for the board, the Sparkfun board has the FTDI chip connected to Edison pins 134/135, which I believe is the console connector (/dev/ttyMFD2) Using Serialx on Edison

                 

                It also looks like it takes the +5v from the USB connection and feeds the edison.  I could be wrong, but I don't believe anything here connects to the USB pins for /dev/ttyGS0

                 

                Another approach I wonder about, is.  I assume there is some mount command you could do on the Edison through the PuTTY (or equivalent on other platforms), to mount the OTA drive.  Would be nice to know what the connection point is...  If so you could use something like: winscp (or other on other platforms) to download the current firmware to the OTA drive, (Assuming wifi is working?) and once the files are there you could issue the

                reboot ota command.

                 

                Kurt

                 

                Edit (Update) - I believe this thread shows at least one way to mount the OTA drive Access Edison mass-storage from within Edison

                • 5. Re: Update Edison Without Arduino Expansion Board
                  deium

                  the ota drive from within Edison is /dev/mmcblk0p9

                  /dev/mmcblk0p9          757680       776    701856   0% /mnt

                   

                  so that can be manipulated to see what is on the ota drive, but I guess we are still pondering how to get the files over to Edison.

                  Is there a document for the sparkfun console block?

                  • 6. Re: Update Edison Without Arduino Expansion Board
                    KurtE

                    deium - The only real docs I saw up on Sparkfun was the PDF with Schematic.  Also I believe their was a zip file with design files.

                     

                    SmallLetters - again I don't have your setup but:

                     

                    Here is what I would do, I have tried some of these steps, but can not say for sure...

                     

                    1) Install PuTTY and WinSCP on your windows system (Or do Linux stuff)

                    2) Connect to debug terminal and setup to wifi: configure_edison --setup

                    (--setup may not be needed depending on what version of configure_edison...).  Once you have wifi up and working - may have to do hacks or like if your system uses 192.168.2.x mentioned in threads.

                     

                    3) Setup SCP and Putty to use wifi connection.

                     

                    4) Use Putty to connect to device (could use debug terminal one as well)

                    5) Do commands mentioned in the Access Edison mass Storage posting above:

                    rmmod g_multi

                    mkdir /update

                    losetup -o 8192 /dev/loop0 /dev/disk/by-partlabel/update

                    mount /dev/loop0 /update

                    6) use WinSCP to connect up to your PC.  Browse to the /update directory, open zip file with latest build and unzip the files into /update using winscp (I tried drag and drop)...

                     

                    7?) Not sure if reboot ota needs back to old state if so use commands from other post:

                    cd /

                    umount /update

                    modprobe g_multi

                     

                    8) reboot ota

                     

                    Again don't know if this will work or not, but my guess is that it stands a chance.

                     

                    Kurt

                    • 7. Re: Update Edison Without Arduino Expansion Board
                      deium

                      SmallLetters

                       

                      I agree with KurtE for the procedure for you to try.  I would add that step 7 is needed

                      Please get back to us and let us know if this has solved your issue.  Bonne chance.

                      • 8. Re: Update Edison Without Arduino Expansion Board
                        SmallLetters

                        So - here is progress...

                         

                        I was able to get the wifi up and working - then I was able to SFTP to a point where I could drop files on the device via Wi-Fi. The problem, I can't mount the mmcbkl0p9, and it doesn't look like it is mounted as /mnt via mount -l command output.

                         

                        The rmmod g_multi fails-  locks up device ?

                         

                        My goal would be to just push the files via wifi to the correct   Do I have something wrong with my concept?

                        __________________________________________________________________________________________

                        root@edison1:~# mount -l

                        /dev/mmcblk0p8 on / type ext4 (rw,nodev,noatime,discard,noauto_da_alloc,data=ordered)

                        devtmpfs on /dev type devtmpfs (rw,relatime,size=491740k,nr_inodes=122935,mode=755)

                        proc on /proc type proc (rw,relatime)

                        sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)

                        tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)

                        devpts on /dev/pts type devpts (rw,relatime,gid=5,mode=620)

                        tmpfs on /run type tmpfs (rw,nosuid,nodev,mode=755)

                        tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)

                        cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd)

                        pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)

                        cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)

                        cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpuacct,cpu)

                        cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)

                        cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)

                        cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)

                        cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)

                        tmpfs on /etc/machine-id type tmpfs (ro,relatime,mode=755)

                        systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=22,pgrp=1,timeout=300,minproto=5,maxproto=5,direct)

                        systemd-1 on /boot type autofs (rw,relatime,fd=23,pgrp=1,timeout=300,minproto=5,maxproto=5,direct)

                        systemd-1 on /home type autofs (rw,relatime,fd=24,pgrp=1,timeout=300,minproto=5,maxproto=5,direct)

                        debugfs on /sys/kernel/debug type debugfs (rw,relatime)

                        mqueue on /dev/mqueue type mqueue (rw,relatime)

                        systemd-1 on /factory type autofs (rw,relatime,fd=34,pgrp=1,timeout=300,minproto=5,maxproto=5,direct)

                        tmpfs on /tmp type tmpfs (rw)

                        fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)

                        configfs on /sys/kernel/config type configfs (rw,relatime)

                        tmpfs on /var/volatile type tmpfs (rw,relatime)

                        /dev/mmcblk0p5 on /factory type ext4 (ro,nosuid,nodev,noatime,discard,noauto_da_alloc)

                        /dev/mmcblk0p10 on /home type ext4 (rw,nosuid,nodev,noatime,discard,noauto_da_alloc,data=ordered)

                         

                         

                        __________________________________________________________________________________________

                        • 9. Re: Update Edison Without Arduino Expansion Board
                          SmallLetters

                          Ok - so I think I found how to mount the drive - from edison:

                          _______________________________________________________________________

                          mkdir /upgrade

                          mount -o offset=8192 -t vfat /dev/mmcblk0p9 /upgrade

                          _______________________________________________________________________

                           

                          from linux box:

                           

                          cd /home/user/upgrade-directory-containing-unzipped-firmware-files

                          sftp root@192.168.11.145

                          cd /upgrade

                          put -r ./*

                          mkdir u-boot-envs

                          cd u-boot-envs

                          lcd u-boot-envs

                          put ./*

                          _________________________________________________________

                          from edison:

                           

                          reboot ota

                           

                          ----------------------------------------------------------------------------------------------------

                          result:

                           

                          Success - Thank you all!

                          • 10. Re: Update Edison Without Arduino Expansion Board
                            bperkins

                            It took me a little while to figure this out, but the:

                            put -r ./*

                            is important, as it seems the bootloader won't find ota_update.scr unless it's listed first in the directory.

                             

                            I didn't have access to a command line sftp client, but doing this after uploading the files:

                             

                            cd /upgrade

                            mkdir foo

                            mv * foo

                            # error about being unable to mv foo to foo is harmless

                            mv foo/ota_update.scr .

                            mv foo/* .

                             

                             

                            did the trick.

                             

                             

                            Also, I think it's probably simpler to just wget the zip file and unzip it on Edison.