Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> But yeah, because headlights and blinkers needllessly complicated, cough er, need data uplinks.... totally NOT to check with Toyota if you've subscribed to their monthly "safety package" for $7.99,

That’s not what’s happening. The value in a CAN bus control is that you can significantly reduce the wiring requirements.

Old school blinkers and headlights would require separate power wires for every function: Blinker, low beams, high beams. Those separate wires would each be snaked through long wiring harnesses back to relays somewhere else in a central location.

With CAN, you can run a single large gauge power and ground pair and use the CAN bus to tell the remote module what to do with tiny signal wires. It may not sound like a big deal, but cars have a lot of electronic pieces all over. Simplifying wiring can add up to a significant weight and cost reduction. You now also have the ability to add more monitoring, such as simple sensors to detect when a bulb has failed

Vehicle manufacturing is ruthlessly optimized. Vehicle manufacturers wouldn’t add complexity to common systems if it didn’t pay off.



> Vehicle manufacturing is ruthlessly optimized. Vehicle manufacturers wouldn’t add complexity to common systems if it didn’t pay off.

You make it sound as though this intended to be a benefit to the consumer or the end product. Having worked on and around cars, and being friends with people who do for a living, I am really unconvinced that the manufacturers do a lot of this for any consumer-friendly reason, rather than simply trying to squeeze a buck out of you.

I can absolutely tell you that Volvo, for example, does what the GP is talking about, and then some. On an old school GM or Toyota, if you break a simple switch or knob, or things that really should just be simple devices, you can just pull it out, go to the junkyard or a parts retailer, and put the new one in and be on your way. Not so for Volvo (and I'm sure this has caught on in other manufacturers): if your switch or control or whatever fails, and its hooked up to the CAN-bus, whatever replacement you find simply won't work until you've gone to the dealership (if they even let you use a part that didn't come from there at all) and gotten them to flash the part and whatever other crap needs flashing like a BCM to get them to be compatible (I think just flashing the serial number of a BCM or whatever it needs to play nice with to the switch), at the tune of a couple hundred or more dollars each time.

So in essence, a stupid simple part, that should have been $5-10 that the manufacturer likely never would have seen a dollar from in the aftermarket, is now a $200+ dollar flash at the dealership, using the manufacturer scan tool, and also increasingly requires only parts the manufacturer can generate. So no, I really am extremely skeptical, given what occurs *today* that 95+% of the junk on CAN bus is there for any reason other than to boost dealership and manufacturer profits for no other reason than the fact they can.


Building with one bus is just easier. It's not some nefarious end goal.

It's like putting everything over IP (VoIP, video over IP, audio over IP, etc.) and then just running Ethernet throughout your building. From an engineering perspective, it's just way easier. Routing wires -- on a circuit board, in a building, in a car, in anything -- is just a real PITA.

Now it's definitely true that having to flash something on the CAN bus to make it work is possibly due to greed, but the original idea of putting things on one bus is not.


> You make it sound as though this intended to be a benefit to the consumer or the end product. Having worked on and around cars, and being friends with people who do for a living, I am really unconvinced that the manufacturers do a lot of this for any consumer-friendly reason, rather than simply trying to squeeze a buck out of you.

The "consumer friendly" part is competing on price; they don't care about repair cost, in fact parts for repair is just recurring revenue on top on (till before pandemic) slim margins on selling the car


>slim margins on selling the car

Isn't that what's supposed to happen in capitalism? Everyone working is getting paid, supply matching demand, prices reducing and ostensibly zero profit for established sectors.


In 'true' / 'raw' capitalism. But that's not what we have. Because it's not as profitable.


I never got the impression the previous poster was saying this is a benefit for consumers; he's saying it's for the manufacturer, to cut costs. Edit: that being said, all your points are completely valid.


It is a benefit for consumers. Lower weight for better fuel. More fancy gizmos on the car for a lower price.


... until it breaks and now, as the person above said, you've got a three-digit repair bill.

It's often the case that consumers will seek out the lowest price no matter how high the cost.


I own a vehicle built in 1981. I can absolutely assure you that CAN is better for consumers. People seem to forget the two-inch thick bundles of wires, the hours spent tracing one turn indicator cable, the insulation of the cables in the middle starting to rot and things shorting out, water getting trapped in bundles, failures modes including stuff melting inside the dashboard from high-current stuff all being wired back to a central place... I could go on.


Not having to rerun a bunch of cables is a huge boon. CAN bus and other digital control mechanisms are a god send for maintenance and upgradability.


The exact same way printers with drm benefit the consumer!

How do you say this with a straight face?


After my recent sample n=1 (2015 Honda), I'm left wondering how much mechanic griping is due to a lack of engagement with digital systems rather than a hard lack of ability.

I bought a $20 OBD2/J2534 cable, downloaded an easily-available ["pirated"] copy of Honda HDS, and seemingly had access to all the functionality a dealer would have. From looking at the Honda website, I could have paid by the day/week/etc for official access to flashing tools or the newer iHDS, which I might have needed for a newer car.

If I had wanted to reflash any of the modules, I probably would have wanted a better cable (though it's hard to know if module manufacturers really have such shoddy update processes that interrupting the flashing can really brick a device, or if that's just persistent superstition like so much in the car world). But I was able to replace the VSA/ABS module and perform the necessary "dealer reset" procedures no problem. I just wish I had obtained this setup before I went about misdiagnosing the problem based on a document that claimed to be the OEM service manual but actually wasn't. Luckily the part I misdiagnosed did end up being the problem!

Of course, I would love for there to be some sort of mandate for manufacturers to document the details of all CAN messages. Because there don't seem to be that many different module manufacturers, they must all be working to some kind of internal standards for their own interchange, and end-user visibility into computing systems is critically necessary for preventing computational disenfranchisement where people see these systems as impenetrable black boxes. But it feels at least in Honda land, much of that capability is practically available to the repair market (at least as of 2015 model years). One just needs to get over the activation energy of setting up the OEM software tool.


Good example. Do you know of anywhere that Volvo parts pairing / programming issue is written up or documented?

I'm working on Right to Repair and we get asked for examples like this from various government agencies all the time. It would be very helpful, thanks!


If you're looking for informal evidence, there's plenty of posts on SwedeSpeed and Volvo Forums (and probably Turbo Bricks, for those masochists that own a post-RWD car) bemoaning needing to constantly reprogram tons of things like door switches, and the various lengths owners and enthusiasts will go to in order to attempt to overcome these issues.

If you're looking for something a little more formal, I think the factory service manual probably calls out that the R&R on a ton of parts will involve reprogramming. I no longer own any post-Ford Volvos nor do I have any interest in European cars, so unfortunately I don't have any newer FSMs. A way you might be able to get at one on the cheap is to pick a popular model/year later Volvo (maybe like a 2016+ XC60?), and get a subscription to the make/model/year on Alldata (which was something like $20 a year for just a single combination), or hunt for an FSM on eBay, if it's old enough to still have a paper FSM.


> rather than simply trying to squeeze a buck out of you.

Their profit margins will come from somewhere. If not from savings then from higher pricing.


My friend's 2016ish VW jetta straight up uses proprietary bolts and shit in it. He and I are the type to do all our own car maintenance but his car has pushed my patience beyond anything I've seen prior...


Dad used to rebuild and repair late model Volkswagens, and I got a first hand taste of what it's like servicing those. German cars are the absolute worst, especially in this regard. Everything little plastic piece is hundreds of dollars when it breaks, and it all had to have been installed by German contortionists. Need to do something on the engine? Better get if on the lift, because the whole front cradle needs to be dropped out from the bottom of the car if you want to get it done in anything short of a glacial pace. Vag-Com is an expensive and irritating piece of kit, maybe only second to Vida Dice (Volvo) in terms of level of frustration sometimes.

There's no way I would ever recommend someone who wanted to keep their car past the first 50 or so thousand miles ever buy a VW or a VW with slightly shinier wallpaper (Audi). There's a reason the service techs on those and BMWs get paid well, and why they're often hated by mechanics.


by law you can purchase any tools (computerized or not) which you need to repair your car to a fully-operational state.

they can be expensive, but you can buy them. you may need to visit a dealer to buy them, but you can buy them.

right-to-repair exists for consumer automobiles.

there are no "right to secure CAN buses" laws, unfortunately.


"they can be expensive, but you can buy them" seems to be a very surface-level view here.

Say I only need to replace a $5 switch as the parent poster suggests. My options then are pay $200 to the dealership to flash and install it (if they'll even flash a third party part) one time, or I can pay thousands of dollars for a tool I'll use once and do it myself.

That isn't a real choice, and the auto makers are adhering to the letter of the law but not the spirit of the law. Which is legal for them to do, but it doesn't make it any less scummy.


Or go to an Indy shop that already owns the tool and pay them $20...

There's a reason they're called stealerships - and the service department is where all the profit is. (Well, that and used cars).


GM charges $60 per VIN for 2 years access for flashing. - https://www.acdelcotds.com/subscriptions

Chrysler (and probably Stellantis so Jeep, Dodge, Fiat, RAM, etc) charges $35 per VIN per year. https://kb.fcawitech.com/article/vehicle-reprogramming-subsc...

Ford I believe now requires a subscription for diagnostics but I haven't seen anything about per VIN charges yet. I'm not sure about the British or Japanese brands either. This is AFAIK regardless of dealership or independent shop.


Gm is $40 per VIN 1 year, Chrysler is $35 for flashing but to do that you need 2 more subscriptions which totals about $120 There are aftermarket tools but the subscriptions are for a year and about $1000-$4000

The problem is as I always point, that people want complexity and technology for everyday but as soon as something breaks they want it to be like 1990.

The article complains about CAN bus not being secure but this sort of attack is very rare, you need special tools, skills, physical access to the network and time. Regular car thieves don’t go and make a key to steal a car, that would be the same as a 1980’s one breaking a window and start trying to decode the cylinder and then cutting a key! How does a towing company get your car in 10 seconds? That’s how they’re stolen most of the time.


God damn. I swear if they could , they would make you buy a fucking new wrench every time you work on a different car. Such bullshit how they tie their tools to a per-vin registration.


this is much more about insurance companies only paying for cheaper 3rd party parts for repairs than it is anything anti-consumer, though I'm sure there's some of that, too.

the automotive parts industry is massive and if you allow third party parts manufacturers to make parts for your car, you are undercutting your own parts replacement business. how do you counter that? you require that replacement parts come from you. the only way to do that is via electronic means, because anything purely mechanical can (and is) reverse engineered quickly.

insurance companies fight against this in court because 3rd party parts are much cheaper than official parts, and usually come with an associated dip in quality as well, which is another reason auto makers fight for first-party parts businesses.

Honda doesn't want Snake Oil Autoparts stuff installed on cars which are still under warranty after a collision, for example, but the insurance company paying for those repairs definitely does.


> you require that replacement parts come from you. the only way to do that is via electronic means, because anything purely mechanical can (and is) reverse engineered quickly.

They lost the right to require things to do with thr car the y sold the car.

Electronic lockouts will be cobsidered theft one day


> They lost the right to require things to do with [the] car they sold the car.

not if you want a warranty or any manufacturer support on the vehicle at all, and these are things that consumers value a lot.

> Electronic lockouts will be [considered] theft one day

among the most feverish people, they are considered a problem worth fighting, which I agree with, and I don't think it will ever be considered theft. the law just doesn't support electronic lockouts as theft, and precedent on this would be very difficult to undo without changes to laws defining what ownership actually is.


When you say "by law you can..." and "right-to-repair exists for consumer automobiles" are you taking about the USA or some other jurisdiction?

(Genuinely curious; I had no idea such laws existed for cars.)


There technically is no a country-wide legislation in the US, but Michigan has it, and some other states have similar requirements:

And only for regular cars, there is no right to repair for commercial vehicles: https://en.wikipedia.org/wiki/Motor_Vehicle_Owners%27_Right_...

There are also long-standing legal requirements for automakers to be separate from car dealers, which also translate into making the repair/diagnostics equipment available.


yes. the same law (or, rather, the movement at the time within congress) is what standardized the OBD-II connector and mandated its inclusion in all cars from 1996(?) onwards: the idea that consumers should be able to repair their own big-ticket items should they choose to.


Why not both?


> ruthlessly optimized

One huge problem is that they put the smart key on the same bus as other stuff (headlights, body control) to save money/wiring.

These kinds of busses should be buried far inside the dashboard or some other hard-to-reach area.


> Vehicle manufacturers wouldn’t add complexity to common systems if it didn’t pay off.

I know this stuff "pays off" for the manufacturers, but I really wish they'd avoid including unnecessary complexity such as those horrific touch screens, call connections, etc. That sort of thing is why I won't buy newer cars.


And yet the obvious thing is for someone to be making and selling a "can bulb" - a tiny 4 pin bulb with 12V, GND, CAN-H/L pins. And all bulbs (led or not) on a car would be that. It would turn on/off commanded by the canbus and report status info back.

Yet car manufacturers don't do this. CAN transceivers are still too expensive to build into every bulb. Instead, a single CAN transceiver and microcontroller will control a whole set of nearby bulbs (eg. brake, indicator, reversing lights). That then makes it vehicle specific, so you don't get the economies of scale of just making a single model of can-bulb which fits lots of places in many cars from many manufacturers.


> And yet the obvious thing is for someone to be making and selling a "can bulb" - a tiny 4 pin bulb with 12V, GND, CAN-H/L pins.

No, that's not obvious at all.

Separating the control board and the bulb is obvious. You wouldn't want to replace your entire control circuit every time you need to replace a bulb, would you? You don't want to have to reprogram your ECU to know which bulb serial number corresponds to your front headlight because all of your bulbs are the same.

Moreover, this is impossible because there isn't a single bulb model that goes into a car. High beams, low beams, blinkers, and interior lights are all different. They also differ from model to model depending on the requirements.

> That then makes it vehicle specific, so you don't get the economies of scale of just making a single model of can-bulb which fits lots of places in many cars from many manufacturers.

Car companies make millions or tens of millions of cars per year.

When you're making 10s of millions of something every year (or 2X that for parts that come in pairs, like headlights), you already have economies of scale.

Automotive equipment manufacturers will also share components between car companies, and further upstream you have companies that make chips for auto makers who share chips across the companies.

Automotive manufacturing is a great example of economies of scale. It's not correct to say that auto manufacturers aren't leveraging economies of scale while producing 10s of millions of common parts per year.


Plenty of vehicles only have production runs of ~10,000. At those scales, you really don't get economies of scale. In fact, there were only 25 car models that sold more than 100,000 units in 2021.


Plenty of particular brands of vehicles have smaller production runs. But "vehicle" to the manufacturer doesn't mean "brand". It means "set of pieces and parts that can be the same or nearly so across many brands". For example, a "Cadillac" to you is a different "vehicle" from a "Chevrolet"; but to GM, the vast majority of the pieces and parts and manufacturing processes are shared. So the economy of scale to GM when building "Cadillacs" is huge even if to you it looks like "Cadillac" has a small production run.


Exactly, and this is one of the reasons modules need programming, because it comes “virgin” with only a bootloader and the features are loaded according to the VIN.


I thought there were already CAN bulbs. If you look for LED replacement bulbs for your car, many are marked "CAN-bus Error Free"

(I'm not sure though - it might be some headlight controller fails non incandescent bulbs)


It is. They just have a resistor in them so they draw enough current to not look like a blown bulb.


How would the bulb know which one it is?


For the customer-replacement case, you simply tell the customer to replace just one bulb at a time - and the computer can update the mapping.

In the factory, you fit the bulbs in a certain order every time, and the computer knows that order.


> simply

I’m guessing you’ve never worked in customer support. The failure modes of mistakes would be nasty. Even smart people swap bulbs around when diagnosing faults.

Simplicity (good usability) is most always crushingly hard to achieve, doubly so for hardware.

Calling things “simple” is often a sign of shallow thinking in my experience - something a customer or manager might naively say but an engineer cannot (because they have to deal with all of the real requirements).

For example, the engineers that build cars can’t say “you simply push a button to start a car” - as an engineer the complexity behind that simple operation is very very deep.


> For the customer-replacement case, you simply tell the customer to replace just one bulb at a time

Just imagining the customer support for this is gonna give me nightmares.

“Sir, you need to make sure your vehicle’s ignition is turned to accessory mode. Then wait for the light to blink twice, that’s the vehicle’s confirmation that it correctly identified the new light. If it blinks three times, it can’t confirm the light’s location, so you should try removing it and re-inserting it. If it blinks four times, that means you didn’t replace the bulbs in the correct order so you need to initiate a manual reset procedure by going to the driver’s seat and…”


Both of those sound like hopelessly error-prone processes likely to lead to visits to the repair shop.


ID field.


It's more like a class field. All bulbs of class "brake" turn themselves on for a brake message etc.


Gotcha. Embedded in the frame?


CAN frames only have space for 8 bytes of payload, unless you upgrade to CAN-FD at a significant complexity cost. For the sake of a light bulb, you could make it work by being sufficiently clever. You could even use all 8 bytes for serial number, and then use existence of the message itself to turn on the bulb. Have it turn off after 100ms of timeout.

It's really not a sustainable approach to try to address nodes on a CAN bus by serial number, though. CAN is content addressed rather than receiver addressed. Due to the way arbitration works on the bus, it's invalid for two nodes to transmit to the same CAN identifier. The arbitration mechanism breaks down and results in error frames, at which point the CAN bus is in a degraded state.

That would preclude a CAN enabled bulb from being able to send telemetry back, at least until the bulb was provisioned an identifier. That could be done by an ECU sending a frame with the bulb's serial number and assigned identifier. You still need a zero-conf discovery protocol, though, and so you're back to transmitting before provisioning. You could work around all that, but it's a lot of work.

Stepping back a bit, running a car's CAN bus over a light bulb socket is going to cause some practical reliability problems. Compared to a wire harness going into an ECU, a user serviceable bulb socket is going to be much more prone to intermittent connections from vibration, as well as oxidation and wear. Intermittent connections on CAN_H/CAN_L tend to cause a ton of frame errors, and significantly degrade the overall bus performance often to the point of system failure. When a node encounters enough error frames, it is compelled by the standard to go into a BUS-OFF state where it isolates itself from the bus. Because it's a bus and all the nodes share the same two wires, it's pretty much impossible to diagnose where an intermittent connection is without trial and error.


I appreciate the detailed insight! Great point on something subtle re individual bulbs that is non-ideal. I'm learning CAN now, mainly for use in drones. I have got 2 STM32 FDCAN periphs talking to each other; the basics seem easy, but the protocols that go on top of it seem complicated! I suppose this is due to managing a decentralized network. Ie, at first CAN seemed like to offer a bus that simplifies wiring and offers resistance to noise, but the more subtle and interesting point seems to be a common API where hardware access is handled by individual nodes, and communication is through this API layer on top of the hardware. Ie, if you control the whole network, it can seem like the first case, but the interesting things happen, eg as you describe, arise when the nodes are by different manufacturers and are swappable.

Ie, with CAN, each node only needs to do reg reads/writes/datasheet-spelunking for a narrow part; the other nodes just need to know the API that sits on top of the hardware.


CAN only really works out well in a complex system if you have full control over the addressing scheme. Addressing and prioritization are one in the same. Unintuitively, prioritization isn't about the importance of a message so much as it is about the message's urgency. A pretty common approach is to use "rate monotonic" prioritization. The basic idea is that higher rate messages have higher priority (lower address) than lower rate messages.

There's rules of thumb about never overloading a CAN bus beyond, say, 50% utilization. That's because systems with poor prioritization management tend to start falling over around there. With a well thought out scheme, it's possible to push a CAN bus fairly close to 100% utilization. I built several safety critical systems that pushed 80% utilization on average. At that level, you really need to rely on redundancy rather than simple robustness, though. A CAN bus running at 80% falls over very hard when you have a flaky physical connection somewhere.


You are talking about dbc files, defining the binary layout per message on the bus? That is typically in the hands of the OEMs, not ECU vendors.

See for example https://github.com/commaai/opendbc

Quite old and for Wundows, but a lot of code showing how to use a lot of CAN interface boxes is at https://github.com/rbei-etas/busmaster/tree/master/Sources/B...


So "left blinker bulb" and "right blinker bulb" would be different products?


> Yet car manufacturers don't do this.

That sounds like a good thing to me.


that part was a joke, fyi. CAN is very useful, but tends to be overused as well: https://www.caranddriver.com/news/a41611379/gmc-hummer-ev-ta...


I used to work for General Motors. Many of the early luxury cars would have 100+ wirings going into the driver's door. Early versions of what has since evolved into CAN were trying to reduce it to 5 wires.


I owned a Peugeot 306 (not a fancy car by any means) that developed a short somewhere in the driver's door complex pre-CAN wiring harness. Getting it replaced cost me around $500.


Mate have you seen old relay controled car? It has 3 times less wires and is repairable with simple tools. "Simplifying wiring can add up to a significant weight and cost reduction" it's just not there.


> Simplifying wiring can add up to a significant weight and cost reduction

Maybe, but given the explosion of weight and cost of new vehicles, it's unclear where these savings went.


> The value in a CAN bus control is that you can significantly reduce the wiring requirements.

I'm adding a CAN bus to my 3d printer for this exact reason.


So give the essential stuff its own circuit. Or encrypt and mandate the owner gets to set the key.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: