Live data from Hacker News

An Introduction to the CAN Bus: How to Programmatically Control a Car

news.voyage.auto

41–50 of 110 posts

Re: An Introduction to the CAN Bus: How to Programmatically Control a Car

#41
post #11

Hmm, I hope they're not planning on using ROS for the final product... using a non-hard-realtime OS to fully control a car is a spectacularly bad idea.

Nvidia drive PX2 uses QNX, I think for an open source solution someone should try to figure out a solution with sel4 running on RISC-V so there could be a full proof that the system supports hard realtime.

Re: An Introduction to the CAN Bus: How to Programmatically Control a Car

#42
Ok, just to clarify... the CAN bus protocol can not be used to control throttle, brakes or steering. Critical stuff like that must be feedback driven.

Most manufacturers have their own communication protocol (some on top of the CAN bus). Probably the most researched and hacked bus out there is BMW's I-BUS (Used in MINI, BMW and Range Rover) [1].

You can however flash the ECU through most CAN buses (not in the protocol, but info about it can be found for most cars). And from there, one can interfere with the throttle.

[1] https://groups.yahoo.com/neo/groups/HackTheIBus

Re: An Introduction to the CAN Bus: How to Programmatically Control a Car

#43
post #37

CAN Bus is great. I highly recommend reading the CAN Open Spec if your going to be implementing new systems using CAN Bus. https://en.wikipedia.org/wiki/CANopen Many more things besides auto's use CAN. One of my current projects involves exercise equipment that internally speaks CAN Bus. There is great support in Arduino for interfacing with stuff like this.

At a previous job I interfaced with hospital beds that used CAN Bus internally. Turns out that Ford had laid off a lot of engineers a few years ago and the firm hired some of them to design the next generation bed. They knew CAN Bus, so they used it to control the hydraulics, pneumatics, lift motors, strain gauges, and so on.

Re: An Introduction to the CAN Bus: How to Programmatically Control a Car

#44

Ok, just to clarify... the CAN bus protocol can not be used to control throttle, brakes or steering. Critical stuff like that must be feedback driven. Most manufacturers have their own communication protocol (some on top of the CAN bus). Probably the most researched and hacked bus out there is BMW's I-BUS (Used in MINI, BMW and Range Rover) [1]. You can however flash the ECU through most CAN buses (not in the protoco…

Wrong, on certain cars it can be used to control all three.

https://github.com/commaai/openpilot

Re: An Introduction to the CAN Bus: How to Programmatically Control a Car

#45
post #17
post #10

Can you imagine the havok when terrorists figure out they can program cars to hunt and kill pedestrians in crowded spaces? Currently the terrorist needs to drive the vehicle, which makes it a suicide mission. How much more deadly would it be if it was reduced to just the cost of the car and a low chance of getting caught? How can we defend against this?

A car could be self-driven while not connecting to any external networks. It still can get fresh traffic or weather data, but with those, you can't take over a car to make it a weapon.

As long as there's no parsing bugs in the traffic data module or the weather display that can be leveraged into an exploit, ala CVE-2012-1457 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2012-1457

Re: An Introduction to the CAN Bus: How to Programmatically Control a Car

#46
post #43
post #37

CAN Bus is great. I highly recommend reading the CAN Open Spec if your going to be implementing new systems using CAN Bus. https://en.wikipedia.org/wiki/CANopen Many more things besides auto's use CAN. One of my current projects involves exercise equipment that internally speaks CAN Bus. There is great support in Arduino for interfacing with stuff like this.

At a previous job I interfaced with hospital beds that used CAN Bus internally. Turns out that Ford had laid off a lot of engineers a few years ago and the firm hired some of them to design the next generation bed. They knew CAN Bus, so they used it to control the hydraulics, pneumatics, lift motors, strain gauges, and so on.

Man, that's really cool. I'm really looking forward to all of this CAN Bus stuff being EOL in 10-25 years so I can get my hands on it at tinker with it.

Re: An Introduction to the CAN Bus: How to Programmatically Control a Car

#47
post #39

"we flipped the problem (and the OBD-II port) inside out and found naked access to HS1, HS2, HS3 and MS. The solution was on the back of the OBD-II port where all those buses arrive to a device called the Gateway Module." This seems like a critical hack. Is this normal of all (non-ford) cars as well? I'm gonna guess Car mfg's are going to start encrypting the CAN bus [1]. [1]: http://www.eetimes.com/document.asp?doc_…

> This seems like a critical hack. Is this normal of all (non-ford) cars as well?

There is naked access to CAN all over the vehicle, it only firewalls the OBDII port because it's function is primarily to observe the vehicle (error codes, states, etc) with small exceptions such as clearing codes.

Re: An Introduction to the CAN Bus: How to Programmatically Control a Car

#50
post #37

CAN Bus is great. I highly recommend reading the CAN Open Spec if your going to be implementing new systems using CAN Bus. https://en.wikipedia.org/wiki/CANopen Many more things besides auto's use CAN. One of my current projects involves exercise equipment that internally speaks CAN Bus. There is great support in Arduino for interfacing with stuff like this.

Isn't CAN very limited in terms of bandwidth? Seems like this wouldn't be appropriate for most applications of interest? When I worked at an equipment manufacturer, everyone was very concerned about accidentally saturating the bus, and we even had a very compact data representation.
Post reply on HN