by carlivar on 11/14/23, 5:22 PM with 379 comments
by latchkey on 11/14/23, 9:52 PM
Rest assured that after the first time I messed it up (which required ssh into each box individually), I wrote a lot of unit and integration tests to make sure that it never failed to deploy again. One of the integration tests ensured that the app started up and could always go through the internal auto update process. This ran in CI and would fail the build if it didn't pass.
While I fully understand that this is hard to get right 100% of the time, a mess up of this level by a car manufacturer is pretty amazing to me.
by gravitronic on 11/14/23, 5:54 PM
If we pushed a broken update it might mean someone from the radio company would have to make a trip to go pull the device and send it to us physically.
Our upgrader did not run as root, but one time we had to move a file as root.. so I had to figure out a way to exploit our machine reliably from a local user, gain root, and move the file out of the way. We'd then deploy this over the satellite head end and N remote units would receive and run the upgrade autonomously. Fun stuff.
Turns out we had a separate process running that listened on a local socket and would run any command it received as root. Nobody remembered building or releasing it but it made my work quick.
by qmarchi on 11/14/23, 5:38 PM
Or, you know, having an A/B boot partition scheme with a watchdog. Things that have been around for decades at this point.
Disclaimer: Former Googler, Worked closely with Automotive.
by cs702 on 11/14/23, 5:43 PM
So far, only Tesla seems to be able to update car software remotely, regularly and reliably. I'm certain it's neither easy nor cheap.
All things considered, physical buttons and dials are probably easier and cheaper, because they don't require software updates!
by scardycat on 11/14/23, 5:51 PM
by wannacboatmovie on 11/14/23, 5:39 PM
Rivian seems more like a "ship it and we'll fix it in the next sprint!" company.
How do other manufacturers handle updates?
by reneberlin on 11/15/23, 1:10 AM
Updating cars with new features OTA, even "just" an Infotainment can possibly cost lives, because the driver might get confused and isn't putting eyes on the streets.
It should be forbidden and every change should be made clear to the driver, shown in detail, and should need verification twice before being accepted. There must not be any kind of surprise in a car for the driver.
It should even be possible to skip an update or stop updating at all.
by qudat on 11/14/23, 5:54 PM
by nicholasjarnold on 11/14/23, 6:02 PM
Also, yes, I'm specifically avoiding using the word "owner" above for obvious reasons.
by martin8412 on 11/14/23, 5:58 PM
by gunapologist99 on 11/14/23, 10:58 PM
I'd like to please force any attackers to at least be within 50 feet of my TPMS, instead of being literally anywhere on the planet.
A car doesn't need data updates, and definitely not code updates[1]
1. source: every car built in previous century.
by eschneider on 11/14/23, 5:25 PM
by ralmidani on 11/14/23, 6:50 PM
I don’t really like or trust most (if not all) of the established automakers, but there is something to be said for having several decades (over a century in some cases) of experience building potential killing machines vs. a company that’s not even 15 years old. The established players have put out cars which suffered freak malfunctions, but Rivian (and Tesla) seem to be struggling more with QA.
Non-rhetorical question: do companies have safeguards for critical components like braking systems, or are they also prone to catastrophic failure if a software engineer pushes a bad commit?
by baz00 on 11/14/23, 5:34 PM
by Lightbody on 11/14/23, 11:45 PM
This incident does NOT give me confidence that Rivian is likely to offer a better alternative to CarPlay, despite their statements otherwise.
I suspect the EX90 will be what I land on eventually.
by AndrewKemendo on 11/15/23, 4:02 AM
by samsquire on 11/14/23, 5:48 PM
For example, if you have a distributed system and you want to upgrade a component that every caller uses: you have a large exercise on your hands where you might have to roll out a change over time and then clean up your incremental branches where you have to handle two control flow paths through the code. It reminds me of Google's protobuf required field discussions.
It reminds me of repository-per-microservice and a Java library that other microservices use and updating a dependency and having to deploy the change to every service.
It's like trying to change wheels on a car while the car is moving or refueling a jet in flight.
Unison lang is trying to solve this problem I think, by allowing multiple versions of a function to be available.
Migrations in databases are painful too.
One solution I've thought of which is probably overengineered is that API call sites are an abstract object and their schema and arguments is centrally deployed, I called this "protocol manager".
The idea is you write all your code to use a "span" and have contextual data in a span, and you can include or exclude data in a span with a non-software rollout. Your communication schema of RPC and API calls is a runtime decided thing, not hardcoded.
If you have N deployed versions of code and you want to upgrade to X, you have to test 1..N to X versions. So nobody does that.
by Someone1234 on 11/14/23, 6:50 PM
- Better isolation of different parts of the system (e.g. infotainment unit, instrument cluster, et al).
- Better isolation for updates (e.g. run a "beta" update, and a "stable" update side-by-side).
- Automatic error detection and rollback (e.g. if a VM keeps restarting after an update).
- Ease of offering features like rollbacks to end-users.
- Rare hypervisor updates can be held to a much higher standard relative to other VM updates.
The only downside of hypervisor-based systems is slightly higher hardware costs. But even that is largely mitigated by modern architectures that natively support virtualization.
PS - You can also look to any containerization. I specifically brought up the XBox because it is a hardware product, just like a vehicle.
by kevinventullo on 11/14/23, 6:10 PM
Is there any reason not to do it this way?
by antoniuschan99 on 11/14/23, 6:55 PM
by 1970-01-01 on 11/14/23, 5:49 PM
https://www.consumerreports.org/lexus/what-to-do-if-your-lex...
by sarchertech on 11/15/23, 12:17 AM
It forced the company into bankruptcy because they had to replace all of them.
by fsckboy on 11/14/23, 10:50 PM
Or at least the ability to re-init/download from scratch, like a borked macbook disk. And hey, not the extra ability to do that, make it "the way it works" so you're always testing it.
by wnevets on 11/14/23, 10:38 PM
The future is going great.
by thumbsup-_- on 11/15/23, 6:30 AM
by teeray on 11/15/23, 5:45 AM
by karaterobot on 11/14/23, 6:27 PM
by bfrog on 11/15/23, 1:08 AM
Thousands of test points having to be verified was my understanding. That’s before even getting to the confirmed boot/watchdog aspect.
What a hassle, hope they like spending money on labor because it sounds like they are going to need to.
by adolph on 11/14/23, 5:39 PM
This is what I do with my Prius to get a comfortably distraction-free driving environment. Sounds like a feature not a bug.
by eigenvalue on 11/14/23, 6:24 PM
by nicolaslem on 11/14/23, 6:14 PM
Does anyone here have some practical tips to turn an embedded Linux machine into an appliance? The kind of system that a botched update cannot brick but only momentarily disable until a non-technical user presses a factory reset button of some sort.
by nunez on 11/15/23, 1:48 AM
by Havoc on 11/14/23, 6:36 PM
What a time to be alive. Software updates (almost) turning cars into paper weights lol
by ct0 on 11/14/23, 6:18 PM
by cryptoegorophy on 11/14/23, 6:28 PM
by glonq on 11/14/23, 7:15 PM
I'd love to be a fly on the wall at Rivian engineering/operations this week!
by easylion on 11/14/23, 6:42 PM
by avereveard on 11/14/23, 6:33 PM
Like what do you mean "in most cases" I can understand a broken infotainment needing reset but imagine if you had to tow your truck I'd be furious.
by MisterTea on 11/14/23, 6:39 PM
All I need is a gauge cluster screen that can display the normal info like stored and heading while also letting me configure the cars performance and safety features. Then let me mount a double DIN radio that isn't dog shit. I've not seen a single new car with these dumb screens with a sound system that's not tinny muddy garbage with zero adjustment save for "bass" and "treble" settings. I mean all that technology and you can't be assed to put an eq in there. HVAC never needed more than two or three knobs anyway.
by fhub on 11/14/23, 11:56 PM
by WirelessGigabit on 11/14/23, 6:38 PM
The speedometer screen is gone, so does that not imply the vehicle is inherently unsafe to drive?
by Am4TIfIsER0ppos on 11/15/23, 10:56 AM
by j45 on 11/14/23, 10:50 PM
by emmelaich on 11/14/23, 6:37 PM
by immy on 11/15/23, 7:57 AM
by b20000 on 11/16/23, 2:18 AM
by whoopsie on 11/15/23, 5:53 AM
by FireBeyond on 11/14/23, 10:12 PM
> That’s the last update we had over 10 hours after Rivian customer vehicles were fed the bad software update.
"Over 10 hours"!
I suppose it isn't Tesla, who yeets updates over the fence, that break new things, yeets another update that fixes that problem but introduces another one, then reverts back to two versions prior, before the issue. The Tesla that gets firmware fixes from vendors that have a test harness that should take 36+ hours to run, but says YOLO and flashes it onto a random car they have lying around and emails the vender back 3 hours later saying "LGTM, WFM, thanks!"
by shoelessone on 11/14/23, 11:09 PM
by sitzkrieg on 11/14/23, 11:52 PM
by thrill on 11/14/23, 5:40 PM
by collsni on 11/14/23, 11:47 PM
by janitor61 on 11/14/23, 7:42 PM
by xyst on 11/14/23, 6:26 PM
by xyst on 11/14/23, 6:32 PM
Car companies suck at tech. Let’s be realistic. They should stay their lane and focus on improving the car and physical aspects (safety, reducing carbon output, longevity, ease of repairability, reducing supply chain issues)