Strange IOIO problem after firmware upgrade...

129 views
Skip to first unread message

AF

unread,
Sep 20, 2014, 10:48:58 PM9/20/14
to ioio-...@googlegroups.com
Hello all IOIO users.

My IOIO-OTG had application firmware version 0300 and was working fine at first.
Recently I have upgraded its application firmware to version 0500 so I used ioiodude to do it and the operation was aparently successfull (....... Done.).
However now when I try to connect it to my PC in bootloader mode the PC recognizes it and shows me the COM port but when in application mode it simply doesn't recognizes it and gives me an USB error... Also, the IOIO-OTG doesn't communicate with my smartphone anymore... But the red light still turns on!
I can read the bootloader firmware version with ioiodude but not the application firmware because the command line freezes when I try to do this...
What could be wrong? Is it possible that I fried the IOIO-OTG? I am thinking of that "H-A" switch because I read somewhere that we should connect the IOIO-OTG to the PC in "A" position... and I can't remember if I put it in "H" or "A" position when I upgraded the application firmware... Can you tell me what is the problem? Any help would be appreciated.

Ytai Ben-Tsvi

unread,
Sep 21, 2014, 4:02:47 AM9/21/14
to ioio-...@googlegroups.com

Can you start by downgrading to version 3.x and see whether the problem goes away. If it does, then it's clearly a software regression that we're dealing with here.

--
You received this message because you are subscribed to the Google Groups "ioio-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ioio-users+...@googlegroups.com.
To post to this group, send email to ioio-...@googlegroups.com.
Visit this group at http://groups.google.com/group/ioio-users.
For more options, visit https://groups.google.com/d/optout.

AF

unread,
Sep 21, 2014, 5:43:03 AM9/21/14
to ioio-...@googlegroups.com
Hi Ytai.
 
First of all, thank you very much for your support. I tried what you have said and the downgrade was successfull but the problem still persists... any ideas?

AF

unread,
Sep 21, 2014, 6:24:19 AM9/21/14
to ioio-...@googlegroups.com
I should add that I am connecting the board with the switch in "A" position. And also that it only gives me an error when I connect it with without doing the "boot-GND" bootloader mode before. This is what the PC says: "Unknown USB Device (Set address failed)"...

black7...@netzero.com

unread,
Sep 21, 2014, 10:49:53 AM9/21/14
to ioio-...@googlegroups.com
Oh Man...Your problems sound just like mine several month ago.

When connect via USB to the PC, the OTG switch needs to be A (auto).

Regarding port number double check everything, and then reboot the PC, particularly if you have the IDE running like Eclipse. I would also reload the new firmware.

One other gotcha with the new firmware - be sure everything in the IDE is matched to the firmware.

When you connect the phone via USB, the OTG needs to be H (host), if you are connecting BlueTooth dongle switch it to A.


Hope this helps.

AF

unread,
Sep 21, 2014, 1:26:26 PM9/21/14
to ioio-...@googlegroups.com
black7 thank you for your comment.

This is really frustrating... what's strange is this:

1. now I am connecting the board to the PC always in A position and ioiodude can always read the Bootloader version (when in boot mode).
2. however ioiodude cannot read the Application version (when not in boot mode).

Also there's another thing:

3. when I connect the smartphone to the IOIO (IOIO with external supply + OTG cable "master side" connected to IOIO's micro-USB port) it comunicates with the smartphone in both H or A positions!
4. however when I connect the cable "master side" to the micro-USB port of the smartphone it can feed the IOIO but cannot communicate with it (in this case IOIO has no external supply)...

I think there is a problem with the IOIO when in Acessory mode and I don't what it is... it seems to not communicate with both PC and smartphone in this mode.
I think I tried almost everything. Rebooting PC, installing new ioio.inf file, writing new app firmware, etc... And everything in Eclipse is matched by the way because I have another board with v5 app firmware (ioiodude reads both bootloader and app firmware) and the app I developed works just fine when the IOIO has no external supply and the smartphone is host.

davidmc

unread,
Sep 21, 2014, 2:27:41 PM9/21/14
to ioio-...@googlegroups.com
What OS are you using?

Chad Kennedy

unread,
Sep 21, 2014, 2:43:37 PM9/21/14
to ioio-...@googlegroups.com

You are going to need to ignore everything past number 2 below because all bets are off when you don't get the firmware straightened out. Its the little things that build up and get the IOIO off track.

Are you sure the proper procedure is being followed for the firmware upgrade? I mean this genuinely. It is the simple things that got me and the subtle details. It took me 3 days to get my first IOIO working (lots of reading and trial & error mis match firmware etc). My second IOIO the first thing I did was update the firmware and that took me several tries with exactly what you are describing. Need to get the IOIO to respond to show a positive firmware update not the boot loader as in having the IOIO report it has firmware IOIO0500 independent of the install process.

I feel your pain. It is frustrating.
--
You received this message because you are subscribed to a topic in the Google Groups "ioio-users" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/ioio-users/qY-fe0ikwLs/unsubscribe.
To unsubscribe from this group and all its topics, send an email to ioio-users+...@googlegroups.com.

To post to this group, send email to ioio-...@googlegroups.com.
Visit this group at http://groups.google.com/group/ioio-users.
For more options, visit https://groups.google.com/d/optout.


____________________________________________________________

AF

unread,
Sep 21, 2014, 2:44:12 PM9/21/14
to ioio-...@googlegroups.com
Windows 8.1 x64

AF

unread,
Sep 21, 2014, 3:18:50 PM9/21/14
to ioio-...@googlegroups.com
Hello Chad,

Yes it is indeed frustrating... The "funny" thing is that I have another board in the same situation but I could resolve it one time and ioiodude showed application firmware version! Also, the smartphone could communicate with it in acessory mode (no external supply)! However this board sometimes works other times simply doesn't and I don't know why... but the other one just does not want to work! I totally understand your questions. This is the procedure I have done:

1. put switch in A position
2. short BOOT pin to GND pin (bootloader mode)
3. connect IOIO to PC and remove short (IOIO yellow led blinks)
4. ioiodude --port=COMx versions
5. ioiodude --port=COMx write App-IOIO0500.ioioapp
6. ioiodude --port=COMx --reset fingerprint
7. ioiodude --port=COMx versions
8. ioiodude --port=COMx --force write App-IOIO0500.ioioapp
6. ioiodude --port=COMx --reset fingerprint
7. disconnect IOIO from PC
8. short BOOT pin to GND pin (bootloader mode)
9. connect IOIO to PC and remove short (IOIO yellow led blinks)
10. ioiodude --port=COMx versions
11. disconnect IOIO from PC
12. connect IOIO to PC
13. ioiodude --port=COMx versions

black7...@netzero.com

unread,
Sep 21, 2014, 3:52:54 PM9/21/14
to ioio-...@googlegroups.com
Ok. So the second IOIO board is showing the latest firmware? And still behaves inconsistently? Did you apply external power to the board when doing the firmware upgrade(s)?

I too am running 8.1. Does everything checkout OK in your device manager meaning IOIO OTG is shown under PORTS (COMM & LPT)?

AF

unread,
Sep 21, 2014, 5:12:33 PM9/21/14
to ioio-...@googlegroups.com
black7,

Both boards are showing inconsistent behaviour. I only managed once to show the app firmware on ioiodude for one of the boards (don't know why it worked that time, the procedure was the same for both boards). Now I can't show it for both boards and one of them sometimes works with my smartphone other times doesn't. The other one doesn't work at all. This makes no sense I know...
And about upgrading the firmware with the external power supply: that's what I was trying to say on the first post, it is highly probable that I've done that and also with H position on switch... I can't remember but I think I've done it.
At first the COM ports only appeared in H position. And when in A position they appeared as unknown devices. Now after I did all those tries and procedures I managed to make them recognized as COM ports in both H or A positions.

Chad Kennedy

unread,
Sep 21, 2014, 5:49:44 PM9/21/14
to ioio-...@googlegroups.com

My experience with PIC chips has taught me that "not enough power"
during the burn/flash/programming time will give significantly
inconsistent results. Your problem is sounding more like that since
you've basically done it on two IOIOs and not a procedural problem like
I faced. At the time of updating the firmware there was insufficient
power applied or the IOIO was in H instead of A - these are my theories.
I would encourage you to re-update and/or roll back to a prior
versionsV0330. fwiw I used a 9V battery and it did not last long
powering the IOIO OTG or for that matter any PIC chips from my projects
I used prior during the flasing process. I dropped it quickly and found
a usb power supply terminated pins on it and connected the IOIO. My plug
runs 5V DC @ 2A. Try updating again verifying all power needs. I am
going way out on a limb for this IOIO OTG PIC model but I know my other
PICs require 12+ Volt minimum to achieve a good flashing, the PC's USB
will provide some power, but is likely needing to be supplemented with
external. Again stating this from experience and not looking at the
IOIO's PIC's specifications/requirements.
____________________________________________________________
The End of the "Made-In-China" Era
The impossible (but real) technology that could make you impossibly rich.
http://thirdpartyoffers.netzero.net/TGL3241/541f47d59ba4247d57d79st03duc

AF

unread,
Sep 21, 2014, 7:58:09 PM9/21/14
to ioio-...@googlegroups.com
I see your point Chad. Actually now I am trying to upgrade/downgrade the firmware in A position + external supply (USB 5V 1A to IOIO JST connector, homemade adaption made by myself, works fine) but still no luck... I don't know what to do anymore... I think I have tried almost everything!

Chad Kennedy

unread,
Sep 21, 2014, 9:27:49 PM9/21/14
to ioio-...@googlegroups.com
Well, short of sending both to someone who has done it before and has a known go physical setup. You may have only one option, buy another one or two...

I would be willing to try the updates for you if you pay for shipping both ways. This assumes shipping is reasonable and you are in the U.S.

Maybe time will pass and you'll have an "Ah ha" moment. Maybe buys some fresh 9V and try the flashing. A fresh 9V should be enough to at least flash.
--

AF

unread,
Sep 22, 2014, 8:10:23 AM9/22/14
to ioio-...@googlegroups.com
That's what I've done yesterday. I've bought another one. I hope now that this one will be upgraded with no problems. I will do it in A position with no external supply because the board that is OK has been upgraded that way.
Thank you for your offer Chad but I live in Portugal. You are a nice guy.
I will attempt to do other procedures in order to fix these two boards... I will post here updates if I succeed because this seems to be a common issue. If Ytai has personal time for that it would be great if he posted a section with a title like "What you must do before upgrading/downgrading IOIO firmware" in the beggining of this page: https://github.com/ytai/ioio/wiki/IOIO-OTG-Bootloader-and-IOIODude. In a short text he could warn IOIO users what position of the H-A switch they must use before connecting to the PC and if they should use external supply or not. Because I think that many users find this confusing and then mistakes occur. Btw, Ytai please correct the link in the sentence "The first thing to do is to grab the latest version of IOIODude" of the same page to version 1.2. I guess you missed it.

Thank you all for your responses and feel free to keep trying to solve this issue. I will do the same.

Ytai Ben-Tsvi

unread,
Sep 22, 2014, 1:21:18 PM9/22/14
to ioio-...@googlegroups.com
A few comments regarding the latest posts:
  1. I see no evidence that we have any problems here related to programming not succeeding. I believe the comments made earlier about having a stable high-voltage supply are completely irrelevant in this context, since there's no external flashing involved and in either case there is no high-voltage programming on the PIC24.
  2. The A/H position should always by on "A" except for cases where you're trying to compensate for having an incompatible USB cable that will not automatically put the IOIO in host mode. Regardless, having it in "H" mode should not do any permanent damage (except that the IOIO will not work in a device role).
  3. Externally powering the IOIO when it is in device mode is a valid option. In this mode it will consume its operating current from the external source. For booting into bootloader mode, one has to consider that power-cycling will not take place by detaching the USB cable if the IOIO is externally powered. So in general it is easier to do all IOIODude-related stuff without applying external power.
Having said all that, we still seem to have a real problem here that is likely not v5.x firmware related, that is, that the IOIO does not enumerate correctly in non-bootloader mode.
Any chance you can attempt this on a different computer, just for sanity-checking?

--
You received this message because you are subscribed to the Google Groups "ioio-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ioio-users+...@googlegroups.com.

AF

unread,
Sep 22, 2014, 3:11:38 PM9/22/14
to ioio-...@googlegroups.com
Ytai,

Thank you for your answer.

Always "A" position from now on [checked].
No need for external supply [checked].

When you say "should not do any permanent damage (except that the IOIO will not work in a device role)" do you mean it will not never work in device role again after "making the mistake" of flashing in "H" mode? Or do you mean that it simply will not work in device role when in "H" mode and that if we flash it in this mode it will not do any damage? I guess you mean this last one.

And about the USB cable just to make clear: one should use a simple "USB type A to micro-USB type A or B" cable right? No need for OTG on one of the ends of the cable right?

About IOIO not enumerating correctly in non-bootloader mode I think you are totally right. Sometimes it is not recognized as COM Port but as an Unknown USB Device. Also, sometimes I have to keep pluging it in and out and "Find new hardware on Windows" and then "Update driver" using ioio.inf. After doing that it is recognized as COM Port but ioiodude still can't show anything in this mode (non-bootloader). When I plug it out and then in again Windows may recognize it or not and I have to do this process again.
Ytai, I am going to try on a different computer very soon and post updates. Once again, thank you for your answer.

Ytai Ben-Tsvi

unread,
Sep 22, 2014, 4:14:58 PM9/22/14
to ioio-...@googlegroups.com
On Mon, Sep 22, 2014 at 12:11 PM, AF <fubar....@gmail.com> wrote:
Ytai,

Thank you for your answer.

Always "A" position from now on [checked].
No need for external supply [checked].

When you say "should not do any permanent damage (except that the IOIO will not work in a device role)" do you mean it will not never work in device role again after "making the mistake" of flashing in "H" mode? Or do you mean that it simply will not work in device role when in "H" mode and that if we flash it in this mode it will not do any damage? I guess you mean this last one.

Yes. There should be no permanent damage.
 

And about the USB cable just to make clear: one should use a simple "USB type A to micro-USB type A or B" cable right? No need for OTG on one of the ends of the cable right?

Yes, A on the PC side to micro-B on the IOIO side (NOT A to micro-A, because that would be equivalent to forcing the host mode switch to the "H" position).
 

About IOIO not enumerating correctly in non-bootloader mode I think you are totally right. Sometimes it is not recognized as COM Port but as an Unknown USB Device. Also, sometimes I have to keep pluging it in and out and "Find new hardware on Windows" and then "Update driver" using ioio.inf. After doing that it is recognized as COM Port but ioiodude still can't show anything in this mode (non-bootloader). When I plug it out and then in again Windows may recognize it or not and I have to do this process again.

Another thing to look at is that if you have a USB hub in the middle, maybe bypassing it might help.
 
Ytai, I am going to try on a different computer very soon and post updates. Once again, thank you for your answer.

Great. Thanks! 

AF

unread,
Sep 22, 2014, 7:57:48 PM9/22/14
to ioio-...@googlegroups.com
Ytai,

Just tried on a different PC. No luck. Same issue happens. Unknown USB Device in non-bootloader mode. Cannot read app firmware in ioiodude when in this mode. (connected the IOIO in "A" position with no external supply)
About the USB hub in the middle, I had already verified that before. With or without it same issue happens too.
I don't know what to do anymore, this is so frustrating...

Ytai Ben-Tsvi

unread,
Sep 22, 2014, 10:06:11 PM9/22/14
to ioio-...@googlegroups.com

With the IOIO connected to a PC in non-bootloader mode, can you please measure the voltage between GND and the middle leg of the host switch? It should read about 2.1V.

AF

unread,
Sep 23, 2014, 7:55:12 AM9/23/14
to ioio-...@googlegroups.com
Ytai,

2.05V.

heikki...@kolumbus.fi

unread,
Sep 23, 2014, 9:34:02 AM9/23/14
to ioio-...@googlegroups.com
Hi !
I have similar problems as here reported thread: https://groups.google.com/forum/#!topic/ioio-users/_GlTiiui5tI
I never managed to upgrade using Windows 8.1, but Windows 7 is working nearly ok. In the bootloader mode PC is connected, but not in the application mode. However Android HELLO IOIO connects and reports version 5. Also my own Android app using ioiolib v5 connects
I am a little confused about USB cables: The board that has problems is from Seedstudio, it came with red USB cable and micro A usb in IOIO side. I made upgrade using it.
I have new boards from AliExpress. These are with black USB cable with more common micro B connector on IOIO side. Is it so that upgrade cannot be made with these black cables.

AF

unread,
Sep 23, 2014, 10:49:06 AM9/23/14
to ioio-...@googlegroups.com
heikki, I have upgraded my 3 boards (Sparkfun) from app firmware 3.3 to 5.0 in Windows 8.1 x64.
One of them was brand new and never used before and was upgraded in A mode with no external supply. Everything OK no problems. (upgrade done with USB-A to micro-USB-B cable, no OTG ends)
The other two were already used with a smartphone and after the upgrade they started to have the issues already described here (before the upgrade they were OK). For these two, the upgrade has been done certainly in H mode and with external supply for the first time. After that it has been done through every possible way. (upgrade also done with USB-A to micro-USB-B cable, no OTG ends)
As Ytai confirmed in this thread, use a normal USB-A (PC) to micro-USB-B (IOIO) connector. No need for OTG ends and do not use the ones that come with IOIO (micro-USB-A) because they force IOIO to be in H mode.
This non-bootloader issue really seems to be very common...

Ytai,

2.05V. (in case you missed my last response)

Ytai Ben-Tsvi

unread,
Sep 24, 2014, 11:40:57 AM9/24/14
to ioio-...@googlegroups.com
Heikki, you seem to have gotten your cables wrong. When connecting to a PC you don't need any adapter cable, just a common A-micro-B cable. As soon as you plug the adapter into the IOIO it will think it is a host, unless the adapter is not a standard one, in which case the IOIO will not act as host even when it should (hence the reason for having the host mode switch).

I'm sorry I cannot be of more help with diagnosing the enumeration failure. I just don't have a setup I can use to reproduce this issue. By the way, has any of you attempted a configuration wipe at any point?

AF

unread,
Sep 24, 2014, 1:01:16 PM9/24/14
to ioio-...@googlegroups.com
Ytai,

Any comment you make here is always appreciated even if you can't help. So I thank you for that.
Configuration wipe? on the IOIO's? or the PC (ioio.inf, etc...)? Could you be more specific please? I don't know how to do that on the IOIO's or what you really mean...

Ytai Ben-Tsvi

unread,
Sep 24, 2014, 1:18:47 PM9/24/14
to ioio-...@googlegroups.com
The wiki page about IOIODude has a section about that. The idea is resetting the IOIO's clock calibration values, in case it got de-tuned for some reason. Once you do that, the next time you connect the IOIO to a PC it will recalibrate itself from the host PC (automatically).

AF

unread,
Sep 24, 2014, 2:06:10 PM9/24/14
to ioio-...@googlegroups.com
Ytai,

Just to add this: The board I've bought the other day has just arrived (from Sparkfun too). It had app firmware v3.3 and I just updated to v5.0 with no problems. A mode + No external supply + normal USB-A to micro-B cable. IOIODude reads both bootloader and app firmware with no problems at all.
So it's confirmed, it has to be one of these options I guess (hope it makes sense):
1. The "H mode + external supply" flashing damages the IOIO board in the way that it will no longer work correctly in A mode for some reason
or
2. There is no damage but some unknown problem about non-bootloader mode with Windows and/or the IOIO board appears after doing option 1

De-tuned clock, could be, never thought about that. I'll see what I can do and I will post updates soon. Thank you once again Ytai.

AF

unread,
Sep 25, 2014, 11:19:41 AM9/25/14
to ioio-...@googlegroups.com
Ytai,

Tried configuration wipe and oscillator calibration (I think I've done it correctly) but still no success. PC only managed to recognize the boards in non-bootloader mode once. But when I plugged the boards again it didn't recognized them anymore. And ioiodude never recognized the App firmware even when the boards where recognized by the PC. There is another thing: when in bootloader mode I can always write the same App firmware version without having to type "--force" command even if I had wrote that same version before...

Ytai Ben-Tsvi

unread,
Sep 25, 2014, 2:01:01 PM9/25/14
to ioio-...@googlegroups.com

Apparently, flashing doesn't succeed for some reason. Are you using the latest version of IOIODude? Have you tried going through the upgrade process from a different computer?

AF

unread,
Sep 25, 2014, 2:21:39 PM9/25/14
to ioio-...@googlegroups.com
Yes.

AF

unread,
Sep 26, 2014, 6:46:34 AM9/26/14
to ioio-...@googlegroups.com
Ytai,

I have been trying more upgrades but no luck at all. I also take this opportunity to ask you the following:
I have been reading the IOIO-OTG Power Supply page (https://github.com/ytai/ioio/wiki/Power-Supply-OTG) but nothing is said about what I am going to ask.
Is it possible to power external hardware through 3.3V output when the IOIO is being powered through USB (smartphone only)? If so, how much power does it draw? "400mA for any external 3.3V peripherals"? I could test it but it safer to ask you first...

Ytai Ben-Tsvi

unread,
Oct 3, 2014, 12:25:29 AM10/3/14
to ioio-...@googlegroups.com
It is indeed possible. It will draw as much current as your load draws. As noted on the page, it is usually not a great idea to draw more than, say, 100mA. 400mA will work, but might get a little hot.
Reply all
Reply to author
Forward
0 new messages