I need to update a bootloader on Intel Edison and I have encountered with the inability to perform recovery in case of firmware reflashing go wrong.
This only happens with devices with a battery connected. Device recognition works as expected and recovery starts, but after sending FW DnX data from the host, device keeps sending RTBD acknowledgement (Ready to Transmit Battery Data) and fails after that. Devices without batteries send RUPHS acknowledgement instead of RTBD. Also I tried to use different DnX loaders, recompile xFSTK so that it ignores RTBD without success. I cannot see any reason why battery presence may block firmware recovery and the problem clearly is in the DnX loader.
Is there any way to get DnX loader without checks for battery or its source code so that I can fix it by myself? As for now the only possible way to solve this problem is disassembling the binary and hacking it.
Hi @kirill.kobylyanskiy ,
Thanks for contacting us. I am not sure if what you are looking for is available at this point in time as the product has been discontinued. Taking a look at the Hardware Guide for the Breakout Board, I found this information in Section 2.1.1 (pg. 8):
The Intel® Edison Breakout Board has a single USB 2.0 interface. This interface is the primary method for
downloading code on J16. It is designed to support full USB “On the Go” (OTG) connections, using the ID signal. If
you plug in a USB micro B connector, the breakout board will act as a USB device, and it will take its power from the
USB connector. If you plug a USB micro A connector into it, the breakout board will function as a host. When you use the
Intel® Edison Breakout Board as a host in this manner, you must supply external power via J21 or J22. The
breakout board will convert that voltage to supply 5 V to the USB connector.
Note: If you power the breakout board with a battery, it will not supply power as a USB host.
The behavior you experience could be a limitation by design. You can find the source archive to the board's firmware here (iot-devkit-yp-poky-edison-20160606.zip) and the build instructions here, you could try poking around it and check if there is anything related to what you are looking for. Just to let you know also that there is a high chance these have errors as the software/guides aren't being maintained. I hope you found this information helpful, let me know if you have any questions.
@Luis_at_Intel thank you for your answer! The thing is I cannot modify hardware design of thousands of devices that I'm going to update, so that's why I'm trying to find software solution. And the problem is in DnX firmware loader (referenced everywhere as edison_dnx_fwr.bin). Do you know, is it possible to somehow get the source code of it? xFSTK tool is open-sourced and there is no problem with the host part of a firmware reflashing.
I am afraid that won't be possible, as I mentioned before some resources are not available at this point in time. I am not even sure if the DnX firmware was available for users when the product wasn't EOL'd. I apologize for any inconvenience this may cause.
One thing I could try I guess, is if you can provide more details of the setup (battery specs, how is the battery connected, how Edison is being powered, any physical connections present, is it an Arduino Kit or Breakout Board, Power Supply specs if any, how do you interface with the board, etc.) and see if there is anything I could do to try and help.
This is a custom designed board and I've already talked to our hardware engineers, it isn't possible to solve this problem on a physical side. Is there any way that Intel will share the source code of it? Or maybe it's possible to talk to Intel employees who were responsible for engineering that part? I'll be grateful if you see what are the possible solutions are here, because disassembling and hacking the firmware just doesn't seems right.
Hi @kirill.kobylyanskiy ,
I am afraid that is not going to be possible as resources are no longer available, I apologize for the inconvenience this may cause. I wanted to let you know that I attempted to recover an Edison module (on both Arduino Kit and Breakout Board) with the flashall script, and a lithium-ion battery pack attached to the board at all times (on Breakout board through J2, and on Arduino Kit through J2 as well) and I didn't see the problem you are having. The recovery flag available for the flashall script works fine and the firmware flash completes successfully as well.
May I ask which method are you using to recover the board and to flash the firmware? How can I attempt to replicate your issue?