Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Valued Contributor I
3,937 Views

Flashall.sh and pre-built xFSTK

I thought I'd open a discussion on flashing Edison using the flashall script available as part of the downloadable image for Edison.

I'm not talking about the OTA upgrade, I'm just talking about the flashall method, which can be used to recover a bricked device, to change partition sizes, or, indeed, to put on different Operating Systems such as ubilinux (Debian).

What I've found so far:

  1. flashall.sh does NOT work on a mac, the script explicitly exludes macs, and it says it only works on linux and windows.
  2. I have yet to get it working on a Windows machine, when running flashall.bat, there are USB devices coming up and down, and the script just continues regardless without actually doing any flashing, I suspect my driver setup on windows is not right.
  3. The only platform I've had success with was Linux. Specifically 32-bit versions of Ubuntu. No luck on 64-bit, and I haven't tried any other OS. Anyway, Ubuntu 14.04 32-bit works great.

I'm not saying this is the only way, but it's the way that works for me.

However, there are a few gocha's in getting Linux working. If you want to do a recovery option with the flashall script, it uses a tool called xfdtk-downloader-solo, which is part of the xFSTK package from sourceforge.net. It's not installable via apt-get, etc, you usually need to build for source.

The fllashall script also uses dfu-util, but that's easily obtainable, as you can use apt-get to install it.

So, for those folks that don't have a Linux machine lying around, I thought I might make it a little easier by suggesting the creation of USB live-boot of a suitable Ubuntu, and attach a pre-compiled version of xFSTK to this post so people don't have to compile xFSTK from source. The rest can be done on the live-boot it'self.

Procedure:

  • Get your hands on an 8Mb USB stick. Try and get a fast one. DOS format it.
  • Download Ubuntu 14.04 32-bit ISO.
  • Download http://www.pendrivelinux.com/universal-usb-installer-easy-as-1-2-3/ http://www.pendrivelinux.com/universal-usb-installer-easy-as-1-2-3/
  • Using the universal-usb-installer, create a live-boot USB key. Make sure you give it plenty of persistent storage in step 4 of the dialog, as you'll need that to extract your flash images. I'd recommend 4 Gigs.
  • Once that's done, you can copy on the xfst-downloader-xxx.deb (attached) and the Edison image file (/docs/DOC-23242 downloads section) onto the same live-boot USB stick.
  • Now boot a machine using the USB stick. When booting, select the "Try Ubuntu" option. The persistent storage we selected when creating the bootable USB key will allow us to make changes that persist across boots, so we don't have to re-do everything every time we boot.
  • Once you're into Ubuntu, have a look at the /proc/partitions, and have a look for what might be your USB key. Mount the relevant partition to /mnt and you should then see your xfstk .deb and your Edison image file. Copy them into your home folder, and unmount /mnt.
  • Now you can install the xFSTK tools - "dpkg -i xfstk-downloader-_0.0.0_all.deb"
  • The apt-sources need to be tweaked to give us access to the dfu-util package, it's not present in the live-boot image, so open up /etc/apt/sources.list and add the line:
  • then do a sudo apt-get update
  • followed by a sudo apt-get install dfu-util
  • Now you have all the tools you need, next to do the flash.
  • tar xvfz EdisonIMageFile (whatever it's called, might be Yocto, might be ubilinux)
  • cd toFlash
  • Run "sudo flashall.sh -b"
  • Connect on the Edison via USB, and the flash process should proceed.
  • You can have a second USB cable connected into the console USB connector on the Edison and monitor the progress from that size. You can sudo apt-get install minicom, then minicom-D /dev/ttyUSB0 -b 115200 to get at the console.

All going well, you should now be able to completely flash (including recovery option) your Edison.

So the next time you want to flash, you can simply boot up the USB key, get the new image, and flash from there. And Keep that USB key safe for the next time

The .deb file attached is a pre-build package of the unmodified source of version 1.7.2 from sourceforge here. If it's not OK to attach this, let me know and I'll remove it, but think that it's OK.

It's for Ubuntu 14.04 32-bit.

Tags (1)
17 Replies
Novice
268 Views

Hi Dave,

Just sharing my experience:

I'm using Ubuntu 14.04.1 LTS 64-bit to flash the default yocto build and also your ubilinux. I don't have problem running it. BTW, I don't even need xfstk when using flashall.sh from download page for yocto build (I need to install xfstk, when running flashall.sh from your ubilinux). I got my Edison the day before, so only play one day with it. It come with old firmware so I update the firmware (try both copying to folder, then "reboot ota", and also the flashall.sh script, both work fine). Then I decided I need debian than plain yocto, so tried ubilinux. flashall.sh barked than I need xfstk, that when I start installing xfstk on my 64-bit ubuntu box. Is there any chance your flashall.sh is older than the one on download page? The download page doesn't said anything about version (request), but the file I use was "edison-image-ww36-14.zip"

(I'm back to the plain yocto build right now, since ubilinux not work with bluetooth yet)

Could you elaborate your problem, when you said no luck with 64-bit ubuntu?

Valued Contributor I
268 Views

If you stay with the Yocto image, you probably never need to run the recovery option with flashall. Because there's a different partitioning scheme with ubilinux, the '-b' option is required, which repartitions the emmc and calls flash-ifwi in the script. This flash-ifwi function uses either phoneflashtool or xfstk-dldr-solo, depending on what's installed. So when I'm running the -b option, I don't have phoneflashtool (and couldn't find it on the net), so I'm left with the option of installing xfstk (i.e. building from source)

xFSTK only seems to build on 32-bit ubuntu, as it explicitly requires linking against a 32-bit version of libusb.a. xFSTK refuses to build on a 64-bit OS for me.

So as long as you stick with Yocto, you don't need to use -b or -recovery option, therefore you don't need xfstk.

The flashall.sh I'm using in the ubilinux build is the same one as from the Yocto 36.14 image.

Novice
268 Views

Okay, that explain the xfstk requisity (I'm too lazy to look inside flashall.sh script).

As for linking and running 32-bit library on 64-bit OS, I think you can try to use 32-bit library version on 64-bit OS (apt-get install libusb-dev:i386, perhaps).

But I checked libusb.a on my 64-bit ubuntu box, only 64-bit version installed, and I don't have trouble compiling xfstk on that box.

Intel getting started documentation about flashing on Windows, currently doesn't mention flashall.bat (only Linux and Mac version). So I am under impression it still experimental.

Funny if the script explicitly excludes OSX, as the documentation mention it as alternative flashing method. (someone as lazy as I am is maintaining the site?)

0 Kudos
Novice
268 Views

Just for info (at the time I post this):

Release Note doc is for W37.

While software download is W36.

I think then next software release (W37) is on horizon.

It might not completely related, but new feature on release note said dfu-util for windows for ex.

0 Kudos
New Contributor III
268 Views

Hello Dave,

installed the ubiLinux today using your ready xfstk deb file, works fine - thanks again!

I installed it on two Edisons. One needs weirdly about 60 mins to flash the rootfs, the other needs the advertised 5 mins.

It writes the access times for each file on the rootfs - not good for mmc. I changed it in fstab (noatime).

"rsyslog" and "logrotate" - also two candidates i don't need on such a handy system all of the time.

And for my needs i additionally mounted /tmp, /var/tmp and /var/log as tmpfs.

But now i made a terrible mistake in the "post-up" procedure of the network interface.

Edison hangs there during bootup and i can't login anymore (no wlan and no serial access). Seems like i have to install all again.

I'm very glad to get all the advantages of Debian for the Edison with this - really nice.

Regards, mmi

268 Views

flashall in general should work on mac. However, the "flashall --recovery" probably not

268 Views

BTW, I don't even need xfstk when using flashall.sh from download page for yocto build

xfstk is required if you need to run "flashall --recovery"

New Contributor I
268 Views

Hi mmi,

I think you are experiencing the same issue experienced by faceplant on the ubilinux topic:

Please have a look at the second page of the ubilinux thread where I explain how to fix the continuous reboot issue when your WiFi is not in range (or the configuration is not correct).

New Contributor III
268 Views

Hi Daniele,

thanks but it was another issue. I prefer setting the time immediately during bootup. So i set a command for "up-post" in network interfaces. I had a mistake there and this command never returned. So i never got a login prompt - bootup hangs (forever). Solved it by flashing the rootfs again and i had a backup to rsync all my personal changes back.

0 Kudos
Valued Contributor I
268 Views

Check out /thread/56219?sr=stream this post for information on how to tweak the flashall.sh script so you don't need xFSTK in order to flash images that have different partition sizes than the default Yocto image.

Rgds,

Dave.

0 Kudos
Valued Contributor I
268 Views

mmi,

Could you paste in your version of /etc/fstab here? I'd like to include the noatime change and tmpfs changes in the next build.

Dave.

0 Kudos
New Contributor III
268 Views

Hi David, here it is:

/dev/root / auto defaults,noatime,discard 1 1proc /proc proc defaults 0 0devpts /dev/pts devpts mode=0620,gid=5 0 0debugfs /sys/kernel/debugdebugfsauto 0 0tmpfs /run tmpfs mode=0755,nodev,nosuid,strictatime 0 0tmpfs /tmp tmpfs defaults,noatime 0 0tmpfs /var/log tmpfs defaults,noatime 0 0tmpfs /var/tmp tmpfs defaults,noatime 0 0tmpfs /var/volatile tmpfs defaults,noatime 0 0

/dev/mmcblk0p10 /home autodefaults,noatime 1 1

Does "discard" on the rootfs make sense ?

0 Kudos
New Contributor I
268 Views

I had to do a sudo

still not sure why i can't upload a sketch

Had my yun up in running in less then 10 minutes

Valued Contributor II
268 Views

Thanks Dave. Hopefully I won't brick it, but very nice to have in case. Thanks again.

0 Kudos
Novice
268 Views

Thanks Dave

Fixed my totally bricked Edison. It would not start the boot, it stopped at : *** Ready to receive application ***, and it did not show up as a file device so flashall.sh --recover is the only remedy. I tried building xfstk for 64 bit Ubuntu but never got it to work.

I did hit an error when I did "dpkg -i xfstk-downloader-_0.0.0_all.deb" but it was apparently only in documentation files and i recovered my Edison with no problems.

Innovator
268 Views

Same for me with Ubuntu 14.0 I am having mine working.But the latest image downoads brings issues and the .flashall.sh no longer works for me.previous builds do.Intel should take this into consideration.

I am now building the xFSTK tool as they have suggested to help me boot my device with new Image

Beginner
268 Views

Hi everybody:

My name is Martin Ortuño from Mexico, I am new in the community and linux in general. I bought my Edison a few months ago, and for many reasons I forgot my password to root, so I tried to flash it using the edison set up application for Mac (and with the Windows App was the same), but there was no positive results, it never finished flashing. Then I tried to use the flash all method in my Mac too, but again this errors appeared:

Error: The `brew link` step did not complete successfully

The formula built, but is not symlinked into /usr/local

Could not symlink include/libusb-1.0/libusb.h

Target /usr/local/include/libusb-1.0/libusb.h

already exists. You may want to remove it:

rm '/usr/local/include/libusb-1.0/libusb.h'

To force the link and overwrite all conflicting files:

brew link --overwrite libusb

To list all files that would be deleted:

brew link --overwrite --dry-run libusb

Possible conflicting files are:

/usr/local/include/libusb-1.0/libusb.h

/usr/local/lib/libusb-1.0.0.dylib

/usr/local/lib/libusb-1.0.a

/usr/local/lib/libusb-1.0.dylib -> /usr/local/lib/libusb-1.0.0.dylib

/usr/local/lib/pkgconfig/libusb-1.0.pc

And yes trying to flash all was useless:

dfu-util: Device has DFU interface, but has no DFU functional descriptor

dyld: lazy symbol binding failed: Symbol not found: _libusb_get_port_numbers

Referenced from: /usr/local/bin/dfu-util

Expected in: /usr/local/lib/libusb-1.0.0.dylib

dyld: Symbol not found: _libusb_get_port_numbers

Referenced from: /usr/local/bin/dfu-util

Expected in: /usr/local/lib/libusb-1.0.0.dylib

The people from tech support helped me to find my last option, this post, and yes I am trying to follow this instructions. But being honest I am a linux newbe, so no luck for me, because I am having troubles using the command:

dpkg -i xfstk-downloader-_0.0.0_all.deb

Right after I use it, this error appear:

ubuntu@ubuntu:~$ sudo dpkg -i xfstk-downloader_1.7.2_all.deb

Selecting previously unselected package xfstk-downloader.

(Reading database ... 191101 files and directories currently installed.)

Preparing to unpack xfstk-downloader_1.7.2_all.deb ...

Unpacking xfstk-downloader (0.0.0) ...

dpkg: dependency problems prevent configuration of xfstk-downloader:

xfstk-downloader depends on libusb-dev; however:

Package libusb-dev is not installed.

xfstk-downloader depends on libxml2-dev; however:

Package libxml2-dev is not installed.

dpkg: error processing package xfstk-downloader (--install):

dependency problems - leaving unconfigured

Processing triggers for doc-base (0.10.7) ...

Processing 33 changed doc-base files, 1 added doc-base file...

Error in `/usr/share/doc-base/xfstk-downloader', line 20: all `Format' sections are invalid.

Note: `install-docs --verbose --check file_name' may give more details about the above error.

Processing triggers for gnome-menus (3.13.3-6ubuntu3) ...

Processing triggers for desktop-file-utils (0.22-1ubuntu5) ...

Processing triggers for bamfdaemon (0.5.3~bzr0+16.04.20160415-0ubuntu1) ...

Rebuilding /usr/share/applications/bamf-2.index...

Processing triggers for mime-support (3.59ubuntu1) ...

Errors were encountered while processing:

xfstk-downloader

Do I have to install the both packages, libusb-dev and libxml2-dev, before the installation? and which version?

Thank you for your help

Martín