Update 2016 May 24:
Executive Summary: (Linux) Add TauLabs or dRonin udev rules to allow unprivileged users to access the new Sparky2 USB ID. This post has a bu_sparky2.opfw attached. Flash this (and run it a few seconds) with your
new version LP GCS (next or 16.06 release) just before you start using the new version of LP. If you are running an older version of LP Sparky2 code, do not flash the new bootloader updater (BU) until you have a new version (GCS and firmware) to use it with.
Instructions for adding the needed udev rules to Linux:
- Download the attached file named 45-uav.rules
- Run a shell / terminal / command prompt and change directories to where ever you downloaded the file
- enter the following commands
sudo cp 45-uav.rules /etc/udev/rules.d/45-uav.rules
sudo udevadm control --reload-rules
This assumes you are a member of the Linux plugdev permissions group. If you have problems, refer to this page:
https://github.com/TauLabs/TauLabs/wiki/Development-Linux-setupThe latest Sparky2 code has been changed to have a bootloader that is compatible with the TauLabs bootloader that comes on new Sparky2 boards. This Sparky2 code is not in next yet. This new compatible bootloader means that you do not need to do SBL procedure to get a new Sparky2 board working with LP code. Assuming you have a Sparky2 board with the default TauLabs bootloader that it came with, when this new LP code is released, you will just flash the new LP bootloader updater (bu_sparky2.opfw) using the rescue function of the new LP GCS. It is important to run the BU for a few seconds after flashing (just press Boot). After that, use the rescue function of the new LP GCS to flash the new normal firmware (fw_sparky2.opfw) that came with the new GCS.
For those who already flashed the old, incompatible BL onto their Sparky2 boards, there is a way to avoid doing the SBL procedure again. Don't do this until you have access to the new GCS and firmware.
Do this to avoid doing SBL again on your Sparky2:
- You can uninstall old LP GCS, but it is a good idea to export your settings before you upgrade anything.
- Build or download the new LP sparky2 GCS and firmware (in next right now, soon to be released).
- (Linux) Add new udev rules for the new Sparky2 USB ID (old Sparky2 USB ID was same as Revo).
- Disconnect flight battery power and only use USB for this procedure.
- Leave USB unplugged until instructed to plug it in.
- Use the bu_sparky2.opfw that is attached to this post. It has the new, TL compatible USB IDs.
- Use your
new LP GCS. Go to the Firmware tab and press Rescue, then immediately plug Sparky2 into USB.
- After a few seconds, the Open button will appear. Press Open, navigate to and select the bu_sparky2.opfw that you downloaded.
- Ignore the warning about board b01 doesn't match firmware 9201
- Press Flash and wait for the erase and flash to complete.
- When flashing is complete, press Boot to boot the BU. Let it run for 10 seconds.
- Unplug USB from Sparky2.
- Press Rescue again, then immediately plug Sparky2 into USB.
- It should select the correct firmware, or press the Open button, navigate to and select the correct firmware fw_sparky2.opfw
- Press Flash and wait for the erase and flash to complete.
- DONE
- If you can't find fw_sparky2.opfw because you are running the final release, you can do the following:
- Once bu_sparky2.opfw has been flashed and run, you could disconnect USB and then press the Upgrade or Erase-and-Upgrade button (follow the instructions on screen) to install the firmware that comes with the install.
<End of Update 2016 May 24>
Understand that there are two software levels of being bricked besides bad hardware:
- You have a current, working LP/OP bootloader on your board. You know the bootloader (current or LP/OP or not) is working if the blue LED comes on and does some kind of blinking, whether that is: blinks once every 7 seconds, fast blinking, or fade from bright to dim to bright every couple seconds. You know that bootloader is a current LP/OP version if you can start an Emergency Rescue Procedure successfully. If you have a current, working LP/OP bootloader you do not need to do the SBL procedure (which is a pain to do).
- If the blue LED does not come on or stays solid (no blink or fade bright dim) for more than say 15 seconds, or if you can't successfully start the Emergency Rescue Procedure, then you need to use the SBL procedure to put at least a current LP bootloader on it.
CC3D: First of all, you need to know that cloners call everything CC3D to get you to look at it. A "Revo" is a Revo and has nothing to do with CC3D. The CC3D SBL procedure cannot be done with USB. Your computer must effectively have a serial port (usually a USB to "ttl level" serial adapter) and the correct cable. That usually means an "FTDI" USB to serial adapter or similar. You can use another OP board like Revo or CC3D with USB VCP Function set to ComBridge 57600. If you have an OP board and a standard 4 pin MainPort / FlexiPort cable, you don't have to make a cable.If you have a current working LP/OP bootloader on your board already, you can skip over the SBL instructions and just do the "Emergency Rescue Procedure" with the firmware you want to flash.
SBL procdures:
I have not tested this as I don't have a Windows box handy.
The attached dfu-util.exe is one I found on the Internet. Please scan it for viruses to be safe.
Please post back here if you don't see any posts that say it worked and there were no viruses.
I built the attached bootloaders.
If you have a different bootloader on your board then, before you can even flash it, you need to write the bootloader.
This is the case if you:
- had CleanFlight on your board.
- just bought a new Sparky2 board.
- tried TauLabs on your Revo board.
- etc.
To write a bootloader you must use SBL (System Boot Loader) which is always there and can't be erased.
To use SBL the two tiny tiny tiny SBL pads on the board must be shorted before and during power on.
Sparky2: SBL is located on top side of board close to LEDs and baro chip.
Revo: SBL is located on bottom side of board close to largest black chip.
CC3D: SBL is located on top side of board close to corner hole close to ESC/servo outputs (use 3.3v and SBL).
They must be shorted together at least from a little before to a little after connecting power. Probably the easiest way is to temporarily solder a blob to connect them. You can leave the blob on until you are done with the flashing command and must remove it after that.
Personally, I do it this way though. SBL pads must be shorted at the time that power is applied (when plugging in USB). First, you need a little mound of solder on each pad (but not shorted together). My new Sparky2 was the first board that had bare copper there and needed solder mounds added. Second you need a very small "safety pin", the type with a small coil at the bottom. Leave pin closed, and if you want, you can carefully spread the coil a tiny amount with a knife. Finally, to use it... Assume mounds are left and right, hold pin vertically with coil down and so that one coil is in front of both mounds and one coil is behind both mounds. When done correctly, it tends to self-center and stay in contact when you hold it. VoilĂ ! If you have three hands, you can hold the safety pin to the SBL pads while you are plugging USB in.
If you did SBL correctly, then only the green LED will be on. If you have more colors than that, you did something wrong or the SBL pads were not shorted together during the moment of power on.
Be aware that upper/lower case is important in Linux / OSX commands.
Open a command prompt. "Terminal" in Linux. Command prompt (cmd.exe or command.com) in Windows.
You need to know where you downloaded the files. The easiest way to flash this is to start by going to the directory where the downloaded files are stored:
cd whereever-the-files-are-stored
If you can successfully flash firmware, but it won't boot and run, then flashing and running the resurrection firmware is usually necessary:
This is because for a Revo or Sparky2 that has run TauLabs firmware, there is another hoop to jump through. After flashing the bootloader, and before flashing the real firmware, you must flash (and run for a few seconds) a resurrection firmware that clears a special place in the settings. This is not always necessary, and may be related to which TL version you used. LP/OP uses this area for logging, and fails to start up if it is corrupt. Use the following instructions to flash the bootloader first, then the resurrection firmware, then run the resurrection firmware till it finally finishes iniitialization (30 seconds) then (using the normal update and erase procedure) the real firmware that comes "built into the GCS" with standard releases.
Do this to use SBL to flash a bootloader via USB for Revo or Sparky2:
In the following, whateverfile.bin is something like bl_revolution.bin
Short SBL and plug the board into USB and type:
dfu-util -d 0483:df11 -c 1 -i 0 -a 0 -D whateverfile.bin -s 0x08000000
It takes a minute or two if you are using an entire flash image like e.g. ef_revolution.bin, but for the smaller bootloader files (e.g. bl_revolution.bin) it is just a few seconds.
You should see it say some technical stuff, then start printing dots (old version of dfu-util does not print dots, even a large file should finish within 10 minutes and come back to the command prompt). When it is done, unplug USB and unsolder the solder blob.
Emergency Rescue Procedure:
Flash and run the resurrection firmware:
- Run the GCS
- Unplug the board from power and USB.
- Go to the firmware tab in the GCS and press the Rescue button.
- Plug the board into USB.
- GCS recognizes the board in a few seconds.
- Press the "Open" button to navigate to and select the correct resurrection firmware opfw file that you downloaded.
- Press the Flash button to write the currently built firmware.
- It will start in a few seconds. First it will erase, then it will write (flash) the firmware.
- When the flash is done, press the Boot button which will cause the resurrection firmware to run
- Let it run for 30 seconds at least. On Sparky2, I see blue and green LEDs for 10 seconds, then just green for another 10 seconds, then the board boots normally (LEDs do the normal operation colors). You might also see just 20 seconds of green followed by normal operation LEDs.
Flash the normal flight firmware:
- Run the GCS
- Unplug the board from power and USB.
- Go to the firmware tab in the GCS and press the Rescue button.
- Plug the board into USB.
- GCS recognizes it in a few seconds and selects the correct firmware for you.
- Verify that the firmware is for the correct board.
- Press the Flash button to write the currently built firmware.
- It will start in a few seconds. First it will erase, then it will write (flash) the firmware.
Be aware that some versions of flashing tools don't print anything and bl files are small and thus fast to flash, but ef files are big and if the flasher looks locked up, you should give it 15 minutes and it will finish.
Edit: 2015 Dec 18
Added tested resurrection firmware for Sparky2 (removed old version) and greatly clarified the instructions. I got a TL Sparky2 firmware that consistently bricked my LP Sparky2 firmware so I could finally code a proper fix.
Edit 2016 Jan 10
Clarification that a Revo is a Revo and has nothing to do with CC3D.
Edit 2016 Jan 19
Added a Revo 1509 firmware with resurrection.
fw_revolution_resurrect2-1509.opfw
Edit 2016 Jan 22
Added Nano
bl_revonano.bin
ef_revonano_resurrect2_1509.bin
fw_revonano_resurrect2_1509.opfw
Edit 2016 Feb 13
Edited instructions a bit to make it clear when SBL Procedure can be skipped.
Edit 2016 May 24
Put an update about the new Sparky2 USB IDs at the top of the page.
Edit 2016 May 27
Instructions for adding udev rules to allow access for new Sparky2 USB ID
Edit 2016 May 28
Attached final release version (?) of bu_sparky2.opfw that can run on either the old (0b01) or new (9201) device ID.