Do this at your own risk. I take no responsibility for any damage caused to your board.
My Intel Edison was shipped to me with old and buggy version of the Yocto Linux image. I purchased only the console block via Sparkfun (which has only one USB port connected to UART2 (serial connection) of the Edison therefore it's not connected to the actual USB on Edison) so I could not update to a new build the normal way.
I assume you have successfully connected to the Edison via the serial connection and can use the linux console on Edison.
- Connect the Edison into a local WiFi network with
configure_edison --wifi
- Check that you can access to the Edison via SSH or with browser
- if you can't,
vi /etc/systemd/system/basic.target.wants/network-gadget-init.service
and change the ip addresses to i.e 192.168.99.15
- if you can't,
- On Edison,
cd /
mkdir update
mkfs.vfat -F32 -I /dev/mmcblk0p9
(mmcblk0p9 is the partition which will contain the new FW files, command formats it to FAT32)mount -t vfat /dev/mmcblk0p9 /update/
(mount the partition to the /update)- Connect to the Edison i.e. with FileZilla and move the update .zip file (can be found from Intel www site) to the /update folder on Edison
cd /update
mkdir temp
unzip update_file.zip -d temp
rm update_file.zip
mv temp/ota_update.scr .
(ota_update.scr must be first in the folder hence this)mv temp/* .
rm -rf temp
reboot ota
If everything is fine, Edison should now boot and start the upgrade process automatically. It takes couple of minutes and after that you have more robust version of the Yocto image up and running. I recommend running configure_edison --setup
after the update process.
Thanks!
This was the ONLY method that worked for me, and also one of the easiest!
1 minor change: I used wget to directly download the latest Edison image from intel's website.
Let my set out what my issue was and the things I tried. Hopefully this will help others in the future.
I should note the Edison did still work: I could boot, login, and run edison_configure to configure the network.
Somehow my kernel module could not be loaded anymore (debug log didn't show why) and as a result the standard firmware update methods didn't work anymore.
Method 1: push firmware update from host to Edison
Access the Edison as a mass USB device from the host OS, and move the new firmware (Intel recommended method).
Problem: my Edison did not show up as a USB drive anymore, so I didn't have a way to prepare the firmware update. I tried both on a mac and windows machine, and even replaced the micro USB cable (commen recommendation on the intel forums).
Note: this guide does essentially the same but then directly on the Edison.
Method 2: configure_edison --upgrade
Use the configure_edison tool directly on the Edison to initiate an update.
configure_edison --upgrade
This failed because it tried to unload the kernel module, which wasn't loaded in the first place!
Not sure if this would actually work: I never saw it recommended in the fora.
Method 3: on the host system, use the 'flashall.sh' script
I tried this on a few occassions but never got it to work. A few comments:
flashall.sh --recovery
argument is not available on mac, probably due to known issues with 64-bit OS-esYou can do this by opening a screen terminal, boot up the Edison and hit a key to abort the boot procedure. Then you can type the following command to set it in 'flash-modus' (DFU mode):
run do_flash
The tool would run, and everything would seem fine and reporting that I successfully flashed it.
But then the Edison would go all Groundhog Day, and I'd be back in the same old environment with the old firmware and kernel module loading issue.