The maintenance required light came on on a 2009 and Dr. Prius said it has a CA799 battery ECU code. That's the only code it found. I cleared it with Dr. Prius, will see if it comes back. Google turns up almost nothing on that code, except for one person asking what it is (and not getting an answer) and another saying he "caught a CA799 once". I'd think by now that ALL the possible codes on these would be known and the info on the web somewhere. All I've had to do to it since getting it with just under 140K miles is a new water pump, replace a missing tail light bulb access cover, buy new custom fit floor mats, and repaint the spoiler. The dealer changed the oil. Prius Doctor has always found P0300 with P0700 pending and 3 or 4 other "permanent" codes, even right after clearing with it or any other app. Is it lying to me about the codes? I've never noticed anything at all wrong with the car. Everything works as it should. No other diagnostic app I've used finds any of those codes, and no codes are shown in the car's own service menu on the display.
Sounds like an error in Dr Prius' interpretation of a longer code. Next time it appears, load up "Car Scanner" or "Hybrid Assistant" to see what they show.
Sounds like a flat-out bug in Dr. Prius. The first position of a DTC can only be P, C, B, or U, and the next position can only be 0, 1, 2, or 3, not A.
The Gen 2 Maint Required lamp is merely a 5000 mile timer for oil changes. At 4500 miles, it blinks a few times upon initial startup. At 5000 miles, it remains lit.Reset procedure is in manual.
Car Scanner found nothing. Prius Doctor (not Dr. Prius) has always claimed it has code C0300 with C0700 pending (always pending, has never changed) and C3F0A, P117F, P0A11, and C3F0A permanent. No other apps I've tried show any of these.
Dr. Prius is the app that said there was the CA799 battery ECU code until I cleared it. Peterson Toyota in Boise, ID is running a $35 diagnostic special. I might take it in for that, though it's around 75 miles away. Not likely the Toyota dealer in Ontario, OR is running such a deal. They quoted me over $600 to do a second key! I should have asked if that came with a full detail and triple wax job.
For 35 duckets you could pick up a "mini-vci" cable and do your own diagnostics using techstream (the same dealer technician software).
None of those codes are valid Prius codes. Seeing as Dr.Prius reported CA799, maybe it is the Bluetooth dongle that is the problem? Or maybe the apps are not set up correctly for a Prius?
Can only be a bug in the reader software. A DTC is read from the ECU as a sixteen-bit value: aa bb cccc dddd eeee The software looks at the two bits aa and shows P for 00, C for 01, B for 10, U for 11. It looks at the two bits bb and shows 0 for 00, 1 for 01, 2 for 10, 3 for 11. It shows each of cccc, dddd, eeee as one character, 0 for 0000 to 9 for 1001, A for 1010 to F for 1111. Even if there were something wrong with the dongle making it return the wrong value, there is no wrong value it could return that could make the reader software show "CA799" if the software worked right.
In that case, there must be something wrong with the implementation of both Prius Doctor and Dr. Prius for the OP. There are a lot of posts by other posters where Dr. Prius reports perfectly acceptable DTCs.
Rereading the thread, it seems that only one of the apps ever displayed "CA799" as a purported DTC. Surely that app also displays many DTCs correctly. It would probably be entertaining to have the source code and spot the bug and see how it manages to display many correctly and yet also sometimes display something that is no possible DTC. There's always a reason, but sometimes it's not very guessable.
It could be something as simple as not allowing for the possibility that it might receive garbage and drop out of a nested 'IF' or 'CASE' construct with the 'well the only option (with valid data) that is left is ...'. But of course, if the input data is not checked for validity and is garbage, then the result will be the last 'ELSE', 'CASE', or the 'OTHERWISE' option. As you say, sometimes it's not very guessable.
The kicker, of course, is that every possible 16-bit value can be correctly rendered as a DTC matching [PCBU][0-3][0-9A-F]{3}. So there really isn't such a thing as an invalid or garbage value there. If I had to guess, I'd be thinking about a bit of code that is somehow unexpectedly influenced by a bogus value somewhere else, or perhaps referring to a 'constant' area that is inadvertently overwritten somewhere else, etc. Those are the kinds of bugs you sometimes spend a long while hunting for, and then laugh really hard after figuring them out.
Issue has been resolved on both iOS and Android, thanks again for bringing this to my attention! CC100 -> U0100 CE0aa -> U00AA
The first of those I'll buy; agrees with what I suspected was going on. The second still makes me go 'hmm' ... maybe I never quite guessed right what the old translation was doing, but U20AA would have seemed likelier to me. But maybe that's moot here; I don't see anywhere in this thread where "CE0AA" (or U00AA, or U20AA) was ever read from the car.
What did the more common CA799 turn out to correctly be? Also, the revised code U00AA is not a valid Gen 2 code or one that I have ever seen reported.