-
33c3 intro music
-
Herald: Let me present Felix Domke with
-
the Software Defined Emissions: A Hacker's
Review of Dieselgate.
-
applause
-
Felix Domke: Yeah, hey everyone. Thank you
-
for coming here. I saw there are a lot of
interesting talks at the same time in the
-
other rooms, so thank you for coming here
and listening to me about software-defined
-
emissions. "A Hacker's Review of
Dieselgate" is the subtitle. I'm Felix
-
Domke. I usually do embedded software,
mainly security. I'm definitely not on
-
cars and definitely not on things that
have combustion thingies, so I only got
-
dragged into car software last year when
my own Volkswagen car was accused of
-
cheating and I wanted to know what exactly
was going on. I held the talk last year
-
about some of the details of the
Volkswagen Sharan defeat device. For the
-
details you can take a look at that talk.
This time I want to look more at the
-
process of finding or analyzing car
software. I want to look at whether this
-
process scales to more cars. The first
step when having a piece of software that
-
does not always do what people think it
does is, well obtain a firmware image,
-
obtain a binary image of the firmware, and
in the case of my car I knew it was a
-
Bosch EDC17, which is a Bosch ECU that a
lot of cars use, including my Volkswagen
-
car. So, I didn't know anything about
ECUs, dumping software and so on, so I
-
asked Google "Hey, what do I need to do to
dump an EDC 17," and Google had a lot of
-
answers for this, but usually those were
people that wanted to sell me some device.
-
Those were chip tuners that built their
own devices where you can plug in the ECU
-
and then it extracts the image, usually by
exploiting some bugs in the software. But
-
I didn't really want to buy something and
it takes like a lot of time until I get in
-
my hands. I wanted to start. So I was
looking to do this on my own. What these
-
sites usually tell you without paying is
how you wire up your given ECU for their
-
device, so they tell you where to connect
12 volt, where to connect the CAN bus,
-
which is the serial communication bus that
the ECU uses to communicate with the rest
-
of the car
devices. Usually it's pretty easy, so...
-
when analyzing ECU it makes a lot of sense
to reproduce the scenario on your desk and
-
not in your car, so in order to make an
ECU boot all you need is ground, 12 volts,
-
there's usually an ignition pin that you
also have to supply 12 volt to it, and
-
then it boots. So on my desk it looked
something like this, and then once we have
-
the setup we can boot the ECU, we can use
Python to talk to the ECU, which is great,
-
and then we can use socket CAN, which is
the Linux CAN support that's really great,
-
and we can even use MicroPython if we
want to have a smaller device that we can
-
put in a car. So we can talk with the ECU.
Talking with the ECU in modern cars,
-
there's a protocol called UDS. Basically,
I simplified this slightly, you can ask
-
the ECU "Hey, I want to read memory by
address," you give it an address and you
-
ask it to read four bytes in this case of
that address, and then it returns it to
-
you. So I thought "Hey, maybe I can use
this to dump the software." In my case the
-
device responds with a Security Access
Denied, so I looked into what I need to
-
do. You actually have to do a Security
Access command. You send a command that's
-
called Request Seed. You get back
basically a 32 bit random number and then
-
what you have to do is to, have to
process this seed through a super-secret
-
function and then return it in a response
call. The question is how do we know this
-
super secret function. There are multiple
methods. We can look at the ECU software
-
itself, if the algorithms in there, to
verify it. We can reverse diagnostic
-
software that uses this mechanism. So for
example the Volkswagen software they use
-
for car shops, or maybe someone else
already reversed this and put it in their
-
own tools which may be easier to get it
from in terms of third-party diagnostic
-
software. And in the case of my Bosch ECU,
the super secret function was this. I
-
basically had to add this number to it.
The mechanism is called pin code.
-
It's in... I mean it's not super
secret. Anyway, once I know this...
-
applause
Yeah, thank you. I mean, it... once you
-
do this, you send back the result and hey,
then you can read... you can send the read
-
command again and, hey you're getting back
data, so this is great, right? We can read
-
memory at runtime of the ECU, and we can
even do this while the car is operating.
-
However it turns out that for the Bosch
ECU you can only dump specific regions. You
-
can dump most of memory, some memory areas
are excluded, but most of the interesting
-
stuff you can read. But you can't read any
code. You cannot read anything in flash.
-
But we are hackers, of course, so we find
a way. The CPU used in these ECUs is a
-
Infineon TriCore CPU, and it's used, at
least this particular one, was used in the
-
ECU I cared about, and the security model
for this chip is that you can always enter
-
a specific bootloader mode and execute
your own code, so you can strap a few
-
lines they... the chip tuners tell you
that, right, they tell you what's high and
-
low, which pins you have to connect your
ground and 3.3 volt, and then it enters
-
this bootloader mode, you can upload some
piece of code. However, you can't read the
-
flash, because the flash is locked. When
you start in bootloader mode, the flash is
-
not readable until you write a specific
password to a register. That was not so
-
great, so I looked into what else I could
do. The datasheet is very specific on how
-
to operate this chip. For example there's
this one flash supply pin. So, even though
-
the flash is in the same package as the
rest of the CPU, it has a dedicated supply
-
pin and it tells you which parameters not
to exceed to ensure correct operation, but
-
I really don't want the correct operation
which is in this case preventing me from
-
dumping the flash. So, what can we do? We
can violate the requirements. The
-
requirements for 3.3 volts. Let's see what
happens outside of that range. And turns
-
out, down to a certain voltage level,
roughly 1.6 volt, everything just works as
-
normal. That doesn't help us.
And below that voltage the device hangs in
-
the bootloader, so that doesn't help us
either. The interesting parts happened
-
when you are at the very specific voltage
level, and this is a little bit
-
unscientific, because it's really just the
voltage level I tried, and then most of
-
the time the device comes up and flash is
protected, and then the remaining times
-
the device comes up and hangs in the
bootloader. But one in 10 times something
-
interesting happened. The device came up
and the flash was not protected, so I
-
could dump it out.
applause
-
So having the image now in my hands, I
could start in actually reversing the
-
defeat device and what I found was - I
don't want to duplicate a lot of what I
-
talked about in the last talk - I found a
function called "acoustic function," or
-
"Akustikfunktion" in German. It's a
function that senses vehicle speed, the
-
duration of the engine operation, and some
other things, and then controls emission
-
related functionality, or in short you can
say that this is the test cycle detection
-
that enables the defeat device. And I
verified it to exist on my Sharan device
-
by driving through the test cycle and
logging data. And during the last year I
-
verified that it's actually the same
defeat device, more or less, that exists
-
on a lot of other Volkswagen cars. All
these Volkswagen defeat devices that we
-
talked about for the Euro 5 cars, they use
more or less the same acoustic function.
-
Basically, to remind you, there are a few
curves stored in the software that look
-
like this. This is the NEDC. This is the
test cycle you have to drive a car
-
through. They exactly define how fast you
have to drive for a given time in seconds,
-
so it's speed over time. If we draw this
as distance over time it looks like this.
-
So this is the distance you got. You're
not really moving the car, because you're
-
doing this in a lab on a dynamometer, but
what the car thinks it has moved to, and
-
if we overlay this with the curves we
found in a software there's a perfect
-
match. So this is the way how they
describe the test cycle. So this was for
-
my Sharan. So I looked into, what do the
other cars do, especially what do the
-
cars in North America do, because they're
not using the NEDC. And I found something
-
interesting, or some someone sent an
interesting document to me, that was this.
-
It was an emission service action. It
basically describes how there was a recall
-
for some vehicles, that required a
software update in the shop.
-
So this is basically the document that
informs the car shop what they have to do,
-
and it had something very interesting in
it. By the way, this was in December 2014,
-
so this was way before the whole
Dieselgate was public, but this was
-
already while the EPA was already talking
with Volkswagen, already demanding
-
explanations. All that investigation was
already proceeding. Volkswagen knew about
-
this, that people figured out about the
defeat device, and it had something very
-
interesting in it, that said "in addition,
the vehicle's engine management software
-
had been improved to ensure the vehicle's
tailpipe emissions are optimized and
-
operating efficiently." That sounds really
fishy to me, so I was curious, what
-
exactly did they change in the software
update? And luckily they tell you the old
-
and the new software versions, and you can
then go and look them up on a firmware
-
DVD, that you can download on the
Volkswagen website, and it turned out that
-
it's an ECU software similar to the the
Bosch ECU software I looked at before. So
-
there's an acoustic function again there,
and the curve stored there, they match the
-
US test cycles. This is one of them. There
are many more test cycles in the US, so
-
there's another curve that matches this,
and this is the curve stored in the
-
software and this is the corresponding
test cycle. And there are a lot of them.
-
But I noticed something really
interesting, and some of the curves...
-
they were much wider open than the other
ones. So for example this one... there's
-
really a nonzero probability that if you
just have your morning commute, through, I
-
don't know, some streets or something,
that you accidentally match this driving
-
cycle every time you start driving in the
morning, so the car would, every time you
-
drive this, think it is in test cycle
mode, and would operate with the
-
optimized... in the optimized emission
mode and apparently this caused problems
-
and what I saw, what Volkswagen added in
the software that was part of this recall,
-
was this function. So, this is from it
from a disassembly. In pseudocode, this is
-
this. So they started looking at the
steering wheel angle, and if they figured
-
out that you move the steering wheel
angle, then they ignored the curves, the
-
more open curves. So the idea is "Yeah, if
you move the steering wheel, you're
-
definitely not in a test cycle, so at that
point we do not try to operate in this
-
emission optimized mode. And it's a
little bit of speculation, but it matches
-
up pretty well with with all the facts
that I read, is that because those cars
-
operated in the test cycle mode too often,
that eventually caused the the particulate
-
filters to clog, and their solution for
Volkswagen, and again, this was while they
-
were already investigated by the EPA, was
to add the steering wheel angle detection.
-
For more details, I worked with this with
the NDR, and they produced a feature on
-
that, so there are some more details.
So this is Volkswagen, but there are more
-
cars, and if we look at this... this is a
meta-study based on something that the the
-
Ministry of Transport... they tested a lot
of diesel cars and what they found was
-
this. This is actually a representation by
the ICCT. So the orange line is the
-
emission limit, and the bars have an upper
and lower end, and the lower end is how
-
much emissions the cars have. This is just
for nitrogen oxides, for NOx emissions,
-
what they had in the lab, when you're
driving the test cycle. So and you can see
-
all of these cars managed to stay under
the orange line, so they get their
-
certification, but when driving them on a
real street, they produce the emissions
-
corresponding to the upper end of that
bar, which is for some cars significantly
-
higher. It's off by a factor of 10 and
more. When you're driving the car on a
-
street. And this is interesting, because
the cars, they can meet the emission
-
goals. The question is why don't they
always meet the emission goals?
-
Why do they operate so differently in the
test cycle than on the street? And I try
-
to give you a partial answer. And let's
look at how a car can optimize emissions.
-
The first thing they do... so this is a
very simplified diesel engine. So fresh
-
air goes in, fuel goes out, and there's an
exhaust pipe, right? And a lot of nitrogen
-
oxide, a lot of NOx, goes out as well, and
we don't want that. So we added an EGR
-
valve, which is basically a valve that
causes a part... a fraction of the
-
outgoing air to recirculate again through
the engine and burn again. And what this
-
causes is that the flame temperature goes
down, and if we look at the relationship,
-
it's very simplified here, but with a
lower flame temperature you get fewer NOx
-
concentrations, so you improve emissions
by lowering the flame temperature, however
-
at the same time you're increasing the
soot level, or the particulate matter, and
-
there is this trade-off - if you do too
much of EGR, too much of the exhaust gas
-
recirculation, you're getting too much
soot, and the other hand if you do it too
-
few, you get too much NOx, so you can
argue that the green area isn't really
-
great, because there's no point where both
of them are great. And here we see the
-
result of a clogged EGR valve. If there's
too much soot it will clog. EGR, as the
-
conclusion, is the least cost solution. It
doesn't really work at higher loads. It
-
works at low loads, and it does not
require exhaust... high exhaust
-
temperatures, which is great, but
excessive use of that clogs particulate
-
filters, affects the combustion, the
drivability goes down, and there are
-
trade-offs with this. It's also not very
useful for higher engine loads, for
-
example when you're accelerating you have
to disable EGR at high speeds. So a better
-
method, that was added on top of this, is
called "selective catalytic reduction". I
-
am... so, basically the idea is you have
an SCR catalyst in your exhaust pipe...
-
there are more catalysts there, but let's
talk about NOx, and in there, this
-
happens. We can simplify this, somehow,
and say if you put ammonia into this
-
catalyst, the NOx is converted to nitrogen
and water.
-
And Nitrogen and water is great, it's
harmless. It's already part of the air.
-
The only issue is ammonia is this and this
is not something you want the driver to
-
refill in your car. So instead this
solution is we can create ammonia in the
-
car from using from something that's less
dangerous, and we have the reaction there.
-
We can simplify this again and say we take
urea - Harnstoff auf Deutsch - and heat,
-
and we create ammonia. Urea or urea
solution is this. It's called AdBlue or
-
DEF - diesel exhaust fluid - it's not
dangerous. You can buy it, you can
-
transport it... it's relatively cheap. The
idea is, we have this reaction, it
-
requires ammonia in the catalyst, and we
put AdBlue into it, or urea, and using the
-
heat that we have from the exhaust pipe,
we create the ammonia that we need to
-
reduce the nitrogen oxides back to
nitrogen and water. There's a great
-
property of this, that some of the ammonia
that's produced in the catalyst stays
-
there until it's used up, so
there's some storage there. So the the
-
requirement for creating ammonia is heat,
and if you don't have heat, but for
-
example because you just started up your
engine... if there is still ammonia from
-
the last usage in your catalyst you can
still use that, and use that up, and by
-
the time you have used it up, maybe the
heat is enough to supply more AdBlue and
-
then fill up that storage. The downside is
you need a pump to dose the AdBlue, and
-
you need lots of software to control this
process. And you need a heater because the
-
AdBlue freezes at some point, and it's an
expensive solution, it adds roughly $500
-
to a car, which can be significant amount
of money for a small car, and it requires
-
a large AdBlue tank for long service
intervals, so you don't have to refill it
-
every few thousand kilometers or
something. The great thing about SCR is
-
that it's efficient at higher loads.
There's a third method called LNT, Lean
-
NOx Trap, it's cheaper than SCR for
smaller engine, it doesn't require
-
anything,
however the bad thing is it requires
-
frequent re-generation, which decreases
fuel efficiency, so it's kind of a stop-
-
gap solution. And it's not efficient for
continuous high engine load, for example
-
if you're driving on the German Autobahn
at full speed, then LNT is not going to
-
help you much. For the sake of this talk,
let's keep in mind that EGR is exhaust gas
-
recirculation, that's the thing that
operates within the engine and then we
-
have the SCR, the selective catalytic
reduction, that uses AdBlue and is after
-
the engine. We also saw that all these
technologies have significant trade-offs
-
for NOx compliance, so we can kind of see
the motivation for a defeat device here,
-
because it would be the solution to all of
these trade-offs. You get no downsides
-
during regular driving, because nobody can
measure your emissions and while
-
maintaining conformance because during a
test cycle you have perfect emissions.
-
That kind of explains why there are defeat
devices. OK, let's get back to the bigger
-
picture and see what other cars do. So
this is an Opel car, it's a Zafira car,
-
it's a Euro 6 car, it's a pretty modern
car, it has an SCR catalyst. In theory it
-
should have really great, low emissions,
especially at higher speeds because that's
-
where SCR is good at. But quite
surprisingly it doesn't. If we look again
-
at this report, we can see that this
Zafira exceeds the limit by up to 12x
-
compared to the Euro 6 limit. This is
especially interesting because there's
-
this Opel advertisement where they
advertise their diesel technology applying
-
to the Insignia and the Zafira and they
say a lot of diesel fun without regrets,
-
the new diesel generation of Opel achieves
best emission values and gasoline levels.
-
Yeah, after they got sued for this they
had to change it slightly and they had to
-
add this to the sentence.
scattered laughter
-
So, during this testing, they had
this 12x emission
-
limits. For example, one particular test
was to drive the test cycle in the same
-
way, but at a different temperature,
at 10°C,
-
and the car exceeded the
values by a factor of 6 even though the
-
car would be operated in the very same
way. It was just that the ambient air
-
temperature was 10°C instead
of 25. So they asked Opel why this was the
-
case during their investigation, and Opel
responded, saying that the EGR and the SCR
-
injection, they work to the full extent in
the temperature range of 20 to 30°C.
-
It's what they call "normal use".
So our question was, is it really just the
-
temperature window? So we got a car and
investigated. The ECU in that car is a
-
General Motors ECU. It's developed in-
house, Opel is a GM daughter. It uses an
-
automotive PowerPC, yay PowerPC! It uses
somewhat obscure variable length
-
instruction extension to PowerPC. So how
do we start? Again, we need a firmware
-
image. So let's ask the Internet, "How do
I dump this ECU?" Luckily, someone in some
-
chip tuning forum already uploaded their
stock ECU, which means they're what they
-
dumped from their ECU using some chip
tuning tool. It's not the same ECU, but
-
it's very similar and I hope they shared
some code so I can analyze the software,
-
maybe find a way to dump it. So the dump
was made with this tool and the tool did
-
not let me export the binary. And the tool
is free, however to use any of the
-
features in that software, you have to buy
their expensive hardware, that then
-
connects to the car, which I didn't want.
This is how their software looks like. I
-
loaded the image I found on the internet,
and I couldn't save it or anything without
-
having the device attached. However, I can
just use a memory debugger and just dump
-
it from the address space, and that gave
me a first firmware image to start with. I
-
threw it in a disassembler and I found the
UDS function and, yeah, it implements read
-
memory by address, so that's good. Most of
the RAM was readable without a security
-
challenge. That is good, so I didn't even
need a security challenge to read RAM.
-
However, the flash, it is readable, but
only with the security challenge. So let's
-
take a look at the security challenge.
Maybe it's as simple as the Bosch one. So
-
their way of doing this is, they store
16-bit input and output value in the
-
firmware, and it's different for every
device, and they don't store the algorithm
-
to compute the output from the input,
instead they just store the pair, and,
-
well, it's just 16 bit, right, so let's
brute force it. The issue is, you can only
-
try every 15 seconds, so it's kind of
lame. The question is, how do the GM
-
tools, the original factory tools, get
access to that? Luckily, chip tuners had
-
reversed that and then obfuscated it into
their own tools. But that can be de-
-
obfuscated and eventually it's just a
little bit amount of bit shifting and so
-
that was easy to fix. And also the the GM
repair manuals tell you how to wire up the
-
ECU. They tell you where to put 12 volts,
the CAN bus again, and ground, and the
-
ignition pin, and with all of that in
place, I can do the security challenge. I
-
can now read all of flash memory and read
the four megabytes of PowerPC code, which
-
mostly consists of mathematical functions.
There are no strings or anything, it's
-
really hard to find what a function does,
what... There are thousands of variables.
-
It's really hard to find what they mean,
right, so I need to know some entry
-
points, some known data values, and then I
could refer to... one thing I could find
-
are real-world constants, for example
there's the density of diesel fuel stored,
-
which allows me to understand that this is
something related to fuel, an amount of
-
fuel. Or more useful are the OBD2 calls.
So there are some standardized things you
-
can ask an ECU, that's engine rpm, vehicle
speed, and things like that, and I would
-
find that table in the firmware and then I
had a first start of things like RPM,
-
speed, and so on. That was a good start.
It's not much more than what you can see
-
here. So there's a lot of stuff not
included in these.
-
The next thing I did was, I drove the car
-
for a few weeks and I let a device
attached that would constantly log all
-
memory using the rebuy address thing, and
every few minutes I would get one memory
-
dump, basically. It's a few hundred
kilobytes of RAM, and then I put this into
-
my disassembly, and that allowed me to
understand more of what individual
-
variables do there. And I found some
interesting things. So the first thing,
-
one of the first things I found, was
basically something that resembles this.
-
So there was something that look at the
ambient temperature, and this basically
-
checks for range, right, and it did...
this was for controlling the SCR systems,
-
and it's interesting to know that the NEDC
requires the temperature between 20
-
and 30°C, and this is right
centered around this, when they check from
-
17.5 to 33°C. But this was of
course nothing new. I found something
-
similar, however, another temperature
check. And as you can see it's written in
-
a different way. It effectively achieves
the same thing, but it's a separate piece
-
of code, and this time it was for the EGR
system. So we have these two exhaust
-
treatment or optimization mechanisms
there, EGR and SCR, and they don't share
-
code. They have their own temperature
window. So we found the temperature
-
window, which was known to exist. The
question was, is there more? And one thing
-
we found was this: It's basically reading
the vehicle speed and comparing to a fixed
-
number, and it turned out it's something
like this. So it would check the
-
vehicle speed and if it's above 145 km/h
it would set a flag and then under 140 it
-
would clear. Keep in mind that the NEDC
maximum speed
-
120 km/h, so during a test cycle that
would never happen. So let's see if this,
-
what we found in software, if this really
translate something the car does in the
-
real world, and it's getting slightly
technical here, I apologize, but we need
-
to log some variables and a useful value
to to know is, how much NOx is there after
-
the engine, and after the SCR catalyst,
and luckily there are 2 NOx sensors in the
-
car. One before and one after the
catalyst, and they give you basically the
-
NOx concentration in ppm. So we log that,
and we also log the signal of how much
-
AdBlue is dosed into the system, and we
log the catalyst temperature. And one
-
thing to keep in mind is that there's also
this amount of ammonia that's stored in
-
the catalyst. We don't have this as a
value, but just keep this in mind. And
-
this is how we've driven the car. The
blue line is the vehicle speed. You can
-
see that it goes from 0 to 150 km/h, and
the critical point here is the 145 km/h
-
that we found in the firmware. The green
one is the catalyst temperature, which we
-
see between ambient level, and then up to
380 degrees. The critical point here is
-
200 degrees Celsius, where this urea to
ammonia process starts to work. We logged
-
something that is the SCR strategy. So it
turns out there are multiple ways how the
-
ECU computes how much AdBlue to dose and I
call them strategy. So 0 means off, no
-
AdBlue is dosed. 1 means the regular way
that keeps into account the storage
-
mechanism, and then 2 is a special reduced
way. And then also we log the actual
-
dosing value. And then we also had the
sensor data from between the engine and
-
the catalyst, and between the catalyst
and the exhaust. The first thing that
-
happens... or, actually nothing happens
until the point where we reach 200°C
-
at the catalyst. You can...
until that point, as I said the required
-
temperature is not... does not allow
AdBlue dosing, and then it starts dosing
-
quite a few amount of AdBlue. But then,
when we cross the 145 km/h, the SCR
-
strategy changes, and no further AdBlue is
dosed until basically this point, and this
-
point is exactly 120 seconds after we go
lower than 140 km/h. So this matches what
-
we found
in the software, right, this was what we
-
found in the
software. So we can see that this was
-
actually true. This is real behavior of
the ECU. And to look at the effect of
-
this, you have to check the difference
between the blue and the green line in the
-
lower diagram, between basically the
amount of NOx that is removed by the SCR
-
catalyst. And you can see during the
regular operation quite a lot of NOx is
-
removed. The blue line goes up because
we're driving faster and faster, and the
-
green line goes down almost to zero, and
this this works for quite a while, and it
-
even keeps working a while until the
catalyst runs out of ammonia, and then it
-
would need more AdBlue to operate, but
because we're in the reduced mode it does
-
not put any more AdBlue into the system.
So the SCR basically stops working, and
-
the emission levels reach the engine
emissions, so no further... The SCR system
-
does not work in this red area. And here
we see this again, so here are the
-
sequences of active dosing. Here we see
where the catalyst temperature is too low
-
for dosing. We see the regular operation.
We see where it's still working,
-
because there's still ammonia stored and
then until we run out of ammonia and no
-
refill happens, until exactly 120 seconds
after going below 140 kilometers an hour.
-
So our conclusion after this is that the
SCR is programmed to stop working at 145
-
km/h. The efficiency goes to 0. Opel
offered a hand-waving explanation, one of
-
the press releases why this is necessary.
They argued with some physical details,
-
and we presented these physical details to
some experts, professors that work with
-
combustion engines for a long time. Most
of them disagree with these explanations,
-
I mean, yeah. But more importantly, other
cars including my Volkswagen Sharan
-
device, which is Euro 5 car, so one
generation older, and it's known to have a
-
defeat device, and it performs
significantly better than this car. OK, we
-
continue to look. We found something here
that is a... that looks like this. It
-
takes a... there's a
barometric pressure sensor that sends us
-
the pressure of the air and compares it
with a value and if we look at how
-
pressure is related to height we see that
what they check with is 91.5 kilopascal
-
and which corresponds to 850 meter. And
apparently Europe's highest test center's
-
at 800 meter, which may be a coincidence
or not. But above that point they reduce
-
their CR system as well. Now, the
interesting thing is... yeah barometric
-
pressure is something very important to
know for an ECU. There's a good reason to
-
have the sensor for all of the combustion
process. You need to know how much air
-
there is. So for EGR it makes a lot of
sense to have this, but for SCR, which is
-
the system after the engine, no combustion
is happening. We are not aware of any
-
effect that the outside air pressure has
on the SCR system, and also other SC
-
equipped cars don't have this mechanism,
so... for us it does not make
-
physically... it doesn't seem to be
physically required. So far we looked at
-
SCR. Let's look at EGR. What we saw was,
when we drove the car during the test
-
cycle, so we put it in the lab and drive
the
-
test cycle, we consistently saw much
higher EGR values, much higher than
-
compared to driving on the street,
compared to all kind of scenarios that we
-
drove on the street. So higher EGR value
here means, that the EGR valve, that I
-
showed you earlier, is more open, more
exhaust gas recirculates to the engine. It
-
causes lower NOx emissions before the SCR
catalyst, and we really... we're curious
-
why did the car behave so differently when
running on a street than running in a test
-
cycle. And we already took into account
temperature, so the temperature was not
-
the issue anymore. And thankfully the car,
when it computes the reason for reducing
-
EGR, it stores a reason in some variable
that we can log, and it looks like this.
-
There is a number of things that can
happen, that causes the ECU to switch to
-
some low EGR mode, and a few of them
make sense, for example if something is
-
broken, fault flags are set, or if the, I
don't know, the coolant temperature is out
-
of range, it makes sense to just keep the
device running at all cost. But when none
-
of these reasons apply, the value stored
is 2, and 2 basically means, that the full
-
EGR operation is used, so it's basically
the NOx-optimized mode with the fewest
-
emissions. And then we looked at some
real-world driving, you can see this in
-
the background - the vehicle speed is in
the background - and we saw that... the
-
red graph shows you the reason to go to
this limited EGR mode and what we saw is
-
that most of the time the reason is 13 and
only a few times it's 2, which means that
-
it's not limited. And looking into this
more details, we see it sometimes drops
-
back to 2, to the unlimited mode, to the
optimized... emission optimized mode, but
-
any acceleration, or almost any
acceleration switches it back to 13, and
-
then it stays there for a long time. And
13, if we look it up, is what I call load
-
limit. And then, interestingly, if we run
it through the NEDC, we never saw a 13. So
-
the engine stays in mode 2 all the time,
and 16 just means that the engine is off.
-
But we never see 13. So this explains why
the EGR values were so different in a test
-
cycle. So, let's look into this load limit
function that we found. It's basically
-
defined by curves, by five curves. For
every gear there's a curve, or for a
-
bucket of gears. It's basically that they
look up RPM, they get a value for that
-
curve, and if you exceed that value, they
switch to the reduced EGR mode. What they
-
compare this threshold with is the amount
of fuel injected per cylinder per
-
revolution, but you can also say this is
torque, just with a
-
constant factor. And then once you are
outside of one of these curves, it
-
switches to the non-optimized mode where
it emits a lot more emissions, and then
-
you have to go back into the green area to
switch back to the optimized mode. So
-
let's see what this means in practice. So
here we
-
have a car, and the traffic light is red,
so the car stops, and then the traffic
-
light goes green and the car accelerates,
and accelerates, and accelerates, gets
-
faster and faster, and then it's at the
highest speed here, and drives for a
-
while. And this is a typical city cycle,
this is there to... how you drive in a
-
city, and then the next traffic light
turns red and the car brakes and stops in
-
front of the traffic light. Let's take a
look at this again with one more variable,
-
the RPM. We can see that when the car
starts moving, the RPM goes up. And then
-
at some point there is a drop in RPM, and
this is because it's a manual transmission
-
and the driver switched to the next gear.
Now it's switched to again the next gear,
-
and this causes the RPM to drop, but the
speed to remain almost
-
constant, and it drives for a long time in
the same gear, and then the traffic light
-
goes red, the driver presses the clutch,
the engine goes back to idle state, there
-
is no connection anymore to the wheels,
between the engines and the wheels, and
-
the car gets slower. OK, one more
variable. It's the last one, I promise. It
-
is torque. The engine power in kilowatt or
something is not just a function of RPM,
-
it's a function of RPM and torque. so RPM
and torque together are very useful to
-
characterize engine behavior. And a very
good way to do this is to have a graph
-
where we put RPM on the one axis and
torque we put on the other axis, and then
-
we draw this in two dimensions, and so we
get this, basically. This is the operating
-
points we go through when driving the
cycle we saw. So the green dot here
-
indicates where we are. And so we restart
the car, the car accelerates, sorry, the
-
car idles for a while, so the green dot
stays there. It idles at around 800 RPM,
-
almost no torque, because there's nothing
to move, and then the driver accelerates
-
and the torque goes up, the RPM goes up
more slowly, and then at some point, the
-
driver presses the clutch, which
disconnects the engine, the
-
torque goes down, the RPM adjusts to the
speed of the next gear, and then the
-
driver releases the clutch and now the
engine again has to move the car, so the
-
torque goes up until reaching the the
highest RPM value and then that the driver
-
again switches to the next gear, so the
whole thing repeats, and then while the
-
car is driving, the majority of this the
cycle, the engine spends in this one
-
operating point. We're currently at 1800
RPM or something, and 80 Newton meter or
-
so torque. And then at some point the
driver presses the clutch, the engine goes
-
back to idle and stays there, basically.
So this is how you read this diagram. And
-
now what we found in the firmware was that
overlaid basically on this representation
-
we see a mask, or a limit. If we go over
this curve, those are the same curves that
-
I showed you earlier, just laid on top of
this. If we go over this curve,
-
then we switch to the worse emission mode,
we switch to the mode where the EGR value
-
is limited. So we can see in our driving
that this happens basically at this point,
-
the point where the driver
accelerates above a certain point, that
-
causes it to go over the load limit and
the engine basically switches or
-
significantly reduces EGR. And that's fine
because EGR doesn't work when you need a
-
lot of engine power, so it make sense that
that's at that point, and what we would
-
think is that it switches back once we
leave this load envelope, once we go below
-
the limit again, once we are inside the
limit, we would expect the ECU to switch
-
back to the full EGR operation. But what
we see instead is that this does not
-
happen, and the reason is that you don't
have to go under the maximum, the load
-
limit, you have to go into this green
area. You have to go back to idling at a
-
very low RPM to switch back to the full
EGR mode and this only happens at the very
-
end. When the driving cycle is almost
done, when the driver presses the clutch
-
and lets the engine idle. So especially
this long sequence where the driver... the
-
car was driving at the same speed, we were
technically in ... within the load limit,
-
where we're not exceeding the load limit,
but because we previously exceeded the
-
load limit and it doesn't matter for how
long you exceeded it, and we did not go to
-
the green area before, we were still in
this low EGR, high emission mode, even
-
though we're still within the load limit
imposed by the software. So let's take a
-
look at how often this actually happens in
real-world data. So here's us driving
-
through a city, and we can see we
constantly exceed these load limits. And
-
this is driving on the Autobahn, and yeah
we constantly exceed those. But they look
-
interesting. They look as if they had been
designed according to something, right,
-
they have the specific form and it's not
just... yeah, I... I don't know... and it
-
turns out if you do something really
strange, you can stay within these limits,
-
so we tried that and we managed to stay
within the limit by doing something, and
-
we... it was reproducible, we could do
this a lot of time it would always stay in
-
this limit and the answer is: If you drive
the test cycle you're staying in this
-
limit.
applause
-
So yeah, these curves basically defined...
they closely correlate to the limits that
-
you need to pass the NEDC. Okay, to be
clear it is fully acceptable that the EGR
-
rate is reduced when... for higher engine
loads. It's natural, you have to do this.
-
For example, when you accelerate the EGR
rate will decrease up to zero probably,
-
when you do it ... when you're running at
high speeds, all of that is great. So this
-
method of having a load limit ... well,
you can argue if really having the load
-
limit exactly where the NEDC is makes
sense, but having a load limit is okay,
-
right? However, what we think is not okay
is that, if you only exceeded the limit
-
once ... um... you would stay in this high
emissions mode for potentially a long time
-
until you get back to low speed idle the
next time. And we think that is the
-
problem. We ... so far this was all based
on what we saw in the software, so let's
-
see if this translates to something that
happens in reality. So to repro this we...
-
the car... drive at constantly... or we
let it idle, then we accelerate it to
-
2,000 RPM, we let it drive there for a
while and then we quickly exceeded the
-
load limit by going to 3,000 and then
going back and then after doing that we
-
would again stay at 2,000 RPM. So it looks
like this and we would naturally expect
-
the engine to operate in the same way on
the left and on the right side because the
-
engine is doing the same thing there, it's
the same torque level, it's the same RPM,
-
everything is the same. So we would expect
the same emissions, right, um ... and it
-
turns out it isn't. And ... this is a
slightly convoluted diagram. So if you
-
look at the green and red bars in the
middle you can see what happens before and
-
after exceeding the limit for just once.
And in the middle you can see the EGR
-
position, the EGR valve position, and you
can see that we get pretty high values
-
between... 6... maybe 65 percent or
something before exceeding the load limit
-
once.
And after we exceeded it once even though
-
the engine again is operating in the same
exact operating point, we see much lower
-
EGR valve positions, around 50% or
something. And if we look at the bottom we
-
see what the engine NOx emissions and we
see that they are significantly higher on
-
the right side than they are on the left
side. So this... for me, this does not
-
sound like this is truly optimized for
emissions because the engine is doing the
-
same thing, in both cases the emissions
should be low. So going back to this quote
-
that it works, the EGR and SCR injection
work to the full extent in a temperature
-
range of 20 to 30°C. Okay,
but what about the EGR load limit and what
-
about the the barometric pressure limit
for SCR and what about the SCR speed
-
limit? That would not be "to the full
extent", right? And the Opel answer is
-
really interesting. Of course, they denied
doing a test cycle detection, they say
-
they don't do that. And what they said is,
when asked whether they lied to the KBA
-
when saying that it works to the full
extent they said "The statement 'fully'
-
was really related to the NEDC test
schedule, right, which... it went on and
-
further... the Opel CEO had to say this.
He said: "The recent
-
accusations based on the findings of
hacker Mr. Felix Domke" - hey, that's me -
-
"are misleading oversimplifications and
misinterpretations of the complicated
-
interrelationships of a modern emission
control system of a diesel engine.
-
Emission control devices are highly
sophisticated integrated systems which
-
cannot be broken down into isolated
parameters." Especially not by a hacker,
-
right?
applause
-
That was kind of funny. There was another
funny thing. Sorry, I only have a German
-
quote and I didn't want to translate it,
but when Opel basically ... they
-
repeatedly say they don't have a cycle
detection, right, and they say it's not a
-
cycle detection because, if you use the
car on the street in the same way as you
-
would do them during the test cycle, the
car would behave in the same way, so it's
-
not...,right? applause ... and ... okay.
But what is with Volkswagen, right, they
-
have the same thing, if you drive the NEDC
on the street the car will go to test mode
-
they have the same thing. I don't see how
this does not represent a cycle detection.
-
That was a lot of things to say about
Opel, but on the bright side, they also
-
said that they will - even though all that
was incorrect, what we found - they said
-
"We will further improve the efficiency of
emissions after treatment of our SCR
-
diesel engines and so on as far as the
laws of physics allow. This includes a
-
voluntary service action" - and this
basically means a software update for your
-
car - "for the cars that are already on
the road starting in June." So that is
-
great. They're actually improving
something. Question's in which year,
-
because this statement is from May 2016
and it's not out yet, but... Opel actually
-
provided a new software already in July
and I think they already worked on this
-
for quite a while and in July 16 the German
KBA, the Kraftfahrtbundesamt, the Federal
-
Motor Transport Authority, they are pretty
nice actually, and they do know about what
-
they do, they are bit limited by the
resources they have, and by the manpower
-
they have, but they know about cars and
they know how to do these investigations.
-
I mean, they're a little bit bound, but
what they should do and what they should
-
not do, but they asked me to review a new
ECU software that was given to them by
-
Opel for the Zafira in question and
Insignia, which had a similar ECU and I
-
looked at that software and I dumped the
firmware and I looked at basically all the
-
code sequences that I looked at before and
I was positively surprised because they
-
removed... they addressed each of our
concerns. All of them, within the physical
-
limitations of course. So they improved
the temperature window and everything, so
-
there was a significant improvement. They
were able to improve the software and they
-
let the DUH, which is the German
Environmental Aid, they used a PEMS system
-
- PEMS is a portable
emissions measurement system. It's
-
something you put on the exhaust pipe on
your car and then you can measure the
-
exhaust during real-world driving, and
Opel gave them a car with the new ECU
-
software. Otherwise the car was identical
to the old software, and the results are
-
this, right, so on the left side you see
the old software, that has all these
-
things that we criticized, and on the
right side you see the same car with a new
-
ECU software and it's significantly
better. It's only slightly above the
-
limit, right, but it's much better than
before and to put this in relation,
-
before they were on the list pretty bad -
so this is sorted by worst to best - so
-
they are in the, well, upper half at
least, and now they are almost one of the
-
best cars, just by switching the ECU
software. And I mean this is great news,
-
right, they actually improved their cars.
Let's just hope they get this out to the
-
cars soon. Let's just hope it doesn't have
side effects and something, but I'm sure
-
Opel knows how to test for this. Going
back to these, we worked on the Opel
-
thing... I think the Opel case, it....
once they actually upgrade the cars, and
-
once the cars really show these great
values that the preliminary software
-
showed, I think we can close the Opel
case, but there's a lot of other cars
-
still to look at, and really, I mean...
the effort to do this does not scale to so
-
many cars, so we need to do something more
fundamentally to improve the situation.
-
What I found out is that digital control
systems, they are black boxes. The
-
manufacturers have designed them to be
black boxes. They even boast to you that
-
they are 7,000 parameter in there and no
hacker can understand this and it's a very
-
sophisticated problem. They are designed
to be black box, and this is not just true
-
for Opel, this is true for all car
manufacturers. Nobody wants anyone to look
-
into their ECUs, and people seem to be ok
with that. Like they think "Oh this is so
-
complicated, there are so many German
engineers working on
-
this problem, they must have found a great
solution." So we are trusting these black
-
boxes and we are not able to review the
black boxes that we put into our cars and
-
we have to trust the manufacturer to do
the right thing and currently, the
-
investigation to do this without
assistance from the manufacturer, it does
-
not scale. We can do it but... the
manufacturers can put more security on
-
their ECUs... it probably can be broken,
but it takes a lot more time, so it simply
-
does not scale sufficiently. The issue is
black boxes are really powerful, right.
-
Black boxes can hurt people with, for
example, excessive emissions. They can
-
kill people if we think think about
autonomous cars that do mistakes. So what
-
we do need, I think, is more transparency.
A system that can kill people needs to be
-
reviewable by the people. I think this is
a very important thing.
-
applause
-
So, to have a system that can kill
-
people... to have it reviewable by the
people, we need to do things. For example,
-
we need... we want access to source code
for reviews. It doesn't necessarily mean
-
we want open source, but we don't ask at
all the car manufacturers to open source
-
all the software. That's not what I'm
talking about. What we need is... think
-
about how Microsoft is sharing source code
of Windows with universities or other
-
countries. We need experts to look at the
source code, and we want control software
-
that is reviewable by design, that has a
lot of documentation, that has good
-
comments, that is human readable code. I
don't want to see a disassembly, I want to
-
see the source, the MATLAB, or whatever
they are using to define the functionality
-
source, and read that. And I want to
understand why did they choose that
-
curve of that map in this way? What was
the design criteria? That needs to be
-
reviewed. And we need transparency for
control software decisions, which means
-
that if a car operates in a certain way,
if I'm driving that car, I want to choose
-
that I can log what the car is doing, for
example by putting
-
in, I don't know, a USB stick or something
if it's my car, and then the car will log
-
all the data to that. That is... in the
end that allows me to reconstruct any
-
decision that the software does. I think
this is required to have the necessary
-
transparency, that allows us to un-
blackbox these devices. All right.
-
Thank you very much.
applause
-
Okay, I actually finished five minutes
early. I didn't think this would happen,
-
so...
Herald: I'm so surprised.
-
F: I am surprised too.
Herald: You are on time. You have five
-
minutes left
F: Wow, what do I do with these five
-
minutes
Herald: We can walk around the stage or...
-
Maybe people have some questions?
F: I think so!
-
Herald: Well, let's ask the Internet! Is
the Internet ready?
-
Signal Angel: Yes. Our first question:
What dou you think is the responsibility
-
of Bosch as a supplier for having their
software and hardware used for this?
-
F: So the question was: What's the
responsibility for Bosch, who built the
-
software for Volkswagen? It's a good
question and I have to be careful in what
-
I answer. My personal opinion, and let's
take this aside from Volkswagen and Bosch,
-
is that if you build software that you
know is used to be illegally it should...
-
it must be your responsibility to not do
that. And I'm not sure if this is
-
something that is legally enforceable, but
it should be something that's enforceable
-
ethically or for all of us programmers,
that we don't build software that is
-
designed to break the law.
applause
-
Herald: We quickly hop over to microphone
1 please.
-
Microphone: Thank you for a wonderful
talk. I'm just wondering if you're aware
-
of some cases of Volkswagen cars in
Australia, which was suffering from sudden
-
and rapid power loss. This was happening
about five years ago and there was a case
-
where a Volkswagen suffered rapid power
loss on a motorway. The driver was Mrs.
-
Melissa Ryan and she was rear-ended by a
truck and killed. So when you say that
-
these things can cause death, were you...
are you aware that any sort of Volkswagen
-
software has been leading to power loss in
the vehicles and affecting
-
performance on the road, now I don't know
whether Australian driving conditions are
-
different to European driving conditions,
and how that might affect that. Have you
-
done any tests that might indicate that
could be happening in normal driving?
-
F: Yeah, so... the question was whether
I'm aware of, I think an Australian
-
incident, right, where...
M1: Can I...
-
F: Yeah.
M1: There were many reported cases. One of
-
them was fatal, but there were many
reported cases of that happening.
-
F: Of a sudden power loss, is that right?
M1: Sudden and rapid power loss in the
-
engine.
F: Yeah, of the engine. I'm not aware of
-
these incidents and I what I do know
and... is that the the personal safety is
-
the number one design criteria for ECUs.
That does not mean that they are perfect,
-
of course, that could mean that rare
bugs... that there could be malfunctions.
-
I don't know about this, but at least it's
the first design principle to provide the
-
safety for the people driving the car,
which i think is a good thing, right. It's
-
not the profit or anything, or at least we
can hope so. I'm not aware of this
-
particular incidence, and so I can't
really say anything more about this. It
-
would be great if... Are you aware of any
additional details that were found in the
-
investigation, please sent them to me.
M1: Volkswagen was claiming that this was
-
a gearbox problem on automatic cars, but
then it started happening on manual cars
-
as well, so that excuse went out of the
window.
-
F: The issue with the problems is that
most of them are very complex, so they
-
probably involve more than just the engine
ECU, so they're very... but it's a
-
good example of where we need to
understand exactly what is happening, and
-
where we may not want to rely on
Volkswagen or any other manufacturer alone
-
to assist in figuring out what happens. We
need more transparency there so that we
-
can have definitely neutral accident
investigations.
-
Herald: This was a long question and
really detailed answer. Thank you very
-
much.
F: Sorry, I will be short
-
Herald: Felix, that's your applause
applause
-
music
-
subtitles created by c3subtitles.de
in the year 2018. Join, and help us!