When Appliances Revolt
conaone writes "From the "disconcerting" file, Baseline has a weird story about how the increase in use of embedded operating systems is causing strange things to happen to consumer products. Their example is the use of Windows CE in the BMW 745i, which apparently occasionally goes nuts. The best is the list of video clips showing off the possessed car."
Boy, if that isn't a case for Open Source, I really do not know what it.
"Don't mind me cutting myself on Occam's Razor"
er, no.
this is what the videos are really about:
Crazy Trunk - trunk operates intermittantly, sometimes not opening on button press, and other times opening partially then falling.
Spitn'Key - key uses a spring-loaded insertion/removal system that does not latch correctly if the key is put in at an odd angle.
Phone Dead - selecting the number, then pressing "talk" causes the number to disappear.
Transmission - car goes in and out of gear, revving the engine when it does it.
On one of the later pages there's a blurb about how GM intends to soon make a drive-by-wire car that can be operated via a joystick, or other familiar game controller.
Somehow the thought of all the little 16-year-old GTA addicts getting behind the gamepad of mommy and daddy's SUV for the first time, already knowing how to "drive" won't fill me with a feeling of safety on the streets. It was bad enough trying to drive across town after playing Crazy Taxi.
Sometimes there are good reasons to make user interfaces different...
Their example is the use of Windows CE in the BMW 745i, which apparently occasionally goes nuts.
I was actually surprised to see windows running in a police car. I would love to see any info on how reliable and how good the windows machines in the police cars are.
Rigo
Ok, having the worked with many Real time OS's and embedded OS's... what I want to know is why the hell do they need Windows? It's bloated, the interface is not suitable for a driver (as in car driver)...
:P ) Stick to a modified version of Linux. I don't recall the exact build name, but there is a mod (or more than one) out there that make Linux practically realtime... and that's all you need for these gizmos... operating a phone, changing seat positions, etc... There you go... cheap, damned reliable (be it stripped down linux, or some other RTOS), no crap to mess up the functionality, since the only thing in the code is the bare minimum OS and drivers to control the devices you need to control (nothing more, nothing less), and a simple UI.
Develop your own RTOS... hell, grab any simple Real Time OS, be it VxWorks for example, add a display driver and an input driver (which can be developed at a very reasonable cost (Take a look at what the military uses..) Then from there add routines to communicate with your 70 or so embedded processors and voila, a stable, easy to maintain, not full of useless crap, system. Don't want to invest in an RTOS? (They can be pricey...
Ok... Someone care to tell me how much Microsoft paid to get BMW to use their WinCE for something that it clearly is not good for? Dealing with lots of unique and independent devices is not Microsoft's strong suit. To get WinCE to be reliable (as the previous poster put it), you would need to strip it to nothing more than a damned memory manager and a Task scheduler, and write custom drivers for EVERYTHING. Why bother? It's easier to start with just a bare bones OS. There are SOOOOO many other, BETTER, choices out there... There had to be one hell of a good bribe on Microsoft's part... Either that, or some dumbass making decisions at BMW don't know dick all about embedded device programming...
That's my $0.02... And no, I'm not a microsoft hater... I just don't agree with what WinCE is meant to be used for...
---
Programming is like sex... Make one mistake and support it the rest of your life.
You are missing building your own host/target debug environment. You are missing tools and methods to reduce the footprint of your system to save $$ on RAM and mass storage for your high volume, cost sensitive application. You are missing watchdogs so a tow truck isn't required when a pointer goes wild. You are missing headless booting. The list goes on and on.
If you've never built a cost sensitive or limited power/ram/disk/clock application then you just don't think about these things.
-- Jack
Consider the following (idea inspired by this video):
- You put a copy-protected CD in your car CD player
- Your car suddenly behaves in an unexpected and unpredictable manner directly because of the non-standard effect of said CD
- You, say, get a speeding ticket because the display is now in KM/H instead of MPH.
While you are certainly responsible for the manner in which you operate your vehicle, what liability would the car manufacturer have, or the embedded OS vendor (Microsoft)*, or the company that released the CD?(I'm thinking back to the copy-protected CDs that would lock up Macs hard)
Certainly the excuse "my car's computer crashed" would hold about as much weight in court as "the dog ate my homework." But once fined (having incurred a loss as a direct (?) result of negligance), would the owner have a legal recource against the (car mfg | OS vendor | record company)?
With the continuing march of integration, what liabilities will be incurred when a CD crashes the OS on something (larger | more expensive | more dangerous) than "just" a PC? It sounds to me like a possibility for scaring the RIAA away from doing weird things to CDs... but IANAL, and I think this could use some discussion.
* In this case I'd expect, more likely than not, that Microsoft's contract with BMW absolves them of all liability, thus securely pinning all lawsuits on BMW.
"...America's great minds of today, teaching America's great minds of tomorrow. Poor bastards." -- A Beautiful Min
I don't care what the OS is. Unless it's cranked out by that same company that writes software for the space shuttle (or someone like them), I would NEVER turn control for that many parts of my car over to a computer. I've been working with technology long enough to know that I wouldn't trust my life to it on the freeway. If that means I drive the same old cars for another 50 years, so be it.
Using a proprietary OS would make it much harder for a single, easy to write virus to be unleashed. If there's a widespread use of the same OS, what's to stop spread?
How so? Windows is a proprietary OS and has more than its fair share of virii which spread partially because of the gaping security holes found by outsiders without access to the code. All a potential virus writer would need is access to one of these cars to start probing it for vulnerabilities. If you're meaning that a virus couldn't jump from a computer's OS to a car's and possibly back again (and therefore couldn't spread over an internet made of computers); I wouldn't be so sure, cross-platform virii exist. Personally I'd never drive a car where the computer has any control over critical systems.
(OT: reminds me of a sig I saw somewhere that read: "As a computer I find your faith in technology amusing")
On a more serious note, while this is funny, it shouldn't happen. A computer is one thing. There are lots of different pieces of hardware and other things to have to deal with. So you have to expect that something will go wrong every once in a while with a well written OS and software. But there is no excuse for crashing and random behavoir in a closed system like that in a car. People don't like to reboot their VCRs. If you had to reset TiVos contantly, do you think they'd be so popular? You should be able to use something for months without a single problem. My DirecTV reciever, my VCR, my Linksys Router, my networked HP Laserjet, and other things don't need any of my attention. They work without me having to reset them. Do they have problems? No, but even when something happens, just turning it off and on and that always fixes it. I can do it myself. I shouldn't have to call a repairman to come reboot something. So nothing should ever go wrong, but if it does it should be easy for the user to make it work correctly again. Just turning the car off and back on should fix the problem. There is no excuse for being lazy and having bugs in a closed system. (Closed in that the user doesn't change the hardware on it like they can upgrade a computer)
To end, I think it's fitting that I add this lyric from the song A Meticulous Analysis of History from Pinky and the Brain...
Comment forecast: Bits of genius surrounded by a sea of mediocrity.
That's what it would cost you, after dealer mark-up. A "computer" in a car is normally a "microcontroller," a single chip. So what they're really telling you is that it would cost $10k for 6 chips. And I can assure you that the unit cost of those 6 chips is under a dollar a piece.
If you can cut down the number of computers needed, you can lower the price of your car or increase the profit margin. Or both.
Increase profit margin, if that's possible. Are you really serious when you say they'd charge you $10k to replace the "6 computers" in your car???
The down side to that is that if the single computer fails, all those functions go away.
The problem is when you use OS's like CE it is entirely possible that the single computer will fail. When you develop it all on a microcontroller and get rid of all the fancy BS, you can get everything into a single chip and be stable.
You know, I really think it comes down to keeping Microsoft as far away from anything of any importance. And I say that in all honesty, not just to score points with the anti-MS crowd here.
It's a good question, and one automotive developers haven't really had to worry about until recently. When all they had to code was realtime control code for those 70-odd microcontrollers, they certainly didn't need an OS.
But the developers (or rather their marketing departments) have bigger ideas. A car is no longer but a conveyance - it's an environment, an entertainment centre, a home. So they mandate navigation, remote and stored diagnostics, centralised control of various settings (A/C, seat position, etc.), radio stations, RDS, CD control, media (MP3 etc.), radio, video (disney for the kids), and all of this controlled by voice input and giving voice output. Those are requirements a workstation or PC could scarely manage five years ago. Add to that the significant issue that most of those applications will be coming from third party vendors. Anyone implementing such a system has little choice but to put in a decent 32 bit microprocessor, a fair chunk of RAM (several meg, going on 16), and a half-decent OS.
WinCE (for automotive, whatever...) is certainly the worst choice. QNX, VxWorksAE, or Embedded(orRT)Linux would certainly be better - but the fundamental problem remains - this is HARD to get right.
Don't be fooled into thinking this is just an amusing diversion, where the worst that can happen is that your radio doesn't work for a while. This is a major safety issue - simply because the "infotainment system" doesn't have a wire to the steering or the accelerator doesn't mean it can't kill you. Imagine you're driving through a busy freeway intersection, at high speed in pretty heavy traffic. Suddenly the radio turns on, to a bad (noisy) channel, at FULL VOLUME. IT HURTS. YOU'RE SURPRISED. YOU LOSE CONCENTRATION FOR A SECOND OR TWO. YOU DIE. So do your kids, and those of the guy in the subaru in front. The lady in the dodge behind you loses a leg.
Also, don't think this is confined to high-end cars like BMW and Cadillac - auto manufacturers try out new stuff in the high-end lines before they push it further down the product line. Soon you won't be able to buy a vehicle without this stuff. And __nobody__ is doing a good job of making it.
## W.Finlay McWalter ## http://www.mcwalter.org ##
Pinning the problems on the user is really wrong in this case. This system was destined to fail. The only one that i've tried that was worse was in the Buick Reatta. (Anyone remember that?)
You don't need an embedded operating system. There are plenty of things available that will do a better job. Frankly, I'm surprised BMW didn't subcontract some software development shop to do some nice ADA work. Yes, ADA still lives in Europe, and there are some very nice things about it like --- you don't need an operating system to execute an ADA application. It's exception handling mechanism, coroutines, and concurrency make it really shine in this kind of environment. Go figure...
(Geesh.. no karma whoring here--ok, just a littel bit-- but can someone throw me a bone to get above 'BAD'?)
[Of course it's client-server; it runs on a LAN]
While that may be a joke, the new Saab 9-3 (which everyone should look at...especially when it comes out in Arc/Vector versions, byootiful car) also depends heavily on computers (though thankfully it doesn't have the nasty iDrive interface.)
The interesting thing is that if these vehicles (new 9-3) lose the computer input, the car will just shut off. There is a 45 pin connector to the central computer that somtimes gets a little loose, and if the computer is lost, the car turns off. Other very random sounding error messages have been popping up (many of them long and unwieldly--"bi xenon headlamp leveling failure" even if the levellers are working perfectly fine.) So, either you turn off car, or take to the dealer, who gets periodic software updates. So yeah, software updates to exist..and SP1 for the 2003 9-3 has already been released. No doubt it has been released for the 745i as well.
I have seen these cars kaput on the side of Bay Area streets and freeways three times now. For a car that's been on sale for only six months, that's pretty scary. BMW has apparently had a lot of explaining and backpedaling to do when people come back into the dealerships time and time again with cars that act "weird".
What's the diffrence between complex enough firmware handling multiple tasks and an embedded OS?? Oh yeah - NAME.
To some extent, scale, and I think modularity too.
I have been programming self-contained 8 bit chips that barely has RAM space, doesn't have memory management hardware but I do manage six different devices, four external and two internal, some through polling based I/O and some to interrupt based I/O. Is this an embedded OS?
For one, the entire piece of software is about 6k words, and the only thing missing is modularity. I can't just drop in someone else's software into it in binary or recompiled source form, like one might be able to on an embedded OS.
So, why is CE the worst choice? This is not trolling, I really want to know. I've used several RTOS's, including CE, and can't think of anything that would necessarily impair it vs. the others you mentioned.
No sig, sorry.
You trust NASA? The same people who have computer related incidents rather frequently. How many launches were delayed due to computer problems?
:) The only error I've seen in a GM since say the 1985 model year, was when the stupid resistor in my key stopped making proper contact with the ignition lock..
:)
:) I wouldn't be surprised in the least to find out that the guys programming those things are Linux hackers in their spare time.
But, that's not the point. Their programmers have gotten much better (or less problems are reported).
Your car is already coontrolled by computer. Everything from the climate control and door locks, to every function of the engine. Not many cars even have distributors any more.. The ECM runs everything.. Quite a few cars don't even have throttle cables any more.. The computer reads the input of your foot, and adjusts the throttle accordingly. Makes it easier to work your ABS and Traction Control functions.
I wouldn't trust WinCE in my car though. I'd trust the guys that GM has putting together those little assembly programs that run my car now, to build an OS first.
I took my 2000 TransAm WS/6 racing on a road track a month or so ago, and have renewed faith in their abilities.. I'd go absolutely flying (over 100mph) into a turn, to stand on the brakes at the last second. Not just hard braking.. I was pushing as hard as I could.. I'd feel the ABS push back just enough, and while it was, I'd be downshifting. Never lost control. I was driving hard enough to stay faster than the all Porsches and some Corvettes on the track. The Z06 Corvettes though, *THAT* is some performance.
I won't even consider how many computers I was abusing at the time.. Sure as hell the engine's computers didn't give up on me once.. Faster than I could get my foot from the brakes to the gas, it was ready to shove me back in the seat, and pull away from everyone.
I have yet to find a Microsoft logo on my car..
Serious? Seriousness is well above my pay grade.
...The king asked, "How would you design an embedded computer for it?" The engineer replied, "Using a four-bit microcontroller, I would ..."
The second advisor, a computer scientist, immediately recognized the danger of such short-sighted thinking.
A third advisor, a knight, broke in:
"Why do we need to add a computer? Will it improve the taste of the toast?"
I suggest next time you're about to enter a turn at 100mph, you back it off _before_ you get into the turn. Late apex braking is cool and all but I wouldn't risk it in a RWD car. I guess you can always look like a hero exiting the turn in a monstrous powerslide with smoke pouring from your back tires, but I imagine it'd hurt your times.
:)
Anyway, I really hope nobody ever finds a Microsoft logo on their cars..except BMW.
Yes, Germany is an industrial powerhouse, and the likes of BMW and Mercedes are world renowned for their quality of build and mechanical reliability. However, in my experience Germany has never been outstanding in the field of electronics (nor has much from anywhere else in Europe either). If BMW engineered this IDrive thing in Germany I'm not surprised it came out so quirky.
I've driven a few cars of European origin (or those that use Euopean components) and have found that the electrical/electronic systems in all cases were the weak points. It doesn't matter if the components--from the hall-effect sensors, MAPs, up to the ECM unit--has Bosch (Gremany) or Renix (France) or whatever, they have been a source of aggravation.
It seemed there were some exceptions. I owned a Renault awhile back that had a nifty little travel computer that did gas mileage, average speed, trip odometer, etc (sourced by Jager if I remember right) that always worked and was remarkably accurate--even when the car was over 10 years old. The same car was also equiped with a nice Blaupunkt radio. When I had to get behind the dash to fix other problems I had to pull out both componenets. Much to my dismay, both the Jager travel computer and the Blaupunkt radio were "made in Japan". Hmm...so much for the exceptions. On the other hand, things that DID go wrong (intermittent wipers, turn signal/horn/everything stalk Renalt was infamous for, intrument cluster illumination) all involved parts that were made in Germany or made in France.
I'd say as far as electrical and electronic engineering goes in may cases, Germany raks marginally better than France (which ranks marginally better than Britain). If you doubt me then look closely at a lot of the high-quality "german" electonic components (automotive or not)--and don't be surprised if the whole thing wasn't made in asia, or at least was made from mostly asian parts.
If it's "pure german" electronics, expect it to be overbuilt or overengineered and somewhat "rube-goldberg" in terms of design (it seems German electronics designers intinctively want to fly from Berlin to Paris by way of Beijing).
I'm sure eventually such quirks (like a crazy radio or brakes going on without brakelights and so on) will kill someone, and a lawsuit will be inevitable (perhaps sooner, especially if enough people in the Litigous States of America get pissed off--or hurt).
Realtime systems regularly have a degree of complexity to them. For example, your washing machine now has a single microcontroller running the drum, the water inlets, the front panel and soap tray / door latch, etc. This is simple enough to control with a cheap PIC.
However, an engine or an office climate control device or a telecoms switch has a lot more variables to work with, and it has to work with them in realtime. A PIC will not do. So you regularly find realtime systems with embedded CPUs (like the CPU32 -- the embeddable MC68000) which are cut-down versions of microprocessors previously used in desktop computers, often with onboard I/O controllers and RAM.
In order to control all your realtime subsystems, are you going to use a fast, hot running, power guzzling CPU running code that continually polls these devices? Or, are you going to use a slower CPU running event-driven code? If you're running event-driven code, how are you going to maintain realtime control over each subsystem?
The answer is to use prioritised threads. This is all an embedded OS really is. A simple task scheduler, a memory allocator, mutexes and timers. This is all there is to an embedded OS. If you're looking for luxury, you usually find an RS232 or Ethernet driver and in extreme luxury you get a mini TCP/IP stack -- open up your ADSL router and see what it's running. Mine's running VXworks. Windows CE or PalmOS are not "embedded OSes", They're mini desktop OSs for mini desktop devices. You've obviously never seen what an engine or a telecoms switch is running. They run things like WindRiver's Tornado or Greenhills' ThreadX. They don't run pretty things with graphics and input device support.
Does my bum look big in this?
The strips sit in little colored plastic containers that give them rigidity, and there is a rack that holds these containers in place. The controllers arrange the strips physically in meatspace in whatever order they like- sorted by time, alphabetical, altitude, airline, whatever. Scalablilty? Sorry, a controller cannot handle 5000 airplanes, so having a computer sort them usually is not a win: it takes more time for the user to specify how they want to sort it than for them to do it themselves. The controllers would quickly annotate the strips with small indecipherable (to me) marks; of which there would be no corresponding key on a keyboard. They'd toss the strips back and forth to each other.
So what did the our system do? Well, what we could automate is printing of the strips right from the flight plan data, and we could spit them out at a printer closest to the person who needs it. The hardware designers designed the rack and a little chute that they could chuck the plastic holders into, which would empty into a bucket, where someone could toss all the strips and reuse the holders.
Anyway, the point being is that the software is just part of the whole user's workflow. Trying to make everything electronic is just ridiculous, as would be requiring the user to go through 4 nested menus to change the radio volume.
You have to watch the users use your product. This car control system, of which I heard scathing review on NPR, smacks of over-design and no real-world, testing by non-techies: Could you imagine futzing with inaccurate voice menus when driving 75 mph in the rain, and a screaming toddler in the back seat?
I can explanate how to administrate your network. You must configurate and segmentate it, so it can computate.