Does anyone have any documentation on the internal software applications and/or operating system that Toyota uses in their computers? Being a software developer myself, I'd love to see some discussion on what is being used within the Prius and how 'hackable' the applications are. Does anyone know what OS is being used - maybe Linux? Maybe some of the commercial developers (PriusXM, Coastal, etc.) can divulge some info to people that want to tinker inside too. Thanks.
Don't know about the Prius. From what I know about embedded software in other cars, the OSes are usually custom -- and usually pretty minimal. And they're built to be intentionally non-customizable by customers/owners -- legal and safety reasons. However, as more cars become signficantly more "software-driven" (ouch! :roll, having a software environment that supports many different requirements (many co-dependent on other requirements) is going to be important for the developers themselves, and (to a lesser extent) for service people. I wish I was down at the Embedded Systems Conference in San Francisco this week -- I bet there would be some great information along these lines being presented. (And if there wasn't, you could always talk to Wind River about VxWorks in the Mars Rover... 8) )
To get an idea of how far away a widely-used embedded architecture (much less an OS) is for use in cars, take a look at this EE Times article on a proposed universal software system named Autosar, proposed by a consortium of German car makers. There was a good response (I thought) on Autosar on SlashDot:
Hmm, I accept the point about not tampering for safety reasons. Given that the throttle and the brakes are computer contolled, I'd rather not get a BSOD as I'm crossing over those train tracks !!!!
I'm not talking about modifying critical systems within the car's computer... More along the lines of NAV, radio, voice recognition, etc...
Remember two caveats: 1. There are many separate ECU's which control different things - it's not one main computer doing everything. 2. That being said, they still do talk to each other. I'm not sure how "intelligent" other ECU's are in rejecting "bad" commands (i.e. forced engine start or emergency braking triggered from a button press on the MFD) from ECU's that shouldn't be issuing them. Many of the ECU's are flash upgradable, so I imagine it's only a matter of time before someone gets a hold of a ROM and starts tweaking.
Right -- and then there's whatever the bandwidth is for the communications bus that all the ECUs communicate on. One unit starts to spew, and uh-oh, communications gridlock. And the brakes don't work... That said, I'm assuming that since access to the main screen is available for 3rd party products like PriusXML and Coastal Dave's MP3 player, that standards for allowing UI access to the screen must be published somewhere. Anyone know if that's correct?
I think the one thing that would make me cancel my Prius order and go buy another car would be the discovery that the Prius computer OS was Windows CE. (Hmmm... there appears to be no Emoticon for "deranged fear".)
No Windows there The Coastal Tech stuff is using existing connections with known protocols. In both cases, the devices connecting are Toyota parts themselves and already "know" how to communicate. The XM unit uses the AVC-LAN protocol, and our head unit probably already has the firmware code to understand what the XM unit is sending. As for the DVD unit - Dave has tapped the camera-in on the NAV unit in order to facilitate this. Controls for DVD itself don't appear to be on-screen, so there really is little communication there. Not sure how the audio portion of that has been handled, however. If you could come up with a device that spoke the AVC-LAN protocol in a way that the Prius understood, it could possibly work. The protocol, while documented, may be something shared only with partners developing devices - i.e. Panasonic, etc. Not sure if they're openly published.
I know nothing about the Prius hardware and auto electronics is not my area of expertise. I do know that these protocols are often designed with very well thought-out priority schemes. Some include physical-level protocols in which high priority messages can inhibit lower priority messages even when its a malfunctioning unit sending out the low priority issues. You certainly don't want your kids' playing with the power windows to interfere with ABS.
No problem. FYI - there are 3 main "lan"'s in the car - the critical functions occur on the CAN network (Engine control, braking, vsc, etc.), which runs at a much higher speed than the BEAN network (Power Windows) or AVC LAN (Multi-function display, audio, etc.). There is a bridge between the three of course so that they can inter-operate where needed (i.e. display showing engine trouble lights, etc.). I'm curious if that bridge is capable of filtering, or if it's more of a "router" of sorts - i.e. it has some intelligence on what it passes.
Sorry, I should have been more explict -- both MP3 players I know of are for the Prius Classic (though I hear hints that both are being updated for the 2004): Coastal Dave's View-Tech Multimedia System Jenson MP3 with adapter for Prius
if you're not afraid to get your hands dirty, someone has figured out how to install an Empeg/Rio Car hard-drive MP3 player. I have one of these in my current vehicle, and plan on installing one in the Prius if it ever arrives. Information is here, with pictures and detailed info starting about halfway through the thread. --Dan.